@godxjp/ui 19.4.2 → 19.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/app/app-provider.js +10 -1
  2. package/dist/app/theme-axes.d.ts +18 -3
  3. package/dist/app/theme-axes.js +15 -3
  4. package/dist/components/data-display/badge.js +4 -1
  5. package/dist/components/data-display/data-table.js +9 -2
  6. package/dist/components/data-entry/checkbox.d.ts +12 -0
  7. package/dist/components/data-entry/checkbox.js +34 -3
  8. package/dist/components/data-entry/index.d.ts +2 -0
  9. package/dist/components/data-entry/index.js +2 -0
  10. package/dist/components/data-entry/segmented.d.ts +2 -0
  11. package/dist/components/data-entry/segmented.js +5 -0
  12. package/dist/components/data-entry/select.d.ts +2 -0
  13. package/dist/components/data-entry/select.js +8 -3
  14. package/dist/components/feedback/sheet.js +1 -1
  15. package/dist/components/feedback/sonner.d.ts +7 -1
  16. package/dist/components/feedback/sonner.js +27 -7
  17. package/dist/components/general/button.js +6 -1
  18. package/dist/components/general/inert-background.d.ts +8 -3
  19. package/dist/components/general/inert-background.js +26 -2
  20. package/dist/components/general/logo.d.ts +53 -0
  21. package/dist/components/general/logo.js +57 -3
  22. package/dist/components/layout/index.d.ts +4 -0
  23. package/dist/components/layout/index.js +4 -0
  24. package/dist/components/layout/nav-list.d.ts +26 -0
  25. package/dist/components/layout/nav-list.js +21 -0
  26. package/dist/components/layout/topbar-item.d.ts +17 -0
  27. package/dist/components/layout/topbar-item.js +21 -0
  28. package/dist/components/navigation/app-setting-picker.js +22 -5
  29. package/dist/components/navigation/context-menu.js +2 -2
  30. package/dist/components/navigation/dropdown-menu.js +2 -2
  31. package/dist/components/navigation/tabs.js +42 -10
  32. package/dist/components/ui/segmented.d.ts +48 -0
  33. package/dist/components/ui/segmented.js +48 -0
  34. package/dist/email/tokens.generated.d.ts +3 -3
  35. package/dist/email/tokens.generated.js +3 -3
  36. package/dist/i18n/messages/en.json +2 -1
  37. package/dist/i18n/messages/ja.json +2 -1
  38. package/dist/i18n/messages/vi.json +2 -1
  39. package/dist/props/components/app.prop.d.ts +9 -2
  40. package/dist/props/components/layout.prop.d.ts +48 -2
  41. package/dist/props/registry.d.ts +19 -0
  42. package/dist/props/registry.js +27 -0
  43. package/dist/props/vocabulary/shared.prop.d.ts +11 -2
  44. package/dist/styles/alert-layout.css +4 -0
  45. package/dist/styles/base.css +2 -0
  46. package/dist/styles/control.css +94 -26
  47. package/dist/styles/data-display-layout.css +2 -1
  48. package/dist/styles/dialog-layout.css +2 -1
  49. package/dist/styles/focus-ring.css +77 -24
  50. package/dist/styles/layout.css +2 -1
  51. package/dist/styles/logo-layout.css +56 -0
  52. package/dist/styles/navigation-layout.css +15 -0
  53. package/dist/styles/shell-layout.css +64 -10
  54. package/dist/tokens/antd.generated.css +40 -0
  55. package/dist/tokens/axes.css +6 -0
  56. package/dist/tokens/base.css +3 -0
  57. package/dist/tokens/components/control.css +5 -1
  58. package/dist/tokens/components/feedback.css +2 -0
  59. package/dist/tokens/components/legal-document.css +0 -2
  60. package/dist/tokens/components/logo.css +13 -0
  61. package/dist/tokens/components/navigation.css +2 -0
  62. package/dist/tokens/components/segmented.css +27 -0
  63. package/dist/tokens/components/shell.css +15 -2
  64. package/dist/tokens/foundation.css +19 -12
  65. package/docs/DESIGN-AUTHORITY.md +346 -0
  66. package/docs/FRAME-COVERAGE-REPORT.md +5 -2
  67. package/docs/README.md +14 -13
  68. package/docs/data-entry/segmented.tsx +124 -0
  69. package/docs/layout/nav-list.tsx +63 -0
  70. package/docs/layout/topbar-item.tsx +157 -0
  71. package/package.json +8 -2
