@kushagradhawan/kookie-ui 0.1.22 → 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 (94) hide show
  1. package/components.css +748 -612
  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 +1 -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/badge.css +1 -1
  72. package/src/components/card.css +23 -60
  73. package/src/components/checkbox-cards.css +36 -14
  74. package/src/components/checkbox-cards.props.tsx +3 -0
  75. package/src/components/checkbox-cards.tsx +13 -6
  76. package/src/components/image.css +33 -9
  77. package/src/components/image.tsx +2 -1
  78. package/src/components/progress.css +29 -27
  79. package/src/components/radio-cards.css +33 -9
  80. package/src/components/radio-cards.props.tsx +3 -0
  81. package/src/components/radio-cards.tsx +10 -5
  82. package/src/components/radio-group.props.tsx +2 -2
  83. package/src/components/segmented-control.css +71 -26
  84. package/src/components/segmented-control.props.tsx +6 -0
  85. package/src/components/select.css +32 -32
  86. package/src/components/slider.css +19 -19
  87. package/src/components/switch.css +6 -6
  88. package/src/components/text-area.css +11 -11
  89. package/src/components/text-field.css +11 -11
  90. package/src/styles/tokens/constants.css +130 -15
  91. package/src/styles/tokens/transition.css +19 -0
  92. package/styles.css +827 -623
  93. package/tokens/base.css +8 -0
  94. package/tokens.css +79 -11
@@ -14,8 +14,8 @@
14
14
  text-align: start;
15
15
 
16
16
  &:where(:focus-visible) {
17
- outline: 2px solid var(--focus-8);
18
- outline-offset: -1px;
17
+ outline: var(--focus-outline-width) solid var(--focus-8);
18
+ outline-offset: var(--focus-outline-offset-inset);
19
19
  }
20
20
 
21
21
  /* Reduced motion support */
@@ -95,7 +95,7 @@
95
95
  }
96
96
 
97
97
  .rt-SelectSeparator {
98
- height: 1px;
98
+ height: var(--separator-height-thin);
99
99
  margin-top: var(--space-2);
100
100
  margin-bottom: var(--space-2);
101
101
  margin-left: var(--select-item-indicator-width);
@@ -218,7 +218,7 @@
218
218
  &:where(.rt-r-size-1) {
219
219
  --select-content-padding: var(--space-1);
220
220
  --select-item-height: var(--space-5);
221
- --select-item-indicator-width: calc(var(--space-5) / 1.2);
221
+ --select-item-indicator-width: calc(var(--space-5) / var(--select-item-indicator-width-factor));
222
222
  --select-separator-margin-right: var(--space-2);
223
223
  border-radius: var(--radius-3);
224
224
 
@@ -234,8 +234,8 @@
234
234
  border-radius: var(--radius-1);
235
235
  }
236
236
  & :where(.rt-SelectItemIndicatorIcon) {
237
- width: calc(8px * var(--scaling));
238
- height: calc(8px * var(--scaling));
237
+ width: var(--select-indicator-icon-size-1);
238
+ height: var(--select-indicator-icon-size-1);
239
239
  }
240
240
  }
241
241
  &:where(.rt-r-size-2, .rt-r-size-3) {
@@ -261,8 +261,8 @@
261
261
  letter-spacing: var(--letter-spacing-2);
262
262
  }
263
263
  & :where(.rt-SelectItemIndicatorIcon) {
264
- width: calc(10px * var(--scaling));
265
- height: calc(10px * var(--scaling));
264
+ width: var(--select-indicator-icon-size-2);
265
+ height: var(--select-indicator-icon-size-2);
266
266
  }
267
267
  }
268
268
  &:where(.rt-r-size-3) {
@@ -271,8 +271,8 @@
271
271
  letter-spacing: var(--letter-spacing-3);
272
272
  }
273
273
  & :where(.rt-SelectItemIndicatorIcon) {
274
- width: calc(10px * var(--scaling));
275
- height: calc(10px * var(--scaling));
274
+ width: var(--select-indicator-icon-size-3);
275
+ height: var(--select-indicator-icon-size-3);
276
276
  }
