@kushagradhawan/kookie-ui 0.1.21 → 0.1.23

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.
Files changed (97) hide show
  1. package/components.css +854 -582
  2. package/dist/cjs/components/_internal/base-checkbox.props.d.ts +2 -2
  3. package/dist/cjs/components/_internal/base-checkbox.props.js +1 -1
  4. package/dist/cjs/components/_internal/base-checkbox.props.js.map +2 -2
  5. package/dist/cjs/components/_internal/base-radio.props.d.ts +2 -2
  6. package/dist/cjs/components/_internal/base-radio.props.js +1 -1
  7. package/dist/cjs/components/_internal/base-radio.props.js.map +2 -2
  8. package/dist/cjs/components/checkbox-cards.d.ts.map +1 -1
  9. package/dist/cjs/components/checkbox-cards.js +1 -1
  10. package/dist/cjs/components/checkbox-cards.js.map +3 -3
  11. package/dist/cjs/components/checkbox-cards.props.d.ts +5 -0
  12. package/dist/cjs/components/checkbox-cards.props.d.ts.map +1 -1
  13. package/dist/cjs/components/checkbox-cards.props.js +1 -1
  14. package/dist/cjs/components/checkbox-cards.props.js.map +3 -3
  15. package/dist/cjs/components/checkbox-group.props.d.ts +2 -2
  16. package/dist/cjs/components/image.d.ts.map +1 -1
  17. package/dist/cjs/components/image.js +1 -1
  18. package/dist/cjs/components/image.js.map +2 -2
  19. package/dist/cjs/components/radio-cards.d.ts.map +1 -1
  20. package/dist/cjs/components/radio-cards.js +1 -1
  21. package/dist/cjs/components/radio-cards.js.map +3 -3
  22. package/dist/cjs/components/radio-cards.props.d.ts +5 -0
  23. package/dist/cjs/components/radio-cards.props.d.ts.map +1 -1
  24. package/dist/cjs/components/radio-cards.props.js +1 -1
  25. package/dist/cjs/components/radio-cards.props.js.map +3 -3
  26. package/dist/cjs/components/radio-group.props.d.ts +2 -2
  27. package/dist/cjs/components/radio-group.props.js +1 -1
  28. package/dist/cjs/components/radio-group.props.js.map +2 -2
  29. package/dist/cjs/components/segmented-control.props.d.ts +5 -0
  30. package/dist/cjs/components/segmented-control.props.d.ts.map +1 -1
  31. package/dist/cjs/components/segmented-control.props.js +1 -1
  32. package/dist/cjs/components/segmented-control.props.js.map +2 -2
  33. package/dist/esm/components/_internal/base-checkbox.props.d.ts +2 -2
  34. package/dist/esm/components/_internal/base-checkbox.props.js +1 -1
  35. package/dist/esm/components/_internal/base-checkbox.props.js.map +2 -2
  36. package/dist/esm/components/_internal/base-radio.props.d.ts +2 -2
  37. package/dist/esm/components/_internal/base-radio.props.js +1 -1
  38. package/dist/esm/components/_internal/base-radio.props.js.map +2 -2
  39. package/dist/esm/components/checkbox-cards.d.ts.map +1 -1
  40. package/dist/esm/components/checkbox-cards.js +1 -1
  41. package/dist/esm/components/checkbox-cards.js.map +3 -3
  42. package/dist/esm/components/checkbox-cards.props.d.ts +5 -0
  43. package/dist/esm/components/checkbox-cards.props.d.ts.map +1 -1
  44. package/dist/esm/components/checkbox-cards.props.js +1 -1
  45. package/dist/esm/components/checkbox-cards.props.js.map +3 -3
  46. package/dist/esm/components/checkbox-group.props.d.ts +2 -2
  47. package/dist/esm/components/image.d.ts.map +1 -1
  48. package/dist/esm/components/image.js +1 -1
  49. package/dist/esm/components/image.js.map +2 -2
  50. package/dist/esm/components/radio-cards.d.ts.map +1 -1
  51. package/dist/esm/components/radio-cards.js +1 -1
  52. package/dist/esm/components/radio-cards.js.map +3 -3
  53. package/dist/esm/components/radio-cards.props.d.ts +5 -0
  54. package/dist/esm/components/radio-cards.props.d.ts.map +1 -1
  55. package/dist/esm/components/radio-cards.props.js +1 -1
  56. package/dist/esm/components/radio-cards.props.js.map +3 -3
  57. package/dist/esm/components/radio-group.props.d.ts +2 -2
  58. package/dist/esm/components/radio-group.props.js +1 -1
  59. package/dist/esm/components/radio-group.props.js.map +2 -2
  60. package/dist/esm/components/segmented-control.props.d.ts +5 -0
  61. package/dist/esm/components/segmented-control.props.d.ts.map +1 -1
  62. package/dist/esm/components/segmented-control.props.js +1 -1
  63. package/dist/esm/components/segmented-control.props.js.map +2 -2
  64. package/package.json +1 -1
  65. package/src/components/_internal/base-button.css +16 -7
  66. package/src/components/_internal/base-card.css +31 -0
  67. package/src/components/_internal/base-checkbox.css +84 -24
  68. package/src/components/_internal/base-checkbox.props.ts +2 -2
  69. package/src/components/_internal/base-radio.css +68 -12
  70. package/src/components/_internal/base-radio.props.ts +2 -2
  71. package/src/components/_internal/base-tab-list.css +6 -1
  72. package/src/components/animations.css +4 -4
  73. package/src/components/avatar.css +10 -0
  74. package/src/components/badge.css +1 -1
  75. package/src/components/card.css +115 -63
  76. package/src/components/checkbox-cards.css +36 -14
  77. package/src/components/checkbox-cards.props.tsx +3 -0
  78. package/src/components/checkbox-cards.tsx +13 -6
  79. package/src/components/image.css +33 -9
  80. package/src/components/image.tsx +2 -1
  81. package/src/components/progress.css +29 -27
  82. package/src/components/radio-cards.css +33 -9
  83. package/src/components/radio-cards.props.tsx +3 -0
  84. package/src/components/radio-cards.tsx +10 -5
  85. package/src/components/radio-group.props.tsx +2 -2
  86. package/src/components/segmented-control.css +71 -26
  87. package/src/components/segmented-control.props.tsx +6 -0
  88. package/src/components/select.css +42 -32
  89. package/src/components/slider.css +19 -19
  90. package/src/components/switch.css +6 -6
  91. package/src/components/text-area.css +31 -11
  92. package/src/components/text-field.css +31 -11
  93. package/src/styles/tokens/constants.css +141 -20
  94. package/src/styles/tokens/transition.css +27 -8
  95. package/styles.css +948 -604
  96. package/tokens/base.css +14 -6
  97. package/tokens.css +94 -22
