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
@@ -32,8 +32,9 @@ test("global search returns focus after dismissal", async ({ page }) => {
32
32
  Prefer role- and name-based assertions over CSS Module selectors. When a visual or state
33
33
  assertion needs a DOM hook, use `data-slot`, documented BEM hooks, or the state attributes
34
34
  the primitives set (`data-open`, `data-checked`, `data-disabled`, `data-highlighted`,
35
- `data-popup-open`). These are Base UI's attributes, not Radix's: `[data-state="open"]`
36
- matches nothing.
35
+ `data-popup-open`). Use Base UI's documented attributes for its primitive states rather
36
+ than assuming Radix's `[data-state="open"]`. Some kit modules expose their own `data-state`
37
+ contract; use it only where the selected API documents it.
37
38
 
38
39
  ## Theme contract check
39
40
 
@@ -41,11 +42,65 @@ Create one application fixture that changes primary colour, surface/background r
41
42
  radius, density, and typography scale at a scope boundary. If a component ignores it, report
42
43
  the module and token before adding a local patch: the package may be missing a derivation.
43
44
 
45
+ ## Offline diagnosis and skill freshness
46
+
47
+ Run the commands from the package installed in this application:
48
+
49
+ ```bash
50
+ node node_modules/themelia-ui/scripts/consumer/install-skill.mjs --project=. --check --json
51
+ node node_modules/themelia-ui/scripts/consumer/diagnose.mjs --project=. --json src/
52
+ ```
53
+
54
+ Both checks are read-only. Diagnostics use the consumer's installed TypeScript parser and
55
+ the package's generated export/migration facts. Supply explicit paths. Unsupported formats,
56
+ parse failures, missing paths, metadata or parser produce exit 2 (incomplete); definite
57
+ contract errors produce exit 1; complete checks without errors produce exit 0. Advisory
58
+ composition/private-style warnings do not establish a defect. Excluded build/dependency
59
+ directories and symlinks are not followed. Reports name the checked and skipped rules/files.
60
+
61
+ Freshness reports expected and installed versions plus missing, stale, modified or unmanaged
62
+ copies. Review modifications before reinstalling a generated copy. The installer refuses local edits
63
+ until `--overwrite-modified` explicitly replaces reviewed generated content. Keep application policy
64
+ in a separate skill; an unmanaged same-name skill is preserved. Missing metadata requires
65
+ repairing the package installation or consulting the matching release, never inventing an API.
66
+
67
+ If an installed copy's manifest is missing or invalid, the installer repairs it automatically
68
+ only when its remaining files match the packaged content. Differing or extra files require
69
+ review and `--overwrite-modified`, just like edits to a copy with a valid manifest.
70
+
71
+ Replacements are staged before writes, and caught write failures restore backups. An abrupt
72
+ process termination can leave mixed versions across targets and sibling `.backup-*` or
73
+ `.installing-*` directories. Run `--check`, review those retained directories, preserve any
74
+ local policy, and reinstall the intended generated copies. A backup-cleanup error means the
75
+ new copies were installed; the error names the retained backup for review and manual cleanup.
76
+
77
+ The browser observer (`node_modules/themelia-ui/docs/build/browser-composition-fixture.ts`) accepts an already open caller
78
+ fixture and observes overflow, repeated sibling headings and control visibility. It performs
79
+ no navigation, click or submission. These geometry/semantic observations are advisory; they
80
+ do not establish accessibility or business acceptance. Optional browser tooling belongs in
81
+ the application's test dependencies, not the UI runtime.
82
+
83
+ Opt into interaction tests only against explicit mock actions. The [complete workflows](reference-workflows.md)
84
+ provide scoped late responses, pending/empty/error lists, nested cancel, resolved validation,
85
+ workspace selection and retained locale drafts. Assert keyboard selection without accidental
86
+ form submission, one Escape layer at a time, focus return, associated errors and explicit
87
+ successful completion. Do not crawl unknown application routes or submit business forms.
88
+
89
+ ## Completion record
90
+
91
+ Record installed package/skill versions; selected owners and seams; shared callers inspected;
92
+ fixture routes and states; viewport widths; themes, densities and locales; keyboard/focus
93
+ interactions; commands and observed results. Separate type/build evidence, behavior tests,
94
+ visual inspection and application acceptance. Name unavailable conditions explicitly.
95
+
96
+ When no browser is available, report types/build/static findings and mark interaction and
97
+ visual checks unverified. Passing named static/browser checks does not establish permissions,
98
+ data integrity, persistence, backend sanitization or every product workflow.
99
+
44
100
  ## Upgrade check
45
101
 
46
102
  Read the changelog (`node_modules/themelia-ui/CHANGELOG.md`), run the package's codemod when a release names one
47
103
  (`node node_modules/themelia-ui/scripts/consumer/codemod.mjs --dry-run src/`), and let the
48
- application's own type-check compare the installed declarations. Within a major, a removal
49
- keeps a deprecated alias until the next major unless keeping it would be unsafe or
50
- incorrect; a major may remove names outright, and its migration guide lists each one. See
104
+ application's own type-check compare the installed declarations. Removed names have no
105
+ compatibility alias in 3.1; its migration guide lists each replacement. See
51
106
  [API compatibility](api-compatibility.md).
package/CHANGELOG.md CHANGED
@@ -1,5 +1,217 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.2.0 — 2026-10-04
4
+
5
+ - Skill installation preserves edits when installed metadata is missing and keeps installed
6
+ copies intact if backup cleanup fails. Diagnostics check namespace accesses, escaped CSS
7
+ imports and private variables from core styles.
8
+ - Nested action success closes both layers; nested-action and media references use packaged
9
+ triggers to restore focus in Safari. Escape leaves a modal child in control when its parent
10
+ is nonmodal. Scope changes abort old lookups before committed layout callbacks.
11
+ - The media-picking reference commits replacement ids only after explicit confirmation.
12
+ - Responsive GridCell spans support `full` at individual breakpoints and restore numeric spans.
13
+ - Consumer guides cover structural owners, spacing, responsive widths and subject blocks;
14
+ framework guidance distinguishes ordinary SSR from React Server Components boundaries.
15
+ - Mobile workspace disclosure keeps navigation open until a same-app destination is selected.
16
+ - ResourceCombobox, SuggestionsCombobox and useSuggestions accept `scopeKey` to invalidate
17
+ asynchronous lookups while retaining controlled selection and query state.
18
+ - Open combobox lists guard Enter during loading, empty results and IME composition;
19
+ nested native dialogs preserve their parent's draft and focus on child dismissal.
20
+ - Nine complete public-API reference workflows cover record details, server collections,
21
+ forms, scoped lookups, nested actions, navigation, media, communications and rich content.
22
+ - Context-aware discovery, ownership guides and the generated consumer skill share those
23
+ sources. Skill checks report version and content drift; reinstalling local edits requires
24
+ explicit `--overwrite-modified`.
25
+ - The packaged read-only diagnostic command checks imports and stylesheet contracts,
26
+ reports conservative composition warnings and identifies incomplete analysis.
27
+
28
+ ## 3.1.0 — 2026-09-28
29
+
30
+ This release renames and removes public API. Read
31
+ [Upgrading to 3.1](docs/learn/migration.md#upgrading-to-31) before you upgrade, then run the
32
+ packaged codemod from your project, dry first:
33
+
34
+ ```sh
35
+ node node_modules/themelia-ui/scripts/consumer/codemod.mjs --dry-run src/
36
+ ```
37
+
38
+ ### Breaking
39
+
40
+ - Blocks are published under `themelia-ui/blocks/`, the name the documentation, the
41
+ component index and the finder already use. `themelia-ui/patterns/analytics`,
42
+ `onboarding` and `timelines` are now `themelia-ui/blocks/analytics`, `onboarding` and
43
+ `timelines`; `themelia-ui/admin/patterns/access` and `commerce` are
44
+ `themelia-ui/blocks/admin/access` and `commerce`. The codemod rewrites JavaScript imports.
45
+ - Per-module CSS subpaths are removed. Component imports bring their stylesheets in bundled
46
+ apps; direct stylesheet links use `themelia-ui/style.css`.
47
+ - `ColorInputProps.emitHex` is removed; use `format="hex"`. The
48
+ `createExecCommandEngine` adapter is removed; RichTextEditor uses TipTap by default and
49
+ `createTiptapEngine` remains available for custom schemas.
50
+ - Complete `AnalyticsStrings`, `AsyncComboboxStrings` and `MediaLibraryStrings` translations
51
+ must provide all declared keys. `MediaLibraryState` requires its recovery and visible-selection
52
+ controls; `useMediaLibrary` supplies them.
53
+ - The theme is one level: about eighty variables declared once at `:root`, each colour a
54
+ `light-dark(light, dark)` pair, and every length, shadow, tint and duration in twos.
55
+ Components compute everything else where they use it, so a value set anywhere reaches every
56
+ component below it, and a dark region inside a light page needs no second set of values.
57
+ - The palette, the alpha steps (`--primary-10`), the spacing ladder (`--space-*`), the
58
+ control, icon and avatar ladders, the derived role variables, the dark twins, the
59
+ `--scale` and `--density-scale` factors, and `--font-serif`, which nothing read, are gone. The codemod renames each variable that
60
+ has a successor (`--control-h` to `--control-height`, `--size-icon` to `--icon-size`,
61
+ `--link-color` to `--link`) and reports the rest.
62
+ - A theme of your own is one `:root` block; the selector list for re-declaring colours at
63
+ every boundary is not needed.
64
+ - The `theming` cascade layer is gone: the order is `tokens, base, components, utilities`.
65
+ - `--animate-*` are gone. A `--keyframes-*` variable holds a keyframes name and you state
66
+ the timing: `animation: var(--keyframes-spin) 1s linear infinite`. The kit's keyframes
67
+ are named `themelia-*`, so a bare `spin` or `pulse` is no longer the kit's.
68
+ - `tokens.json` has no palette group; each colour is a token per mode, and shadows,
69
+ durations, the easing curve and the font stacks carry their DTCG types.
70
+ - Safari 17.5 or newer is required, for `light-dark()`.
71
+ - Fill style is `appearance` on every component that has one, so `tone` is colour,
72
+ `appearance` is fill and `variant` is structure:
73
+ - `buttonStyle` becomes `appearance` on `Button`, `TextButton`, `LoaderButton`,
74
+ `TooltipButton`, every component that forwards Button props, and action definitions.
75
+ `ButtonStyle` and `ActionButtonStyle` become `ButtonAppearance` and `ActionAppearance`,
76
+ provider defaults read `defaults.button.appearance`, and Button renders
77
+ `data-appearance` instead of `data-style`.
78
+ - `Badge`'s `variant` becomes `appearance` (`BadgeAppearance`); a metadata badge value's
79
+ `badgeVariant` becomes `badgeAppearance`. `badgeVariants` is no longer exported: a badge
80
+ takes its colour from its tone, so render a `Badge` (with `render` for a link) instead.
81
+ - `Toggle`'s and `SidebarMenuButton`'s `variant` become `appearance`; Toggle renders
82
+ `data-appearance` instead of `data-variant`.
83
+ - The overlays' and action modalities' `confirmStyle` becomes `confirmAppearance`
84
+ (`OverlayButtonAppearance`).
85
+ - Every size, padding and gap prop has two steps, `default` and `sm`:
86
+ - `gap`, `rowGap`, `columnGap` and `amount` on `Stack`, `Grid`, `AdaptiveGrid`, `Split` and
87
+ `Bleed` take `none`, `sm` (8px) or `default` (16px), and an unset `Stack` or `Split` gap
88
+ is now 16px instead of 8px.
89
+ - `maxWidth` and `sideWidth` take `default` (the content width), `sm`, `full`, `none` or a
90
+ CSS length; `AdaptiveGrid`'s `minColumnWidth` takes `default`, `sm` or a length. A free
91
+ string is no longer accepted, so a misspelt step cannot pass as a length.
92
+ - `ComponentScale` is `default | sm`: `Spinner`'s `size`, `Empty`'s and
93
+ `ResourceDetailsSection`'s `padding` and `DataTable`'s `size`. `md` is `default`; `lg` is
94
+ gone.
95
+ - `Avatar`, `SidebarMenuButton` and `AuthShell` lose `size="lg"`; `SidebarMenuButton`,
96
+ `SidebarMenuSubButton` and `AuthShell` name their middle step `default`.
97
+ - An overlay's, `SheetContent`'s and `ActionSheet`'s `size` takes `default`, `sm`, `full`
98
+ or a CSS length, and `length` and `inset` take a CSS length.
99
+ - `Slider` and `SliderField` have no `size`: under a finger the track and thumb grow into
100
+ a larger target by themselves. `InputGroupButton` has one size, and `iconOnly` makes it
101
+ square.
102
+ - `ActivityFeed`'s `itemSpacing` is `default | sm`.
103
+ - `density` belongs to the provider. `MetadataList`'s becomes `size` (`default | sm`, and
104
+ `data-size`), `MediaLibrary`'s and its parts' become `size`, `ActivityFeed`'s and its
105
+ rows' become `variant` (`data-variant`), and `AiTask`'s becomes `defaultExpanded`.
106
+ - An action modality's `size` and the `ActionOverlaySize` type are gone: nothing read them.
107
+ - `Text` drops `size="xxs"` and `weight="regular"`; write `xs` and `normal`.
108
+ - The ThemeTweaker writes one block in which each colour is a `light-dark()` pair, so an
109
+ exported theme follows `color-scheme` wherever it is applied:
110
+ - `ThemeSelectors` is `{ shared }`, and `createScopedThemeSelectors` returns it; the `light`
111
+ and `dark` selectors are gone.
112
+ - `themeToStyle(theme)` takes no mode: the style carries both halves.
113
+ - The default fields are the theme's variables, grouped into new `ThemeTweakerSection`s.
114
+ - The theming recipes write the theme's variables: `deriveThemePalette` sets `--link` and no
115
+ sidebar primary, `deriveThemeTypeScale` writes the type steps (Text pairs each step with its
116
+ line height), and `deriveThemeElevation` writes `--shadow` and `--shadow-lg`.
117
+ - The provider's `theme.colors` takes the theme's 38 colours (`SemanticToken`). `link-color`
118
+ is `link`, and `overlay-backdrop` is new. The `inverse-*` colours, `primary-accent`,
119
+ `destructive-accent`, `warning-accent` and `sidebar-primary*` are gone: an inverse region
120
+ is a nested provider with its own `colorScheme`, and a tone's text colour comes from its
121
+ tone. `theme.palette` and the `PaletteToken` type are gone with the palette.
122
+ - `MotionConfig.durations` takes `fast` and `normal`; `instant` is gone.
123
+ - The Tailwind bridge follows the theme. `p-padding`, `p-padding-sm`, `gap-gap` and
124
+ `gap-gap-sm` replace the spacing keys (`p-md` and the rest), `rounded` is the container
125
+ radius, and `animate-*`, `leading-*`, `tracking-*` and the shadow steps other than
126
+ `shadow` and `shadow-lg` are Tailwind's own again.
127
+ - Components bring their own CSS in a bundled app: importing a component from its subpath
128
+ adds its stylesheet, once, with one copy of `core.css`, and a module the application never
129
+ imports adds none. Remove JavaScript imports of `style.css` and of module stylesheets, which
130
+ now load the CSS twice; the codemod does it. Server rendering with Vite (Astro, React
131
+ Router, TanStack Start, Vike) needs the package in `ssr.noExternal`. With Tailwind, keep
132
+ `@import "tailwindcss"` and the bridge, and drop `@import "themelia-ui/style.css"` or
133
+ `@import "themelia-ui/core.css"` from the Tailwind entry. Pages with no bundler link
134
+ `style.css`. See [Upgrading to 3.1](docs/learn/migration.md#upgrading-to-31).
135
+
136
+ ### Added
137
+
138
+ - Four ready-made themes in `themelia-ui/theming`, each a style rather than a colour: Soft,
139
+ Sharp, Dense and Editorial. A theme is a `ThemePreset` (a label, a description and the
140
+ provider config it sets), so it reaches past colour to radii, shadows, density, type, motion
141
+ and component defaults such as the card surface. Every theme's colours hold WCAG AA contrast
142
+ in both modes. The theme editor's `themeFromConfig()` loads a theme's colours and variables to
143
+ edit and export. The documentation site gains a Themes page and a Theme menu in its header.
144
+ - `Text` takes `heading`, the heading face (`--font-heading`) for a title that is not a
145
+ document heading. Card and dialog titles use it, so a theme's heading font reaches them.
146
+ - `DataTable` rows expand. `expandedRow` turns on a toggle at each row's start and the panel it
147
+ opens under the row: `render` draws the panel, and `onLoad` optionally fetches what it shows
148
+ when the row opens, with a skeleton meanwhile, the request aborted when the row closes, Retry
149
+ on failure and the result kept for the next open. `canExpand` leaves a row without a toggle,
150
+ `multiple: false` keeps one row open at a time, and `expanded`, `defaultExpanded` and
151
+ `onExpandedChange` control the open rows. The panel lines up with the first column, stays in
152
+ view on a table scrolled sideways, and keeps a panel that throws or suspends inside its row.
153
+ - `textClassName()` lends Text's classes to an element Text cannot wrap: a native control,
154
+ a button's label, a table cell. `Text` takes `mono` and `caps`.
155
+ - `AiShimmer` takes `size`, a step on the type scale as on `Text`.
156
+ - `richTextClassName()` lends RichText's prose surface to an element RichText cannot render,
157
+ such as an editor's content-editable root.
158
+ - Each block's page shows it composed from the lower tiers (analytics, timelines, onboarding,
159
+ access and commerce), for the case configuration does not reach.
160
+
161
+ ### Changed
162
+
163
+ - `package.json` publishes modules through tier subpath patterns such as `./base/*`.
164
+ - Destructive is lighter in dark mode, so red text holds 4.5:1 on the hover fill, on its own
165
+ tint in a popover, and as a soft badge in a selected row.
166
+ - A framed Card's band is the item inset, and the surface inside it takes the concentric
167
+ corner, so a square-cornered theme keeps the band.
168
+ - `MetricTrendChip` and `MetricComparison` render `data-tone` as `success`, `destructive` or
169
+ `neutral`, the kit's tone names, instead of `positive` and `negative`.
170
+ - Checkboxes, radios and switches keep one size, 1.125rem, at every density.
171
+ - A disabled control shows the not-allowed cursor and dims; it no longer ignores the pointer.
172
+ - Menus take the radius of the control they open from: DropdownMenu, ContextMenu, ActionMenu,
173
+ Menubar, Select, Combobox, PopoverMenu, NavigationMenu and a Command inside a popover draw
174
+ `--radius-sm`, with rows at half of it inset by the other half, so the corners still nest.
175
+ Content popovers, hover cards and dialogs keep the container radius.
176
+ - Table headers are quieter: labels in the muted colour, with the sorted column's in the body
177
+ colour, a lighter band on `DataTable`, and 42px instead of 48px, following density. The whole
178
+ head cell sorts, and an unsorted column's arrow shows on hover or keyboard focus; touch
179
+ screens keep a faint one. `TableSkeleton` reserves the new height.
180
+ - A component used inside another, such as a Button in a menu, looks the same whatever order
181
+ a bundler emits the CSS in, and the same with `style.css` as in a bundled app.
182
+
183
+ ### Fixed
184
+
185
+ - `MonoValue` renders in the monospaced face its documentation promises.
186
+ - `MapTooltip` draws its own surface; Leaflet's stylesheet left bare text on the map, and
187
+ its arrow points at the marker on every side.
188
+ - The fade at a scroll edge of `Carousel` and a scrolling `Table` lifts while the region
189
+ has focus, so it no longer hides the focus outline.
190
+ - `ResizableHandle` shows its active state while dragged again.
191
+ - A vertical `Slider` has its 10rem track; the track collapsed.
192
+ - Text in an `InputGroup` textarea is inset from the frame.
193
+ - A `Card` title with an info button lines up with one without.
194
+ - A default `Sheet` is 384px wide again; it rendered at 472px.
195
+ - Upload file sizes render at the small secondary size.
196
+ - A permission a role lacks, and a refund stage not yet reached, recede again.
197
+ - The AI composer draws one frame; it drew the field's frame inside its own.
198
+ - The breadcrumb bar no longer clips the sidebar trigger's focus outline, and the collapsed
199
+ sidebar rail no longer shows a sliver of each row's label.
200
+ - A nested provider with `density="default"` resets a density set further out; it kept the
201
+ outer one.
202
+ - A nested provider that sets `density` under a scaled one sizes that density at the
203
+ inherited scale; the outer lengths outranked the preset.
204
+ - Map controls sit on a ground and an edge of their own; over the tiles they were
205
+ see-through. An active drawing tool keeps its fill.
206
+ - A scrolling `DataTable`'s focus outline runs round the whole frame; its sticky header and
207
+ pinned columns painted over it.
208
+ - A failed attachment keeps its file name in view: the error shares the row, may widen the
209
+ chip to the tray, and shows in full on hover. Each attachment's link is named by its file;
210
+ every one was named "Download".
211
+ - The kit's animations run on a page that also loads Tailwind or tw-animate-css. Their
212
+ `spin`, `pulse`, `enter` and `exit` replaced the kit's keyframes, or the kit's replaced
213
+ theirs, whichever loaded last.
214
+
3
215
  ## 3.0.0 — 2026-09-27
4
216
 
5
217
  A major release. The package is ES modules whose JavaScript imports no CSS, so each module's
package/README.md CHANGED
@@ -14,7 +14,7 @@ themed through one set of CSS variables.
14
14
  plugin is needed; applications that use Tailwind CSS v4 get a bridge to the theme.
15
15
  - **Overrides without `!important`.** Component rules live in cascade layers, so a utility
16
16
  in `className` or ordinary application CSS wins.
17
- - **Import only what you use.** Every module has its own JavaScript and CSS subpath.
17
+ - **Import only what you use.** Every module has its own subpath and brings only its own CSS.
18
18
  Optional peers such as charts, maps and rich text are needed only by the modules that use
19
19
  them.
20
20
  - **Your application keeps its policy.** Routing, data fetching, persistence, permissions and
@@ -43,18 +43,17 @@ npm install themelia-ui
43
43
  React 19 and `react-dom` are required peers. Every other peer is optional and needed only by
44
44
  the modules that use it; the [import table](https://unpkg.com/themelia-ui/docs/generated/imports.md) lists which.
45
45
 
46
- Themelia supports Chrome and Edge 125, Firefox 121 and Safari 16.4 or newer. Builds and
46
+ Themelia supports Chrome and Edge 125, Firefox 121 and Safari 17.5 or newer. Builds and
47
47
  server rendering need Node 20.19 or newer.
48
48
 
49
49
  ## Quick start
50
50
 
51
- Put `UIProvider` at the root of the application, import the stylesheet once, and import
52
- each component from its module's subpath:
51
+ Put `UIProvider` at the root of the application and import each component from its module's
52
+ subpath. In a bundled app, a component brings its own CSS:
53
53
 
54
54
  ```tsx
55
55
  import { Button } from "themelia-ui/base/buttons"
56
56
  import { UIProvider } from "themelia-ui/ui-provider"
57
- import "themelia-ui/style.css"
58
57
 
59
58
  export function App() {
60
59
  return (
@@ -65,7 +64,7 @@ export function App() {
65
64
  }
66
65
  ```
67
66
 
68
- `style.css` holds the CSS of the whole library. To load only what the application uses, see
67
+ Server rendering with Vite and pages with no bundler need one step more; see
69
68
  [Load the CSS](#load-the-css).
70
69
 
71
70
  ## Load the CSS
@@ -73,42 +72,35 @@ export function App() {
73
72
  The styles are precompiled CSS in cascade layers, declared in this order:
74
73
 
75
74
  ```css
76
- @layer tokens, theming, base, components, utilities;
75
+ @layer tokens, base, components, utilities;
77
76
  ```
78
77
 
79
- Three kinds of stylesheet are published:
78
+ **In a bundled app**, importing a component brings its stylesheet, once, and a module the
79
+ application never imports brings none. Do not also import `style.css` or a module stylesheet
80
+ from JavaScript; that loads the rules twice.
80
81
 
81
- | Import | Contains |
82
- | --- | --- |
83
- | `themelia-ui/style.css` | Everything: `core.css` and the rules of every module. |
84
- | `themelia-ui/<module>.css`, such as `themelia-ui/base/buttons.css` | One module's rules and the stylesheets they build on. It imports `core.css` itself. |
85
- | `themelia-ui/core.css` | The theme variables, the layer order, the Geist typefaces and the base element styles. No component rules. |
86
-
87
- A module whose components draw nothing has no stylesheet. The
88
- [import table](https://unpkg.com/themelia-ui/docs/generated/imports.md) lists the JavaScript and CSS path of every module.
82
+ **Server rendering with Vite** (Astro, React Router, TanStack Start, Vike) lists the package
83
+ in `ssr.noExternal`, or Vite hands it to Node without its CSS:
89
84
 
90
- ### Import the stylesheets
91
-
92
- The JavaScript imports no CSS. Import `style.css` once, or each module's stylesheet beside its
93
- import; a bundler that handles CSS imports, such as Vite, webpack or Rspack, includes each file
94
- once however many modules import it:
95
-
96
- ```tsx
97
- import { Button } from "themelia-ui/base/buttons"
98
- import "themelia-ui/base/buttons.css"
99
- import { Page } from "themelia-ui/layout/page"
100
- import "themelia-ui/layout/page.css"
85
+ ```ts
86
+ // vite.config.ts, or the vite key of astro.config.mjs
87
+ export default { ssr: { noExternal: ["themelia-ui"] } }
101
88
  ```
102
89
 
103
- A component whose stylesheet is not imported renders unstyled. Import `core.css` on its own
104
- only when your own CSS needs the theme variables before any module stylesheet loads.
90
+ **Without a bundler**, link `themelia-ui/style.css`; it includes `core.css`:
91
+
92
+ | Stylesheet | Contains |
93
+ | --- | --- |
94
+ | `themelia-ui/core.css` | The theme variables, the layer order, the Geist typefaces and the base element styles. No component rules. |
95
+ | `themelia-ui/style.css` | Everything: `core.css` and the rules of every module. |
105
96
 
106
97
  ### On the server and in tests
107
98
 
108
- The package is ES modules, and because its JavaScript imports no CSS, Node loads it as it is.
109
- Server rendering and Vitest need no configuration for it, and CommonJS code on Node 20.19 or
110
- later can `require()` it. Jest transforms nothing in `node_modules` by default: exempt the
111
- package in `transformIgnorePatterns`.
99
+ The package is ES modules. Outside a bundler its CSS imports resolve to an empty module, so
100
+ Node loads it without the CSS: Vitest needs no configuration, CommonJS code on Node 20.19 or
101
+ later can `require()` it, and a server render gets the CSS from the client build, or from
102
+ Vite through `ssr.noExternal` as above. Jest needs 29.4 or newer and transforms nothing in
103
+ `node_modules` by default: exempt the package in `transformIgnorePatterns`.
112
104
 
113
105
  ## Imports and tiers
114
106
 
@@ -122,7 +114,7 @@ up to complete blocks:
122
114
  | Base | One control or concept, including `Text` and `Heading` | `themelia-ui/base/<module>` |
123
115
  | Layout | Page and application shells | `themelia-ui/layout/<module>` |
124
116
  | Features | An interaction lifecycle with controlled state | `themelia-ui/features/<module>` |
125
- | Blocks | Subject-shaped compositions of the tiers above | `themelia-ui/patterns/<module>`, `themelia-ui/admin/patterns/<module>` |
117
+ | Blocks | Subject-shaped compositions of the tiers above | `themelia-ui/blocks/<module>`, `themelia-ui/blocks/admin/<module>` |
126
118
 
127
119
  ```ts
128
120
  import { UIProvider } from "themelia-ui/ui-provider"
@@ -130,7 +122,7 @@ import { Money } from "themelia-ui/primitives"
130
122
  import { Button } from "themelia-ui/base/buttons"
131
123
  import { Page } from "themelia-ui/layout/page"
132
124
  import { DataTable } from "themelia-ui/features/table"
133
- import { MetricGrid } from "themelia-ui/patterns/analytics"
125
+ import { MetricGrid } from "themelia-ui/blocks/analytics"
134
126
  ```
135
127
 
136
128
  There are no tier barrels: `themelia-ui/base` does not exist, so one import never pulls in a
@@ -163,25 +155,22 @@ A nested `UIProvider` themes one region, and inherits whatever it does not set.
163
155
  control, `UIRoot`, `UIScope`, `Scope` and `UIPortalHost` each do one of its jobs; see
164
156
  [Provider and scoping](docs/learn/provider-and-scoping.md).
165
157
 
166
- From CSS, set raw values such as radii and fonts on `:root`. Semantic colours such as
167
- `--primary`, `--background` and `--border` are derived again at every theme boundary, so
168
- declare them on the same selector list the package uses:
158
+ From CSS, set any theme variable on `:root`. A colour holds both modes as
159
+ `light-dark(light, dark)`, and each element's `color-scheme` picks the half, so one
160
+ declaration reaches every region, a dark region inside a light page included:
169
161
 
170
162
  ```css
171
163
  :root {
172
164
  --radius: 1rem;
173
165
  --radius-sm: 0.5rem;
174
- }
175
-
176
- :root, [data-ui-scope], [data-density], [data-theme], .light, .dark {
177
- --primary: oklch(0.55 0.19 250);
178
- --primary-foreground: oklch(0.985 0 0);
166
+ --primary: light-dark(oklch(0.55 0.19 250), oklch(0.72 0.14 250));
167
+ --primary-foreground: light-dark(oklch(0.985 0 0), oklch(0.2 0.03 250));
179
168
  }
180
169
  ```
181
170
 
182
- The default theme answers three dark-mode signals: `class="dark"`, `data-theme="dark"` and,
183
- with `colorScheme: "system"`, the operating system's preference. A dark value of your own
184
- should answer all three.
171
+ A colour given one value is used in both modes. Dark mode follows `class="dark"`,
172
+ `data-theme="dark"` or, with `colorScheme: "system"`, the operating system's preference: each
173
+ sets `color-scheme`, and nothing is declared twice.
185
174
 
186
175
  Beyond a few variables:
187
176
 
@@ -202,20 +191,19 @@ the bridge in the CSS entry that loads Tailwind:
202
191
 
203
192
  ```css
204
193
  @import "tailwindcss";
205
- @import "themelia-ui/style.css";
206
194
  @import "themelia-ui/tailwind.css";
207
195
  ```
208
196
 
209
- If the application loads module stylesheets instead of `style.css`, import
210
- `themelia-ui/core.css` in its place.
197
+ The kit's own CSS arrives with its components. Do not `@import` `themelia-ui/style.css` or
198
+ `themelia-ui/core.css` here as well: that inlines a second copy.
211
199
 
212
200
  The bridge is a Tailwind theme declaration generated from Themelia's variables. It does two
213
201
  things:
214
202
 
215
- 1. Utilities read the live theme. `bg-primary`, `text-muted-foreground`, `rounded-sm` (the
216
- item radius), `rounded-(--radius)` (the container radius), `p-md` and `shadow-lg` resolve
217
- through Themelia's variables at the element, so they follow dark mode, nested providers
218
- and density.
203
+ 1. Utilities read the live theme. `bg-primary`, `text-muted-foreground`, `rounded` (the
204
+ container radius), `rounded-sm` (the item radius), `p-padding`, `gap-gap-sm` and
205
+ `shadow-lg` resolve through Themelia's variables at the element, so they follow dark mode,
206
+ nested providers and density.
219
207
  2. It keeps Tailwind's defaults from replacing the variables both define, such as
220
208
  `--radius-sm`, `--text-sm` and `--font-sans`. Import it even if you never write one of
221
209
  its utilities.
@@ -225,7 +213,7 @@ so a utility in `className` overrides a component's own rule. There is no need f
225
213
  `!important` or `tailwind-merge`.
226
214
 
227
215
  ```tsx
228
- <Button className="rounded-pill px-lg shadow-lg">Approve</Button>
216
+ <Button className="rounded-pill px-padding shadow-lg">Approve</Button>
229
217
  ```
230
218
 
231
219
  ## Overrides
@@ -265,11 +253,8 @@ action semantics, focus and the theme:
265
253
 
266
254
  ```tsx
267
255
  import { Button } from "themelia-ui/base/buttons"
268
- import "themelia-ui/base/buttons.css"
269
256
  import { MetadataList } from "themelia-ui/base/display"
270
- import "themelia-ui/base/display.css"
271
257
  import { Page } from "themelia-ui/layout/page"
272
- import "themelia-ui/layout/page.css"
273
258
 
274
259
  function InvoiceDetail({ invoice, onCollectPayment }) {
275
260
  return (
@@ -307,8 +292,8 @@ Search the catalogue that ships with the package, offline, by what the interface
307
292
  node node_modules/themelia-ui/scripts/consumer/find-component.mjs "mobile filters for a table" --explain
308
293
  ```
309
294
 
310
- Each match comes with its exact JavaScript and CSS imports and guidance on when to choose it
311
- and when to avoid it. `--json` prints complete records, and `--help` lists the filters.
295
+ Each match comes with its exact import and guidance on when to choose it and when to avoid
296
+ it. `--json` prints complete records, and `--help` lists the filters.
312
297
 
313
298
  The package also ships a skill for coding assistants, built from the same catalogue:
314
299
 
@@ -329,18 +314,21 @@ Guides:
329
314
  - [Theming and Tailwind CSS v4](docs/learn/theming.md)
330
315
  - [Provider and scoping](docs/learn/provider-and-scoping.md)
331
316
  - [Composition](docs/learn/composition.md)
317
+ - [Structure, spacing and responsive widths](docs/learn/structure-and-spacing.md)
318
+ - [Choosing and composing blocks](docs/learn/blocks.md)
332
319
  - [Framework wiring](docs/learn/framework-wiring.md)
333
320
  - [Forms](docs/learn/forms.md)
334
321
  - [Localization](docs/learn/i18n.md)
335
322
  - [Troubleshooting](docs/learn/troubleshooting.md)
336
323
  - [Verifying a consuming application](docs/learn/verification.md)
324
+ - [Complete reference workflows](docs/learn/reference-workflows.md)
337
325
 
338
326
  Reference, generated from the source when the package is built. It ships in the package
339
327
  under `node_modules/themelia-ui/docs`, and the links open the latest published copy:
340
328
 
341
329
  - [Component catalogue](https://unpkg.com/themelia-ui/docs/generated/components/INDEX.md)
342
330
  - [Public API index](https://unpkg.com/themelia-ui/docs/generated/public-api.md)
343
- - [JavaScript, CSS and optional-peer imports](https://unpkg.com/themelia-ui/docs/generated/imports.md)
331
+ - [Imports and optional peers](https://unpkg.com/themelia-ui/docs/generated/imports.md)
344
332
  - [Theme variables](src/styles/TOKENS.md)
345
333
  - [Recipes](https://unpkg.com/themelia-ui/docs/build/recipes.md)
346
334