277
277
  }
278
278
  }
@@ -286,7 +286,7 @@
286
286
 
287
287
  /* Outline variant - neutral with gray border (previously surface) */
288
288
  .rt-SelectTrigger:where(.rt-variant-outline) {
289
- --select-trigger-border-width: 1px;
289
+ --select-trigger-border-width: var(--border-width-standard);
290
290
 
291
291
  background-color: var(--color-surface);
292
292
  color: var(--gray-12);
@@ -331,22 +331,22 @@
331
331
 
332
332
  /* Classic variant - 3D inset form input */
333
333
  .rt-SelectTrigger:where(.rt-variant-classic) {
334
- --select-trigger-border-width: 0px;
334
+ --select-trigger-border-width: var(--border-width-none);
335
335
 
336
336
  position: relative;
337
337
  /* Subtle inset positioning */
338
- top: calc(var(--classic-elevation-offset) / 3); /* More pronounced than before */
338
+ top: calc(var(--classic-elevation-offset) / var(--classic-elevation-factor-subtle));
339
339
 
340
340
  background-color: var(--color-surface);
341
341
  color: var(--gray-12);
342
342
 
343
343
  /* 3D inset effect - more pronounced but still subtle */
344
344
  /* prettier-ignore */
345
- box-shadow:
346
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a3),
347
- inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a1),
348
- inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a2),
349
- 0 0 0 var(--classic-border-width) var(--gray-a5);
345
+ box-shadow:
346
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-light)) var(--gray-a4),
347
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a2),
348
+ 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),
349
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
350
350
 
351
351
  /* Theme-level translucent override */
352
352
  :where([data-panel-background='translucent']) & {
@@ -368,19 +368,19 @@
368
368
  @media (hover: hover) {
369
369
  &:where(:hover:not(:focus-visible)) {
370
370
  /* prettier-ignore */
371
- box-shadow:
372
- inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
373
- inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
374
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
375
- 0 0 0 var(--classic-border-width) var(--gray-a6);
371
+ box-shadow:
372
+ 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),
373
+ inset 0 calc(-1 * var(--classic-border-width) / var(--classic-border-factor-light)) var(--gray-a2),
374
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-factor-subtle)) var(--gray-a3),
375
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
376
376
  }
377
377
  }
378
378
  &:where([data-state='open']) {
379
379
  /* prettier-ignore */
380
380
  box-shadow:
381
- inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
382
- inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
383
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
381
+ 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),
382
+ inset 0 calc(-1 * var(--classic-border-width) / var(--classic-border-factor-light)) var(--gray-a2),
383
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / var(--classic-shadow-factor-subtle)) var(--gray-a3),
384
384
  0 0 0 var(--classic-border-width) var(--gray-a6);
385
385
  }
386
386
 
@@ -388,8 +388,8 @@
388
388
  &:where(:focus-visible) {
389
389
  /* prettier-ignore */
390
390
  box-shadow:
391
- inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a1),
392
- 0 0 0 2px var(--focus-8);
391
+ 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),
392
+ 0 0 0 var(--focus-outline-width) var(--focus-8);
393
393
  }
394
394
 
395
395
  &:where(:disabled) {
@@ -397,7 +397,7 @@
397
397
  background-color: var(--gray-a2);
398
398
  /* prettier-ignore */
399
399
  box-shadow:
400
- inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a1),
400
+ inset 0 calc(var(--classic-border-width) / var(--classic-border-factor-half)) calc(var(--classic-shadow-blur-small) / var(--classic-shadow-factor-medium)) var(--gray-a2),
401
401
  inset 0 0 0 var(--classic-border-width) var(--gray-a6);
402
402
  }
