@tac-ui/tokens 0.1.0 → 1.0.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/LICENSE +21 -0
- package/dist/{chunk-T3JFXTDW.mjs → chunk-7I7QJ2NP.mjs} +262 -273
- package/dist/chunk-GLCF64BD.mjs +15 -0
- package/dist/index.d.mts +174 -785
- package/dist/index.d.ts +174 -785
- package/dist/index.js +291 -314
- package/dist/index.mjs +30 -56
- package/dist/motion-DrXQxG6N.d.mts +668 -0
- package/dist/motion-DrXQxG6N.d.ts +668 -0
- package/dist/native/index.d.mts +31 -0
- package/dist/native/index.d.ts +31 -0
- package/dist/native/index.js +826 -0
- package/dist/native/index.mjs +142 -0
- package/dist/web/css-variables.d.mts +3 -2
- package/dist/web/css-variables.d.ts +3 -2
- package/dist/web/css-variables.js +220 -229
- package/dist/web/css-variables.mjs +2 -1
- package/native/package.json +5 -0
- package/package.json +20 -10
|
@@ -0,0 +1,668 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component-specific tokens — Tac UI brand.
|
|
3
|
+
* Increased padding for airy feel, harmonious radii.
|
|
4
|
+
*/
|
|
5
|
+
declare const component: {
|
|
6
|
+
readonly button: {
|
|
7
|
+
readonly sm: {
|
|
8
|
+
readonly height: 32;
|
|
9
|
+
readonly paddingX: 16;
|
|
10
|
+
readonly paddingY: 6;
|
|
11
|
+
readonly fontSize: 13;
|
|
12
|
+
readonly borderRadius: 8;
|
|
13
|
+
readonly iconSize: 16;
|
|
14
|
+
};
|
|
15
|
+
readonly md: {
|
|
16
|
+
readonly height: 44;
|
|
17
|
+
readonly paddingX: 20;
|
|
18
|
+
readonly paddingY: 10;
|
|
19
|
+
readonly fontSize: 15;
|
|
20
|
+
readonly borderRadius: 12;
|
|
21
|
+
readonly iconSize: 18;
|
|
22
|
+
};
|
|
23
|
+
readonly lg: {
|
|
24
|
+
readonly height: 50;
|
|
25
|
+
readonly paddingX: 28;
|
|
26
|
+
readonly paddingY: 14;
|
|
27
|
+
readonly fontSize: 17;
|
|
28
|
+
readonly borderRadius: 14;
|
|
29
|
+
readonly iconSize: 20;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
readonly input: {
|
|
33
|
+
readonly height: 44;
|
|
34
|
+
readonly paddingX: 16;
|
|
35
|
+
readonly paddingY: 12;
|
|
36
|
+
readonly fontSize: 15;
|
|
37
|
+
readonly borderRadius: 12;
|
|
38
|
+
readonly iconSize: 18;
|
|
39
|
+
readonly iconPadding: 42;
|
|
40
|
+
};
|
|
41
|
+
readonly card: {
|
|
42
|
+
readonly padding: 24;
|
|
43
|
+
readonly gap: 16;
|
|
44
|
+
readonly borderRadius: 16;
|
|
45
|
+
readonly titleSize: 17;
|
|
46
|
+
readonly bodySize: 15;
|
|
47
|
+
};
|
|
48
|
+
readonly badge: {
|
|
49
|
+
readonly paddingX: 12;
|
|
50
|
+
readonly paddingY: 6;
|
|
51
|
+
readonly fontSize: 12;
|
|
52
|
+
readonly fontWeight: 500;
|
|
53
|
+
readonly borderRadius: 9999;
|
|
54
|
+
};
|
|
55
|
+
readonly checkbox: {
|
|
56
|
+
readonly wrapperPaddingX: 16;
|
|
57
|
+
readonly wrapperPaddingY: 10;
|
|
58
|
+
readonly wrapperRadius: 10;
|
|
59
|
+
readonly gap: 12;
|
|
60
|
+
readonly size: 22;
|
|
61
|
+
readonly borderRadius: 6;
|
|
62
|
+
readonly borderWidth: 1.5;
|
|
63
|
+
readonly iconSize: 14;
|
|
64
|
+
readonly labelSize: 15;
|
|
65
|
+
};
|
|
66
|
+
readonly radio: {
|
|
67
|
+
readonly wrapperPaddingX: 16;
|
|
68
|
+
readonly wrapperPaddingY: 10;
|
|
69
|
+
readonly wrapperRadius: 10;
|
|
70
|
+
readonly gap: 12;
|
|
71
|
+
readonly size: 22;
|
|
72
|
+
readonly borderWidth: 1.5;
|
|
73
|
+
readonly checkedBorderWidth: 6;
|
|
74
|
+
readonly labelSize: 15;
|
|
75
|
+
};
|
|
76
|
+
readonly switch: {
|
|
77
|
+
readonly width: 51;
|
|
78
|
+
readonly height: 31;
|
|
79
|
+
readonly thumbSize: 27;
|
|
80
|
+
readonly thumbOffset: 2;
|
|
81
|
+
readonly thumbTranslateOn: 22;
|
|
82
|
+
readonly thumbTranslateOff: 2;
|
|
83
|
+
};
|
|
84
|
+
readonly chip: {
|
|
85
|
+
readonly paddingX: 16;
|
|
86
|
+
readonly paddingY: 8;
|
|
87
|
+
readonly fontSize: 13;
|
|
88
|
+
readonly borderRadius: 9999;
|
|
89
|
+
readonly iconSize: 14;
|
|
90
|
+
readonly iconPaddingX: 12;
|
|
91
|
+
};
|
|
92
|
+
readonly tabs: {
|
|
93
|
+
readonly primary: {
|
|
94
|
+
readonly paddingX: 20;
|
|
95
|
+
readonly paddingY: 12;
|
|
96
|
+
readonly fontSize: 14;
|
|
97
|
+
readonly indicatorHeight: 2;
|
|
98
|
+
};
|
|
99
|
+
readonly secondary: {
|
|
100
|
+
readonly paddingX: 20;
|
|
101
|
+
readonly paddingY: 8;
|
|
102
|
+
readonly fontSize: 13;
|
|
103
|
+
readonly containerPadding: 4;
|
|
104
|
+
readonly containerRadius: 10;
|
|
105
|
+
readonly itemRadius: 8;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
readonly slider: {
|
|
109
|
+
readonly trackHeight: 4;
|
|
110
|
+
readonly thumbSize: 28;
|
|
111
|
+
readonly thumbBorderWidth: 0;
|
|
112
|
+
};
|
|
113
|
+
readonly tooltip: {
|
|
114
|
+
readonly simple: {
|
|
115
|
+
readonly paddingX: 14;
|
|
116
|
+
readonly paddingY: 8;
|
|
117
|
+
readonly fontSize: 13;
|
|
118
|
+
readonly borderRadius: 10;
|
|
119
|
+
};
|
|
120
|
+
readonly rich: {
|
|
121
|
+
readonly paddingX: 16;
|
|
122
|
+
readonly paddingY: 10;
|
|
123
|
+
readonly maxWidth: 240;
|
|
124
|
+
readonly borderRadius: 10;
|
|
125
|
+
};
|
|
126
|
+
readonly delay: 150;
|
|
127
|
+
};
|
|
128
|
+
readonly avatar: {
|
|
129
|
+
readonly sm: {
|
|
130
|
+
readonly size: 28;
|
|
131
|
+
readonly fontSize: 11;
|
|
132
|
+
};
|
|
133
|
+
readonly md: {
|
|
134
|
+
readonly size: 36;
|
|
135
|
+
readonly fontSize: 14;
|
|
136
|
+
};
|
|
137
|
+
readonly lg: {
|
|
138
|
+
readonly size: 48;
|
|
139
|
+
readonly fontSize: 18;
|
|
140
|
+
};
|
|
141
|
+
readonly xl: {
|
|
142
|
+
readonly size: 64;
|
|
143
|
+
readonly fontSize: 24;
|
|
144
|
+
};
|
|
145
|
+
readonly statusDot: 10;
|
|
146
|
+
readonly statusBorder: 2;
|
|
147
|
+
};
|
|
148
|
+
readonly divider: {
|
|
149
|
+
readonly thickness: 1;
|
|
150
|
+
readonly thickThickness: 1;
|
|
151
|
+
readonly insetMargin: 64;
|
|
152
|
+
readonly labelSize: 12;
|
|
153
|
+
};
|
|
154
|
+
readonly progress: {
|
|
155
|
+
readonly linear: {
|
|
156
|
+
readonly height: 6;
|
|
157
|
+
readonly borderRadius: 9999;
|
|
158
|
+
};
|
|
159
|
+
readonly circular: {
|
|
160
|
+
readonly strokeWidth: 4;
|
|
161
|
+
readonly textSize: 14;
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
readonly snackbar: {
|
|
165
|
+
readonly paddingTop: 16;
|
|
166
|
+
readonly paddingRight: 18;
|
|
167
|
+
readonly paddingBottom: 16;
|
|
168
|
+
readonly paddingLeft: 22;
|
|
169
|
+
readonly borderRadius: 12;
|
|
170
|
+
readonly gap: 12;
|
|
171
|
+
readonly iconSize: 18;
|
|
172
|
+
readonly messageSize: 14;
|
|
173
|
+
readonly actionPaddingX: 14;
|
|
174
|
+
readonly actionPaddingY: 6;
|
|
175
|
+
readonly actionRadius: 8;
|
|
176
|
+
readonly actionSize: 13;
|
|
177
|
+
};
|
|
178
|
+
readonly dialog: {
|
|
179
|
+
readonly width: 320;
|
|
180
|
+
readonly borderRadius: 14;
|
|
181
|
+
readonly headerPaddingX: 24;
|
|
182
|
+
readonly headerPaddingY: 20;
|
|
183
|
+
readonly footerPaddingX: 24;
|
|
184
|
+
readonly footerPaddingY: 20;
|
|
185
|
+
readonly titleSize: 17;
|
|
186
|
+
readonly descSize: 13;
|
|
187
|
+
readonly footerGap: 8;
|
|
188
|
+
};
|
|
189
|
+
readonly animatedToggle: {
|
|
190
|
+
readonly size: 40;
|
|
191
|
+
readonly borderRadius: 10;
|
|
192
|
+
readonly iconSize: 20;
|
|
193
|
+
};
|
|
194
|
+
};
|
|
195
|
+
|
|
196
|
+
declare const motion: {
|
|
197
|
+
readonly duration: {
|
|
198
|
+
readonly instant: 80;
|
|
199
|
+
readonly fast: 150;
|
|
200
|
+
readonly normal: 220;
|
|
201
|
+
readonly slow: 320;
|
|
202
|
+
readonly complex: 450;
|
|
203
|
+
};
|
|
204
|
+
readonly easing: {
|
|
205
|
+
/** Slight overshoot with smooth natural deceleration. */
|
|
206
|
+
readonly standard: "cubic-bezier(0.25, 0.1, 0.25, 1)";
|
|
207
|
+
/** Exit easing — fast acceleration, abrupt departure. */
|
|
208
|
+
readonly easeIn: "cubic-bezier(0.42, 0, 1, 1)";
|
|
209
|
+
/** Entrance easing — gentle deceleration without overshoot. */
|
|
210
|
+
readonly easeOut: "cubic-bezier(0, 0, 0.58, 1)";
|
|
211
|
+
/** Symmetric ease — smooth in both directions. */
|
|
212
|
+
readonly easeInOut: "cubic-bezier(0.65, 0, 0.35, 1)";
|
|
213
|
+
/** Restrained overshoot — for toggles, switches, confirmatory feedback. */
|
|
214
|
+
readonly bounce: "cubic-bezier(0.34, 1.3, 0.64, 1)";
|
|
215
|
+
/** Subtle spring feel — deliberate physical presence. */
|
|
216
|
+
readonly spring: "cubic-bezier(0.22, 1.1, 0.36, 1)";
|
|
217
|
+
/** Subtle rubber-band — elastic resistance with quick snap back. */
|
|
218
|
+
readonly elastic: "cubic-bezier(0.68, -0.1, 0.265, 1.1)";
|
|
219
|
+
};
|
|
220
|
+
/** Framer Motion spring presets — tuned with higher damping for natural deceleration. */
|
|
221
|
+
readonly spring: {
|
|
222
|
+
/** Quick interactive feedback — subtle and responsive. */
|
|
223
|
+
readonly snappy: {
|
|
224
|
+
readonly type: "spring";
|
|
225
|
+
readonly stiffness: 260;
|
|
226
|
+
readonly damping: 32;
|
|
227
|
+
};
|
|
228
|
+
/** Smooth state changes — gentle spring resolution. */
|
|
229
|
+
readonly gentle: {
|
|
230
|
+
readonly type: "spring";
|
|
231
|
+
readonly stiffness: 180;
|
|
232
|
+
readonly damping: 30;
|
|
233
|
+
};
|
|
234
|
+
/** Toggle/switch feel — restrained with minimal bounce. */
|
|
235
|
+
readonly bouncy: {
|
|
236
|
+
readonly type: "spring";
|
|
237
|
+
readonly stiffness: 260;
|
|
238
|
+
readonly damping: 30;
|
|
239
|
+
};
|
|
240
|
+
/** Large layout shifts — deliberate mass with controlled deceleration. */
|
|
241
|
+
readonly slow: {
|
|
242
|
+
readonly type: "spring";
|
|
243
|
+
readonly stiffness: 140;
|
|
244
|
+
readonly damping: 28;
|
|
245
|
+
};
|
|
246
|
+
/** Press/release with life — elastic resistance, mass gives it weight. */
|
|
247
|
+
readonly elastic: {
|
|
248
|
+
readonly type: "spring";
|
|
249
|
+
readonly stiffness: 220;
|
|
250
|
+
readonly damping: 28;
|
|
251
|
+
readonly mass: 0.8;
|
|
252
|
+
};
|
|
253
|
+
/** Elements appearing — spring resolves cleanly with organic arrival. */
|
|
254
|
+
readonly entrance: {
|
|
255
|
+
readonly type: "spring";
|
|
256
|
+
readonly stiffness: 180;
|
|
257
|
+
readonly damping: 28;
|
|
258
|
+
readonly mass: 0.9;
|
|
259
|
+
};
|
|
260
|
+
};
|
|
261
|
+
/** Mass-differentiated spring configs — tuned higher damping for smooth deceleration. */
|
|
262
|
+
readonly tacSpring: {
|
|
263
|
+
readonly default: {
|
|
264
|
+
readonly type: "spring";
|
|
265
|
+
readonly stiffness: 300;
|
|
266
|
+
readonly damping: 35;
|
|
267
|
+
readonly mass: 1;
|
|
268
|
+
};
|
|
269
|
+
readonly light: {
|
|
270
|
+
readonly type: "spring";
|
|
271
|
+
readonly stiffness: 350;
|
|
272
|
+
readonly damping: 35;
|
|
273
|
+
readonly mass: 0.5;
|
|
274
|
+
};
|
|
275
|
+
readonly heavy: {
|
|
276
|
+
readonly type: "spring";
|
|
277
|
+
readonly stiffness: 250;
|
|
278
|
+
readonly damping: 38;
|
|
279
|
+
readonly mass: 1.5;
|
|
280
|
+
};
|
|
281
|
+
readonly magnetic: {
|
|
282
|
+
readonly type: "spring";
|
|
283
|
+
readonly stiffness: 400;
|
|
284
|
+
readonly damping: 40;
|
|
285
|
+
readonly mass: 0.8;
|
|
286
|
+
};
|
|
287
|
+
readonly entrance: {
|
|
288
|
+
readonly type: "spring";
|
|
289
|
+
readonly stiffness: 220;
|
|
290
|
+
readonly damping: 32;
|
|
291
|
+
readonly mass: 1.2;
|
|
292
|
+
};
|
|
293
|
+
};
|
|
294
|
+
/** Standard animation keyframe presets for reuse across components. */
|
|
295
|
+
readonly keyframes: {
|
|
296
|
+
readonly fadeIn: {
|
|
297
|
+
readonly from: {
|
|
298
|
+
readonly opacity: "0";
|
|
299
|
+
};
|
|
300
|
+
readonly to: {
|
|
301
|
+
readonly opacity: "1";
|
|
302
|
+
};
|
|
303
|
+
};
|
|
304
|
+
readonly fadeOut: {
|
|
305
|
+
readonly from: {
|
|
306
|
+
readonly opacity: "1";
|
|
307
|
+
};
|
|
308
|
+
readonly to: {
|
|
309
|
+
readonly opacity: "0";
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
/** Blur entrance — element fades in from blurry with subtle upward spring motion. */
|
|
313
|
+
readonly blurFadeIn: {
|
|
314
|
+
readonly from: {
|
|
315
|
+
readonly opacity: "0";
|
|
316
|
+
readonly filter: "blur(4px)";
|
|
317
|
+
readonly transform: "translateY(4px)";
|
|
318
|
+
};
|
|
319
|
+
readonly to: {
|
|
320
|
+
readonly opacity: "1";
|
|
321
|
+
readonly filter: "blur(0px)";
|
|
322
|
+
readonly transform: "translateY(0)";
|
|
323
|
+
};
|
|
324
|
+
};
|
|
325
|
+
/** Blur scale entrance — deblurs while gently scaling up from slight compression. */
|
|
326
|
+
readonly blurScaleIn: {
|
|
327
|
+
readonly from: {
|
|
328
|
+
readonly opacity: "0";
|
|
329
|
+
readonly filter: "blur(3px)";
|
|
330
|
+
readonly transform: "scale(0.98)";
|
|
331
|
+
};
|
|
332
|
+
readonly to: {
|
|
333
|
+
readonly opacity: "1";
|
|
334
|
+
readonly filter: "blur(0px)";
|
|
335
|
+
readonly transform: "scale(1)";
|
|
336
|
+
};
|
|
337
|
+
};
|
|
338
|
+
/** Slide entrance from below — element springs up from offset position. */
|
|
339
|
+
readonly slideInUp: {
|
|
340
|
+
readonly from: {
|
|
341
|
+
readonly opacity: "0";
|
|
342
|
+
readonly transform: "translateY(5px)";
|
|
343
|
+
};
|
|
344
|
+
readonly to: {
|
|
345
|
+
readonly opacity: "1";
|
|
346
|
+
readonly transform: "translateY(0)";
|
|
347
|
+
};
|
|
348
|
+
};
|
|
349
|
+
/** Slide entrance from above — element springs down from offset position. */
|
|
350
|
+
readonly slideInDown: {
|
|
351
|
+
readonly from: {
|
|
352
|
+
readonly opacity: "0";
|
|
353
|
+
readonly transform: "translateY(-5px)";
|
|
354
|
+
};
|
|
355
|
+
readonly to: {
|
|
356
|
+
readonly opacity: "1";
|
|
357
|
+
readonly transform: "translateY(0)";
|
|
358
|
+
};
|
|
359
|
+
};
|
|
360
|
+
/** Slide entrance from left — element springs in from offset. */
|
|
361
|
+
readonly slideInLeft: {
|
|
362
|
+
readonly from: {
|
|
363
|
+
readonly opacity: "0";
|
|
364
|
+
readonly transform: "translateX(-5px)";
|
|
365
|
+
};
|
|
366
|
+
readonly to: {
|
|
367
|
+
readonly opacity: "1";
|
|
368
|
+
readonly transform: "translateX(0)";
|
|
369
|
+
};
|
|
370
|
+
};
|
|
371
|
+
/** Slide entrance from right — element springs in from offset. */
|
|
372
|
+
readonly slideInRight: {
|
|
373
|
+
readonly from: {
|
|
374
|
+
readonly opacity: "0";
|
|
375
|
+
readonly transform: "translateX(5px)";
|
|
376
|
+
};
|
|
377
|
+
readonly to: {
|
|
378
|
+
readonly opacity: "1";
|
|
379
|
+
readonly transform: "translateX(0)";
|
|
380
|
+
};
|
|
381
|
+
};
|
|
382
|
+
/** Scale entrance — element inflates from slight compression. */
|
|
383
|
+
readonly scaleIn: {
|
|
384
|
+
readonly from: {
|
|
385
|
+
readonly opacity: "0";
|
|
386
|
+
readonly transform: "scale(0.98)";
|
|
387
|
+
};
|
|
388
|
+
readonly to: {
|
|
389
|
+
readonly opacity: "1";
|
|
390
|
+
readonly transform: "scale(1)";
|
|
391
|
+
};
|
|
392
|
+
};
|
|
393
|
+
readonly scaleOut: {
|
|
394
|
+
readonly from: {
|
|
395
|
+
readonly opacity: "1";
|
|
396
|
+
readonly transform: "scale(1)";
|
|
397
|
+
};
|
|
398
|
+
readonly to: {
|
|
399
|
+
readonly opacity: "0";
|
|
400
|
+
readonly transform: "scale(0.98)";
|
|
401
|
+
};
|
|
402
|
+
};
|
|
403
|
+
/** Zoom entrance — element arrives from meaningful distance, not just nearby. */
|
|
404
|
+
readonly zoomIn: {
|
|
405
|
+
readonly from: {
|
|
406
|
+
readonly opacity: "0";
|
|
407
|
+
readonly transform: "scale(0.92)";
|
|
408
|
+
};
|
|
409
|
+
readonly to: {
|
|
410
|
+
readonly opacity: "1";
|
|
411
|
+
readonly transform: "scale(1)";
|
|
412
|
+
};
|
|
413
|
+
};
|
|
414
|
+
/** Press feedback — subtle scale to confirm tap/click with physical weight. */
|
|
415
|
+
readonly pressDown: {
|
|
416
|
+
readonly from: {
|
|
417
|
+
readonly transform: "scale(1)";
|
|
418
|
+
};
|
|
419
|
+
readonly to: {
|
|
420
|
+
readonly transform: "scale(0.98)";
|
|
421
|
+
};
|
|
422
|
+
};
|
|
423
|
+
/** Press keyframes — clean squish held at destination. */
|
|
424
|
+
readonly elasticPress: {
|
|
425
|
+
readonly '0%': {
|
|
426
|
+
readonly transform: "scale(1)";
|
|
427
|
+
};
|
|
428
|
+
readonly '50%': {
|
|
429
|
+
readonly transform: "scale(0.98)";
|
|
430
|
+
};
|
|
431
|
+
readonly '100%': {
|
|
432
|
+
readonly transform: "scale(0.98)";
|
|
433
|
+
};
|
|
434
|
+
};
|
|
435
|
+
/** Release keyframes — spring overshoots slightly then resolves to rest. */
|
|
436
|
+
readonly elasticRelease: {
|
|
437
|
+
readonly '0%': {
|
|
438
|
+
readonly transform: "scale(0.98)";
|
|
439
|
+
};
|
|
440
|
+
readonly '50%': {
|
|
441
|
+
readonly transform: "scale(1.005)";
|
|
442
|
+
};
|
|
443
|
+
readonly '100%': {
|
|
444
|
+
readonly transform: "scale(1)";
|
|
445
|
+
};
|
|
446
|
+
};
|
|
447
|
+
/** Lift — subtle elevation shift on hover, element has mass. */
|
|
448
|
+
readonly liftUp: {
|
|
449
|
+
readonly from: {
|
|
450
|
+
readonly transform: "translateY(0)";
|
|
451
|
+
};
|
|
452
|
+
readonly to: {
|
|
453
|
+
readonly transform: "translateY(-1px)";
|
|
454
|
+
};
|
|
455
|
+
};
|
|
456
|
+
/** Glow pulse — ambient glow to indicate active state. */
|
|
457
|
+
readonly glowPulse: {
|
|
458
|
+
readonly '0%, 100%': {
|
|
459
|
+
readonly boxShadow: "0 0 0 0 color-mix(in srgb, var(--point) 0%, transparent)";
|
|
460
|
+
};
|
|
461
|
+
readonly '50%': {
|
|
462
|
+
readonly boxShadow: "0 0 12px 2px color-mix(in srgb, var(--point) 20%, transparent)";
|
|
463
|
+
};
|
|
464
|
+
};
|
|
465
|
+
readonly shimmer: {
|
|
466
|
+
readonly '0%': {
|
|
467
|
+
readonly backgroundPosition: "-200% 0";
|
|
468
|
+
};
|
|
469
|
+
readonly '100%': {
|
|
470
|
+
readonly backgroundPosition: "200% 0";
|
|
471
|
+
};
|
|
472
|
+
};
|
|
473
|
+
readonly gradientShimmer: {
|
|
474
|
+
readonly '0%': {
|
|
475
|
+
readonly backgroundPosition: "0% 50%";
|
|
476
|
+
};
|
|
477
|
+
readonly '50%': {
|
|
478
|
+
readonly backgroundPosition: "100% 50%";
|
|
479
|
+
};
|
|
480
|
+
readonly '100%': {
|
|
481
|
+
readonly backgroundPosition: "0% 50%";
|
|
482
|
+
};
|
|
483
|
+
};
|
|
484
|
+
/** Gradient glow — soft glow for decorative emphasis. */
|
|
485
|
+
readonly gradientGlow: {
|
|
486
|
+
readonly '0%, 100%': {
|
|
487
|
+
readonly boxShadow: "0 0 0 0 color-mix(in srgb, var(--point) 0%, transparent)";
|
|
488
|
+
};
|
|
489
|
+
readonly '50%': {
|
|
490
|
+
readonly boxShadow: "0 0 16px 3px color-mix(in srgb, var(--point) 15%, transparent)";
|
|
491
|
+
};
|
|
492
|
+
};
|
|
493
|
+
/** Spotlight pulse — radial glow that breathes gently. */
|
|
494
|
+
readonly spotlightPulse: {
|
|
495
|
+
readonly '0%, 100%': {
|
|
496
|
+
readonly opacity: "0";
|
|
497
|
+
};
|
|
498
|
+
readonly '50%': {
|
|
499
|
+
readonly opacity: "1";
|
|
500
|
+
};
|
|
501
|
+
};
|
|
502
|
+
readonly spin: {
|
|
503
|
+
readonly from: {
|
|
504
|
+
readonly transform: "rotate(0deg)";
|
|
505
|
+
};
|
|
506
|
+
readonly to: {
|
|
507
|
+
readonly transform: "rotate(360deg)";
|
|
508
|
+
};
|
|
509
|
+
};
|
|
510
|
+
readonly pulse: {
|
|
511
|
+
readonly '0%, 100%': {
|
|
512
|
+
readonly opacity: "1";
|
|
513
|
+
};
|
|
514
|
+
readonly '50%': {
|
|
515
|
+
readonly opacity: "0.5";
|
|
516
|
+
};
|
|
517
|
+
};
|
|
518
|
+
readonly bounce: {
|
|
519
|
+
readonly '0%, 100%': {
|
|
520
|
+
readonly transform: "translateY(0)";
|
|
521
|
+
};
|
|
522
|
+
readonly '50%': {
|
|
523
|
+
readonly transform: "translateY(-2px)";
|
|
524
|
+
};
|
|
525
|
+
};
|
|
526
|
+
/** Float — gentle hovering motion with spring-like rhythm. */
|
|
527
|
+
readonly float: {
|
|
528
|
+
readonly '0%, 100%': {
|
|
529
|
+
readonly transform: "translateY(0)";
|
|
530
|
+
};
|
|
531
|
+
readonly '50%': {
|
|
532
|
+
readonly transform: "translateY(-2px)";
|
|
533
|
+
};
|
|
534
|
+
};
|
|
535
|
+
};
|
|
536
|
+
/** Glow animation configuration for border glow effects. */
|
|
537
|
+
readonly glow: {
|
|
538
|
+
/** Rotation speed in seconds for the border glow sweep. */
|
|
539
|
+
readonly rotationSpeed: {
|
|
540
|
+
readonly idle: 3;
|
|
541
|
+
readonly focused: 1.5;
|
|
542
|
+
};
|
|
543
|
+
/** Blur radius in px applied to the glow trail. */
|
|
544
|
+
readonly blur: {
|
|
545
|
+
readonly idle: 8;
|
|
546
|
+
readonly focused: 16;
|
|
547
|
+
};
|
|
548
|
+
/** Opacity of the glow sweep. */
|
|
549
|
+
readonly opacity: {
|
|
550
|
+
readonly idle: 0.3;
|
|
551
|
+
readonly focused: 0.6;
|
|
552
|
+
};
|
|
553
|
+
/** Conic gradient color stop percentages. */
|
|
554
|
+
readonly spread: {
|
|
555
|
+
readonly transparent: 25;
|
|
556
|
+
readonly start: 40;
|
|
557
|
+
readonly peak: 50;
|
|
558
|
+
readonly end: 60;
|
|
559
|
+
readonly fadeOut: 75;
|
|
560
|
+
};
|
|
561
|
+
};
|
|
562
|
+
/** Layout morphing spring config — for FLIP transitions between components. */
|
|
563
|
+
readonly morph: {
|
|
564
|
+
/** Spring config for morph transitions — references tacSpring.default. */
|
|
565
|
+
readonly spring: {
|
|
566
|
+
readonly type: "spring";
|
|
567
|
+
readonly stiffness: 300;
|
|
568
|
+
readonly damping: 35;
|
|
569
|
+
readonly mass: 1;
|
|
570
|
+
};
|
|
571
|
+
/** Faster variant for small elements. */
|
|
572
|
+
readonly springFast: {
|
|
573
|
+
readonly type: "spring";
|
|
574
|
+
readonly stiffness: 450;
|
|
575
|
+
readonly damping: 35;
|
|
576
|
+
readonly mass: 0.8;
|
|
577
|
+
};
|
|
578
|
+
};
|
|
579
|
+
};
|
|
580
|
+
/** Standalone export of Tac spring presets for direct consumption in packages/web. */
|
|
581
|
+
declare const tacSpring: {
|
|
582
|
+
readonly default: {
|
|
583
|
+
readonly type: "spring";
|
|
584
|
+
readonly stiffness: 300;
|
|
585
|
+
readonly damping: 35;
|
|
586
|
+
readonly mass: 1;
|
|
587
|
+
};
|
|
588
|
+
readonly light: {
|
|
589
|
+
readonly type: "spring";
|
|
590
|
+
readonly stiffness: 350;
|
|
591
|
+
readonly damping: 35;
|
|
592
|
+
readonly mass: 0.5;
|
|
593
|
+
};
|
|
594
|
+
readonly heavy: {
|
|
595
|
+
readonly type: "spring";
|
|
596
|
+
readonly stiffness: 250;
|
|
597
|
+
readonly damping: 38;
|
|
598
|
+
readonly mass: 1.5;
|
|
599
|
+
};
|
|
600
|
+
readonly magnetic: {
|
|
601
|
+
readonly type: "spring";
|
|
602
|
+
readonly stiffness: 400;
|
|
603
|
+
readonly damping: 40;
|
|
604
|
+
readonly mass: 0.8;
|
|
605
|
+
};
|
|
606
|
+
readonly entrance: {
|
|
607
|
+
readonly type: "spring";
|
|
608
|
+
readonly stiffness: 220;
|
|
609
|
+
readonly damping: 32;
|
|
610
|
+
readonly mass: 1.2;
|
|
611
|
+
};
|
|
612
|
+
};
|
|
613
|
+
/** Platform-agnostic spring configs — usable by both Framer Motion and reanimated.
|
|
614
|
+
* Merges motion.spring + motion.tacSpring presets without the `type` field. */
|
|
615
|
+
declare const springConfigs: {
|
|
616
|
+
readonly default: {
|
|
617
|
+
readonly stiffness: 300;
|
|
618
|
+
readonly damping: 35;
|
|
619
|
+
readonly mass: 1;
|
|
620
|
+
};
|
|
621
|
+
readonly snappy: {
|
|
622
|
+
readonly stiffness: 260;
|
|
623
|
+
readonly damping: 32;
|
|
624
|
+
readonly mass: 1;
|
|
625
|
+
};
|
|
626
|
+
readonly gentle: {
|
|
627
|
+
readonly stiffness: 180;
|
|
628
|
+
readonly damping: 30;
|
|
629
|
+
readonly mass: 1;
|
|
630
|
+
};
|
|
631
|
+
readonly bouncy: {
|
|
632
|
+
readonly stiffness: 260;
|
|
633
|
+
readonly damping: 30;
|
|
634
|
+
readonly mass: 1;
|
|
635
|
+
};
|
|
636
|
+
readonly magnetic: {
|
|
637
|
+
readonly stiffness: 400;
|
|
638
|
+
readonly damping: 40;
|
|
639
|
+
readonly mass: 0.8;
|
|
640
|
+
};
|
|
641
|
+
readonly entrance: {
|
|
642
|
+
readonly stiffness: 180;
|
|
643
|
+
readonly damping: 28;
|
|
644
|
+
readonly mass: 0.9;
|
|
645
|
+
};
|
|
646
|
+
readonly light: {
|
|
647
|
+
readonly stiffness: 350;
|
|
648
|
+
readonly damping: 35;
|
|
649
|
+
readonly mass: 0.5;
|
|
650
|
+
};
|
|
651
|
+
readonly heavy: {
|
|
652
|
+
readonly stiffness: 250;
|
|
653
|
+
readonly damping: 38;
|
|
654
|
+
readonly mass: 1.5;
|
|
655
|
+
};
|
|
656
|
+
readonly elastic: {
|
|
657
|
+
readonly stiffness: 220;
|
|
658
|
+
readonly damping: 28;
|
|
659
|
+
readonly mass: 0.8;
|
|
660
|
+
};
|
|
661
|
+
readonly slow: {
|
|
662
|
+
readonly stiffness: 140;
|
|
663
|
+
readonly damping: 28;
|
|
664
|
+
readonly mass: 1;
|
|
665
|
+
};
|
|
666
|
+
};
|
|
667
|
+
|
|
668
|
+
export { component as c, motion as m, springConfigs as s, tacSpring as t };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ThemeMode, TacTheme } from '@tac-ui/shared';
|
|
2
|
+
export { c as componentTokens, m as motionTokens, s as springConfigs, t as tacSpring } from '../motion-DrXQxG6N.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Native shadow objects for React Native (shadow style + elevation).
|
|
6
|
+
* React Native cannot use CSS box-shadow strings.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface NativeShadow {
|
|
10
|
+
shadowColor: string;
|
|
11
|
+
shadowOffset: {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
shadowOpacity: number;
|
|
16
|
+
shadowRadius: number;
|
|
17
|
+
elevation: number;
|
|
18
|
+
}
|
|
19
|
+
declare const nativeShadows: Record<ThemeMode, Record<string, NativeShadow>>;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Build a complete TacTheme object for React Native consumption.
|
|
23
|
+
* Same shape as web's buildTheme() but without CSS variable indirection.
|
|
24
|
+
*/
|
|
25
|
+
declare function buildNativeTheme(mode: ThemeMode): TacTheme;
|
|
26
|
+
/** Pre-built light theme */
|
|
27
|
+
declare const lightTheme: TacTheme;
|
|
28
|
+
/** Pre-built dark theme */
|
|
29
|
+
declare const darkTheme: TacTheme;
|
|
30
|
+
|
|
31
|
+
export { type NativeShadow, buildNativeTheme, darkTheme, lightTheme, nativeShadows };
|