@slotted/styles 0.0.0-stage → 0.1.0-beta.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 (254) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +10 -2
  3. package/package.json +276 -3
  4. package/src/accordion/accordion.css +96 -0
  5. package/src/accordion/accordion.tokens.json +14 -0
  6. package/src/action-bar/action-bar.css +455 -0
  7. package/src/action-bar/action-bar.tokens.json +50 -0
  8. package/src/action-sheet/action-sheet.css +462 -0
  9. package/src/action-sheet/action-sheet.tokens.json +59 -0
  10. package/src/alert/alert.css +764 -0
  11. package/src/alert/alert.tokens.json +77 -0
  12. package/src/app-shell/app-shell.css +1899 -0
  13. package/src/app-shell/app-shell.tokens.json +88 -0
  14. package/src/aspect-ratio/aspect-ratio.css +131 -0
  15. package/src/aspect-ratio/aspect-ratio.tokens.json +1 -0
  16. package/src/attachment/attachment.css +906 -0
  17. package/src/attachment/attachment.tokens.json +85 -0
  18. package/src/avatar/avatar.css +598 -0
  19. package/src/avatar/avatar.tokens.json +64 -0
  20. package/src/avatar-group/avatar-group.css +268 -0
  21. package/src/avatar-group/avatar-group.tokens.json +16 -0
  22. package/src/badge/badge.css +462 -0
  23. package/src/badge/badge.tokens.json +58 -0
  24. package/src/breadcrumb/breadcrumb.css +441 -0
  25. package/src/breadcrumb/breadcrumb.tokens.json +50 -0
  26. package/src/button/button.css +754 -0
  27. package/src/button/button.tokens.json +72 -0
  28. package/src/button-group/button-group.css +455 -0
  29. package/src/button-group/button-group.tokens.json +11 -0
  30. package/src/calendar/calendar.css +846 -0
  31. package/src/calendar/calendar.tokens.json +67 -0
  32. package/src/card/card.css +602 -0
  33. package/src/card/card.tokens.json +68 -0
  34. package/src/carousel/carousel.css +860 -0
  35. package/src/carousel/carousel.tokens.json +62 -0
  36. package/src/cascader/cascader.css +1320 -0
  37. package/src/cascader/cascader.tokens.json +103 -0
  38. package/src/chart/chart.css +1473 -0
  39. package/src/chart/chart.tokens.json +107 -0
  40. package/src/checkbox/checkbox.css +1011 -0
  41. package/src/checkbox/checkbox.tokens.json +102 -0
  42. package/src/checkbox-group/checkbox-group.css +70 -0
  43. package/src/checkbox-group/checkbox-group.tokens.json +6 -0
  44. package/src/code-block/code-block.css +555 -0
  45. package/src/code-block/code-block.tokens.json +69 -0
  46. package/src/collapsible/collapsible.css +546 -0
  47. package/src/collapsible/collapsible.tokens.json +55 -0
  48. package/src/color-picker/color-picker.css +607 -0
  49. package/src/color-picker/color-picker.tokens.json +58 -0
  50. package/src/column-manager/column-manager.css +452 -0
  51. package/src/column-manager/column-manager.tokens.json +43 -0
  52. package/src/combobox/combobox.css +1048 -0
  53. package/src/combobox/combobox.tokens.json +112 -0
  54. package/src/command-palette/command-palette.css +1000 -0
  55. package/src/command-palette/command-palette.tokens.json +75 -0
  56. package/src/container/container.css +198 -0
  57. package/src/container/container.tokens.json +18 -0
  58. package/src/context-menu/context-menu.css +104 -0
  59. package/src/context-menu/context-menu.tokens.json +11 -0
  60. package/src/currency-field/currency-field.css +787 -0
  61. package/src/currency-field/currency-field.tokens.json +80 -0
  62. package/src/dashboard-grid/dashboard-grid.css +748 -0
  63. package/src/dashboard-grid/dashboard-grid.tokens.json +67 -0
  64. package/src/data-grid/data-grid.css +2484 -0
  65. package/src/data-grid/data-grid.tokens.json +100 -0
  66. package/src/data-list/data-list.css +455 -0
  67. package/src/data-list/data-list.tokens.json +35 -0
  68. package/src/date-field/date-field.css +560 -0
  69. package/src/date-field/date-field.tokens.json +80 -0
  70. package/src/date-picker/date-picker.css +420 -0
  71. package/src/date-picker/date-picker.tokens.json +49 -0
  72. package/src/date-range-picker/date-range-picker.css +983 -0
  73. package/src/date-range-picker/date-range-picker.tokens.json +109 -0
  74. package/src/datetime-field/datetime-field.css +850 -0
  75. package/src/datetime-field/datetime-field.tokens.json +91 -0
  76. package/src/datetime-picker/datetime-picker.css +843 -0
  77. package/src/datetime-picker/datetime-picker.tokens.json +78 -0
  78. package/src/datetime-range-picker/datetime-range-picker.css +1375 -0
  79. package/src/datetime-range-picker/datetime-range-picker.tokens.json +135 -0
  80. package/src/description-list/description-list.css +675 -0
  81. package/src/description-list/description-list.tokens.json +66 -0
  82. package/src/detail-panel/detail-panel.css +329 -0
  83. package/src/detail-panel/detail-panel.tokens.json +33 -0
  84. package/src/dialog/dialog.css +968 -0
  85. package/src/dialog/dialog.tokens.json +66 -0
  86. package/src/divider/divider.css +131 -0
  87. package/src/divider/divider.tokens.json +18 -0
  88. package/src/drawer/drawer.css +1303 -0
  89. package/src/drawer/drawer.tokens.json +75 -0
  90. package/src/entity-picker/entity-picker.css +1367 -0
  91. package/src/entity-picker/entity-picker.tokens.json +118 -0
  92. package/src/event-calendar/event-calendar.css +2148 -0
  93. package/src/event-calendar/event-calendar.tokens.json +87 -0
  94. package/src/field/field.css +707 -0
  95. package/src/field/field.tokens.json +58 -0
  96. package/src/field-group/field-group.css +226 -0
  97. package/src/field-group/field-group.tokens.json +33 -0
  98. package/src/filter-bar/filter-bar.css +1306 -0
  99. package/src/filter-bar/filter-bar.tokens.json +78 -0
  100. package/src/form/form.css +218 -0
  101. package/src/form/form.tokens.json +32 -0
  102. package/src/fullscreen/fullscreen.css +376 -0
  103. package/src/fullscreen/fullscreen.tokens.json +50 -0
  104. package/src/grid/grid.css +173 -0
  105. package/src/grid/grid.tokens.json +20 -0
  106. package/src/highlight/highlight.css +135 -0
  107. package/src/highlight/highlight.tokens.json +16 -0
  108. package/src/hover-card/hover-card.css +93 -0
  109. package/src/hover-card/hover-card.tokens.json +17 -0
  110. package/src/icon/icon.css +136 -0
  111. package/src/icon/icon.tokens.json +14 -0
  112. package/src/image/image.css +449 -0
  113. package/src/image/image.tokens.json +27 -0
  114. package/src/import-export-center/import-export-center.css +1175 -0
  115. package/src/import-export-center/import-export-center.tokens.json +84 -0
  116. package/src/inline/inline.css +149 -0
  117. package/src/inline/inline.tokens.json +14 -0
  118. package/src/inline-message/inline-message.css +396 -0
  119. package/src/inline-message/inline-message.tokens.json +19 -0
  120. package/src/kbd/kbd.css +490 -0
  121. package/src/kbd/kbd.tokens.json +40 -0
  122. package/src/link/link.css +237 -0
  123. package/src/link/link.tokens.json +25 -0
  124. package/src/list/list.css +240 -0
  125. package/src/list/list.tokens.json +42 -0
  126. package/src/list-item/list-item.css +937 -0
  127. package/src/list-item/list-item.tokens.json +114 -0
  128. package/src/listbox/listbox.css +674 -0
  129. package/src/listbox/listbox.tokens.json +72 -0
  130. package/src/loading-overlay/loading-overlay.css +730 -0
  131. package/src/loading-overlay/loading-overlay.tokens.json +48 -0
  132. package/src/markdown/markdown.css +168 -0
  133. package/src/markdown/markdown.tokens.json +18 -0
  134. package/src/menu/menu.css +817 -0
  135. package/src/menu/menu.tokens.json +78 -0
  136. package/src/menubar/menubar.css +170 -0
  137. package/src/menubar/menubar.tokens.json +32 -0
  138. package/src/message/message.css +1453 -0
  139. package/src/message/message.tokens.json +85 -0
  140. package/src/message-scroller/message-scroller.css +371 -0
  141. package/src/message-scroller/message-scroller.tokens.json +47 -0
  142. package/src/multi-select/multi-select.css +1427 -0
  143. package/src/multi-select/multi-select.tokens.json +114 -0
  144. package/src/navigation-menu/navigation-menu.css +1029 -0
  145. package/src/navigation-menu/navigation-menu.tokens.json +70 -0
  146. package/src/notification-center/notification-center.css +856 -0
  147. package/src/notification-center/notification-center.tokens.json +84 -0
  148. package/src/number-field/number-field.css +794 -0
  149. package/src/number-field/number-field.tokens.json +80 -0
  150. package/src/otp-input/otp-input.css +525 -0
  151. package/src/otp-input/otp-input.tokens.json +69 -0
  152. package/src/page/page.css +179 -0
  153. package/src/page/page.tokens.json +20 -0
  154. package/src/page-header/page-header.css +1181 -0
  155. package/src/page-header/page-header.tokens.json +71 -0
  156. package/src/pagination/pagination.css +500 -0
  157. package/src/pagination/pagination.tokens.json +56 -0
  158. package/src/popover/popover.css +526 -0
  159. package/src/popover/popover.tokens.json +60 -0
  160. package/src/progress-indicator/progress-indicator.css +1584 -0
  161. package/src/progress-indicator/progress-indicator.tokens.json +50 -0
  162. package/src/prompt-composer/prompt-composer.css +680 -0
  163. package/src/prompt-composer/prompt-composer.tokens.json +99 -0
  164. package/src/prose/prose.css +733 -0
  165. package/src/prose/prose.tokens.json +79 -0
  166. package/src/radio-group/radio-group.css +778 -0
  167. package/src/radio-group/radio-group.tokens.json +103 -0
  168. package/src/rating/rating.css +1071 -0
  169. package/src/rating/rating.tokens.json +88 -0
  170. package/src/result-state/result-state.css +980 -0
  171. package/src/result-state/result-state.tokens.json +63 -0
  172. package/src/runtime-properties.mjs +321 -0
  173. package/src/saved-views/saved-views.css +394 -0
  174. package/src/saved-views/saved-views.tokens.json +41 -0
  175. package/src/scroll-area/scroll-area.css +481 -0
  176. package/src/scroll-area/scroll-area.tokens.json +15 -0
  177. package/src/section/section.css +177 -0
  178. package/src/section/section.tokens.json +39 -0
  179. package/src/segmented-control/segmented-control.css +564 -0
  180. package/src/segmented-control/segmented-control.tokens.json +67 -0
  181. package/src/select/select.css +1593 -0
  182. package/src/select/select.tokens.json +110 -0
  183. package/src/side-navigation/side-navigation.css +1096 -0
  184. package/src/side-navigation/side-navigation.tokens.json +87 -0
  185. package/src/skeleton/skeleton.css +431 -0
  186. package/src/skeleton/skeleton.tokens.json +29 -0
  187. package/src/slider/slider.css +792 -0
  188. package/src/slider/slider.tokens.json +75 -0
  189. package/src/sparkline/sparkline.css +282 -0
  190. package/src/sparkline/sparkline.tokens.json +45 -0
  191. package/src/spinner/spinner.css +224 -0
  192. package/src/spinner/spinner.tokens.json +8 -0
  193. package/src/split-button/split-button.css +253 -0
  194. package/src/split-button/split-button.tokens.json +12 -0
  195. package/src/splitter/splitter.css +336 -0
  196. package/src/splitter/splitter.tokens.json +24 -0
  197. package/src/stack/stack.css +128 -0
  198. package/src/stack/stack.tokens.json +14 -0
  199. package/src/stat-card/stat-card.css +641 -0
  200. package/src/stat-card/stat-card.tokens.json +95 -0
  201. package/src/status-indicator/status-indicator.css +481 -0
  202. package/src/status-indicator/status-indicator.tokens.json +38 -0
  203. package/src/stepper/stepper.css +629 -0
  204. package/src/stepper/stepper.tokens.json +72 -0
  205. package/src/switch/switch.css +703 -0
  206. package/src/switch/switch.tokens.json +75 -0
  207. package/src/table/table.css +1482 -0
  208. package/src/table/table.tokens.json +69 -0
  209. package/src/table-of-contents/table-of-contents.css +533 -0
  210. package/src/table-of-contents/table-of-contents.tokens.json +53 -0
  211. package/src/tabs/tabs.css +998 -0
  212. package/src/tabs/tabs.tokens.json +82 -0
  213. package/src/tag/tag.css +768 -0
  214. package/src/tag/tag.tokens.json +85 -0
  215. package/src/tags-input/tags-input.css +757 -0
  216. package/src/tags-input/tags-input.tokens.json +84 -0
  217. package/src/text-field/text-field.css +900 -0
  218. package/src/text-field/text-field.tokens.json +87 -0
  219. package/src/textarea/textarea.css +365 -0
  220. package/src/textarea/textarea.tokens.json +59 -0
  221. package/src/time-field/time-field.css +719 -0
  222. package/src/time-field/time-field.tokens.json +86 -0
  223. package/src/time-picker/time-picker.css +665 -0
  224. package/src/time-picker/time-picker.tokens.json +66 -0
  225. package/src/time-range-picker/time-range-picker.css +1287 -0
  226. package/src/time-range-picker/time-range-picker.tokens.json +134 -0
  227. package/src/timeline/timeline.css +1596 -0
  228. package/src/timeline/timeline.tokens.json +96 -0
  229. package/src/toast/toast.css +943 -0
  230. package/src/toast/toast.tokens.json +90 -0
  231. package/src/toggle/toggle.css +290 -0
  232. package/src/toggle/toggle.tokens.json +54 -0
  233. package/src/toggle-group/toggle-group.css +463 -0
  234. package/src/toggle-group/toggle-group.tokens.json +54 -0
  235. package/src/toolbar/toolbar.css +434 -0
  236. package/src/toolbar/toolbar.tokens.json +49 -0
  237. package/src/tooltip/tooltip.css +368 -0
  238. package/src/tooltip/tooltip.tokens.json +39 -0
  239. package/src/top-navigation/top-navigation.css +1287 -0
  240. package/src/top-navigation/top-navigation.tokens.json +91 -0
  241. package/src/tour/tour.css +680 -0
  242. package/src/tour/tour.tokens.json +67 -0
  243. package/src/transfer/transfer.css +571 -0
  244. package/src/transfer/transfer.tokens.json +49 -0
  245. package/src/tree/tree.css +1000 -0
  246. package/src/tree/tree.tokens.json +80 -0
  247. package/src/typography/typography.css +211 -0
  248. package/src/typography/typography.tokens.json +31 -0
  249. package/src/upload/upload.css +1706 -0
  250. package/src/upload/upload.tokens.json +123 -0
  251. package/src/visually-hidden/visually-hidden.css +52 -0
  252. package/src/visually-hidden/visually-hidden.tokens.json +1 -0
  253. package/src/wizard/wizard.css +740 -0
  254. package/src/wizard/wizard.tokens.json +63 -0
