themelia-ui 3.0.0 → 3.2.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 (746) hide show
  1. package/.agents/skills/themelia-ui/SKILL.md +60 -33
  2. package/.agents/skills/themelia-ui/manifest.json +23 -0
  3. package/.agents/skills/themelia-ui/references/api-compatibility.md +5 -4
  4. package/.agents/skills/themelia-ui/references/blocks.md +123 -0
  5. package/.agents/skills/themelia-ui/references/composition-ladder.md +8 -8
  6. package/.agents/skills/themelia-ui/references/composition.md +100 -19
  7. package/.agents/skills/themelia-ui/references/forms.md +23 -3
  8. package/.agents/skills/themelia-ui/references/framework-wiring.md +41 -13
  9. package/.agents/skills/themelia-ui/references/i18n.md +4 -2
  10. package/.agents/skills/themelia-ui/references/imports.md +104 -104
  11. package/.agents/skills/themelia-ui/references/installation.md +60 -31
  12. package/.agents/skills/themelia-ui/references/migration.md +156 -5
  13. package/.agents/skills/themelia-ui/references/provider-and-scoping.md +37 -25
  14. package/.agents/skills/themelia-ui/references/reference-workflows.md +43 -0
  15. package/.agents/skills/themelia-ui/references/structure-and-spacing.md +147 -0
  16. package/.agents/skills/themelia-ui/references/theming.md +174 -131
  17. package/.agents/skills/themelia-ui/references/troubleshooting.md +88 -30
  18. package/.agents/skills/themelia-ui/references/verification.md +60 -5
  19. package/CHANGELOG.md +212 -0
  20. package/README.md +48 -60
  21. package/dist/accordion-CHuzMmWL.js +143 -0
  22. package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
  23. package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Cg2HhuBe.js} +1 -1
  24. package/dist/avatar-Dc_BNYfB.js +93 -0
  25. package/dist/badge-VlJVZjdm.js +45 -0
  26. package/dist/base/accordion.js +1 -1
  27. package/dist/base/action-menu.js +1 -1
  28. package/dist/base/alert-dialog.js +1 -1
  29. package/dist/base/aspect-ratio.js +3 -1
  30. package/dist/base/avatar.js +1 -1
  31. package/dist/base/badge.js +2 -2
  32. package/dist/base/batch-action-bar.js +1 -1
  33. package/dist/base/buttons.js +1 -1
  34. package/dist/base/cards.js +1 -1
  35. package/dist/base/carousel.js +6 -4
  36. package/dist/base/chart.js +1 -1
  37. package/dist/base/choice-inputs.js +1 -1
  38. package/dist/base/combobox.js +1 -1
  39. package/dist/base/command.js +1 -1
  40. package/dist/base/context-menu.js +22 -21
  41. package/dist/base/copyable.js +1 -1
  42. package/dist/base/date-pickers.js +1 -1
  43. package/dist/base/dialog.js +1 -1
  44. package/dist/base/display.js +1 -1
  45. package/dist/base/dropdown-menu.js +1 -1
  46. package/dist/base/feedback.js +1 -1
  47. package/dist/base/forms-numeric.js +1 -1
  48. package/dist/base/forms.js +1 -1
  49. package/dist/base/hover-card.js +26 -23
  50. package/dist/base/input-group.js +1 -1
  51. package/dist/base/item.js +1 -1
  52. package/dist/base/label.js +1 -1
  53. package/dist/base/menubar.js +20 -14
  54. package/dist/base/navigation-menu.js +47 -38
  55. package/dist/base/navigation.js +1 -1
  56. package/dist/base/otp-input.js +36 -30
  57. package/dist/base/overlay.js +1 -1
  58. package/dist/base/popover-menu.js +1 -1
  59. package/dist/base/popover.js +1 -1
  60. package/dist/base/qr-code.js +51 -47
  61. package/dist/base/repeaters.js +1 -1
  62. package/dist/base/resizable.js +2 -0
  63. package/dist/base/sheet.js +1 -1
  64. package/dist/base/sidebar.js +1 -1
  65. package/dist/base/skeleton.js +1 -1
  66. package/dist/base/spinner.js +1 -1
  67. package/dist/base/structure.js +1 -1
  68. package/dist/base/table.js +1 -1
  69. package/dist/base/text-inputs.js +1 -1
  70. package/dist/base/timeline.js +1 -1
  71. package/dist/base/toaster.js +1 -1
  72. package/dist/base/toggle.js +21 -15
  73. package/dist/base/toolbar.js +1 -1
  74. package/dist/base/tooltip.js +1 -1
  75. package/dist/base/typography.js +2 -2
  76. package/dist/base/upload.js +1 -1
  77. package/dist/base/value-inputs.js +1 -1
  78. package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
  79. package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
  80. package/dist/blocks/admin/commerce.js +2493 -0
  81. package/dist/{patterns → blocks}/analytics.js +312 -303
  82. package/dist/{patterns → blocks}/onboarding.js +27 -23
  83. package/dist/{patterns → blocks}/timelines.js +1 -1
  84. package/dist/buttons-BX2JfL5X.js +173 -0
  85. package/dist/cards-Ddhz43Bz.js +279 -0
  86. package/dist/chart-BkK3Xm10.js +201 -0
  87. package/dist/choice-inputs-NwRxvmZN.js +694 -0
  88. package/dist/combobox-519ubijc.js +292 -0
  89. package/dist/command-JjApYFds.js +156 -0
  90. package/dist/comments-CCQ2QRaU.js +1443 -0
  91. package/dist/components/base/action-menu/action-menu.d.ts +1 -1
  92. package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
  93. package/dist/components/base/avatar/avatar.d.ts +5 -2
  94. package/dist/components/base/badge/badge.d.ts +10 -10
  95. package/dist/components/base/badge/badge.variants.d.ts +1 -2
  96. package/dist/components/base/badge/index.d.ts +1 -2
  97. package/dist/components/base/buttons/button.d.ts +9 -8
  98. package/dist/components/base/buttons/button.types.d.ts +2 -2
  99. package/dist/components/base/buttons/index.d.ts +1 -1
  100. package/dist/components/base/buttons/text-button.d.ts +1 -1
  101. package/dist/components/base/cards/card-actions.d.ts +1 -1
  102. package/dist/components/base/cards/card.d.ts +3 -1
  103. package/dist/components/base/cards/partials/card-header.d.ts +2 -1
  104. package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
  105. package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
  106. package/dist/components/base/command/command.d.ts +5 -2
  107. package/dist/components/base/display/icon-badge.d.ts +5 -3
  108. package/dist/components/base/display/index.d.ts +1 -1
  109. package/dist/components/base/display/metadata-list.d.ts +6 -6
  110. package/dist/components/base/display/metadata-value.d.ts +1 -1
  111. package/dist/components/base/display/separator.d.ts +2 -2
  112. package/dist/components/base/feedback/alert.d.ts +3 -2
  113. package/dist/components/base/feedback/empty.d.ts +5 -4
  114. package/dist/components/base/feedback/progress-circle.d.ts +2 -2
  115. package/dist/components/base/feedback/progress.d.ts +3 -1
  116. package/dist/components/base/forms/form-field.d.ts +2 -2
  117. package/dist/components/base/input-group/input-group.d.ts +8 -10
  118. package/dist/components/base/item/item.d.ts +2 -2
  119. package/dist/components/base/overlay/index.d.ts +1 -1
  120. package/dist/components/base/overlay/overlay.types.d.ts +7 -5
  121. package/dist/components/base/qr-code/qr-code.d.ts +4 -4
  122. package/dist/components/base/sheet/sheet.d.ts +1 -1
  123. package/dist/components/base/sidebar/sidebar.d.ts +9 -13
  124. package/dist/components/base/spinner/spinner.d.ts +2 -2
  125. package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
  126. package/dist/components/base/structure/bleed.d.ts +4 -2
  127. package/dist/components/base/structure/grid.d.ts +10 -4
  128. package/dist/components/base/structure/index.d.ts +1 -1
  129. package/dist/components/base/structure/split.d.ts +4 -3
  130. package/dist/components/base/structure/stack.d.ts +5 -5
  131. package/dist/components/base/structure/structure.maps.d.ts +2 -1
  132. package/dist/components/base/structure/structure.types.d.ts +10 -4
  133. package/dist/components/base/toggle/toggle.d.ts +2 -2
  134. package/dist/components/base/toolbar/toolbar.d.ts +3 -3
  135. package/dist/components/base/typography/index.d.ts +2 -0
  136. package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
  137. package/dist/components/base/typography/text/index.d.ts +1 -0
  138. package/dist/components/base/typography/text/text.d.ts +15 -8
  139. package/dist/components/base/typography/text/text.variants.d.ts +41 -0
  140. package/dist/components/base/value-inputs/color-input.d.ts +1 -7
  141. package/dist/components/base/value-inputs/slider.d.ts +2 -7
  142. package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
  143. package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
  144. package/dist/components/features/actions/action-adapters.d.ts +3 -3
  145. package/dist/components/features/actions/actions.types.d.ts +3 -5
  146. package/dist/components/features/actions/index.d.ts +1 -1
  147. package/dist/components/features/activities/activities-feed.d.ts +1 -1
  148. package/dist/components/features/activities/activities.types.d.ts +4 -4
  149. package/dist/components/features/activities/activity-parts.d.ts +3 -3
  150. package/dist/components/features/activities/activity-row.d.ts +4 -4
  151. package/dist/components/features/activities/index.d.ts +1 -1
  152. package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
  153. package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
  154. package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
  155. package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
  156. package/dist/components/features/combobox/fetching-combobox.d.ts +2 -1
  157. package/dist/components/features/combobox/resource-combobox.d.ts +3 -0
  158. package/dist/components/features/combobox/use-suggestions.d.ts +7 -0
  159. package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
  160. package/dist/components/features/media-library/index.d.ts +1 -1
  161. package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
  162. package/dist/components/features/media-library/media-library-views.d.ts +4 -3
  163. package/dist/components/features/media-library/media-library.d.ts +1 -1
  164. package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
  165. package/dist/components/features/media-library/media-library.types.d.ts +11 -9
  166. package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
  167. package/dist/components/features/media-library/use-media-library.d.ts +1 -4
  168. package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
  169. package/dist/components/features/overlays/index.d.ts +1 -1
  170. package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
  171. package/dist/components/features/overlays/overlays.types.d.ts +8 -7
  172. package/dist/components/features/rich-text-editor/index.d.ts +0 -1
  173. package/dist/components/features/table/data-table-body.d.ts +1 -1
  174. package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
  175. package/dist/components/features/table/data-table-header.d.ts +1 -1
  176. package/dist/components/features/table/data-table-size.d.ts +1 -1
  177. package/dist/components/features/table/data-table.d.ts +1 -1
  178. package/dist/components/features/table/index.d.ts +1 -1
  179. package/dist/components/features/table/table-helpers.d.ts +9 -3
  180. package/dist/components/features/table/table.strings.d.ts +11 -0
  181. package/dist/components/features/table/table.types.d.ts +60 -2
  182. package/dist/components/features/theme-tweaker/index.d.ts +1 -1
  183. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
  184. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
  185. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
  186. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  187. package/dist/components/layout/auth/auth.d.ts +1 -1
  188. package/dist/components/layout/auth/auth.types.d.ts +1 -1
  189. package/dist/components/primitives/value.d.ts +3 -1
  190. package/dist/containers-B8d8U9GS.js +2 -0
  191. package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
  192. package/dist/core.css +2 -2
  193. package/dist/css/access.css +2 -1
  194. package/dist/css/accordion.css +2 -1
  195. package/dist/css/action-menu.css +2 -1
  196. package/dist/css/activities.css +2 -1
  197. package/dist/css/ai-chat.css +2 -1
  198. package/dist/css/analytics.css +2 -1
  199. package/dist/css/app-shell.css +2 -1
  200. package/dist/css/aspect-ratio.css +2 -1
  201. package/dist/css/async-preview.css +2 -1
  202. package/dist/css/auth.css +2 -1
  203. package/dist/css/avatar.css +2 -1
  204. package/dist/css/badge.css +2 -1
  205. package/dist/css/batch-action-bar.css +2 -1
  206. package/dist/css/buttons.css +2 -1
  207. package/dist/css/cards.css +2 -1
  208. package/dist/css/carousel.css +2 -1
  209. package/dist/css/chart.css +2 -1
  210. package/dist/css/choice-inputs.css +2 -1
  211. package/dist/css/combobox.css +2 -1
  212. package/dist/css/combobox2.css +2 -1
  213. package/dist/css/command.css +2 -1
  214. package/dist/css/comments.css +2 -1
  215. package/dist/css/commerce.css +2 -1
  216. package/dist/css/containers.css +2 -1
  217. package/dist/css/copyable.css +2 -1
  218. package/dist/css/data-view.css +2 -1
  219. package/dist/css/date-pickers.css +2 -1
  220. package/dist/css/display.css +2 -1
  221. package/dist/css/dropdown-menu.css +2 -1
  222. package/dist/css/event-calendar.css +2 -1
  223. package/dist/css/feedback.css +2 -1
  224. package/dist/css/filters.css +2 -1
  225. package/dist/css/forms-numeric.css +2 -1
  226. package/dist/css/forms.css +2 -1
  227. package/dist/css/global-search.css +2 -1
  228. package/dist/css/header.css +2 -1
  229. package/dist/css/hover-card.css +2 -1
  230. package/dist/css/input-group.css +2 -1
  231. package/dist/css/item.css +2 -1
  232. package/dist/css/kanban.css +2 -1
  233. package/dist/css/label.css +2 -1
  234. package/dist/css/map.css +2 -1
  235. package/dist/css/media-library.css +2 -1
  236. package/dist/css/mentions.css +2 -1
  237. package/dist/css/menubar.css +2 -1
  238. package/dist/css/navigation-menu.css +2 -1
  239. package/dist/css/navigation.css +2 -1
  240. package/dist/css/navigation2.css +2 -1
  241. package/dist/css/onboarding.css +2 -1
  242. package/dist/css/otp-input.css +2 -1
  243. package/dist/css/overlay.css +2 -1
  244. package/dist/css/overlays.css +2 -1
  245. package/dist/css/page.css +2 -1
  246. package/dist/css/popover-menu.css +2 -1
  247. package/dist/css/popover.css +2 -1
  248. package/dist/css/primitives.css +2 -1
  249. package/dist/css/products.css +2 -1
  250. package/dist/css/qr-code.css +2 -1
  251. package/dist/css/repeaters.css +2 -1
  252. package/dist/css/resizable.css +2 -1
  253. package/dist/css/resource-assignment.css +2 -1
  254. package/dist/css/resource.css +2 -1
  255. package/dist/css/rich-text-editor.css +2 -1
  256. package/dist/css/schema-form.css +2 -1
  257. package/dist/css/sidebar.css +2 -1
  258. package/dist/css/sidebar2.css +2 -1
  259. package/dist/css/skeleton.css +2 -1
  260. package/dist/css/spinner.css +2 -1
  261. package/dist/css/structure.css +2 -1
  262. package/dist/css/sync.css +2 -1
  263. package/dist/css/table.css +2 -1
  264. package/dist/css/table2.css +2 -1
  265. package/dist/css/text-inputs.css +2 -1
  266. package/dist/css/theme-tweaker.css +2 -1
  267. package/dist/css/timeline.css +2 -1
  268. package/dist/css/timelines.css +2 -1
  269. package/dist/css/toaster.css +2 -1
  270. package/dist/css/toggle.css +2 -1
  271. package/dist/css/toolbar.css +2 -1
  272. package/dist/css/tooltip.css +2 -1
  273. package/dist/css/typography.css +2 -1
  274. package/dist/css/upload.css +2 -1
  275. package/dist/css/value-inputs.css +2 -1
  276. package/dist/css/workspace.css +2 -1
  277. package/dist/css-graph.json +1027 -0
  278. package/dist/date-pickers-BwCwKIVM.js +685 -0
  279. package/dist/{dialog-CtFCuTUF.js → dialog-CAnwRNrm.js} +1 -1
  280. package/dist/display-a7AoX_u7.js +664 -0
  281. package/dist/dropdown-menu-Br8kvjrF.js +235 -0
  282. package/dist/empty.js +0 -0
  283. package/dist/features/actions.js +6 -6
  284. package/dist/features/activities.js +219 -216
  285. package/dist/features/ai-chat.js +593 -565
  286. package/dist/features/async-preview.js +105 -286
  287. package/dist/features/combobox.js +328 -314
  288. package/dist/features/comments.js +1 -1
  289. package/dist/features/data-view.js +56 -55
  290. package/dist/features/event-calendar.js +189 -185
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +259 -260
  293. package/dist/features/kanban.js +39 -37
  294. package/dist/features/map.js +357 -354
  295. package/dist/features/media-library.js +931 -931
  296. package/dist/features/mentions.js +1 -1
  297. package/dist/features/overlays.js +1 -1
  298. package/dist/features/products.js +950 -942
  299. package/dist/features/resource-assignment.js +39 -37
  300. package/dist/features/resource.js +70 -71
  301. package/dist/features/rich-text-editor.js +2 -2
  302. package/dist/features/schema-form.js +342 -338
  303. package/dist/features/sync.js +14 -12
  304. package/dist/features/table.js +1 -1
  305. package/dist/features/theme-tweaker.js +1002 -962
  306. package/dist/feedback-D4qVsKlD.js +430 -0
  307. package/dist/{filters-DOLKRSmb.js → filters-BhsTkWpZ.js} +386 -383
  308. package/dist/forms-C0WeNPFF.js +250 -0
  309. package/dist/forms-numeric-IwQ1ltNf.js +582 -0
  310. package/dist/hooks/use-native-dialog.d.ts +1 -1
  311. package/dist/index.js +2 -2
  312. package/dist/input-group-HS_Z0Ei_.js +119 -0
  313. package/dist/item-M2pmpWXh.js +150 -0
  314. package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
  315. package/dist/layout/app-shell.js +4 -2
  316. package/dist/layout/auth.js +102 -100
  317. package/dist/layout/header.js +190 -180
  318. package/dist/layout/navigation.js +1 -1
  319. package/dist/layout/page.js +18 -16
  320. package/dist/layout/settings.js +2 -2
  321. package/dist/layout/sidebar.js +50 -46
  322. package/dist/layout/workspace.js +71 -69
  323. package/dist/lib/action-presentation.d.ts +3 -3
  324. package/dist/lib/component-vocabulary.d.ts +2 -2
  325. package/dist/lib/css-length.d.ts +2 -0
  326. package/dist/lib/responsive.d.ts +1 -1
  327. package/dist/lib/theming/index.d.ts +1 -0
  328. package/dist/lib/theming/recipes.d.ts +2 -2
  329. package/dist/lib/theming/themes/dense.d.ts +3 -0
  330. package/dist/lib/theming/themes/editorial.d.ts +3 -0
  331. package/dist/lib/theming/themes/index.d.ts +8 -0
  332. package/dist/lib/theming/themes/pair.d.ts +7 -0
  333. package/dist/lib/theming/themes/sharp.d.ts +3 -0
  334. package/dist/lib/theming/themes/soft.d.ts +3 -0
  335. package/dist/lib/theming/themes/types.d.ts +12 -0
  336. package/dist/lib/ui-provider/index.d.ts +1 -1
  337. package/dist/lib/ui-provider/scope.d.ts +5 -8
  338. package/dist/lib/ui-provider/tokens.d.ts +11 -3
  339. package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
  340. package/dist/lib/ui-provider/types.d.ts +17 -19
  341. package/dist/lib/ui-provider/ui-scope.d.ts +1 -1
  342. package/dist/{mentions-BbsEHlcH.js → mentions-BOxbigwp.js} +113 -111
  343. package/dist/navigation-Bgu7Vc0M.js +622 -0
  344. package/dist/navigation-DiYACqpE.js +216 -0
  345. package/dist/overlay-BuQOl8aP.js +356 -0
  346. package/dist/{overlays-DvVoS3td.js → overlays-1sULyytH.js} +77 -75
  347. package/dist/popover-CA7SP_iz.js +127 -0
  348. package/dist/popover-menu-QXgQeWeG.js +192 -0
  349. package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
  350. package/dist/primitives.js +1 -1
  351. package/dist/profiles/admin.json +6 -36
  352. package/dist/profiles/general.json +6 -96
  353. package/dist/repeaters-CeH20dvr.js +445 -0
  354. package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
  355. package/dist/{sheet-CKcmRbJ9.js → sheet-CJ1-OAla.js} +3 -3
  356. package/dist/sidebar-D8uGqxio.js +421 -0
  357. package/dist/skeleton-BTKNKTdj.js +173 -0
  358. package/dist/spinner-Tc1QCnxM.js +30 -0
  359. package/dist/{structure-D0WGQAP3.js → structure-CynEZ-OY.js} +15 -23
  360. package/dist/style.css +1 -1
  361. package/dist/styles/TOKENS.md +116 -275
  362. package/dist/styles/animation.css +114 -0
  363. package/dist/styles/base.css +7 -6
  364. package/dist/styles/fields.css +45 -63
  365. package/dist/styles/focus.css +12 -0
  366. package/dist/styles/forced-colors.css +11 -10
  367. package/dist/styles/index.css +23 -30
  368. package/dist/styles/map.css +45 -34
  369. package/dist/styles/mentions.css +14 -52
  370. package/dist/styles/overlays.css +7 -7
  371. package/dist/styles/tailwind.css +76 -127
  372. package/dist/styles/targets.css +3 -3
  373. package/dist/styles/theme/colour.css +86 -0
  374. package/dist/styles/theme/density.css +31 -0
  375. package/dist/styles/theme/elevation.css +9 -0
  376. package/dist/styles/theme/layout.css +18 -0
  377. package/dist/styles/theme/motion.css +18 -0
  378. package/dist/styles/theme/shape.css +12 -0
  379. package/dist/styles/theme/size.css +10 -0
  380. package/dist/styles/theme/spacing.css +11 -0
  381. package/dist/styles/theme/typography.css +20 -0
  382. package/dist/styles/tone.css +61 -0
  383. package/dist/table-B7dtIFUx.js +1262 -0
  384. package/dist/table-Ds_eO9av.js +191 -0
  385. package/dist/tailwind.css +76 -127
  386. package/dist/text-inputs-BboE77nZ.js +395 -0
  387. package/dist/theming-C5ygF5uf.js +292 -0
  388. package/dist/theming.js +2 -2
  389. package/dist/{timeline-BdaGRyj-.js → timeline-BR_jNgvz.js} +57 -49
  390. package/dist/{timelines-BB7550mz.js → timelines-DXG1BfIN.js} +69 -67
  391. package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
  392. package/dist/tokens.json +1027 -636
  393. package/dist/toolbar-DBK-c4yy.js +74 -0
  394. package/dist/tooltip-BPYP-jUm.js +76 -0
  395. package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
  396. package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
  397. package/dist/ui-provider.js +1 -1
  398. package/dist/upload-CYuoJykZ.js +968 -0
  399. package/dist/use-async-preview-BFwf9ElY.js +188 -0
  400. package/dist/value-inputs-ng8aVJJZ.js +728 -0
  401. package/docs/README.md +13 -3
  402. package/docs/build/browser-composition-fixture.ts +28 -0
  403. package/docs/build/recipes.md +11484 -10723
  404. package/docs/generated/component-index.json +9809 -9169
  405. package/docs/generated/components/INDEX.md +5 -5
  406. package/docs/generated/components/base--accordion.md +51 -2
  407. package/docs/generated/components/base--action-menu.md +14 -15
  408. package/docs/generated/components/base--alert-dialog.md +3 -4
  409. package/docs/generated/components/base--aspect-ratio.md +3 -4
  410. package/docs/generated/components/base--avatar.md +7 -7
  411. package/docs/generated/components/base--badge.md +159 -27
  412. package/docs/generated/components/base--batch-action-bar.md +6 -7
  413. package/docs/generated/components/base--buttons.md +151 -47
  414. package/docs/generated/components/base--cards.md +107 -14
  415. package/docs/generated/components/base--carousel.md +1 -2
  416. package/docs/generated/components/base--chart.md +44 -8
  417. package/docs/generated/components/base--choice-inputs.md +10 -11
  418. package/docs/generated/components/base--combobox.md +3 -4
  419. package/docs/generated/components/base--command.md +6 -6
  420. package/docs/generated/components/base--context-menu.md +1 -2
  421. package/docs/generated/components/base--copyable.md +6 -7
  422. package/docs/generated/components/base--date-pickers.md +6 -7
  423. package/docs/generated/components/base--dialog.md +6 -7
  424. package/docs/generated/components/base--direction.md +1 -1
  425. package/docs/generated/components/base--display.md +234 -54
  426. package/docs/generated/components/base--dropdown-menu.md +6 -7
  427. package/docs/generated/components/base--feedback.md +71 -18
  428. package/docs/generated/components/base--forms-numeric.md +6 -7
  429. package/docs/generated/components/base--forms.md +84 -14
  430. package/docs/generated/components/base--hover-card.md +3 -4
  431. package/docs/generated/components/base--input-group.md +27 -30
  432. package/docs/generated/components/base--item.md +8 -9
  433. package/docs/generated/components/base--label.md +2 -3
  434. package/docs/generated/components/base--menubar.md +2 -4
  435. package/docs/generated/components/base--navigation-menu.md +2 -3
  436. package/docs/generated/components/base--navigation.md +2 -3
  437. package/docs/generated/components/base--otp-input.md +3 -4
  438. package/docs/generated/components/base--overlay.md +56 -47
  439. package/docs/generated/components/base--popover-menu.md +7 -8
  440. package/docs/generated/components/base--popover.md +9 -10
  441. package/docs/generated/components/base--qr-code.md +7 -8
  442. package/docs/generated/components/base--repeaters.md +6 -7
  443. package/docs/generated/components/base--resizable.md +2 -3
  444. package/docs/generated/components/base--sheet.md +12 -13
  445. package/docs/generated/components/base--sidebar.md +9 -11
  446. package/docs/generated/components/base--skeleton.md +6 -7
  447. package/docs/generated/components/base--slot.md +1 -1
  448. package/docs/generated/components/base--spinner.md +5 -7
  449. package/docs/generated/components/base--structure.md +320 -70
  450. package/docs/generated/components/base--table.md +61 -3
  451. package/docs/generated/components/base--text-inputs.md +17 -18
  452. package/docs/generated/components/base--timeline.md +45 -4
  453. package/docs/generated/components/base--toaster.md +43 -12
  454. package/docs/generated/components/base--toggle.md +11 -12
  455. package/docs/generated/components/base--toolbar.md +7 -8
  456. package/docs/generated/components/base--tooltip.md +5 -6
  457. package/docs/generated/components/base--typography.md +317 -32
  458. package/docs/generated/components/base--upload.md +8 -9
  459. package/docs/generated/components/base--value-inputs.md +9 -38
  460. package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +15 -6
  461. package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
  462. package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +57 -14
  463. package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
  464. package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
  465. package/docs/generated/components/features--actions.md +8 -18
  466. package/docs/generated/components/features--activities.md +31 -32
  467. package/docs/generated/components/features--ai-chat.md +15 -15
  468. package/docs/generated/components/features--async-preview.md +5 -6
  469. package/docs/generated/components/features--combobox.md +71 -5
  470. package/docs/generated/components/features--comments.md +0 -1
  471. package/docs/generated/components/features--data-view.md +63 -8
  472. package/docs/generated/components/features--event-calendar.md +1 -2
  473. package/docs/generated/components/features--filters.md +11 -2
  474. package/docs/generated/components/features--global-search.md +1 -2
  475. package/docs/generated/components/features--kanban.md +1 -2
  476. package/docs/generated/components/features--map.md +1 -2
  477. package/docs/generated/components/features--media-library.md +105 -38
  478. package/docs/generated/components/features--mentions.md +7 -7
  479. package/docs/generated/components/features--overlays.md +75 -22
  480. package/docs/generated/components/features--products.md +10 -11
  481. package/docs/generated/components/features--resource-assignment.md +2 -3
  482. package/docs/generated/components/features--resource.md +3 -4
  483. package/docs/generated/components/features--rich-text-editor.md +42 -13
  484. package/docs/generated/components/features--schema-form.md +1 -2
  485. package/docs/generated/components/features--sync.md +2 -3
  486. package/docs/generated/components/features--table.md +162 -12
  487. package/docs/generated/components/features--theme-tweaker.md +30 -15
  488. package/docs/generated/components/forms.md +2 -2
  489. package/docs/generated/components/layout--app-shell.md +41 -11
  490. package/docs/generated/components/layout--auth.md +8 -9
  491. package/docs/generated/components/layout--containers.md +40 -1
  492. package/docs/generated/components/layout--header.md +2 -3
  493. package/docs/generated/components/layout--navigation.md +0 -1
  494. package/docs/generated/components/layout--page.md +33 -5
  495. package/docs/generated/components/layout--settings.md +0 -1
  496. package/docs/generated/components/layout--sidebar.md +47 -7
  497. package/docs/generated/components/layout--workspace.md +3 -4
  498. package/docs/generated/components/primitives.md +128 -17
  499. package/docs/generated/components/theming.md +147 -4
  500. package/docs/generated/components/ui-provider.md +96 -78
  501. package/docs/generated/composition-ladder.md +8 -8
  502. package/docs/generated/consumer-contract.json +5736 -0
  503. package/docs/generated/imports.md +104 -104
  504. package/docs/generated/migration-broad-imports.json +267 -90
  505. package/docs/generated/migration-broad-imports.md +266 -101
  506. package/docs/generated/migration-codemod.json +365 -70
  507. package/docs/generated/migration.md +665 -95
  508. package/docs/generated/profiles.md +27 -27
  509. package/docs/generated/public-api.md +104 -102
  510. package/docs/generated/recipes.json +755 -810
  511. package/docs/generated/workflows/communications-overview/analytics/communications-reference.tsx +19 -0
  512. package/docs/generated/workflows/index.json +691 -0
  513. package/docs/generated/workflows/media-picking/media-library/media-picking-reference.tsx +63 -0
  514. package/docs/generated/workflows/media-picking/media-library/reference-data.ts +3 -0
  515. package/docs/generated/workflows/multi-section-form/form-workflow/multi-section-reference.tsx +46 -0
  516. package/docs/generated/workflows/nested-action-flow/action-overlays/nested-action-reference.tsx +39 -0
  517. package/docs/generated/workflows/record-detail/page-layout/record-detail-reference.tsx +24 -0
  518. package/docs/generated/workflows/resource-index/data-view/resource-index-reference.tsx +51 -0
  519. package/docs/generated/workflows/scoped-resource-selection/combobox/scoped-resource-reference.tsx +50 -0
  520. package/docs/generated/workflows/website-content-editor/media-library/reference-data.ts +3 -0
  521. package/docs/generated/workflows/website-content-editor/rich-text-editor/website-content-reference.tsx +33 -0
  522. package/docs/generated/workflows/workspace-navigation/app-shell/workspace-navigation-reference.tsx +26 -0
  523. package/docs/learn/api-compatibility.md +5 -4
  524. package/docs/learn/blocks.md +123 -0
  525. package/docs/learn/composition.md +100 -19
  526. package/docs/learn/forms.md +23 -3
  527. package/docs/learn/framework-wiring.md +41 -13
  528. package/docs/learn/i18n.md +4 -2
  529. package/docs/learn/installation.md +60 -31
  530. package/docs/learn/migration.md +156 -5
  531. package/docs/learn/provider-and-scoping.md +37 -25
  532. package/docs/learn/reference-workflows.md +43 -0
  533. package/docs/learn/structure-and-spacing.md +147 -0
  534. package/docs/learn/theming.md +174 -131
  535. package/docs/learn/troubleshooting.md +88 -30
  536. package/docs/learn/verification.md +60 -5
  537. package/package.json +42 -473
  538. package/scripts/consumer/codemod.mjs +50 -32
  539. package/scripts/consumer/contract-reader.mjs +42 -0
  540. package/scripts/consumer/css-scan.mjs +51 -0
  541. package/scripts/consumer/diagnose.mjs +136 -0
  542. package/scripts/consumer/find-component.mjs +30 -17
  543. package/scripts/consumer/install-skill.mjs +93 -11
  544. package/src/styles/TOKENS.md +116 -275
  545. package/dist/accordion-6YPJ9XRO.js +0 -135
  546. package/dist/admin/patterns/access.css +0 -15
  547. package/dist/admin/patterns/commerce.css +0 -29
  548. package/dist/admin/patterns/commerce.js +0 -2493
  549. package/dist/avatar-CS7zow2q.js +0 -85
  550. package/dist/badge-CxOuTfVr.js +0 -63
  551. package/dist/base/accordion.css +0 -3
  552. package/dist/base/action-menu.css +0 -6
  553. package/dist/base/alert-dialog.css +0 -4
  554. package/dist/base/aspect-ratio.css +0 -2
  555. package/dist/base/avatar.css +0 -4
  556. package/dist/base/badge.css +0 -2
  557. package/dist/base/batch-action-bar.css +0 -5
  558. package/dist/base/buttons.css +0 -4
  559. package/dist/base/cards.css +0 -13
  560. package/dist/base/carousel.css +0 -5
  561. package/dist/base/chart.css +0 -2
  562. package/dist/base/choice-inputs.css +0 -10
  563. package/dist/base/combobox.css +0 -3
  564. package/dist/base/command.css +0 -9
  565. package/dist/base/context-menu.css +0 -2
  566. package/dist/base/copyable.css +0 -6
  567. package/dist/base/date-pickers.css +0 -11
  568. package/dist/base/dialog.css +0 -4
  569. package/dist/base/display.css +0 -8
  570. package/dist/base/dropdown-menu.css +0 -2
  571. package/dist/base/feedback.css +0 -5
  572. package/dist/base/forms-numeric.css +0 -12
  573. package/dist/base/forms.css +0 -14
  574. package/dist/base/hover-card.css +0 -2
  575. package/dist/base/input-group.css +0 -6
  576. package/dist/base/item.css +0 -9
  577. package/dist/base/label.css +0 -3
  578. package/dist/base/menubar.css +0 -2
  579. package/dist/base/navigation-menu.css +0 -2
  580. package/dist/base/navigation.css +0 -12
  581. package/dist/base/otp-input.css +0 -9
  582. package/dist/base/overlay.css +0 -4
  583. package/dist/base/popover-menu.css +0 -11
  584. package/dist/base/popover.css +0 -3
  585. package/dist/base/qr-code.css +0 -2
  586. package/dist/base/repeaters.css +0 -18
  587. package/dist/base/resizable.css +0 -2
  588. package/dist/base/sheet.css +0 -4
  589. package/dist/base/sidebar.css +0 -12
  590. package/dist/base/skeleton.css +0 -9
  591. package/dist/base/spinner.css +0 -2
  592. package/dist/base/structure.css +0 -2
  593. package/dist/base/table.css +0 -3
  594. package/dist/base/text-inputs.css +0 -2
  595. package/dist/base/timeline.css +0 -9
  596. package/dist/base/toaster.css +0 -2
  597. package/dist/base/toggle.css +0 -2
  598. package/dist/base/toolbar.css +0 -5
  599. package/dist/base/tooltip.css +0 -2
  600. package/dist/base/typography.css +0 -2
  601. package/dist/base/upload.css +0 -10
  602. package/dist/base/value-inputs.css +0 -14
  603. package/dist/buttons-CqXKWty3.js +0 -179
  604. package/dist/cards-C6Ulbkw7.js +0 -271
  605. package/dist/chart-nomhJ87z.js +0 -193
  606. package/dist/choice-inputs-OUDn0kQw.js +0 -680
  607. package/dist/combobox-C8oP92bT.js +0 -266
  608. package/dist/command-Bp3B6pUu.js +0 -143
  609. package/dist/comments-CAnDlyXO.js +0 -1438
  610. package/dist/components/admin/patterns/index.d.ts +0 -2
  611. package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
  612. package/dist/components/patterns/index.d.ts +0 -3
  613. package/dist/css/styles.css +0 -1
  614. package/dist/date-pickers-DOwIT-Nk.js +0 -661
  615. package/dist/display-B3Q17h5z.js +0 -645
  616. package/dist/dropdown-menu-TyNLCLML.js +0 -223
  617. package/dist/features/actions.css +0 -11
  618. package/dist/features/activities.css +0 -25
  619. package/dist/features/ai-chat.css +0 -14
  620. package/dist/features/async-preview.css +0 -10
  621. package/dist/features/combobox.css +0 -12
  622. package/dist/features/comments.css +0 -24
  623. package/dist/features/data-view.css +0 -31
  624. package/dist/features/event-calendar.css +0 -17
  625. package/dist/features/filters.css +0 -24
  626. package/dist/features/global-search.css +0 -19
  627. package/dist/features/kanban.css +0 -7
  628. package/dist/features/map.css +0 -15
  629. package/dist/features/media-library.css +0 -27
  630. package/dist/features/mentions.css +0 -17
  631. package/dist/features/overlays.css +0 -11
  632. package/dist/features/products.css +0 -29
  633. package/dist/features/resource-assignment.css +0 -14
  634. package/dist/features/resource.css +0 -15
  635. package/dist/features/rich-text-editor.css +0 -8
  636. package/dist/features/schema-form.css +0 -22
  637. package/dist/features/sync.css +0 -11
  638. package/dist/features/table.css +0 -20
  639. package/dist/features/theme-tweaker.css +0 -27
  640. package/dist/feedback-DRerHGuV.js +0 -469
  641. package/dist/forms-CPrGGif_.js +0 -242
  642. package/dist/forms-numeric-CPVsL7Vf.js +0 -569
  643. package/dist/index.css +0 -3
  644. package/dist/input-group-BYe0rhoB.js +0 -126
  645. package/dist/item-B3yQ26as.js +0 -146
  646. package/dist/layout/app-shell.css +0 -13
  647. package/dist/layout/auth.css +0 -14
  648. package/dist/layout/containers.css +0 -2
  649. package/dist/layout/header.css +0 -20
  650. package/dist/layout/navigation.css +0 -11
  651. package/dist/layout/page.css +0 -15
  652. package/dist/layout/settings.css +0 -16
  653. package/dist/layout/sidebar.css +0 -16
  654. package/dist/layout/workspace.css +0 -15
  655. package/dist/navigation-CsqTA16F.js +0 -614
  656. package/dist/navigation-DzxzPuwg.js +0 -202
  657. package/dist/overlay-WQOsLd69.js +0 -345
  658. package/dist/patterns/analytics.css +0 -15
  659. package/dist/patterns/onboarding.css +0 -11
  660. package/dist/patterns/timelines.css +0 -11
  661. package/dist/popover-DriLnIFc.js +0 -123
  662. package/dist/popover-menu-C2UCMAe7.js +0 -189
  663. package/dist/primitives.css +0 -3
  664. package/dist/repeaters-DuP1N0nw.js +0 -438
  665. package/dist/rich-text-editor-BQXFe9oN.js +0 -595
  666. package/dist/sidebar-D0N6ckJL.js +0 -412
  667. package/dist/skeleton-DGR9df28.js +0 -172
  668. package/dist/spinner-CUAVFecI.js +0 -52
  669. package/dist/styles/FACTORS.md +0 -36
  670. package/dist/styles/SCOPES.md +0 -86
  671. package/dist/styles/themes/default.css +0 -164
  672. package/dist/styles/theming/animation.css +0 -143
  673. package/dist/styles/theming/colors.css +0 -97
  674. package/dist/styles/theming/feedback.css +0 -17
  675. package/dist/styles/theming/field.css +0 -21
  676. package/dist/styles/theming/focus.css +0 -88
  677. package/dist/styles/theming/layers.css +0 -13
  678. package/dist/styles/theming/layout.css +0 -21
  679. package/dist/styles/theming/motion.css +0 -42
  680. package/dist/styles/theming/overlay.css +0 -52
  681. package/dist/styles/theming/sizing.css +0 -118
  682. package/dist/styles/theming/text.css +0 -30
  683. package/dist/styles/theming/typography.css +0 -26
  684. package/dist/styles/tokens/components.css +0 -22
  685. package/dist/styles/tokens/foundation.css +0 -80
  686. package/dist/styles/tokens/layout.css +0 -19
  687. package/dist/styles/tokens/palette.css +0 -88
  688. package/dist/styles/tokens/primitives.css +0 -18
  689. package/dist/styles/tokens/states.css +0 -77
  690. package/dist/table-BC4qqsUb.js +0 -180
  691. package/dist/table-BHDpjajL.js +0 -982
  692. package/dist/text-inputs-DF_lD7pA.js +0 -385
  693. package/dist/theming-D6KRU7hO.js +0 -104
  694. package/dist/toolbar-DWRywF0R.js +0 -68
  695. package/dist/tooltip-t1VQQ2tZ.js +0 -73
  696. package/dist/upload-B38YZeFJ.js +0 -938
  697. package/dist/value-inputs-Q4ymjXlV.js +0 -716
  698. package/src/styles/FACTORS.md +0 -36
  699. package/src/styles/SCOPES.md +0 -86
  700. /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
  701. /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
  702. /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
  703. /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
  704. /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
  705. /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
  706. /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
  707. /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
  708. /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
  709. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
  710. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
  711. /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
  712. /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
  713. /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
  714. /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
  715. /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
  716. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
  717. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
  718. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
  719. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
  720. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
  721. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
  722. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
  723. /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
  724. /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
  725. /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
  726. /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
  727. /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
  728. /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
  729. /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
  730. /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
  731. /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
  732. /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
  733. /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
  734. /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
  735. /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
  736. /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
  737. /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
  738. /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
  739. /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
  740. /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
  741. /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
  742. /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
  743. /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
  744. /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
  745. /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
  746. /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
