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
@@ -15,7 +15,6 @@ Any activation control — including one that carries a loading state, a tooltip
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Button } from "themelia-ui/base/buttons"
18
- import "themelia-ui/base/buttons.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -31,11 +30,21 @@ outside the package and arrives through the public props, callbacks, slots, or a
31
30
 
32
31
  Kind: callable.
33
32
 
34
- The kit's action primitive. No `size` prop by design: geometry follows the scale factors,
35
- so a denser region is a scope (styles/FACTORS.md).
33
+ The kit's action primitive. No `size` prop by design: geometry follows the provider's density
34
+ and scale, so a denser region is a scope.
36
35
 
37
36
  ```text
38
- ({ tone, buttonStyle, iconOnly, fullWidth, loading, render, className, disabled, children, onClick, ...props }: ButtonProps) => React.JSX.Element
37
+ ({ tone, appearance, iconOnly, fullWidth, loading, render, className, disabled, children, onClick, ...props }: ButtonProps) => React.JSX.Element
38
+ ```
39
+
40
+ ### `ButtonAppearance`
41
+
42
+ Kind: type.
43
+
44
+ Fill treatment. Structural, independent of the tone's colour.
45
+
46
+ ```text
47
+ "solid" | "outline" | "ghost"
39
48
  ```
40
49
 
41
50
  ### `ButtonGroup`
@@ -115,23 +124,13 @@ Extends: `Omit<React.ComponentProps<"button">, "children">`.
115
124
  | member | required | type | description / documented default |
116
125
  | --- | :-: | --- | --- |
117
126
  | `tone` | no | `ButtonTone` | Semantic colour intent. Resolves through the provider when omitted, so `UIProvider`<br>defaults can change it. @default "primary" |
118
- | `buttonStyle` | no | `ButtonStyle` | Fill treatment, independent of `tone`. `UIProvider` defaults can change it. @default "solid" |
127
+ | `appearance` | no | `ButtonAppearance` | Fill treatment, independent of `tone`. `UIProvider` defaults can change it. @default "solid" |
119
128
  | `iconOnly` | no | `boolean` | Square button sized to its height. The label becomes the accessible name. |
120
129
  | `fullWidth` | no | `boolean` | Stretches the button to its container's width. |
121
130
  | `loading` | no | `boolean` | Shows a spinner and blocks interaction. The label keeps its space so the button does<br>not resize mid-action. |
122
131
  | `render` | no | `React.ReactElement` | The element this button becomes — an anchor, a router link, a label. `children` stay<br>the content and keep the button's label wrapper, so a link still sizes like a button.<br>`render` is how every kit component changes its element, the contract Base UI's parts<br>already take.<br><br> <Button render={<a href="/settings" />}>Settings</Button> |
123
132
  | `children` | no | `React.ReactNode` | |
124
133
 
125
- ### `ButtonStyle`
126
-
127
- Kind: type.
128
-
129
- Fill treatment. Structural, independent of the tone's colour.
130
-
131
- ```text
132
- "solid" | "outline" | "ghost"
133
- ```
134
-
135
134
  ### `ButtonTone`
136
135
 
137
136
  Kind: type.
@@ -182,7 +181,7 @@ React.ForwardRefExoticComponent<Omit<TextButtonProps, "ref"> & React.RefAttribut
182
181
  Kind: type.
183
182
 
184
183
  ```text
185
- Omit<ButtonProps, "tone" | "buttonStyle" | "iconOnly" | "fullWidth"> & { tone?: ButtonTone; }
184
+ Omit<ButtonProps, "tone" | "appearance" | "iconOnly" | "fullWidth"> & { tone?: ButtonTone; }
186
185
  ```
187
186
 
188
187
  ### `TooltipButton`
@@ -206,26 +205,108 @@ Extends: `ButtonProps`.
206
205
 
207
206
  ## Preview recipes
208
207
 
