themelia-ui 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (709) hide show
  1. package/.agents/skills/themelia-ui/SKILL.md +27 -29
  2. package/.agents/skills/themelia-ui/references/api-compatibility.md +3 -3
  3. package/.agents/skills/themelia-ui/references/composition.md +2 -18
  4. package/.agents/skills/themelia-ui/references/framework-wiring.md +8 -8
  5. package/.agents/skills/themelia-ui/references/imports.md +104 -104
  6. package/.agents/skills/themelia-ui/references/installation.md +55 -27
  7. package/.agents/skills/themelia-ui/references/migration.md +136 -5
  8. package/.agents/skills/themelia-ui/references/provider-and-scoping.md +13 -19
  9. package/.agents/skills/themelia-ui/references/theming.md +170 -131
  10. package/.agents/skills/themelia-ui/references/troubleshooting.md +62 -27
  11. package/.agents/skills/themelia-ui/references/verification.md +2 -3
  12. package/CHANGELOG.md +187 -0
  13. package/README.md +45 -60
  14. package/dist/accordion-CHuzMmWL.js +143 -0
  15. package/dist/{action-menu-BNLURfMK.js → action-menu-BwiL_F6I.js} +35 -33
  16. package/dist/{alert-dialog-BMVo6Z-8.js → alert-dialog-Bmo1YrTm.js} +1 -1
  17. package/dist/avatar-Dc_BNYfB.js +93 -0
  18. package/dist/badge-VlJVZjdm.js +45 -0
  19. package/dist/base/accordion.js +1 -1
  20. package/dist/base/action-menu.js +1 -1
  21. package/dist/base/alert-dialog.js +1 -1
  22. package/dist/base/aspect-ratio.js +3 -1
  23. package/dist/base/avatar.js +1 -1
  24. package/dist/base/badge.js +2 -2
  25. package/dist/base/batch-action-bar.js +1 -1
  26. package/dist/base/buttons.js +1 -1
  27. package/dist/base/cards.js +1 -1
  28. package/dist/base/carousel.js +6 -4
  29. package/dist/base/chart.js +1 -1
  30. package/dist/base/choice-inputs.js +1 -1
  31. package/dist/base/combobox.js +1 -1
  32. package/dist/base/command.js +1 -1
  33. package/dist/base/context-menu.js +22 -21
  34. package/dist/base/copyable.js +1 -1
  35. package/dist/base/date-pickers.js +1 -1
  36. package/dist/base/dialog.js +1 -1
  37. package/dist/base/display.js +1 -1
  38. package/dist/base/dropdown-menu.js +1 -1
  39. package/dist/base/feedback.js +1 -1
  40. package/dist/base/forms-numeric.js +1 -1
  41. package/dist/base/forms.js +1 -1
  42. package/dist/base/hover-card.js +26 -23
  43. package/dist/base/input-group.js +1 -1
  44. package/dist/base/item.js +1 -1
  45. package/dist/base/label.js +1 -1
  46. package/dist/base/menubar.js +20 -14
  47. package/dist/base/navigation-menu.js +47 -38
  48. package/dist/base/navigation.js +1 -1
  49. package/dist/base/otp-input.js +36 -30
  50. package/dist/base/overlay.js +1 -1
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +51 -47
  54. package/dist/base/repeaters.js +1 -1
  55. package/dist/base/resizable.js +2 -0
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/skeleton.js +1 -1
  59. package/dist/base/spinner.js +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +1 -1
  63. package/dist/base/timeline.js +1 -1
  64. package/dist/base/toaster.js +1 -1
  65. package/dist/base/toggle.js +21 -15
  66. package/dist/base/toolbar.js +1 -1
  67. package/dist/base/tooltip.js +1 -1
  68. package/dist/base/typography.js +2 -2
  69. package/dist/base/upload.js +1 -1
  70. package/dist/base/value-inputs.js +1 -1
  71. package/dist/{batch-action-bar-BZYNKXdV.js → batch-action-bar-DZVMVW83.js} +11 -8
  72. package/dist/{admin/patterns → blocks/admin}/access.js +79 -76
  73. package/dist/blocks/admin/commerce.js +2493 -0
  74. package/dist/{patterns → blocks}/analytics.js +312 -303
  75. package/dist/{patterns → blocks}/onboarding.js +27 -23
  76. package/dist/{patterns → blocks}/timelines.js +1 -1
  77. package/dist/buttons-BX2JfL5X.js +173 -0
  78. package/dist/cards-DdiICdMM.js +279 -0
  79. package/dist/chart-BkK3Xm10.js +201 -0
  80. package/dist/choice-inputs-CCw-0gD6.js +694 -0
  81. package/dist/combobox-Byu8N-Oe.js +274 -0
  82. package/dist/command-CnB_IZSo.js +156 -0
  83. package/dist/comments-C6Y_ddMt.js +1443 -0
  84. package/dist/components/base/action-menu/action-menu.d.ts +1 -1
  85. package/dist/components/base/action-menu/action-menu.types.d.ts +2 -2
  86. package/dist/components/base/avatar/avatar.d.ts +5 -2
  87. package/dist/components/base/badge/badge.d.ts +10 -10
  88. package/dist/components/base/badge/badge.variants.d.ts +1 -2
  89. package/dist/components/base/badge/index.d.ts +1 -2
  90. package/dist/components/base/buttons/button.d.ts +9 -8
  91. package/dist/components/base/buttons/button.types.d.ts +2 -2
  92. package/dist/components/base/buttons/index.d.ts +1 -1
  93. package/dist/components/base/buttons/text-button.d.ts +1 -1
  94. package/dist/components/base/cards/card-actions.d.ts +1 -1
  95. package/dist/components/base/cards/card.d.ts +3 -1
  96. package/dist/components/base/cards/partials/card-header.d.ts +2 -1
  97. package/dist/components/base/choice-inputs/choice.types.d.ts +2 -2
  98. package/dist/components/base/choice-inputs/partials/choice-parts.d.ts +3 -3
  99. package/dist/components/base/command/command.d.ts +5 -2
  100. package/dist/components/base/display/icon-badge.d.ts +5 -3
  101. package/dist/components/base/display/index.d.ts +1 -1
  102. package/dist/components/base/display/metadata-list.d.ts +6 -6
  103. package/dist/components/base/display/metadata-value.d.ts +1 -1
  104. package/dist/components/base/display/separator.d.ts +2 -2
  105. package/dist/components/base/feedback/alert.d.ts +3 -2
  106. package/dist/components/base/feedback/empty.d.ts +5 -4
  107. package/dist/components/base/feedback/progress-circle.d.ts +2 -2
  108. package/dist/components/base/feedback/progress.d.ts +3 -1
  109. package/dist/components/base/input-group/input-group.d.ts +8 -10
  110. package/dist/components/base/item/item.d.ts +2 -2
  111. package/dist/components/base/overlay/index.d.ts +1 -1
  112. package/dist/components/base/overlay/overlay.types.d.ts +7 -5
  113. package/dist/components/base/qr-code/qr-code.d.ts +4 -4
  114. package/dist/components/base/sheet/sheet.d.ts +1 -1
  115. package/dist/components/base/sidebar/sidebar.d.ts +9 -13
  116. package/dist/components/base/spinner/spinner.d.ts +2 -2
  117. package/dist/components/base/structure/adaptive-grid.d.ts +3 -3
  118. package/dist/components/base/structure/bleed.d.ts +3 -2
  119. package/dist/components/base/structure/grid.d.ts +2 -2
  120. package/dist/components/base/structure/index.d.ts +1 -1
  121. package/dist/components/base/structure/split.d.ts +3 -3
  122. package/dist/components/base/structure/stack.d.ts +5 -5
  123. package/dist/components/base/structure/structure.maps.d.ts +2 -1
  124. package/dist/components/base/structure/structure.types.d.ts +10 -4
  125. package/dist/components/base/toggle/toggle.d.ts +2 -2
  126. package/dist/components/base/toolbar/toolbar.d.ts +3 -3
  127. package/dist/components/base/typography/index.d.ts +2 -0
  128. package/dist/components/base/typography/rich-text/rich-text.variants.d.ts +9 -0
  129. package/dist/components/base/typography/text/index.d.ts +1 -0
  130. package/dist/components/base/typography/text/text.d.ts +15 -8
  131. package/dist/components/base/typography/text/text.variants.d.ts +41 -0
  132. package/dist/components/base/value-inputs/color-input.d.ts +1 -7
  133. package/dist/components/base/value-inputs/slider.d.ts +2 -7
  134. package/dist/components/{admin/patterns → blocks/admin}/commerce/vendor-profile.d.ts +2 -1
  135. package/dist/components/{patterns → blocks}/analytics/analytics.strings.d.ts +2 -5
  136. package/dist/components/features/actions/action-adapters.d.ts +3 -3
  137. package/dist/components/features/actions/actions.types.d.ts +3 -5
  138. package/dist/components/features/actions/index.d.ts +1 -1
  139. package/dist/components/features/activities/activities-feed.d.ts +1 -1
  140. package/dist/components/features/activities/activities.types.d.ts +4 -4
  141. package/dist/components/features/activities/activity-parts.d.ts +3 -3
  142. package/dist/components/features/activities/activity-row.d.ts +4 -4
  143. package/dist/components/features/activities/index.d.ts +1 -1
  144. package/dist/components/features/ai-chat/ai-chat.types.d.ts +10 -3
  145. package/dist/components/features/ai-chat/ai-message-surfaces.d.ts +1 -1
  146. package/dist/components/features/ai-chat/ai-work-surfaces.d.ts +1 -1
  147. package/dist/components/features/combobox/combobox.strings.d.ts +2 -2
  148. package/dist/components/features/event-calendar/event-calendar.types.d.ts +3 -0
  149. package/dist/components/features/media-library/index.d.ts +1 -1
  150. package/dist/components/features/media-library/media-library-parts.d.ts +4 -3
  151. package/dist/components/features/media-library/media-library-views.d.ts +4 -3
  152. package/dist/components/features/media-library/media-library.d.ts +1 -1
  153. package/dist/components/features/media-library/media-library.strings.d.ts +12 -13
  154. package/dist/components/features/media-library/media-library.types.d.ts +11 -9
  155. package/dist/components/features/media-library/media-resource-gallery.d.ts +1 -1
  156. package/dist/components/features/media-library/use-media-library.d.ts +1 -4
  157. package/dist/components/features/overlays/action-overlay-frame.d.ts +1 -1
  158. package/dist/components/features/overlays/index.d.ts +1 -1
  159. package/dist/components/features/overlays/overlay-parts.d.ts +3 -3
  160. package/dist/components/features/overlays/overlays.types.d.ts +8 -7
  161. package/dist/components/features/rich-text-editor/index.d.ts +0 -1
  162. package/dist/components/features/table/data-table-body.d.ts +1 -1
  163. package/dist/components/features/table/data-table-expanded-row.d.ts +27 -0
  164. package/dist/components/features/table/data-table-header.d.ts +1 -1
  165. package/dist/components/features/table/data-table-size.d.ts +1 -1
  166. package/dist/components/features/table/data-table.d.ts +1 -1
  167. package/dist/components/features/table/index.d.ts +1 -1
  168. package/dist/components/features/table/table-helpers.d.ts +9 -3
  169. package/dist/components/features/table/table.strings.d.ts +11 -0
  170. package/dist/components/features/table/table.types.d.ts +60 -2
  171. package/dist/components/features/theme-tweaker/index.d.ts +1 -1
  172. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +1 -1
  173. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +6 -10
  174. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +22 -6
  175. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  176. package/dist/components/layout/auth/auth.d.ts +1 -1
  177. package/dist/components/layout/auth/auth.types.d.ts +1 -1
  178. package/dist/components/primitives/value.d.ts +3 -1
  179. package/dist/containers-B8d8U9GS.js +2 -0
  180. package/dist/{copyable-H1TUEY-H.js → copyable-D9Okb1w6.js} +12 -11
  181. package/dist/core.css +2 -2
  182. package/dist/css/access.css +2 -1
  183. package/dist/css/accordion.css +2 -1
  184. package/dist/css/action-menu.css +2 -1
  185. package/dist/css/activities.css +2 -1
  186. package/dist/css/ai-chat.css +2 -1
  187. package/dist/css/analytics.css +2 -1
  188. package/dist/css/app-shell.css +2 -1
  189. package/dist/css/aspect-ratio.css +2 -1
  190. package/dist/css/async-preview.css +2 -1
  191. package/dist/css/auth.css +2 -1
  192. package/dist/css/avatar.css +2 -1
  193. package/dist/css/badge.css +2 -1
  194. package/dist/css/batch-action-bar.css +2 -1
  195. package/dist/css/buttons.css +2 -1
  196. package/dist/css/cards.css +2 -1
  197. package/dist/css/carousel.css +2 -1
  198. package/dist/css/chart.css +2 -1
  199. package/dist/css/choice-inputs.css +2 -1
  200. package/dist/css/combobox.css +2 -1
  201. package/dist/css/combobox2.css +2 -1
  202. package/dist/css/command.css +2 -1
  203. package/dist/css/comments.css +2 -1
  204. package/dist/css/commerce.css +2 -1
  205. package/dist/css/containers.css +2 -1
  206. package/dist/css/copyable.css +2 -1
  207. package/dist/css/data-view.css +2 -1
  208. package/dist/css/date-pickers.css +2 -1
  209. package/dist/css/display.css +2 -1
  210. package/dist/css/dropdown-menu.css +2 -1
  211. package/dist/css/event-calendar.css +2 -1
  212. package/dist/css/feedback.css +2 -1
  213. package/dist/css/filters.css +2 -1
  214. package/dist/css/forms-numeric.css +2 -1
  215. package/dist/css/forms.css +2 -1
  216. package/dist/css/global-search.css +2 -1
  217. package/dist/css/header.css +2 -1
  218. package/dist/css/hover-card.css +2 -1
  219. package/dist/css/input-group.css +2 -1
  220. package/dist/css/item.css +2 -1
  221. package/dist/css/kanban.css +2 -1
  222. package/dist/css/label.css +2 -1
  223. package/dist/css/map.css +2 -1
  224. package/dist/css/media-library.css +2 -1
  225. package/dist/css/mentions.css +2 -1
  226. package/dist/css/menubar.css +2 -1
  227. package/dist/css/navigation-menu.css +2 -1
  228. package/dist/css/navigation.css +2 -1
  229. package/dist/css/navigation2.css +2 -1
  230. package/dist/css/onboarding.css +2 -1
  231. package/dist/css/otp-input.css +2 -1
  232. package/dist/css/overlay.css +2 -1
  233. package/dist/css/overlays.css +2 -1
  234. package/dist/css/page.css +2 -1
  235. package/dist/css/popover-menu.css +2 -1
  236. package/dist/css/popover.css +2 -1
  237. package/dist/css/primitives.css +2 -1
  238. package/dist/css/products.css +2 -1
  239. package/dist/css/qr-code.css +2 -1
  240. package/dist/css/repeaters.css +2 -1
  241. package/dist/css/resizable.css +2 -1
  242. package/dist/css/resource-assignment.css +2 -1
  243. package/dist/css/resource.css +2 -1
  244. package/dist/css/rich-text-editor.css +2 -1
  245. package/dist/css/schema-form.css +2 -1
  246. package/dist/css/sidebar.css +2 -1
  247. package/dist/css/sidebar2.css +2 -1
  248. package/dist/css/skeleton.css +2 -1
  249. package/dist/css/spinner.css +2 -1
  250. package/dist/css/structure.css +2 -1
  251. package/dist/css/sync.css +2 -1
  252. package/dist/css/table.css +2 -1
  253. package/dist/css/table2.css +2 -1
  254. package/dist/css/text-inputs.css +2 -1
  255. package/dist/css/theme-tweaker.css +2 -1
  256. package/dist/css/timeline.css +2 -1
  257. package/dist/css/timelines.css +2 -1
  258. package/dist/css/toaster.css +2 -1
  259. package/dist/css/toggle.css +2 -1
  260. package/dist/css/toolbar.css +2 -1
  261. package/dist/css/tooltip.css +2 -1
  262. package/dist/css/typography.css +2 -1
  263. package/dist/css/upload.css +2 -1
  264. package/dist/css/value-inputs.css +2 -1
  265. package/dist/css/workspace.css +2 -1
  266. package/dist/css-graph.json +1027 -0
  267. package/dist/date-pickers-C2HgjpFU.js +685 -0
  268. package/dist/{dialog-CtFCuTUF.js → dialog-0nRFg5Zs.js} +1 -1
  269. package/dist/display-BGN834xV.js +664 -0
  270. package/dist/dropdown-menu-Br8kvjrF.js +235 -0
  271. package/dist/empty.js +0 -0
  272. package/dist/features/actions.js +6 -6
  273. package/dist/features/activities.js +219 -216
  274. package/dist/features/ai-chat.js +593 -565
  275. package/dist/features/async-preview.js +105 -286
  276. package/dist/features/combobox.js +119 -117
  277. package/dist/features/comments.js +1 -1
  278. package/dist/features/data-view.js +56 -55
  279. package/dist/features/event-calendar.js +189 -185
  280. package/dist/features/filters.js +1 -1
  281. package/dist/features/global-search.js +259 -260
  282. package/dist/features/kanban.js +39 -37
  283. package/dist/features/map.js +357 -354
  284. package/dist/features/media-library.js +931 -931
  285. package/dist/features/mentions.js +1 -1
  286. package/dist/features/overlays.js +1 -1
  287. package/dist/features/products.js +950 -942
  288. package/dist/features/resource-assignment.js +39 -37
  289. package/dist/features/resource.js +70 -71
  290. package/dist/features/rich-text-editor.js +2 -2
  291. package/dist/features/schema-form.js +342 -338
  292. package/dist/features/sync.js +14 -12
  293. package/dist/features/table.js +1 -1
  294. package/dist/features/theme-tweaker.js +1002 -962
  295. package/dist/feedback-D4qVsKlD.js +430 -0
  296. package/dist/{filters-DOLKRSmb.js → filters-geLuSlFL.js} +386 -383
  297. package/dist/forms-NxbJK4Mh.js +250 -0
  298. package/dist/forms-numeric-C6NMdj6G.js +582 -0
  299. package/dist/index.js +2 -2
  300. package/dist/input-group-HS_Z0Ei_.js +119 -0
  301. package/dist/item-CuUJyETl.js +150 -0
  302. package/dist/{label-DumoMDm6.js → label-HOBXAscw.js} +7 -5
  303. package/dist/layout/app-shell.js +4 -2
  304. package/dist/layout/auth.js +102 -100
  305. package/dist/layout/header.js +190 -180
  306. package/dist/layout/navigation.js +1 -1
  307. package/dist/layout/page.js +18 -16
  308. package/dist/layout/settings.js +2 -2
  309. package/dist/layout/sidebar.js +43 -43
  310. package/dist/layout/workspace.js +71 -69
  311. package/dist/lib/action-presentation.d.ts +3 -3
  312. package/dist/lib/component-vocabulary.d.ts +2 -2
  313. package/dist/lib/css-length.d.ts +2 -0
  314. package/dist/lib/responsive.d.ts +1 -1
  315. package/dist/lib/theming/index.d.ts +1 -0
  316. package/dist/lib/theming/recipes.d.ts +2 -2
  317. package/dist/lib/theming/themes/dense.d.ts +3 -0
  318. package/dist/lib/theming/themes/editorial.d.ts +3 -0
  319. package/dist/lib/theming/themes/index.d.ts +8 -0
  320. package/dist/lib/theming/themes/pair.d.ts +7 -0
  321. package/dist/lib/theming/themes/sharp.d.ts +3 -0
  322. package/dist/lib/theming/themes/soft.d.ts +3 -0
  323. package/dist/lib/theming/themes/types.d.ts +12 -0
  324. package/dist/lib/ui-provider/index.d.ts +1 -1
  325. package/dist/lib/ui-provider/scope.d.ts +5 -8
  326. package/dist/lib/ui-provider/tokens.d.ts +11 -3
  327. package/dist/lib/ui-provider/tokens.generated.d.ts +6 -4
  328. package/dist/lib/ui-provider/types.d.ts +17 -19
  329. package/dist/{mentions-BbsEHlcH.js → mentions-oeYNv_j1.js} +113 -111
  330. package/dist/navigation-BTX5Ti0Z.js +622 -0
  331. package/dist/navigation-WYKjDhZq.js +216 -0
  332. package/dist/overlay-C8RAgi2_.js +356 -0
  333. package/dist/{overlays-DvVoS3td.js → overlays-9BxwFTou.js} +77 -75
  334. package/dist/popover-CA7SP_iz.js +127 -0
  335. package/dist/popover-menu-DcLeiw9r.js +192 -0
  336. package/dist/{primitives-D0bdDozz.js → primitives-BskKlf35.js} +181 -178
  337. package/dist/primitives.js +1 -1
  338. package/dist/profiles/admin.json +6 -36
  339. package/dist/profiles/general.json +6 -96
  340. package/dist/repeaters-DfptvbGA.js +445 -0
  341. package/dist/rich-text-editor-D_Ppm8yh.js +491 -0
  342. package/dist/{sheet-CKcmRbJ9.js → sheet-D-DVZH_b.js} +3 -3
  343. package/dist/sidebar-DXQOy_Cb.js +421 -0
  344. package/dist/skeleton-CubvHel9.js +173 -0
  345. package/dist/spinner-Tc1QCnxM.js +30 -0
  346. package/dist/{structure-D0WGQAP3.js → structure-B9Y5NkP_.js} +15 -22
  347. package/dist/style.css +1 -1
  348. package/dist/styles/TOKENS.md +115 -275
  349. package/dist/styles/animation.css +114 -0
  350. package/dist/styles/base.css +7 -6
  351. package/dist/styles/fields.css +45 -63
  352. package/dist/styles/focus.css +12 -0
  353. package/dist/styles/forced-colors.css +11 -10
  354. package/dist/styles/index.css +23 -30
  355. package/dist/styles/map.css +45 -34
  356. package/dist/styles/mentions.css +14 -52
  357. package/dist/styles/overlays.css +7 -7
  358. package/dist/styles/tailwind.css +76 -127
  359. package/dist/styles/targets.css +3 -3
  360. package/dist/styles/theme/colour.css +86 -0
  361. package/dist/styles/theme/density.css +31 -0
  362. package/dist/styles/theme/elevation.css +9 -0
  363. package/dist/styles/theme/layout.css +18 -0
  364. package/dist/styles/theme/motion.css +18 -0
  365. package/dist/styles/theme/shape.css +12 -0
  366. package/dist/styles/theme/size.css +10 -0
  367. package/dist/styles/theme/spacing.css +11 -0
  368. package/dist/styles/theme/typography.css +20 -0
  369. package/dist/styles/tone.css +61 -0
  370. package/dist/table-DT_20ity.js +1262 -0
  371. package/dist/table-Ds_eO9av.js +191 -0
  372. package/dist/tailwind.css +76 -127
  373. package/dist/text-inputs-BboE77nZ.js +395 -0
  374. package/dist/theming-C5ygF5uf.js +292 -0
  375. package/dist/theming.js +2 -2
  376. package/dist/{timeline-BdaGRyj-.js → timeline-BRZbSdhf.js} +57 -49
  377. package/dist/{timelines-BB7550mz.js → timelines-DczZKW5p.js} +69 -67
  378. package/dist/{toaster-bBMgXm8z.js → toaster-CXL8L7Mm.js} +106 -99
  379. package/dist/tokens.json +1027 -636
  380. package/dist/toolbar-DBK-c4yy.js +74 -0
  381. package/dist/tooltip-BPYP-jUm.js +76 -0
  382. package/dist/{typography-BkxEiwQ1.js → typography-DmeR05Er.js} +87 -53
  383. package/dist/{ui-provider-Cmoq6i_D.js → ui-provider-DpzLUD12.js} +117 -69
  384. package/dist/ui-provider.js +1 -1
  385. package/dist/upload-C_6mlbfl.js +968 -0
  386. package/dist/use-async-preview-BFwf9ElY.js +188 -0
  387. package/dist/value-inputs-CnO6RZeT.js +728 -0
  388. package/docs/README.md +2 -2
  389. package/docs/build/recipes.md +10992 -10628
  390. package/docs/generated/component-index.json +11133 -11624
  391. package/docs/generated/components/INDEX.md +5 -5
  392. package/docs/generated/components/base--accordion.md +51 -2
  393. package/docs/generated/components/base--action-menu.md +14 -15
  394. package/docs/generated/components/base--alert-dialog.md +3 -4
  395. package/docs/generated/components/base--aspect-ratio.md +3 -4
  396. package/docs/generated/components/base--avatar.md +7 -7
  397. package/docs/generated/components/base--badge.md +159 -27
  398. package/docs/generated/components/base--batch-action-bar.md +6 -7
  399. package/docs/generated/components/base--buttons.md +151 -47
  400. package/docs/generated/components/base--cards.md +107 -14
  401. package/docs/generated/components/base--carousel.md +1 -2
  402. package/docs/generated/components/base--chart.md +44 -8
  403. package/docs/generated/components/base--choice-inputs.md +10 -11
  404. package/docs/generated/components/base--combobox.md +3 -4
  405. package/docs/generated/components/base--command.md +6 -6
  406. package/docs/generated/components/base--context-menu.md +1 -2
  407. package/docs/generated/components/base--copyable.md +6 -7
  408. package/docs/generated/components/base--date-pickers.md +6 -7
  409. package/docs/generated/components/base--dialog.md +6 -7
  410. package/docs/generated/components/base--direction.md +1 -1
  411. package/docs/generated/components/base--display.md +234 -54
  412. package/docs/generated/components/base--dropdown-menu.md +6 -7
  413. package/docs/generated/components/base--feedback.md +71 -18
  414. package/docs/generated/components/base--forms-numeric.md +6 -7
  415. package/docs/generated/components/base--forms.md +12 -13
  416. package/docs/generated/components/base--hover-card.md +3 -4
  417. package/docs/generated/components/base--input-group.md +27 -30
  418. package/docs/generated/components/base--item.md +8 -9
  419. package/docs/generated/components/base--label.md +2 -3
  420. package/docs/generated/components/base--menubar.md +2 -4
  421. package/docs/generated/components/base--navigation-menu.md +2 -3
  422. package/docs/generated/components/base--navigation.md +2 -3
  423. package/docs/generated/components/base--otp-input.md +3 -4
  424. package/docs/generated/components/base--overlay.md +56 -47
  425. package/docs/generated/components/base--popover-menu.md +7 -8
  426. package/docs/generated/components/base--popover.md +9 -10
  427. package/docs/generated/components/base--qr-code.md +7 -8
  428. package/docs/generated/components/base--repeaters.md +6 -7
  429. package/docs/generated/components/base--resizable.md +2 -3
  430. package/docs/generated/components/base--sheet.md +12 -13
  431. package/docs/generated/components/base--sidebar.md +9 -11
  432. package/docs/generated/components/base--skeleton.md +6 -7
  433. package/docs/generated/components/base--slot.md +1 -1
  434. package/docs/generated/components/base--spinner.md +5 -7
  435. package/docs/generated/components/base--structure.md +264 -65
  436. package/docs/generated/components/base--table.md +61 -3
  437. package/docs/generated/components/base--text-inputs.md +17 -18
  438. package/docs/generated/components/base--timeline.md +45 -4
  439. package/docs/generated/components/base--toaster.md +43 -12
  440. package/docs/generated/components/base--toggle.md +11 -12
  441. package/docs/generated/components/base--toolbar.md +7 -8
  442. package/docs/generated/components/base--tooltip.md +5 -6
  443. package/docs/generated/components/base--typography.md +279 -32
  444. package/docs/generated/components/base--upload.md +8 -9
  445. package/docs/generated/components/base--value-inputs.md +9 -38
  446. package/docs/generated/components/{admin--patterns--access.md → blocks--admin--access.md} +5 -6
  447. package/docs/generated/components/{admin--patterns--commerce.md → blocks--admin--commerce.md} +40 -41
  448. package/docs/generated/components/{patterns--analytics.md → blocks--analytics.md} +13 -14
  449. package/docs/generated/components/{patterns--onboarding.md → blocks--onboarding.md} +6 -7
  450. package/docs/generated/components/{patterns--timelines.md → blocks--timelines.md} +6 -7
  451. package/docs/generated/components/features--actions.md +8 -18
  452. package/docs/generated/components/features--activities.md +31 -32
  453. package/docs/generated/components/features--ai-chat.md +15 -15
  454. package/docs/generated/components/features--async-preview.md +5 -6
  455. package/docs/generated/components/features--combobox.md +4 -5
  456. package/docs/generated/components/features--comments.md +0 -1
  457. package/docs/generated/components/features--data-view.md +4 -5
  458. package/docs/generated/components/features--event-calendar.md +1 -2
  459. package/docs/generated/components/features--filters.md +1 -2
  460. package/docs/generated/components/features--global-search.md +1 -2
  461. package/docs/generated/components/features--kanban.md +1 -2
  462. package/docs/generated/components/features--map.md +1 -2
  463. package/docs/generated/components/features--media-library.md +37 -38
  464. package/docs/generated/components/features--mentions.md +7 -7
  465. package/docs/generated/components/features--overlays.md +21 -22
  466. package/docs/generated/components/features--products.md +10 -11
  467. package/docs/generated/components/features--resource-assignment.md +2 -3
  468. package/docs/generated/components/features--resource.md +3 -4
  469. package/docs/generated/components/features--rich-text-editor.md +4 -13
  470. package/docs/generated/components/features--schema-form.md +1 -2
  471. package/docs/generated/components/features--sync.md +2 -3
  472. package/docs/generated/components/features--table.md +162 -12
  473. package/docs/generated/components/features--theme-tweaker.md +30 -15
  474. package/docs/generated/components/forms.md +2 -2
  475. package/docs/generated/components/layout--app-shell.md +10 -11
  476. package/docs/generated/components/layout--auth.md +8 -9
  477. package/docs/generated/components/layout--containers.md +0 -1
  478. package/docs/generated/components/layout--header.md +2 -3
  479. package/docs/generated/components/layout--navigation.md +0 -1
  480. package/docs/generated/components/layout--page.md +3 -4
  481. package/docs/generated/components/layout--settings.md +0 -1
  482. package/docs/generated/components/layout--sidebar.md +6 -7
  483. package/docs/generated/components/layout--workspace.md +3 -4
  484. package/docs/generated/components/primitives.md +128 -17
  485. package/docs/generated/components/theming.md +147 -4
  486. package/docs/generated/components/ui-provider.md +95 -77
  487. package/docs/generated/imports.md +104 -104
  488. package/docs/generated/migration-broad-imports.json +267 -90
  489. package/docs/generated/migration-broad-imports.md +266 -101
  490. package/docs/generated/migration-codemod.json +365 -70
  491. package/docs/generated/migration.md +665 -95
  492. package/docs/generated/profiles.md +27 -27
  493. package/docs/generated/public-api.md +104 -102
  494. package/docs/generated/recipes.json +585 -810
  495. package/docs/learn/api-compatibility.md +3 -3
  496. package/docs/learn/composition.md +2 -18
  497. package/docs/learn/framework-wiring.md +8 -8
  498. package/docs/learn/installation.md +55 -27
  499. package/docs/learn/migration.md +136 -5
  500. package/docs/learn/provider-and-scoping.md +13 -19
  501. package/docs/learn/theming.md +170 -131
  502. package/docs/learn/troubleshooting.md +62 -27
  503. package/docs/learn/verification.md +2 -3
  504. package/package.json +39 -473
  505. package/scripts/consumer/codemod.mjs +51 -12
  506. package/scripts/consumer/find-component.mjs +2 -4
  507. package/src/styles/TOKENS.md +115 -275
  508. package/dist/accordion-6YPJ9XRO.js +0 -135
  509. package/dist/admin/patterns/access.css +0 -15
  510. package/dist/admin/patterns/commerce.css +0 -29
  511. package/dist/admin/patterns/commerce.js +0 -2493
  512. package/dist/avatar-CS7zow2q.js +0 -85
  513. package/dist/badge-CxOuTfVr.js +0 -63
  514. package/dist/base/accordion.css +0 -3
  515. package/dist/base/action-menu.css +0 -6
  516. package/dist/base/alert-dialog.css +0 -4
  517. package/dist/base/aspect-ratio.css +0 -2
  518. package/dist/base/avatar.css +0 -4
  519. package/dist/base/badge.css +0 -2
  520. package/dist/base/batch-action-bar.css +0 -5
  521. package/dist/base/buttons.css +0 -4
  522. package/dist/base/cards.css +0 -13
  523. package/dist/base/carousel.css +0 -5
  524. package/dist/base/chart.css +0 -2
  525. package/dist/base/choice-inputs.css +0 -10
  526. package/dist/base/combobox.css +0 -3
  527. package/dist/base/command.css +0 -9
  528. package/dist/base/context-menu.css +0 -2
  529. package/dist/base/copyable.css +0 -6
  530. package/dist/base/date-pickers.css +0 -11
  531. package/dist/base/dialog.css +0 -4
  532. package/dist/base/display.css +0 -8
  533. package/dist/base/dropdown-menu.css +0 -2
  534. package/dist/base/feedback.css +0 -5
  535. package/dist/base/forms-numeric.css +0 -12
  536. package/dist/base/forms.css +0 -14
  537. package/dist/base/hover-card.css +0 -2
  538. package/dist/base/input-group.css +0 -6
  539. package/dist/base/item.css +0 -9
  540. package/dist/base/label.css +0 -3
  541. package/dist/base/menubar.css +0 -2
  542. package/dist/base/navigation-menu.css +0 -2
  543. package/dist/base/navigation.css +0 -12
  544. package/dist/base/otp-input.css +0 -9
  545. package/dist/base/overlay.css +0 -4
  546. package/dist/base/popover-menu.css +0 -11
  547. package/dist/base/popover.css +0 -3
  548. package/dist/base/qr-code.css +0 -2
  549. package/dist/base/repeaters.css +0 -18
  550. package/dist/base/resizable.css +0 -2
  551. package/dist/base/sheet.css +0 -4
  552. package/dist/base/sidebar.css +0 -12
  553. package/dist/base/skeleton.css +0 -9
  554. package/dist/base/spinner.css +0 -2
  555. package/dist/base/structure.css +0 -2
  556. package/dist/base/table.css +0 -3
  557. package/dist/base/text-inputs.css +0 -2
  558. package/dist/base/timeline.css +0 -9
  559. package/dist/base/toaster.css +0 -2
  560. package/dist/base/toggle.css +0 -2
  561. package/dist/base/toolbar.css +0 -5
  562. package/dist/base/tooltip.css +0 -2
  563. package/dist/base/typography.css +0 -2
  564. package/dist/base/upload.css +0 -10
  565. package/dist/base/value-inputs.css +0 -14
  566. package/dist/buttons-CqXKWty3.js +0 -179
  567. package/dist/cards-C6Ulbkw7.js +0 -271
  568. package/dist/chart-nomhJ87z.js +0 -193
  569. package/dist/choice-inputs-OUDn0kQw.js +0 -680
  570. package/dist/combobox-C8oP92bT.js +0 -266
  571. package/dist/command-Bp3B6pUu.js +0 -143
  572. package/dist/comments-CAnDlyXO.js +0 -1438
  573. package/dist/components/admin/patterns/index.d.ts +0 -2
  574. package/dist/components/features/rich-text-editor/exec-command-engine.d.ts +0 -2
  575. package/dist/components/patterns/index.d.ts +0 -3
  576. package/dist/css/styles.css +0 -1
  577. package/dist/date-pickers-DOwIT-Nk.js +0 -661
  578. package/dist/display-B3Q17h5z.js +0 -645
  579. package/dist/dropdown-menu-TyNLCLML.js +0 -223
  580. package/dist/features/actions.css +0 -11
  581. package/dist/features/activities.css +0 -25
  582. package/dist/features/ai-chat.css +0 -14
  583. package/dist/features/async-preview.css +0 -10
  584. package/dist/features/combobox.css +0 -12
  585. package/dist/features/comments.css +0 -24
  586. package/dist/features/data-view.css +0 -31
  587. package/dist/features/event-calendar.css +0 -17
  588. package/dist/features/filters.css +0 -24
  589. package/dist/features/global-search.css +0 -19
  590. package/dist/features/kanban.css +0 -7
  591. package/dist/features/map.css +0 -15
  592. package/dist/features/media-library.css +0 -27
  593. package/dist/features/mentions.css +0 -17
  594. package/dist/features/overlays.css +0 -11
  595. package/dist/features/products.css +0 -29
  596. package/dist/features/resource-assignment.css +0 -14
  597. package/dist/features/resource.css +0 -15
  598. package/dist/features/rich-text-editor.css +0 -8
  599. package/dist/features/schema-form.css +0 -22
  600. package/dist/features/sync.css +0 -11
  601. package/dist/features/table.css +0 -20
  602. package/dist/features/theme-tweaker.css +0 -27
  603. package/dist/feedback-DRerHGuV.js +0 -469
  604. package/dist/forms-CPrGGif_.js +0 -242
  605. package/dist/forms-numeric-CPVsL7Vf.js +0 -569
  606. package/dist/index.css +0 -3
  607. package/dist/input-group-BYe0rhoB.js +0 -126
  608. package/dist/item-B3yQ26as.js +0 -146
  609. package/dist/layout/app-shell.css +0 -13
  610. package/dist/layout/auth.css +0 -14
  611. package/dist/layout/containers.css +0 -2
  612. package/dist/layout/header.css +0 -20
  613. package/dist/layout/navigation.css +0 -11
  614. package/dist/layout/page.css +0 -15
  615. package/dist/layout/settings.css +0 -16
  616. package/dist/layout/sidebar.css +0 -16
  617. package/dist/layout/workspace.css +0 -15
  618. package/dist/navigation-CsqTA16F.js +0 -614
  619. package/dist/navigation-DzxzPuwg.js +0 -202
  620. package/dist/overlay-WQOsLd69.js +0 -345
  621. package/dist/patterns/analytics.css +0 -15
  622. package/dist/patterns/onboarding.css +0 -11
  623. package/dist/patterns/timelines.css +0 -11
  624. package/dist/popover-DriLnIFc.js +0 -123
  625. package/dist/popover-menu-C2UCMAe7.js +0 -189
  626. package/dist/primitives.css +0 -3
  627. package/dist/repeaters-DuP1N0nw.js +0 -438
  628. package/dist/rich-text-editor-BQXFe9oN.js +0 -595
  629. package/dist/sidebar-D0N6ckJL.js +0 -412
  630. package/dist/skeleton-DGR9df28.js +0 -172
  631. package/dist/spinner-CUAVFecI.js +0 -52
  632. package/dist/styles/FACTORS.md +0 -36
  633. package/dist/styles/SCOPES.md +0 -86
  634. package/dist/styles/themes/default.css +0 -164
  635. package/dist/styles/theming/animation.css +0 -143
  636. package/dist/styles/theming/colors.css +0 -97
  637. package/dist/styles/theming/feedback.css +0 -17
  638. package/dist/styles/theming/field.css +0 -21
  639. package/dist/styles/theming/focus.css +0 -88
  640. package/dist/styles/theming/layers.css +0 -13
  641. package/dist/styles/theming/layout.css +0 -21
  642. package/dist/styles/theming/motion.css +0 -42
  643. package/dist/styles/theming/overlay.css +0 -52
  644. package/dist/styles/theming/sizing.css +0 -118
  645. package/dist/styles/theming/text.css +0 -30
  646. package/dist/styles/theming/typography.css +0 -26
  647. package/dist/styles/tokens/components.css +0 -22
  648. package/dist/styles/tokens/foundation.css +0 -80
  649. package/dist/styles/tokens/layout.css +0 -19
  650. package/dist/styles/tokens/palette.css +0 -88
  651. package/dist/styles/tokens/primitives.css +0 -18
  652. package/dist/styles/tokens/states.css +0 -77
  653. package/dist/table-BC4qqsUb.js +0 -180
  654. package/dist/table-BHDpjajL.js +0 -982
  655. package/dist/text-inputs-DF_lD7pA.js +0 -385
  656. package/dist/theming-D6KRU7hO.js +0 -104
  657. package/dist/toolbar-DWRywF0R.js +0 -68
  658. package/dist/tooltip-t1VQQ2tZ.js +0 -73
  659. package/dist/upload-B38YZeFJ.js +0 -938
  660. package/dist/value-inputs-Q4ymjXlV.js +0 -716
  661. package/src/styles/FACTORS.md +0 -36
  662. package/src/styles/SCOPES.md +0 -86
  663. /package/dist/components/{admin/patterns → blocks/admin}/access/admin.strings.d.ts +0 -0
  664. /package/dist/components/{admin/patterns → blocks/admin}/access/credential-list.d.ts +0 -0
  665. /package/dist/components/{admin/patterns → blocks/admin}/access/index.d.ts +0 -0
  666. /package/dist/components/{admin/patterns → blocks/admin}/access/role-permissions.d.ts +0 -0
  667. /package/dist/components/{admin/patterns → blocks/admin}/access/sensitive-action.d.ts +0 -0
  668. /package/dist/components/{admin/patterns → blocks/admin}/commerce/account.d.ts +0 -0
  669. /package/dist/components/{admin/patterns → blocks/admin}/commerce/address-lines.d.ts +0 -0
  670. /package/dist/components/{admin/patterns → blocks/admin}/commerce/booking.d.ts +0 -0
  671. /package/dist/components/{admin/patterns → blocks/admin}/commerce/cart.d.ts +0 -0
  672. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.strings.d.ts +0 -0
  673. /package/dist/components/{admin/patterns → blocks/admin}/commerce/commerce.types.d.ts +0 -0
  674. /package/dist/components/{admin/patterns → blocks/admin}/commerce/format-amount.d.ts +0 -0
  675. /package/dist/components/{admin/patterns → blocks/admin}/commerce/index.d.ts +0 -0
  676. /package/dist/components/{admin/patterns → blocks/admin}/commerce/inventory-section.d.ts +0 -0
  677. /package/dist/components/{admin/patterns → blocks/admin}/commerce/invoice.d.ts +0 -0
  678. /package/dist/components/{admin/patterns → blocks/admin}/commerce/loyalty.d.ts +0 -0
  679. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-customer.d.ts +0 -0
  680. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-detail.d.ts +0 -0
  681. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-line-item.d.ts +0 -0
  682. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order-transactions.d.ts +0 -0
  683. /package/dist/components/{admin/patterns → blocks/admin}/commerce/order.d.ts +0 -0
  684. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-listing.d.ts +0 -0
  685. /package/dist/components/{admin/patterns → blocks/admin}/commerce/seo-score.d.ts +0 -0
  686. /package/dist/components/{admin/patterns → blocks/admin}/commerce/summary-panel.d.ts +0 -0
  687. /package/dist/components/{patterns → blocks}/analytics/activity-heatmap.d.ts +0 -0
  688. /package/dist/components/{patterns → blocks}/analytics/analytics.types.d.ts +0 -0
  689. /package/dist/components/{patterns → blocks}/analytics/chart-card.d.ts +0 -0
  690. /package/dist/components/{patterns → blocks}/analytics/format-metric-value.d.ts +0 -0
  691. /package/dist/components/{patterns → blocks}/analytics/index.d.ts +0 -0
  692. /package/dist/components/{patterns → blocks}/analytics/metric-bar.d.ts +0 -0
  693. /package/dist/components/{patterns → blocks}/analytics/metric-comparison.d.ts +0 -0
  694. /package/dist/components/{patterns → blocks}/analytics/metric-gradient.d.ts +0 -0
  695. /package/dist/components/{patterns → blocks}/analytics/metric-grid.d.ts +0 -0
  696. /package/dist/components/{patterns → blocks}/analytics/metric-micro-grid.d.ts +0 -0
  697. /package/dist/components/{patterns → blocks}/analytics/metric-skeleton.d.ts +0 -0
  698. /package/dist/components/{patterns → blocks}/analytics/metric-trend-chip.d.ts +0 -0
  699. /package/dist/components/{patterns → blocks}/analytics/metric.d.ts +0 -0
  700. /package/dist/components/{patterns → blocks}/analytics/time-ruler.d.ts +0 -0
  701. /package/dist/components/{patterns → blocks}/onboarding/checklist.d.ts +0 -0
  702. /package/dist/components/{patterns → blocks}/onboarding/index.d.ts +0 -0
  703. /package/dist/components/{patterns → blocks}/onboarding/onboarding.strings.d.ts +0 -0
  704. /package/dist/components/{patterns → blocks}/timelines/changelog-timeline.d.ts +0 -0
  705. /package/dist/components/{patterns → blocks}/timelines/index.d.ts +0 -0
  706. /package/dist/components/{patterns → blocks}/timelines/milestones-timeline.d.ts +0 -0
  707. /package/dist/components/{patterns → blocks}/timelines/steps.d.ts +0 -0
  708. /package/dist/components/{patterns → blocks}/timelines/timelines.strings.d.ts +0 -0
  709. /package/dist/styles/{theming/breakpoints.css → breakpoints.css} +0 -0