@@ -0,0 +1,78 @@
1
+ [
2
+ "--slotted-border-subtle",
3
+ "--slotted-border-width-thin",
4
+ "--slotted-control-font-size-lg",
5
+ "--slotted-control-font-size-md",
6
+ "--slotted-control-font-size-sm",
7
+ "--slotted-control-gap-lg",
8
+ "--slotted-control-gap-md",
9
+ "--slotted-control-gap-sm",
10
+ "--slotted-control-height-lg",
11
+ "--slotted-control-height-md",
12
+ "--slotted-control-height-sm",
13
+ "--slotted-control-icon-size-lg",
14
+ "--slotted-control-icon-size-md",
15
+ "--slotted-control-icon-size-sm",
16
+ "--slotted-control-padding-inline-lg",
17
+ "--slotted-control-padding-inline-md",
18
+ "--slotted-control-padding-inline-sm",
19
+ "--slotted-control-radius",
20
+ "--slotted-control-transition-duration",
21
+ "--slotted-control-transition-easing",
22
+ "--slotted-disabled-foreground",
23
+ "--slotted-duration-medium",
24
+ "--slotted-duration-short",
25
+ "--slotted-easing-enter",
26
+ "--slotted-easing-exit",
27
+ "--slotted-easing-standard",
28
+ "--slotted-focus-ring-color",
29
+ "--slotted-focus-ring-width",
30
+ "--slotted-font-family-sans",
31
+ "--slotted-font-size-xs",
32
+ "--slotted-font-weight-semibold",
33
+ "--slotted-line-height-md",
34
+ "--slotted-line-height-sm",
35
+ "--slotted-menu-border-color",
36
+ "--slotted-menu-gap",
37
+ "--slotted-menu-highlight",
38
+ "--slotted-menu-highlight-active",
39
+ "--slotted-menu-item-radius",
40
+ "--slotted-menu-measure",
41
+ "--slotted-menu-measure-lg",
42
+ "--slotted-menu-measure-sm",
43
+ "--slotted-menu-min-measure",
44
+ "--slotted-menu-padding-block",
45
+ "--slotted-menu-padding-inline",
46
+ "--slotted-menu-radius",
47
+ "--slotted-menu-separator-color",
48
+ "--slotted-menu-shadow",
49
+ "--slotted-menu-surface",
50
+ "--slotted-menu-text",
51
+ "--slotted-menu-text-muted",
52
+ "--slotted-radius-lg",
53
+ "--slotted-shadow-md",
54
+ "--slotted-space-1",
55
+ "--slotted-space-2",
56
+ "--slotted-space-5",
57
+ "--slotted-space-6",
58
+ "--slotted-surface-raised",
59
+ "--slotted-text",
60
+ "--slotted-text-muted",
61
+ "--slotted-tone-accent-subtle-active",
62
+ "--slotted-tone-accent-surface",
63
+ "--slotted-tone-accent-text",
64
+ "--slotted-tone-danger-subtle-active",
65
+ "--slotted-tone-danger-surface",
66
+ "--slotted-tone-danger-text",
67
+ "--slotted-tone-secondary-subtle-active",
68
+ "--slotted-tone-secondary-subtle-hover",
69
+ "--slotted-tone-secondary-surface",
70
+ "--slotted-tone-secondary-text",
71
+ "--slotted-tone-success-subtle-active",
72
+ "--slotted-tone-success-surface",
73
+ "--slotted-tone-success-text",
74
+ "--slotted-tone-warning-subtle-active",
75
+ "--slotted-tone-warning-surface",
76
+ "--slotted-tone-warning-text",
77
+ "--slotted-z-index-popover"
78
+ ]
@@ -0,0 +1,170 @@
1
+ @layer slotted.components {
2
+ /**
3
+ * A row of triggers with one tab stop, each opening a `menu`.
4
+ *
5
+ * ┌─ root ─ role="menubar" ───────────────────────────────┐
6
+ * │ trigger trigger trigger trigger │
7
+ * └───────────────────────────────────────────────────────┘
8
+ *
9
+ * The bar holds two parts and no third, because everything a bar opens
10
+ * belongs to `menu` and is imported from it. Radix's menubar re-exports the
11
+ * sixteen parts its dropdown menu already has; two copies of one machine
12
+ * drift, and the second copy is where a capability added later goes missing.
13
+ *
14
+ * ── Why the bar paints no ground ─────────────────────────────────────
15
+ *
16
+ * A menubar sits in an application's own header, beside its logo and its
17
+ * account control, and that header owns the ground under all three. A bar
18
+ * that painted its own surface would either disagree with the header or
19
+ * force the header to match it. The weight is carried by the triggers, which
20
+ * is where a reader's pointer goes.
21
+ */
22
+ [data-ui='menubar'] {
23
+ --_gap: var(--slotted-menubar-gap, var(--slotted-space-1, 0.125rem));
24
+
25
+ --_text: var(--slotted-menubar-text, var(--slotted-text, #0f172a));
26
+ --_trigger-radius: var(--slotted-menubar-trigger-radius, var(--slotted-control-radius));
27
+ --_trigger-height: var(--slotted-control-height-md, 34px);
28
+ --_trigger-inset: var(--slotted-control-padding-inline-md, 0.8125rem);
29
+ --_font-size: var(--slotted-control-font-size-md, 13px);
30
+
31
+ /* The same pair a menu item uses for its highlight, so a trigger and the
32
+ items under it belong to one control rather than to two. */
33
+ --_highlight: var(--slotted-menubar-highlight, var(--slotted-tone-secondary-subtle-hover));
34
+ --_highlight-active: var(
35
+ --slotted-menubar-highlight-active,
36
+ var(--slotted-tone-secondary-subtle-active)
37
+ );
38
+
39
+ align-items: center;
40
+ box-sizing: border-box;
41
+ color: var(--_text);
42
+ display: flex;
43
+ /**
44
+ * More triggers than room is the overflow question, and it belongs to
45
+ * `toolbar` at the end of this wave. Until then the bar wraps: at 240
46
+ * pixels a bar of four translated titles laid out on one line put its last
47
+ * trigger outside the header that holds it, where nothing could reach it —
48
+ * and a trigger a reader cannot see is worse than a bar two lines tall.
49
+ */
50
+ flex-wrap: wrap;
51
+ font-family: var(--slotted-font-family-sans);
52
+ font-size: var(--_font-size);
53
+ gap: var(--_gap);
54
+ }
55
+
56
+ /**
57
+ * A sidebar of commands is a vertical menubar, and the pattern defines the
58
+ * key swap for it. The triggers stretch rather than centring, because a
59
+ * column of labels reads from one edge.
60
+ */
61
+ [data-ui='menubar'][data-orientation='vertical'] {
62
+ align-items: stretch;
63
+ flex-direction: column;
64
+ }
65
+
66
+ [data-ui='menubar'][data-size='sm'] {
67
+ --_trigger-height: var(--slotted-control-height-sm, 30px);
68
+ --_trigger-inset: var(--slotted-control-padding-inline-sm, 0.625rem);
69
+ --_font-size: var(--slotted-control-font-size-sm, 12px);
70
+ }
71
+
72
+ [data-ui='menubar'][data-size='lg'] {
73
+ --_trigger-height: var(--slotted-control-height-lg, 38px);
74
+ --_trigger-inset: var(--slotted-control-padding-inline-lg, 1rem);
75
+ --_font-size: var(--slotted-control-font-size-lg, 14px);
76
+ }
77
+
78
+ /* ── The triggers ─────────────────────────────────────────────────────── */
79
+
80
+ /**
81
+ * A native `button` carrying `role="menuitem"`, for the reason a menu item
82
+ * is one: the platform gives the press and the two keys, and the role says
83
+ * what a reader has landed on.
84
+ *
85
+ * The trigger holds the consumer's own text and nothing the family imposes —
86
+ * no icon slot, no chevron, no shortcut. A menubar trigger is a word.
87
+ */
88
+ [data-ui='menubar'] > [data-part='trigger'] {
89
+ appearance: none;
90
+ background: transparent;
91
+ border: 0;
92
+ border-radius: var(--_trigger-radius);
93
+ box-sizing: border-box;
94
+ color: inherit;
95
+ cursor: default;
96
+ font: inherit;
97
+ /* A trigger is a label a reader scans, not a call to action. Control
98
+ typography sets a control's own weight at semibold, which reads as five
99
+ buttons in a row where the field — and every desktop menu bar — sets a
100
+ menu title one step lighter. */
101
+ font-weight: var(--slotted-menubar-trigger-font-weight, var(--slotted-font-weight-medium, 500));
102
+ min-block-size: var(--_trigger-height);
103
+ padding-block: 0;
104
+ padding-inline: var(--_trigger-inset);
105
+ text-align: center;
106
+ transition:
107
+ background-color var(--slotted-control-transition-duration, var(--slotted-duration-short))
108
+ var(--slotted-control-transition-easing, var(--slotted-easing-standard)),
109
+ color var(--slotted-control-transition-duration, var(--slotted-duration-short))
110
+ var(--slotted-control-transition-easing, var(--slotted-easing-standard));
111
+ white-space: nowrap;
112
+ }
113
+
114
+ [data-ui='menubar'][data-orientation='vertical'] > [data-part='trigger'] {
115
+ text-align: start;
116
+ }
117
+
118
+ /**
119
+ * Hover answers here and not on a menu item, and the difference is what the
120
+ * two are: a bar is a persistent row a pointer crosses on its way elsewhere,
121
+ * where a menu is a list the reader is already inside. The bar's own
122
+ * highlight follows the pointer; once a menu is open, entering another
123
+ * trigger opens it and focus moves, so hover and focus agree again.
124
+ */
125
+ [data-ui='menubar'] > [data-part='trigger']:not([data-disabled]):hover {
126
+ background-color: var(--_highlight);
127
+ }
128
+
129
+ [data-ui='menubar'] > [data-part='trigger']:not([data-disabled]):active {
130
+ background-color: var(--_highlight-active);
131
+ }
132
+
133
+ [data-ui='menubar'] > [data-part='trigger'][data-open] {
134
+ background-color: var(--_highlight-active);
135
+ }
136
+
137
+ [data-ui='menubar'] > [data-part='trigger']:focus-visible {
138
+ outline: var(--slotted-focus-ring-width, 2px) solid
139
+ var(--slotted-focus-ring-color, currentColor);
140
+ outline-offset: calc(-1 * var(--slotted-focus-ring-width, 2px));
141
+ }
142
+
143
+ /**
144
+ * A disabled trigger stays focusable and opens nothing, which is what the
145
+ * pattern asks of every item in a menubar. It answers focus quietly, as a
146
+ * disabled menu item does.
147
+ */
148
+ [data-ui='menubar'] > [data-part='trigger'][data-disabled] {
149
+ color: var(--slotted-disabled-foreground, #64748b);
150
+ }
151
+
152
+ [data-ui='menubar'] > [data-part='trigger'][data-disabled]:focus {
153
+ background-color: var(--slotted-disabled-background, #e2e8f0);
154
+ }
155
+
156
+ /* ── Forced colours ───────────────────────────────────────────────────── */
157
+
158
+ /**
159
+ * The tone surface the open and hovered states are painted with becomes
160
+ * `Canvas` under forced colours, and an open trigger is the one thing on the
161
+ * bar that has to stay distinguishable from the other three.
162
+ */
163
+ @media (forced-colors: active) {
164
+ [data-ui='menubar'] > [data-part='trigger'][data-open] {
165
+ background-color: Highlight;
166
+ color: HighlightText;
167
+ forced-color-adjust: none;
168
+ }
169
+ }
170
+ }
@@ -0,0 +1,32 @@
1
+ [
2
+ "--slotted-control-font-size-lg",
3
+ "--slotted-control-font-size-md",
4
+ "--slotted-control-font-size-sm",
5
+ "--slotted-control-height-lg",
6
+ "--slotted-control-height-md",
7
+ "--slotted-control-height-sm",
8
+ "--slotted-control-padding-inline-lg",
9
+ "--slotted-control-padding-inline-md",
10
+ "--slotted-control-padding-inline-sm",
11
+ "--slotted-control-radius",
12
+ "--slotted-control-transition-duration",
13
+ "--slotted-control-transition-easing",
14
+ "--slotted-disabled-background",
15
+ "--slotted-disabled-foreground",
16
+ "--slotted-duration-short",
17
+ "--slotted-easing-standard",
18
+ "--slotted-focus-ring-color",
19
+ "--slotted-focus-ring-width",
20
+ "--slotted-font-family-sans",
21
+ "--slotted-font-weight-medium",
22
+ "--slotted-menubar-gap",
23
+ "--slotted-menubar-highlight",
24
+ "--slotted-menubar-highlight-active",
25
+ "--slotted-menubar-text",
26
+ "--slotted-menubar-trigger-font-weight",
27
+ "--slotted-menubar-trigger-radius",
28
+ "--slotted-space-1",
29
+ "--slotted-text",
30
+ "--slotted-tone-secondary-subtle-active",
31
+ "--slotted-tone-secondary-subtle-hover"
32
+ ]