403
403
  &:where([data-placeholder]) {
@@ -409,7 +409,7 @@
409
409
 
410
410
  /* Soft variant - branded with accent colors */
411
411
  .rt-SelectTrigger:where(.rt-variant-soft) {
412
- --select-trigger-border-width: 0px;
412
+ --select-trigger-border-width: var(--border-width-none);
413
413
 
414
414
  /* Use solid accent for solid panels, alpha accent for translucent panels */
415
415
  background-color: var(--accent-3);
@@ -482,7 +482,7 @@
482
482
 
483
483
  /* Surface variant - transparent with accent border (previously outline) */
484
484
  .rt-SelectTrigger:where(.rt-variant-surface) {
485
- --select-trigger-border-width: 1px;
485
+ --select-trigger-border-width: var(--border-width-standard);
486
486
 
487
487
  background-color: transparent;
488
488
  box-shadow: inset 0 0 0 var(--select-trigger-border-width) var(--accent-7);
@@ -595,7 +595,7 @@
595
595
 
596
596
  /* Ghost variant - transparent until interaction */
597
597
  .rt-SelectTrigger:where(.rt-variant-ghost) {
598
- --select-trigger-border-width: 0px;
598
+ --select-trigger-border-width: var(--border-width-none);
599
599
 
600
600
  background-color: transparent;
601
601
  color: var(--accent-12);
@@ -7,7 +7,7 @@
7
7
  flex-grow: 1;
8
8
 
9
9
  border-radius: max(
10
- calc(var(--radius-factor) * var(--slider-track-size) / 3),
10
+ calc(var(--radius-factor) * var(--slider-track-size) / var(--slider-track-radius-factor)),
11
11
  calc(var(--radius-factor) * var(--radius-thumb))
12
12
  );
13
13
 
@@ -47,11 +47,11 @@
47
47
  border-radius: inherit;
48
48
 
49
49
  &:where([data-orientation='horizontal']) {
50
- height: 100%;
50
+ height: var(--position-full);
51
51
  }
52
52
 
53
53
  &:where([data-orientation='vertical']) {
54
- width: 100%;
54
+ width: var(--position-full);
55
55
  }
56
56
  }
57
57
 
@@ -67,10 +67,10 @@
67
67
  content: '';
68
68
  position: absolute;
69
69
  z-index: -1;
70
- width: calc(var(--slider-thumb-size) * 3);
71
- height: calc(var(--slider-thumb-size) * 3);
72
- top: 50%;
73
- left: 50%;
70
+ width: calc(var(--slider-thumb-size) * var(--slider-thumb-hit-area-multiplier));
71
+ height: calc(var(--slider-thumb-size) * var(--slider-thumb-hit-area-multiplier));
72
+ top: var(--position-center);
73
+ left: var(--position-center);
74
74
  transform: translate(-50%, -50%);
75
75
  }
76
76
 
@@ -78,7 +78,7 @@
78
78
  &::after {
79
79
  content: '';
80
80
  position: absolute;
81
- inset: calc(-0.25 * var(--slider-track-size));
81
+ inset: calc(var(--slider-thumb-inset-factor) * var(--slider-track-size) * -1);
82
82
  background-color: white;
83
83
  border-radius: max(var(--radius-1), var(--radius-thumb));
84
84
  box-shadow: var(--slider-thumb-box-shadow);
@@ -86,7 +86,7 @@
86
86
  }
87
87
 
88
88
  &:where(:focus-visible)::after {
89
- box-shadow: var(--slider-thumb-box-shadow), 0 0 0 3px var(--accent-3), 0 0 0 5px var(--focus-8);
89
+ box-shadow: var(--slider-thumb-box-shadow), 0 0 0 var(--slider-focus-ring-inner) var(--accent-3), 0 0 0 var(--slider-focus-ring-outer) var(--focus-8);
90
90
  }
91
91
 
92
92
  &:where(:active) {
@@ -103,13 +103,13 @@
103
103
  @breakpoints {
104
104
  .rt-SliderRoot {
105
105
  &:where(.rt-r-size-1) {
106
- --slider-track-size: calc(var(--space-2) * 0.75);
106
+ --slider-track-size: calc(var(--space-2) * var(--size-multiplier-small));
107
107
  }
108
108
  &:where(.rt-r-size-2) {
109
109
  --slider-track-size: var(--space-2);
110
110
  }
111
111
  &:where(.rt-r-size-3) {
112
- --slider-track-size: calc(var(--space-2) * 1.25);
112
+ --slider-track-size: calc(var(--space-2) * var(--size-multiplier-large));
113
113
  }
114
114
  }
115
115
  }
@@ -125,17 +125,17 @@
125
125
  .rt-SliderRoot:where(.rt-variant-surface) {
126
126
  & :where(.rt-SliderTrack) {
127
127
  background-color: var(--gray-a3);
128
- box-shadow: inset 0 0 0 1px var(--gray-a5);
128
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a5);
129
129
 
130
130
  &:where([data-disabled]) {
131
- box-shadow: inset 0 0 0 1px var(--gray-a4);
131
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a4);
132
132
  }
133
133
  }
134
134
 
135
135
  & :where(.rt-SliderRange) {
136
136
  background-color: var(--accent-track);
137
137
  background-image: var(--slider-range-high-contrast-background-image);
138
- box-shadow: inset 0 0 0 1px var(--gray-a5);
138
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a5);
139
139
  }
140
140
 
141
141
  & :where(.rt-SliderThumb) {
@@ -160,21 +160,21 @@
160
160
  inset: 0;
161
161
  position: absolute;
162
162
  border-radius: inherit;
163
- box-shadow: var(--shadow-1);
163
+ box-shadow: var(--classic-inset-shadow-dark);
164
164
  }
165
165
  &:where([data-disabled])::before {
166
- opacity: 0.5;
166
+ opacity: var(--opacity-disabled);
167
167
  }
168
168
  }
