@womp/kookie-ui 0.13.0 → 0.13.1

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/layout/tokens.css CHANGED
@@ -22,6 +22,10 @@
22
22
  --space-6: calc(32px * var(--scaling));
23
23
  --space-7: calc(40px * var(--scaling));
24
24
  --space-8: calc(48px * var(--scaling));
25
+ --control-height-1: var(--space-5);
26
+ --control-height-2: var(--space-6);
27
+ --control-height-3: var(--space-7);
28
+ --control-height-4: var(--space-8);
25
29
  --space-9: calc(64px * var(--scaling));
26
30
  --space-10: calc(80px * var(--scaling));
27
31
  --space-11: calc(96px * var(--scaling));
package/layout.css CHANGED
@@ -22,6 +22,10 @@
22
22
  --space-6: calc(32px * var(--scaling));
23
23
  --space-7: calc(40px * var(--scaling));
24
24
  --space-8: calc(48px * var(--scaling));
25
+ --control-height-1: var(--space-5);
26
+ --control-height-2: var(--space-6);
27
+ --control-height-3: var(--space-7);
28
+ --control-height-4: var(--space-8);
25
29
  --space-9: calc(64px * var(--scaling));
26
30
  --space-10: calc(80px * var(--scaling));
27
31
  --space-11: calc(96px * var(--scaling));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@womp/kookie-ui",
3
- "version": "0.13.0",
3
+ "version": "0.13.1",
4
4
  "description": "Kookie UI v1: a React component library with design tokens, flexible theming, a full layout shell, and comprehensive documentation.",