@@ -1,29 +1,31 @@
1
1
  /*
2
- * The shared field surface: height, border, radius, focus, invalid and disabled states for
3
- * every text control. A control opts in with `data-field-control` and styles only what is
2
+ * The shared field surface: height, frame, radius, type, focus, invalid and disabled states
3
+ * for every text control. A control opts in with `data-field-control` and styles only what is
4
4
  * its own (a textarea's resize, a select's chevron). Layered as `components` so consumer
5
5
  * unlayered CSS wins, as with a module.
6
+ *
7
+ * Focus is the shared outline (styles/focus.css), drawn over the frame rather than outside
8
+ * it, so a field in a row keeps its footprint.
6
9
  */
7
10
  @layer components {
8
11
  [data-field-control] {
9
12
  width: 100%;
10
13
  min-width: 0;
11
- height: var(--control-h);
12
- padding-inline: var(--control-px-sm);
13
- padding-block: var(--space-xs);
14
- border: var(--border-width) solid var(--control-border);
14
+ height: var(--control-height);
15
+ padding-inline: var(--padding-sm);
16
+ padding-block: calc(var(--padding-sm) / 2);
17
+ border: var(--border-width) solid var(--input);
15
18
  border-radius: var(--radius-sm);
16
- background-color: var(--field-bg);
19
+ background-color: transparent;
17
20
  color: var(--foreground);
21
+ /* The field's type: Text's `sm` step, set here once for every control. */
18
22
  font: inherit;
19
- font-size: var(--text-sm);
20
- line-height: var(--text-sm--line-height);
23
+ font-size: calc(var(--text-sm) * var(--text-scale));
24
+ line-height: calc(1.25 / 0.875);
21
25
  box-shadow: none;
22
- outline: none;
23
26
  transition:
24
- color var(--duration-fast) var(--ease-in-out),
25
- border-color var(--duration-fast) var(--ease-in-out),
26
- box-shadow var(--duration-fast) var(--ease-in-out);
27
+ color var(--duration-fast) var(--ease),
28
+ border-color var(--duration-fast) var(--ease);
27
29
  }
28
30
 
29
31
  /*
@@ -31,14 +33,14 @@
31
33
  * each scope so a nested opt-out wins. A fixed 16px: it must not scale with density.
32
34
  */
33
35
  [data-iphone-input-zoom="true"] {
34
- --field-min-font-size: 16px;
36
+ --_field-min-font-size: 16px;
35
37
  }
36
38
  [data-iphone-input-zoom="false"] {
37
- --field-min-font-size: 0px;
39
+ --_field-min-font-size: 0px;
38
40
  }
39
41
  :is(input, textarea, select)[data-field-control] {
40
- font-size: max(var(--text-sm), var(--field-min-font-size, 0px));
41
- line-height: max(var(--text-sm--line-height), calc(var(--field-min-font-size, 0px) * 1.25));
42
+ font-size: max(calc(var(--text-sm) * var(--text-scale)), var(--_field-min-font-size, 0px));
43
+ line-height: max(calc(1.25 / 0.875), calc(var(--_field-min-font-size, 0px) * 1.25));
42
44
  }
43
45
 
44
46
  [data-field-control]::placeholder {
@@ -48,34 +50,29 @@
48
50
  [data-field-control]:hover:not(:disabled):not([data-disabled]):not(:focus-visible):not(
49
51
  [aria-invalid="true"]
50
52
  ):not(:is(input, textarea):read-only) {
51
- border-color: var(--control-border-hover);
53
+ border-color: color-mix(in oklab, var(--input), var(--foreground) 35%);
52
54
  }
53
55
 
54
56
  /*
55
- * Read-only: full ink and focus ring (the value can still be read and copied), a quiet
56
- * plate, no hover. Scoped to text controls because a <button> trigger matches `:read-only`.
57
+ * Read-only: full ink and focus (the value can still be read and copied), a quiet plate,
58
+ * no hover. Scoped to text controls because a <button> trigger matches `:read-only`.
57
59
  */
58
60
  :is(input, textarea)[data-field-control]:read-only:not(:disabled) {
59
- background-color: var(--foreground-8);
61
+ background-color: color-mix(in oklab, var(--foreground) var(--tint), transparent);
60
62
  }
61
63
 
62
64
  [data-field-control]:focus-visible {
63
- border-color: var(--focus-ring-color);
64
- box-shadow: var(--field-focus-ring);
65
+ border-color: var(--ring);
66
+ outline-offset: calc(var(--border-width) * -1);
65
67
  }
66
68
 
67
69
  /* Keyed on `aria-invalid` so the styling and the announcement cannot disagree. */
68
70
  [data-field-control][aria-invalid="true"] {
69
- border-color: var(--invalid-ring-border);
70
- box-shadow: var(--invalid-ring);
71
+ border-color: var(--destructive);
71
72
  }
72
73
 
73
- /*
74
- * Focus wins the ring; invalid keeps the border. Needed because the invalid rule above
75
- * would otherwise take the box-shadow and hide focus (tests/interaction.spec.ts).
76
- */
77
74
  [data-field-control][aria-invalid="true"]:focus-visible {
78
- box-shadow: var(--field-focus-ring);
75
+ outline-color: var(--destructive);
79
76
  }
80
77
 
81
78
  [data-field-control]:disabled {
@@ -85,18 +82,14 @@
85
82
 
86
83
  /*
87
84
  * Chrome repaints autofilled backgrounds; an opaque --card inset (forms sit on cards)
88
- * covers it. Focused, the ring is restated beside the inset, which would replace it.
89
- * `:is()` forgives whichever spelling a browser lacks; a plain list would drop the rule.
85
+ * covers it. `:is()` forgives whichever spelling a browser lacks; a plain list would drop
86
+ * the rule.
90
87
  */
91
88
  [data-field-control]:is(:autofill, :-webkit-autofill) {
92
89
  -webkit-text-fill-color: var(--foreground);
93
90
  box-shadow: inset 0 0 0 100px var(--card);
94
91
  }
95
92
 
96
- [data-field-control]:is(:autofill, :-webkit-autofill):focus-visible {
97
- box-shadow: inset 0 0 0 100px var(--card), var(--field-focus-ring);
98
- }
99
-
100
93
  /*
101
94
  * ── The shell ───────────────────────────────────────────────────────────────
102
95
  * Wears the field surface for the control inside it, so icons and actions read as part
@@ -107,23 +100,21 @@
107
100
  [data-field-shell] {
108
101
  display: flex;
109
102
  align-items: center;
110
- /* Inline affordances — a leading icon, a trailing action, a unit suffix. */
111
- gap: var(--space-sm);
112
- min-height: var(--control-h);
113
- padding-inline: var(--control-px-sm);
114
- border: var(--border-width) solid var(--control-border);
103
+ /* Inline affordances: a leading icon, a trailing action, a unit suffix. */
104
+ gap: var(--gap-sm);
105
+ min-height: var(--control-height);
106
+ padding-inline: var(--padding-sm);
107
+ border: var(--border-width) solid var(--input);
115
108
  border-radius: var(--radius-sm);
116
- background-color: var(--field-bg);
117
- box-shadow: none;
118
- transition:
119
- border-color var(--duration-fast) var(--ease-in-out),
120
- box-shadow var(--duration-fast) var(--ease-in-out);
109
+ background-color: transparent;
110
+ transition: border-color var(--duration-fast) var(--ease);
121
111
  }
122
112
 
123
113
  /* `:has()` on the control, not `:focus-within`: a focused trailing button must not light the field. */
124
114
  [data-field-shell]:has([data-field-control]:focus-visible) {
125
- border-color: var(--focus-ring-color);
126
- box-shadow: var(--field-focus-ring);
115
+ border-color: var(--ring);
116
+ outline: calc(var(--border-width) * 2) solid var(--ring);
117
+ outline-offset: calc(var(--border-width) * -1);
127
118
  }
128
119
 
129
120
  [data-field-shell]:hover:not(:has([data-field-control]:disabled)):not(
@@ -131,25 +122,17 @@
131
122
  ):not(:has([data-field-control]:focus-visible)):not(
132
123
  :has([data-field-control][aria-invalid="true"])
133
124
  ):not([aria-invalid="true"]):not(:has(:is(input, textarea)[data-field-control]:read-only)) {
134
- border-color: var(--control-border-hover);
125
+ border-color: color-mix(in oklab, var(--input), var(--foreground) 35%);
135
126
  }
136
127
 
137
128
  [data-field-shell]:has(:is(input, textarea)[data-field-control]:read-only:not(:disabled)) {
138
- background-color: var(--foreground-8);
129
+ background-color: color-mix(in oklab, var(--foreground) var(--tint), transparent);
139
130
  }
140
131
 
141
132
  [data-field-shell]:has([data-field-control][aria-invalid="true"]),
142
133
  [data-field-shell][aria-invalid="true"] {
143
- border-color: var(--invalid-ring-border);
144
- box-shadow: var(--invalid-ring);
145
- }
146
-
147
- /* The same rule for a shell, which wears the ring on its control's behalf. */
148
- [data-field-shell]:has([data-field-control][aria-invalid="true"]):has(
149
- [data-field-control]:focus-visible
150
- ),
151
- [data-field-shell][aria-invalid="true"]:has([data-field-control]:focus-visible) {
152
- box-shadow: var(--field-focus-ring);
134
+ border-color: var(--destructive);
135
+ outline-color: var(--destructive);
153
136
  }
154
137
 
155
138
  [data-field-shell]:has([data-field-control]:disabled) {
@@ -167,9 +150,8 @@
167
150
  padding-inline: 0;
168
151
  }
169
152
 
170
- [data-field-shell] [data-field-control]:focus-visible,
171
- [data-field-shell] [data-field-control][aria-invalid="true"] {
172
- box-shadow: none;
153
+ [data-field-shell] [data-field-control]:focus-visible {
154
+ outline: none;
173
155
  }
174
156
 
175
157
  /* The shell takes the autofill surface and the bare inner input matches it. */
@@ -0,0 +1,12 @@
1
+ /*
2
+ * The focus rule: one outline for every focusable element, drawn by the browser, so it follows
3
+ * the element's corners, survives forced-colours mode, and never shifts layout. Zero
4
+ * specificity in `base`, so a component that must draw it inside its box (under a clipping
5
+ * ancestor) sets a negative `outline-offset` on its own rule.
6
+ */
7
+ @layer base {
8
+ :where(:focus-visible) {
9
+ outline: calc(var(--border-width) * 2) solid var(--ring);
10
+ outline-offset: calc(var(--border-width) * 2);
11
+ }
12
+ }
@@ -1,21 +1,22 @@
1
1
  /*
2
- * Forced colors — restores the focus ring. Components pair `box-shadow: var(--focus-ring)`
3
- * with `outline: none`, and forced-colors mode drops box-shadow, leaving no focus at all.
4
- * In `utilities` because it must outrank those `outline: none` rules in `components`.
5
- * System colours only: the user's palette is the only palette in this mode.
2
+ * Forced colors — restores the focus outline. A component that shows focus another way (a
3
+ * menu's highlight fill, a field's frame) removes the outline, and forced-colors mode drops
4
+ * fills and shadows, leaving no focus at all. In `utilities` because it must outrank those
5
+ * `outline: none` rules in `components`. System colours only: the user's palette is the only
6
+ * palette in this mode.
6
7
  */
7
8
  @layer utilities {
8
9
  @media (forced-colors: active) {
9
- /* `:focus-visible`, not `:focus`, so a pointer click draws no ring. */
10
+ /* `:focus-visible`, not `:focus`, so a pointer click draws no outline. */
10
11
  *:focus-visible {
11
- outline: var(--focus-ring-width) solid Highlight;
12
- outline-offset: 2px;
12
+ outline: calc(var(--border-width) * 2) solid Highlight;
13
+ outline-offset: calc(var(--border-width) * 2);
13
14
  }
14
15
 
15
- /* A shelled field shows focus on the shell, as the normal ring does. */
16
+ /* A shelled field shows focus on the shell, as the normal outline does. */
16
17
  [data-field-shell]:has([data-field-control]:focus-visible) {
17
- outline: var(--focus-ring-width) solid Highlight;
18
- outline-offset: 2px;
18
+ outline: calc(var(--border-width) * 2) solid Highlight;
19
+ outline-offset: calc(var(--border-width) * 2);
19
20
  }
20
21
  }
21
22
  }
@@ -1,52 +1,45 @@
1
1
  /*
2
- * Themelia UI — stylesheet entry point. Import once at the application root.
2
+ * Themelia UI — source of the shared stylesheet and complete catalogue.
3
3
  *
4
4
  * Layer order is the override story; later layers win regardless of specificity:
5
5
  *
6
- * tokens primitives (palette) and the raw tunable contract
7
- * theming wiring derived from tokens (never raw values)
8
- * base element reset
6
+ * tokens the theme: raw values, declared once at :root
7
+ * base element reset, and the tone and focus rules components read and outrank
9
8
  * components CSS-Module rules (see vite.config.ts)
10
9
  * utilities the escape-hatch helpers the kit ships
11
10
  *
12
11
  * Consumer unlayered CSS outranks every layer. `@import` cannot sit inside `@layer {}`,
13
12
  * hence the `layer(...)` form on each import.
14
13
  */
15
- @layer tokens, theming, base, components, utilities;
14
+ @layer tokens, base, components, utilities;
16
15
 
17
16
  /* The default typefaces. Unlayered: a layer cannot hold @font-face. */
18
17
  @import "./fonts.css";
19
18
 
20
- /* ── tokens: the raw contract ─────────────────────────────────────────────────── */
21
- /* Primitives first: the theme resolves its semantics against these. */
22
- @import "./tokens/palette.css" layer(tokens);
23
- @import "./themes/default.css" layer(tokens);
24
- @import "./tokens/foundation.css" layer(tokens);
25
- @import "./tokens/primitives.css" layer(tokens);
26
- @import "./tokens/states.css" layer(tokens);
27
- @import "./tokens/layout.css" layer(tokens);
28
- @import "./tokens/components.css" layer(tokens);
19
+ /* ── tokens: the theme, one file per responsibility ───────────────────────────── */
20
+ @import "./theme/colour.css" layer(tokens);
21
+ @import "./theme/shape.css" layer(tokens);
22
+ @import "./theme/spacing.css" layer(tokens);
23
+ @import "./theme/size.css" layer(tokens);
24
+ @import "./theme/typography.css" layer(tokens);
25
+ @import "./theme/elevation.css" layer(tokens);
26
+ @import "./theme/motion.css" layer(tokens);
27
+ @import "./theme/layout.css" layer(tokens);
28
+ @import "./theme/density.css" layer(tokens);
29
29
 
30
- /* ── theming: computed wiring ─────────────────────────────────────────────────── */
31
- @import "./theming/breakpoints.css";
32
- @import "./theming/colors.css" layer(theming);
33
- @import "./theming/sizing.css" layer(theming);
34
- @import "./theming/typography.css" layer(theming);
35
- @import "./theming/focus.css" layer(theming);
36
- @import "./theming/motion.css" layer(theming);
37
- @import "./theming/layers.css" layer(theming);
38
- @import "./theming/animation.css" layer(theming);
39
-
40
- /* Per-family contracts. A module whose contract is missing here renders unstyled. */
41
- @import "./theming/overlay.css" layer(theming);
42
- @import "./theming/layout.css" layer(theming);
43
- @import "./theming/field.css" layer(theming);
44
- @import "./theming/feedback.css" layer(theming);
45
- @import "./theming/text.css" layer(theming);
30
+ /* Media conditions, resolved at build time (vite.shared.ts). */
31
+ @import "./breakpoints.css";
46
32
 
47
33
  /* ── base: element reset (declares its own @layer base) ───────────────────────── */
48
34
  @import "./base.css";
49
35
 
36
+ /* Keyframes, named through --keyframes-* so CSS Modules do not rename them. */
37
+ @import "./animation.css";
38
+
39
+ /* The tone rule and the focus rule, which components read and outrank. */
40
+ @import "./tone.css";
41
+ @import "./focus.css";
42
+
50
43
  /* The shared field surface. */
51
44
  @import "./fields.css";
52
45
 
@@ -1,21 +1,23 @@
1
1
  /*
2
2
  * Leaflet's chrome, retuned. Unlayered because leaflet.css is: its unlayered rules would
3
3
  * beat anything in `@layer components`. Every rule is qualified by a kit class for
4
- * specificity, so none needs `!important`. Only what Leaflet paints lives here.
4
+ * specificity, so none needs `!important`. Only what Leaflet paints lives here, which is also
5
+ * why the type below is set directly rather than through Text: Text's classes are layered.
5
6
  */
6
7
 
8
+ /* The page's face, not Leaflet's Helvetica; Leaflet's own size stays for its chrome. */
7
9
  .map--component.leaflet-container {
8
10
  background-color: var(--muted);
9
- font-family: var(--font-sans);
11
+ font-family: inherit;
10
12
  }
11
13
 
12
14
  /*
13
- * The map takes keyboard focus (the arrow keys pan it), so it draws the kit's ring, inset over
14
- * the tiles. The browser's default ring sits outside, where the frame around a map clips it.
15
+ * The map takes keyboard focus (the arrow keys pan it), so it draws the shared outline
16
+ * (styles/focus.css), inset over the tiles: Leaflet's own offset puts it outside, where the
17
+ * frame around a map clips it.
15
18
  */
16
19
  .map--component.leaflet-container:focus-visible {
17
- outline: var(--focus-ring-width) solid var(--focus-ring-color);
18
- outline-offset: calc(-1 * var(--focus-ring-width));
20
+ outline-offset: calc(var(--border-width) * -2);
19
21
  }
20
22
 
21
23
  /*
@@ -28,18 +30,24 @@
28
30
 
29
31
  /* ── The panes Leaflet paints itself ──────────────────────────────────────────── */
30
32
 
33
+ /* An anchored popup, as the kit draws one: the popover ground, a hairline and the floating shadow. */
31
34
  .map--component .leaflet-popup-content-wrapper {
32
35
  border-radius: var(--radius);
33
36
  background-color: var(--popover);
34
37
  color: var(--popover-foreground);
35
- box-shadow: var(--popover-shadow);
38
+ box-shadow: 0 0 0 var(--border-width) var(--border), var(--shadow-lg);
36
39
  }
37
40
 
41
+ /* Text's `sm` step on an open line box, for whatever the popup holds that Text does not. */
38
42
  .map--component .leaflet-popup-content {
39
- margin: var(--surface-py) var(--surface-px);
40
- font-family: var(--font-sans);
41
- font-size: var(--text-sm);
42
- line-height: var(--leading-normal);
43
+ margin: var(--padding);
44
+ font-size: calc(var(--text-sm) * var(--text-scale));
45
+ line-height: 1.5;
46
+ }
47
+
48
+ /* Leaflet spaces popup paragraphs apart; the kit's own reset (and Text) leaves that to the content. */
49
+ .map--component .leaflet-popup-content p {
50
+ margin: 0;
43
51
  }
44
52
 
45
53
  /* The tip is a rotated square; it matches the wrapper it points from. */
@@ -56,12 +64,17 @@
56
64
  color: var(--foreground);
57
65
  }
58
66
 
59
- /* Chrome removed: the component draws its own tooltip and arrow on the side it chooses. */
67
+ /*
68
+ * Leaflet's tooltip, redrawn as the kit's inverse annotation; MapTooltip adds its arrow on the
69
+ * side it chooses (Leaflet's single tip cannot) and takes its type from Text's classes.
70
+ */
60
71
  .map--component .leaflet-tooltip {
61
- padding: 0;
72
+ padding: calc(var(--padding-sm) / 2) var(--padding-sm);
62
73
  border: 0;
63
- background: none;
64
- box-shadow: none;
74
+ border-radius: var(--radius-sm);
75
+ background-color: var(--foreground);
76
+ color: var(--background);
77
+ box-shadow: var(--shadow);
65
78
  }
66
79
 
67
80
  .map--component .leaflet-tooltip::before {
@@ -72,15 +85,14 @@
72
85
 
73
86
  .map--component.leaflet-container .leaflet-control-attribution {
74
87
  border-radius: var(--radius-sm) 0 0 0;
75
- background-color: var(--background-80);
88
+ background-color: color-mix(in oklab, var(--background) 80%, transparent);
76
89
  color: var(--muted-foreground);
77
- font-family: var(--font-sans);
78
- font-size: var(--text-xs);
79
- line-height: var(--text-xs--line-height);
90
+ font-size: calc(var(--text-xs) * var(--text-scale));
91
+ line-height: calc(1 / 0.75);
80
92
  }
81
93
 
82
94
  .map--component .leaflet-control-attribution a {
83
- color: var(--link-color);
95
+ color: var(--link);
84
96
  }
85
97
 
86
98
  /* ── leaflet-draw's toolbar ───────────────────────────────────────────────────── */
@@ -91,17 +103,17 @@
91
103
  display: none;
92
104
  }
93
105
 
94
- /* The on-map instruction tooltip stays, drawn as the kit's inverse Tooltip. */
106
+ /* The on-map instruction tooltip stays, drawn as the kit's inverse annotation. */
95
107
  .map--component .leaflet-draw-tooltip {
96
108
  border: var(--border-width) solid var(--foreground);
97
109
  border-radius: var(--radius-sm);
98
- padding-block: var(--space-sm);
99
- padding-inline: var(--control-px);
110
+ padding-block: calc(var(--padding-sm) / 2);
111
+ padding-inline: var(--padding-sm);
100
112
  background-color: var(--foreground);
101
113
  color: var(--background);
102
- font-family: var(--font-sans);
103
- font-size: var(--text-xs);
104
- line-height: var(--text-xs--line-height);
114
+ font-family: inherit;
115
+ font-size: calc(var(--text-xs) * var(--text-scale));
116
+ line-height: calc(1 / 0.75);
105
117
  }
106
118
 
107
119
  /* Physical on purpose: Leaflet positions this arrow in physical terms. */
@@ -111,7 +123,7 @@
111
123
 
112
124
  /* leaflet-draw's second line: the tooltip's ink, receded. */
113
125
  .map--component .leaflet-draw-tooltip-subtext {
114
- color: var(--background-70);
126
+ color: color-mix(in oklab, var(--background) 70%, transparent);
115
127
  }
116
128
 
117
129
  /* ── Marker clusters ──────────────────────────────────────────────────────────── */
@@ -122,12 +134,11 @@
122
134
  align-items: center;
123
135
  justify-content: center;
124
136
  border-radius: var(--radius-pill);
125
- background-color: var(--primary-20);
126
- color: var(--primary-accent);
127
- font-family: var(--font-sans);
128
- font-size: var(--text-xs);
129
- line-height: var(--text-xs--line-height);
130
- font-weight: var(--weight-semibold);
137
+ background-color: color-mix(in oklab, var(--primary) var(--tint), transparent);
138
+ color: var(--primary);
139
+ font-size: calc(var(--text-xs) * var(--text-scale));
140
+ line-height: calc(1 / 0.75);
141
+ font-weight: 600;
131
142
  }
132
143
 
133
144
  .map--component .marker-cluster div {
@@ -138,5 +149,5 @@
138
149
  height: 100%;
139
150
  margin: 0;
140
151
  border-radius: var(--radius-pill);
141
- background-color: var(--primary-10);
152
+ background-color: color-mix(in oklab, var(--primary) var(--tint), transparent);
142
153
  }
@@ -1,8 +1,8 @@
1
1
  /*
2
- * Mention chips — the one global component look. The same chip is rendered by a React
2
+ * Mention chips: the one global component look. The same chip is rendered by a React
3
3
  * component and by serialised HTML in a contenteditable, and the two must match. Keyed on
4
- * `data-ref-id` because `sanitizeHtml` strips `class`. Layered `components` so consumer
5
- * unlayered CSS wins.
4
+ * `data-ref-id` because `sanitizeHtml` strips `class`; toned through `data-ref-tone`, which
5
+ * the shared tone rule reads. Layered `components` so consumer unlayered CSS wins.
6
6
  */
7
7
  @layer components {
8
8
  :is(span, a)[data-ref-id] {
@@ -14,24 +14,24 @@
14
14
  border-radius: var(--radius-sm);
15
15
  /* The line's own size: a name in a sentence is a word of it. */
16
16
  font-size: 1em;
17
- font-weight: var(--weight-medium);
17
+ font-weight: 500;
18
18
  line-height: 1.35;
19
19
  white-space: nowrap;
20
20
  vertical-align: baseline;
21
21
  text-decoration: none;
22
22
  /* Untoned: a chip that is a reference and nothing more. */
23
- background-color: var(--foreground-8);
23
+ background-color: color-mix(in oklab, var(--foreground) var(--tint), transparent);
24
24
  color: var(--foreground);
25
- box-shadow: inset 0 0 0 var(--border-width) var(--foreground-10);
26
- transition: background-color var(--duration-fast) var(--ease-out);
25
+ box-shadow: inset 0 0 0 var(--border-width) color-mix(in oklab, var(--foreground) var(--tint), transparent);
26
+ transition: background-color var(--duration-fast) var(--ease);
27
27
  /* A click selects the whole chip; with `contenteditable="false"` this makes it atomic in an editor. */
28
28
  user-select: all;
29
29
  -webkit-user-select: all;
30
30
  }
31
31
 
32
- /* Only a chip with a destination answers the pointer, as a linked soft Badge: its hue at 20%. */
32
+ /* Only a chip with a destination answers the pointer. */
33
33
  a[data-ref-id]:hover {
34
- background-color: color-mix(in oklab, var(--foreground) 20%, transparent);
34
+ background-color: color-mix(in oklab, var(--foreground) var(--tint-strong), transparent);
35
35
  }
36
36
 
37
37
  /* A chip with no destination is a label, so it does not pretend to be clickable. */
@@ -43,58 +43,20 @@
43
43
  cursor: pointer;
44
44
  }
45
45
 
46
- /*
47
- * Each hued tone re-points one hue and one ink; the recipe below is Badge soft's
48
- * arithmetic on it: a 10% wash, a 30% edge, a 20% hover. An unknown tone matches none of
49
- * these and keeps the untoned chip.
50
- */
51
- :is(span, a)[data-ref-id][data-ref-tone="primary"] {
52
- --ref-hue: var(--primary);
53
- --ref-ink: var(--primary-accent);
54
- }
55
-
56
- :is(span, a)[data-ref-id][data-ref-tone="info"] {
57
- --ref-hue: var(--info);
58
- --ref-ink: var(--info);
59
- }
60
-
61
- :is(span, a)[data-ref-id][data-ref-tone="success"] {
62
- --ref-hue: var(--success);
63
- --ref-ink: var(--success);
64
- }
65
-
66
- /* Warning ink is the accent step, and its edge the warning line step (40%), as on Badge. */
67
- :is(span, a)[data-ref-id][data-ref-tone="warning"] {
68
- --ref-hue: var(--warning);
69
- --ref-ink: var(--warning-accent);
70
- --ref-line: 40%;
71
- }
72
-
73
- :is(span, a)[data-ref-id][data-ref-tone="destructive"] {
74
- --ref-hue: var(--destructive);
75
- --ref-ink: var(--destructive-accent);
76
- }
77
-
46
+ /* A hued tone is Badge soft on the chip: a tint, a strong-tint edge, the tone's ink. */
78
47
  :is(span, a)[data-ref-id]:is([data-ref-tone="primary"], [data-ref-tone="info"], [data-ref-tone="success"], [data-ref-tone="warning"], [data-ref-tone="destructive"]) {
79
- background-color: color-mix(in oklab, var(--ref-hue) 10%, transparent);
80
- color: var(--ref-ink);
81
- box-shadow: inset 0 0 0 var(--border-width) color-mix(in oklab, var(--ref-hue) var(--ref-line, 30%), transparent);
48
+ background-color: color-mix(in oklab, var(--tone) var(--tint), transparent);
49
+ color: var(--tone-ink);
50
+ box-shadow: inset 0 0 0 var(--border-width) color-mix(in oklab, var(--tone) var(--tint-strong), transparent);
82
51
  }
83
52
 
84
53
  a[data-ref-id]:is([data-ref-tone="primary"], [data-ref-tone="info"], [data-ref-tone="success"], [data-ref-tone="warning"], [data-ref-tone="destructive"]):hover {
85
- background-color: color-mix(in oklab, var(--ref-hue) 20%, transparent);
54
+ background-color: color-mix(in oklab, var(--tone) var(--tint-strong), transparent);
86
55
  }
87
56
 
88
57
  /* Secondary is neutral: the untoned fill with supporting ink. */
89
58
  :is(span, a)[data-ref-id][data-ref-tone="secondary"] {
90
- background-color: var(--foreground-8);
91
59
  color: var(--muted-foreground);
92
- box-shadow: inset 0 0 0 var(--border-width) var(--foreground-10);
93
- }
94
-
95
- /* Badge secondary's hover: its supporting ink at 20%. */
96
- a[data-ref-id][data-ref-tone="secondary"]:hover {
97
- background-color: color-mix(in oklab, var(--muted-foreground) 20%, transparent);
98
60
  }
99
61
 
100
62
  /*
@@ -17,11 +17,11 @@ dialog::backdrop {
17
17
  /* Top layer: transitioning `overlay`/`display` with allow-discrete keeps it there to animate out. */
18
18
  opacity: 0;
19
19
 
20
- /* The surface's exit timing (overlay.module.css). */
20
+ /* The surface's exit timing (overlay.module.css): quicker than its entrance. */
21
21
  transition:
22
- opacity var(--overlay-duration-exit) var(--ease-out),
23
- overlay var(--overlay-duration-exit) allow-discrete,
24
- display var(--overlay-duration-exit) allow-discrete;
22
+ opacity var(--duration-fast) var(--ease),
23
+ overlay var(--duration-fast) allow-discrete,
24
+ display var(--duration-fast) allow-discrete;
25
25
  }
26
26
 
27
27
  dialog[open]::backdrop {
@@ -29,9 +29,9 @@ dialog[open]::backdrop {
29
29
 
30
30
  /* Enters on the surface's own timing so the two read as one gesture. */
31
31
  transition:
32
- opacity var(--duration-normal) var(--ease-out),
33
- overlay var(--duration-normal) allow-discrete,
34
- display var(--duration-normal) allow-discrete;
32
+ opacity var(--duration) var(--ease),
33
+ overlay var(--duration) allow-discrete,
34
+ display var(--duration) allow-discrete;
35
35
  }
36
36
 
37
37
  @starting-style {