@@ -378,11 +378,11 @@
378
378
 
379
379
  /* 3D inset effect - more pronounced but still subtle */
380
380
  /* prettier-ignore */
381
- box-shadow:
382
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a3),
383
- inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a1),
384
- inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a2),
385
- 0 0 0 var(--classic-border-width) var(--gray-a5);
381
+ box-shadow:
382
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a4),
383
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a2),
384
+ inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a3),
385
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
386
386
 
387
387
  /* Theme-level translucent override */
388
388
  :where([data-panel-background='translucent']) & {
@@ -404,11 +404,11 @@
404
404
  @media (hover: hover) {
405
405
  &:where(:hover:not(:has(.rt-TextFieldInput:focus))) {
406
406
  /* prettier-ignore */
407
- box-shadow:
408
- inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
409
- inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
410
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
411
- 0 0 0 var(--classic-border-width) var(--gray-a6);
407
+ box-shadow:
408
+ inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a3),
409
+ inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a2),
410
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a3),
411
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
412
412
  }
413
413
  }
414
414
 
@@ -416,7 +416,7 @@
416
416
  &:where(:has(.rt-TextFieldInput:focus)) {
417
417
  /* prettier-ignore */
418
418
  box-shadow:
419
- inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a1),
419
+ inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a2),
420
420
  0 0 0 2px var(--focus-8);
421
421
  }
422
422
 
@@ -578,6 +578,11 @@
578
578
  backdrop-filter: var(--backdrop-filter-components);