169
169
 
170
170
  & :where(.rt-SliderRange) {
171
171
  background-color: var(--accent-track);
172
172
  background-image: var(--slider-range-high-contrast-background-image);
173
- box-shadow: inset 0 0 0 1px var(--gray-a3), inset 0 0 0 1px var(--accent-a4), inset 0 0 0 1px var(--black-a1),
174
- inset 0 1.5px 2px 0 var(--black-a2);
173
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a3), inset 0 0 0 var(--border-width-standard) var(--accent-a4), inset 0 0 0 var(--border-width-standard) var(--black-a1),
174
+ inset 0 var(--slider-classic-inset-offset) 2px 0 var(--black-a2);
175
175
 
176
176
  &:where(.rt-high-contrast) {
177
- box-shadow: inset 0 0 0 1px var(--gray-a3), inset 0 0 0 1px var(--black-a2), inset 0 1.5px 2px 0 var(--black-a2);
177
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a3), inset 0 0 0 var(--border-width-standard) var(--black-a2), inset 0 var(--slider-classic-inset-offset) 2px 0 var(--black-a2);
178
178
  }
179
179
  }
180
180
 
@@ -197,21 +197,21 @@
197
197
  &::before {
198
198
  background-image: linear-gradient(to right, var(--accent-track) 40%, transparent 60%);
199
199
  background-color: var(--gray-a4);
200
- box-shadow: var(--shadow-1);
200
+ box-shadow: var(--classic-inset-shadow-dark);
201
201
  }
202
202
  &:where([data-state='unchecked']:active)::before {
203
203
  background-color: var(--gray-a5);
204
204
  }
205
205
  &:where([data-state='checked'])::before {
206
- box-shadow: inset 0 0 0 1px var(--gray-a3), inset 0 0 0 1px var(--accent-a4), inset 0 0 0 1px var(--black-a1),
207
- inset 0 1.5px 2px 0 var(--black-a2);
206
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a3), inset 0 0 0 var(--border-width-standard) var(--accent-a4), inset 0 0 0 var(--border-width-standard) var(--black-a1),
207
+ inset 0 var(--slider-classic-inset-offset) 2px 0 var(--black-a2);
208
208
  }