@@ -15,7 +15,6 @@ A region reports its own state — informational alert, empty, loading, error, o
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Alert } from "themelia-ui/base/feedback"
18
- import "themelia-ui/base/feedback.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -113,8 +112,10 @@ The alert's heading. It inherits the alert's ink.
113
112
 
114
113
  Kind: type.
115
114
 
115
+ Semantic colour: the kit's one tone union.
116
+
116
117
  ```text
117
- "neutral" | "primary" | "secondary" | "destructive" | "warning" | "success" | "info"
118
+ SemanticTone
118
119
  ```
119
120
 
120
121
  ### `AlertVariant`
@@ -207,8 +208,8 @@ How the `media` slot is dressed.
207
208
 
208
209
  Kind: type.
209
210
 
210
- Breathing room: `sm` for panels and cells, `lg` for a whole page. Not derived from
211
- provider density, which already reaches these tokens via `--density-scale`.
211
+ Breathing room: `sm` for panels and cells, `default` for a card body or a page. Not
212
+ derived from provider density, which already reaches the paddings through the presets.
212
213
 
213
214
  ```text
214
215
  ComponentScale
@@ -229,7 +230,7 @@ Extends: `Omit<React.ComponentProps<"div">, "title">`.
229
230
  | `description` | no | `React.ReactNode \| false` | Why it is empty, or what will fill it. `false` hides it, for a title that already tells<br>the whole story. |
230
231
  | `action` | no | `React.ReactNode` | Buttons or links offering the next step. An empty state that only explains is a dead<br>end. |
231
232
  | `footer` | no | `React.ReactNode` | Quiet copy under the action — a hint, a learn-more, a shortcut. |
232
- | `padding` | no | `EmptyPadding` | Breathing room, on both axes: `sm` for panels and cells, `lg` for a whole page. The<br>inline padding is what keeps copy off a dashed edge. |
233
+ | `padding` | no | `EmptyPadding` | Breathing room, on both axes: `sm` for panels and cells, `default` for a card body or a<br>page. The inline padding is what keeps copy off a dashed edge. @default "default" |
233
234
  | `border` | no | `boolean` | The dashed outline. Off by default; use it when the empty state stands in for a card's<br>body and the edge says "something goes here". |
234
235
  | `strings` | no | `Partial<EmptyStrings>` | Overrides this state's own copy: `title`, `description`, and `ariaLabel`. The region<br>announces through `role="status"`, so a list that empties out while the reader is on the<br>page says so. |
235
236
 
@@ -336,7 +337,7 @@ attributes are then dropped rather than reporting 0%.
336
337
  Kind: callable.
337
338
 
338
339
  A determinate ring with the reading inside it, for tiles, scores and grids of small
339
- measures. Its size comes from `--progress-circle`; there is no size prop.
340
+ measures. It has one size, big enough for a percentage in the hole; there is no size prop.
340
341
 
341
342
  ```text