579
579
  --backdrop-filter-components: blur(var(--backdrop-blur-components));
580
580
  }
581
+
582
+ /* Disable backdrop-filter when inside elements that already have backdrop-filter */
583
+ :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
584
+ backdrop-filter: none !important;
585
+ }
581
586
  }
582
587
  }
583
588
 
@@ -602,6 +607,11 @@
602
607
  background-color: var(--accent-a2);
603
608
  backdrop-filter: var(--backdrop-filter-components);
604
609
  }
610
+
611
+ /* Disable backdrop-filter when inside elements that already have backdrop-filter */
612
+ :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
613
+ backdrop-filter: none !important;
614
+ }
605
615
  }
606
616
 
607
617
  /* prettier-ignore */
@@ -680,6 +690,11 @@
680
690
  backdrop-filter: var(--backdrop-filter-components);
681
691
  --backdrop-filter-components: blur(var(--backdrop-blur-components));
682
692
  }
693
+
694
+ /* Disable backdrop-filter when inside elements that already have backdrop-filter */
695
+ :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
696
+ backdrop-filter: none !important;
697
+ }
683
698
  }
684
699
  }
685
700
 
@@ -708,6 +723,11 @@
708
723
  box-shadow: inset 0 0 0 var(--text-field-border-width) var(--accent-a8);
709
724
  backdrop-filter: var(--backdrop-filter-components);
710
725
  }
726
+
727
+ /* Disable backdrop-filter when inside elements that already have backdrop-filter */
728
+ :where(.rt-PopoverContent, .rt-BaseDialogContent, .rt-BaseMenuContent, .rt-DropdownMenuContent, .rt-ContextMenuContent, .rt-AlertDialogContent, .rt-HoverCardContent, .rt-TooltipContent, .rt-Card) & {
729
+ backdrop-filter: none !important;
730
+ }
711
731
  }
712
732
 
713
733
  /* prettier-ignore */
@@ -6,14 +6,14 @@
6
6
 
