@godxjp/ui 22.0.0 → 23.1.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 (115) hide show
  1. package/README.md +4 -4
  2. package/dist/app/date-format-labels.d.ts +14 -2
  3. package/dist/app/date-format-labels.js +1 -1
  4. package/dist/app/date-formats.d.ts +14 -2
  5. package/dist/app/date-formats.js +9 -2
  6. package/dist/components/data-display/data-table.d.ts +8 -1
  7. package/dist/components/data-display/data-table.js +9 -2
  8. package/dist/components/data-display/scroll-area.d.ts +24 -4
  9. package/dist/components/data-display/scroll-area.js +34 -72
  10. package/dist/components/data-entry/cascader.js +8 -6
  11. package/dist/components/data-entry/checkbox.js +3 -1
  12. package/dist/components/data-entry/choice-hit-target.d.ts +24 -0
  13. package/dist/components/data-entry/choice-hit-target.js +12 -0
  14. package/dist/components/data-entry/control-surface.d.ts +8 -0
  15. package/dist/components/data-entry/control-surface.js +10 -1
  16. package/dist/components/data-entry/form-field.js +5 -4
  17. package/dist/components/data-entry/input.js +1 -1
  18. package/dist/components/data-entry/number-input.js +27 -6
  19. package/dist/components/data-entry/radio.js +4 -3
  20. package/dist/components/data-entry/search-select.js +225 -95
  21. package/dist/components/data-entry/select.d.ts +76 -14
  22. package/dist/components/data-entry/select.js +495 -163
  23. package/dist/components/data-entry/slider.d.ts +3 -11
  24. package/dist/components/data-entry/slider.js +582 -93
  25. package/dist/components/data-entry/switch.js +3 -1
  26. package/dist/components/feedback/dialog.js +2 -2
  27. package/dist/components/feedback/sheet.js +2 -22
  28. package/dist/components/navigation/dropdown-menu.d.ts +11 -3
  29. package/dist/components/navigation/dropdown-menu.js +190 -15
  30. package/dist/components/navigation/filter-bar.js +2 -1
  31. package/dist/components/navigation/index.d.ts +0 -3
  32. package/dist/components/navigation/index.js +0 -78
  33. package/dist/components/navigation/tabs.js +16 -4
  34. package/dist/components/ui/index.d.ts +0 -3
  35. package/dist/components/ui/index.js +0 -3
  36. package/dist/components/ui/input-otp.d.ts +1 -1
  37. package/dist/components/ui/segmented.js +3 -1
  38. package/dist/components/ui/tag-input.js +3 -5
  39. package/dist/i18n/messages/en.json +5 -1
  40. package/dist/i18n/messages/ja.json +5 -1
  41. package/dist/i18n/messages/vi.json +5 -1
  42. package/dist/lib/breakpoint-token.d.ts +8 -0
  43. package/dist/lib/breakpoint-token.js +29 -0
  44. package/dist/lib/select-options.d.ts +21 -0
  45. package/dist/lib/select-options.js +46 -0
  46. package/dist/props/components/data-display.prop.d.ts +17 -7
  47. package/dist/props/components/data-entry.prop.d.ts +323 -30
  48. package/dist/props/components/index.d.ts +1 -1
  49. package/dist/props/components/navigation.prop.d.ts +25 -1
  50. package/dist/props/registry.d.ts +69 -1
  51. package/dist/props/registry.js +75 -0
  52. package/dist/props/vocabulary/data.prop.d.ts +5 -0
  53. package/dist/props/vocabulary/index.d.ts +1 -1
  54. package/dist/styles/control.css +246 -28
  55. package/dist/styles/data-display-layout.css +18 -10
  56. package/dist/styles/focus-ring.css +28 -0
  57. package/dist/styles/fonts.css +88 -4
  58. package/dist/styles/form-layout.css +4 -0
  59. package/dist/styles/layout.css +2 -1
  60. package/dist/styles/navigation-layout.css +24 -238
  61. package/dist/styles/shell-layout.css +148 -139
  62. package/dist/styles/table-layout.css +12 -5
  63. package/dist/tokens/components/control.css +12 -3
  64. package/dist/tokens/components/data-display.css +0 -5
  65. package/dist/tokens/components/navigation.css +5 -5
  66. package/dist/tokens/components/scroll-area.css +7 -0
  67. package/docs/CONSUMER-RULES.md +7 -2
  68. package/docs/CUSTOMER-THEMING.md +25 -9
  69. package/docs/DATETIME.md +11 -2
  70. package/docs/FRAME-COVERAGE-REPORT.md +4 -7
  71. package/docs/SPACING.md +35 -5
  72. package/docs/TOKENS.md +1 -1
  73. package/docs/data-display/data-table/index.tsx +44 -3
  74. package/docs/data-display/popover.tsx +4 -6
  75. package/docs/data-display/scroll-area.tsx +51 -45
  76. package/docs/data-display/table.tsx +1 -1
  77. package/docs/data-entry/date-picker.tsx +2 -3
  78. package/docs/data-entry/input-otp.tsx +5 -2
  79. package/docs/data-entry/segmented-in-filter-row.tsx +77 -0
  80. package/docs/data-entry/segmented.tsx +40 -1
  81. package/docs/data-entry/select-matrix.tsx +1 -2
  82. package/docs/data-entry/select.tsx +108 -3
  83. package/docs/data-entry/slider.tsx +125 -47
  84. package/docs/feedback/dialog.tsx +1 -2
  85. package/docs/feedback/sheet.tsx +1 -2
  86. package/docs/layout/app-shell-states.tsx +143 -0
  87. package/docs/navigation/dropdown-menu.tsx +77 -6
  88. package/docs/navigation/tabs.tsx +72 -0
  89. package/docs/roadmap/ai-chat-components.md +1 -2
  90. package/docs/roadmap/parity-audit-data-entry.md +44 -33
  91. package/docs/roadmap/parity-audit-layout-navigation-general.md +304 -310
  92. package/docs/roadmap/parity-backlog.md +2 -3
  93. package/docs/roadmap/tree-components.md +0 -1
  94. package/package.json +25 -55
  95. package/scripts/_agent-setup.mjs +18 -0
  96. package/scripts/guinea-pig-skill.md +12 -6
  97. package/scripts/ui-audit.mjs +185 -7
  98. package/scripts/visual-audit-rules.mjs +0 -7
  99. package/scripts/visual-audit.mjs +6 -27
  100. package/dist/components/navigation/context-menu.d.ts +0 -21
  101. package/dist/components/navigation/context-menu.js +0 -149
  102. package/dist/components/navigation/menubar.d.ts +0 -28
  103. package/dist/components/navigation/menubar.js +0 -136
  104. package/dist/components/navigation/navigation-menu.d.ts +0 -10
  105. package/dist/components/navigation/navigation-menu.js +0 -91
  106. package/dist/components/ui/context-menu.d.ts +0 -1
  107. package/dist/components/ui/context-menu.js +0 -2
  108. package/dist/components/ui/menubar.d.ts +0 -1
  109. package/dist/components/ui/menubar.js +0 -2
  110. package/dist/components/ui/navigation-menu.d.ts +0 -1
  111. package/dist/components/ui/navigation-menu.js +0 -2
  112. package/docs/FRAME-A11Y-CI.md +0 -349
  113. package/docs/navigation/context-menu.tsx +0 -128
  114. package/docs/navigation/menubar.tsx +0 -141
  115. package/docs/navigation/navigation-menu.tsx +0 -158