209
209
  &:where([data-state='checked']:active)::before {
210
210
  filter: var(--switch-surface-checked-active-filter);
211
211
  }
212
212
  &:where(.rt-high-contrast) {
213
213
  &::before {
214
- box-shadow: inset 0 0 0 1px var(--gray-a3), inset 0 0 0 1px var(--black-a2), inset 0 1.5px 2px 0 var(--black-a2);
214
+ box-shadow: inset 0 0 0 var(--border-width-standard) var(--gray-a3), inset 0 0 0 var(--border-width-standard) var(--black-a2), inset 0 var(--slider-classic-inset-offset) 2px 0 var(--black-a2);
215
215
 
216
216
  /* prettier-ignore */
217
217
  background-image:
@@ -229,8 +229,8 @@
229
229
  filter: none;
230
230
  background-image: none;
231
231
  background-color: var(--gray-a5);
232
- box-shadow: var(--shadow-1);
233
- opacity: 0.5;
232
+ box-shadow: var(--classic-inset-shadow-dark);
233
+ opacity: var(--opacity-disabled);
234
234
  }
235
235
  }
236
236
 
@@ -209,11 +209,11 @@
209
209
 
210
210
  /* 3D inset effect - same as TextField */
211
211
  /* prettier-ignore */
212
- box-shadow:
213
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a3),
214
- inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a1),
215
- inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a2),
216
- 0 0 0 var(--classic-border-width) var(--gray-a5);
212
+ box-shadow:
213
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-small) / 1.5) var(--gray-a4),
214
+ inset 0 calc(-1 * var(--classic-border-width)) var(--gray-a2),
215
+ inset 0 calc(var(--classic-border-width) * 2) calc(var(--classic-shadow-blur-medium) / 3) var(--gray-a3),
216
+ 0 0 0 var(--classic-border-width) var(--gray-a5);
217
217
 
218
218
  /* Theme-level translucent override */
219
219
  :where([data-panel-background='translucent']) & {
@@ -235,11 +235,11 @@
235
235
  @media (hover: hover) {
236
236
  &:where(:hover:not(:has(.rt-TextAreaInput:focus))) {
237
237
  /* prettier-ignore */
238
- box-shadow:
239
- inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a2),
240
- inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a1),
241
- inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a2),
242
- 0 0 0 var(--classic-border-width) var(--gray-a6);
238
+ box-shadow:
239
+ inset 0 calc(var(--classic-border-width) / 1.5) calc(var(--classic-shadow-blur-small) / 2) var(--gray-a3),
240
+ inset 0 calc(-1 * var(--classic-border-width) / 1.5) var(--gray-a2),
241
+ inset 0 var(--classic-border-width) calc(var(--classic-shadow-blur-medium) / 4) var(--gray-a3),
242
+ 0 0 0 var(--classic-border-width) var(--gray-a6);
243
243
  }
244
244
  }
245
245
 
@@ -247,7 +247,7 @@
247
247
  &:where(:has(.rt-TextAreaInput:focus)) {
248
248
  /* prettier-ignore */
249
249
  box-shadow:
250
- inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a1),
250
+ inset 0 calc(var(--classic-border-width) / 2) calc(var(--classic-shadow-blur-small) / 3) var(--gray-a2),
251
251
  0 0 0 2px var(--focus-8);
252
252
  }
253
253
 
@@ -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
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  :where(.radix-themes) {
8
8
  /* Backdrop blur constants */
9
- --backdrop-blur-panel: 64px;
9
+ --backdrop-blur-panel: 48px;
10
10
  --backdrop-blur-components: 16px;
11
11
  --backdrop-blur-heavy: 48px;
12
12
  --backdrop-blur-light: 16px;
@@ -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;
@@ -45,11 +45,26 @@
45
45
  font-weight var(--duration-2) var(--ease-2), letter-spacing var(--duration-2) var(--ease-2),
46
46
  word-spacing var(--duration-2) var(--ease-2), transform var(--duration-1) var(--ease-1);
47
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);
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
  }