@@ -191,6 +191,10 @@
191
191
  block-size: var(--toast-icon-size);
192
192
  }
193
193
 
194
+ [data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"] > * {
195
+ visibility: hidden;
196
+ }
197
+
194
198
  .ui-skeleton-block {
195
199
  border-radius: var(--skeleton-radius);
196
200
  background: var(--skeleton-background, hsl(var(--muted)));
@@ -1,6 +1,8 @@
1
1
 
2
2
  @import "tailwindcss";
3
3
 
4
+ @import "tw-animate-css";
5
+
4
6
  @layer godxjp-ui-responsive;
5
7
 
6
8
  [lang="ja"] {
@@ -106,7 +106,7 @@
106
106
  }
107
107
 
108
108
  .ui-button--default:hover {
109
- background: hsl(var(--primary) / 0.9);
109
+ background: hsl(var(--primary-hover));
110
110
  }
111
111
 
112
112
  .ui-button--destructive {
@@ -550,7 +550,8 @@
550
550
  width: 100%;
551
551
  height: 100%;
552
552
  flex-direction: column;
553
- overflow: hidden;
553
+ overflow: clip;
554
+ overflow-clip-margin: var(--focus-ring-clip-margin);
554
555
  border-radius: var(--control-radius);
555
556
  background: hsl(var(--popover));
556
557
  color: hsl(var(--popover-foreground));
@@ -823,33 +824,28 @@
823
824
  .ui-otp-group[data-appearance="grouped"] .ui-otp-slot[data-active="true"] {
824
825
  box-shadow: none;
825
826
  }
827
+
826
828
  .ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
827
- border-color: hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
828
- box-shadow: 0 0 0 var(--focus-ring-width)
829
- hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
829
+ border-color: hsl(var(--focus-ring-color, var(--ring)));
830
+ }
831
+
832
+ .ui-otp-container:has(.ui-otp-input[aria-invalid="true"]) {
833
+ --focus-ring-color: var(--destructive);
830
834
  }
831
835
  .ui-otp-container:has(.ui-otp-input[aria-invalid="true"])
832
836
  .ui-otp-group[data-appearance="grouped"] {
833
837
  border-color: hsl(var(--destructive));
834
838
  }
835
- .ui-otp-container:has(.ui-otp-input[aria-invalid="true"])
836
- .ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
837
- box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--destructive));
838
- }
839
839
  .ui-otp-container:has(.ui-otp-input:disabled) .ui-otp-group[data-appearance="grouped"] {
840
840
  background: hsl(var(--muted));
841
841
  }
842
+
842
843
  .ui-otp-slot[data-active="true"] {
843
844
  z-index: 1;
844
- box-shadow: 0 0 0 var(--focus-ring-width)
845
- hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
846
845
  }
847
846
  .ui-otp-container:has(.ui-otp-input[aria-invalid="true"]) .ui-otp-slot {
848
847
  border-color: hsl(var(--destructive));
849
848
  }
850
- .ui-otp-container:has(.ui-otp-input[aria-invalid="true"]) .ui-otp-slot[data-active="true"] {
851
- box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--destructive));
852
- }
853
849
  .ui-otp-container:has(.ui-otp-input:disabled) .ui-otp-slot {
854
850
  cursor: not-allowed;
855
851
  background: hsl(var(--muted));
@@ -917,6 +913,73 @@
917
913
  border-radius: var(--radius-sm);
918
914
  }
919
915
 