@@ -14,6 +14,18 @@
14
14
  .ui-checkbox,
15
15
  .ui-radio,
16
16
  .ui-slider-thumb,
17
+ .ui-control-affix-action,
18
+ .ui-control-inline-affix-action,
19
+ .ui-search-input-clear,
20
+ .ui-tag-input-remove,
21
+ .ui-color-picker-input,
22
+ .ui-upload-tile-add,
23
+ .ui-upload-picture-empty,
24
+ .ui-upload-dropzone,
25
+ .ui-tabs-add,
26
+ .ui-steps-control,
27
+ .ui-carousel-previous,
28
+ .ui-carousel-next,
17
29
  .ui-steps-inline-control,
18
30
  .ui-pagination-link,
19
31
  .ui-legal-document-toc-link,
@@ -29,7 +41,9 @@
29
41
  ):focus-visible,
30
42
 
31
43
  .ui-checkbox[data-focus-visible],
44
+ .ui-radio[data-focus-visible],
32
45
  .ui-switch[data-focus-visible],
46
+ .ui-slider-thumb[data-focus-visible],
33
47
  .ui-focus-ring[data-focus-visible],
34
48
  .ui-control-trigger[data-state="open"],
35
49
  .ui-tag-input:focus-within,
@@ -60,6 +74,18 @@
60
74
  .ui-checkbox,
