@godxjp/ui 29.0.0 → 30.0.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.
Files changed (53) hide show
  1. package/agent/START-HERE.md +1 -1
  2. package/agent/index.json +2 -2
  3. package/agent/llms.txt +3 -3
  4. package/agent/tokens.json +135 -135
  5. package/dist/components/data-display/badge.js +1 -1
  6. package/dist/components/data-display/table.js +1 -1
  7. package/dist/components/general/button.js +2 -2
  8. package/dist/components/navigation/tabs.js +1 -1
  9. package/dist/contracts/measurement.json +1 -1
  10. package/dist/styles/alert-layout.css +5 -5
  11. package/dist/styles/badge-layout.css +1 -1
  12. package/dist/styles/card-layout.css +10 -8
  13. package/dist/styles/chart-layout.css +5 -2
  14. package/dist/styles/control.css +64 -48
  15. package/dist/styles/data-display-layout.css +49 -40
  16. package/dist/styles/data-entry-layout.css +12 -12
  17. package/dist/styles/dialog-layout.css +11 -11
  18. package/dist/styles/focus-ring.css +2 -2
  19. package/dist/styles/layout.css +11 -10
  20. package/dist/styles/logo-layout.css +2 -2
  21. package/dist/styles/motion.css +1 -1
  22. package/dist/styles/navigation-layout.css +27 -15
  23. package/dist/styles/shell-layout.css +30 -87
  24. package/dist/styles/table-layout.css +11 -8
  25. package/dist/styles/toggle.css +1 -1
  26. package/dist/tokens/components/banner.css +1 -1
  27. package/dist/tokens/components/card.css +4 -4
  28. package/dist/tokens/components/chart.css +1 -1
  29. package/dist/tokens/components/chat-bubble.css +1 -1
  30. package/dist/tokens/components/control.css +13 -12
  31. package/dist/tokens/components/data-display.css +11 -11
  32. package/dist/tokens/components/data-entry.css +1 -1
  33. package/dist/tokens/components/descriptions.css +1 -1
  34. package/dist/tokens/components/draggable-panel.css +1 -1
  35. package/dist/tokens/components/feedback.css +1 -1
  36. package/dist/tokens/components/legal-document.css +1 -1
  37. package/dist/tokens/components/logo.css +1 -1
  38. package/dist/tokens/components/mega-menu.css +1 -1
  39. package/dist/tokens/components/navigation.css +6 -6
  40. package/dist/tokens/components/segmented.css +3 -3
  41. package/dist/tokens/components/separator.css +1 -1
  42. package/dist/tokens/components/shell.css +5 -5
  43. package/dist/tokens/components/table.css +4 -4
  44. package/dist/tokens/components/thought-chain.css +1 -1
  45. package/dist/tokens/components/toggle.css +1 -1
  46. package/dist/tokens/components/upload.css +2 -2
  47. package/dist/tokens/foundation.css +2 -2
  48. package/docs/i18n/messages/en.json +4 -0
  49. package/docs/i18n/messages/ja.json +4 -0
  50. package/docs/i18n/messages/vi.json +4 -0
  51. package/docs/themes/index.ts +19 -0
  52. package/docs/themes/neubrutalism.css +475 -0
  53. package/package.json +2 -2
@@ -55,7 +55,7 @@ const badgeVariants = cva(
55
55
  // `ui-focus-ring` = the system's single focus source (styles/focus-ring.css). It replaces a
56
56
  // hand-rolled `focus:ring-2 focus:ring-ring`, which was token-blind (no --focus-ring-* knob
57
57
  // reached it) and fired on `:focus`, so a mouse click on an interactive badge lit a ring.
58
- "ui-focus-ring inline-flex items-center border font-medium transition-colors",
58
+ "ui-focus-ring inline-flex items-center font-medium transition-colors",
59
59
  {
60
60
  variants: {
61
61
  variant: {
@@ -69,7 +69,7 @@ const Table = React.forwardRef(
69
69
  }
70
70
  );
71
71
  Table.displayName = "Table";
72
- const TableHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props }));
72
+ const TableHeader = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx("thead", { ref, className: cn(className), ...props }));
73
73
  TableHeader.displayName = "TableHeader";
