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
@@ -7,8 +7,6 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
7
7
 
8
8
  | module | tier | profile | reference |
9
9
  | --- | --- | --- | --- |
10
- | `admin/patterns/access` | Blocks | admin | [API](./admin--patterns--access.md) |
11
- | `admin/patterns/commerce` | Blocks | admin | [API](./admin--patterns--commerce.md) |
12
10
  | `base/accordion` | Base | general | [API](./base--accordion.md) |
13
11
  | `base/action-menu` | Base | general | [API](./base--action-menu.md) |
14
12
  | `base/alert-dialog` | Base | general | [API](./base--alert-dialog.md) |
@@ -63,6 +61,11 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
63
61
  | `base/typography` | Base | general | [API](./base--typography.md) |
64
62
  | `base/upload` | Base | general | [API](./base--upload.md) |
65
63
  | `base/value-inputs` | Base | general | [API](./base--value-inputs.md) |
64
+ | `blocks/admin/access` | Blocks | admin | [API](./blocks--admin--access.md) |
65
+ | `blocks/admin/commerce` | Blocks | admin | [API](./blocks--admin--commerce.md) |
66
+ | `blocks/analytics` | Blocks | general | [API](./blocks--analytics.md) |
67
+ | `blocks/onboarding` | Blocks | general | [API](./blocks--onboarding.md) |
68
+ | `blocks/timelines` | Blocks | general | [API](./blocks--timelines.md) |
66
69
  | `features/actions` | Features | general | [API](./features--actions.md) |
67
70
  | `features/activities` | Features | general | [API](./features--activities.md) |
68
71
  | `features/ai-chat` | Features | general | [API](./features--ai-chat.md) |
@@ -98,9 +101,6 @@ snapshot, the architecture manifest, selection guidance, and the live preview re
98
101
  | `layout/settings` | Layout | general | [API](./layout--settings.md) |
99
102
  | `layout/sidebar` | Layout | general | [API](./layout--sidebar.md) |
100
103
  | `layout/workspace` | Layout | general | [API](./layout--workspace.md) |
101
- | `patterns/analytics` | Blocks | general | [API](./patterns--analytics.md) |
102
- | `patterns/onboarding` | Blocks | general | [API](./patterns--onboarding.md) |
103
- | `patterns/timelines` | Blocks | general | [API](./patterns--timelines.md) |
104
104
  | `primitives` | Primitives | general | [API](./primitives.md) |
105
105
  | `theming` | Foundations | general | [API](./theming.md) |
106
106
  | `ui-provider` | Foundations | general | [API](./ui-provider.md) |
@@ -15,7 +15,6 @@ Several titled sections share one column and the reader opens them one at a time
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Accordion } from "themelia-ui/base/accordion"
18
- import "themelia-ui/base/accordion.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -188,7 +187,7 @@ import { Text } from "themelia-ui/base/typography"
188
187
 