61
75
  .ui-radio,
62
76
  .ui-slider-thumb,
77
+ .ui-control-affix-action,
78
+ .ui-control-inline-affix-action,
79
+ .ui-search-input-clear,
80
+ .ui-tag-input-remove,
81
+ .ui-color-picker-input,
82
+ .ui-upload-tile-add,
83
+ .ui-upload-picture-empty,
84
+ .ui-upload-dropzone,
85
+ .ui-tabs-add,
86
+ .ui-steps-control,
87
+ .ui-carousel-previous,
88
+ .ui-carousel-next,
63
89
  .ui-steps-inline-control,
64
90
  .ui-pagination-link,
65
91
  .ui-legal-document-toc-link,
@@ -75,7 +101,9 @@
75
101
  ):focus-visible,
76
102
 
77
103
  :root[data-focus-outline="on"] .ui-checkbox[data-focus-visible],
104
+ :root[data-focus-outline="on"] .ui-radio[data-focus-visible],
78
105
  :root[data-focus-outline="on"] .ui-switch[data-focus-visible],
106
+ :root[data-focus-outline="on"] .ui-slider-thumb[data-focus-visible],
79
107
  :root[data-focus-outline="on"] .ui-focus-ring[data-focus-visible],
80
108
  :root[data-focus-outline="on"] .ui-control-trigger[data-state="open"],
81
109
  :root[data-focus-outline="on"] .ui-tag-input:focus-within,
@@ -6,11 +6,95 @@
6
6
  @import "@fontsource/noto-sans-jp/500.css";
7
7
  @import "@fontsource/noto-sans-jp/700.css";
8
8
 