916
+ .ui-segmented {
917
+ display: inline-flex;
918
+ max-width: 100%;
919
+ align-items: stretch;
920
+ padding: var(--segmented-track-padding);
921
+ border-radius: var(--segmented-track-radius);
922
+ background: hsl(var(--segmented-track-background));
923
+ color: hsl(var(--segmented-item-color));
924
+ font-size: var(--font-size-base);
925
+ }
926
+
927
+ .ui-segmented-item {
928
+ display: inline-flex;
929
+ min-width: 0;
930
+ height: var(--segmented-item-height);
931
+ align-items: center;
932
+ justify-content: center;
933
+ gap: var(--segmented-item-gap);
934
+ padding-inline: var(--segmented-item-padding-inline);
935
+ border: 0;
936
+ border-radius: var(--segmented-item-radius);
937
+ background: transparent;
938
+ color: inherit;
939
+ cursor: pointer;
940
+
941
+ font: inherit;
942
+ white-space: nowrap;
943
+
944
+ transition: color var(--duration-fast);
945
+ }
946
+
947
+ .ui-segmented-item:not([data-state="checked"]):not([data-disabled]):hover {
948
+ background: hsl(var(--segmented-item-hover-background));
949
+ color: hsl(var(--segmented-item-hover-color));
950
+ }
951
+ .ui-segmented-item:not([data-state="checked"]):not([data-disabled]):active {
952
+ background: hsl(var(--segmented-item-active-background));
953
+ }
954
+
955
+ .ui-segmented-item[data-state="checked"] {
956
+ background: hsl(var(--segmented-item-selected-background));
957
+ box-shadow: var(--segmented-item-selected-shadow);
958
+ color: hsl(var(--segmented-item-selected-color));
959
+ }
960
+
961
+ .ui-segmented-item[data-disabled] {
962
+ opacity: var(--disabled-opacity);
963
+ cursor: not-allowed;
964
+ }
965
+
966
+ .ui-segmented-item-label {
967
+ overflow: hidden;
968
+ text-overflow: ellipsis;
969
+ }
970
+
971
+ .ui-segmented-item-icon {
972
+ display: inline-flex;
973
+ flex: 0 0 auto;
974
+ align-items: center;
975
+ }
976
+ .ui-segmented-item-icon > svg {
977
+ width: var(--icon-size-md);
978
+ height: var(--icon-size-md);
979
+ display: inline-block;
980
+ vertical-align: middle;
981
+ }
982
+
920
983
  .ui-tag-input {
921
984
  display: flex;
922
985
  flex-wrap: wrap;
@@ -1008,6 +1071,11 @@
1008
1071
  cursor: not-allowed;
1009
1072
  }
1010
1073
 
1074
+ .ui-control-trigger[data-width="bounded"] {
1075
+ inline-size: var(--control-bounded-width);
1076
+ max-inline-size: 100%;
1077
+ }
1078
+
1011
1079
  .ui-control[data-size="sm"] {
1012
1080
  --control-height: var(--control-height-sm);
1013
1081
  }
@@ -1112,16 +1180,16 @@
1112
1180
  }
1113
1181
 
1114
1182
  .ui-search-select-panel {
1183
+ --popover-surface-inline-size: max-content;
1184
+ --popover-space-inset: 0;
1115
1185
  display: flex;
1116
1186
  flex-direction: column;
1117
1187
  max-block-size: var(--radix-popover-content-available-height);
1118
- inline-size: max-content;
1119
1188
  max-inline-size: min(
1120
1189
  var(--search-select-panel-max-width),
1121
1190
  calc(100vw - var(--search-select-panel-viewport-inset))
1122
1191
  );
1123
1192
  min-inline-size: var(--radix-popover-trigger-width);
1124
- padding: 0;
1125
1193
  }
1126
1194
 
1127
1195
  .ui-search-select-command {
@@ -1271,9 +1339,9 @@
1271
1339
  }
1272
1340
 
1273
1341
  .ui-cascader-popover {
1274
- inline-size: auto;
1342
+ --popover-surface-inline-size: auto;
1343
+ --popover-space-inset: 0;
1275
1344
  min-inline-size: var(--radix-popover-trigger-width);
1276
- padding: 0;
1277
1345
  }
1278
1346
 
1279
1347
  .ui-cascader-empty {
@@ -1479,13 +1547,13 @@
1479
1547
  }
1480
1548
 
1481
1549
  .ui-time-picker-popover {
1482
- inline-size: auto;
1483
- padding: 0;
1550
+ --popover-surface-inline-size: auto;
1551
+ --popover-space-inset: 0;
1484
1552
  }
1485
1553
 