342
343
  ({ value, max, tone, label, children, className, style, ...props }: ProgressCircleProps) => React.JSX.Element
@@ -373,8 +374,10 @@ Extends: `Omit<React.ComponentProps<"div">, "children">`.
373
374
 
374
375
  Kind: type.
375
376
 
377
+ The tones a measure takes: the kit's tone union, without neutral and secondary.
378
+
376
379
  ```text
377
- "primary" | "success" | "warning" | "destructive" | "info"
380
+ Extract<SemanticTone, "primary" | "success" | "warning" | "destructive" | "info">
378
381
  ```
379
382
 
380
383
  ### `SearchGlassIllustration`
@@ -458,7 +461,7 @@ export default function AlertLayout() {
458
461
  <AlertTitle>With an action</AlertTitle>
459
462
  <AlertDescription>Inline space is reserved on the trailing edge.</AlertDescription>
460
463
  <AlertAction>
461
- <Button tone="neutral" buttonStyle="ghost">
464
+ <Button tone="neutral" appearance="ghost">
462
465
  Undo
463
466
  </Button>
464
467
  </AlertAction>
@@ -472,6 +475,56 @@ export default function AlertLayout() {
472
475
  }
473
476
  ```
474
477
 
478
+ ### Compose your own checklist
479
+
480
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
481
+ import { CheckIcon, CircleIcon } from "lucide-react"
482
+
483
+ import { Accordion } from "themelia-ui/base/accordion"
484
+ import { Button } from "themelia-ui/base/buttons"
485
+ import { IconBadge } from "themelia-ui/base/display"
486
+ import { Progress } from "themelia-ui/base/feedback"
487
+ import { Stack } from "themelia-ui/base/structure"
488
+ import { Text } from "themelia-ui/base/typography"
489
+
490
+ export default function ChecklistBlueprint() {
491
+ return (
492
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
493
+ <Progress value={1} max={3} label="1 of 3 steps complete" />
494
+ <Accordion
495
+ media="medallion"
496
+ defaultValue={["invite"]}
497
+ items={[
498
+ {
499
+ value: "profile",
500
+ title: "Complete your profile",
501
+ icon: <IconBadge icon={CheckIcon} tone="success" shape="circle" />,
502
+ content: <Text type="secondary">Name, avatar and time zone are set.</Text>,
503
+ },
504
+ {
505
+ value: "invite",
506
+ title: "Invite your team",
507
+ icon: <IconBadge icon={CircleIcon} shape="circle" />,
508
+ content: (
509
+ <Stack gap="sm" align="start">
510
+ <Text type="secondary">Teammates see the same projects and saved views.</Text>
511
+ <Button>Send invites</Button>
512
+ </Stack>
513
+ ),
514
+ },
515
+ {
516
+ value: "connect",
517
+ title: "Connect a data source",
518
+ icon: <IconBadge icon={CircleIcon} shape="circle" />,
519
+ content: <Text type="secondary">Postgres, a CSV upload or the REST API.</Text>,
520
+ },
521
+ ]}
522
+ />
523
+ </Stack>
524
+ )
525
+ }
526
+ ```
527
+
475
528
  ### Empty
476
529
 
477
530
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
@@ -490,7 +543,7 @@ export default function EmptyExample() {
490
543
  action={
491
544
  <>
492
545
  <Button>Create invoice</Button>
493
- <Button tone="neutral" buttonStyle="outline">
546
+ <Button tone="neutral" appearance="outline">
494
547
  Import
495
548
  </Button>
496
549
  </>
@@ -511,7 +564,7 @@ import { Grid } from "themelia-ui/base/structure"
511
564
 
512
565
  export default function EmptyMedia() {
513
566
  return (
514
- <Grid columns={{ base: 1, md: 3 }} gap="xl">
567
+ <Grid columns={{ base: 1, md: 3 }}>
515
568
  <Empty
516
569
  padding="sm"
517
570
  border
@@ -564,9 +617,9 @@ const ILLUSTRATIONS = [
564
617
 
565
618
  export default function EmptyIllustrations() {
566
619
  return (
567
- <Grid columns={{ base: 1, sm: 2, lg: 3 }} gap="2xl">
620
+ <Grid columns={{ base: 1, sm: 2, lg: 3 }}>
568
621
  {ILLUSTRATIONS.map(({ name, Component, use }) => (
569
- <Stack key={name} gap="md" align="center">
622
+ <Stack key={name} gap="sm" align="center">
570
623
  <Component />
571
624
  <Stack gap="none" align="center">
572
625
  <Text size="sm" weight="medium">{name}</Text>
@@ -589,9 +642,9 @@ import { Stack } from "themelia-ui/base/structure"
589
642
 
590
643
  export default function EmptyBorder() {
591
644
  return (
592
- <Stack gap="xl">
645
+ <Stack>
593
646
  <Empty padding="sm" border media={<InboxIcon />} mediaVariant="icon" title="padding=&quot;sm&quot;" description="A side panel, a table cell, a card body." />
594
- <Empty padding="lg" media={<InboxIcon />} mediaVariant="icon" title="padding=&quot;lg&quot;" description="A whole page, with no border." />
647
+ <Empty media={<InboxIcon />} mediaVariant="icon" title="padding=&quot;default&quot;" description="A whole page, with no border." />
595
648
  </Stack>
596
649
  )
597
650
  }
@@ -606,7 +659,7 @@ import { Stack } from "themelia-ui/base/structure"
606
659
 
607
660
  export default function FormStates() {
608
661
  return (
609
- <Stack gap="lg">
662
+ <Stack>
610
663
  <Card>
611
664
  <CardContent>
612
665
  <LoadingState />
@@ -640,7 +693,7 @@ import { Text } from "themelia-ui/base/typography"
640
693
  export default function ProgressExample() {
641
694
  return (
642
695
  // Captioned: `label` is the accessible name and renders nothing.
643
- <Stack gap="lg" style={{ width: "100%" }}>
696
+ <Stack style={{ width: "100%" }}>
644
697
  {[
645
698
  { value: 24, tone: undefined, caption: "value={24}" },
646
699
  { value: 64, tone: "info" as const, caption: 'value={64} tone="info"' },
@@ -648,7 +701,7 @@ export default function ProgressExample() {
648
701
  { value: 92, tone: "warning" as const, caption: 'value={92} tone="warning"' },
649
702
  { value: undefined, tone: undefined, caption: "no value — indeterminate" },
650
703
  ].map((row) => (
651
- <Stack key={row.caption} gap="2xs">
704
+ <Stack key={row.caption} gap="sm">
652
705
  <Text size="xs" type="secondary">{row.caption}</Text>
653
706
  <Progress value={row.value} tone={row.tone} label={row.caption} />
654
707
  </Stack>
@@ -667,7 +720,7 @@ import { Text } from "themelia-ui/base/typography"
667
720
 
668
721
  export default function ProgressCircleExample() {
669
722
  return (
670
- <Stack direction="horizontal" gap="lg" wrap>
723
+ <Stack direction="horizontal" wrap>
671
724
  {[
672
725
  { value: 24, tone: undefined },
673
726
  { value: 60, tone: "info" as const },
@@ -15,12 +15,11 @@ A numeric field carries a unit, currency or precision the input itself must enfo
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { CoordinatesInput } from "themelia-ui/base/forms-numeric"
18
- import "themelia-ui/base/forms-numeric.css"
19
18
  ```
20
19
 
21
20
  ## Composition
22
21
 
23
- This module composes `base/choice-inputs`, `base/text-inputs`.
22
+ This module composes `base/choice-inputs`, `base/text-inputs`, `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.
@@ -456,7 +455,7 @@ export default function Currency() {
456
455
  const [currency, setCurrency] = useState("EUR")
457
456
 
458
457
  return (
459
- <Stack gap="xl" style={{ maxWidth: "26rem", width: "100%" }}>
458
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
460
459
  <FormField label="Invoice total">
461
460
  <CurrencyInput
462
461
  value={amount}
@@ -484,7 +483,7 @@ import { Stack } from "themelia-ui/base/structure"
484
483
 
485
484
  export default function Decimal() {
486
485
  return (
487
- <Stack gap="xl" style={{ maxWidth: "26rem", width: "100%" }}>
486
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
488
487
  <FormField label="Plain" helperText="Commas become dots; extra decimals are refused.">
489
488
  <DecimalInput defaultValue="12.5" decimalPlaces={2} />
490
489
  </FormField>
@@ -516,7 +515,7 @@ export default function RoundingModeExample() {
516
515
  const [mode, setMode] = useState<RoundingMode>("half-even")
517
516
 
518
517
  return (
519
- <Stack gap="xl" style={{ maxWidth: "26rem", width: "100%" }}>
518
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
520
519
  <FormField label="Rounding" helperText="Applies to the field below.">
521
520
  <RoundingModeSelect
522
521
  value={mode}
@@ -542,7 +541,7 @@ import { Stack } from "themelia-ui/base/structure"
542
541
 
543
542
  export default function Percentage() {
544
543
  return (
545
- <Stack gap="xl" style={{ maxWidth: "26rem", width: "100%" }}>
544
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
546
545
  <FormField label="VAT rate">
547
546
  <PercentageInput defaultValue="21" />
548
547
  </FormField>
@@ -576,7 +575,7 @@ export default function Units() {
576
575
  const [coordinates, setCoordinates] = useState<CoordinatesValue>({ latitude: "52.370216", longitude: "4.895168" })
577
576
 
578
577
  return (
579
- <Stack gap="xl" style={{ maxWidth: "34rem", width: "100%" }}>
578
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
580
579
  <FormField label="Shipping weight">
581
580
  <WeightInput
582
581
  value={weight}
@@ -15,7 +15,6 @@ Assembling a form's visible structure — label, control, support text, sections
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { DirtyStateBanner } from "themelia-ui/base/forms"
18
- import "themelia-ui/base/forms.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -304,7 +303,7 @@ import { Input } from "themelia-ui/base/text-inputs"
304
303
 
305
304
  export default function FormFieldExample() {
306
305
  return (
307
- <Stack gap="xl" style={{ maxWidth: "26rem", width: "100%" }}>
306
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
308
307
  <FormField label="Email" required hint="We only use this for receipts.">
309
308
  <Input type="email" placeholder="you@example.com" />
310
309
  </FormField>
@@ -354,7 +353,7 @@ import { Input } from "themelia-ui/base/text-inputs"
354
353
 
355
354
  export default function HorizontalFields() {
356
355
  return (
357
- <Stack gap="lg" style={{ width: "100%" }}>
356
+ <Stack style={{ width: "100%" }}>
358
357
  <FormField orientation="horizontal" label="Display name" hint="Shown on invoices.">
359
358
  <Input defaultValue="Acme Corporation" />
360
359
  </FormField>
@@ -378,7 +377,7 @@ export default function FieldGroupExample() {
378
377
  return (
379
378
  <div style={{ maxWidth: "34rem", width: "100%" }}>
380
379
  <FieldGroup legend="Reporting period" description="Both ends are inclusive.">
381
- <Stack direction="horizontal" gap="md">
380
+ <Stack direction="horizontal" gap="sm">
382
381
  <FormField label="From">
383
382
  <Input type="date" defaultValue="2026-03-01" />
384
383
  </FormField>
@@ -403,12 +402,12 @@ import { Text } from "themelia-ui/base/typography"
403
402
 
404
403
  export default function FormSectionExample() {
405
404
  return (
406
- <Stack gap="xl" style={{ maxWidth: "34rem" }}>
405
+ <Stack style={{ maxWidth: "34rem" }}>
407
406
  <FormSection
408
407
  title="Billing"
409
408
  description="Where invoices go. Changing it does not change the shipping address."
410
409
  actions={
411
- <Button tone="neutral" buttonStyle="ghost">
410
+ <Button tone="neutral" appearance="ghost">
412
411
  Edit
413
412
  </Button>
414
413
  }
@@ -446,7 +445,7 @@ export default function FormActions() {
446
445
  </Text>
447
446
  }
448
447
  >
449
- <Button tone="neutral" buttonStyle="outline">
448
+ <Button tone="neutral" appearance="outline">
450
449
  Discard
451
450
  </Button>
452
451
  <Button>Save</Button>
@@ -466,7 +465,7 @@ import { Stack } from "themelia-ui/base/structure"
466
465
 
467
466
  export default function FormErrorSummary() {
468
467
  return (
469
- <Stack style={{ maxWidth: "34rem" }}>
468
+ <Stack gap="sm" style={{ maxWidth: "34rem" }}>
470
469
  <ErrorSummary
471
470
  errors={[
472
471
  "Name is required.",
@@ -474,7 +473,7 @@ export default function FormErrorSummary() {
474
473
  "VAT number does not match the selected country.",
475
474
  ]}
476
475
  action={
477
- <Button tone="neutral" buttonStyle="outline">
476
+ <Button tone="neutral" appearance="outline">
478
477
  Review the first problem
479
478
  </Button>
480
479
  }
@@ -493,14 +492,14 @@ import { Stack } from "themelia-ui/base/structure"
493
492
 
494
493
  export default function FormDirty() {
495
494
  return (
496
- <Stack gap="lg" style={{ maxWidth: "34rem" }}>
495
+ <Stack style={{ maxWidth: "34rem" }}>
497
496
  {(["neutral", "info", "warning"] as const).map((tone) => (
498
497
  <DirtyStateBanner
499
498
  key={tone}
500
499
  tone={tone}
501
500
  actions={
502
501
  <>
503
- <Button tone="neutral" buttonStyle="outline">
502
+ <Button tone="neutral" appearance="outline">
504
503
  Discard
505
504
  </Button>
506
505
  <Button>Save</Button>
@@ -526,13 +525,13 @@ export default function FormSubmitState() {
526
525
  const [state, setState] = useState<SubmitState>("idle")
527
526
 
528
527
  return (
529
- <Stack direction="horizontal" gap="lg" wrap align="center">
528
+ <Stack direction="horizontal" wrap align="center">
530
529
  {(["idle", "submitting", "succeeded"] as SubmitState[]).map((s) => (
531
530
  <SubmitStateButton key={s} state={s} />
532
531
  ))}
533
532
  <Button
534
533
  tone="neutral"
535
- buttonStyle="outline"
534
+ appearance="outline"
536
535
  onClick={() => {
537
536
  setState("submitting")
538
537
  setTimeout(() => setState("succeeded"), 1200)
@@ -15,12 +15,11 @@ Hovering a reference reveals a preview the reader does not have to act on.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { HoverCard } from "themelia-ui/base/hover-card"
18
- import "themelia-ui/base/hover-card.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.
@@ -111,11 +110,11 @@ export default function HoverCardExample() {
111
110
  @jane
112
111
  </HoverCardTrigger>
113
112
  <HoverCardContent>
114
- <Stack direction="horizontal" gap="md" align="start">
113
+ <Stack direction="horizontal" gap="sm" align="start">
115
114
  <Avatar>
116
115
  <AvatarFallback>JM</AvatarFallback>
117
116
  </Avatar>
118
- <Stack gap="2xs">
117
+ <Stack gap="sm">
119
118
  <Text weight="medium">Jane McDonald</Text>
120
119
  <Text size="xs" type="secondary">Billing · joined March 2024</Text>
121
120
  </Stack>
@@ -15,7 +15,6 @@ A control needs an affix inside its border — an icon, unit, prefix button or c
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { InputGroup } from "themelia-ui/base/input-group"
18
- import "themelia-ui/base/input-group.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -66,18 +65,20 @@ Kind: callable.
66
65
  A quiet Button sized to sit inside the field rather than beside it.
67
66
 
68
67
  ```text
69
- ({ className, type, tone, buttonStyle, size, ...props }: InputGroupButtonProps) => React.JSX.Element
68
+ ({ className, type, tone, appearance, iconOnly, ...props }: InputGroupButtonProps) => React.JSX.Element
70
69
  ```
71
70
 
72
71
  ### `InputGroupButtonProps`
73
72
 
74
73
  Kind: interface.
75
74
 
76
- Extends: `Omit<React.ComponentProps<typeof Button>, "size" | "type">`.
75
+ One size, inset inside the field: a full-height Button would set the field's height rather
76
+ than fit in it. `iconOnly` makes it square.
77
+
78
+ Extends: `Omit<React.ComponentProps<typeof Button>, "type">`.
77
79
 
78
80
  | member | required | type | description / documented default |
79
81
  | --- | :-: | --- | --- |
80
- | `size` | no | `"xs" \| "sm" \| "icon-xs" \| "icon-sm"` | The sizes that fit inside a field: two text sizes and their icon-only twins. A<br>full-height Button would set the field's height rather than fit in it, which is why<br>this is the one place the kit keeps a size prop on a control. |
81
82
  | `type` | no | `"button" \| "submit" \| "reset"` | The native button type: `button` unless set, so pressing it never submits the form around the field. |
82
83
 
83
84
  ### `InputGroupInput`
@@ -111,8 +112,8 @@ React.ComponentProps<"div">
111
112
 
112
113
  Kind: callable.
113
114
 
114
- Secondary text at the group's own size — a unit, a domain suffix, a counter. It inherits
115
- the size, so it cannot drift from the input beside it.
115
+ Secondary text at the field's size — a unit, a domain suffix, a counter. Text's `sm`, the
116
+ step every field control's value uses, so it cannot drift from the input beside it.
116
117
 
117
118
  ```text
118
119
  ({ className, ...props }: React.ComponentProps<"span">) => React.JSX.Element
@@ -161,7 +162,7 @@ import { Stack } from "themelia-ui/base/structure"
161
162
 
162
163
  export default function InputGroupInline() {
163
164
  return (
164
- <Stack gap="lg" style={{ maxWidth: "26rem" }}>
165
+ <Stack style={{ maxWidth: "26rem" }}>
165
166
  <InputGroup>
166
167
  <InputGroupAddon>
167
168
  <SearchIcon aria-hidden="true" />
@@ -182,7 +183,7 @@ export default function InputGroupInline() {
182
183
  <InputGroup>
183
184
  <InputGroupInput placeholder="Add a label" aria-label="Label" />
184
185
  <InputGroupAddon align="inline-end">
185
- <InputGroupButton size="icon-xs" aria-label="Add">
186
+ <InputGroupButton iconOnly aria-label="Add">
186
187
  <ArrowRightIcon aria-hidden="true" />
187
188
  </InputGroupButton>
188
189
  </InputGroupAddon>
@@ -204,10 +205,10 @@ import { Stack } from "themelia-ui/base/structure"
204
205
 
205
206
  export default function InputGroupBlock() {
206
207
  return (
207
- <Stack gap="lg" style={{ maxWidth: "26rem" }}>
208
+ <Stack style={{ maxWidth: "26rem" }}>
208
209
  <InputGroup>
209
210
  <InputGroupAddon align="block-start">
210
- <InputGroupButton size="icon-xs" aria-label="Favourite">
211
+ <InputGroupButton iconOnly aria-label="Favourite">
211
212
  <StarIcon aria-hidden="true" />
212
213
  </InputGroupButton>
213
214
  <InputGroupText>Internal note</InputGroupText>
@@ -222,7 +223,7 @@ export default function InputGroupBlock() {
222
223
  }
223
224
  ```
224
225
 
225
- ### Button sizes inside the shell
226
+ ### A button inside the shell
226
227
 
227
228
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
228
229
  import { ArrowRightIcon } from "lucide-react"
@@ -234,25 +235,21 @@ import { Stack } from "themelia-ui/base/structure"
234
235
 
235
236
  export default function InputGroupButtons() {
236
237
  return (
237
- <Stack gap="lg" style={{ maxWidth: "26rem" }}>
238
- {(["xs", "sm"] as const).map((size) => (
239
- <InputGroup key={size}>
240
- <InputGroupInput placeholder={`size="${size}"`} aria-label={size} />
241
- <InputGroupAddon align="inline-end">
242
- <InputGroupButton size={size}>Apply</InputGroupButton>
243
- </InputGroupAddon>
244
- </InputGroup>
245
- ))}
246
- {(["icon-xs", "icon-sm"] as const).map((size) => (
247
- <InputGroup key={size}>
248
- <InputGroupInput placeholder={`size="${size}"`} aria-label={size} />
249
- <InputGroupAddon align="inline-end">
250
- <InputGroupButton size={size} aria-label="Go">
251
- <ArrowRightIcon aria-hidden="true" />
252
- </InputGroupButton>
253
- </InputGroupAddon>
254
- </InputGroup>
255
- ))}
238
+ <Stack style={{ maxWidth: "26rem" }}>
239
+ <InputGroup>
240
+ <InputGroupInput placeholder="A labelled button" aria-label="Coupon code" />
241
+ <InputGroupAddon align="inline-end">
242
+ <InputGroupButton>Apply</InputGroupButton>
243
+ </InputGroupAddon>
244
+ </InputGroup>
245
+ <InputGroup>
246
+ <InputGroupInput placeholder="An icon-only button" aria-label="Search" />
247
+ <InputGroupAddon align="inline-end">
248
+ <InputGroupButton iconOnly aria-label="Go">
249
+ <ArrowRightIcon aria-hidden="true" />
250
+ </InputGroupButton>
251
+ </InputGroupAddon>
252
+ </InputGroup>
256
253
  </Stack>
257
254
  )
258
255
  }
@@ -15,7 +15,6 @@ A row carries identity — media, title, description and trailing actions — in
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Item } from "themelia-ui/base/item"
18
- import "themelia-ui/base/item.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -31,8 +30,8 @@ outside the package and arrives through the public props, callbacks, slots, or a
31
30
 
32
31
  Kind: callable.
33
32
 
34
- A row — a list row, a menu row, a table row. No size prop: row height follows
35
- `--density-scale`, so use a denser scope for a denser list.
33
+ A row — a list row, a menu row, a table row. No size prop: row height follows the
34
+ density, so use a denser scope for a denser list.
36
35
 
37
36
  **Use when:** An identity row with a title, description, media and actions.
38
37
 
@@ -205,14 +204,14 @@ export default function ItemExample() {
205
204
  import { Card } from "themelia-ui/base/cards"
206
205
  import { Item, ItemContent, ItemDescription, ItemGroup, ItemTitle } from "themelia-ui/base/item"
207
206
  import { Stack } from "themelia-ui/base/structure"
208
- import { Scope } from "themelia-ui/ui-provider"
207
+ import { UIScope } from "themelia-ui/ui-provider"
209
208
 
210
209
  export default function CardsScale() {
211
210
  return (
212
- <Stack gap="lg" style={{ width: "100%" }}>
213
- {[1, 0.85].map((scale) => (
214
- <Scope key={scale} vars={{ "--density-scale": scale }}>
215
- <Card surface="bordered" title={`--density-scale ${scale}`}>
211
+ <Stack style={{ width: "100%" }}>
212
+ {(["default", "compact"] as const).map((density) => (
213
+ <UIScope key={density} config={{ density }}>
214
+ <Card surface="bordered" title={`density="${density}"`}>
216
215
  <ItemGroup>
217
216
  <Item surface="bordered">
218
217
  <ItemContent>
@@ -228,7 +227,7 @@ export default function CardsScale() {
228
227
  </Item>
229
228
  </ItemGroup>
230
229
  </Card>
231
- </Scope>
230
+ </UIScope>
232
231
  ))}
233
232
  </Stack>
234
233
  )
@@ -15,7 +15,6 @@ Naming a form control so the label and control are associated.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Label } from "themelia-ui/base/label"
18
- import "themelia-ui/base/label.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -53,8 +52,8 @@ import { Input } from "themelia-ui/base/text-inputs"
53
52
 
54
53
  export default function LabelExample() {
55
54
  return (
56
- <Stack gap="lg" style={{ maxWidth: "26rem", width: "100%" }}>
57
- <Stack gap="xs">
55
+ <Stack style={{ maxWidth: "26rem", width: "100%" }}>
56
+ <Stack gap="sm">
58
57
  <Label htmlFor="demo-email">Email</Label>
59
58
  <Input id="demo-email" placeholder="name@example.com" />
60
59
  </Stack>
@@ -15,16 +15,14 @@ An application-style menu bar sits persistently across the top of a workspace.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Menubar } from "themelia-ui/base/menubar"
18
- import "themelia-ui/base/menubar.css"
19
18
  import { DropdownMenu } from "themelia-ui/base/dropdown-menu"
20
- import "themelia-ui/base/dropdown-menu.css"
21
19
  ```
22
20
 
23
21
  ## Composition
24
22
 
25
- This module depends on no other module.
23
+ This module composes `base/typography`.
26
24
 
27
- It is used together with `base/dropdown-menu`: import that module and its stylesheet too.
25
+ It is used together with `base/dropdown-menu`: import that module too.
28
26
 
29
27
  Application policy—routing, fetching, persistence, permissions, and translation—stays
30
28
  outside the package and arrives through the public props, callbacks, slots, or accessors below.
@@ -15,12 +15,11 @@ Site navigation needs grouped panels of links under top-level triggers.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { NavigationMenu } from "themelia-ui/base/navigation-menu"
18
- import "themelia-ui/base/navigation-menu.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.
@@ -141,7 +140,7 @@ import { Stack } from "themelia-ui/base/structure"
141
140
 
142
141
  export default function NavigationMenuExample() {
143
142
  return (
144
- <Stack direction="horizontal">
143
+ <Stack gap="sm" direction="horizontal">
145
144
  <NavigationMenu aria-label="Documentation">
146
145
  <NavigationMenuList>
147
146
  <NavigationMenuItem>
@@ -15,7 +15,6 @@ Moving between sibling views or pages — tabs, breadcrumbs, pagination, page he
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Breadcrumbs } from "themelia-ui/base/navigation"
18
- import "themelia-ui/base/navigation.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -521,7 +520,7 @@ export default function PageHeadingExample() {
521
520
  description="Everything issued in this workspace, newest first."
522
521
  actions={
523
522
  <>
524
- <Button tone="neutral" buttonStyle="outline">Export</Button>
523
+ <Button tone="neutral" appearance="outline">Export</Button>
525
524
  <Button>New invoice</Button>
526
525
  </>
527
526
  }
@@ -733,7 +732,7 @@ export default function TabsScroll() {
733
732
  return (
734
733
  <>
735
734
  <Switch checked={edgeFade} onChange={event => setEdgeFade(event.target.checked)} label="Fade overflowing edges" />
736
- <Stack maxWidth="22rem">
735
+ <Stack gap="sm" maxWidth="22rem">
737
736
  <Tabs defaultValue="overview">
738
737
  <TabList label="Scrollable sections" variant="enclosed" edgeFade={edgeFade}>
739
738
  {["Overview", "Activity", "Settings", "Billing", "Members", "Integrations", "Audit log"].map(label => <Tab key={label} value={label.toLowerCase()}>{label}</Tab>)}