UNPKG

4.16 kBJavaScriptView Raw
1/*!
2 * Xtend UI (https://xtendui.com/)
3 * @copyright (c) 2017-2022 Riccardo Caroli
4 * @license MIT (https://github.com/xtendui/xtendui/blob/master/LICENSE.txt)
5 */
6
7module.exports = {
8 transitionDelay: {
9 0: '0ms',
10 },
11 transitionDuration: {
12 DEFAULT: '500ms',
13 0: '0ms',
14 },
15 transitionTimingFunction: {
16 DEFAULT: 'cubic-bezier(.23,1,.32,1)', // out-quint
17 in: 'cubic-bezier(.755,.05,.855,.06)', // in-quint
18 out: 'cubic-bezier(.23,1,.32,1)', // out-quint
19 'in-out': 'cubic-bezier(.86,0,.07,1)', // in-out-quint
20 'in-sine': 'cubic-bezier(.47,0,.745,.715)',
21 'out-sine': 'cubic-bezier(.39,.575,.565,1)',
22 'in-out-sine': 'cubic-bezier(.445,.05,.55,.95)',
23 'in-quad': 'cubic-bezier(.55,.085,.68,.53)',
24 'out-quad': 'cubic-bezier(.25,.46,.45,.94)',
25 'in-out-quad': 'cubic-bezier(.455,.03,.515,.955)',
26 'in-cubic': 'cubic-bezier(.55,.055,.675,.19)',
27 'out-cubic': 'cubic-bezier(.215,.61,.355,1)',
28 'in-out-cubic': 'cubic-bezier(.645,.045,.355,1)',
29 'in-quart': 'cubic-bezier(.895,.03,.685,.22)',
30 'out-quart': 'cubic-bezier(.165,.84,.44,1)',
31 'in-out-quart': 'cubic-bezier(.77,0,.175,1)',
32 'in-quint': 'cubic-bezier(.755,.05,.855,.06)',
33 'out-quint': 'cubic-bezier(.23,1,.32,1)',
34 'in-out-quint': 'cubic-bezier(.86,0,.07,1)',
35 'in-expo': 'cubic-bezier(.95,.05,.795,.035)',
36 'out-expo': 'cubic-bezier(.19,1,.22,1)',
37 'in-out-expo': 'cubic-bezier(1,0,0,1)',
38 'in-circ': 'cubic-bezier(.6,.04,.98,.335)',
39 'out-circ': 'cubic-bezier(.075,.82,.165,1)',
40 'in-out-circ': 'cubic-bezier(.785,.135,.15,.86)',
41 'in-back': 'cubic-bezier(.6,-.28,.735,.045)',
42 'out-back': 'cubic-bezier(.175,.885,.32,1.275)',
43 'in-out-back': 'cubic-bezier(.68,-.55,.265,1.55)',
44 },
45 animation: {
46 'xt-spinner': 'xt-spinner 1500ms infinite',
47 'xt-filler-x': 'xt-filler-x 1500ms infinite',
48 'xt-filler-y': 'xt-filler-y 1500ms infinite',
49 },
50 keyframes: theme => ({
51 'xt-spinner': {
52 '0%': {
53 strokeDashoffset: '628',
54 transform: 'rotateY(0deg) rotateZ(-90deg)',
55 animationTimingFunction: theme('transitionTimingFunction.in'),
56 },
57 '50%': {
58 strokeDashoffset: '0',
59 transform: 'rotateY(0deg) rotateZ(90deg)',
60 },
61 '50.0001%': {
62 strokeDashoffset: '0',
63 transform: 'rotateY(180deg) rotateZ(90deg)',
64 animationTimingFunction: theme('transitionTimingFunction.out'),
65 },
66 '100%': {
67 strokeDashoffset: '628',
68 transform: 'rotateY(180deg) rotateZ(-90deg)',
69 },
70 },
71 'xt-filler-x': {
72 '0%': {
73 left: '0',
74 width: '0',
75 animationTimingFunction: theme('transitionTimingFunction.in'),
76 },
77 '50%': {
78 left: '0',
79 width: '100%',
80 animationTimingFunction: theme('transitionTimingFunction.out'),
81 },
82 '100%': {
83 left: '100%',
84 width: '0',
85 },
86 },
87 'xt-filler-y': {
88 '0%': {
89 top: '0',
90 height: '0',
91 animationTimingFunction: theme('transitionTimingFunction.in'),
92 },
93 '50%': {
94 top: '0',
95 height: '100%',
96 animationTimingFunction: theme('transitionTimingFunction.out'),
97 },
98 '100%': {
99 top: '100%',
100 height: '0',
101 },
102 },
103 }),
104 component: {
105 // instant animations on components init and reinit
106 '.xt-body:not(.xt-optout-initial)': {
107 '.initial': {
108 '&, *': {
109 transitionDuration: 'initial !important',
110 transitionDelay: 'initial !important',
111 animationDuration: 'initial !important',
112 animationDelay: 'initial !important',
113 animationIterationCount: '1 !important',
114 },
115 },
116 },
117 // instant animations accessibility
118 '@media (prefers-reduced-motion: reduce), (update: slow)': {
119 '.xt-body:not(.xt-optout-prm)': {
120 '*': {
121 transitionDuration: 'initial !important',
122 transitionDelay: 'initial !important',
123 animationDuration: 'initial !important',
124 animationDelay: 'initial !important',
125 animationIterationCount: '1 !important',
126 },
127 },
128 },
129 },
130}