1486
1554
  .ui-control-panel-flush {
1487
- inline-size: auto;
1488
- padding: 0;
1555
+ --popover-surface-inline-size: auto;
1556
+ --popover-space-inset: 0;
1489
1557
  }
1490
1558
 
1491
1559
  .ui-control-inline-affix-pair-affixed {
@@ -1584,8 +1652,8 @@
1584
1652
  @layer components {
1585
1653
 
1586
1654
  .ui-tree-select-popover {
1587
- inline-size: var(--radix-popover-trigger-width);
1588
- padding: 0;
1655
+ --popover-surface-inline-size: var(--radix-popover-trigger-width);
1656
+ --popover-space-inset: 0;
1589
1657
  }
1590
1658
 
1591
1659
  .ui-tree-select-list {
@@ -1968,8 +2036,8 @@
1968
2036
  }
1969
2037
 
1970
2038
  .ui-month-picker-panel {
1971
- inline-size: auto;
1972
- padding: var(--month-picker-panel-space-inset);
2039
+ --popover-surface-inline-size: auto;
2040
+ --popover-space-inset: var(--month-picker-panel-space-inset);
1973
2041
  }
1974
2042
 
1975
2043
  .ui-month-picker-nav {
@@ -412,7 +412,8 @@
412
412
  }
413
413
 
414
414
  .ui-carousel-viewport {
415
- overflow: hidden;
415
+ overflow: clip;
416
+ overflow-clip-margin: var(--focus-ring-clip-margin);
416
417
  }
417
418
 
418
419
  .ui-carousel-content {
@@ -256,7 +256,8 @@
256
256
 
257
257
  .ui-popover-content {
258
258
  z-index: var(--overlay-z-index);
259
- width: var(--popover-width);
259
+
260
+ width: var(--popover-surface-inline-size, var(--popover-width));
260
261
  padding: var(--popover-space-inset);
261
262
  border-radius: var(--popover-radius);
262
263
  border: 1px solid var(--popover-surface-border-color, hsl(var(--border)));
@@ -3,11 +3,13 @@
3
3
 
4
4
  :is(
5
5
  .ui-focus-ring,
6
- .ui-button,
7
- .ui-control,
6
+ .ui-focus-ring-outline,
8
7
  .ui-input,
8
+ .ui-control,
9
9
  .ui-control-multiline,
10
10
  .ui-control-trigger,
11
+ .ui-tag-input,
12
+ .ui-button,
11
13
  .ui-toggle,
12
14
  .ui-checkbox,
13
15
  .ui-radio,
@@ -17,36 +19,78 @@
17
19
  .ui-pagination-link,
18
20
  .ui-legal-document-toc-link,
19
21
  .ui-code-block,
22
+ .ui-accordion-trigger,
23
+ .ui-carousel-dot,
24
+ .ui-rating-star,
25
+ a.ui-list-row,
26
+ .sb-nav-item,
20
27
  .sb-user,
21
28
  .tb-icon-btn
22
29
  ):focus-visible,
23
30
  .ui-control-trigger[data-state="open"],
24
31
  .ui-tag-input:focus-within,
25
32
  .ui-control-composite-field:focus-within,
26
- .ui-control-composite-field[data-state="open"] {
27
- outline: none;
33
+ .ui-control-composite-field[data-state="open"],
34
+ .ui-otp-slot[data-active="true"],
35
+ .ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
36
+ outline: var(--focus-ring-width) solid
37
+ hsl(var(--focus-outline-color) / var(--focus-ring-opacity, 1));
38
+ outline-offset: var(--focus-ring-offset);
28
39
 
29
- --tw-ring-shadow: 0 0 0 var(--focus-ring-width)
30
- hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
31
- box-shadow: 0 0 0 var(--focus-ring-width)
32
- hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
40
+ transition:
41
+ outline-offset 0s,
42
+ outline 0s;
33
43
  }
34
44
 
35
- :is(
36
- .ui-focus-ring-outline,
37
- a.ui-list-row,
38
- .ui-accordion-trigger,
39
- .ui-carousel-dot,
40
- .ui-rating-star,
41
- .ui-legal-document-section
42
- ):focus-visible {
43
- outline: var(--focus-ring-width) solid
44
- hsl(var(--focus-ring-color, var(--ring)) / var(--focus-ring-opacity, 1));
45
- outline-offset: var(--focus-ring-offset, 0px);
45
+ :root[data-focus-outline="on"]
46
+ :is(
47
+ .ui-focus-ring,
48
+ .ui-focus-ring-outline,
49
+ .ui-input,
50
+ .ui-control,
51
+ .ui-control-multiline,
52
+ .ui-control-trigger,
53
+ .ui-tag-input,
54
+ .ui-button,
55
+ .ui-toggle,
56
+ .ui-checkbox,
57
+ .ui-radio,
58
+ .ui-slider-thumb,
59
+ .ui-switch,
60
+ .ui-steps-inline-control,
61
+ .ui-pagination-link,
62
+ .ui-legal-document-toc-link,
63
+ .ui-code-block,
64
+ .ui-accordion-trigger,
65
+ .ui-carousel-dot,
66
+ .ui-rating-star,
67
+ a.ui-list-row,
68
+ .sb-nav-item,
69
+ .sb-user,
70
+ .tb-icon-btn
71
+ ):focus-visible,
72
+ :root[data-focus-outline="on"] .ui-control-trigger[data-state="open"],
73
+ :root[data-focus-outline="on"] .ui-tag-input:focus-within,
74
+ :root[data-focus-outline="on"] .ui-control-composite-field:focus-within,
75
+ :root[data-focus-outline="on"] .ui-control-composite-field[data-state="open"],
76
+ :root[data-focus-outline="on"] .ui-otp-slot[data-active="true"],
77
+ :root[data-focus-outline="on"]
78
+ .ui-otp-group[data-appearance="grouped"]:has(.ui-otp-slot[data-active="true"]) {
79
+ --tw-ring-shadow: var(--focus-field-shadow);
80
+ box-shadow: var(--focus-field-shadow);
81
+ }
82
+
83
+ :root[data-focus-outline="on"]
84
+ :is(.ui-input, .ui-control, .ui-control-multiline, .ui-control-trigger, .ui-tag-input):focus-visible,
85
+ :root[data-focus-outline="on"] .ui-control-trigger[data-state="open"],
86
+ :root[data-focus-outline="on"] .ui-tag-input:focus-within,
87
+ :root[data-focus-outline="on"] .ui-control-composite-field:focus-within,
88
+ :root[data-focus-outline="on"] .ui-control-composite-field[data-state="open"] {
89
+ --input: var(--focus-ring-color, var(--ring));
46
90
  }
47
91
 
48
92
  .ui-toggle {
49
- --focus-ring-width: var(--toggle-focus-ring-width);
93
+ --focus-ring-weight: var(--toggle-focus-ring-width);
50
94
  --focus-ring-opacity: var(--toggle-focus-ring-alpha);
51
95
  }
52
96
 
@@ -58,7 +102,9 @@
58
102
  --focus-ring-opacity: var(--topbar-icon-focus-ring-alpha);
59
103
  }
60
104
 
61
- a.ui-list-row {
105
+ a.ui-list-row,
106
+ tr.ui-focus-ring,
107
+ .sb-nav-item {
62
108
  --focus-ring-offset: calc(-1 * var(--focus-ring-width));
63
109
  }
64
110
 
@@ -74,17 +120,24 @@
74
120
  --focus-ring-offset: var(--rating-focus-ring-offset);
75
121
  }
76
122
 
77
- .ui-legal-document-section {
78
- --focus-ring-offset: var(--legal-document-section-focus-ring-offset);
123
+ :is(.ui-control, .ui-input, .ui-control-multiline, .ui-tag-input):not(
124
+ .ui-app-setting-picker-icon,
125
+ .ui-app-setting-picker-inline
126
+ ) {
127
+ --focus-ring-weight: var(--control-focus-ring-width);
79
128
  }
80
129
 
81
130
  .ui-command-input:focus-visible {
82
- --focus-ring-width: 0;
131
+ --focus-field-shadow: none;
132
+ --focus-ring-weight: 0px;
83
133
  outline: none;
84
134
  box-shadow: none;
85
135
  }
86
136
 
87
137
  [aria-invalid="true"] {
88
138
  --focus-ring-color: var(--destructive);
139
+ --focus-outline-color: var(--destructive);
140
+ --focus-ring-glow-color: var(--control-outline-error);
141
+ --focus-ring-glow-alpha: var(--control-outline-error-alpha);
89
142
  }
90
143
  }
@@ -80,7 +80,8 @@
80
80
  }
81
81
 
82
82
  .ui-aspect-ratio {
83
- overflow: hidden;
83
+ overflow: clip;
84
+ overflow-clip-margin: var(--focus-ring-clip-margin);
84
85
  }
85
86
 
86
87
  .ui-brand-glow {
@@ -15,6 +15,62 @@
15
15
  user-select: none;
16
16
  }
17
17
 
18
+ .ui-logo-glyph {
19
+ --logo-glyph-advance-width: max(
20
+ var(--logo-glyph-fullwidth-width),
21
+ calc(
22
+ var(--logo-glyph-fullwidth-count, 0) * var(--logo-glyph-fullwidth-width) +
23
+ var(--logo-glyph-wide-count, 0) * var(--logo-glyph-wide-width) +
24
+ var(--logo-glyph-narrow-count, 0) * var(--logo-glyph-narrow-width) +
25
+ var(--logo-glyph-space-count, 0) * var(--logo-glyph-space-width)
26
+ )
27
+ );
28
+
29
+ white-space: nowrap;
30
+ font-size: min(
31
+ var(--logo-font-size-md),
32
+ calc(var(--logo-size-md) * var(--logo-glyph-fit-max-width) / var(--logo-glyph-advance-width))
33
+ );
34
+ translate: 0 var(--logo-glyph-optical-offset, 0em);
35
+ }
36
+
37
+ .ui-logo[data-size="xs"] .ui-logo-glyph {
38
+ font-size: min(
39
+ var(--logo-font-size-xs),
40
+ calc(var(--logo-size-xs) * var(--logo-glyph-fit-max-width) / var(--logo-glyph-advance-width))
41
+ );
42
+ }
43
+
44
+ .ui-logo[data-size="sm"] .ui-logo-glyph {
45
+ font-size: min(
46
+ var(--logo-font-size-sm),
47
+ calc(var(--logo-size-sm) * var(--logo-glyph-fit-max-width) / var(--logo-glyph-advance-width))
48
+ );
49
+ }
50
+
51
+ .ui-logo[data-size="lg"] .ui-logo-glyph {
52
+ font-size: min(
53
+ var(--logo-font-size-lg),
54
+ calc(var(--logo-size-lg) * var(--logo-glyph-fit-max-width) / var(--logo-glyph-advance-width))
55
+ );
56
+ }
57
+
58
+ .ui-logo-glyph[data-ink="cap-baseline"] {
59
+ translate: 0 var(--logo-glyph-optical-offset, var(--logo-glyph-cap-baseline-optical-offset));
60
+ }
61
+
62
+ .ui-logo-glyph[data-ink="cap-descender"] {
63
+ translate: 0 var(--logo-glyph-optical-offset, var(--logo-glyph-cap-descender-optical-offset));
64
+ }
65
+
66
+ .ui-logo-glyph[data-ink="x-baseline"] {
67
+ translate: 0 var(--logo-glyph-optical-offset, var(--logo-glyph-x-baseline-optical-offset));
68
+ }
69
+
70
+ .ui-logo-glyph[data-ink="x-descender"] {
71
+ translate: 0 var(--logo-glyph-optical-offset, var(--logo-glyph-x-descender-optical-offset));
72
+ }
73
+
18
74
  .ui-logo[data-size="xs"] {
19
75
  width: var(--logo-size-xs);
20
76
  height: var(--logo-size-xs);
@@ -127,6 +127,20 @@
127
127
  font-size: var(--menu-item-font-size);
128
128
  }
129
129
 
130
+ .ui-context-menu-item > svg,
131
+ .ui-context-menu-checkbox-item > svg,
132
+ .ui-context-menu-radio-item > svg,
133
+ .ui-menubar-item > svg,
134
+ .ui-menubar-checkbox-item > svg,
135
+ .ui-menubar-radio-item > svg,
136
+ .ui-dropdown-menu-item > svg,
137
+ .ui-dropdown-menu-checkbox-item > svg,
138
+ .ui-dropdown-menu-radio-item > svg {
139
+ width: var(--menu-icon-size);
140
+ height: var(--menu-icon-size);
141
+ flex: 0 0 auto;
142
+ }
143
+
130
144
  .ui-dropdown-menu-item[data-inset="true"],
131
145
  .ui-dropdown-menu-label[data-inset="true"],
132
146
  .ui-dropdown-menu-sub-trigger[data-inset="true"] {
@@ -209,6 +223,7 @@
209
223
  .ui-context-menu-label,
210
224
  .ui-menubar-label,
211
225
  .ui-dropdown-menu-label {
226
+ height: auto;
212
227
  min-height: var(--menu-item-height);
213
228
  color: hsl(var(--muted-foreground));
214
229
  font-weight: var(--font-weight-medium);
@@ -85,7 +85,7 @@
85
85
 
86
86
  .app-main:focus-visible {
87
87
  outline: none;
88
- box-shadow: inset 0 0 0 var(--region-focus-ring-width)
88
+ box-shadow: inset 0 0 0 calc(var(--region-focus-ring-width) * var(--focus-outline))
89
89
  var(--region-focus-ring-color, hsl(var(--focus-ring-color, var(--ring))));
90
90
  }
91
91
 
@@ -497,7 +497,7 @@
497
497
  display: none;
498
498
  }
499
499
 
500
- .app-mobile-nav-trigger {
500
+ .app-root .app-mobile-nav-trigger {
501
501
  display: none;
502
502
  flex: 0 0 auto;
503
503
  margin-inline-end: var(--space-1);
@@ -557,7 +557,7 @@
557
557
  display: flex;
558
558
  }
559
559
 
560
- .app-mobile-nav-trigger {
560
+ .app-root .app-mobile-nav-trigger {
561
561
  display: inline-flex;
562
562
  }
563
563
 
@@ -827,6 +827,13 @@
827
827
  gap: var(--sidebar-nav-gap);
828
828
  }
829
829
 
830
+ .ui-nav-list {
831
+ display: flex;
832
+ min-width: 0;
833
+ flex-direction: column;
834
+ gap: var(--sidebar-nav-gap);
835
+ }
836
+
830
837
  .sb-nav-item {
831
838
  display: flex;
832
839
  width: 100%;
@@ -848,11 +855,6 @@
848
855
  text-align: start;
849
856
  }
850
857
 
851
- .sb-nav-item:focus-visible {
852
- outline: none;
853
- box-shadow: 0 0 0 var(--focus-ring-width) hsl(var(--focus-ring-color, var(--ring)));
854
- }
855
-
856
858
  .sb-nav-item:hover {
857
859
  background: hsl(var(--accent));
858
860
  color: var(--sidebar-nav-item-hover-foreground, hsl(var(--foreground)));
@@ -1144,6 +1146,8 @@
1144
1146
  max-width: 100%;
1145
1147
  min-width: 0;
1146
1148
  flex: 1 1 0%;
1149
+
1150
+ align-self: stretch;
1147
1151
  align-items: center;
1148
1152
  gap: var(--topbar-gap);
1149
1153
  padding-inline: var(--topbar-inset);
@@ -1156,6 +1160,8 @@
1156
1160
  .ui-topbar-end {
1157
1161
  display: flex;
1158
1162
  min-width: 0;
1163
+
1164
+ align-self: stretch;
1159
1165
  align-items: center;
1160
1166
  gap: var(--topbar-gap);
1161
1167
  overflow: clip;
@@ -1175,11 +1181,13 @@
1175
1181
  .ui-topbar-start {
1176
1182
  flex: 0 1 auto;
1177
1183
  }
1184
+
1178
1185
  .ui-topbar-start > :last-child {
1179
1186
  max-width: 100%;
1180
1187
  min-width: 0;
1181
1188
  flex: 0 1 auto;
1182
- overflow: hidden;
1189
+ overflow: clip;
1190
+ overflow-clip-margin: var(--focus-ring-clip-margin);
1183
1191
  line-height: var(--topbar-start-truncate-line-height);
1184
1192
  text-overflow: ellipsis;
1185
1193
  white-space: nowrap;
@@ -1194,6 +1202,52 @@
1194
1202
  margin-inline-start: auto;
1195
1203
  }
1196
1204
 
1205
+ .ui-topbar-item {
1206
+ display: inline-flex;
1207
+ min-width: var(--topbar-item-min-width);
1208
+ flex: 0 0 auto;
1209
+ align-self: stretch;
1210
+ align-items: center;
1211
+ justify-content: center;
1212
+ gap: var(--topbar-item-gap);
1213
+ padding-inline: var(--topbar-item-padding-inline);
1214
+ border: 0;
1215
+ border-radius: var(--topbar-item-radius);
1216
+ background: transparent;
1217
+ color: hsl(var(--topbar-item-color));
1218
+ cursor: pointer;
1219
+
1220
+ font: inherit;
1221
+ white-space: nowrap;
1222
+ --focus-ring-offset: var(--topbar-item-focus-ring-offset);
1223
+ transition:
1224
+ background-color var(--duration-fast),
1225
+ color var(--duration-fast);
1226
+ }
1227
+
1228
+ .ui-topbar-item:hover {
1229
+ background: hsl(var(--topbar-item-hover-background));
1230
+ color: hsl(var(--topbar-item-hover-color));
1231
+ }
1232
+
1233
+ .ui-topbar-item:active,
1234
+ .ui-topbar-item[data-state="open"] {
1235
+ background: hsl(var(--topbar-item-active-background));
1236
+ color: hsl(var(--topbar-item-hover-color));
1237
+ }
1238
+
1239
+ .ui-topbar-item:disabled,
1240
+ .ui-topbar-item[data-disabled] {
1241
+ opacity: var(--disabled-opacity);
1242
+ cursor: not-allowed;
1243
+ }
1244
+
1245
+ .ui-topbar-item > svg {
1246
+ width: var(--topbar-icon-size);
1247
+ height: var(--topbar-icon-size);
1248
+ flex: 0 0 auto;
1249
+ }
1250
+
1197
1251
  @media (width <= 68.75rem) {
1198
1252
  .ui-topbar-center {
1199
1253
  display: var(--topbar-center-compact-display);
@@ -1518,7 +1572,7 @@
1518
1572
 
1519
1573
  .ui-mobile-shell-main:focus-visible {
1520
1574
  outline: none;
1521
- box-shadow: inset 0 0 0 var(--region-focus-ring-width)
1575
+ box-shadow: inset 0 0 0 calc(var(--region-focus-ring-width) * var(--focus-outline))
1522
1576
  var(--region-focus-ring-color, hsl(var(--focus-ring-color, var(--ring))));
1523
1577
  }
1524
1578
 
@@ -0,0 +1,40 @@
1
+
2
+
3
+ :root {
4
+
5
+ --primary-hover: 206 100% 29.4%;
6
+
7
+ --primary-active: 208 100% 22%;
8
+
9
+ --primary-border: 198 68% 66%;
10
+ --destructive-hover: 359 50.6% 53.1%;
11
+ --destructive-active: 355 70.6% 33.3%;
12
+
13
+ --control-outline: 192.1 100% 44.7%;
14
+ --control-outline-alpha: 0.11;
15
+
16
+ --control-outline-error: 4.3 87.6% 34.7%;
17
+ --control-outline-error-alpha: 0.09;
18
+
19
+ --ring: var(--primary);
20
+ }
21
+
22
+ .dark,
23
+ :root[data-theme="dark"] {
24
+
25
+ --primary-hover: 202.2 74.6% 64.5%;
26
+
27
+ --primary-active: 200.2 81.3% 74.9%;
28
+
29
+ --primary-border: 204.6 46.7% 23.5%;
30
+ --destructive-hover: 358.8 42.3% 53.1%;
31
+ --destructive-active: 357.3 50.6% 34.1%;
32
+
33
+ --control-outline: 204.6 99% 61.8%;
34
+ --control-outline-alpha: 0.29;
35
+
36
+ --control-outline-error: 351.5 98.3% 53.5%;
37
+ --control-outline-error-alpha: 0.06;
38
+
39
+ --ring: var(--primary);
40
+ }