209
- Preview route: Button — `/button`
208
+ Preview route: Timelines, onboarding & admin — `/blocks-admin`
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
+ ```
259
+
260
+ ### Compose your own
261
+
262
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
263
+ import { Button } from "themelia-ui/base/buttons"
264
+ import { Card } from "themelia-ui/base/cards"
265
+ import { MetadataList } from "themelia-ui/base/display"
266
+ import { Stack } from "themelia-ui/base/structure"
267
+ import { toast } from "themelia-ui/base/toaster"
268
+ import { Money } from "themelia-ui/primitives"
269
+
270
+ export default function CartSummaryBlueprint() {
271
+ return (
272
+ <Card title="Order summary" description="3 items" style={{ maxWidth: "24rem" }}>
273
+ <Stack>
274
+ <MetadataList
275
+ layout="rows"
276
+ items={[
277
+ { label: "Subtotal", value: <Money amount={258} currency="EUR" /> },
278
+ { label: "Shipping", value: <Money amount={4.8} currency="EUR" /> },
279
+ { label: "Tax", value: <Money amount={51.6} currency="EUR" /> },
280
+ { label: "Total", value: <Money amount={314.4} currency="EUR" weight="semibold" /> },
281
+ ]}
282
+ />
283
+ <Button onClick={() => toast("Checkout requested", { description: "Preview callback — connect this action to your application." })}>
284
+ Check out
285
+ </Button>
286
+ </Stack>
287
+ </Card>
288
+ )
289
+ }
290
+ ```
210
291
 
211
292
  ### Tone × style
212
293
 
213
294
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
214
- import { Button, type ButtonStyle, type ButtonTone } from "themelia-ui/base/buttons"
295
+ import { Button, type ButtonAppearance, type ButtonTone } from "themelia-ui/base/buttons"
215
296
 
216
297
  const TONES: ButtonTone[] = [
217
298
  "neutral", "primary", "secondary", "info", "success", "warning", "destructive",
218
299
  ]
219
300
 
220
- const STYLES: ButtonStyle[] = ["solid", "outline", "ghost"]
301
+ const STYLES: ButtonAppearance[] = ["solid", "outline", "ghost"]
221
302
 