9
+ @font-face {
10
+ font-family: "Noto Sans JP Fallback";
11
+ font-weight: 400;
12
+ src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans");
13
+ size-adjust: 103.02%;
14
+ ascent-override: 112.6%;
15
+ descent-override: 27.96%;
16
+ line-gap-override: 0%;
17
+ unicode-range:
18
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
19
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
20
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
21
+ }
22
+ @font-face {
23
+ font-family: "Noto Sans JP Fallback";
24
+ font-weight: 500;
25
+ src: local("Arial"), local("ArialMT"), local("Liberation Sans"), local("LiberationSans");
26
+ size-adjust: 105.5%;
27
+ ascent-override: 109.95%;
28
+ descent-override: 27.3%;
29
+ line-gap-override: 0%;
30
+ unicode-range:
31
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
32
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
33
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
34
+ }
35
+ @font-face {
36
+ font-family: "Noto Sans JP Fallback";
37
+ font-weight: 700;
38
+ src:
39
+ local("Arial Bold"), local("Arial-BoldMT"), local("Liberation Sans Bold"),
40
+ local("LiberationSans-Bold");
41
+ size-adjust: 101.5%;
42
+ ascent-override: 114.29%;
43
+ descent-override: 28.37%;
44
+ line-gap-override: 0%;
45
+ unicode-range:
46
+ U+0000-02CC, U+02CE-02D7, U+02DA, U+02DC-0301, U+0303-0304, U+0308-0309, U+0323, U+0329,
47
+ U+1D00-1DBF, U+1E00-1EFF, U+2000-206F, U+20A0-20C0, U+2113, U+2122, U+2191, U+2193, U+2212,
48
+ U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD;
49
+ }
50
+ @font-face {
51
+ font-family: "Noto Sans JP Fallback";
52
+ font-weight: 400;
53
+ src:
54
+ local("Hiragino Sans W3"), local("HiraginoSans-W3"), local("Hiragino Kaku Gothic ProN W3"),
55
+ local("HiraKakuProN-W3"), local("Yu Gothic Medium"), local("YuGothic-Medium"), local("Meiryo"),
56
+ local("Noto Sans CJK JP"), local("NotoSansCJKjp-Regular"), local("IPAGothic");
57
+ ascent-override: 116%;
58
+ descent-override: 28.8%;
59
+ line-gap-override: 0%;
60
+ unicode-range:
61
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
62
+ }
63
+ @font-face {
64
+ font-family: "Noto Sans JP Fallback";
65
+ font-weight: 500;
66
+ src:
67
+ local("Hiragino Sans W5"), local("HiraginoSans-W5"), local("Hiragino Kaku Gothic ProN W3"),
68
+ local("HiraKakuProN-W3"), local("Yu Gothic Medium"), local("YuGothic-Medium"), local("Meiryo"),
69
+ local("Noto Sans CJK JP Medium"), local("NotoSansCJKjp-Medium"), local("Noto Sans CJK JP"),
70
+ local("NotoSansCJKjp-Regular"), local("IPAGothic");
71
+ ascent-override: 116%;
72
+ descent-override: 28.8%;
73
+ line-gap-override: 0%;
74
+ unicode-range:
75
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
76
+ }
77
+ @font-face {
78
+ font-family: "Noto Sans JP Fallback";
79
+ font-weight: 700;
80
+ src:
81
+ local("Hiragino Sans W6"), local("HiraginoSans-W6"), local("Hiragino Kaku Gothic ProN W6"),
82
+ local("HiraKakuProN-W6"), local("Yu Gothic Bold"), local("YuGothic-Bold"), local("Meiryo Bold"),
83
+ local("Meiryo-Bold"), local("Noto Sans CJK JP Bold"), local("NotoSansCJKjp-Bold"),
84
+ local("IPAGothic");
85
+ ascent-override: 116%;
86
+ descent-override: 28.8%;
87
+ line-gap-override: 0%;
88
+ unicode-range:
89
+ U+3000-30FF, U+31F0-31FF, U+3400-4DBF, U+4E00-9FFF, U+F900-FAFF, U+FF00-FFEF, U+20000-2FA1F;
90
+ }
91
+
9
92
  :root {
10
93
  --font-sans-base:
11
- "Noto Sans JP", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic Medium", YuGothic,
12
- "M PLUS 2", Meiryo, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;
94
+ "Noto Sans JP", "Noto Sans JP Fallback", "Hiragino Sans", "Hiragino Kaku Gothic ProN",
95
+ "Yu Gothic Medium", YuGothic, "M PLUS 2", Meiryo, -apple-system, BlinkMacSystemFont, "Segoe UI",
96
+ Roboto, system-ui, sans-serif;
13
97
  --font-sans-vi:
14
- "Noto Sans JP", "M PLUS 2", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui,
15
- sans-serif;
98
+ "Noto Sans JP", "Noto Sans JP Fallback", "M PLUS 2", -apple-system, BlinkMacSystemFont,
99
+ "Segoe UI", Roboto, system-ui, sans-serif;
16
100
  }
@@ -2,6 +2,10 @@
2
2
 
3
3
  @layer components {
4
4
 
5
+ .ui-form-field-note {
6
+ word-break: auto-phrase;
7
+ }
8
+
5
9
  .ui-form-field-required {
6
10
  margin-inline-start: var(--space-inline-xs);
7
11
  color: hsl(var(--destructive));
@@ -997,7 +997,8 @@
997
997
  flex-wrap: nowrap;
998
998
  min-width: 0;
999
999
  align-items: center;
1000
- justify-content: flex-end;
1000
+
1001
+ justify-content: safe flex-end;
1001
1002
  gap: var(--pagination-gap);
1002
1003
  }
1003
1004
 
@@ -103,6 +103,11 @@
103
103
  flex: 1 1 auto;
104
104
  }
105
105
 
106
+ [data-slot="tabs"][data-orientation="vertical"] > [data-slot="tabs-list"],
107
+ [data-slot="tabs"][data-orientation="vertical"] > .ui-tabs-bar {
108
+ flex-shrink: 0;
109
+ }
110
+
106
111
  .ui-tabs-extra {
107
112
  display: flex;
108
113
  flex: 0 0 auto;
@@ -194,6 +199,12 @@
194
199
  block-size: var(--tabs-add-icon-size);
195
200
  }
196
201
 
202
+ .ui-pagination {
203
+ max-inline-size: 100%;
204
+ overflow-x: auto;
205
+ scrollbar-width: thin;
206
+ }
207
+
197
208
  .ui-pagination .ui-button svg,