189
188
  export default function AccordionSurfaces() {
190
189
  return (
191
- <Stack gap="xl" style={{ maxWidth: "34rem", width: "100%" }}>
190
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
192
191
  {(["bordered", "card", "flat"] as const).map((surface) => (
193
192
  <Stack key={surface} gap="sm">
194
193
  <Text size="xs" type="secondary">
@@ -207,3 +206,53 @@ export default function AccordionSurfaces() {
207
206
  )
208
207
  }
209
208
  ```
209
+
210
+ ### Compose your own checklist
211
+
212
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
213
+ import { CheckIcon, CircleIcon } from "lucide-react"
214
+
215
+ import { Accordion } from "themelia-ui/base/accordion"
216
+ import { Button } from "themelia-ui/base/buttons"
217
+ import { IconBadge } from "themelia-ui/base/display"
218
+ import { Progress } from "themelia-ui/base/feedback"
219
+ import { Stack } from "themelia-ui/base/structure"
220
+ import { Text } from "themelia-ui/base/typography"
221
+
222
+ export default function ChecklistBlueprint() {
223
+ return (
224
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
225
+ <Progress value={1} max={3} label="1 of 3 steps complete" />
226
+ <Accordion
227
+ media="medallion"
228
+ defaultValue={["invite"]}
229
+ items={[
230
+ {
231
+ value: "profile",
232
+ title: "Complete your profile",
233
+ icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
234
+ content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
235
+ },
236
+ {
237
+ value: "invite",
238
+ title: "Invite your team",
239
+ icon: <IconBadge icon={CircleIcon} shape="circle" />,
240
+ content: (
241
+ <Stack gap="sm" align="start">
242
+ <Text type="secondary">Teammates see the same projects and saved views.</Text>
243
+ <Button>Send invites</Button>
244
+ </Stack>
245
+ ),
246
+ },
247
+ {
248
+ value: "connect",
249
+ title: "Connect a data source",
250
+ icon: <IconBadge icon={CircleIcon} shape="circle" />,
251
+ content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
252
+ },
253
+ ]}
254
+ />
255
+ </Stack>
256
+ )
257
+ }
258
+ ```
@@ -15,7 +15,6 @@ A row, card or header offers the same set of actions repeatedly and the overflow
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { ActionButtons } from "themelia-ui/base/action-menu"
18
- import "themelia-ui/base/action-menu.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -43,7 +42,7 @@ Kind: interface.
43
42
 
44
43
  | member | required | type | description / documented default |
45
44
  | --- | :-: | --- | --- |
46
- | `actions` | yes | `readonly ActionDefinition[]` | The same definitions `ActionMenu` takes, side by side rather than collapsed into a menu:<br>that is the point of the shape. Each entry's `tone` and `buttonStyle` carry through to<br>its button. |
45
+ | `actions` | yes | `readonly ActionDefinition[]` | The same definitions `ActionMenu` takes, side by side rather than collapsed into a menu:<br>that is the point of the shape. Each entry's `tone` and `appearance` carry through to<br>its button. |
47
46
  | `max` | no | `number` | How many render as buttons before the rest collapse into an overflow menu built from<br>the same array. Unset, every definition is a button. |
48
47
  | `strings` | no | `Partial<ActionMenuStrings>` | Overrides this toolbar's own copy: `strings.overflow` names the overflow menu's trigger. |
49
48
  | `className` | no | `string` | |
@@ -73,7 +72,7 @@ One command, in the shape `ActionMenu`, `ActionButtons` and a card's `actions` a
73
72
  | `onCheckedChange` | no | `(checked: boolean) => void` | |
74
73
  | `group` | no | `string \| true` | Starts a new group, ruling off above this entry. A string also captions it; `true`<br>rules off without a heading (e.g. to set apart a sign-out or delete). |
75
74
  | `tone` | no | `ButtonTone` | Semantic intent. `destructive` also moves the entry last and separates it. |
76
- | `buttonStyle` | no | `ButtonStyle \| "link"` | Treatment when the action renders as a button. `link` is a ghost that underlines. |
75
+ | `appearance` | no | `ButtonAppearance \| "link"` | Treatment when the action renders as a button. `link` is a ghost that underlines. |
77
76
  | `visible` | no | `boolean` | `false` omits the action entirely. @default true |
78
77
  | `disabled` | no | `boolean` | |
79
78
  | `closeOnSelect` | no | `boolean` | Overrides the menu's `closeOnSelect` for this entry. |
@@ -310,13 +309,13 @@ export default function ActionMenuExample() {
310
309
  ]
311
310
 
312
311
  return (
313
- <Stack direction="horizontal" gap="xl" align="center">
312
+ <Stack direction="horizontal" align="center">
314
313
  <ActionMenu actions={actions} />
315
314
  <ActionMenu actions={actions} label="Actions" icon={SettingsIcon} />
316
315
  <ActionMenu
317
316
  actions={actions}
318
317
  renderTrigger={
319
- <Button buttonStyle="outline" tone="neutral">
318
+ <Button appearance="outline" tone="neutral">
320
319
  Custom trigger
321
320
  <ChevronDownIcon />
322
321
  </Button>
@@ -345,17 +344,17 @@ const DESTRUCTIVE_FIRST: ActionDefinition[] = [
345
344
  export default function ActionMenuOrder() {
346
345
  return (
347
346
  // The same delete-first array: default ordering on the left, `preserveOrder` on the right.
348
- <Stack direction="horizontal" gap="lg" align="center">
347
+ <Stack direction="horizontal" align="center">
349
348
  <ActionMenu
350
349
  actions={DESTRUCTIVE_FIRST}
351
350
  label="Sorted"
352
- buttonProps={{ tone: "neutral", buttonStyle: "outline" }}
351
+ buttonProps={{ tone: "neutral", appearance: "outline" }}
353
352
  />
354
353
  <ActionMenu
355
354
  actions={DESTRUCTIVE_FIRST}
356
355
  preserveOrder
357
356
  label="preserveOrder"
358
- buttonProps={{ tone: "neutral", buttonStyle: "outline" }}
357
+ buttonProps={{ tone: "neutral", appearance: "outline" }}
359
358
  />
360
359
  </Stack>
361
360
  )
@@ -375,7 +374,7 @@ import { Stack } from "themelia-ui/base/structure"
375
374
 
376
375
  export default function ActionMenuWidth() {
377
376
  return (
378
- <Stack direction="horizontal" gap="xl" align="center" wrap>
377
+ <Stack direction="horizontal" align="center" wrap>
379
378
  <ActionMenu
380
379
  label="Shortcuts"
381
380
  actions={[
@@ -404,7 +403,7 @@ export default function ActionMenuWidth() {
404
403
  />
405
404
  <ActionMenu
406
405
  renderTrigger={
407
- <Button buttonStyle="outline" tone="neutral" style={{ width: "16rem" }}>
406
+ <Button appearance="outline" tone="neutral" style={{ width: "16rem" }}>
408
407
  Matches the trigger
409
408
  <ChevronDownIcon />
410
409
  </Button>
@@ -436,14 +435,14 @@ const TOOLBAR: ActionDefinition[] = [
436
435
  { label: "Duplicate", icon: ShareIcon, ...QUIET, onClick: () => {} },
437
436
  { label: "Export", icon: DownloadIcon, ...QUIET, onClick: () => {} },
438
437
  { label: "Archive", icon: ArchiveIcon, ...QUIET, onClick: () => {} },
439
- { label: "Delete", icon: TrashIcon, buttonStyle: "outline", tone: "destructive", onClick: () => {} },
438
+ { label: "Delete", icon: TrashIcon, appearance: "outline", tone: "destructive", onClick: () => {} },
440
439
  ]
441
440
 
442
441
  export default function ActionButtonsExample() {
443
442
  return (
444
- <Stack gap="lg" style={{ width: "100%" }}>
443
+ <Stack style={{ width: "100%" }}>
445
444
  {[5, 3, 1].map((max) => (
446
- <Stack key={max} gap="xs">
445
+ <Stack key={max} gap="sm">
447
446
  <Text size="xs" type="secondary">max={max}</Text>
448
447
  <ActionButtons actions={TOOLBAR} max={max} />
449
448
  </Stack>
@@ -483,9 +482,9 @@ const INVOICES: Invoice[] = [
483
482
 
484
483
  export default function ContextActions() {
485
484
  return (
486
- <Stack gap="lg" style={{ width: "100%" }}>
485
+ <Stack style={{ width: "100%" }}>
487
486
  {INVOICES.map((invoice) => (
488
- <Stack key={invoice.number} gap="xs">
487
+ <Stack key={invoice.number} gap="sm">
489
488
  <Text size="xs" type="secondary">
490
489
  {invoice.number} · {invoice.paid ? "paid, locked" : "unpaid"}
491
490
  </Text>
@@ -15,7 +15,6 @@ Documenting or extending the alert-dialog anatomy itself inside base.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { AlertDialogAction } from "themelia-ui/base/alert-dialog"
18
- import "themelia-ui/base/alert-dialog.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -91,9 +90,9 @@ import { Text } from "themelia-ui/base/typography"
91
90
 
92
91
  export default function AlertDialog() {
93
92
  return (
94
- <Stack direction="horizontal">
93
+ <Stack gap="sm" direction="horizontal">
95
94
  <Overlay>
96
- <OverlayTrigger render={<Button tone="destructive" buttonStyle="outline" />}>
95
+ <OverlayTrigger render={<Button tone="destructive" appearance="outline" />}>
97
96
  Delete account
98
97
  </OverlayTrigger>
99
98
  <AlertDialogContent>
@@ -105,7 +104,7 @@ export default function AlertDialog() {
105
104
  <Text type="secondary">Every project and invoice is removed permanently.</Text>
106
105
  </OverlayBody>
107
106
  <OverlayFooter>
108
- <AlertDialogCancel render={<Button tone="neutral" buttonStyle="outline" />}>
107
+ <AlertDialogCancel render={<Button tone="neutral" appearance="outline" />}>
109
108
  Cancel
110
109
  </AlertDialogCancel>
111
110
  {/* The answer is an Action, not a second Cancel: they read the same only until a caller hooks the one that commits. */}
@@ -15,7 +15,6 @@ A media box must hold a fixed ratio while its width is decided by the layout.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { AspectRatio } from "themelia-ui/base/aspect-ratio"
18
- import "themelia-ui/base/aspect-ratio.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -59,15 +58,15 @@ import { Text } from "themelia-ui/base/typography"
59
58
 
60
59
  export default function AspectRatioExample() {
61
60
  return (
62
- <Stack direction="horizontal" gap="lg" style={{ width: "100%" }}>
61
+ <Stack direction="horizontal" style={{ width: "100%" }}>
63
62
  {[
64
63
  { ratio: 16 / 9, label: "16 / 9" },
65
64
  { ratio: 1, label: "1 / 1" },
66
65
  { ratio: 3 / 4, label: "3 / 4" },
67
66
  ].map((entry) => (
68
- <Stack key={entry.label} gap="2xs" style={{ flex: 1 }}>
67
+ <Stack key={entry.label} gap="sm" style={{ flex: 1 }}>
69
68
  <AspectRatio ratio={entry.ratio}>
70
- <div style={{ display: "grid", placeItems: "center", background: "var(--muted-40)", borderRadius: "var(--radius)" }}>
69
+ <div style={{ display: "grid", placeItems: "center", background: "var(--muted)", borderRadius: "var(--radius)" }}>
71
70
  <Text size="xs" type="secondary">{entry.label}</Text>
72
71
  </div>
73
72
  </AspectRatio>
@@ -15,12 +15,11 @@ Showing a person or entity as an image with an initials fallback, alone or stack
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Avatar } from "themelia-ui/base/avatar"
18
- import "themelia-ui/base/avatar.css"
19
18
  ```
20
19
 
21
20
  ## Composition
22
21
 
23
- This module depends on no other module.
22
+ This module composes `base/typography`.
24
23
 
25
24
  Application policy—routing, fetching, persistence, permissions, and translation—stays
26
25
  outside the package and arrives through the public props, callbacks, slots, or accessors below.
@@ -51,7 +50,8 @@ A small status mark on the disc's corner.
51
50
 
52
51
  Kind: callable.
53
52
 
54
- Shown when there is no image. Initials, not a placeholder glyph.
53
+ Shown when there is no image. Initials, not a placeholder glyph. They take the smaller
54
+ step on a small disc, and in a group, so the overlap doesn't clip them.
55
55
 
56
56
  ```text
57
57
  ({ className, ...props }: AvatarPrimitive.Fallback.Props) => React.JSX.Element
@@ -104,7 +104,7 @@ Kind: type.
104
104
  An avatar keeps a size prop: it has no content to scale with.
105
105
 
106
106
  ```text
107
- "default" | "sm" | "lg"
107
+ "default" | "sm"
108
108
  ```
109
109
 
110
110
  ### `defaultStackedAvatarsStrings`
@@ -174,8 +174,8 @@ import { Stack } from "themelia-ui/base/structure"
174
174
 
175
175
  export default function AvatarExample() {
176
176
  return (
177
- <Stack direction="horizontal" gap="lg" align="center">
178
- {(["sm", "default", "lg"] as const).map((size) => (
177
+ <Stack direction="horizontal" align="center">
178
+ {(["sm", "default"] as const).map((size) => (
179
179
  <Avatar key={size} size={size}>
180
180
  <AvatarFallback>JM</AvatarFallback>
181
181
  </Avatar>
@@ -206,7 +206,7 @@ const MEMBERS = [
206
206
 
207
207
  export default function Stacked() {
208
208
  return (
209
- <Stack gap="lg">
209
+ <Stack>
210
210
  <StackedAvatars users={MEMBERS} max={4} />
211
211
  <StackedAvatars users={MEMBERS} max={2} />
212
212
  <AvatarGroup>
@@ -15,12 +15,11 @@ A short status or count sits beside the thing it describes and carries a semanti
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Badge } from "themelia-ui/base/badge"
18
- import "themelia-ui/base/badge.css"
19
18
  ```
20
19
 
21
20
  ## Composition
22
21
 
23
- This module composes `base/slot`.
22
+ This module composes `base/slot`, `base/typography`.
24
23
 
25
24
  Application policy—routing, fetching, persistence, permissions, and translation—stays
26
25
  outside the package and arrives through the public props, callbacks, slots, or accessors below.
@@ -32,19 +31,29 @@ outside the package and arrives through the public props, callbacks, slots, or a
32
31
  Kind: callable.
33
32
 
34
33
  ```text
35
- ({ className, tone, variant, render, dot, pending, pulse, children, ...props }: BadgeProps) => React.JSX.Element
34
+ ({ className, tone, appearance, render, dot, pending, pulse, children, ...props }: BadgeProps) => React.JSX.Element
35
+ ```
36
+
37
+ ### `BadgeAppearance`
38
+
39
+ Kind: type.
40
+
41
+ Fill treatment. The tone supplies the hue; this decides how much of it is applied.
42
+
43
+ ```text
44
+ "soft" | "solid" | "outline"
36
45
  ```
37
46
 
38
47
  ### `BadgeProps`
39
48
 
40
49
  Kind: interface.
41
50
 
42
- Extends: `React.ComponentProps<"span">`, `VariantProps<typeof badgeVariants>`.
51
+ Extends: `React.ComponentProps<"span">`.
43
52
 
44
53
  | member | required | type | description / documented default |
45
54
  | --- | :-: | --- | --- |
46
- | `tone` | no | `BadgeTone` | Semantic colour: what the badge means. `variant` decides how much of it is applied. |
47
- | `variant` | no | `BadgeVariant` | How much of the tone is applied. Structural, not semantic. |
55
+ | `tone` | no | `BadgeTone` | Semantic colour: what the badge means. `appearance` decides how much of it is applied. |
56
+ | `appearance` | no | `BadgeAppearance` | How much of the tone is applied: a soft wash, a solid fill or an outline. |
48
57
  | `dot` | no | `boolean` | A leading status dot in the badge's own tone. |
49
58
  | `pending` | no | `boolean` | Draws the dot hollow, for a state that has not happened yet: "queued", not "failed". |
50
59
  | `pulse` | no | `boolean` | Animates the dot, for a state that is actively changing. |
@@ -54,32 +63,54 @@ Extends: `React.ComponentProps<"span">`, `VariantProps<typeof badgeVariants>`.
54
63
 
55
64
  Kind: type.
56
65
 
66
+ Semantic colour: the kit's one tone union.
67
+
57
68
  ```text
58
- "neutral" | "primary" | "secondary" | "success" | "info" | "warning" | "destructive"
69
+ SemanticTone
59
70
  ```
60
71
 
61
- ### `BadgeVariant`
62
-
63
- Kind: type.
72
+ ## Preview recipes
64
73
 
65
- Structural presentation. The tone supplies the hue; this decides how it is applied.
74
+ Preview route: Analytics — `/analytics`
66
75
 
67
- ```text
68
- "soft" | "solid" | "outline"
69
- ```
76
+ ### Compose your own
70
77
 
71
- ### `badgeVariants`
78
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
79
+ import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
72
80
 
73
- Kind: callable.
81
+ import { Badge } from "themelia-ui/base/badge"
82
+ import { Card } from "themelia-ui/base/cards"
83
+ import { Sparkline } from "themelia-ui/base/chart"
84
+ import { IconBadge } from "themelia-ui/base/display"
85
+ import { Stack } from "themelia-ui/base/structure"
86
+ import { DisplayLabel, Text } from "themelia-ui/base/typography"
87
+ import { Money } from "themelia-ui/primitives"
74
88
 
75
- ```text
76
- (props?: ({ tone?: ("neutral" | "primary" | "secondary" | "info" | "success" | "warning" | "destructive") | null | undefined; variant?: ("solid" | "outline" | "soft") | null | undefined; } & { className?: import('clsx').ClassValue; }) | undefined) => string
89
+ export default function AnalyticsBlueprint() {
90
+ return (
91
+ <Card style={{ maxWidth: "20rem" }}>
92
+ <Stack gap="sm">
93
+ <Stack direction="horizontal" align="center" gap="sm">
94
+ <IconBadge icon={CreditCardIcon} tone="primary" />
95
+ <DisplayLabel>Revenue</DisplayLabel>
96
+ </Stack>
97
+ <Stack direction="horizontal" align="center" justify="between" gap="sm">
98
+ <Money amount={48200} currency="EUR" size="xl" weight="semibold" />
99
+ <Badge tone="success">
100
+ <ArrowUpIcon />
101
+ 12.4%
102
+ </Badge>
103
+ </Stack>
104
+ <Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
105
+ <Text size="xs" type="secondary">
106
+ Net of refunds, this quarter
107
+ </Text>
108
+ </Stack>
109
+ </Card>
110
+ )
111
+ }
77
112
  ```
78
113
 
79
- ## Preview recipes
80
-
81
- Preview route: Badge — `/badge`
82
-
83
114
  ### Tones
84
115
 
85
116
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
@@ -91,13 +122,13 @@ const TONES: BadgeTone[] = ["neutral", "primary", "secondary", "success", "info"
91
122
 
92
123
  export default function BadgeTones() {
93
124
  return (
94
- <Stack gap="lg" style={{ width: "100%" }}>
95
- {(["soft", "solid", "outline"] as const).map((variant) => (
96
- <Stack key={variant} gap="xs">
97
- <Text size="xs" type="secondary">{variant}</Text>
125
+ <Stack style={{ width: "100%" }}>
126
+ {(["soft", "solid", "outline"] as const).map((appearance) => (
127
+ <Stack key={appearance} gap="sm">
128
+ <Text size="xs" type="secondary">{appearance}</Text>
98
129
  <Stack direction="horizontal" gap="sm" wrap>
99
130
  {TONES.map((tone) => (
100
- <Badge key={tone} tone={tone} variant={variant}>{tone}</Badge>
131
+ <Badge key={tone} tone={tone} appearance={appearance}>{tone}</Badge>
101
132
  ))}
102
133
  </Stack>
103
134
  </Stack>
@@ -124,3 +155,104 @@ export default function BadgeDot() {
124
155
  )
125
156
  }
126
157
  ```
158
+
159
+ ### Compose your own timeline
160
+
161
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
162
+ import { RocketIcon, WrenchIcon } from "lucide-react"
163
+
164
+ import { Badge } from "themelia-ui/base/badge"
165
+ import { Stack } from "themelia-ui/base/structure"
166
+ import { Timeline, type TimelineItem } from "themelia-ui/base/timeline"
167
+ import { MonoValue } from "themelia-ui/primitives"
168
+
169
+ const RELEASES: TimelineItem[] = [
170
+ {
171
+ id: "3.1.0",
172
+ title: "Saved views",
173
+ timestamp: <MonoValue size="xs" type="secondary">v3.1.0</MonoValue>,
174
+ icon: RocketIcon,
175
+ status: "success",
176
+ description: "Filters and columns can be saved and shared with the team.",
177
+ children: (
178
+ <Stack direction="horizontal" gap="sm">
179
+ <Badge tone="success">Added</Badge>
180
+ <Badge tone="neutral">Tables</Badge>
181
+ </Stack>
182
+ ),
183
+ },
184
+ {
185
+ id: "3.0.2",
186
+ title: "Faster exports",
187
+ timestamp: <MonoValue size="xs" type="secondary">v3.0.2</MonoValue>,
188
+ icon: WrenchIcon,
189
+ status: "neutral",
190
+ description: "Large exports stream instead of waiting for the whole file.",
191
+ },
192
+ ]
193
+
194
+ export default function ChangelogBlueprint() {
195
+ return (
196
+ <Timeline items={RELEASES} />
197
+ )
198
+ }
199
+ ```
200
+
201
+ ### Compose your own permissions
202
+
203
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
204
+ import { CheckIcon } from "lucide-react"
205
+
206
+ import { Badge } from "themelia-ui/base/badge"
207
+ import { VisuallyHidden } from "themelia-ui/base/display"
208
+ import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "themelia-ui/base/table"
209
+ import { Text } from "themelia-ui/base/typography"
210
+
211
+ const ROLES = ["Owner", "Editor", "Viewer"] as const
212
+ const PERMISSIONS: { name: string; granted: readonly boolean[] }[] = [
213
+ { name: "Edit projects", granted: [true, true, false] },
214
+ { name: "Manage billing", granted: [true, false, false] },
215
+ { name: "Export data", granted: [true, true, true] },
216
+ ]
217
+
218
+ export default function RolesBlueprint() {
219
+ return (
220
+ <Table>
221
+ <TableHeader>
222
+ <TableRow>
223
+ <TableHead>Permission</TableHead>
224
+ {ROLES.map((role) => (
225
+ <TableHead key={role} align="center">
226
+ {role}
227
+ </TableHead>
228
+ ))}
229
+ </TableRow>
230
+ </TableHeader>
231
+ <TableBody>
232
+ {PERMISSIONS.map((permission) => (
233
+ <TableRow key={permission.name}>
234
+ <TableCell>{permission.name}</TableCell>
235
+ {permission.granted.map((granted, index) => (
236
+ <TableCell key={ROLES[index]} align="center">
237
+ {granted ? (
238
+ <Badge tone="success">
239
+ <CheckIcon aria-hidden />
240
+ <VisuallyHidden>Granted</VisuallyHidden>
241
+ </Badge>
242
+ ) : (
243
+ <>
244
+ <Text tag="span" type="secondary" aria-hidden>
245
+ —
246
+ </Text>
247
+ <VisuallyHidden>Not granted</VisuallyHidden>
248
+ </>
249
+ )}
250
+ </TableCell>
251
+ ))}
252
+ </TableRow>
253
+ ))}
254
+ </TableBody>
255
+ </Table>
256
+ )
257
+ }
258
+ ```
@@ -15,7 +15,6 @@ A multi-select produces a selection whose actions must appear without shifting t
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { BatchActionBar } from "themelia-ui/base/batch-action-bar"
18
- import "themelia-ui/base/batch-action-bar.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -98,7 +97,7 @@ const DEMO_BOX: React.CSSProperties = {
98
97
  transform: "translate(0)",
99
98
  minHeight: "12rem",
100
99
  width: "100%",
101
- padding: "var(--space-lg)",
100
+ padding: "var(--padding)",
102
101
  border: "var(--border-width) dashed var(--border)",
103
102
  borderRadius: "var(--radius)",
104
103
  }
@@ -107,9 +106,9 @@ export default function Floating() {
107
106
  const [selected, setSelected] = useState(3)
108
107
 
109
108
  return (
110
- <Stack gap="md" style={{ width: "100%" }}>
109
+ <Stack gap="sm" style={{ width: "100%" }}>
111
110
  <Stack direction="horizontal" gap="sm" align="center">
112
- <Button type="button" tone="neutral" buttonStyle="outline" onClick={() => setSelected((n) => n + 1)}>
111
+ <Button type="button" tone="neutral" appearance="outline" onClick={() => setSelected((n) => n + 1)}>
113
112
  Select one more
114
113
  </Button>
115
114
  <Text size="sm" type="secondary">
@@ -121,10 +120,10 @@ export default function Floating() {
121
120
  The bar below is contained to this box for the demo. In an app it docks to the viewport.
122
121
  </Text>
123
122
  <BatchActionBar selectedCount={selected} totalCount={250} onClear={() => setSelected(0)}>
124
- <Button type="button" tone="neutral" buttonStyle="ghost">
123
+ <Button type="button" tone="neutral" appearance="ghost">
125
124
  Export
126
125
  </Button>
127
- <Button type="button" tone="destructive" buttonStyle="ghost">
126
+ <Button type="button" tone="destructive" appearance="ghost">
128
127
  Delete
129
128
  </Button>
130
129
  </BatchActionBar>
@@ -148,7 +147,7 @@ export default function Inline() {
148
147
  onClear={() => undefined}
149
148
  strings={{ label: "Inline batch actions example" }}
150
149
  >
151
- <Button type="button" tone="neutral" buttonStyle="ghost">
150
+ <Button type="button" tone="neutral" appearance="ghost">
152
151
  Assign
153
152
  </Button>
154
153
  </BatchActionBar>