222
303
  export default function ToneStyle() {
223
304
  return (
224
305
  <>
225
- {STYLES.map((buttonStyle) => (
226
- <div key={buttonStyle} style={{ display: "flex", gap: ".5rem", flexWrap: "wrap" }}>
306
+ {STYLES.map((appearance) => (
307
+ <div key={appearance} style={{ display: "flex", gap: ".5rem", flexWrap: "wrap" }}>
227
308
  {TONES.map((tone) => (
228
- <Button key={tone} tone={tone} buttonStyle={buttonStyle}>
309
+ <Button key={tone} tone={tone} appearance={appearance}>
229
310
  {tone}
230
311
  </Button>
231
312
  ))}
@@ -260,7 +341,7 @@ export default function Scale() {
260
341
  scale {scale}
261
342
  </MonoValue>
262
343
  <Button>Save</Button>
263
- <Button tone="neutral" buttonStyle="outline">Cancel</Button>
344
+ <Button tone="neutral" appearance="outline">Cancel</Button>
264
345
  <Button iconOnly aria-label="Add"><PlusIcon /></Button>
265
346
  <Checkbox label="Also this" defaultChecked />
266
347
  </div>
@@ -279,11 +360,11 @@ import { Stack } from "themelia-ui/base/structure"
279
360
 
280
361
  export default function State() {
281
362
  return (
282
- <Stack direction="horizontal" gap="lg" wrap align="center">
363
+ <Stack direction="horizontal" wrap align="center">
283
364
  <Button>Save changes</Button>
284
365
  <Button loading>Save changes</Button>
285
366
  <Button disabled>Disabled</Button>
286
- <Button tone="neutral" buttonStyle="outline" loading>
367
+ <Button tone="neutral" appearance="outline" loading>
287
368
  Loading
288
369
  </Button>
289
370
  </Stack>
@@ -301,10 +382,10 @@ import { Stack } from "themelia-ui/base/structure"
301
382
 
302
383
  export default function IconOnly() {
303
384
  return (
304
- <Stack direction="horizontal" gap="lg" wrap align="center">
385
+ <Stack direction="horizontal" wrap align="center">
305
386
  <Button iconOnly aria-label="Add"><PlusIcon /></Button>
306
- <Button tone="neutral" buttonStyle="outline" iconOnly aria-label="Edit">✎</Button>
307
- <Button tone="destructive" buttonStyle="ghost" iconOnly aria-label="Delete">🗑</Button>
387
+ <Button tone="neutral" appearance="outline" iconOnly aria-label="Edit">✎</Button>
388
+ <Button tone="destructive" appearance="ghost" iconOnly aria-label="Delete">🗑</Button>
308
389
  </Stack>
309
390
  )
310
391
  }
@@ -318,15 +399,15 @@ import { Stack } from "themelia-ui/base/structure"
318
399
 
319
400
  export default function Group() {
320
401
  return (
321
- <Stack direction="horizontal" gap="lg" wrap align="center">
402
+ <Stack direction="horizontal" wrap align="center">
322
403
  <ButtonGroup>
323
- <Button tone="neutral" buttonStyle="outline">Day</Button>
324
- <Button tone="neutral" buttonStyle="outline">Week</Button>
325
- <Button tone="neutral" buttonStyle="outline">Month</Button>
404
+ <Button tone="neutral" appearance="outline">Day</Button>
405
+ <Button tone="neutral" appearance="outline">Week</Button>
406
+ <Button tone="neutral" appearance="outline">Month</Button>
326
407
  </ButtonGroup>
327
408
  <ButtonGroup orientation="vertical">
328
- <Button tone="neutral" buttonStyle="outline">Top</Button>
329
- <Button tone="neutral" buttonStyle="outline">Bottom</Button>
409
+ <Button tone="neutral" appearance="outline">Top</Button>
410
+ <Button tone="neutral" appearance="outline">Bottom</Button>
330
411
  </ButtonGroup>
331
412
  </Stack>
332
413
  )
@@ -342,18 +423,18 @@ import { Text } from "themelia-ui/base/typography"
342
423
 
343
424
  export default function ButtonVariants() {
344
425
  return (
345
- <Stack direction="horizontal" gap="xl" wrap align="center">
426
+ <Stack direction="horizontal" wrap align="center">
346
427
  <Text size="xs" type="secondary">
347
428
  Changed your mind? <TextButton>Undo the import</TextButton>
348
429
  </Text>
349
430
  <LoaderButton
350
431
  tone="neutral"
351
- buttonStyle="outline"
432
+ appearance="outline"
352
433
  onClick={() => new Promise((resolve) => setTimeout(resolve, 1200))}
353
434
  >
354
435
  Save and wait
355
436
  </LoaderButton>
356
- <TooltipButton tooltip="Archive this order" tone="neutral" buttonStyle="outline">
437
+ <TooltipButton tooltip="Archive this order" tone="neutral" appearance="outline">
357
438
  Archive
358
439
  </TooltipButton>
359
440
  </Stack>
@@ -371,25 +452,25 @@ import { Stack } from "themelia-ui/base/structure"
371
452
 
372
453
  export default function ButtonGroupParts() {
373
454
  return (
374
- <Stack direction="horizontal" gap="xl" wrap align="center">
455
+ <Stack direction="horizontal" wrap align="center">
375
456
  <ButtonGroup>
376
- <Button tone="neutral" buttonStyle="outline">Day</Button>
457
+ <Button tone="neutral" appearance="outline">Day</Button>
377
458
  <ButtonGroupSeparator />
378
- <Button tone="neutral" buttonStyle="outline">Week</Button>
459
+ <Button tone="neutral" appearance="outline">Week</Button>
379
460
  <ButtonGroupSeparator />
380
- <Button tone="neutral" buttonStyle="outline">Month</Button>
461
+ <Button tone="neutral" appearance="outline">Month</Button>
381
462
  </ButtonGroup>
382
463
  <ButtonGroup>
383
464
  <ButtonGroupText>Show</ButtonGroupText>
384
- <Button tone="neutral" buttonStyle="outline">All</Button>
385
- <Button tone="neutral" buttonStyle="outline">Open</Button>
465
+ <Button tone="neutral" appearance="outline">All</Button>
466
+ <Button tone="neutral" appearance="outline">Open</Button>
386
467
  </ButtonGroup>
387
468
  </Stack>
388
469
  )
389
470
  }
390
471
  ```
391
472
 
392
- ### Type can override the master factor
473
+ ### Type has its own factor
393
474
 
394
475
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
395
476
  import { Button } from "themelia-ui/base/buttons"
@@ -400,11 +481,11 @@ import { UIProvider } from "themelia-ui/ui-provider"
400
481
 
401
482
  export default function TypeFactor() {
402
483
  return (
403
- <Stack gap="lg">
484
+ <Stack>
404
485
  <Stack gap="sm">
405
486
  <Text type="secondary" size="xs">typography.scale 0.875 — type shrinks, control geometry holds</Text>
406
487
  <UIProvider config={{ typography: { scale: 0.875 } }}>
407
- <Stack direction="horizontal" gap="md" align="center" wrap>
488
+ <Stack direction="horizontal" gap="sm" align="center" wrap>
408
489
  <Text>Body copy at this factor.</Text>
409
490
  <Button>Save</Button>
410
491
  <Checkbox label="Check" defaultChecked />
@@ -414,7 +495,7 @@ export default function TypeFactor() {
414
495
  <Stack gap="sm">
415
496
  <Text type="secondary" size="xs">scale 0.875 + typography.scale 1 — geometry shrinks, type holds</Text>
416
497
  <UIProvider config={{ scale: 0.875, typography: { scale: 1 } }}>
417
- <Stack direction="horizontal" gap="md" align="center" wrap>
498
+ <Stack direction="horizontal" gap="sm" align="center" wrap>
418
499
  <Text>Body copy at this factor.</Text>
419
500
  <Button>Save</Button>
420
501
  <Checkbox label="Check" defaultChecked />
@@ -426,6 +507,29 @@ export default function TypeFactor() {
426
507
  }
427
508
  ```
428
509
 
510
+ ### Colour islands
511
+
512
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
513
+ import { Button } from "themelia-ui/base/buttons"
514
+ import { Card } from "themelia-ui/base/cards"
515
+ import { Grid } from "themelia-ui/base/structure"
516
+ import { UIProvider } from "themelia-ui/ui-provider"
517
+
518
+ export default function ColourIsland() {
519
+ return (
520
+ <Grid columns={{ base: 1, sm: 2 }}>
521
+ {(["light", "dark"] as const).map((colorScheme) => (
522
+ <UIProvider key={colorScheme} config={{ colorScheme }}>
523
+ <Card title={`A ${colorScheme} region`} description="Every colour inside resolves to this half.">
524
+ <Button>Continue</Button>
525
+ </Card>
526
+ </UIProvider>
527
+ ))}
528
+ </Grid>
529
+ )
530
+ }
531
+ ```
532
+
429
533
  ### Scoped theming
430
534
 
431
535
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
@@ -15,7 +15,6 @@ A surface needs visible chrome — border, padding, header and footer regions.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Card } from "themelia-ui/base/cards"
18
- import "themelia-ui/base/cards.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -46,7 +45,7 @@ composing.
46
45
  **Alternatives:** ContentBlock, Overlay.
47
46
 
48
47
  ```text
49
- ({ icon, title, titleSuffix, tooltip, description, surface, titleLevel, media, headerStart, headerEnd, headerAction, actions, alert, alertTone, contentTop, contentBottom, footerText, footerSlot, headerDivider, footerDivider, expandable, expanded, defaultExpanded, onExpandedChange, strings, className, children, ...props }: CardProps) => React.JSX.Element
48
+ ({ icon, title, titleSuffix, tooltip, description, surface, titleLevel, titleSize, media, headerStart, headerEnd, headerAction, actions, alert, alertTone, contentTop, contentBottom, footerText, footerSlot, headerDivider, footerDivider, expandable, expanded, defaultExpanded, onExpandedChange, strings, className, children, ...props }: CardProps) => React.JSX.Element
50
49
  ```
51
50
 
52
51
  ### `CardAction`
@@ -76,7 +75,7 @@ Extends: `Omit<ComponentProps<"div">, "children">`.
76
75
 
77
76
  | member | required | type | description / documented default |
78
77
  | --- | :-: | --- | --- |
79
- | `actions` | yes | `ActionDefinition[]` | The commands, as the overflow menu takes them. The first is the primary action; the rest<br>follow in outline unless an entry sets its own `buttonStyle`. |
78
+ | `actions` | yes | `ActionDefinition[]` | The commands, as the overflow menu takes them. The first is the primary action; the rest<br>follow in outline unless an entry sets its own `appearance`. |
80
79
  | `separator` | no | `boolean` | A rule above the strip, ruling it off from content that runs right into it. |
81
80
  | `align` | no | `"start" \| "end" \| "between"` | Where the buttons sit along the strip. |
82
81
  | `fullWidthPrimary` | no | `boolean` | Stretches the first action, for a card whose action is the point, or a narrow card where<br>two buttons will not fit. |
@@ -116,7 +115,7 @@ The header region: a title row with trailing controls, plus an optional full-wid
116
115
  above. The title truncates rather than pushing the controls off the row.
117
116
 
118
117
  ```text
119
- ({ icon, title, titleSuffix, tooltip, tooltipLabel, description, headerStart, headerEnd, headerAction, divider, titleLevel, className, ...props }: Omit<React.ComponentProps<"div">, "title"> & { icon?: React.ReactNode; title?: React.ReactNode; titleSuffix?: React.ReactNode; tooltip?: React.ReactNode; tooltipLabel?: string; description?: React.ReactNode; headerStart?: React.ReactNode; headerEnd?: React.ReactNode; headerAction?: React.ReactNode; divider?: boolean; titleLevel?: 1 | 2 | 3 | 4 | 5 | 6; }) => React.JSX.Element
118
+ ({ icon, title, titleSuffix, tooltip, tooltipLabel, description, headerStart, headerEnd, headerAction, divider, titleLevel, titleSize, className, ...props }: Omit<React.ComponentProps<"div">, "title"> & { icon?: React.ReactNode; title?: React.ReactNode; titleSuffix?: React.ReactNode; tooltip?: React.ReactNode; tooltipLabel?: string; description?: React.ReactNode; headerStart?: React.ReactNode; headerEnd?: React.ReactNode; headerAction?: React.ReactNode; divider?: boolean; titleLevel?: 1 | 2 | 3 | 4 | 5 | 6; titleSize?: "base" | "xl"; }) => React.JSX.Element
120
119
  ```
121
120
 
122
121
  ### `CardPrimaryAction`
@@ -160,6 +159,7 @@ Extends: `Omit<React.ComponentProps<"div">, "title">`.
160
159
  | `headerAction` | no | `React.ReactNode` | A single control at the end of the header. Use `actions` for a list of commands. |
161
160
  | `actions` | no | `CardAction[]` | Overflow commands, collapsed into one menu trigger and rendered by the shared<br>`ActionMenu`: a destructive entry moves last and is separated. |
162
161
  | `titleLevel` | no | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | Renders the title as a heading of this level, for a card that heads a page or a region.<br>Unset, the title is a span that heading navigation can't find. |
162
+ | `titleSize` | no | `"base" \| "xl"` | Title type size. `xl` is for a Card that heads a page, such as an auth form. |
163
163
  | `media` | no | `React.ReactNode` | A full-bleed strip above the header — a cover image, a map, a brand band — clipped to<br>the card's top corners. |
164
164
  | `alert` | no | `React.ReactNode` | Banner between header and content. A plain string is wrapped in an `Alert`. |
165
165
  | `alertTone` | no | `CardAlertTone` | Tone of the alert band. |
@@ -301,6 +301,76 @@ export default function MenusInContext() {
301
301
  }
302
302
  ```
303
303
 
304
+ ### Compose your own
305
+
306
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
307
+ import { ArrowUpIcon, CreditCardIcon } from "lucide-react"
308
+
309
+ import { Badge } from "themelia-ui/base/badge"
310
+ import { Card } from "themelia-ui/base/cards"
311
+ import { Sparkline } from "themelia-ui/base/chart"
312
+ import { IconBadge } from "themelia-ui/base/display"
313
+ import { Stack } from "themelia-ui/base/structure"
314
+ import { DisplayLabel, Text } from "themelia-ui/base/typography"
315
+ import { Money } from "themelia-ui/primitives"
316
+
317
+ export default function AnalyticsBlueprint() {
318
+ return (
319
+ <Card style={{ maxWidth: "20rem" }}>
320
+ <Stack gap="sm">
321
+ <Stack direction="horizontal" align="center" gap="sm">
322
+ <IconBadge icon={CreditCardIcon} tone="primary" />
323
+ <DisplayLabel>Revenue</DisplayLabel>
324
+ </Stack>
325
+ <Stack direction="horizontal" align="center" justify="between" gap="sm">
326
+ <Money amount={48200} currency="EUR" size="xl" weight="semibold" />
327
+ <Badge tone="success">
328
+ <ArrowUpIcon />
329
+ 12.4%
330
+ </Badge>
331
+ </Stack>
332
+ <Sparkline data={[18, 22, 19, 27, 24, 31, 29, 38]} tone="success" label="Revenue rising over eight weeks" />
333
+ <Text size="xs" type="secondary">
334
+ Net of refunds, this quarter
335
+ </Text>
336
+ </Stack>
337
+ </Card>
338
+ )
339
+ }
340
+ ```
341
+
342
+ ### Compose your own
343
+
344
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
345
+ import { Button } from "themelia-ui/base/buttons"
346
+ import { Card } from "themelia-ui/base/cards"
347
+ import { MetadataList } from "themelia-ui/base/display"
348
+ import { Stack } from "themelia-ui/base/structure"
349
+ import { toast } from "themelia-ui/base/toaster"
350
+ import { Money } from "themelia-ui/primitives"
351
+
352
+ export default function CartSummaryBlueprint() {
353
+ return (
354
+ <Card title="Order summary" description="3 items" style={{ maxWidth: "24rem" }}>
355
+ <Stack>
356
+ <MetadataList
357
+ layout="rows"
358
+ items={[
359
+ { label: "Subtotal", value: <Money amount={258} currency="EUR" /> },
360
+ { label: "Shipping", value: <Money amount={4.8} currency="EUR" /> },
361
+ { label: "Tax", value: <Money amount={51.6} currency="EUR" /> },
362
+ { label: "Total", value: <Money amount={314.4} currency="EUR" weight="semibold" /> },
363
+ ]}
364
+ />
365
+ <Button onClick={() => toast("Checkout requested", { description: "Preview callback — connect this action to your application." })}>
366
+ Check out
367
+ </Button>
368
+ </Stack>
369
+ </Card>
370
+ )
371
+ }
372
+ ```
373
+
304
374
  ### Surfaces
305
375
 
306
376
  ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
@@ -313,7 +383,7 @@ const SURFACES: CardSurface[] = ["card", "framed", "flat", "bordered"]
313
383
  export default function CardSurfaces() {
314
384
  return (
315
385
  /* Two columns for four surfaces, so none sits alone on a row. */
316
- <Grid columns={{ base: 1, sm: 2 }} gap="lg" style={{ width: "100%" }}>
386
+ <Grid columns={{ base: 1, sm: 2 }} style={{ width: "100%" }}>
317
387
  {SURFACES.map((surface) => (
318
388
  <Card key={surface} surface={surface} title={surface} description="Supporting sentence.">
319
389
  <Text type="secondary" size="sm">
@@ -340,7 +410,7 @@ import { Text } from "themelia-ui/base/typography"
340
410
 
341
411
  export default function CardSlots() {
342
412
  return (
343
- <Stack gap="lg" style={{ maxWidth: "34rem", width: "100%" }}>
413
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
344
414
  <Card
345
415
  icon={<CreditCardIcon />}
346
416
  title="Primary payment method"
@@ -353,7 +423,7 @@ export default function CardSlots() {
353
423
  { label: "Remove", icon: <TrashIcon />, onClick: () => {}, tone: "destructive" },
354
424
  ]}
355
425
  footerText="Updated 3 days ago"
356
- footerSlot={<Button tone="neutral" buttonStyle="outline">Manage</Button>}
426
+ footerSlot={<Button tone="neutral" appearance="outline">Manage</Button>}
357
427
  footerDivider
358
428
  >
359
429
  <Text type="secondary" size="sm">
@@ -387,7 +457,7 @@ import { Text } from "themelia-ui/base/typography"
387
457
  export default function CardExpandable() {
388
458
  return (
389
459
  <Card expandable title="Terms of service" style={{ maxWidth: "34rem", width: "100%" }}>
390
- <Stack gap="md">
460
+ <Stack gap="sm">
391
461
  {Array.from({ length: 10 }, (_, i) => (
392
462
  <Text key={i} type="secondary" size="sm">
393
463
  Clause {i + 1}. Content that runs past the collapsed height, so the fade has
@@ -414,21 +484,21 @@ import { Text } from "themelia-ui/base/typography"
414
484
 
415
485
  export default function CardHeaderSlots() {
416
486
  return (
417
- <Stack gap="lg" style={{ maxWidth: "34rem", width: "100%" }}>
487
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
418
488
  <Card
419
489
  icon={<CreditCardIcon />}
420
490
  title="Payment method"
421
491
  titleSuffix={<Badge tone="success">Verified</Badge>}
422
492
  tooltip="We store only the last four digits. The full number never reaches our servers."
423
493
  headerAction={
424
- <Button buttonStyle="ghost" tone="neutral">
494
+ <Button appearance="ghost" tone="neutral">
425
495
  Change
426
496
  </Button>
427
497
  }
428
498
  description="Charged on the first of the month."
429
499
  headerDivider
430
500
  footerText="Next charge 1 April"
431
- footerSlot={<Button buttonStyle="outline" tone="neutral">Invoices</Button>}
501
+ footerSlot={<Button appearance="outline" tone="neutral">Invoices</Button>}
432
502
  footerDivider
433
503
  >
434
504
  <Text size="sm" type="secondary">
@@ -450,7 +520,7 @@ import { Text } from "themelia-ui/base/typography"
450
520
 
451
521
  export default function CardAlert() {
452
522
  return (
453
- <Stack gap="lg" style={{ maxWidth: "34rem", width: "100%" }}>
523
+ <Stack style={{ maxWidth: "34rem", width: "100%" }}>
454
524
  <Card title="Domain" alert="Verification expires in 3 days." alertTone="warning">
455
525
  <Text size="sm" type="secondary">
456
526
  acme.com
@@ -475,7 +545,7 @@ import { TextLink } from "themelia-ui/base/typography"
475
545
 
476
546
  export default function CardActions() {
477
547
  return (
478
- <Stack direction="horizontal" gap="lg" wrap align="start">
548
+ <Stack direction="horizontal" wrap align="start">
479
549
  <Card style={{ width: "18rem" }} title="Northwind Traders" description="Invoice #4417">
480
550
  <CardFooter>
481
551
  <CardActionStrip
@@ -506,7 +576,7 @@ import { Stack } from "themelia-ui/base/structure"
506
576
 
507
577
  export default function CardSkeletonExample() {
508
578
  return (
509
- <Stack direction="horizontal" gap="lg" wrap align="start">
579
+ <Stack direction="horizontal" wrap align="start">
510
580
  <div style={{ width: "18rem" }}>
511
581
  <CardSkeleton showHeader lines={3} label="Loading invoice" />
512
582
  </div>
@@ -517,3 +587,26 @@ export default function CardSkeletonExample() {
517
587
  )
518
588
  }
519
589
  ```
590
+
591
+ ### Colour islands
592
+
593
+ ```tsx fragment — excerpt from the live preview; surrounding values are supplied by the application
594
+ import { Button } from "themelia-ui/base/buttons"
595
+ import { Card } from "themelia-ui/base/cards"
596
+ import { Grid } from "themelia-ui/base/structure"
597
+ import { UIProvider } from "themelia-ui/ui-provider"
598
+
599
+ export default function ColourIsland() {
600
+ return (
601
+ <Grid columns={{ base: 1, sm: 2 }}>
602
+ {(["light", "dark"] as const).map((colorScheme) => (
603
+ <UIProvider key={colorScheme} config={{ colorScheme }}>
604
+ <Card title={`A ${colorScheme} region`} description="Every colour inside resolves to this half.">
605
+ <Button>Continue</Button>
606
+ </Card>
607
+ </UIProvider>
608
+ ))}
609
+ </Grid>
610
+ )
611
+ }
612
+ ```
@@ -15,7 +15,6 @@ Peer items exceed the width and horizontal paging is the intended reading order.
15
15
 
16
16
  ```tsx fragment — import-only example
17
17
  import { Carousel } from "themelia-ui/base/carousel"
18
- import "themelia-ui/base/carousel.css"
19
18
  ```
20
19
 
21
20
  ## Composition
@@ -212,7 +211,7 @@ export default function Controls() {
212
211
  <Carousel controls="overlay" label="Gallery">
213
212
  {["One", "Two", "Three"].map((name) => (
214
213
  <CarouselSlide key={name}>
215
- <Stack align="center" justify="center" className={styles.slide}>
214
+ <Stack gap="sm" align="center" justify="center" className={styles.slide}>
216
215
  <Text size="lg" weight="semibold">{name}</Text>
217
216
  </Stack>
218
217
  </CarouselSlide>