198
209
  .ui-pagination .ui-pagination-link svg {
199
210
  inline-size: var(--pagination-icon-size);
@@ -205,11 +216,11 @@
205
216
  }
206
217
 
207
218
  .ui-pagination[data-align="center"] {
208
- justify-content: center;
219
+ justify-content: safe center;
209
220
  }
210
221
 
211
222
  .ui-pagination[data-align="end"] {
212
- justify-content: flex-end;
223
+ justify-content: safe flex-end;
213
224
  }
214
225
 
215
226
  .ui-pagination[data-size="sm"] {
@@ -233,30 +244,6 @@
233
244
  text-align: center;
234
245
  }
235
246
 
236
- .ui-context-menu-content {
237
- z-index: var(--overlay-z-index);
238
- min-width: var(--menu-content-min-width);
239
- overflow: hidden;
240
- border-radius: var(--radius-md);
241
- border: 1px solid hsl(var(--border));
242
- background: hsl(var(--popover));
243
- color: hsl(var(--popover-foreground));
244
- padding: var(--space-1);
245
- box-shadow: var(--shadow-md), var(--shadow-glow);
246
- }
247
-
248
- .ui-context-menu-item,
249
- .ui-context-menu-label,
250
- .ui-context-menu-sub-trigger,
251
- .ui-context-menu-checkbox-item,
252
- .ui-context-menu-radio-item,
253
- .ui-context-menu-shortcut,
254
- .ui-menubar-item,
255
- .ui-menubar-label,
256
- .ui-menubar-trigger,
257
- .ui-menubar-sub-trigger,
258
- .ui-menubar-checkbox-item,
259
- .ui-menubar-radio-item,
260
247
  .ui-dropdown-menu-item,
261
248
  .ui-dropdown-menu-label,
262
249
  .ui-dropdown-menu-sub-trigger,
@@ -272,12 +259,6 @@
272
259
  font-size: var(--menu-item-font-size);
273
260
  }
274
261
 
275
- .ui-context-menu-item > svg,
276
- .ui-context-menu-checkbox-item > svg,
277
- .ui-context-menu-radio-item > svg,
278
- .ui-menubar-item > svg,
279
- .ui-menubar-checkbox-item > svg,
280
- .ui-menubar-radio-item > svg,
281
262
  .ui-dropdown-menu-item > svg,
282
263
  .ui-dropdown-menu-checkbox-item > svg,
283
264
  .ui-dropdown-menu-radio-item > svg {
@@ -292,19 +273,10 @@
292
273
  padding-inline-start: var(--menu-item-inset-space-inline-start);
293
274
  }
294
275
 
295
- .ui-context-menu-item,
296
- .ui-context-menu-checkbox-item,
297
- .ui-context-menu-radio-item,
298
- .ui-context-menu-sub-trigger,
299
- .ui-menubar-item,
300
- .ui-menubar-checkbox-item,
301
- .ui-menubar-radio-item,
302
- .ui-menubar-sub-trigger,
303
276
  .ui-dropdown-menu-item,
304
277
  .ui-dropdown-menu-checkbox-item,
305
278
  .ui-dropdown-menu-radio-item,