5
5
  "keywords": [
6
6
  "react",
@@ -176,22 +176,22 @@
176
176
  @breakpoints {
177
177
  .rt-BaseButton {
178
178
  &:where(.rt-r-size-1) {
179
- --base-button-height: var(--space-5);
179
+ --base-button-height: var(--control-height-1);
180
180
  border-radius: max(var(--radius-1), var(--radius-full));
181
181
  }
182
182
 
183
183
  &:where(.rt-r-size-2) {
184
- --base-button-height: var(--space-6);
184
+ --base-button-height: var(--control-height-2);
185
185
  border-radius: max(var(--radius-2), var(--radius-full));
186
186
  }
187
187
 
188
188
  &:where(.rt-r-size-3) {
189
- --base-button-height: var(--space-7);
189
+ --base-button-height: var(--control-height-3);
190
190
  border-radius: max(var(--radius-3), var(--radius-full));
191
191
  }
192
192
 
193
193
  &:where(.rt-r-size-4) {
194
- --base-button-height: var(--space-8);
194
+ --base-button-height: var(--control-height-4);
195
195
  border-radius: max(var(--radius-4), var(--radius-full));
196
196
  }
197
197
  }
@@ -167,7 +167,7 @@
167
167
  --base-menu-item-padding-left-indicator: calc(var(--space-5) / 1.2);
168
168
  --base-menu-item-padding-right: var(--space-2);
169
169
  --base-menu-item-padding-y: var(--space-1);
170
- --base-menu-item-height: var(--space-5);
170
+ --base-menu-item-height: var(--control-height-1);
171
171
  border-radius: var(--radius-surface-3);
172
172
 
173
173
  & :where(.rt-BaseMenuItem) {
@@ -205,7 +205,7 @@
205
205
  --base-menu-item-padding-left-indicator: var(--space-5);
206
206
  --base-menu-item-padding-right: var(--space-3);
207
207
  --base-menu-item-padding-y: var(--space-1);
208
- --base-menu-item-height: var(--space-6);
208
+ --base-menu-item-height: var(--control-height-2);
209
209
  border-radius: var(--radius-surface-5);
210
210
 
211
211
  & :where(.rt-BaseMenuItem) {
@@ -243,7 +243,7 @@
243
243
  --base-menu-item-padding-left-indicator: var(--space-5);
244
244
  --base-menu-item-padding-right: var(--space-3);
245
245
  --base-menu-item-padding-y: var(--space-2);
246
- --base-menu-item-height: var(--space-7);
246
+ --base-menu-item-height: var(--control-height-3);
247
247
  border-radius: var(--radius-surface-6);
248
248
 
249
249
  & :where(.rt-BaseMenuItem) {
@@ -83,7 +83,7 @@
83
83
  font-size: var(--font-size-1);
84
84
  line-height: var(--line-height-1);
85
85
  letter-spacing: var(--letter-spacing-1);
86
- --tab-height: var(--space-6);
86
+ --tab-height: var(--control-height-1);
87
87
  --tab-padding-x: var(--space-1);
88
88
  --tab-inner-padding-x: var(--space-1);
89
89
  --tab-inner-padding-y: calc(var(--space-1) * var(--spacing-multiplier-small));
@@ -104,7 +104,7 @@
104
104
  font-size: var(--font-size-2);
105
105
  line-height: var(--line-height-2);
106
106
  letter-spacing: var(--letter-spacing-2);
107
- --tab-height: var(--space-7);
107
+ --tab-height: var(--control-height-2);
108
108
  --tab-padding-x: var(--space-2);
109
109
  --tab-inner-padding-x: var(--space-2);
110
110
  --tab-inner-padding-y: var(--space-1);
@@ -405,7 +405,7 @@
405
405
 
406
406
  &:where(.rt-r-size-1) {
407
407
  --segmented-control-border-radius: max(var(--radius-1), var(--radius-full));
408
- --segmented-control-height: var(--space-5);
408
+ --segmented-control-height: var(--control-height-1);
409
409
  height: var(--segmented-control-height);
410
410
 
411
411
  /* Vertical: height auto, width determined by content or icon-only */
@@ -436,7 +436,7 @@
436
436
  }
437
437
  &:where(.rt-r-size-2) {
438
438
  --segmented-control-border-radius: max(var(--radius-2), var(--radius-full));
439
- --segmented-control-height: var(--space-6);
439
+ --segmented-control-height: var(--control-height-2);
440
440
  height: var(--segmented-control-height);
441
441
 
442
442
  /* Vertical: height auto, width determined by content or icon-only */
@@ -467,7 +467,7 @@
467
467
  }
468
468
  &:where(.rt-r-size-3) {
469
469
  --segmented-control-border-radius: max(var(--radius-3), var(--radius-full));
470
- --segmented-control-height: var(--space-7);
470
+ --segmented-control-height: var(--control-height-3);
471
471
  height: var(--segmented-control-height);
472
472
 
473
473
  /* Vertical: height auto, width determined by content or icon-only */
@@ -498,7 +498,7 @@
498
498
  }
499
499
  &:where(.rt-r-size-4) {
500
500
  --segmented-control-border-radius: max(var(--radius-4), var(--radius-full));
501
- --segmented-control-height: var(--space-8);
501
+ --segmented-control-height: var(--control-height-4);
502
502
  height: var(--segmented-control-height);
503
503
 
504
504
  /* Vertical: height auto, width determined by content or icon-only */
@@ -186,7 +186,7 @@
186
186
  @breakpoints {
187
187
  .rt-SelectTrigger {
188
188
  &:where(.rt-r-size-1) {
189
- --select-trigger-height: var(--space-5);
189
+ --select-trigger-height: var(--control-height-1);
190
190
  gap: var(--component-gap-1);
191
191
  font-size: var(--font-size-1);
192
192
  line-height: var(--line-height-1);
@@ -207,7 +207,7 @@
207
207
  }
208
208
  }
209
209
  &:where(.rt-r-size-2) {
210
- --select-trigger-height: var(--space-6);
210
+ --select-trigger-height: var(--control-height-2);
211
211
  gap: var(--component-gap-2);
212
212
  font-size: var(--font-size-2);
213
213
  line-height: var(--line-height-2);
@@ -228,7 +228,7 @@
228
228
  }
229
229
  }
230
230
  &:where(.rt-r-size-3) {
231
- --select-trigger-height: var(--space-7);
231
+ --select-trigger-height: var(--control-height-3);
232
232
  gap: var(--component-gap-3);
233
233
  font-size: var(--font-size-3);
234
234
  line-height: var(--line-height-3);
@@ -261,7 +261,7 @@
261
261
  .rt-SelectContent {
262
262
  &:where(.rt-r-size-1) {
263
263
  --select-content-padding: var(--space-1);
264
- --select-item-height: var(--space-5);
264
+ --select-item-height: var(--control-height-1);
265
265
  --select-item-indicator-width: calc(var(--space-5) / var(--select-item-indicator-width-factor));
266
266
  --select-separator-margin-right: var(--space-2);
267
267
  border-radius: var(--radius-surface-3);
@@ -284,7 +284,6 @@
284
284
  }
285
285
  &:where(.rt-r-size-2, .rt-r-size-3) {
286
286
  --select-content-padding: var(--space-2);
287
- --select-item-height: var(--space-6);
288
287
  --select-item-indicator-width: var(--space-5);
289
288
  --select-separator-margin-right: var(--space-3);
290
289
  border-radius: var(--radius-surface-4);
@@ -300,6 +299,8 @@
300
299
  }
301
300
  }
302
301
  &:where(.rt-r-size-2) {
302
+ --select-item-height: var(--control-height-2);
303
+
303
304
  & :where(.rt-SelectItem) {
304
305
  font-size: var(--font-size-2);
305
306
  letter-spacing: var(--letter-spacing-2);
@@ -310,6 +311,8 @@
310
311
  }
311
312
  }
312
313
  &:where(.rt-r-size-3) {
314
+ --select-item-height: var(--control-height-3);
315
+
313
316
  & :where(.rt-SelectItem) {
314
317
  font-size: var(--font-size-3);
315
318
  letter-spacing: var(--letter-spacing-3);
@@ -609,103 +609,50 @@
609
609
  * *
610
610
  ***************************************************************************************************/
611
611
 
612
+ /* A sub-trigger's chevron sits at the row's end; its size comes from the size ladder below */
613
+ .rt-SidebarMenuSubTriggerIcon {
614
+ flex-shrink: 0;
615
+ margin-left: auto;
616
+ }
617
+
612
618
  @breakpoints {
613
- /* Container sizing - inherit from base menu */
619
+ /* Sidebar rows sit on the control height ladder: size N is as tall as a Button,
620
+ menu item or TextField of size N. Content is a BaseMenuContent, so it takes
621
+ every size value from base-menu.css. Header and Footer are not, so they
622
+ restate base-menu's values here; keep the two in step. */
614
623
  .rt-SidebarContainer {
615
624
  &:where(.rt-r-size-1) {
616
625
  --sidebar-base-padding: var(--space-3);
617
- --sidebar-item-height: var(--space-6);
618
- }
619
- &:where(.rt-r-size-2) {
620
- --sidebar-base-padding: var(--space-4);
621
- --sidebar-item-height: var(--space-7);
622
626
  }
623
- &:where(.rt-r-size-3) {
627
+ &:where(.rt-r-size-2, .rt-r-size-3) {
624
628
  --sidebar-base-padding: var(--space-4);
625
- --sidebar-item-height: var(--space-8);
626
- }
627
- }
628
-
629
- /* Content sizing - use base menu tokens directly */
630
- .rt-SidebarContent {
631
- &:where(.rt-r-size-1) {
632
- --sidebar-content-padding: var(--base-menu-content-padding);
633
- --sidebar-item-padding-left: var(--base-menu-item-padding-left);
634
- --sidebar-item-padding-right: var(--base-menu-item-padding-right);
635
- --sidebar-item-padding-y: var(--base-menu-item-padding-y);
636
- --base-menu-item-height: var(--space-6);
637
- --sidebar-item-height: var(--base-menu-item-height);
638
- }
639
- &:where(.rt-r-size-2) {
640
- --sidebar-content-padding: var(--base-menu-content-padding);
641
- --sidebar-item-padding-left: var(--base-menu-item-padding-left);
642
- --sidebar-item-padding-right: var(--base-menu-item-padding-right);
643
- --sidebar-item-padding-y: var(--base-menu-item-padding-y);
644
- --base-menu-item-height: var(--space-7);
645
- --sidebar-item-height: var(--base-menu-item-height);
646
- }
647
- &:where(.rt-r-size-3) {
648
- --sidebar-content-padding: var(--base-menu-content-padding);
649
- --sidebar-item-padding-left: var(--base-menu-item-padding-left);
650
- --sidebar-item-padding-right: var(--base-menu-item-padding-right);
651
- --sidebar-item-padding-y: var(--base-menu-item-padding-y);
652
- --base-menu-item-height: var(--space-8);
653
- --sidebar-item-height: var(--base-menu-item-height);
654
629
  }
655
630
  }
656
631
 
657
- /* Header/Footer sizing - mirror base menu tokens so buttons render correctly */
658
- .rt-SidebarHeader,
659
- .rt-SidebarFooter {
660
- &:where(.rt-r-size-1) {
661
- --base-menu-content-padding: var(--space-2);
662
- --base-menu-item-padding-left: calc(var(--space-5) / 1.2);
663
- --base-menu-item-padding-right: var(--space-2);
664
- --base-menu-item-padding-y: var(--space-1);
665
- --base-menu-item-height: var(--space-6);
666
- --sidebar-item-height: var(--base-menu-item-height);
667
- }
668
-
669
- &:where(.rt-r-size-2) {
670
- --base-menu-content-padding: var(--space-3);
671
- --base-menu-item-padding-left: var(--space-3);
672
- --base-menu-item-padding-right: var(--space-3);
673
- --base-menu-item-padding-y: var(--space-1);
674
- --base-menu-item-height: var(--space-7);
675
- --sidebar-item-height: var(--base-menu-item-height);
676
- }
677
-
678
- &:where(.rt-r-size-3) {
679
- --base-menu-content-padding: var(--space-3);
680
- --base-menu-item-padding-left: var(--space-3);
681
- --base-menu-item-padding-right: var(--space-3);
682
- --base-menu-item-padding-y: var(--space-2);
683
- --base-menu-item-height: var(--space-8);
684
- --sidebar-item-height: var(--base-menu-item-height);
685
- }
686
- }
687
-
688
- /* Size-specific menu button styling - inherit from base menu */
689
- .rt-SidebarContent:where(.rt-r-size-1),
690
632
  .rt-SidebarHeader:where(.rt-r-size-1),
691
633
  .rt-SidebarFooter:where(.rt-r-size-1) {
634
+ --base-menu-content-padding: var(--space-2);
635
+ --base-menu-item-padding-left: var(--space-2);
636
+ --base-menu-item-padding-right: var(--space-2);
637
+ --base-menu-item-padding-y: var(--space-1);
638
+ --base-menu-item-height: var(--control-height-1);
639
+ --sidebar-item-height: var(--base-menu-item-height);
640
+
692
641
  & :where(.rt-SidebarMenuButton) {
693
642
  gap: var(--component-gap-2);
694
643
  font-size: var(--font-size-1);
695
644
  line-height: var(--line-height-1);
696
645
  letter-spacing: var(--letter-spacing-1);
697
646
  border-radius: var(--radius-1);
698
- font-weight: var(--font-weight-regular);
699
647
 
700
648
  /* stylelint-disable-next-line selector-max-type */
701
649
  & :where(svg) {
702
- width: var(--content-icon-size-2);
703
- height: var(--content-icon-size-2);
650
+ width: var(--content-icon-size-1);
651
+ height: var(--content-icon-size-1);
704
652
  flex-shrink: 0;
705
653
  }
706
654
  }
707
655
 
708
- /* Sub-trigger icon sizing - matches base menu exactly */
709
656
  & :where(.rt-BaseMenuSubTriggerIcon) {
710
657
  width: var(--indicator-icon-size-1);
711
658
  height: var(--indicator-icon-size-1);
@@ -714,38 +661,30 @@
714
661
  }
715
662
  }
716
663
 
717
- .rt-SidebarContent:where(.rt-r-size-2),
718
664
  .rt-SidebarHeader:where(.rt-r-size-2),
719
665
  .rt-SidebarFooter:where(.rt-r-size-2) {
666
+ --base-menu-content-padding: var(--space-3);
667
+ --base-menu-item-padding-left: var(--space-3);
668
+ --base-menu-item-padding-right: var(--space-3);
669
+ --base-menu-item-padding-y: var(--space-1);
670
+ --base-menu-item-height: var(--control-height-2);
671
+ --sidebar-item-height: var(--base-menu-item-height);
672
+
720
673
  & :where(.rt-SidebarMenuButton) {
721
674
  gap: var(--component-gap-3);
722
675
  font-size: var(--font-size-2);
723
676
  line-height: var(--line-height-2);
724
677
  letter-spacing: var(--letter-spacing-2);
725
678
  border-radius: var(--radius-2);
726
- font-weight: var(--font-weight-regular);
727
679
 
728
680
  /* stylelint-disable-next-line selector-max-type */
729
681
  & :where(svg) {
730
- width: var(--content-icon-size-3);
731
- height: var(--content-icon-size-3);
682
+ width: var(--content-icon-size-2);
683
+ height: var(--content-icon-size-2);
732
684
  flex-shrink: 0;
733
685
  }
734
686
  }
735
- /* stylelint-disable-next-line selector-max-specificity */
736
- .rt-SidebarContent:where(.rt-r-size-3) {
737
- /* stylelint-disable-next-line selector-max-specificity */
738
- & :where(.rt-SidebarMenuButton) {
739
- /* stylelint-disable-next-line selector-max-type, selector-max-specificity */
740
- & :where(svg) {
741
- width: var(--content-icon-size-3);
742
- height: var(--content-icon-size-3);
743
- flex-shrink: 0;
744
- }
745
- }
746
- }
747
687
 
748
- /* Sub-trigger icon sizing - matches base menu exactly */
749
688
  & :where(.rt-BaseMenuSubTriggerIcon) {
750
689
  width: var(--indicator-icon-size-2);
751
690
  height: var(--indicator-icon-size-2);
@@ -754,16 +693,21 @@
754
693
  }
755
694
  }
756
695
 
757
- .rt-SidebarContent:where(.rt-r-size-3),
758
696
  .rt-SidebarHeader:where(.rt-r-size-3),
759
697
  .rt-SidebarFooter:where(.rt-r-size-3) {
698
+ --base-menu-content-padding: var(--space-3);
699
+ --base-menu-item-padding-left: var(--space-3);
700
+ --base-menu-item-padding-right: var(--space-3);
701
+ --base-menu-item-padding-y: var(--space-2);
702
+ --base-menu-item-height: var(--control-height-3);
703
+ --sidebar-item-height: var(--base-menu-item-height);
704
+
760
705
  & :where(.rt-SidebarMenuButton) {
761
- gap: var(--component-gap-3);
706
+ gap: var(--component-gap-4);
762
707
  font-size: var(--font-size-3);
763
- line-height: var(--line-height-2);
764
- letter-spacing: var(--letter-spacing-2);
708
+ line-height: var(--line-height-3);
709
+ letter-spacing: var(--letter-spacing-3);
765
710
  border-radius: var(--radius-2);
766
- font-weight: var(--font-weight-regular);
767
711
 
768
712
  /* stylelint-disable-next-line selector-max-type */
769
713
  & :where(svg) {
@@ -774,8 +718,8 @@
774
718
  }
775
719
 
776
720
  & :where(.rt-BaseMenuSubTriggerIcon) {
777
- width: var(--indicator-icon-size-2);
778
- height: var(--indicator-icon-size-2);
721
+ width: var(--indicator-icon-size-3);
722
+ height: var(--indicator-icon-size-3);
779
723
  flex-shrink: 0;
780
724
  margin-left: auto;
781
725
  }
@@ -214,7 +214,7 @@
214
214
  @breakpoints {
215
215
  .rt-TextFieldRoot {
216
216
  &:where(.rt-r-size-1) {
217
- --text-field-height: var(--space-5);
217
+ --text-field-height: var(--control-height-1);
218
218
  --text-field-padding: calc(var(--space-1) * 1.5 - var(--text-field-border-width));
219
219
  --text-field-border-radius: max(var(--radius-1), var(--radius-full));
220
220
  --text-field-native-icon-size: var(--space-3);
@@ -247,7 +247,7 @@
247
247
  }
248
248
 
249
249
  &:where(.rt-r-size-2) {
250
- --text-field-height: var(--space-6);
250
+ --text-field-height: var(--control-height-2);
251
251
  --text-field-padding: calc(var(--space-2) - var(--text-field-border-width));
252
252
  --text-field-border-radius: max(var(--radius-2), var(--radius-full));
253
253
  --text-field-native-icon-size: var(--space-4);
@@ -281,7 +281,7 @@
281
281
  }
282
282
 
283
283
  &:where(.rt-r-size-3) {
284
- --text-field-height: var(--space-7);
284
+ --text-field-height: var(--control-height-3);
285
285
  --text-field-padding: calc(var(--space-3) - var(--text-field-border-width));
286
286
  --text-field-border-radius: max(var(--radius-3), var(--radius-full));
287
287
  --text-field-native-icon-size: var(--space-4);
@@ -26,28 +26,28 @@
26
26
  }
27
27
 
28
28
  &:where(.rt-r-size-1) {
29
- --toolbar-control-height: var(--space-5);
29
+ --toolbar-control-height: var(--control-height-1);
30
30
  --toolbar-radius: max(var(--radius-1), var(--radius-full));
31
31
  --toolbar-gap: var(--space-1);
32
32
  --toolbar-title-gap: var(--space-2);
33
33
  }
34
34
 
35
35
  &:where(.rt-r-size-2) {
36
- --toolbar-control-height: var(--space-6);
36
+ --toolbar-control-height: var(--control-height-2);
37
37
  --toolbar-radius: max(var(--radius-2), var(--radius-full));
38
38
  --toolbar-gap: var(--space-2);
39
39
  --toolbar-title-gap: var(--space-3);
40
40
  }
41
41
 
42
42
  &:where(.rt-r-size-3) {
43
- --toolbar-control-height: var(--space-7);
43
+ --toolbar-control-height: var(--control-height-3);
44
44
  --toolbar-radius: max(var(--radius-3), var(--radius-full));
45
45
  --toolbar-gap: var(--space-2);
46
46
  --toolbar-title-gap: var(--space-4);
47
47
  }
48
48
 
49
49
  &:where(.rt-r-size-4) {
50
- --toolbar-control-height: var(--space-8);
50
+ --toolbar-control-height: var(--control-height-4);
51
51
  --toolbar-radius: max(var(--radius-4), var(--radius-full));
52
52
  --toolbar-gap: var(--space-3);
53
53
  --toolbar-title-gap: var(--space-5);
@@ -12,6 +12,13 @@
12
12
  --space-7: calc(40px * var(--scaling));
13
13
  --space-8: calc(48px * var(--scaling));
14
14
 
15
+ /* Control heights. One ladder for every control: size N is the same height in
16
+ Button, Menu, Sidebar, Tabs, TextField, Select, SegmentedControl and Toolbar. */
17
+ --control-height-1: var(--space-5);
18
+ --control-height-2: var(--space-6);
19
+ --control-height-3: var(--space-7);
20
+ --control-height-4: var(--space-8);
21
+
15
22
  /* */
16
23
  --space-9: calc(64px * var(--scaling));
17
24
  --space-10: calc(80px * var(--scaling));