7
7
  :where(.radix-themes) {
8
8
  /* Backdrop blur constants */
9
- --backdrop-blur-panel: 40px;
10
- --backdrop-blur-components: 8px;
11
- --backdrop-blur-heavy: 16px;
12
- --backdrop-blur-light: 8px;
13
- --backdrop-blur-dialog: 16px;
9
+ --backdrop-blur-panel: 48px;
10
+ --backdrop-blur-components: 16px;
11
+ --backdrop-blur-heavy: 48px;
12
+ --backdrop-blur-light: 16px;
13
+ --backdrop-blur-dialog: 32px;
14
14
 
15
15
  /* Panel background opacity constants */
16
- --panel-opacity-light: 0.25;
16
+ --panel-opacity-light: 0.75;
17
17
  --panel-opacity-heavy: 0.75;
18
18
  --surface-opacity-light: 0.25;
19
19
  --surface-opacity-heavy: 0.75;
@@ -33,21 +33,76 @@
33
33
 
34
34
  /* Standard border width constants */
35
35
  --border-width-standard: 1px;
36
-
37
- /* Classic variant 3D effect constants */
38
- --classic-elevation-offset: -0.03em;
39
- --classic-active-padding-offset-1: 1px;
40
- --classic-active-padding-offset-2: 2px;
41
- --classic-shadow-blur-small: 0.17em;
42
- --classic-shadow-blur-medium: 0.25em;
43
- --classic-shadow-blur-large: 0.5em;
44
- --classic-border-width: 0.05em;
45
- --classic-border-width-thick: 0.075em;
36
+ --border-width-inset: 1px;
37
+ --border-width-none: 0px;
38
+
39
+ /* Classic variant 3D effect constants - softened for smaller controls */
40
+ --classic-elevation-offset: -0.02em;
41
+ --classic-active-padding-offset-1: 0.5px;
42
+ --classic-active-padding-offset-2: 1px;
43
+ --classic-shadow-blur-small: 0.15em;
44
+ --classic-shadow-blur-medium: 0.2em;
45
+ --classic-shadow-blur-large: 0.4em;
46
+ --classic-border-width: 0.03em;
47
+ --classic-border-width-thick: 0.05em;
46
48
  --classic-border-width-thin: 0.1em;
47
- --classic-shadow-offset-y: 0.08em;
49
+ --classic-shadow-offset-y: 0.04em;
48
50
  --classic-shadow-offset-negative: -0.1em;
49
51
  --classic-word-spacing: -0.1em;
50
-
52
+ --classic-inset-shadow-offset: 0.5px;
53
+ --classic-inset-shadow-offset-negative: -0.5px;
54
+ --classic-inset-shadow-blur: 0.5px;
55
+
56
+ /* Classic variant division factors for different intensities */
57
+ --classic-elevation-factor-subtle: 3; /* For select: calc(var(--classic-elevation-offset) / 3) */
58
+ --classic-shadow-factor-light: 1.5; /* For lighter shadows: calc(var(--classic-shadow-blur-small) / 1.5) */
59
+ --classic-shadow-factor-medium: 2; /* For medium shadows: calc(var(--classic-shadow-blur-small) / 2) */
60
+ --classic-shadow-factor-heavy: 3; /* For heavy shadows: calc(var(--classic-shadow-blur-small) / 3) */
61
+ --classic-shadow-factor-subtle: 4; /* For subtle shadows: calc(var(--classic-shadow-blur-medium) / 4) */
62
+ --classic-border-factor-half: 2; /* For half borders: calc(var(--classic-border-width) / 2) */
63
+ --classic-border-factor-light: 1.5; /* For light borders: calc(var(--classic-border-width) / 1.5) */
64
+ --classic-border-multiplier-double: 2; /* For double borders: calc(var(--classic-border-width) * 2) */
65
+ --classic-shadow-medium-factor-third: 3; /* For medium shadow thirds: calc(var(--classic-shadow-blur-medium) / 3) */
66
+
67
+ /* Classic inset shadow tokens - based on text field pattern for consistent 3D effects */
68
+ /* Light mode inset shadows - creates sophisticated multi-layer depth */
69
+ --classic-inset-shadow-light:
70
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-light)) var(--gray-a3),
71
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a1),
72
+ inset 0 calc(var(--classic-border-width) * var(--classic-border-multiplier-double)) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-medium-factor-third)) var(--gray-a2),
73
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
74
+
75
+ /* Hover state - slightly reduced inset effect */
76
+ --classic-inset-shadow-light-hover:
77
+ inset 0 calc(var(--classic-border-width) / var(--classic-border-factor-light)) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-medium)) var(--gray-a2),
78
+ inset 0 calc(-1 * var(--classic-border-width) / var(--classic-border-factor-light)) var(--gray-a1),
79
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-factor-subtle)) var(--gray-a2),
80
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
81
+
82
+ /* Focus state - minimal inset with accent ring */
83
+ --classic-inset-shadow-light-focus:
84
+ inset 0 calc(var(--classic-border-width) / var(--classic-border-factor-half)) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-heavy)) var(--gray-a1),
85
+ 0 0 0 var(--focus-outline-width) var(--focus-8);
86
+
87
+ /* Darker inset shadow tokens - for form controls and smaller components */
88
+ /* These provide more pronounced depth for better visual hierarchy */
89
+ --classic-inset-shadow-dark:
90
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-light)) var(--gray-a4),
91
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a2),
92
+ inset 0 calc(var(--classic-border-width) * var(--classic-border-multiplier-double)) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-medium-factor-third)) var(--gray-a3),
93
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
94
+
95
+ /* Hover state - slightly reduced inset effect with darker shadows */
96
+ --classic-inset-shadow-dark-hover:
97
+ inset 0 calc(var(--classic-border-width) / var(--classic-border-factor-light)) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-medium)) var(--gray-a3),
98
+ inset 0 calc(-1 * var(--classic-border-width) / var(--classic-border-factor-light)) var(--gray-a2),
99
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-factor-subtle)) var(--gray-a3),
100
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
101
+
102
+ /* Focus state - minimal inset with accent ring and darker base */
103
+ --classic-inset-shadow-dark-focus:
104
+ inset 0 calc(var(--classic-border-width) / var(--classic-border-factor-half)) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-heavy)) var(--gray-a2),
105
+ 0 0 0 var(--focus-outline-width) var(--focus-8);
51
106
 