74
74
  const TableBody = React.forwardRef(({ className, ...props }, ref) => (
75
75
  // "The last row draws no rule" is an idiom, not a service-tunable constant, so it is a CSS
@@ -29,10 +29,10 @@ const buttonVariants = cva("ui-button", {
29
29
  // `bg-background` gone for the same reason (gh#880). The HOVER fill stays a utility: it
30
30
  // is the same value `.ui-button--outline:hover` declares, and moving it is a separate
31
31
  // decision from making the resting surface reachable.
32
- outline: "ui-button--outline border hover:bg-accent hover:text-accent-foreground",
32
+ outline: "ui-button--outline hover:bg-accent hover:text-accent-foreground",
33
33
  // `dashed` is `outline` with a dashed edge, so it shares `--button-outline-background`
34
34
  // rather than growing a knob of its own (gh#880).
35
- dashed: "ui-button--dashed border border-dashed hover:bg-accent hover:text-accent-foreground",
35
+ dashed: "ui-button--dashed hover:bg-accent hover:text-accent-foreground",
36
36
  secondary: "ui-button--secondary text-secondary-foreground hover:bg-secondary/80",
37
37
  ghost: "ui-button--ghost hover:bg-accent hover:text-accent-foreground",
38
38
  // `text-primary` gone for the reason `bg-background` went in gh#880 and the checkbox's
@@ -554,7 +554,7 @@ const TabsTrigger = React.forwardRef(
554
554
  // — Segmented — has been `--segmented-item-selected-background` since gh#848, and these
555
555
  // two are documented as the same pair. The card face and the line strip both restate the
556
556
  // fill as utilities, which still outrank the new rule, so neither moves.
557
- "text-muted-foreground ring-offset-background hover:text-foreground ui-focus-ring data-[state=active]:text-foreground group-data-[variant=default]/tabs:group-data-[variant=default]/tabs-list:data-[state=active]:border-primary/25 relative inline-flex flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:flex-none group-data-[orientation=vertical]/tabs:justify-start group-data-[variant=line]/tabs-list:flex-none group-data-[variant=line]/tabs-list:border-e-0 group-data-[variant=line]/tabs-list:border-b-0 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs:group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none",
557
+ "text-muted-foreground ring-offset-background hover:text-foreground ui-focus-ring data-[state=active]:text-foreground group-data-[variant=default]/tabs:group-data-[variant=default]/tabs-list:data-[state=active]:border-primary/25 relative inline-flex flex-1 items-center justify-center gap-1.5 rounded-md border-transparent px-3 py-1 text-sm font-medium whitespace-nowrap transition-all group-data-[orientation=vertical]/tabs:w-full group-data-[orientation=vertical]/tabs:flex-none group-data-[orientation=vertical]/tabs:justify-start group-data-[variant=line]/tabs-list:flex-none group-data-[variant=line]/tabs-list:border-e-0 group-data-[variant=line]/tabs-list:border-b-0 disabled:pointer-events-none disabled:opacity-50 group-data-[variant=default]/tabs:group-data-[variant=default]/tabs-list:data-[state=active]:shadow-sm group-data-[variant=line]/tabs-list:data-[state=active]:bg-transparent group-data-[variant=line]/tabs-list:data-[state=active]:shadow-none",
558
558
  // The tier the root was given. Without this the compound form ignored `size` outright.
559
559
  triggerSizeClassName(size),
560
560
  className
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$comment": "AUTO-GENERATED by scripts/gen-measurement-contract.mjs — do not edit. Read this instead of guessing: docs/MEASUREMENT-CONTRACT.md.",
3
- "version": "28.13.0",
3
+ "version": "30.0.0",
4
4
  "targetSize": {
5
5
  "standard": "WCAG 2.2 SC 2.5.8 Target Size (Minimum), level AA — 24×24 CSS px",
6
6
  "min": 24,
@@ -11,7 +11,7 @@
11
11
  --alert-radius,
12
12
  var(--card-radius, calc(var(--radius) * var(--radius-ratio)))
13
13
  );
14
- border-width: 1px;
14
+ border-width: var(--stroke-hairline);
15
15
  padding: var(--alert-space-inset);
16
16
  font-size: var(--font-size-base);
17
17
  }
@@ -52,7 +52,7 @@
52
52
  border-radius: var(--banner-radius);
53
53
  border-block-start-width: 0;
54
54
  border-inline-width: 0;
55
- border-block-end-width: var(--banner-border-width);
55
+ border-block-end-width: var(--banner-border-width, var(--stroke-hairline));
56
56
  padding-block: var(--banner-space-inset-block);
57
57
  padding-inline: var(--banner-space-inset-inline);
58
58
  }
@@ -285,7 +285,7 @@
285
285
 
286
286
  .ui-skeleton-table {
287
287
  overflow: hidden;
288
- border: 1px solid hsl(var(--border));
288
+ border: var(--stroke-hairline) solid hsl(var(--border));
289
289
  border-radius: var(--skeleton-radius, var(--radius));
290
290
  }
291
291
 
@@ -307,7 +307,7 @@
307
307
  }
308
308
 
309
309
  .ui-skeleton-table-row + .ui-skeleton-table-row {
310
- border-top: 1px solid hsl(var(--border));
310
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
311
311
  }
312
312
 
313
313
  .ui-skeleton-detail {
@@ -317,7 +317,7 @@
317
317
  .ui-skeleton-detail-box,
318
318
  .ui-skeleton-stat,
319
319
  .ui-skeleton-card {
320
- border: 1px solid hsl(var(--border));
320
+ border: var(--stroke-hairline) solid hsl(var(--border));
321
321
  border-radius: var(--skeleton-radius, var(--radius));
322
322
  padding: var(--skeleton-card-inset);
323
323
 
@@ -12,7 +12,7 @@
12
12
  padding: var(--badge-space-y) var(--badge-space-x);
13
13
 
14
14
  border-radius: var(--badge-radius, calc(var(--radius) / var(--radius-ratio)));
15
- border-width: 1px;
15
+ border-width: var(--stroke-hairline);
16
16
  font-size: var(--badge-font-size);
17
17
 
18
18
  line-height: var(--badge-line-height);
@@ -7,7 +7,7 @@
7
7
  display: flex;
8
8
  flex-direction: column;
9
9
 
10
- border-width: 1px;
10
+ border-width: var(--stroke-hairline);
11
11
  border-style: solid;
12
12
  border-color: hsl(var(--card-border, var(--border)));
13
13
  border-radius: var(--card-radius, calc(var(--radius) * var(--radius-ratio)));
@@ -46,7 +46,7 @@
46
46
 
47
47
  [data-slot="card"][data-variant="featured"] {
48
48
  border-color: var(--card-featured-border-color, hsl(var(--primary)));
49
- box-shadow: 0 0 0 var(--card-featured-ring-width)
49
+ box-shadow: 0 0 0 var(--card-featured-ring-width, var(--stroke-hairline))
50
50
  var(--card-featured-border-color, hsl(var(--primary)));
51
51
  }
52
52
 
@@ -92,14 +92,16 @@
92
92
  }
93
93
 
94
94
  [data-slot="card"][data-accent] {
95
- border-inline-start-width: var(--card-accent-rail-width);
95
+ border-inline-start-width: var(--card-accent-rail-width, var(--stroke-2xl));
96
96
  border-inline-start-color: var(--card-accent-color);
97
97
  }
98
98
 
99
99
  [data-slot="card"][data-accent] > [data-slot="card-header"],
100
100
  [data-slot="card"][data-accent] > [data-slot="card-content"]:not([data-flush]),
101
101
  [data-slot="card"][data-accent] > [data-slot="card-footer"]:not([data-flush]) {
102
- padding-inline-start: calc(var(--card-space-inset) - var(--card-accent-rail-width));
102
+ padding-inline-start: calc(
103
+ var(--card-space-inset) - var(--card-accent-rail-width, var(--stroke-2xl))
104
+ );
103
105
  }
104
106
 
105
107
  [data-slot="card"] > [data-slot="card-footer"] {
@@ -107,10 +109,10 @@
107
109
  }
108
110
 
109
111
  [data-slot="card"][data-accent][data-accent-placement="perimeter"] {
110
- border-width: var(--card-accent-perimeter-width);
112
+ border-width: var(--card-accent-perimeter-width, var(--stroke-hairline));
111
113
  border-color: var(--card-accent-color);
112
114
  box-shadow:
113
- 0 0 0 var(--card-accent-perimeter-ring-width) var(--card-accent-color),
115
+ 0 0 0 var(--card-accent-perimeter-ring-width, var(--stroke-hairline)) var(--card-accent-color),
114
116
  var(--card-shadow, var(--shadow-sm)),
115
117
  var(--card-glow);
116
118
  }
@@ -155,7 +157,7 @@
155
157
  align-items: center;
156
158
  gap: var(--space-inline-md);
157
159
  padding: var(--card-space-header-y) var(--card-space-inset);
158
- border-block: 1px solid hsl(var(--card-border, var(--border)));
160
+ border-block: var(--stroke-hairline) solid hsl(var(--card-border, var(--border)));
159
161
  }
160
162
 
161
163
  [data-slot="card-bar"]:first-child {
@@ -401,7 +403,7 @@
401
403
  }
402
404
 
403
405
  [data-slot="card-footer"][data-separated] {
404
- border-top: 1px solid hsl(var(--card-border, var(--border)));
406
+ border-top: var(--stroke-hairline) solid hsl(var(--card-border, var(--border)));
405
407
 
406
408
  padding-block: var(--card-space-divided-y);
407
409
  justify-content: flex-end;
@@ -33,7 +33,7 @@
33
33
 
34
34
  .ui-chart .recharts-default-tooltip {
35
35
  border-radius: var(--radius);
36
- border: 1px solid hsl(var(--border)) !important;
36
+ border: var(--stroke-hairline) solid hsl(var(--border)) !important;
37
37
  background: hsl(var(--popover) / var(--popover-alpha, 100%)) !important;
38
38
  color: hsl(var(--popover-foreground));
39
39
  font-size: var(--font-size-xs, calc(var(--font-size-base) / var(--font-size-ratio)));
@@ -105,7 +105,10 @@
105
105
  inline-size: 100%;
106
106
  max-inline-size: var(--chart-trend-bar-max-width);
107
107
 
108
- block-size: max(var(--chart-trend-bar-min-height), calc(var(--chart-trend-bar-value, 0) * 100%));
108
+ block-size: max(
109
+ var(--chart-trend-bar-min-height, var(--stroke-md)),
110
+ calc(var(--chart-trend-bar-value, 0) * 100%)
111
+ );
109
112
  border-start-start-radius: var(
110
113
  --chart-trend-bar-radius,
111
114
  calc(var(--radius) / var(--radius-ratio) / var(--radius-ratio))
@@ -18,16 +18,16 @@
18
18
  }
19
19
 
20
20
  .ui-toggle-default {
21
- border: 1px solid transparent;
21
+ border: var(--stroke-hairline) solid transparent;
22
22
  }
23
23
 
24
24
  .ui-toggle-outline {
25
- border: 1px solid hsl(var(--border));
25
+ border: var(--stroke-hairline) solid hsl(var(--border));
26
26
  background: hsl(var(--background));
27
27
  }
28
28
 
29
29
  .ui-toggle-soft {
30
- border: 1px solid transparent;
30
+ border: var(--stroke-hairline) solid transparent;
31
31
  background: var(--toggle-soft-background, hsl(var(--secondary)));
32
32
  color: var(--toggle-soft-color, hsl(var(--secondary-foreground)));
33
33
  }
@@ -158,6 +158,9 @@
158
158
  }
159
159
 
160
160
  .ui-button--dashed {
161
+
162
+ border: var(--stroke-hairline) dashed
163
+ var(--button-outline-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
161
164
  background: var(
162
165
  --button-outline-background,
163
166
  hsl(var(--background) / var(--button-outline-background-alpha, 100%))
@@ -165,7 +168,7 @@
165
168
  }
166
169
 
167
170
  .ui-button--outline {
168
- border: 1px solid
171
+ border: var(--stroke-hairline) solid
169
172
  var(--button-outline-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
170
173
  background: var(
171
174
  --button-outline-background,
@@ -302,7 +305,7 @@
302
305
  padding-inline-start: var(--control-padding-x);
303
306
  padding-inline-end: var(--control-padding-x);
304
307
  font-size: var(--control-font-size);
305
- border-width: var(--control-border-width);
308
+ border-width: var(--control-border-width, var(--stroke-hairline));
306
309
  border-style: solid;
307
310
  box-shadow: var(--control-shadow);
308
311
  }
@@ -312,7 +315,7 @@
312
315
  padding-block: var(--control-multiline-padding-block);
313
316
  padding-inline: var(--control-padding-x);
314
317
  font-size: var(--control-font-size);
315
- border-width: var(--control-border-width);
318
+ border-width: var(--control-border-width, var(--stroke-hairline));
316
319
  border-style: solid;
317
320
  box-shadow: var(--control-shadow);
318
321
  }
@@ -355,7 +358,7 @@
355
358
  padding-block-end: var(--textarea-padding-block-end, var(--control-multiline-padding-block));
356
359
  padding-inline-start: var(--textarea-padding-inline-start, var(--control-padding-x));
357
360
  padding-inline-end: var(--textarea-padding-inline-end, var(--control-padding-x));
358
- border: var(--control-border-width) solid transparent;
361
+ border: var(--control-border-width, var(--stroke-hairline)) solid transparent;
359
362
 
360
363
  min-block-size: max(
361
364
  var(--control-height),
@@ -491,7 +494,7 @@
491
494
  width: var(--checkbox-size);
492
495
  height: var(--checkbox-size);
493
496
  flex-shrink: 0;
494
- border: var(--checkbox-border-width) solid hsl(var(--primary));
497
+ border: var(--checkbox-border-width, var(--stroke-hairline)) solid hsl(var(--primary));
495
498
  color: hsl(var(--text-brand, var(--primary)));
496
499
  background: transparent;
497
500
  }
@@ -561,7 +564,7 @@
561
564
  flex-shrink: 0;
562
565
  cursor: pointer;
563
566
  align-items: center;
564
- border: 2px solid transparent;
567
+ border: var(--stroke-md) solid transparent;
565
568
  border-radius: var(--radius-pill);
566
569
  box-shadow: var(--shadow-sm);
567
570
  transition-property: color, background-color, border-color, box-shadow;
@@ -677,7 +680,7 @@
677
680
  block-size: var(--slider-thumb-size);
678
681
  margin-block-start: calc(var(--slider-thumb-size) / -2);
679
682
  margin-inline-start: calc(var(--slider-thumb-size) / -2);
680
- border: 1px solid hsl(var(--primary) / 0.5);
683
+ border: var(--stroke-hairline) solid hsl(var(--primary) / 0.5);
681
684
  border-radius: var(--radius-pill);
682
685
  background: hsl(var(--background));
683
686
  box-shadow: var(--shadow-sm);
@@ -710,7 +713,7 @@
710
713
  .ui-color-picker-preview {
711
714
  width: 100%;
712
715
  height: 100%;
713
- border: 1px solid hsl(var(--input) / var(--input-alpha, 100%));
716
+ border: var(--stroke-hairline) solid hsl(var(--input) / var(--input-alpha, 100%));
714
717
  border-radius: var(--control-radius);
715
718
  box-shadow: var(--shadow-sm);
716
719
  }
@@ -754,7 +757,7 @@
754
757
  .ui-command-input-wrapper {
755
758
  display: flex;
756
759
  align-items: center;
757
- border-bottom: 1px solid hsl(var(--border));
760
+ border-bottom: var(--stroke-hairline) solid hsl(var(--border));
758
761
  padding-inline: var(--command-input-padding-x);
759
762
  }
760
763
 
@@ -853,12 +856,12 @@
853
856
  }
854
857
 
855
858
  .ui-command[data-split] .ui-command-item:has(+ .ui-command-item) {
856
- border-block-end: var(--command-item-divider-width) solid
859
+ border-block-end: var(--command-item-divider-width, var(--stroke-hairline)) solid
857
860
  hsl(var(--command-item-divider-color, var(--border)));
858
861
  }
859
862
 
860
863
  .ui-command[data-split] .ui-command-group:not([hidden]) ~ .ui-command-group:not([hidden]) {
861
- border-block-start: var(--command-item-divider-width) solid
864
+ border-block-start: var(--command-item-divider-width, var(--stroke-hairline)) solid
862
865
  hsl(var(--command-item-divider-color, var(--border)));
863
866
  }
864
867
 
@@ -901,7 +904,7 @@
901
904
  display: flex;
902
905
  flex-wrap: wrap;
903
906
  gap: var(--command-palette-hint-gap);
904
- border-top: 1px solid hsl(var(--border));
907
+ border-top: var(--stroke-hairline) solid hsl(var(--border));
905
908
  padding: var(--command-palette-hint-padding-y) var(--command-palette-hint-padding-x);
906
909
  color: hsl(var(--muted-foreground));
907
910
  font-family: var(--font-mono);
@@ -1055,13 +1058,13 @@
1055
1058
  align-items: center;
1056
1059
  justify-content: center;
1057
1060
  font-size: var(--font-size-base);
1058
- border: var(--control-border-width) solid hsl(var(--border));
1061
+ border: var(--control-border-width, var(--stroke-hairline)) solid hsl(var(--border));
1059
1062
  border-inline-start-width: 0;
1060
1063
  background: hsl(var(--background));
1061
1064
  transition: box-shadow 0.15s ease;
1062
1065
  }
1063
1066
  .ui-otp-group .ui-otp-slot:first-child {
1064
- border-inline-start-width: var(--control-border-width);
1067
+ border-inline-start-width: var(--control-border-width, var(--stroke-hairline));
1065
1068
  border-start-start-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1066
1069
  border-end-start-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1067
1070
  }
@@ -1071,7 +1074,7 @@
1071
1074
  }
1072
1075
  .ui-otp-group[data-appearance="grouped"] {
1073
1076
  overflow: hidden;
1074
- border: var(--control-border-width) solid hsl(var(--border));
1077
+ border: var(--control-border-width, var(--stroke-hairline)) solid hsl(var(--border));
1075
1078
  border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1076
1079
  background: hsl(var(--background));
1077
1080
  }
@@ -1118,7 +1121,7 @@
1118
1121
  justify-content: center;
1119
1122
  }
1120
1123
  .ui-otp-caret {
1121
- width: var(--otp-caret-inline-size);
1124
+ width: var(--otp-caret-inline-size, var(--stroke-hairline));
1122
1125
  height: var(--otp-caret-block-size);
1123
1126
  background: hsl(var(--foreground));
1124
1127
  animation: ui-otp-blink 1s step-end infinite;
@@ -1194,7 +1197,7 @@
1194
1197
  var(--segmented-track-background, var(--muted)) /
1195
1198
  var(--segmented-track-background-alpha, 100%)
1196
1199
  );
1197
- color: hsl(var(--segmented-item-color));
1200
+ color: hsl(var(--segmented-item-color, var(--muted-foreground)));
1198
1201
  font-size: var(--font-size-base);
1199
1202
  }
1200
1203
 
@@ -1225,7 +1228,7 @@
1225
1228
  var(--segmented-item-hover-background, var(--accent)) /
1226
1229
  var(--segmented-item-hover-background-alpha, 100%)
1227
1230
  );
