use-scroll-animate 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/chunks/{core-CLu8ZrC-.cjs → core-BRIIoKeS.cjs} +4 -3
- package/dist/chunks/core-BRIIoKeS.cjs.map +1 -0
- package/dist/chunks/{core-QTFk4kgO.js → core-LkGRmgES.js} +4 -3
- package/dist/chunks/core-LkGRmgES.js.map +1 -0
- package/dist/components/angular.cjs +2 -1
- package/dist/components/angular.cjs.map +1 -1
- package/dist/components/angular.d.cts +3 -3
- package/dist/components/angular.d.ts +3 -3
- package/dist/components/angular.js +2 -1
- package/dist/components/angular.js.map +1 -1
- package/dist/components/solid.cjs +2 -1
- package/dist/components/solid.cjs.map +1 -1
- package/dist/components/solid.d.cts +3 -3
- package/dist/components/solid.d.ts +3 -3
- package/dist/components/solid.js +2 -1
- package/dist/components/solid.js.map +1 -1
- package/dist/components/svelte.cjs +2 -1
- package/dist/components/svelte.cjs.map +1 -1
- package/dist/components/svelte.d.cts +3 -3
- package/dist/components/svelte.d.ts +3 -3
- package/dist/components/svelte.js +2 -1
- package/dist/components/svelte.js.map +1 -1
- package/dist/components/timeline.cjs +2 -1
- package/dist/components/timeline.cjs.map +1 -1
- package/dist/components/timeline.d.cts +3 -3
- package/dist/components/timeline.d.ts +3 -3
- package/dist/components/timeline.js +3 -2
- package/dist/components/timeline.js.map +1 -1
- package/dist/components/tokens.cjs +226 -0
- package/dist/components/tokens.cjs.map +1 -0
- package/dist/components/tokens.d.cts +74 -0
- package/dist/components/tokens.d.ts +74 -0
- package/dist/components/tokens.js +211 -0
- package/dist/components/tokens.js.map +1 -0
- package/dist/components/vue.cjs +2 -1
- package/dist/components/vue.cjs.map +1 -1
- package/dist/components/vue.d.cts +3 -3
- package/dist/components/vue.d.ts +3 -3
- package/dist/components/vue.js +2 -1
- package/dist/components/vue.js.map +1 -1
- package/dist/components.cjs +16 -1
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.cts +77 -5
- package/dist/components.d.ts +77 -5
- package/dist/components.js +2 -1
- package/dist/components.js.map +1 -1
- package/dist/components.umd.js +2 -2
- package/dist/components.umd.js.map +1 -1
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.js +2 -2
- package/dist/index.umd.js.map +1 -1
- package/docs/ROADMAP.md +1 -1
- package/docs/motion-tokens.css +31 -0
- package/docs/motion-tokens.md +46 -0
- package/docs/motion.tokens.json +132 -0
- package/package.json +11 -1
- package/dist/chunks/core-CLu8ZrC-.cjs.map +0 -1
- package/dist/chunks/core-QTFk4kgO.js.map +0 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* use-scroll-animate/components/tokens — motion design tokens (4.2).
|
|
3
|
+
*
|
|
4
|
+
* One source of truth for durations, easings and springs: as CSS custom
|
|
5
|
+
* properties (`--usa-duration-fast`, `--usa-easing-emphasized`,
|
|
6
|
+
* `--usa-spring-bouncy-stiffness`…), as W3C Design Tokens JSON, and importable
|
|
7
|
+
* from Figma Tokens (Tokens Studio) or Style Dictionary exports.
|
|
8
|
+
*
|
|
9
|
+
* ```ts
|
|
10
|
+
* import { applyMotionTokens, importMotionTokens, motionToken } from 'use-scroll-animate/components/tokens';
|
|
11
|
+
* applyMotionTokens(importMotionTokens(await (await fetch('/tokens.json')).json()));
|
|
12
|
+
* el.animate(frames, { duration: motionToken('duration', 'slow'), easing: motionToken('easing', 'emphasized') });
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
/** The default motion scale (Material / Fluent-inspired). */
|
|
16
|
+
const MOTION_TOKENS = {
|
|
17
|
+
duration: { instant: 0, fast: 150, normal: 300, slow: 600, slower: 900, slowest: 1400 },
|
|
18
|
+
easing: {
|
|
19
|
+
linear: 'linear',
|
|
20
|
+
standard: 'cubic-bezier(0.2, 0, 0, 1)',
|
|
21
|
+
emphasized: 'cubic-bezier(0.22, 1, 0.36, 1)',
|
|
22
|
+
decelerate: 'cubic-bezier(0, 0, 0, 1)',
|
|
23
|
+
accelerate: 'cubic-bezier(0.3, 0, 1, 1)',
|
|
24
|
+
spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
|
|
25
|
+
bounce: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',
|
|
26
|
+
},
|
|
27
|
+
spring: {
|
|
28
|
+
gentle: { stiffness: 120, damping: 14, mass: 1 },
|
|
29
|
+
snappy: { stiffness: 300, damping: 30, mass: 1 },
|
|
30
|
+
bouncy: { stiffness: 260, damping: 12, mass: 1 },
|
|
31
|
+
wobbly: { stiffness: 180, damping: 8, mass: 1 },
|
|
32
|
+
stiff: { stiffness: 500, damping: 40, mass: 1 },
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
let active = clone(MOTION_TOKENS);
|
|
36
|
+
function clone(t) {
|
|
37
|
+
return { duration: { ...t.duration }, easing: { ...t.easing }, spring: Object.fromEntries(Object.entries(t.spring).map(([k, v]) => [k, { ...v }])) };
|
|
38
|
+
}
|
|
39
|
+
/** Merge partial tokens over a base (defaults: the built-in scale). */
|
|
40
|
+
function mergeMotionTokens(partial, base = MOTION_TOKENS) {
|
|
41
|
+
const out = clone(base);
|
|
42
|
+
Object.assign(out.duration, partial.duration || {});
|
|
43
|
+
Object.assign(out.easing, partial.easing || {});
|
|
44
|
+
for (const [k, v] of Object.entries(partial.spring || {}))
|
|
45
|
+
out.spring[k] = { ...(out.spring[k] || { stiffness: 170, damping: 26, mass: 1 }), ...v };
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
const kebab = (s) => s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/[\s_.]+/g, '-').toLowerCase();
|
|
49
|
+
/** The custom-property map: `{ '--usa-duration-fast': '150ms', … }`. */
|
|
50
|
+
function motionTokensToVars(tokens = active, prefix = '--usa') {
|
|
51
|
+
const vars = {};
|
|
52
|
+
for (const [k, v] of Object.entries(tokens.duration))
|
|
53
|
+
vars[`${prefix}-duration-${kebab(k)}`] = `${v}ms`;
|
|
54
|
+
for (const [k, v] of Object.entries(tokens.easing))
|
|
55
|
+
vars[`${prefix}-easing-${kebab(k)}`] = v;
|
|
56
|
+
for (const [k, v] of Object.entries(tokens.spring)) {
|
|
57
|
+
vars[`${prefix}-spring-${kebab(k)}-stiffness`] = String(v.stiffness);
|
|
58
|
+
vars[`${prefix}-spring-${kebab(k)}-damping`] = String(v.damping);
|
|
59
|
+
vars[`${prefix}-spring-${kebab(k)}-mass`] = String(v.mass);
|
|
60
|
+
}
|
|
61
|
+
return vars;
|
|
62
|
+
}
|
|
63
|
+
/** A stylesheet string: `:root { --usa-duration-fast: 150ms; … }`. */
|
|
64
|
+
function motionTokensToCss(tokens = active, selector = ':root', prefix = '--usa') {
|
|
65
|
+
const body = Object.entries(motionTokensToVars(tokens, prefix)).map(([k, v]) => ` ${k}: ${v};`).join('\n');
|
|
66
|
+
return `${selector} {\n${body}\n}\n`;
|
|
67
|
+
}
|
|
68
|
+
/** W3C Design Tokens (DTCG) JSON: `{ motion: { duration: { fast: { $type: 'duration', $value: '150ms' } } } }`. */
|
|
69
|
+
function motionTokensToJSON(tokens = active) {
|
|
70
|
+
const grp = (o, f) => Object.fromEntries(Object.entries(o).map(([k, v]) => [k, f(v)]));
|
|
71
|
+
return {
|
|
72
|
+
motion: {
|
|
73
|
+
duration: grp(tokens.duration, (v) => ({ $type: 'duration', $value: `${v}ms` })),
|
|
74
|
+
easing: grp(tokens.easing, (v) => {
|
|
75
|
+
const m = /^cubic-bezier\(([^)]+)\)$/.exec(v);
|
|
76
|
+
return m ? { $type: 'cubicBezier', $value: m[1].split(',').map(Number) } : { $type: 'string', $value: v };
|
|
77
|
+
}),
|
|
78
|
+
spring: grp(tokens.spring, (v) => ({ $type: 'spring', $value: { ...v } })),
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** Parse `150ms`, `0.15s`, `150` → ms. */
|
|
83
|
+
function parseDuration(v) {
|
|
84
|
+
if (typeof v === 'number' && isFinite(v))
|
|
85
|
+
return v;
|
|
86
|
+
if (typeof v === 'object' && v && 'value' in v && 'unit' in v)
|
|
87
|
+
return parseDuration(`${v.value}${v.unit}`);
|
|
88
|
+
const m = /^\s*(-?\d*\.?\d+)\s*(ms|s)?\s*$/.exec(String(v ?? ''));
|
|
89
|
+
if (!m)
|
|
90
|
+
return undefined;
|
|
91
|
+
return m[2] === 's' ? Number(m[1]) * 1000 : Number(m[1]);
|
|
92
|
+
}
|
|
93
|
+
/** Parse `[x1,y1,x2,y2]`, `'cubic-bezier(…)'`, `'0.2, 0, 0, 1'` or a keyword → CSS easing. */
|
|
94
|
+
function parseEasing(v) {
|
|
95
|
+
if (Array.isArray(v) && v.length === 4 && v.every((n) => typeof n === 'number'))
|
|
96
|
+
return `cubic-bezier(${v.join(', ')})`;
|
|
97
|
+
if (typeof v !== 'string' || !v.trim())
|
|
98
|
+
return undefined;
|
|
99
|
+
const s = v.trim();
|
|
100
|
+
if (/^-?\d*\.?\d+(\s*,\s*-?\d*\.?\d+){3}$/.test(s))
|
|
101
|
+
return `cubic-bezier(${s.split(/\s*,\s*/).join(', ')})`;
|
|
102
|
+
return s;
|
|
103
|
+
}
|
|
104
|
+
const isLeaf = (o) => o && typeof o === 'object' && ('$value' in o || 'value' in o);
|
|
105
|
+
const leafValue = (o) => ('$value' in o ? o.$value : o.value);
|
|
106
|
+
const leafType = (o) => String(o.$type ?? o.type ?? '').toLowerCase();
|
|
107
|
+
/**
|
|
108
|
+
* Import tokens from W3C DTCG JSON, Figma Tokens / Tokens Studio
|
|
109
|
+
* (`{ value, type }`) or Style Dictionary (`{ value }`, nested) — anything
|
|
110
|
+
* under a `duration` / `easing` / `spring` group (any depth, e.g.
|
|
111
|
+
* `motion.duration.fast` or `global.animation.easing.out`), or typed leaves
|
|
112
|
+
* (`duration`, `cubicBezier`, `transition`, `spring`). Unknown values are
|
|
113
|
+
* skipped; the result is merged over the defaults.
|
|
114
|
+
*/
|
|
115
|
+
function importMotionTokens(json, base = MOTION_TOKENS) {
|
|
116
|
+
const partial = { duration: {}, easing: {}, spring: {} };
|
|
117
|
+
const walk = (node, path) => {
|
|
118
|
+
if (!node || typeof node !== 'object')
|
|
119
|
+
return;
|
|
120
|
+
if (isLeaf(node)) {
|
|
121
|
+
const name = path[path.length - 1];
|
|
122
|
+
const type = leafType(node);
|
|
123
|
+
const group = path.slice(0, -1).map((p) => p.toLowerCase());
|
|
124
|
+
const val = leafValue(node);
|
|
125
|
+
const inGroup = (g) => group.some((p) => g.includes(p));
|
|
126
|
+
if (type === 'duration' || (!type && inGroup(['duration', 'durations'])) || (type !== 'cubicbezier' && inGroup(['duration', 'durations']))) {
|
|
127
|
+
const ms = parseDuration(val);
|
|
128
|
+
if (ms !== undefined)
|
|
129
|
+
partial.duration[name] = ms;
|
|
130
|
+
}
|
|
131
|
+
else if (type === 'cubicbezier' || type === 'easing' || inGroup(['easing', 'easings', 'ease'])) {
|
|
132
|
+
const e = parseEasing(val);
|
|
133
|
+
if (e)
|
|
134
|
+
partial.easing[name] = e;
|
|
135
|
+
}
|
|
136
|
+
else if (type === 'spring' || inGroup(['spring', 'springs'])) {
|
|
137
|
+
if (val && typeof val === 'object')
|
|
138
|
+
partial.spring[name] = { stiffness: Number(val.stiffness ?? 170), damping: Number(val.damping ?? 26), mass: Number(val.mass ?? 1) };
|
|
139
|
+
}
|
|
140
|
+
else if (type === 'transition' && val && typeof val === 'object') {
|
|
141
|
+
const ms = parseDuration(val.duration);
|
|
142
|
+
if (ms !== undefined)
|
|
143
|
+
partial.duration[name] = ms;
|
|
144
|
+
const e = parseEasing(val.timingFunction);
|
|
145
|
+
if (e)
|
|
146
|
+
partial.easing[name] = e;
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
for (const [k, v] of Object.entries(node))
|
|
151
|
+
if (!k.startsWith('$'))
|
|
152
|
+
walk(v, [...path, k]);
|
|
153
|
+
};
|
|
154
|
+
walk(json, []);
|
|
155
|
+
return mergeMotionTokens(partial, base);
|
|
156
|
+
}
|
|
157
|
+
/** The tokens currently applied (via `applyMotionTokens`), or the defaults. */
|
|
158
|
+
function getMotionTokens() {
|
|
159
|
+
return clone(active);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Write tokens as CSS custom properties on `root` (default `<html>`) and make
|
|
163
|
+
* them the active set for `motionToken()`. Returns an undo function.
|
|
164
|
+
*/
|
|
165
|
+
function applyMotionTokens(tokens = MOTION_TOKENS, root, prefix = '--usa') {
|
|
166
|
+
const prev = active;
|
|
167
|
+
active = mergeMotionTokens(tokens, MOTION_TOKENS);
|
|
168
|
+
const el = root || (typeof document !== 'undefined' ? document.documentElement : null);
|
|
169
|
+
const vars = motionTokensToVars(active, prefix);
|
|
170
|
+
const old = {};
|
|
171
|
+
if (el)
|
|
172
|
+
for (const [k, v] of Object.entries(vars))
|
|
173
|
+
((old[k] = el.style.getPropertyValue(k)), el.style.setProperty(k, v));
|
|
174
|
+
return () => {
|
|
175
|
+
active = prev;
|
|
176
|
+
if (el)
|
|
177
|
+
for (const [k, v] of Object.entries(old))
|
|
178
|
+
v ? el.style.setProperty(k, v) : el.style.removeProperty(k);
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
function motionToken(group, name) {
|
|
182
|
+
const g = active[group];
|
|
183
|
+
return g[name] ?? MOTION_TOKENS[group][name];
|
|
184
|
+
}
|
|
185
|
+
/** `var(--usa-duration-fast, 150ms)` — a CSS reference with the current value as fallback. */
|
|
186
|
+
function motionVar(group, name, prop, prefix = '--usa') {
|
|
187
|
+
if (group === 'spring') {
|
|
188
|
+
const s = motionToken('spring', name);
|
|
189
|
+
const p = prop || 'stiffness';
|
|
190
|
+
return `var(${prefix}-spring-${kebab(name)}-${p}, ${s ? s[p] : ''})`;
|
|
191
|
+
}
|
|
192
|
+
const v = group === 'duration' ? `${motionToken('duration', name)}ms` : motionToken('easing', name);
|
|
193
|
+
return `var(${prefix}-${group}-${kebab(name)}, ${v})`;
|
|
194
|
+
}
|
|
195
|
+
/** Resolve a duration that may be a token name (`'fast'`) or ms. */
|
|
196
|
+
function resolveDurationToken(v, fallback) {
|
|
197
|
+
if (typeof v === 'number')
|
|
198
|
+
return v;
|
|
199
|
+
if (typeof v === 'string')
|
|
200
|
+
return (active.duration[v] ?? parseDuration(v)) ?? fallback;
|
|
201
|
+
return fallback;
|
|
202
|
+
}
|
|
203
|
+
/** Resolve an easing that may be a token name (`'emphasized'`) or CSS. */
|
|
204
|
+
function resolveEasingToken(v, fallback) {
|
|
205
|
+
if (!v)
|
|
206
|
+
return fallback;
|
|
207
|
+
return active.easing[v] ?? v;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export { MOTION_TOKENS, applyMotionTokens, getMotionTokens, importMotionTokens, mergeMotionTokens, motionToken, motionTokensToCss, motionTokensToJSON, motionTokensToVars, motionVar, parseDuration, parseEasing, resolveDurationToken, resolveEasingToken };
|
|
211
|
+
//# sourceMappingURL=tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sources":["../../src/components/tokens/index.ts"],"sourcesContent":["/**\n * use-scroll-animate/components/tokens — motion design tokens (4.2).\n *\n * One source of truth for durations, easings and springs: as CSS custom\n * properties (`--usa-duration-fast`, `--usa-easing-emphasized`,\n * `--usa-spring-bouncy-stiffness`…), as W3C Design Tokens JSON, and importable\n * from Figma Tokens (Tokens Studio) or Style Dictionary exports.\n *\n * ```ts\n * import { applyMotionTokens, importMotionTokens, motionToken } from 'use-scroll-animate/components/tokens';\n * applyMotionTokens(importMotionTokens(await (await fetch('/tokens.json')).json()));\n * el.animate(frames, { duration: motionToken('duration', 'slow'), easing: motionToken('easing', 'emphasized') });\n * ```\n */\n\nexport interface SpringToken {\n stiffness: number;\n damping: number;\n mass: number;\n}\n\nexport interface MotionTokens {\n /** Durations in ms. */\n duration: Record<string, number>;\n /** CSS easing strings. */\n easing: Record<string, string>;\n /** Spring physics parameters. */\n spring: Record<string, SpringToken>;\n}\n\n/** The default motion scale (Material / Fluent-inspired). */\nexport const MOTION_TOKENS: MotionTokens = {\n duration: { instant: 0, fast: 150, normal: 300, slow: 600, slower: 900, slowest: 1400 },\n easing: {\n linear: 'linear',\n standard: 'cubic-bezier(0.2, 0, 0, 1)',\n emphasized: 'cubic-bezier(0.22, 1, 0.36, 1)',\n decelerate: 'cubic-bezier(0, 0, 0, 1)',\n accelerate: 'cubic-bezier(0.3, 0, 1, 1)',\n spring: 'cubic-bezier(0.34, 1.56, 0.64, 1)',\n bounce: 'cubic-bezier(0.68, -0.55, 0.265, 1.55)',\n },\n spring: {\n gentle: { stiffness: 120, damping: 14, mass: 1 },\n snappy: { stiffness: 300, damping: 30, mass: 1 },\n bouncy: { stiffness: 260, damping: 12, mass: 1 },\n wobbly: { stiffness: 180, damping: 8, mass: 1 },\n stiff: { stiffness: 500, damping: 40, mass: 1 },\n },\n};\n\nexport type MotionTokenGroup = keyof MotionTokens;\nexport type DeepPartialTokens = { [K in keyof MotionTokens]?: Partial<MotionTokens[K]> };\n\nlet active: MotionTokens = clone(MOTION_TOKENS);\n\nfunction clone(t: MotionTokens): MotionTokens {\n return { duration: { ...t.duration }, easing: { ...t.easing }, spring: Object.fromEntries(Object.entries(t.spring).map(([k, v]) => [k, { ...v }])) };\n}\n\n/** Merge partial tokens over a base (defaults: the built-in scale). */\nexport function mergeMotionTokens(partial: DeepPartialTokens, base: MotionTokens = MOTION_TOKENS): MotionTokens {\n const out = clone(base);\n Object.assign(out.duration, partial.duration || {});\n Object.assign(out.easing, partial.easing || {});\n for (const [k, v] of Object.entries(partial.spring || {})) out.spring[k] = { ...(out.spring[k] || { stiffness: 170, damping: 26, mass: 1 }), ...v };\n return out;\n}\n\nconst kebab = (s: string) => s.replace(/([a-z0-9])([A-Z])/g, '$1-$2').replace(/[\\s_.]+/g, '-').toLowerCase();\n\n/** The custom-property map: `{ '--usa-duration-fast': '150ms', … }`. */\nexport function motionTokensToVars(tokens: MotionTokens = active, prefix = '--usa'): Record<string, string> {\n const vars: Record<string, string> = {};\n for (const [k, v] of Object.entries(tokens.duration)) vars[`${prefix}-duration-${kebab(k)}`] = `${v}ms`;\n for (const [k, v] of Object.entries(tokens.easing)) vars[`${prefix}-easing-${kebab(k)}`] = v;\n for (const [k, v] of Object.entries(tokens.spring)) {\n vars[`${prefix}-spring-${kebab(k)}-stiffness`] = String(v.stiffness);\n vars[`${prefix}-spring-${kebab(k)}-damping`] = String(v.damping);\n vars[`${prefix}-spring-${kebab(k)}-mass`] = String(v.mass);\n }\n return vars;\n}\n\n/** A stylesheet string: `:root { --usa-duration-fast: 150ms; … }`. */\nexport function motionTokensToCss(tokens: MotionTokens = active, selector = ':root', prefix = '--usa'): string {\n const body = Object.entries(motionTokensToVars(tokens, prefix)).map(([k, v]) => ` ${k}: ${v};`).join('\\n');\n return `${selector} {\\n${body}\\n}\\n`;\n}\n\n/** W3C Design Tokens (DTCG) JSON: `{ motion: { duration: { fast: { $type: 'duration', $value: '150ms' } } } }`. */\nexport function motionTokensToJSON(tokens: MotionTokens = active): Record<string, unknown> {\n const grp = <T>(o: Record<string, T>, f: (v: T) => unknown) => Object.fromEntries(Object.entries(o).map(([k, v]) => [k, f(v)]));\n return {\n motion: {\n duration: grp(tokens.duration, (v) => ({ $type: 'duration', $value: `${v}ms` })),\n easing: grp(tokens.easing, (v) => {\n const m = /^cubic-bezier\\(([^)]+)\\)$/.exec(v);\n return m ? { $type: 'cubicBezier', $value: m[1].split(',').map(Number) } : { $type: 'string', $value: v };\n }),\n spring: grp(tokens.spring, (v) => ({ $type: 'spring', $value: { ...v } })),\n },\n };\n}\n\n/** Parse `150ms`, `0.15s`, `150` → ms. */\nexport function parseDuration(v: unknown): number | undefined {\n if (typeof v === 'number' && isFinite(v)) return v;\n if (typeof v === 'object' && v && 'value' in (v as any) && 'unit' in (v as any)) return parseDuration(`${(v as any).value}${(v as any).unit}`);\n const m = /^\\s*(-?\\d*\\.?\\d+)\\s*(ms|s)?\\s*$/.exec(String(v ?? ''));\n if (!m) return undefined;\n return m[2] === 's' ? Number(m[1]) * 1000 : Number(m[1]);\n}\n\n/** Parse `[x1,y1,x2,y2]`, `'cubic-bezier(…)'`, `'0.2, 0, 0, 1'` or a keyword → CSS easing. */\nexport function parseEasing(v: unknown): string | undefined {\n if (Array.isArray(v) && v.length === 4 && v.every((n) => typeof n === 'number')) return `cubic-bezier(${v.join(', ')})`;\n if (typeof v !== 'string' || !v.trim()) return undefined;\n const s = v.trim();\n if (/^-?\\d*\\.?\\d+(\\s*,\\s*-?\\d*\\.?\\d+){3}$/.test(s)) return `cubic-bezier(${s.split(/\\s*,\\s*/).join(', ')})`;\n return s;\n}\n\nconst isLeaf = (o: any) => o && typeof o === 'object' && ('$value' in o || 'value' in o);\nconst leafValue = (o: any) => ('$value' in o ? o.$value : o.value);\nconst leafType = (o: any) => String(o.$type ?? o.type ?? '').toLowerCase();\n\n/**\n * Import tokens from W3C DTCG JSON, Figma Tokens / Tokens Studio\n * (`{ value, type }`) or Style Dictionary (`{ value }`, nested) — anything\n * under a `duration` / `easing` / `spring` group (any depth, e.g.\n * `motion.duration.fast` or `global.animation.easing.out`), or typed leaves\n * (`duration`, `cubicBezier`, `transition`, `spring`). Unknown values are\n * skipped; the result is merged over the defaults.\n */\nexport function importMotionTokens(json: unknown, base: MotionTokens = MOTION_TOKENS): MotionTokens {\n const partial: Required<DeepPartialTokens> = { duration: {}, easing: {}, spring: {} };\n const walk = (node: any, path: string[]) => {\n if (!node || typeof node !== 'object') return;\n if (isLeaf(node)) {\n const name = path[path.length - 1];\n const type = leafType(node);\n const group = path.slice(0, -1).map((p) => p.toLowerCase());\n const val = leafValue(node);\n const inGroup = (g: string[]) => group.some((p) => g.includes(p));\n if (type === 'duration' || (!type && inGroup(['duration', 'durations'])) || (type !== 'cubicbezier' && inGroup(['duration', 'durations']))) {\n const ms = parseDuration(val);\n if (ms !== undefined) partial.duration[name] = ms;\n } else if (type === 'cubicbezier' || type === 'easing' || inGroup(['easing', 'easings', 'ease'])) {\n const e = parseEasing(val);\n if (e) partial.easing[name] = e;\n } else if (type === 'spring' || inGroup(['spring', 'springs'])) {\n if (val && typeof val === 'object') partial.spring[name] = { stiffness: Number(val.stiffness ?? 170), damping: Number(val.damping ?? 26), mass: Number(val.mass ?? 1) };\n } else if (type === 'transition' && val && typeof val === 'object') {\n const ms = parseDuration(val.duration);\n if (ms !== undefined) partial.duration[name] = ms;\n const e = parseEasing(val.timingFunction);\n if (e) partial.easing[name] = e;\n }\n return;\n }\n for (const [k, v] of Object.entries(node)) if (!k.startsWith('$')) walk(v, [...path, k]);\n };\n walk(json, []);\n return mergeMotionTokens(partial, base);\n}\n\n/** The tokens currently applied (via `applyMotionTokens`), or the defaults. */\nexport function getMotionTokens(): MotionTokens {\n return clone(active);\n}\n\n/**\n * Write tokens as CSS custom properties on `root` (default `<html>`) and make\n * them the active set for `motionToken()`. Returns an undo function.\n */\nexport function applyMotionTokens(tokens: DeepPartialTokens | MotionTokens = MOTION_TOKENS, root?: HTMLElement, prefix = '--usa'): () => void {\n const prev = active;\n active = mergeMotionTokens(tokens as DeepPartialTokens, MOTION_TOKENS);\n const el = root || (typeof document !== 'undefined' ? document.documentElement : null);\n const vars = motionTokensToVars(active, prefix);\n const old: Record<string, string> = {};\n if (el) for (const [k, v] of Object.entries(vars)) ((old[k] = el.style.getPropertyValue(k)), el.style.setProperty(k, v));\n return () => {\n active = prev;\n if (el) for (const [k, v] of Object.entries(old)) v ? el.style.setProperty(k, v) : el.style.removeProperty(k);\n };\n}\n\n/** Look up a token: `motionToken('duration', 'fast')` → `150`; `motionToken('easing', 'emphasized')` → CSS easing. */\nexport function motionToken(group: 'duration', name: string): number;\nexport function motionToken(group: 'easing', name: string): string;\nexport function motionToken(group: 'spring', name: string): SpringToken;\nexport function motionToken(group: MotionTokenGroup, name: string): number | string | SpringToken | undefined {\n const g = active[group] as Record<string, any>;\n return g[name] ?? (MOTION_TOKENS[group] as Record<string, any>)[name];\n}\n\n/** `var(--usa-duration-fast, 150ms)` — a CSS reference with the current value as fallback. */\nexport function motionVar(group: MotionTokenGroup, name: string, prop?: 'stiffness' | 'damping' | 'mass', prefix = '--usa'): string {\n if (group === 'spring') {\n const s = motionToken('spring', name);\n const p = prop || 'stiffness';\n return `var(${prefix}-spring-${kebab(name)}-${p}, ${s ? s[p] : ''})`;\n }\n const v = group === 'duration' ? `${motionToken('duration', name)}ms` : motionToken('easing', name);\n return `var(${prefix}-${group}-${kebab(name)}, ${v})`;\n}\n\n/** Resolve a duration that may be a token name (`'fast'`) or ms. */\nexport function resolveDurationToken(v: number | string | undefined, fallback: number): number {\n if (typeof v === 'number') return v;\n if (typeof v === 'string') return (active.duration[v] ?? parseDuration(v)) ?? fallback;\n return fallback;\n}\n\n/** Resolve an easing that may be a token name (`'emphasized'`) or CSS. */\nexport function resolveEasingToken(v: string | undefined, fallback: string): string {\n if (!v) return fallback;\n return active.easing[v] ?? v;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/components/vue.cjs
CHANGED
|
@@ -16,7 +16,8 @@ require('./click.cjs');
|
|
|
16
16
|
require('./ui.cjs');
|
|
17
17
|
require('./page.cjs');
|
|
18
18
|
require('./timeline.cjs');
|
|
19
|
-
require('../chunks/core-
|
|
19
|
+
require('../chunks/core-BRIIoKeS.cjs');
|
|
20
|
+
require('./tokens.cjs');
|
|
20
21
|
require('./gesture.cjs');
|
|
21
22
|
require('../chunks/core-IaorbTdu.cjs');
|
|
22
23
|
require('./svg.cjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue.cjs","sources":["../../src/components/frameworks/vue.ts"],"sourcesContent":["/**\n * use-scroll-animate/components/vue — Vue integration (v2.9).\n *\n * ```js\n * // vite.config.js\n * import vue from '@vitejs/plugin-vue';\n * import { isUsaElement } from 'use-scroll-animate/components/vue';\n * export default { plugins: [vue({ template: { compilerOptions: { isCustomElement: isUsaElement } } })] };\n *\n * // main.js\n * import { UsaPlugin } from 'use-scroll-animate/components/vue';\n * app.use(UsaPlugin, { categories: ['click', 'cards'] });\n * ```\n * In templates, listen with `@usa:change=\"…\"` and bind properties with\n * `.prop`: `<usa-toggle :checked.prop=\"on\" @usa:change=\"on = $event.detail.checked\">`.\n */\nimport { defineComponents, type ComponentCategory } from '../index';\n\n/** `compilerOptions.isCustomElement` predicate for every `<usa-*>` tag. */\nexport const isUsaElement = (tag: string): boolean => tag.startsWith('usa-');\n\nexport interface UsaPluginOptions {\n /** Only register these categories (default: all). */\n categories?: ComponentCategory[];\n}\n\n/** Vue plugin: registers the `<usa-*>` elements (client only) and sets `isCustomElement` at runtime. */\nexport const UsaPlugin = {\n install(app: { config: { compilerOptions?: { isCustomElement?: (t: string) => boolean } } }, options: UsaPluginOptions = {}): void {\n const co = (app.config.compilerOptions ||= {});\n const prev = co.isCustomElement;\n co.isCustomElement = (t: string) => isUsaElement(t) || !!prev?.(t);\n defineComponents(options.categories);\n },\n};\n"],"names":["defineComponents"],"mappings":"
|
|
1
|
+
{"version":3,"file":"vue.cjs","sources":["../../src/components/frameworks/vue.ts"],"sourcesContent":["/**\n * use-scroll-animate/components/vue — Vue integration (v2.9).\n *\n * ```js\n * // vite.config.js\n * import vue from '@vitejs/plugin-vue';\n * import { isUsaElement } from 'use-scroll-animate/components/vue';\n * export default { plugins: [vue({ template: { compilerOptions: { isCustomElement: isUsaElement } } })] };\n *\n * // main.js\n * import { UsaPlugin } from 'use-scroll-animate/components/vue';\n * app.use(UsaPlugin, { categories: ['click', 'cards'] });\n * ```\n * In templates, listen with `@usa:change=\"…\"` and bind properties with\n * `.prop`: `<usa-toggle :checked.prop=\"on\" @usa:change=\"on = $event.detail.checked\">`.\n */\nimport { defineComponents, type ComponentCategory } from '../index';\n\n/** `compilerOptions.isCustomElement` predicate for every `<usa-*>` tag. */\nexport const isUsaElement = (tag: string): boolean => tag.startsWith('usa-');\n\nexport interface UsaPluginOptions {\n /** Only register these categories (default: all). */\n categories?: ComponentCategory[];\n}\n\n/** Vue plugin: registers the `<usa-*>` elements (client only) and sets `isCustomElement` at runtime. */\nexport const UsaPlugin = {\n install(app: { config: { compilerOptions?: { isCustomElement?: (t: string) => boolean } } }, options: UsaPluginOptions = {}): void {\n const co = (app.config.compilerOptions ||= {});\n const prev = co.isCustomElement;\n co.isCustomElement = (t: string) => isUsaElement(t) || !!prev?.(t);\n defineComponents(options.categories);\n },\n};\n"],"names":["defineComponents"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;AAeG;AAGH;AACO,MAAM,YAAY,GAAG,CAAC,GAAW,KAAc,GAAG,CAAC,UAAU,CAAC,MAAM;AAO3E;AACO,MAAM,SAAS,GAAG;AACvB,IAAA,OAAO,CAAC,GAAmF,EAAE,OAAA,GAA4B,EAAE,EAAA;;AACzH,QAAA,MAAM,EAAE,IAAG,CAAA,EAAA,GAAC,GAAG,CAAC,MAAM,EAAC,eAAe,KAAA,EAAA,CAAf,eAAe,GAAK,EAAE,EAAC;AAC9C,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe;QAC/B,EAAE,CAAC,eAAe,GAAG,CAAC,CAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAClE,QAAAA,2BAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;;;;;;"}
|
|
@@ -1285,9 +1285,9 @@ declare global {
|
|
|
1285
1285
|
*/
|
|
1286
1286
|
type TimelinePosition = number | string;
|
|
1287
1287
|
interface TimelineStepOptions {
|
|
1288
|
-
/** Duration in ms (
|
|
1289
|
-
duration?: number;
|
|
1290
|
-
/** CSS easing (
|
|
1288
|
+
/** Duration in ms or a motion token name (`'fast'`, `'slow'`…; 4.2). Default: timeline default, 600. */
|
|
1289
|
+
duration?: number | string;
|
|
1290
|
+
/** CSS easing or a motion token name (`'emphasized'`, `'spring'`…; 4.2). Default `cubic-bezier(0.22, 1, 0.36, 1)`. */
|
|
1291
1291
|
easing?: string;
|
|
1292
1292
|
/** Start position, see `TimelinePosition`. */
|
|
1293
1293
|
at?: TimelinePosition;
|
package/dist/components/vue.d.ts
CHANGED
|
@@ -1285,9 +1285,9 @@ declare global {
|
|
|
1285
1285
|
*/
|
|
1286
1286
|
type TimelinePosition = number | string;
|
|
1287
1287
|
interface TimelineStepOptions {
|
|
1288
|
-
/** Duration in ms (
|
|
1289
|
-
duration?: number;
|
|
1290
|
-
/** CSS easing (
|
|
1288
|
+
/** Duration in ms or a motion token name (`'fast'`, `'slow'`…; 4.2). Default: timeline default, 600. */
|
|
1289
|
+
duration?: number | string;
|
|
1290
|
+
/** CSS easing or a motion token name (`'emphasized'`, `'spring'`…; 4.2). Default `cubic-bezier(0.22, 1, 0.36, 1)`. */
|
|
1291
1291
|
easing?: string;
|
|
1292
1292
|
/** Start position, see `TimelinePosition`. */
|
|
1293
1293
|
at?: TimelinePosition;
|
package/dist/components/vue.js
CHANGED
|
@@ -14,7 +14,8 @@ import './click.js';
|
|
|
14
14
|
import './ui.js';
|
|
15
15
|
import './page.js';
|
|
16
16
|
import './timeline.js';
|
|
17
|
-
import '../chunks/core-
|
|
17
|
+
import '../chunks/core-LkGRmgES.js';
|
|
18
|
+
import './tokens.js';
|
|
18
19
|
import './gesture.js';
|
|
19
20
|
import '../chunks/core-eXX8rB_b.js';
|
|
20
21
|
import './svg.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue.js","sources":["../../src/components/frameworks/vue.ts"],"sourcesContent":["/**\n * use-scroll-animate/components/vue — Vue integration (v2.9).\n *\n * ```js\n * // vite.config.js\n * import vue from '@vitejs/plugin-vue';\n * import { isUsaElement } from 'use-scroll-animate/components/vue';\n * export default { plugins: [vue({ template: { compilerOptions: { isCustomElement: isUsaElement } } })] };\n *\n * // main.js\n * import { UsaPlugin } from 'use-scroll-animate/components/vue';\n * app.use(UsaPlugin, { categories: ['click', 'cards'] });\n * ```\n * In templates, listen with `@usa:change=\"…\"` and bind properties with\n * `.prop`: `<usa-toggle :checked.prop=\"on\" @usa:change=\"on = $event.detail.checked\">`.\n */\nimport { defineComponents, type ComponentCategory } from '../index';\n\n/** `compilerOptions.isCustomElement` predicate for every `<usa-*>` tag. */\nexport const isUsaElement = (tag: string): boolean => tag.startsWith('usa-');\n\nexport interface UsaPluginOptions {\n /** Only register these categories (default: all). */\n categories?: ComponentCategory[];\n}\n\n/** Vue plugin: registers the `<usa-*>` elements (client only) and sets `isCustomElement` at runtime. */\nexport const UsaPlugin = {\n install(app: { config: { compilerOptions?: { isCustomElement?: (t: string) => boolean } } }, options: UsaPluginOptions = {}): void {\n const co = (app.config.compilerOptions ||= {});\n const prev = co.isCustomElement;\n co.isCustomElement = (t: string) => isUsaElement(t) || !!prev?.(t);\n defineComponents(options.categories);\n },\n};\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vue.js","sources":["../../src/components/frameworks/vue.ts"],"sourcesContent":["/**\n * use-scroll-animate/components/vue — Vue integration (v2.9).\n *\n * ```js\n * // vite.config.js\n * import vue from '@vitejs/plugin-vue';\n * import { isUsaElement } from 'use-scroll-animate/components/vue';\n * export default { plugins: [vue({ template: { compilerOptions: { isCustomElement: isUsaElement } } })] };\n *\n * // main.js\n * import { UsaPlugin } from 'use-scroll-animate/components/vue';\n * app.use(UsaPlugin, { categories: ['click', 'cards'] });\n * ```\n * In templates, listen with `@usa:change=\"…\"` and bind properties with\n * `.prop`: `<usa-toggle :checked.prop=\"on\" @usa:change=\"on = $event.detail.checked\">`.\n */\nimport { defineComponents, type ComponentCategory } from '../index';\n\n/** `compilerOptions.isCustomElement` predicate for every `<usa-*>` tag. */\nexport const isUsaElement = (tag: string): boolean => tag.startsWith('usa-');\n\nexport interface UsaPluginOptions {\n /** Only register these categories (default: all). */\n categories?: ComponentCategory[];\n}\n\n/** Vue plugin: registers the `<usa-*>` elements (client only) and sets `isCustomElement` at runtime. */\nexport const UsaPlugin = {\n install(app: { config: { compilerOptions?: { isCustomElement?: (t: string) => boolean } } }, options: UsaPluginOptions = {}): void {\n const co = (app.config.compilerOptions ||= {});\n const prev = co.isCustomElement;\n co.isCustomElement = (t: string) => isUsaElement(t) || !!prev?.(t);\n defineComponents(options.categories);\n },\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;AAeG;AAGH;AACO,MAAM,YAAY,GAAG,CAAC,GAAW,KAAc,GAAG,CAAC,UAAU,CAAC,MAAM;AAO3E;AACO,MAAM,SAAS,GAAG;AACvB,IAAA,OAAO,CAAC,GAAmF,EAAE,OAAA,GAA4B,EAAE,EAAA;;AACzH,QAAA,MAAM,EAAE,IAAG,CAAA,EAAA,GAAC,GAAG,CAAC,MAAM,EAAC,eAAe,KAAA,EAAA,CAAf,eAAe,GAAK,EAAE,EAAC;AAC9C,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,eAAe;QAC/B,EAAE,CAAC,eAAe,GAAG,CAAC,CAAS,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;AAClE,QAAA,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC;IACtC,CAAC;;;;;"}
|
package/dist/components.cjs
CHANGED
|
@@ -20,9 +20,10 @@ var components_layout = require('./components/layout.cjs');
|
|
|
20
20
|
var components_packs = require('./components/packs.cjs');
|
|
21
21
|
var variants = require('./chunks/variants-BNIrn4ch.cjs');
|
|
22
22
|
var base = require('./chunks/base-CXx7jZ-o.cjs');
|
|
23
|
+
var components_tokens = require('./components/tokens.cjs');
|
|
23
24
|
var indexTags = require('./chunks/index-tags-BQh_uGqH.cjs');
|
|
24
25
|
var spring = require('./chunks/spring-2OTnYCzm.cjs');
|
|
25
|
-
var core = require('./chunks/core-
|
|
26
|
+
var core = require('./chunks/core-BRIIoKeS.cjs');
|
|
26
27
|
var core$1 = require('./chunks/core-IaorbTdu.cjs');
|
|
27
28
|
|
|
28
29
|
/**
|
|
@@ -243,6 +244,20 @@ exports.MOTION_SCALE = base.MOTION_SCALE;
|
|
|
243
244
|
exports.configureComponents = base.configureComponents;
|
|
244
245
|
exports.getMotionIntensity = base.getMotionIntensity;
|
|
245
246
|
exports.prefersReducedMotion = base.prefersReducedMotion;
|
|
247
|
+
exports.MOTION_TOKENS = components_tokens.MOTION_TOKENS;
|
|
248
|
+
exports.applyMotionTokens = components_tokens.applyMotionTokens;
|
|
249
|
+
exports.getMotionTokens = components_tokens.getMotionTokens;
|
|
250
|
+
exports.importMotionTokens = components_tokens.importMotionTokens;
|
|
251
|
+
exports.mergeMotionTokens = components_tokens.mergeMotionTokens;
|
|
252
|
+
exports.motionToken = components_tokens.motionToken;
|
|
253
|
+
exports.motionTokensToCss = components_tokens.motionTokensToCss;
|
|
254
|
+
exports.motionTokensToJSON = components_tokens.motionTokensToJSON;
|
|
255
|
+
exports.motionTokensToVars = components_tokens.motionTokensToVars;
|
|
256
|
+
exports.motionVar = components_tokens.motionVar;
|
|
257
|
+
exports.parseDuration = components_tokens.parseDuration;
|
|
258
|
+
exports.parseEasing = components_tokens.parseEasing;
|
|
259
|
+
exports.resolveDurationToken = components_tokens.resolveDurationToken;
|
|
260
|
+
exports.resolveEasingToken = components_tokens.resolveEasingToken;
|
|
246
261
|
exports.COMPONENT_CATEGORIES = indexTags.COMPONENT_CATEGORIES;
|
|
247
262
|
exports.SPRING_PRESETS = spring.SPRING_PRESETS;
|
|
248
263
|
exports.createSpring = spring.createSpring;
|
package/dist/components.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components.cjs","sources":["../src/components/index.ts"],"sourcesContent":["/**\n * use-scroll-animate/components\n *\n * Framework-agnostic, dependency-free animated UI components built on\n * Custom Elements + CSS + the Web Animations API. They run in any browser\n * and in Windows desktop apps that render with a web view: Electron, Tauri\n * (WebView2), WinUI 3 / WPF / WinForms with WebView2, and installed PWAs.\n *\n * ```js\n * import { defineComponents } from 'use-scroll-animate/components';\n * defineComponents(); // registers every <usa-*> element\n * // or only what you use (tree-shakable):\n * import { defineTypewriter } from 'use-scroll-animate/components/text';\n * ```\n *\n * Importing has no side effects and is SSR-safe; nothing is registered\n * until a `define*()` function runs in a browser.\n *\n * @license MIT\n */\nimport { defineRevealComponents } from './reveal/index';\nimport { defineTextComponents } from './text/index';\nimport { defineInteractionComponents } from './interaction/index';\nimport { defineFeedbackComponents } from './feedback/index';\nimport { defineBackgroundComponents } from './background/index';\nimport { defineTransitionComponents } from './transitions/index';\nimport { definePhysicsComponents } from './physics/index';\nimport { defineCardComponents } from './cards/index';\nimport { defineClickComponents } from './click/index';\nimport { defineUiComponents } from './ui/index';\nimport { definePageComponents } from './page/index';\nimport { defineTimelineComponents } from './timeline/index';\nimport { defineGestureComponents } from './gesture/index';\nimport { defineSvgComponents } from './svg/index';\nimport { defineWebglComponents } from './webgl/index';\nimport { defineDepthComponents } from './depth/index';\nimport { defineLayoutComponents } from './layout/index';\nimport { definePacksComponents } from './packs/index';\nimport { adoptVariants } from './ui/variants';\nimport { canDefine } from './base';\n\nexport * from './reveal/index';\nexport * from './text/index';\nexport * from './interaction/index';\nexport * from './feedback/index';\nexport * from './background/index';\nexport * from './transitions/index';\nexport * from './physics/index';\nexport * from './cards/index';\nexport * from './click/index';\nexport * from './ui/index';\nexport * from './page/index';\nexport * from './timeline/index';\nexport * from './gesture/index';\nexport * from './svg/index';\nexport * from './webgl/index';\nexport * from './depth/index';\nexport * from './layout/index';\nexport * from './packs/index';\n\nexport { COMPONENT_CATEGORIES } from './index-tags';\nexport type { ComponentCategory } from './index-tags';\nimport { COMPONENT_CATEGORIES, type ComponentCategory } from './index-tags';\n\nconst BY_CATEGORY: Record<ComponentCategory, () => void> = {\n reveal: defineRevealComponents,\n text: defineTextComponents,\n interaction: defineInteractionComponents,\n feedback: defineFeedbackComponents,\n background: defineBackgroundComponents,\n transitions: defineTransitionComponents,\n physics: definePhysicsComponents,\n cards: defineCardComponents,\n click: defineClickComponents,\n ui: defineUiComponents,\n page: definePageComponents,\n timeline: defineTimelineComponents,\n gesture: defineGestureComponents,\n svg: defineSvgComponents,\n webgl: defineWebglComponents,\n depth: defineDepthComponents,\n layout: defineLayoutComponents,\n packs: definePacksComponents,\n};\n\n/**\n * Register every `<usa-*>` component (or only the given categories).\n * Safe to call more than once and on the server (no-op without DOM).\n */\nexport function defineComponents(categories?: ComponentCategory[]): void {\n if (canDefine()) adoptVariants();\n (categories || (Object.keys(BY_CATEGORY) as ComponentCategory[])).forEach((c) => BY_CATEGORY[c]?.());\n}\n"],"names":["defineRevealComponents","defineTextComponents","defineInteractionComponents","defineFeedbackComponents","defineBackgroundComponents","defineTransitionComponents","definePhysicsComponents","defineCardComponents","defineClickComponents","defineUiComponents","definePageComponents","defineTimelineComponents","defineGestureComponents","defineSvgComponents","defineWebglComponents","defineDepthComponents","defineLayoutComponents","definePacksComponents","canDefine","adoptVariants"],"mappings":"
|
|
1
|
+
{"version":3,"file":"components.cjs","sources":["../src/components/index.ts"],"sourcesContent":["/**\n * use-scroll-animate/components\n *\n * Framework-agnostic, dependency-free animated UI components built on\n * Custom Elements + CSS + the Web Animations API. They run in any browser\n * and in Windows desktop apps that render with a web view: Electron, Tauri\n * (WebView2), WinUI 3 / WPF / WinForms with WebView2, and installed PWAs.\n *\n * ```js\n * import { defineComponents } from 'use-scroll-animate/components';\n * defineComponents(); // registers every <usa-*> element\n * // or only what you use (tree-shakable):\n * import { defineTypewriter } from 'use-scroll-animate/components/text';\n * ```\n *\n * Importing has no side effects and is SSR-safe; nothing is registered\n * until a `define*()` function runs in a browser.\n *\n * @license MIT\n */\nimport { defineRevealComponents } from './reveal/index';\nimport { defineTextComponents } from './text/index';\nimport { defineInteractionComponents } from './interaction/index';\nimport { defineFeedbackComponents } from './feedback/index';\nimport { defineBackgroundComponents } from './background/index';\nimport { defineTransitionComponents } from './transitions/index';\nimport { definePhysicsComponents } from './physics/index';\nimport { defineCardComponents } from './cards/index';\nimport { defineClickComponents } from './click/index';\nimport { defineUiComponents } from './ui/index';\nimport { definePageComponents } from './page/index';\nimport { defineTimelineComponents } from './timeline/index';\nimport { defineGestureComponents } from './gesture/index';\nimport { defineSvgComponents } from './svg/index';\nimport { defineWebglComponents } from './webgl/index';\nimport { defineDepthComponents } from './depth/index';\nimport { defineLayoutComponents } from './layout/index';\nimport { definePacksComponents } from './packs/index';\nimport { adoptVariants } from './ui/variants';\nimport { canDefine } from './base';\n\nexport * from './reveal/index';\nexport * from './text/index';\nexport * from './interaction/index';\nexport * from './feedback/index';\nexport * from './background/index';\nexport * from './transitions/index';\nexport * from './physics/index';\nexport * from './cards/index';\nexport * from './click/index';\nexport * from './ui/index';\nexport * from './page/index';\nexport * from './timeline/index';\nexport * from './gesture/index';\nexport * from './svg/index';\nexport * from './webgl/index';\nexport * from './depth/index';\nexport * from './layout/index';\nexport * from './packs/index';\nexport * from './tokens/index';\n\nexport { COMPONENT_CATEGORIES } from './index-tags';\nexport type { ComponentCategory } from './index-tags';\nimport { COMPONENT_CATEGORIES, type ComponentCategory } from './index-tags';\n\nconst BY_CATEGORY: Record<ComponentCategory, () => void> = {\n reveal: defineRevealComponents,\n text: defineTextComponents,\n interaction: defineInteractionComponents,\n feedback: defineFeedbackComponents,\n background: defineBackgroundComponents,\n transitions: defineTransitionComponents,\n physics: definePhysicsComponents,\n cards: defineCardComponents,\n click: defineClickComponents,\n ui: defineUiComponents,\n page: definePageComponents,\n timeline: defineTimelineComponents,\n gesture: defineGestureComponents,\n svg: defineSvgComponents,\n webgl: defineWebglComponents,\n depth: defineDepthComponents,\n layout: defineLayoutComponents,\n packs: definePacksComponents,\n};\n\n/**\n * Register every `<usa-*>` component (or only the given categories).\n * Safe to call more than once and on the server (no-op without DOM).\n */\nexport function defineComponents(categories?: ComponentCategory[]): void {\n if (canDefine()) adoptVariants();\n (categories || (Object.keys(BY_CATEGORY) as ComponentCategory[])).forEach((c) => BY_CATEGORY[c]?.());\n}\n"],"names":["defineRevealComponents","defineTextComponents","defineInteractionComponents","defineFeedbackComponents","defineBackgroundComponents","defineTransitionComponents","definePhysicsComponents","defineCardComponents","defineClickComponents","defineUiComponents","definePageComponents","defineTimelineComponents","defineGestureComponents","defineSvgComponents","defineWebglComponents","defineDepthComponents","defineLayoutComponents","definePacksComponents","canDefine","adoptVariants"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;AAmBG;AA8CH,MAAM,WAAW,GAA0C;AACzD,IAAA,MAAM,EAAEA,wCAAsB;AAC9B,IAAA,IAAI,EAAEC,oCAAoB;AAC1B,IAAA,WAAW,EAAEC,kDAA2B;AACxC,IAAA,QAAQ,EAAEC,4CAAwB;AAClC,IAAA,UAAU,EAAEC,gDAA0B;AACtC,IAAA,WAAW,EAAEC,iDAA0B;AACvC,IAAA,OAAO,EAAEC,0CAAuB;AAChC,IAAA,KAAK,EAAEC,qCAAoB;AAC3B,IAAA,KAAK,EAAEC,sCAAqB;AAC5B,IAAA,EAAE,EAAEC,gCAAkB;AACtB,IAAA,IAAI,EAAEC,oCAAoB;AAC1B,IAAA,QAAQ,EAAEC,4CAAwB;AAClC,IAAA,OAAO,EAAEC,0CAAuB;AAChC,IAAA,GAAG,EAAEC,kCAAmB;AACxB,IAAA,KAAK,EAAEC,sCAAqB;AAC5B,IAAA,KAAK,EAAEC,sCAAqB;AAC5B,IAAA,MAAM,EAAEC,wCAAsB;AAC9B,IAAA,KAAK,EAAEC,sCAAqB;CAC7B;AAED;;;AAGG;AACG,SAAU,gBAAgB,CAAC,UAAgC,EAAA;AAC/D,IAAA,IAAIC,cAAS,EAAE;AAAE,QAAAC,sBAAa,EAAE;IAChC,CAAC,UAAU,IAAK,MAAM,CAAC,IAAI,CAAC,WAAW,CAAyB,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACtG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/components.d.cts
CHANGED
|
@@ -1757,9 +1757,9 @@ declare global {
|
|
|
1757
1757
|
*/
|
|
1758
1758
|
type TimelinePosition = number | string;
|
|
1759
1759
|
interface TimelineStepOptions {
|
|
1760
|
-
/** Duration in ms (
|
|
1761
|
-
duration?: number;
|
|
1762
|
-
/** CSS easing (
|
|
1760
|
+
/** Duration in ms or a motion token name (`'fast'`, `'slow'`…; 4.2). Default: timeline default, 600. */
|
|
1761
|
+
duration?: number | string;
|
|
1762
|
+
/** CSS easing or a motion token name (`'emphasized'`, `'spring'`…; 4.2). Default `cubic-bezier(0.22, 1, 0.36, 1)`. */
|
|
1763
1763
|
easing?: string;
|
|
1764
1764
|
/** Start position, see `TimelinePosition`. */
|
|
1765
1765
|
at?: TimelinePosition;
|
|
@@ -2401,6 +2401,78 @@ declare global {
|
|
|
2401
2401
|
}
|
|
2402
2402
|
}
|
|
2403
2403
|
|
|
2404
|
+
/**
|
|
2405
|
+
* use-scroll-animate/components/tokens — motion design tokens (4.2).
|
|
2406
|
+
*
|
|
2407
|
+
* One source of truth for durations, easings and springs: as CSS custom
|
|
2408
|
+
* properties (`--usa-duration-fast`, `--usa-easing-emphasized`,
|
|
2409
|
+
* `--usa-spring-bouncy-stiffness`…), as W3C Design Tokens JSON, and importable
|
|
2410
|
+
* from Figma Tokens (Tokens Studio) or Style Dictionary exports.
|
|
2411
|
+
*
|
|
2412
|
+
* ```ts
|
|
2413
|
+
* import { applyMotionTokens, importMotionTokens, motionToken } from 'use-scroll-animate/components/tokens';
|
|
2414
|
+
* applyMotionTokens(importMotionTokens(await (await fetch('/tokens.json')).json()));
|
|
2415
|
+
* el.animate(frames, { duration: motionToken('duration', 'slow'), easing: motionToken('easing', 'emphasized') });
|
|
2416
|
+
* ```
|
|
2417
|
+
*/
|
|
2418
|
+
interface SpringToken {
|
|
2419
|
+
stiffness: number;
|
|
2420
|
+
damping: number;
|
|
2421
|
+
mass: number;
|
|
2422
|
+
}
|
|
2423
|
+
interface MotionTokens {
|
|
2424
|
+
/** Durations in ms. */
|
|
2425
|
+
duration: Record<string, number>;
|
|
2426
|
+
/** CSS easing strings. */
|
|
2427
|
+
easing: Record<string, string>;
|
|
2428
|
+
/** Spring physics parameters. */
|
|
2429
|
+
spring: Record<string, SpringToken>;
|
|
2430
|
+
}
|
|
2431
|
+
/** The default motion scale (Material / Fluent-inspired). */
|
|
2432
|
+
declare const MOTION_TOKENS: MotionTokens;
|
|
2433
|
+
type MotionTokenGroup = keyof MotionTokens;
|
|
2434
|
+
type DeepPartialTokens = {
|
|
2435
|
+
[K in keyof MotionTokens]?: Partial<MotionTokens[K]>;
|
|
2436
|
+
};
|
|
2437
|
+
/** Merge partial tokens over a base (defaults: the built-in scale). */
|
|
2438
|
+
declare function mergeMotionTokens(partial: DeepPartialTokens, base?: MotionTokens): MotionTokens;
|
|
2439
|
+
/** The custom-property map: `{ '--usa-duration-fast': '150ms', … }`. */
|
|
2440
|
+
declare function motionTokensToVars(tokens?: MotionTokens, prefix?: string): Record<string, string>;
|
|
2441
|
+
/** A stylesheet string: `:root { --usa-duration-fast: 150ms; … }`. */
|
|
2442
|
+
declare function motionTokensToCss(tokens?: MotionTokens, selector?: string, prefix?: string): string;
|
|
2443
|
+
/** W3C Design Tokens (DTCG) JSON: `{ motion: { duration: { fast: { $type: 'duration', $value: '150ms' } } } }`. */
|
|
2444
|
+
declare function motionTokensToJSON(tokens?: MotionTokens): Record<string, unknown>;
|
|
2445
|
+
/** Parse `150ms`, `0.15s`, `150` → ms. */
|
|
2446
|
+
declare function parseDuration(v: unknown): number | undefined;
|
|
2447
|
+
/** Parse `[x1,y1,x2,y2]`, `'cubic-bezier(…)'`, `'0.2, 0, 0, 1'` or a keyword → CSS easing. */
|
|
2448
|
+
declare function parseEasing(v: unknown): string | undefined;
|
|
2449
|
+
/**
|
|
2450
|
+
* Import tokens from W3C DTCG JSON, Figma Tokens / Tokens Studio
|
|
2451
|
+
* (`{ value, type }`) or Style Dictionary (`{ value }`, nested) — anything
|
|
2452
|
+
* under a `duration` / `easing` / `spring` group (any depth, e.g.
|
|
2453
|
+
* `motion.duration.fast` or `global.animation.easing.out`), or typed leaves
|
|
2454
|
+
* (`duration`, `cubicBezier`, `transition`, `spring`). Unknown values are
|
|
2455
|
+
* skipped; the result is merged over the defaults.
|
|
2456
|
+
*/
|
|
2457
|
+
declare function importMotionTokens(json: unknown, base?: MotionTokens): MotionTokens;
|
|
2458
|
+
/** The tokens currently applied (via `applyMotionTokens`), or the defaults. */
|
|
2459
|
+
declare function getMotionTokens(): MotionTokens;
|
|
2460
|
+
/**
|
|
2461
|
+
* Write tokens as CSS custom properties on `root` (default `<html>`) and make
|
|
2462
|
+
* them the active set for `motionToken()`. Returns an undo function.
|
|
2463
|
+
*/
|
|
2464
|
+
declare function applyMotionTokens(tokens?: DeepPartialTokens | MotionTokens, root?: HTMLElement, prefix?: string): () => void;
|
|
2465
|
+
/** Look up a token: `motionToken('duration', 'fast')` → `150`; `motionToken('easing', 'emphasized')` → CSS easing. */
|
|
2466
|
+
declare function motionToken(group: 'duration', name: string): number;
|
|
2467
|
+
declare function motionToken(group: 'easing', name: string): string;
|
|
2468
|
+
declare function motionToken(group: 'spring', name: string): SpringToken;
|
|
2469
|
+
/** `var(--usa-duration-fast, 150ms)` — a CSS reference with the current value as fallback. */
|
|
2470
|
+
declare function motionVar(group: MotionTokenGroup, name: string, prop?: 'stiffness' | 'damping' | 'mass', prefix?: string): string;
|
|
2471
|
+
/** Resolve a duration that may be a token name (`'fast'`) or ms. */
|
|
2472
|
+
declare function resolveDurationToken(v: number | string | undefined, fallback: number): number;
|
|
2473
|
+
/** Resolve an easing that may be a token name (`'emphasized'`) or CSS. */
|
|
2474
|
+
declare function resolveEasingToken(v: string | undefined, fallback: string): string;
|
|
2475
|
+
|
|
2404
2476
|
/** The component categories and their default tags. */
|
|
2405
2477
|
declare const COMPONENT_CATEGORIES: {
|
|
2406
2478
|
readonly reveal: readonly ["usa-reveal", "usa-stagger", "usa-scroll-progress", "usa-scrolly"];
|
|
@@ -2430,5 +2502,5 @@ type ComponentCategory = keyof typeof COMPONENT_CATEGORIES;
|
|
|
2430
2502
|
*/
|
|
2431
2503
|
declare function defineComponents(categories?: ComponentCategory[]): void;
|
|
2432
2504
|
|
|
2433
|
-
export { AMBIENT_EFFECTS, ANIM_ICONS, BUTTON_DEFORMS, CARD_EFFECTS, CLICK_EFFECTS, COMPONENT_CATEGORIES, CURSOR_MODES, MASK_SHAPES, MORPH_ICONS, MOTION_SCALE, PACKS, PACK_PRIMITIVES, PAGE_EFFECTS, REVEAL_EFFECTS, SHADERS, SPINNER_VARIANTS, SPRING_EFFECTS, SPRING_PRESETS, TIMELINE_PRESETS, VARIANTS, adoptVariants, applyPack, autoAnimate, burst, confetti, configureComponents, countUp, createSpring, defineAccordion, defineAcrylic, defineAmbient, defineAnimIcon, defineAurora, defineAutoAnimate, defineAutoSkeleton, defineAvatarStack, defineBackToTop, defineBackgroundComponents, defineBadge, defineBlobs, defineBottomSheet, defineButton, defineCard, defineCardComponents, defineCardStack, defineCarousel3d, defineCheck, defineCheckbox, defineClick, defineClickComponents, defineComponents, defineCounter, defineCube, defineCursor, defineDepth, defineDepthComponents, defineDialog, defineDistort, defineDotNetwork, defineDoubleTap, defineDraggable, defineDraw, defineDrawer, defineFab, defineFeedbackComponents, defineFullpage, defineGestureComponents, defineGlitch, defineGradientText, defineGrain, defineGridGlow, defineHandwriting, defineHold, defineIconMorph, defineInteractionComponents, defineLayoutComponents, defineLike, defineLiquid, defineLoadingBar, defineMagnetic, defineMarquee, defineMaskReveal, defineMasonry, defineMorph, defineMotionSwitch, defineNavbar, defineOverscroll, definePack, definePacksComponents, definePageComponents, defineParticles, definePhysicsComponents, definePinchZoom, definePopover, definePress, defineProgress, definePullRefresh, defineRating, defineReveal, defineRevealComponents, defineRipple, defineScramble, defineScrollHighlight, defineScrollProgress, defineScrolly, defineShader, defineShimmerText, defineSkeleton, defineSlider, defineSpinner, defineSplash, defineSplitText, defineSpotlight, defineSpring, defineStagger, defineStickyStack, defineSvgComponents, defineSwipeable, defineTabs, defineTextComponents, defineTextRotate, defineTilt, defineTimeline, defineTimelineComponents, defineToaster, defineToggle, defineTooltip, defineTransitionComponents, defineTypewriter, defineUiComponents, defineViewSwitch, defineWaterRipple, defineWaveText, defineWebglComponents, deviceTilt, drawLines, easeOutExpo, enableMpaTransitions, flip, flipFrames, fluentPreset, flyToCart, fragmentSource, gesture, getMotionIntensity, glQuad, haptic, interpolatePath, linearEasing, loadingBar, masonryLayout, morphPath, morphTo, orientationToTilt, pageTransition, pathsCompatible, pinchScale, prefersReducedMotion, projectInertia, readScrollProgress, requestOrientationPermission, resolvePosition, resolveSpring, restoreMotionIntensity, revealKeyframes, rubberBand, scrambleFrame, scrollToTarget, setMotionIntensity, setVariant, shake, sharedTransition, smoothScroll, snapTo, spring, springEasing, springEffectKeyframes, springSamples, stepSpring, supportsLinearEasing, supportsNativeScrub, supportsOrientation, supportsViewTransitions, supportsWebGL, swipeDirection, themeTransition, timeline, toast, viewTransition };
|
|
2434
|
-
export type { AmbientEffect, AutoAnimateOptions, BurstOptions, ButtonDeform, ButtonShape, ButtonState, CardEffect, ClickEffect, ComponentCategory, ComponentsConfig, ConfettiOptions, CursorMode, DialogVariant, FlipOptions, FluentPresetOptions, GLQuad, GestureHandlers, GestureOptions, MorphOptions, MotionIntensity, PackContext, PackName, PageEffect, PageTransitionOptions, PanState, PinchState, Placement, PressState, RevealEffect, ScrubHandle, ScrubOptions, SharedOptions, SmoothScrollOptions, SpinnerVariant, SpringConfig, SpringEffect, SpringInput, SpringPreset, SpringValue, SpringValueOptions, SwipeDirection, SwipeState, TiltReading, Timeline, TimelineOptions, TimelinePosition, TimelineStepOptions, ToastHandle, ToastOptions, ToastType, UsaAccordionElement, UsaAcrylicElement, UsaAmbientElement, UsaAnimIconElement, UsaAuroraElement, UsaAutoAnimateElement, UsaAutoSkeletonElement, UsaAvatarStackElement, UsaBackToTopElement, UsaBadgeElement, UsaBlobsElement, UsaBottomSheetElement, UsaButtonElement, UsaCardElement, UsaCardStackElement, UsaCarousel3dElement, UsaCheckElement, UsaCheckboxElement, UsaClickElement, UsaCounterElement, UsaCubeElement, UsaCursorElement, UsaDepthElement, UsaDialogElement, UsaDotNetworkElement, UsaDoubleTapElement, UsaDraggableElement, UsaDrawElement, UsaDrawerElement, UsaElement, UsaFabElement, UsaFullpageElement, UsaGLElement, UsaGlitchElement, UsaGradientTextElement, UsaGrainElement, UsaGridGlowElement, UsaHandwritingElement, UsaHoldElement, UsaIconMorphElement, UsaLikeElement, UsaLoadingBarElement, UsaMagneticElement, UsaMarqueeElement, UsaMaskRevealElement, UsaMasonryElement, UsaMorphElement, UsaMotionSwitchElement, UsaNavbarElement, UsaOverscrollElement, UsaPackElement, UsaParticlesElement, UsaPinchZoomElement, UsaPopoverElement, UsaPressElement, UsaProgressElement, UsaPullRefreshElement, UsaRatingElement, UsaRevealElement, UsaRippleElement, UsaScrambleElement, UsaScrollHighlightElement, UsaScrollProgressElement, UsaScrollyElement, UsaShimmerTextElement, UsaSkeletonElement, UsaSliderElement, UsaSpinnerElement, UsaSplashElement, UsaSplitTextElement, UsaSpotlightElement, UsaSpringElement, UsaStaggerElement, UsaStickyStackElement, UsaSwipeableElement, UsaTabsElement, UsaTextRotateElement, UsaTiltElement, UsaTimelineElement, UsaToasterElement, UsaToggleElement, UsaTooltipElement, UsaTypewriterElement, UsaViewSwitchElement, UsaWaterRippleElement, UsaWaveTextElement, Variant, ViewTransitionOptions };
|
|
2505
|
+
export { AMBIENT_EFFECTS, ANIM_ICONS, BUTTON_DEFORMS, CARD_EFFECTS, CLICK_EFFECTS, COMPONENT_CATEGORIES, CURSOR_MODES, MASK_SHAPES, MORPH_ICONS, MOTION_SCALE, MOTION_TOKENS, PACKS, PACK_PRIMITIVES, PAGE_EFFECTS, REVEAL_EFFECTS, SHADERS, SPINNER_VARIANTS, SPRING_EFFECTS, SPRING_PRESETS, TIMELINE_PRESETS, VARIANTS, adoptVariants, applyMotionTokens, applyPack, autoAnimate, burst, confetti, configureComponents, countUp, createSpring, defineAccordion, defineAcrylic, defineAmbient, defineAnimIcon, defineAurora, defineAutoAnimate, defineAutoSkeleton, defineAvatarStack, defineBackToTop, defineBackgroundComponents, defineBadge, defineBlobs, defineBottomSheet, defineButton, defineCard, defineCardComponents, defineCardStack, defineCarousel3d, defineCheck, defineCheckbox, defineClick, defineClickComponents, defineComponents, defineCounter, defineCube, defineCursor, defineDepth, defineDepthComponents, defineDialog, defineDistort, defineDotNetwork, defineDoubleTap, defineDraggable, defineDraw, defineDrawer, defineFab, defineFeedbackComponents, defineFullpage, defineGestureComponents, defineGlitch, defineGradientText, defineGrain, defineGridGlow, defineHandwriting, defineHold, defineIconMorph, defineInteractionComponents, defineLayoutComponents, defineLike, defineLiquid, defineLoadingBar, defineMagnetic, defineMarquee, defineMaskReveal, defineMasonry, defineMorph, defineMotionSwitch, defineNavbar, defineOverscroll, definePack, definePacksComponents, definePageComponents, defineParticles, definePhysicsComponents, definePinchZoom, definePopover, definePress, defineProgress, definePullRefresh, defineRating, defineReveal, defineRevealComponents, defineRipple, defineScramble, defineScrollHighlight, defineScrollProgress, defineScrolly, defineShader, defineShimmerText, defineSkeleton, defineSlider, defineSpinner, defineSplash, defineSplitText, defineSpotlight, defineSpring, defineStagger, defineStickyStack, defineSvgComponents, defineSwipeable, defineTabs, defineTextComponents, defineTextRotate, defineTilt, defineTimeline, defineTimelineComponents, defineToaster, defineToggle, defineTooltip, defineTransitionComponents, defineTypewriter, defineUiComponents, defineViewSwitch, defineWaterRipple, defineWaveText, defineWebglComponents, deviceTilt, drawLines, easeOutExpo, enableMpaTransitions, flip, flipFrames, fluentPreset, flyToCart, fragmentSource, gesture, getMotionIntensity, getMotionTokens, glQuad, haptic, importMotionTokens, interpolatePath, linearEasing, loadingBar, masonryLayout, mergeMotionTokens, morphPath, morphTo, motionToken, motionTokensToCss, motionTokensToJSON, motionTokensToVars, motionVar, orientationToTilt, pageTransition, parseDuration, parseEasing, pathsCompatible, pinchScale, prefersReducedMotion, projectInertia, readScrollProgress, requestOrientationPermission, resolveDurationToken, resolveEasingToken, resolvePosition, resolveSpring, restoreMotionIntensity, revealKeyframes, rubberBand, scrambleFrame, scrollToTarget, setMotionIntensity, setVariant, shake, sharedTransition, smoothScroll, snapTo, spring, springEasing, springEffectKeyframes, springSamples, stepSpring, supportsLinearEasing, supportsNativeScrub, supportsOrientation, supportsViewTransitions, supportsWebGL, swipeDirection, themeTransition, timeline, toast, viewTransition };
|
|
2506
|
+
export type { AmbientEffect, AutoAnimateOptions, BurstOptions, ButtonDeform, ButtonShape, ButtonState, CardEffect, ClickEffect, ComponentCategory, ComponentsConfig, ConfettiOptions, CursorMode, DeepPartialTokens, DialogVariant, FlipOptions, FluentPresetOptions, GLQuad, GestureHandlers, GestureOptions, MorphOptions, MotionIntensity, MotionTokenGroup, MotionTokens, PackContext, PackName, PageEffect, PageTransitionOptions, PanState, PinchState, Placement, PressState, RevealEffect, ScrubHandle, ScrubOptions, SharedOptions, SmoothScrollOptions, SpinnerVariant, SpringConfig, SpringEffect, SpringInput, SpringPreset, SpringToken, SpringValue, SpringValueOptions, SwipeDirection, SwipeState, TiltReading, Timeline, TimelineOptions, TimelinePosition, TimelineStepOptions, ToastHandle, ToastOptions, ToastType, UsaAccordionElement, UsaAcrylicElement, UsaAmbientElement, UsaAnimIconElement, UsaAuroraElement, UsaAutoAnimateElement, UsaAutoSkeletonElement, UsaAvatarStackElement, UsaBackToTopElement, UsaBadgeElement, UsaBlobsElement, UsaBottomSheetElement, UsaButtonElement, UsaCardElement, UsaCardStackElement, UsaCarousel3dElement, UsaCheckElement, UsaCheckboxElement, UsaClickElement, UsaCounterElement, UsaCubeElement, UsaCursorElement, UsaDepthElement, UsaDialogElement, UsaDotNetworkElement, UsaDoubleTapElement, UsaDraggableElement, UsaDrawElement, UsaDrawerElement, UsaElement, UsaFabElement, UsaFullpageElement, UsaGLElement, UsaGlitchElement, UsaGradientTextElement, UsaGrainElement, UsaGridGlowElement, UsaHandwritingElement, UsaHoldElement, UsaIconMorphElement, UsaLikeElement, UsaLoadingBarElement, UsaMagneticElement, UsaMarqueeElement, UsaMaskRevealElement, UsaMasonryElement, UsaMorphElement, UsaMotionSwitchElement, UsaNavbarElement, UsaOverscrollElement, UsaPackElement, UsaParticlesElement, UsaPinchZoomElement, UsaPopoverElement, UsaPressElement, UsaProgressElement, UsaPullRefreshElement, UsaRatingElement, UsaRevealElement, UsaRippleElement, UsaScrambleElement, UsaScrollHighlightElement, UsaScrollProgressElement, UsaScrollyElement, UsaShimmerTextElement, UsaSkeletonElement, UsaSliderElement, UsaSpinnerElement, UsaSplashElement, UsaSplitTextElement, UsaSpotlightElement, UsaSpringElement, UsaStaggerElement, UsaStickyStackElement, UsaSwipeableElement, UsaTabsElement, UsaTextRotateElement, UsaTiltElement, UsaTimelineElement, UsaToasterElement, UsaToggleElement, UsaTooltipElement, UsaTypewriterElement, UsaViewSwitchElement, UsaWaterRippleElement, UsaWaveTextElement, Variant, ViewTransitionOptions };
|