52
107
  /* Color mixing percentages */
53
108
  --color-mix-percentage-light: 25%;
@@ -68,12 +123,72 @@
68
123
  --content-icon-size-4: var(--space-5); /* 20px */
69
124
 
70
125
  /* Indicator icon size constants (for checkboxes, radio, sub-triggers) */
71
- --indicator-icon-size-1: calc(8px * var(--scaling)); /* ~8px */
72
- --indicator-icon-size-2: calc(10px * var(--scaling)); /* ~10px */
126
+ --indicator-icon-size-1: calc(9px * var(--scaling)); /* ~9px - used by checkbox size 1 */
127
+ --indicator-icon-size-2: calc(10px * var(--scaling)); /* ~10px - used by checkbox size 2 */
128
+ --indicator-icon-size-3: calc(12px * var(--scaling)); /* ~12px - used by checkbox size 3 */
129
+
130
+ /* Select-specific indicator icon sizes */
131
+ --select-indicator-icon-size-1: calc(8px * var(--scaling)); /* ~8px - used by select size 1 */
132
+ --select-indicator-icon-size-2: calc(10px * var(--scaling)); /* ~10px - used by select size 2 */
133
+ --select-indicator-icon-size-3: calc(10px * var(--scaling)); /* ~10px - used by select size 3 */
134
+
135
+ /* Select component specific constants */
136
+ --select-item-indicator-width-factor: 1.2; /* Division factor for indicator width calculation */
137
+
138
+ /* Separator constants */
139
+ --separator-height-thin: 1px;
140
+
141
+ /* Progress component constants */
142
+ --progress-default-duration: 5s;
143
+ --progress-animation-delay-start: 5s;
144
+ --progress-animation-delay-shine: 7.5s;
145
+ --progress-animation-duration-fade: 2.5s;
146
+ --progress-animation-duration-pulse: 5s;
147
+ --progress-shine-width-multiplier: 4; /* width: 400% -> calc(100% * 4) */
148
+ --progress-gradient-stop-start: 25%;
149
+ --progress-gradient-stop-end: 75%;
150
+ --progress-border-radius-factor: 3; /* For calc(var(--progress-height) / 3) */
151
+
152
+ /* Progress animation scale values */
153
+ --progress-scale-initial: 0.01;
154
+ --progress-scale-step-1: 0.1; /* 20% */
155
+ --progress-scale-step-2: 0.6; /* 30% */
156
+ --progress-scale-step-3: 0.9; /* 40-50% */
157
+ --progress-scale-final: 1; /* 100% */
158
+
159
+ /* Progress animation timing percentages */
160
+ --progress-timing-step-1: 20%;
161
+ --progress-timing-step-2: 30%;
162
+ --progress-timing-step-3: 40%;
163
+ --progress-timing-step-4: 50%;
164
+
165
+ /* Slider component constants */
166
+ --slider-thumb-hit-area-multiplier: 3; /* For calc(var(--slider-thumb-size) * 3) */
167
+ --slider-thumb-inset-factor: 0.25; /* For calc(-0.25 * var(--slider-track-size)) */
168
+ --slider-track-radius-factor: 3; /* For calc(var(--slider-track-size) / 3) */
169
+ --slider-focus-ring-inner: 3px;
170
+ --slider-focus-ring-outer: 5px;
171
+ --slider-classic-inset-offset: 1.5px;
172
+
173
+ /* Size multipliers */
174
+ --size-multiplier-small: 0.75;
175
+ --size-multiplier-large: 1.25;
176
+
177
+ /* Opacity constants */
178
+ --opacity-disabled: 0.5;
179
+ --opacity-soft-variant: 0.75;
180
+ --opacity-high-contrast: 0.8;
181
+
182
+ /* Positioning constants */
183
+ --position-center: 50%;
184
+ --position-full: 100%;
185
+ --position-negative-full: -100%;
186
+ --position-zero: 0%;
73
187
 
74
188
  /* Transition constants */
75
189
  --transition-backdrop-filter: backdrop-filter var(--duration-2) var(--ease-1);