306
- .ui-dropdown-menu-sub-trigger,
307
- .ui-navigation-menu-link {
279
+ .ui-dropdown-menu-sub-trigger {
308
280
  cursor: pointer;
309
281
  outline: none;
310
282
  user-select: none;
@@ -313,50 +285,25 @@
313
285
  color 150ms ease;
314
286
  }
315
287
 
316
- .ui-context-menu-item:hover,
317
- .ui-context-menu-sub-trigger:hover,
318
- .ui-menubar-item:hover,
319
- .ui-menubar-sub-trigger:hover,
320
288
  .ui-dropdown-menu-item:hover,
321
- .ui-dropdown-menu-sub-trigger:hover,
322
- .ui-navigation-menu-link:hover,
323
- .ui-navigation-menu-item:hover {
324
- background: var(--menubar-item-hover-background, hsl(var(--accent)));
325
- color: var(--menubar-item-hover-foreground, hsl(var(--accent-foreground)));
326
- }
327
-
328
- .ui-context-menu-item[data-state="open"],
329
- .ui-context-menu-item[data-state="checked"],
330
- .ui-context-menu-item[data-highlighted],
331
- .ui-menubar-item[data-state="open"],
332
- .ui-menubar-item[data-state="active"],
333
- .ui-menubar-item[data-state="checked"],
334
- .ui-menubar-sub-trigger[data-state="open"],
289
+ .ui-dropdown-menu-sub-trigger:hover {
290
+ background: var(--menu-item-hover-background, hsl(var(--accent)));
291
+ color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
292
+ }
293
+
335
294
  .ui-dropdown-menu-item[data-state="open"],
336
295
  .ui-dropdown-menu-item[data-highlighted],
337
296
  .ui-dropdown-menu-checkbox-item[data-highlighted],
338
297
  .ui-dropdown-menu-radio-item[data-highlighted],
339
- .ui-dropdown-menu-sub-trigger[data-state="open"],
340
- .ui-navigation-menu-link[data-highlighted],
341
- .ui-navigation-menu-item[data-focus-visible] {
342
- background: var(--menubar-item-hover-background, hsl(var(--accent)));
343
- color: var(--menubar-item-hover-foreground, hsl(var(--accent-foreground)));
298
+ .ui-dropdown-menu-sub-trigger[data-state="open"] {
299
+ background: var(--menu-item-hover-background, hsl(var(--accent)));
300
+ color: var(--menu-item-hover-foreground, hsl(var(--accent-foreground)));
344
301
  }
345
302
 
346
- .ui-context-menu-item[data-variant="destructive"],
347
- .ui-menubar-item[data-variant="destructive"],
348
303
  .ui-dropdown-menu-item[data-variant="destructive"] {
349
304
  color: hsl(var(--destructive));
350
305
  }
351
306
 
352
- .ui-context-menu-item[data-variant="destructive"][data-state="focused"],
353
- .ui-menubar-item[data-variant="destructive"][data-state="focused"] {
354
- background: hsl(var(--destructive));
355
- color: hsl(var(--destructive-foreground));
356
- }
357
-
358
- .ui-context-menu-separator,
359
- .ui-menubar-separator,
360
307
  .ui-dropdown-menu-separator,
361
308
  .ui-select-separator {
362
309
  margin-block: var(--menu-separator-space-block);
@@ -365,8 +312,6 @@
365
312
  background: hsl(var(--border));
366
313
  }
367
314
 
368
- .ui-context-menu-label,
369
- .ui-menubar-label,
370
315
  .ui-dropdown-menu-label {
371
316
  height: auto;
372
317
  min-height: var(--menu-item-height);
@@ -374,19 +319,14 @@
374
319
  font-weight: var(--font-weight-medium);
375
320
  }
376
321
 
377
- .ui-context-menu-shortcut,
378
- .ui-menubar-shortcut,
379
322
  .ui-dropdown-menu-shortcut {
380
323
  margin-inline-start: auto;
381
324
  text-align: end;
382
325
  color: hsl(var(--muted-foreground));
383
- font-size: var(--menubar-shortcut-font-size);
326
+ font-size: var(--menu-shortcut-font-size);
384
327
  }
385
328
 
386
- .ui-context-menu-item-indicator,
387
- .ui-menubar-item-indicator,
388
- .ui-dropdown-menu-item-indicator,
389
- .ui-navigation-menu-item-indicator {
329
+ .ui-dropdown-menu-item-indicator {
390
330
  display: inline-flex;
391
331
  width: 1rem;
392
332
  height: 1rem;
@@ -394,160 +334,6 @@
394
334
  justify-content: center;
395
335
  color: hsl(var(--accent-foreground));
396
336
  }
397
-
398
- .ui-context-menu-check,
399
- .ui-menubar-check {
400
- width: 1rem;
401
- height: 1rem;
402
- }
403
-
404
- .ui-context-menu-dot,
405
- .ui-menubar-dot {
406
- width: 0.5rem;
407
- height: 0.5rem;
408
- border-radius: var(--radius-pill);
409
- background: currentColor;
410
- }
411
-
412
- .ui-context-menu-sub-content,
413
- .ui-context-menu-sub-trigger,
414
- .ui-menubar-sub-content,
415
- .ui-menubar-sub-trigger {
416
- position: relative;
417
- }
418
-
419
- .ui-context-menu-sub-content,
420
- .ui-menubar-sub-content {
421
- min-width: 10rem;
422
- overflow: hidden;
423
- border-radius: var(--radius-md);
424
- border: 1px solid hsl(var(--border));
425
- background: hsl(var(--popover));
426
- color: hsl(var(--popover-foreground));
427
- padding: var(--space-1);
428
- box-shadow: var(--shadow-md), var(--shadow-glow);
429
- }
430
-
431
- .ui-context-menu-sub-trigger-icon,
432
- .ui-menubar-sub-trigger-icon {
433
- width: var(--menu-icon-size);
434
- height: var(--menu-icon-size);
435
- margin-inline-start: auto;
436
- opacity: 0.75;
437
- }
438
-
439
- .ui-menubar {
440
- display: flex;
441
- min-height: var(--control-height);
442
- align-items: center;
443
- gap: var(--space-1);
444
- border-radius: var(--radius-md);
445
- }
446
-
447
- .ui-menubar-trigger {
448
- height: var(--control-height);
449
- padding: 0 var(--space-3);
450
- border-radius: var(--radius-md);
451
- }
452
-
453
- .ui-menubar-content {
454
- min-width: 10rem;
455
- overflow: hidden;
456
- border-radius: var(--radius-md);
457
- border: 1px solid hsl(var(--border));
458
- background: hsl(var(--popover));
459
- color: hsl(var(--popover-foreground));
460
- padding: var(--space-1);
461
- box-shadow: var(--shadow-md), var(--shadow-glow);
462
- }
463
-
464
- .ui-menubar-trigger[data-state="open"],
465
- .ui-menubar-sub-trigger[data-state="open"] {
466
- background: var(--menubar-item-hover-background, hsl(var(--accent)));
467
- color: var(--menubar-item-hover-foreground, hsl(var(--accent-foreground)));
468
- }
469
-
470
- .ui-navigation-menu {
471
- position: relative;
472
- width: max-content;
473
- }
474
-
475
- .ui-navigation-menu-list {
476
- display: flex;
477
- align-items: center;
478
- gap: var(--space-1);
479
- }
480
-
481
- .ui-navigation-menu-item,
482
- .ui-navigation-menu-trigger {
483
- position: relative;
484
- cursor: pointer;
485
- border-radius: var(--radius-md);
486
- padding-inline: var(--space-2);
487
- padding-block: var(--space-2);
488
- height: var(--control-height);
489
- font-size: var(--font-size-base);
490
- display: inline-flex;
491
- align-items: center;
492
- gap: var(--space-1);
493
- outline: none;
494
- }
495
-
496
- .ui-navigation-menu-trigger-icon {
497
- width: var(--navigation-menu-trigger-icon-size);
498
- height: var(--navigation-menu-trigger-icon-size);
499
- margin-inline-start: var(--space-2);
500
- opacity: 0.7;
501
- }
502
-
503
- .ui-navigation-menu-content {
504
- position: absolute;
505
- top: 100%;
506
- inset-inline-start: 0;
507
- min-width: 14rem;
508
- z-index: 50;
509
- overflow: hidden;
510
- border: 1px solid hsl(var(--border));
511
- border-radius: var(--radius-md);
512
- background: hsl(var(--popover));
513
- color: hsl(var(--popover-foreground));
514
- padding: var(--space-1);
515
- box-shadow: var(--shadow-md), var(--shadow-glow);
516
- }
517
-
518
- .ui-navigation-menu-link {
519
- width: 100%;
520
- cursor: pointer;
521
- }
522
-
523
- .ui-navigation-menu-viewport {
524
- position: absolute;
525
- inset-inline-start: 0;
526
- top: 100%;
527
- width: 100%;
528
- overflow: hidden;
529
- border-radius: var(--radius-md);
530
- border: 1px solid hsl(var(--border));
531
- background: hsl(var(--popover));
532
- color: hsl(var(--popover-foreground));
533
- }
534
-
535
- .ui-navigation-menu-indicator {
536
- position: absolute;
537
- top: 100%;
538
- z-index: 50;
539
- display: flex;
540
- align-items: center;
541
- justify-content: center;
542
- height: 0.75rem;
543
- overflow: hidden;
544
- }
545
-
546
- .ui-navigation-menu-item-indicator {
547
- width: 100%;
548
- transition: transform 200ms ease;
549
- transform-origin: center;
550
- }
551
337
  }
552
338
 
553
339
  @layer components {