1228
- color: hsl(var(--segmented-item-hover-color));
1231
+ color: hsl(var(--segmented-item-hover-color, var(--foreground)));
1229
1232
  }
1230
1233
  .ui-segmented-item:not([data-state="checked"]):not([data-disabled]):active {
1231
1234
  background: hsl(
@@ -1243,7 +1246,7 @@
1243
1246
  var(--segmented-item-selected-shadow, var(--shadow-md)),
1244
1247
  inset 0 0 0 1px
1245
1248
  hsl(var(--segmented-item-selected-border-color, var(--input)) / var(--input-alpha, 100%));
1246
- color: hsl(var(--segmented-item-selected-color));
1249
+ color: hsl(var(--segmented-item-selected-color, var(--foreground)));
1247
1250
 
1248
1251
  font-weight: var(--segmented-item-selected-font-weight);
1249
1252
  }
@@ -1294,7 +1297,7 @@
1294
1297
  min-height: var(--control-height);
1295
1298
  padding: var(--space-1) var(--control-padding-x);
1296
1299
 
1297
- border: var(--control-border-width) solid
1300
+ border: var(--control-border-width, var(--stroke-hairline)) solid
1298
1301
  var(--control-surface-border-color, hsl(var(--input) / var(--input-alpha, 100%)));
1299
1302
  border-radius: var(--control-radius);
1300
1303
  background: var(
@@ -1363,7 +1366,10 @@
1363
1366
  .ui-tag-input-field {
1364
1367
  flex: 1;
1365
1368
  min-width: 6rem;
1366
- block-size: calc(var(--control-height) - var(--space-1) * 2 - var(--control-border-width) * 2);
1369
+ block-size: calc(
1370
+ var(--control-height) - var(--space-1) * 2 -
1371
+ var(--control-border-width, var(--stroke-hairline)) * 2
1372
+ );
1367
1373
  border: 0;
1368
1374
  outline: none;
1369
1375
  background: transparent;
@@ -1625,7 +1631,7 @@
1625
1631
 
1626
1632
  .ui-search-select-search {
1627
1633
  flex-shrink: 0;
1628
- border-block-end: 1px solid hsl(var(--border));
1634
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
1629
1635
  }
1630
1636
 
1631
1637
  .ui-search-select-search-input {
@@ -1741,7 +1747,7 @@
1741
1747
  .ui-search-select-footer {
1742
1748
  flex-shrink: 0;
1743
1749
  padding: var(--search-select-footer-space-inset);
1744
- border-block-start: 1px solid hsl(var(--border));
1750
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
1745
1751
  }
1746
1752
  }
1747
1753
 
@@ -1754,7 +1760,7 @@
1754
1760
 
1755
1761
  .ui-cascader-column {
1756
1762
  min-inline-size: var(--cascader-column-min-width);
1757
- border-inline-end: 1px solid hsl(var(--border));
1763
+ border-inline-end: var(--stroke-hairline) solid hsl(var(--border));
1758
1764
  }
1759
1765
 
1760
1766
  .ui-cascader-column:last-child {
@@ -1868,7 +1874,7 @@
1868
1874
  );
1869
1875
  overflow: hidden;
1870
1876
  border-radius: var(--radius-md, calc(var(--radius) / var(--radius-ratio)));
1871
- border: 1px solid hsl(var(--border));
1877
+ border: var(--stroke-hairline) solid hsl(var(--border));
1872
1878
 
1873
1879
  background: var(--select-content-background, hsl(var(--popover) / var(--popover-alpha, 100%)));
1874
1880
  color: hsl(var(--popover-foreground));
@@ -2018,7 +2024,7 @@
2018
2024
  .ui-time-picker-column-heading {
2019
2025
  padding-inline: var(--time-picker-heading-space-inline);
2020
2026
  padding-block: var(--time-picker-heading-space-block);
2021
- border-block-end: 1px solid hsl(var(--border));
2027
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
2022
2028
  text-align: center;
2023
2029
  font-size: var(--time-picker-heading-font-size);
2024
2030
  font-weight: var(--font-weight-medium);
@@ -2073,7 +2079,7 @@
2073
2079
  flex-direction: column;
2074
2080
  gap: var(--time-picker-footer-space-gap);
2075
2081
  padding: var(--time-picker-footer-space-inset);
2076
- border-block-start: 1px solid hsl(var(--border));
2082
+ border-block-start: var(--stroke-hairline) solid hsl(var(--border));
2077
2083
  }
2078
2084
 
2079
2085
  .ui-time-picker-footer-actions {
@@ -2362,13 +2368,16 @@
2362
2368
 
2363
2369
  .ui-calendar[data-bordered="true"] .ui-calendar-day,
2364
2370
  .ui-calendar[data-bordered="true"] .ui-calendar-weekday {
2365
- border-inline-start: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2366
- border-block-start: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2371
+ border-inline-start: var(--stroke-hairline) solid
2372
+ var(--calendar-grid-border-color, hsl(var(--border)));
2373
+ border-block-start: var(--stroke-hairline) solid
2374
+ var(--calendar-grid-border-color, hsl(var(--border)));
2367
2375
  }
2368
2376
 
2369
2377
  .ui-calendar[data-bordered="true"] .ui-calendar-week,
2370
2378
  .ui-calendar[data-bordered="true"] .ui-calendar-weekdays {
2371
- border-inline-end: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2379
+ border-inline-end: var(--stroke-hairline) solid
2380
+ var(--calendar-grid-border-color, hsl(var(--border)));
2372
2381
  }
2373
2382
 
2374
2383
  .ui-calendar[data-bordered="true"] .ui-calendar-weekday {
@@ -2380,7 +2389,8 @@
2380
2389
  }
2381
2390
 
2382
2391
  .ui-calendar[data-bordered="true"] .ui-calendar-grid {
2383
- border-block-end: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2392
+ border-block-end: var(--stroke-hairline) solid
2393
+ var(--calendar-grid-border-color, hsl(var(--border)));
2384
2394
  }
2385
2395
 
2386
2396
  .ui-calendar[data-bordered="true"] .ui-calendar-day.invisible {
@@ -2401,8 +2411,10 @@
2401
2411
 
2402
2412
  .ui-calendar[data-bordered="true"] .ui-calendar-week-number,
2403
2413
  .ui-calendar[data-bordered="true"] .ui-calendar-week-number-header {
2404
- border-inline-start: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2405
- border-block-start: 1px solid var(--calendar-grid-border-color, hsl(var(--border)));
2414
+ border-inline-start: var(--stroke-hairline) solid
2415
+ var(--calendar-grid-border-color, hsl(var(--border)));
2416
+ border-block-start: var(--stroke-hairline) solid
2417
+ var(--calendar-grid-border-color, hsl(var(--border)));
2406
2418
  }
2407
2419
 
2408
2420
  .ui-calendar[data-bordered="true"] .ui-calendar-day {
@@ -2616,7 +2628,8 @@
2616
2628
  gap: var(--calendar-footer-space-gap);
2617
2629
  margin-block-start: var(--calendar-footer-space-block-start);
2618
2630
  padding-block-start: var(--calendar-footer-space-block-start);
2619
- border-block-start: var(--calendar-footer-border-width) solid hsl(var(--border));
2631
+ border-block-start: var(--calendar-footer-border-width, var(--stroke-hairline)) solid
2632
+ hsl(var(--border));
2620
2633
  }
2621
2634
 
2622
2635
  .ui-calendar-footer-today {
@@ -2639,7 +2652,7 @@
2639
2652
  flex: 1 1 0%;
2640
2653
  flex-direction: column;
2641
2654
  border-radius: var(--transfer-pane-radius, calc(var(--radius) / var(--radius-ratio)));
2642
- border: 1px solid hsl(var(--border));
2655
+ border: var(--stroke-hairline) solid hsl(var(--border));
2643
2656
  background: hsl(var(--background));
2644
2657
  }
2645
2658
 
@@ -2649,7 +2662,7 @@
2649
2662
  justify-content: space-between;
2650
2663
  padding-inline: var(--transfer-header-space-inline);
2651
2664
  padding-block: var(--transfer-header-space-block);
2652
- border-block-end: 1px solid hsl(var(--border));
2665
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
2653
2666
  font-size: var(--transfer-header-font-size);
2654
2667
  }
2655
2668
 
@@ -2663,7 +2676,7 @@
2663
2676
 
2664
2677
  .ui-transfer-search {
2665
2678
  padding: var(--transfer-search-space-inset);
2666
- border-block-end: 1px solid hsl(var(--border));
2679
+ border-block-end: var(--stroke-hairline) solid hsl(var(--border));
2667
2680
  }
2668
2681
 
2669
2682
  .ui-transfer-search[data-disabled] {
@@ -2956,7 +2969,7 @@
2956
2969
  .ui-control-count {
2957
2970
  flex-shrink: 0;
2958
2971
  font-size: var(--control-count-font-size);
2959
- color: hsl(var(--control-count-color));
2972
+ color: hsl(var(--control-count-color, var(--muted-foreground)));
2960
2973
  font-variant-numeric: tabular-nums;
2961
2974
  padding-inline-end: var(--control-count-space-inline);
2962
2975
  }
@@ -2985,9 +2998,10 @@
2985
2998
  block-size: var(--control-height);
2986
2999
  padding-inline: var(--input-addon-padding-inline);
2987
3000
  font-size: var(--control-font-size);
2988
- color: hsl(var(--input-addon-color));
3001
+ color: hsl(var(--input-addon-color, var(--muted-foreground)));
2989
3002
  background-color: hsl(var(--input-addon-background));
2990
- border: var(--control-border-width) solid hsl(var(--input) / var(--input-alpha, 100%));
3003
+ border: var(--control-border-width, var(--stroke-hairline)) solid
3004
+ hsl(var(--input) / var(--input-alpha, 100%));
2991
3005
  white-space: nowrap;
2992
3006
  }
2993
3007
 
@@ -3122,7 +3136,7 @@
3122
3136
  justify-content: center;
3123
3137
  inline-size: 0;
3124
3138
  font-size: var(--slider-mark-font-size);
3125
- color: hsl(var(--slider-mark-color));
3139
+ color: hsl(var(--slider-mark-color, var(--muted-foreground)));
3126
3140
  white-space: nowrap;
3127
3141
  cursor: pointer;
3128
3142
  }
@@ -3146,7 +3160,8 @@
3146
3160
  margin-inline-start: calc(var(--slider-dot-size) / -2);
3147
3161
  border-radius: var(--radius-pill);
3148
3162
  background: hsl(var(--slider-dot-background));
3149
- border: var(--control-border-width) solid hsl(var(--slider-dot-border-color));
3163
+ border: var(--control-border-width, var(--stroke-hairline)) solid
3164
+ hsl(var(--slider-dot-border-color));
3150
3165
  }
3151
3166
 
3152
3167
  .ui-slider[data-orientation="vertical"] .ui-slider-dot {
@@ -3256,15 +3271,16 @@
3256
3271
  block-size: var(--control-height);
3257
3272
  padding-inline: var(--control-padding-x);
3258
3273
  font-size: var(--control-font-size);
3259
- color: hsl(var(--choice-button-color));
3274
+ color: hsl(var(--choice-button-color, var(--foreground)));
3260
3275
  background: hsl(var(--choice-button-background));
3261
- border: var(--control-border-width) solid hsl(var(--choice-button-border-color));
3276
+ border: var(--control-border-width, var(--stroke-hairline)) solid
3277
+ hsl(var(--choice-button-border-color));
3262
3278
  border-inline-start-width: 0;
3263
3279
  cursor: pointer;
3264
3280
  }
3265
3281
 
3266
3282
  .ui-radio-button:first-child {
3267
- border-inline-start-width: var(--control-border-width);
3283
+ border-inline-start-width: var(--control-border-width, var(--stroke-hairline));
3268
3284
  border-start-start-radius: var(--control-radius);
3269
3285
  border-end-start-radius: var(--control-radius);
3270
3286
  }