76
190
  --transition-background-blur: background-color var(--duration-2) var(--ease-1), backdrop-filter var(--duration-2) var(--ease-1);
191
+ --transition-transform-progress: transform 120ms;
77
192
 
78
193
  /* Spacing multipliers for component sizing */
79
194
  --spacing-multiplier-small: 0.5;
@@ -115,4 +230,10 @@
115
230
  --scale-active: 0.98;
116
231
  --scale-pressed: 0.96;
117
232
  --scale-normal: 1;
233
+
234
+ /* Nested backdrop-filter detection constants */
235
+ --backdrop-filter-nested-disabled: none;
236
+ --backdrop-filter-nested-enabled: var(--backdrop-filter-components);
237
+ --backdrop-filter-nested-panel: var(--backdrop-filter-panel);
238
+ --backdrop-filter-nested-dialog: var(--backdrop-filter-dialog);
118
239
  }
@@ -1,10 +1,10 @@
1
1
  .radix-themes {
2
2
  /* Duration tokens */
3
- --duration-1: 100ms; /* Micro interactions */
4
- --duration-2: 150ms; /* Fast transitions */
5
- --duration-3: 200ms; /* Standard transitions */
6
- --duration-4: 300ms; /* Slower transitions */
7
- --duration-5: 500ms; /* Slow animations */
3
+ --duration-1: 50ms; /* Micro interactions */
4
+ --duration-2: 100ms; /* Fast transitions */
5
+ --duration-3: 150ms; /* Standard transitions */
6
+ --duration-4: 200ms; /* Slower transitions */
7
+ --duration-5: 300ms; /* Slow animations */
8
8
 
9
9
  /* Easing tokens */
10
10
  --ease-1: ease-out; /* Fast start, slow end */
@@ -41,15 +41,30 @@
41
41
  backdrop-filter var(--duration-2) var(--ease-1), top var(--duration-2) var(--ease-1);
42
42
 
43
43
  --transition-tabs:
44
- color var(--duration-2) var(--ease-1), background-color var(--duration-2) var(--ease-1),
45
- font-weight var(--duration-3) var(--ease-2), letter-spacing var(--duration-3) var(--ease-2),
46
- word-spacing var(--duration-3) var(--ease-2), transform var(--duration-2) var(--ease-1);
44
+ color var(--duration-1) var(--ease-1), background-color var(--duration-1) var(--ease-1),
45
+ font-weight var(--duration-2) var(--ease-2), letter-spacing var(--duration-2) var(--ease-2),
46
+ word-spacing var(--duration-2) var(--ease-2), transform var(--duration-1) var(--ease-1);
47
+
48
+ --transition-segmented-control:
49
+ opacity var(--duration-2) var(--ease-1), transform var(--duration-2) var(--ease-3),
50
+ background-color var(--duration-2) var(--ease-1);
47
51
 
48
52
  --transition-menu:
49
53
  background var(--duration-1) var(--ease-1), color var(--duration-2) var(--ease-1),
50
54
  backdrop-filter var(--duration-2) var(--ease-1);
51
55
 
56
+ --transition-checkbox:
57
+ background-color var(--duration-2) var(--ease-1), box-shadow var(--duration-2) var(--ease-1),
58
+ color var(--duration-1) var(--ease-1);
59
+
60
+ --transition-radio:
61
+ background-color var(--duration-2) var(--ease-1), box-shadow var(--duration-2) var(--ease-1),
62
+ color var(--duration-1) var(--ease-1);
63
+
52
64
  --transition-focus: outline var(--duration-2) var(--ease-1), outline-offset var(--duration-2) var(--ease-1);
65
+
66
+ /* Progress component transition */
67
+ --transition-progress: transform var(--duration-2) var(--ease-1);
53
68
  }
54
69
 
55
70
  /* Respect user preference for reduced motion */
@@ -69,7 +84,11 @@
69
84
  --transition-badge: none;
70
85
  --transition-card: none;
71
86
  --transition-tabs: none;
87
+ --transition-segmented-control: none;
72
88
  --transition-menu: none;
89
+ --transition-checkbox: none;
90
+ --transition-radio: none;
73
91
  --transition-focus: none;
92
+ --transition-progress: none;
74
93
  }
75
94
  }