themelia-react-ui 1.0.1 → 2.0.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 (640) hide show
  1. package/CHANGELOG.md +417 -0
  2. package/README.md +67 -16
  3. package/dist/{accordion-B-5Focs8.js → accordion-CQXVcd7Q.js} +15 -15
  4. package/dist/accordion-CQXVcd7Q.js.map +1 -0
  5. package/dist/action-menu-BTpyPWJ2.js +264 -0
  6. package/dist/action-menu-BTpyPWJ2.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CCIXb2A1.js +68 -0
  8. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-2PQ2fItc.js} +206 -215
  10. package/dist/ai-artifact-2PQ2fItc.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-BE_j8-AT.js} +11 -10
  12. package/dist/app-shell-BE_j8-AT.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-q69dlt5Y.js} +14 -14
  14. package/dist/attachment-q69dlt5Y.js.map +1 -0
  15. package/dist/auth-M3vGMgDR.js +723 -0
  16. package/dist/auth-M3vGMgDR.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-djdaaQ_s.js} +15 -13
  18. package/dist/avatar-djdaaQ_s.js.map +1 -0
  19. package/dist/{badge-BZXZT9wd.js → badge-0tATj-tW.js} +9 -9
  20. package/dist/badge-0tATj-tW.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +33 -35
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +246 -222
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +94 -92
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +7 -4
  51. package/dist/base/qr-code.js.map +1 -1
  52. package/dist/base/repeaters.js +53 -53
  53. package/dist/base/repeaters.js.map +1 -1
  54. package/dist/base/sheet.js +1 -1
  55. package/dist/base/sidebar.js +1 -1
  56. package/dist/base/signature-pad.js +84 -82
  57. package/dist/base/signature-pad.js.map +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 +2 -2
  63. package/dist/base/toaster.js +7 -7
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/blocks/admin.js +228 -219
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +182 -212
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +665 -620
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +2 -2
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1439 -1553
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +1 -1
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +88 -97
  84. package/dist/blocks/planning.js.map +1 -1
  85. package/dist/blocks/timelines.js +1 -1
  86. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BG_FfMK4.js} +10 -9
  87. package/dist/breadcrumbs-BG_FfMK4.js.map +1 -0
  88. package/dist/button-BS3KDg00.js +674 -0
  89. package/dist/button-BS3KDg00.js.map +1 -0
  90. package/dist/{button-BS6l5JUw.js → button-R9CCoH7A.js} +3 -3
  91. package/dist/button-R9CCoH7A.js.map +1 -0
  92. package/dist/buttons-DS0ZIwJ_.js +99 -0
  93. package/dist/buttons-DS0ZIwJ_.js.map +1 -0
  94. package/dist/{cards-Cum56XOF.js → cards-QoJ4syG9.js} +12 -12
  95. package/dist/{cards-Cum56XOF.js.map → cards-QoJ4syG9.js.map} +1 -1
  96. package/dist/chart-DwYRKKc-.js +152 -0
  97. package/dist/chart-DwYRKKc-.js.map +1 -0
  98. package/dist/checkbox-B7ygNTYp.js +35 -0
  99. package/dist/checkbox-B7ygNTYp.js.map +1 -0
  100. package/dist/choice-inputs-DrJ17tpL.js +752 -0
  101. package/dist/choice-inputs-DrJ17tpL.js.map +1 -0
  102. package/dist/{code-block-xHKbAJDj.js → code-block-CD0B7M93.js} +27 -27
  103. package/dist/code-block-CD0B7M93.js.map +1 -0
  104. package/dist/{collapsible-DsnktFNv.js → collapsible-oMUGM4tr.js} +3 -3
  105. package/dist/{collapsible-DsnktFNv.js.map → collapsible-oMUGM4tr.js.map} +1 -1
  106. package/dist/{collection-content-C4fthJV_.js → collection-content-Ys-OZOkY.js} +3 -3
  107. package/dist/{collection-content-C4fthJV_.js.map → collection-content-Ys-OZOkY.js.map} +1 -1
  108. package/dist/combobox-6dvVny2q.js +272 -0
  109. package/dist/combobox-6dvVny2q.js.map +1 -0
  110. package/dist/combobox-CB7039j7.js +865 -0
  111. package/dist/combobox-CB7039j7.js.map +1 -0
  112. package/dist/{command-C0xe7u9B.js → command-kPMPjIxJ.js} +35 -31
  113. package/dist/command-kPMPjIxJ.js.map +1 -0
  114. package/dist/{comments-DviPLnwy.js → comments-You0Bzbr.js} +434 -409
  115. package/dist/comments-You0Bzbr.js.map +1 -0
  116. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -2
  118. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  119. package/dist/components/base/badge/badge.d.ts +1 -1
  120. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  121. package/dist/components/base/buttons/base-button.d.ts +7 -0
  122. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  123. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  124. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  125. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  126. package/dist/components/base/buttons/text-button.d.ts +2 -2
  127. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  128. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  129. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  130. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  131. package/dist/components/base/carousel/carousel.d.ts +3 -1
  132. package/dist/components/base/chart/chart.d.ts +7 -7
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +10 -1
  135. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  136. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  137. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  138. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  139. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  140. package/dist/components/base/date-pickers/datepicker.types.d.ts +16 -3
  141. package/dist/components/base/display/alert-dialog.d.ts +8 -2
  142. package/dist/components/base/display/content-block.d.ts +4 -2
  143. package/dist/components/base/display/date-block.d.ts +1 -1
  144. package/dist/components/base/display/dialog.d.ts +12 -5
  145. package/dist/components/base/display/surface-title.d.ts +6 -1
  146. package/dist/components/base/feedback/alert.d.ts +1 -1
  147. package/dist/components/base/feedback/state-display.d.ts +5 -4
  148. package/dist/components/base/forms/form-field.d.ts +1 -0
  149. package/dist/components/base/forms/form-sizing.d.ts +35 -3
  150. package/dist/components/base/forms/workflow.d.ts +2 -0
  151. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  152. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  153. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  154. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  155. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  156. package/dist/components/base/navigation/page-header/page-header.d.ts +4 -1
  157. package/dist/components/base/navigation/tabs.d.ts +3 -5
  158. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  159. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  160. package/dist/components/base/sheet/index.d.ts +29 -1
  161. package/dist/components/base/sheet/sheet.d.ts +14 -5
  162. package/dist/components/base/spinner/spinner.d.ts +3 -2
  163. package/dist/components/base/structure/structure.types.d.ts +1 -1
  164. package/dist/components/base/table/index.d.ts +1 -1
  165. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  166. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  167. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  168. package/dist/components/base/upload/upload.recipes.d.ts +11 -0
  169. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  170. package/dist/components/base/value-inputs/tags-input.d.ts +2 -0
  171. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  172. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  173. package/dist/components/blocks/analytics/index.d.ts +1 -1
  174. package/dist/components/blocks/analytics/types.d.ts +1 -1
  175. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  176. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  177. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  178. package/dist/components/blocks/commerce/address-card/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  180. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  181. package/dist/components/blocks/commerce/discount-stack/types.d.ts +1 -1
  182. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  183. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  184. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  185. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +1 -1
  186. package/dist/components/blocks/commerce/payment-method/types.d.ts +3 -1
  187. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  188. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  190. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  191. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  192. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  193. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  194. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  195. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  196. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  197. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  198. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  199. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  200. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  201. package/dist/components/features/media-library/media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  203. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  204. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  205. package/dist/components/features/overlays/drawer.d.ts +1 -1
  206. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  207. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  208. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  209. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  210. package/dist/components/features/overlays/overlays.types.d.ts +46 -22
  211. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  212. package/dist/components/features/products/partials/index.d.ts +1 -1
  213. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  214. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  215. package/dist/components/features/products/products.types.d.ts +2 -1
  216. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  217. package/dist/components/features/table/data-table.d.ts +1 -1
  218. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  219. package/dist/components/features/table/table.types.d.ts +1 -1
  220. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  221. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  222. package/dist/components/layout/page/index.d.ts +1 -1
  223. package/dist/components/layout/page/page.d.ts +0 -1
  224. package/dist/components/layout/page/page.types.d.ts +62 -6
  225. package/dist/components/layout/page/partials/page-header-commands.d.ts +13 -0
  226. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  227. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  228. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  229. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  230. package/dist/components/primitives/date.d.ts +16 -3
  231. package/dist/components/primitives/dimensions.d.ts +6 -0
  232. package/dist/components/primitives/duration.d.ts +6 -0
  233. package/dist/components/primitives/file-size.d.ts +6 -0
  234. package/dist/components/primitives/index.d.ts +1 -1
  235. package/dist/components/primitives/initials.d.ts +11 -2
  236. package/dist/components/primitives/link.d.ts +7 -0
  237. package/dist/components/primitives/money.d.ts +29 -7
  238. package/dist/components/primitives/number.d.ts +17 -0
  239. package/dist/components/primitives/value-typography.d.ts +54 -0
  240. package/dist/components/primitives/value.d.ts +31 -6
  241. package/dist/components/typography/heading.d.ts +13 -2
  242. package/dist/components/typography/index.d.ts +1 -1
  243. package/dist/components/typography/label.d.ts +3 -0
  244. package/dist/components/typography/running-text.d.ts +12 -0
  245. package/dist/components/typography/text-link.d.ts +23 -1
  246. package/dist/components/typography/text.d.ts +12 -0
  247. package/dist/components/typography/text.styles.d.ts +37 -5
  248. package/dist/components/ui/button.d.ts +1 -1
  249. package/dist/components/ui/checkbox.d.ts +5 -0
  250. package/dist/components/ui/overlay.recipes.d.ts +15 -2
  251. package/dist/components/ui/popover.d.ts +1 -1
  252. package/dist/components/ui/select.d.ts +3 -1
  253. package/dist/components/ui/sidebar.d.ts +1 -1
  254. package/dist/components/ui/switch.d.ts +5 -0
  255. package/dist/components/ui/table.d.ts +2 -1
  256. package/dist/container.recipes-D9t8MHR3.js +27 -0
  257. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  258. package/dist/{containers-6s-ucRQQ.js → containers-D_L4mTVb.js} +34 -57
  259. package/dist/containers-D_L4mTVb.js.map +1 -0
  260. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  261. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  262. package/dist/{copyable-B7SBXJMr.js → copyable-DDjTeW_j.js} +6 -6
  263. package/dist/{copyable-B7SBXJMr.js.map → copyable-DDjTeW_j.js.map} +1 -1
  264. package/dist/data-display-3xWQUnMA.js +1335 -0
  265. package/dist/data-display-3xWQUnMA.js.map +1 -0
  266. package/dist/date-picker-DrDFj8Lo.js +1527 -0
  267. package/dist/date-picker-DrDFj8Lo.js.map +1 -0
  268. package/dist/date-pickers-CnFCb0n2.js +174 -0
  269. package/dist/date-pickers-CnFCb0n2.js.map +1 -0
  270. package/dist/date-uf3z37Nm.js +144 -0
  271. package/dist/date-uf3z37Nm.js.map +1 -0
  272. package/dist/{display-CFM5myut.js → display-DrdvPwF0.js} +25 -25
  273. package/dist/display-DrdvPwF0.js.map +1 -0
  274. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-CURh59jb.js} +22 -15
  275. package/dist/dropdown-menu-CURh59jb.js.map +1 -0
  276. package/dist/features/activities.js +177 -163
  277. package/dist/features/activities.js.map +1 -1
  278. package/dist/features/ai-chat.js +187 -183
  279. package/dist/features/ai-chat.js.map +1 -1
  280. package/dist/features/async-preview.js +9 -9
  281. package/dist/features/async-preview.js.map +1 -1
  282. package/dist/features/combobox.js +1 -1
  283. package/dist/features/comments.js +1 -1
  284. package/dist/features/data-view.js +25 -23
  285. package/dist/features/data-view.js.map +1 -1
  286. package/dist/features/email-composer/engine.js +1 -1
  287. package/dist/features/email-composer.js +353 -355
  288. package/dist/features/email-composer.js.map +1 -1
  289. package/dist/features/event-calendar.js +346 -354
  290. package/dist/features/event-calendar.js.map +1 -1
  291. package/dist/features/filters.js +1 -1
  292. package/dist/features/global-search.js +225 -227
  293. package/dist/features/global-search.js.map +1 -1
  294. package/dist/features/kanban.js +29 -29
  295. package/dist/features/kanban.js.map +1 -1
  296. package/dist/features/map.js +59 -58
  297. package/dist/features/map.js.map +1 -1
  298. package/dist/features/media-library.js +898 -900
  299. package/dist/features/media-library.js.map +1 -1
  300. package/dist/features/mentions.js +1 -1
  301. package/dist/features/overlays.js +1 -1
  302. package/dist/features/products.js +1412 -1444
  303. package/dist/features/products.js.map +1 -1
  304. package/dist/features/questionnaire.js +51 -49
  305. package/dist/features/questionnaire.js.map +1 -1
  306. package/dist/features/resource-assignment.js +103 -97
  307. package/dist/features/resource-assignment.js.map +1 -1
  308. package/dist/features/resource.js +13 -13
  309. package/dist/features/resource.js.map +1 -1
  310. package/dist/features/rich-text-editor.js +2 -2
  311. package/dist/features/schema-form.js +187 -183
  312. package/dist/features/schema-form.js.map +1 -1
  313. package/dist/features/suggestions.js +3 -3
  314. package/dist/features/sync.js +7 -7
  315. package/dist/features/sync.js.map +1 -1
  316. package/dist/features/table.js +1 -1
  317. package/dist/features/theme-tweaker.js +508 -503
  318. package/dist/features/theme-tweaker.js.map +1 -1
  319. package/dist/{feedback-DWUkgEjR.js → feedback-C7nR0UtT.js} +30 -31
  320. package/dist/feedback-C7nR0UtT.js.map +1 -0
  321. package/dist/field-affordance-recipes-CkOCdE2y.js +46 -0
  322. package/dist/field-affordance-recipes-CkOCdE2y.js.map +1 -0
  323. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-C-MFBX_8.js} +5 -5
  324. package/dist/field-state-recipes-C-MFBX_8.js.map +1 -0
  325. package/dist/{filters-BhsUtsxW.js → filters-Da-gNPsE.js} +760 -765
  326. package/dist/filters-Da-gNPsE.js.map +1 -0
  327. package/dist/{form-field-Bn7ZH1rA.js → form-field-VZRULhUK.js} +20 -12
  328. package/dist/form-field-VZRULhUK.js.map +1 -0
  329. package/dist/form-sizing-uWP4lzVh.js +126 -0
  330. package/dist/form-sizing-uWP4lzVh.js.map +1 -0
  331. package/dist/{forms-B7pzS25o.js → forms-DDeEnXSY.js} +38 -38
  332. package/dist/forms-DDeEnXSY.js.map +1 -0
  333. package/dist/forms-numeric-D3CO60IF.js +905 -0
  334. package/dist/forms-numeric-D3CO60IF.js.map +1 -0
  335. package/dist/{header-C59QZyxV.js → header-2ycNqGOR.js} +42 -37
  336. package/dist/header-2ycNqGOR.js.map +1 -0
  337. package/dist/{hooks-CM1Vp9Pe.js → hooks-DQ5SPwZw.js} +2 -2
  338. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-DQ5SPwZw.js.map} +1 -1
  339. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  340. package/dist/http-CdEIHyQf.js.map +1 -0
  341. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-DKlaKXoo.js} +4 -4
  342. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-DKlaKXoo.js.map} +1 -1
  343. package/dist/index.js +2 -2
  344. package/dist/input-BoLm9Hks.js +20 -0
  345. package/dist/input-BoLm9Hks.js.map +1 -0
  346. package/dist/input-DhQdBnV3.js +255 -0
  347. package/dist/input-DhQdBnV3.js.map +1 -0
  348. package/dist/item-xzh8Df65.js +264 -0
  349. package/dist/item-xzh8Df65.js.map +1 -0
  350. package/dist/layout/app-shell.js +1 -1
  351. package/dist/layout/auth.js +1 -1
  352. package/dist/layout/containers.js +1 -1
  353. package/dist/layout/header.js +1 -1
  354. package/dist/layout/hooks.js +1 -1
  355. package/dist/layout/navigation.js +1 -1
  356. package/dist/layout/page.js +1 -1
  357. package/dist/layout/settings.js +1 -1
  358. package/dist/layout/sidebar.js +2 -2
  359. package/dist/layout/workspace.js +1 -1
  360. package/dist/layout.js +10 -10
  361. package/dist/lib/affordance-geometry.generated.d.ts +46 -10
  362. package/dist/lib/control-group-recipes.d.ts +22 -0
  363. package/dist/lib/field-affordance-recipes.d.ts +70 -2
  364. package/dist/lib/field-state-recipes.d.ts +6 -4
  365. package/dist/lib/format.d.ts +9 -0
  366. package/dist/lib/money-format.d.ts +30 -0
  367. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  368. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -2
  369. package/dist/lib/surface-recipes.d.ts +13 -8
  370. package/dist/lib/token-merge.generated.d.ts +144 -2
  371. package/dist/lib/track-recipes.d.ts +1 -1
  372. package/dist/lib/ui-provider/provider.d.ts +7 -2
  373. package/dist/lib/ui-provider/store.d.ts +6 -2
  374. package/dist/lib/ui-provider/types.d.ts +9 -4
  375. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  376. package/dist/lib/utils.js +1 -1
  377. package/dist/media-gallery-DQUQ0m3O.js +201 -0
  378. package/dist/media-gallery-DQUQ0m3O.js.map +1 -0
  379. package/dist/{mentions-B8Ko-fhS.js → mentions-DwnO1hh4.js} +40 -39
  380. package/dist/{mentions-B8Ko-fhS.js.map → mentions-DwnO1hh4.js.map} +1 -1
  381. package/dist/message-YfFmbXNP.js +127 -0
  382. package/dist/message-YfFmbXNP.js.map +1 -0
  383. package/dist/{navigation-BUIn2Qxx.js → navigation-Cbp5V8gG.js} +27 -28
  384. package/dist/navigation-Cbp5V8gG.js.map +1 -0
  385. package/dist/navigation-Cs1npsPm.js +300 -0
  386. package/dist/navigation-Cs1npsPm.js.map +1 -0
  387. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DlU-4QYO.js} +3 -3
  388. package/dist/navigation-row-recipes-DlU-4QYO.js.map +1 -0
  389. package/dist/number-CKRBYmZK.js +352 -0
  390. package/dist/number-CKRBYmZK.js.map +1 -0
  391. package/dist/overlay.recipes-CNO2S9V6.js +34 -0
  392. package/dist/overlay.recipes-CNO2S9V6.js.map +1 -0
  393. package/dist/overlays-DhZO7N-I.js +994 -0
  394. package/dist/overlays-DhZO7N-I.js.map +1 -0
  395. package/dist/page-C6R_8jFt.js +325 -0
  396. package/dist/page-C6R_8jFt.js.map +1 -0
  397. package/dist/{page-header-DQRa0jug.js → page-header-hUTzcRZX.js} +12 -12
  398. package/dist/page-header-hUTzcRZX.js.map +1 -0
  399. package/dist/{pagination-C29vvt3I.js → pagination-Cm0jqa3I.js} +21 -21
  400. package/dist/pagination-Cm0jqa3I.js.map +1 -0
  401. package/dist/{popover-CoLDEg19.js → popover-Dcv_9jxr.js} +23 -22
  402. package/dist/popover-Dcv_9jxr.js.map +1 -0
  403. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-DnRFKnHP.js} +6 -6
  404. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-DnRFKnHP.js.map} +1 -1
  405. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-wmbvL8Ah.js} +5 -5
  406. package/dist/popover.recipes-wmbvL8Ah.js.map +1 -0
  407. package/dist/primitives-BHrwQXFC.js +379 -0
  408. package/dist/primitives-BHrwQXFC.js.map +1 -0
  409. package/dist/primitives.js +5 -5
  410. package/dist/{progress-BOe8l_FZ.js → progress-Br9WTFya.js} +12 -11
  411. package/dist/progress-Br9WTFya.js.map +1 -0
  412. package/dist/{receipt-BM8xsGFy.js → receipt-CV89q1fs.js} +8 -8
  413. package/dist/{receipt-BM8xsGFy.js.map → receipt-CV89q1fs.js.map} +1 -1
  414. package/dist/rich-text-editor-CF8QYt5p.js +574 -0
  415. package/dist/rich-text-editor-CF8QYt5p.js.map +1 -0
  416. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-CnrbmTS1.js} +35 -26
  417. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +1 -0
  418. package/dist/{rich-text-B7sBAdDG.js → rich-text-j-FGAeZW.js} +4 -4
  419. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-j-FGAeZW.js.map} +1 -1
  420. package/dist/{scroll-area-BheMQ270.js → scroll-area-DRdr16Pt.js} +3 -3
  421. package/dist/scroll-area-DRdr16Pt.js.map +1 -0
  422. package/dist/{separator-DO0EbCEm.js → separator-BMEvwnSX.js} +2 -2
  423. package/dist/{separator-DO0EbCEm.js.map → separator-BMEvwnSX.js.map} +1 -1
  424. package/dist/{separator-Gk_WXH-l.js → separator-Do5GWDYi.js} +4 -4
  425. package/dist/separator-Do5GWDYi.js.map +1 -0
  426. package/dist/services/actions/action-adapters.d.ts +4 -0
  427. package/dist/services/actions.js +8 -3
  428. package/dist/services/actions.js.map +1 -1
  429. package/dist/{settings-BnCyyPOJ.js → settings-DHk0L2MF.js} +20 -19
  430. package/dist/settings-DHk0L2MF.js.map +1 -0
  431. package/dist/sheet-DRFNY1_D.js +207 -0
  432. package/dist/sheet-DRFNY1_D.js.map +1 -0
  433. package/dist/sidebar-Cb8WzOvE.js +511 -0
  434. package/dist/sidebar-Cb8WzOvE.js.map +1 -0
  435. package/dist/{sidebar-DPR7fmqN.js → sidebar-Crc9M9JV.js} +220 -201
  436. package/dist/sidebar-Crc9M9JV.js.map +1 -0
  437. package/dist/{skeleton-CmT1ppqb.js → skeleton-DVMXr15h.js} +5 -5
  438. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-DVMXr15h.js.map} +1 -1
  439. package/dist/smart-card-Bek-TwUp.js +599 -0
  440. package/dist/smart-card-Bek-TwUp.js.map +1 -0
  441. package/dist/{spinner-BY9HbUEh.js → spinner-CmTAbEp0.js} +8 -6
  442. package/dist/spinner-CmTAbEp0.js.map +1 -0
  443. package/dist/{structure-MvKVq-oL.js → structure-hzCW-XsV.js} +3 -3
  444. package/dist/{structure-MvKVq-oL.js.map → structure-hzCW-XsV.js.map} +1 -1
  445. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  446. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  447. package/dist/style.css +1 -1
  448. package/dist/surface-recipes-DOdoBXGm.js +28 -0
  449. package/dist/surface-recipes-DOdoBXGm.js.map +1 -0
  450. package/dist/table-D6zKeYQX.js +162 -0
  451. package/dist/table-D6zKeYQX.js.map +1 -0
  452. package/dist/table-Dn4XSrSB.js +1444 -0
  453. package/dist/table-Dn4XSrSB.js.map +1 -0
  454. package/dist/tabs-Dk8E_knt.js +189 -0
  455. package/dist/tabs-Dk8E_knt.js.map +1 -0
  456. package/dist/text-inputs-BFpku0Qd.js +331 -0
  457. package/dist/text-inputs-BFpku0Qd.js.map +1 -0
  458. package/dist/{text.styles-BwB7vAF2.js → text.styles-g4He6UIW.js} +26 -15
  459. package/dist/text.styles-g4He6UIW.js.map +1 -0
  460. package/dist/theme.css +90 -124
  461. package/dist/themes/green.css +24 -0
  462. package/dist/{timelines-B9ICkQcV.js → timelines-CxuAFIc2.js} +97 -104
  463. package/dist/timelines-CxuAFIc2.js.map +1 -0
  464. package/dist/track-recipes-CDcKmndW.js +10 -0
  465. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  466. package/dist/{tree-BdWSaoFT.js → tree-BotPlyiD.js} +13 -13
  467. package/dist/{tree-BdWSaoFT.js.map → tree-BotPlyiD.js.map} +1 -1
  468. package/dist/typography/rich-text.js +1 -1
  469. package/dist/typography-CAr3dQhX.js +116 -0
  470. package/dist/typography-CAr3dQhX.js.map +1 -0
  471. package/dist/typography.js +2 -2
  472. package/dist/{ui-provider-CftIB6TY.js → ui-provider-D2_TeLqw.js} +22 -22
  473. package/dist/ui-provider-D2_TeLqw.js.map +1 -0
  474. package/dist/ui-provider.js +1 -1
  475. package/dist/{upload-D8Za5x_c.js → upload-B0WHW7ak.js} +278 -274
  476. package/dist/upload-B0WHW7ak.js.map +1 -0
  477. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-BHZ_wBfd.js} +72 -75
  478. package/dist/upload-queue-BHZ_wBfd.js.map +1 -0
  479. package/dist/{usage-card-DnmnJ58D.js → usage-card-U0YBLTNT.js} +31 -33
  480. package/dist/usage-card-U0YBLTNT.js.map +1 -0
  481. package/dist/utils-Cospvlj1.js +4445 -0
  482. package/dist/utils-Cospvlj1.js.map +1 -0
  483. package/dist/value-inputs-CjfzGMsN.js +854 -0
  484. package/dist/value-inputs-CjfzGMsN.js.map +1 -0
  485. package/dist/value-typography-Deb3yQZg.js +116 -0
  486. package/dist/value-typography-Deb3yQZg.js.map +1 -0
  487. package/dist/{workspace-C1PZmk8L.js → workspace-YoFjXi6i.js} +97 -105
  488. package/dist/workspace-YoFjXi6i.js.map +1 -0
  489. package/docs/consumer-skill/SKILL.md +123 -119
  490. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  491. package/docs/consumer-skill/examples/app-layout.tsx +42 -14
  492. package/docs/consumer-skill/examples/detail.tsx +20 -5
  493. package/docs/consumer-skill/examples/edit.tsx +1 -1
  494. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  495. package/docs/consumer-skill/examples/manifest.json +37 -3
  496. package/docs/consumer-skill/examples/scoped-directory.tsx +2 -2
  497. package/docs/consumer-skill/examples/website.tsx +56 -0
  498. package/docs/consumer-skill/references/analytics.md +70 -0
  499. package/docs/consumer-skill/references/composition.md +195 -9
  500. package/docs/consumer-skill/references/design-contract.md +33 -7
  501. package/docs/consumer-skill/references/discovery.md +80 -5
  502. package/docs/consumer-skill/references/installation.md +22 -0
  503. package/docs/consumer-skill/references/integration.md +46 -1
  504. package/docs/consumer-skill/references/public-api.json +2083 -237
  505. package/docs/consumer-skill/references/review.md +74 -6
  506. package/docs/consumer-skill/references/theming.md +59 -8
  507. package/docs/consumer-skill/references/tokens.json +180 -9
  508. package/docs/consumer-skill/references/workflows.md +34 -0
  509. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  510. package/docs/consumer-skill/scripts/composition-policy.mjs +271 -18
  511. package/docs/consumer-skill/scripts/discovery.mjs +69 -9
  512. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  513. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  514. package/package.json +11 -6
  515. package/dist/accordion-B-5Focs8.js.map +0 -1
  516. package/dist/action-menu-Cx3SdfbN.js +0 -265
  517. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  518. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  519. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  520. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  521. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  522. package/dist/attachment-BO2R47wn.js.map +0 -1
  523. package/dist/auth-OFwWSAap.js +0 -704
  524. package/dist/auth-OFwWSAap.js.map +0 -1
  525. package/dist/avatar-Bpzty83c.js.map +0 -1
  526. package/dist/badge-BZXZT9wd.js.map +0 -1
  527. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  528. package/dist/button-BS6l5JUw.js.map +0 -1
  529. package/dist/buttons-Co6GavvM.js +0 -674
  530. package/dist/buttons-Co6GavvM.js.map +0 -1
  531. package/dist/chart-DVfcwQu6.js +0 -149
  532. package/dist/chart-DVfcwQu6.js.map +0 -1
  533. package/dist/checkbox-BavDRjF7.js +0 -34
  534. package/dist/checkbox-BavDRjF7.js.map +0 -1
  535. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  536. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  537. package/dist/code-block-xHKbAJDj.js.map +0 -1
  538. package/dist/combobox-DEbdr-3u.js +0 -273
  539. package/dist/combobox-DEbdr-3u.js.map +0 -1
  540. package/dist/combobox-xv3yJbzl.js +0 -850
  541. package/dist/combobox-xv3yJbzl.js.map +0 -1
  542. package/dist/command-C0xe7u9B.js.map +0 -1
  543. package/dist/comments-DviPLnwy.js.map +0 -1
  544. package/dist/containers-6s-ucRQQ.js.map +0 -1
  545. package/dist/data-display-cWIRdeaf.js +0 -1129
  546. package/dist/data-display-cWIRdeaf.js.map +0 -1
  547. package/dist/date-BFNMnrS5.js +0 -140
  548. package/dist/date-BFNMnrS5.js.map +0 -1
  549. package/dist/date-picker-CA6ogMQB.js +0 -1521
  550. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  551. package/dist/date-pickers-BPIKLdsD.js +0 -224
  552. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  553. package/dist/display-CFM5myut.js.map +0 -1
  554. package/dist/dropdown-menu-BlnyHr-9.js.map +0 -1
  555. package/dist/feedback-DWUkgEjR.js.map +0 -1
  556. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  557. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  558. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  559. package/dist/filters-BhsUtsxW.js.map +0 -1
  560. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  561. package/dist/form-sizing-BWs70_a2.js +0 -100
  562. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  563. package/dist/format-iamDSqs2.js +0 -110
  564. package/dist/format-iamDSqs2.js.map +0 -1
  565. package/dist/forms-B7pzS25o.js.map +0 -1
  566. package/dist/forms-numeric-BUBxELBv.js +0 -867
  567. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  568. package/dist/header-C59QZyxV.js.map +0 -1
  569. package/dist/http-CLTVJc5I.js.map +0 -1
  570. package/dist/input-WwYQZJzG.js +0 -202
  571. package/dist/input-WwYQZJzG.js.map +0 -1
  572. package/dist/input-ci9fIgFH.js +0 -20
  573. package/dist/input-ci9fIgFH.js.map +0 -1
  574. package/dist/item-pJ0GsOiJ.js +0 -257
  575. package/dist/item-pJ0GsOiJ.js.map +0 -1
  576. package/dist/media-gallery-DhDRgnVZ.js +0 -200
  577. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  578. package/dist/message-COsdEvXT.js +0 -108
  579. package/dist/message-COsdEvXT.js.map +0 -1
  580. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  581. package/dist/navigation-DBEu4POU.js +0 -267
  582. package/dist/navigation-DBEu4POU.js.map +0 -1
  583. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  584. package/dist/number-BNT_BIzJ.js +0 -269
  585. package/dist/number-BNT_BIzJ.js.map +0 -1
  586. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  587. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  588. package/dist/overlays-B11wZka6.js +0 -982
  589. package/dist/overlays-B11wZka6.js.map +0 -1
  590. package/dist/page-BV6ioQg3.js +0 -202
  591. package/dist/page-BV6ioQg3.js.map +0 -1
  592. package/dist/page-header-DQRa0jug.js.map +0 -1
  593. package/dist/pagination-C29vvt3I.js.map +0 -1
  594. package/dist/popover-CoLDEg19.js.map +0 -1
  595. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  596. package/dist/primitives-DKPOGVpj.js +0 -330
  597. package/dist/primitives-DKPOGVpj.js.map +0 -1
  598. package/dist/progress-BOe8l_FZ.js.map +0 -1
  599. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  600. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  601. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  602. package/dist/scroll-area-BheMQ270.js.map +0 -1
  603. package/dist/select-B2mb-qN2.js +0 -108
  604. package/dist/select-B2mb-qN2.js.map +0 -1
  605. package/dist/separator-Gk_WXH-l.js.map +0 -1
  606. package/dist/settings-BnCyyPOJ.js.map +0 -1
  607. package/dist/sheet-B-q914Ad.js +0 -205
  608. package/dist/sheet-B-q914Ad.js.map +0 -1
  609. package/dist/sidebar-C_2p3Tfj.js +0 -501
  610. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  611. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  612. package/dist/smart-card-CYLn46e6.js +0 -578
  613. package/dist/smart-card-CYLn46e6.js.map +0 -1
  614. package/dist/spinner-BY9HbUEh.js.map +0 -1
  615. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  616. package/dist/surface-recipes-CQfRr-VL.js +0 -27
  617. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  618. package/dist/table-BS39xnlq.js +0 -1424
  619. package/dist/table-BS39xnlq.js.map +0 -1
  620. package/dist/table-DnlAJ-xR.js +0 -146
  621. package/dist/table-DnlAJ-xR.js.map +0 -1
  622. package/dist/tabs-B5cNMWiP.js +0 -187
  623. package/dist/tabs-B5cNMWiP.js.map +0 -1
  624. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  625. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  626. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  627. package/dist/timelines-B9ICkQcV.js.map +0 -1
  628. package/dist/track-recipes-LLPNVwFg.js +0 -10
  629. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  630. package/dist/typography-Cv8MT-82.js +0 -96
  631. package/dist/typography-Cv8MT-82.js.map +0 -1
  632. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  633. package/dist/upload-D8Za5x_c.js.map +0 -1
  634. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  635. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  636. package/dist/utils-C2EKeIw3.js +0 -72
  637. package/dist/utils-C2EKeIw3.js.map +0 -1
  638. package/dist/value-inputs-DX2dbxjj.js +0 -824
  639. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  640. package/dist/workspace-C1PZmk8L.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,422 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.0 — 2026-10-16
4
+
5
+ A major release. Untouched defaults now give a screen one deliberate primary
6
+ command, neutral surfaces where colour only states status, and the overlay
7
+ family for every dialog-like surface. Public exports and props are retained (the
8
+ contract check keeps every public symbol); what changes is defaults, appearance,
9
+ a few DOM hooks and some semantics.
10
+
11
+ ### Upgrading from 1.x
12
+
13
+ - **Buttons.** An untoned `Button` is the neutral outline. Give each screen's
14
+ main command `tone="primary"`, run
15
+ `docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by default,
16
+ `--write` to apply) to keep existing screens' look, or restore the old default
17
+ app-wide with `UIProvider` `button: { defaultTone: 'primary',
18
+ defaultButtonStyle: 'solid' }`.
19
+ - **Brand colour.** The default primary is near-black. Import
20
+ `themelia-react-ui/themes/green.css` after `style.css` to keep the green brand.
21
+ - **Badges.** An untoned `Badge` is neutral; `UIProvider`
22
+ `badge.defaultTone: 'primary'` restores the old default.
23
+ - **Page titles** are the route's `h1` at 20px; pass `headingTag="h2"` for a page
24
+ nested inside another titled page.
25
+ - **Overlays.** Replace the deprecated base `Sheet` exports with `ActionDrawer`
26
+ from `features/overlays`. `ConfirmDialog` shows its tone icon only with
27
+ `showIcon`. Scrims no longer blur, and dialog regions draw no header or footer
28
+ rules.
29
+ - **Formatted text.** Negative numbers print with a true minus (U+2212) instead
30
+ of a hyphen; update tests, snapshots or parsers that match formatted output.
31
+ - **Decorative icons and dividers** are gone from the library's own blocks,
32
+ features and templates. Public `icon`/media props and Card `headerDivider`/
33
+ `footerDivider` remain for products that need them; `adminStarterUIDefaults`
34
+ no longer turns card dividers on.
35
+ - **DOM hooks.** `InventorySectionCard` exposes card hooks instead of
36
+ `content-block--*`, and `seo-listing-card--score-icon` is removed.
37
+
38
+ ### Changes
39
+
40
+ - **Breaking (visual): overlays have no blur and no static rules, and they are
41
+ the only dialog API.** The modal scrim is a plain `--overlay-backdrop` tint.
42
+ Dialog, alert-dialog and drawer regions draw no header/footer rules or tinted
43
+ footer: the shell owns a 20px outer inset and 16px between regions, and a
44
+ scrolling body shows a rule only on an edge that hides content. Surfaces use
45
+ one border on `bg-popover`; drawers draw one rule on their open edge. The
46
+ close button is centred on the first title line and comes last in the DOM, so
47
+ opening focuses the first field or action. `ConfirmDialog` matches
48
+ `ActionDialog` widths, supports `surfaceStyle` and shows no tone icon unless
49
+ `showIcon`; emphasis no longer tints the border; a non-modal `ActionDrawer`
50
+ stays open on page presses; `initialFocusRef` accepts nullable React 19 refs;
51
+ a string `trigger` renders a Button. The base `Sheet` exports are deprecated
52
+ in favour of `ActionDrawer`. DataTable's in-place `fullscreen` mode stays the
53
+ one modal surface outside the overlays: the table's own region is maximised,
54
+ so its scroll position, focus and column state survive, and the contract
55
+ check (`modal-owner`) rejects any other hand-built modal or borrowed
56
+ Dialog/Sheet in library source. The consumer skill (house rule 9 and a dialogs
57
+ section) and the checker (`raw-overlay-primitive` for `role="dialog"`,
58
+ `aria-modal`, `fixed inset-0` layers and modal libraries; `deprecated-owner`
59
+ from the public index) enforce the overlay owners. Nothing in the library uses
60
+ `backdrop-filter` any more: sticky table headers and toolbars, the form
61
+ actions bar, carousel controls and upload overlays are opaque.
62
+ - **Inline values follow running text.** Inside `Text`, `Heading`, `Label`,
63
+ `TextLink`, `ItemTitle`/`ItemDescription` and `CardDescription`, value
64
+ primitives (`Value`, `MonoValue`, `Money`, `Number`, `Percent`, `Duration`,
65
+ `FileSize`, `Dimensions`, dates, links) take the sentence's size, colour,
66
+ weight and leading unless a prop says otherwise; standalone use is unchanged.
67
+ `Initials` inherits by default. Text `type`/`weight`/`lineHeight` accept
68
+ `'inherit'`. Empty values share the `EmptyValue` treatment.
69
+ - Negative numbers print with a true minus (U+2212) in every formatter and
70
+ number primitive (`formatWithMinusSign` in `lib/format`).
71
+ - Form controls share one geometry and state contract: every field and
72
+ field-shaped trigger is the same height, radius, `--input` border, text size
73
+ (16px on touch) and 2px focus ring; a keyboard-focused invalid field shows a
74
+ full-strength destructive ring; select-like chevrons share
75
+ `selectToggleRecipes` (16px glyph centred where the Select draws it);
76
+ Textarea's first line aligns with an Input's text; field triggers no longer
77
+ take a button hover fill; disabled inputs lose the read-only fill. Checkbox
78
+ shows a dash when indeterminate; choice cards mark selection with the border
79
+ only; pill radios get roving arrow-key focus; DecimalInput steps with arrow
80
+ keys and keeps uncontrolled values; DatePicker gains `id`/`invalid` and no
81
+ longer reddens its label; DateTimeInput passes `stepMinutes` correctly;
82
+ Cascader gets an inline clear; Combobox Escape on a closed field keeps the
83
+ value and reaches the surrounding overlay. A Combobox reserves its whole
84
+ toggle (and clear) target plus the copy gap, so a long value never runs under
85
+ a target at any density. A one-line text button is exactly its action height
86
+ at every spacing and density (its block inset is capped); wrapped labels
87
+ still grow the button.
88
+ - Display and navigation: Badge follows its parent's alignment (no
89
+ `self-center`); flat/`padding="none"` Cards use the 16px header-to-body gap;
90
+ the default outline button border is visible in dark; `TextButton` md is
91
+ `text-sm`; ButtonGroup seams and corners are fixed; untoned ActionButtons are
92
+ neutral; menu group captions use the xs secondary role; OverflowTabBar gets
93
+ arrow/Home/End keys and the shared 36px recipe; active tabs read above the
94
+ track in dark; pagination links are 36px squares; accordion focus is inset
95
+ with no open tint; toaster status icons reach 5:1; code diffs use tints;
96
+ StackedAvatars fallbacks are neutral; tables render rules without preflight
97
+ and are a tab stop only while they overflow. `PageHeading` `withSeparator`
98
+ defaults to `false`.
99
+ - Typography: Heading `tracking-tight` from xl and `leading-tight` from 2xl;
100
+ link focus rings hug the text and follow wrapped lines; text, headings and
101
+ money align with logical start/end so they mirror in RTL.
102
+ - Scoped density: arbitrary values no longer read derived `--spacing-*` aliases
103
+ (resolved once on `:root`), so tracks, insets and offsets follow a
104
+ `data-density` scope.
105
+
106
+ - **Breaking (visual): visual restraint pass.** Icons now carry information
107
+ or are omitted, colour only states status, and spacing, not rules, separates
108
+ sections. Public `icon`/media props remain for consumers; the library's own
109
+ compositions stop passing decorative ones.
110
+ - Rows: a plain `Item` (default variant, no inline padding) in an `ItemGroup`
111
+ sits flush with the group's top and bottom edges, plain rows touch so their
112
+ density padding is the row spacing, and the default variant drops its
113
+ transparent 1px border so row text aligns with headings and labels above
114
+ it. Boxed `outline`/`muted` rows keep their gap. This fixes uneven space
115
+ around dividers and at card bottoms (8px above a rule against 17px below
116
+ it, 30px at a card's bottom against 20px at its top on the order page).
117
+ - Blocks and features no longer hard-code decorative icons on card titles
118
+ (address, payment method, order/refund status, tax breakdown, subscription,
119
+ voucher, coupon, cart, inventory, SEO listing, every product section, sensitive
120
+ actions, AI confirmation/tool call/package info/citation), on metadata and
121
+ list rows, inside inputs and badges, or on ordinary text buttons. Kept:
122
+ icon-only buttons, menu and navigation icons, affordances, search glyphs,
123
+ `+` on add commands, state glyphs, event-type markers and real media.
124
+ - Colour states status: kinds, categories and counts are neutral; live and
125
+ in-progress states use `info` instead of the near-black primary;
126
+ `LoyaltyPoints` `tierTone` defaults to `neutral` (was `warning`); activity
127
+ events without a status tone are neutral; product rows render
128
+ `tone="primary"` neutral; micro-grid single-series charts use `--chart-1`.
129
+ - No boxes inside cards and no section rules: tinted or bordered inset panels,
130
+ stat tiles and per-section dividers are gone across commerce, data-display,
131
+ AI, admin, product, activity, resource-assignment, schema-form, sync and
132
+ media-library compositions. One rule stays above financial grand totals.
133
+ Status chips sit beside their title (`titleSuffix`).
134
+ - Amounts and dates use the UI font with tabular figures; monospace stays for
135
+ identifiers and codes.
136
+ - Sentence-case default strings across commerce, admin, AI and dense-info
137
+ blocks (for example `Refund status`, `Tax breakdown`, `Redeem points`,
138
+ `View details`, `Edit role`, `Next step`). `DenseInfoStrings` gains an
139
+ optional `priority`.
140
+ - `ActivityLog` shows a category chip only when an entry passes `label` (it no
141
+ longer falls back to the raw `kind`), and date groups read `Yesterday` and
142
+ `October 14, 2026` instead of uppercase eyebrows with ordinals.
143
+ - `DateCell` and `DateMetaCell` `showIcon` default to `false`;
144
+ `GlobalSearchIdleState` headings have no default icons; `PageHeader` has no
145
+ separator after the back button; `AppSidebar` groups are separated by space
146
+ instead of rules; navigation count badges stay neutral when active.
147
+ - `OrderStatus` drops the facts that repeated its badge and timeline;
148
+ `LoyaltyPoints` shows Redeem only with `onRedeem`; vouchers show a balance
149
+ only when one is given; `InventorySectionCard` renders through `Card`, so its
150
+ `content-block--*` hooks become card hooks, and `seo-listing-card--score-icon`
151
+ is removed.
152
+ - Base fixes: `ActionMenu`'s icon-only trigger follows `buttonProps.size`;
153
+ Card `contentTop`/`contentBottom` share the content gap (`lg`, or
154
+ `contentGap`) instead of touching the body.
155
+ - Templates: `adminStarterUIDefaults` no longer turns on card header/footer
156
+ dividers; facts, line items, KPIs and commands lose decorative icons;
157
+ count/kind badges, repeated identity rows and repeated facts are removed.
158
+ - Guidance: house rule 7 and the Card anatomy reference cover decorative
159
+ icons and dividers; the composition checker warns (`decorative-icon`) on a
160
+ Card title icon or an icon on more than one MetadataList fact; AGENTS.md
161
+ records the visual restraint rules.
162
+
163
+ - **Breaking (visual): an untoned Button is now the neutral outline**
164
+ (`tone="secondary"`, `buttonStyle="outline"`), so a screen gets one deliberate
165
+ primary instead of a primary on every button. Give the main command
166
+ `tone="primary"`. A Button with a `tone` and no `buttonStyle` is now always
167
+ solid: `UIProvider` `button.defaultButtonStyle` applies only to buttons without
168
+ a tone. Run `docs/consumer-skill/scripts/pin-button-defaults.mjs` (dry run by
169
+ default, `--write` to apply, `--solid-only` to let untoned outline and ghost
170
+ buttons turn neutral) to keep existing screens' look, or restore the previous
171
+ default app-wide with `button: { defaultTone: 'primary', defaultButtonStyle:
172
+ 'solid' }`. The library's own components keep their primary commands
173
+ explicitly; their untoned outline and ghost buttons (cascader, signature pad,
174
+ questionnaire navigation) are now neutral instead of brand-colored, and
175
+ `SubmitStateButton` keeps the primary role for submit.
176
+ - Add a 32px `3xl` structural gap step (`gap-space-3xl`, `gap-x-space-3xl`,
177
+ `gap-y-space-3xl`; `--spacing-space-3xl` scales with `--space-scale`) for page
178
+ rhythm. Page now separates its header from its body with `3xl` (was 24px), and
179
+ Stack/Grid/Section accept `gap="3xl"` between major sections. The utility
180
+ budget grows from 393 to 396 spellings for this one shared responsibility.
181
+ - **Breaking (visual): the default primary is neutral.** `--primary` is
182
+ near-black in light (`oklch(0.205 0 0)`) and near-white in dark, so the brand
183
+ no longer sits next to the success green (they were ΔE_OK 0.074 apart). The
184
+ previous green is the opt-in brand theme `themelia-react-ui/themes/green.css`:
185
+ import it after `style.css` to keep the old look. It sets primary, its
186
+ foreground, the dark primary accent and the first chart series, and passes
187
+ the same contrast contract. `--primary-accent` now follows `--primary` in
188
+ dark too.
189
+ - Form-control boundaries reach 3:1 contrast (WCAG 1.4.11): `--input` is
190
+ `oklch(0.62 0 0)` in light (was the divider color, 1.26:1) and white at 40% in
191
+ dark (was 15%), so inputs, selects, checkboxes, radios and switch tracks are
192
+ visible on every surface. `--border` stays the lighter divider color. The
193
+ contrast contract now checks `--input` at 3:1 on background, card, popover,
194
+ muted, accent and secondary surfaces. The repeater's empty placeholder uses
195
+ the divider border.
196
+ - Button labels wrap inside the available width instead of overflowing: the
197
+ action height is now a minimum for text buttons (icon-only buttons stay fixed
198
+ squares), and buttons cap at their container's width. Pass `truncate` to keep
199
+ one line with an ellipsis where a button cannot grow, such as a joined group
200
+ or dense toolbar. Components that size a button themselves (`h-auto`,
201
+ `h-full`) now also reset the minimum height, and the header search trigger
202
+ uses `size="sm"` instead of a height override.
203
+ - Add role-based page commands to PageHeader and `Page header`:
204
+ `primaryAction` (one solid primary command, trailing and always visible) and
205
+ ordered `secondaryActions` (two outline buttons, then a More actions menu).
206
+ Destructive secondary commands always move into that menu; below `sm` every
207
+ secondary command collapses into it through CSS. Commands carry no tone or
208
+ button style. `moreActionsLabel` names the menu; the new `PageHeaderAction`
209
+ type is exported from `layout/page` and `layout`. Existing `actions` and
210
+ `slots.actions` are unchanged: `actions` renders before the commands, and
211
+ `slots.actions` still replaces the whole region.
212
+ - Move the admin templates, consumer recipes and Page catalogue examples to the
213
+ role-based commands. Header buttons now share one size, and the stacked shell
214
+ recipe no longer repeats the page's Create record command in its navigation.
215
+ - The optional consumer checker warns (`page-command-roles`) when Page or
216
+ PageHeader `actions` hold command buttons, pointing to `primaryAction` and
217
+ `secondaryActions`. The analytics template's period filter is now a labelled
218
+ Select instead of a toggle button.
219
+ - Nested `UIProvider`s no longer throw. A nested provider inherits the nearest
220
+ provider's resolved defaults and overrides only the keys it sets, so
221
+ `AdminUIThemeProvider` works inside an application's root provider.
222
+ - Metric surfaces format currency, numbers and percentages with the same
223
+ formatter and UIProvider policy as `Money` (locale, default currency and
224
+ `formatMode`). A currency metric without a currency now uses the provider
225
+ default (`USD` by default) instead of EUR, and prints like Money
226
+ (`1,840.00 USD` by default) instead of `USD 1,840.00`. `formatMetricValue`
227
+ accepts optional `FormatMetricValueOptions`.
228
+ - Add `useMoneyFormatter()` to `primitives` for money in strings (labels,
229
+ toasts, activity text) with the Money rules; the templates use it instead of
230
+ hand-built `$x.xx USD` strings, and their tables use the Date primitive.
231
+ - `toTableAction` keeps running actions disabled and hidden actions hidden in
232
+ DataTable rows; `toMenuAction` carries `id`, `visible` and `group`.
233
+ - Themes declare `color-scheme`, so native scrollbars and form controls follow
234
+ dark mode. Light `--primary-accent` now follows `--primary`, so a rebrand
235
+ needs one root.
236
+ - Unit tests resolve the package's own imports from source, so `npm test` no
237
+ longer needs (or silently uses) a previous build.
238
+ - Page titles are the route's `h1` by default (was `h3`) and use the 20px
239
+ `text-xl` role (was 18px), so page and card titles (16px) read as distinct
240
+ levels. Pass `headingTag="h2"` for a page nested inside another titled page.
241
+ - Card and MediaLibrary plain-text titles are exposed as level-2 headings, so
242
+ assistive technology can move between surfaces. Title-suffix badges stay out
243
+ of the heading's name; custom title nodes keep their own semantics.
244
+ - An untoned Badge is now neutral (was primary), so only a deliberate tone
245
+ signals state. Set `UIProvider` `badge.defaultTone: 'primary'` to keep the
246
+ previous look. The Default address and payment-method badges are neutral too.
247
+ - `useMoneyFormatter(defaults)` binds screen defaults such as `currency` once;
248
+ each call can still override them. `MoneyFormatterOptions` is exported.
249
+ - The consumer skill opens with eight house rules (provider, Page, command
250
+ roles, Stack/Grid, typography and value primitives, semantic color, neutral
251
+ badges, Card slots). The checker adds review warnings for raw palette color
252
+ classes, native `<button>` and `<h1>`–`<h6>` elements, and pages with more
253
+ than one solid primary command. The orders and staff templates now have one
254
+ primary command each.
255
+ - The consumer skill's public index lists each family's deprecated names with
256
+ their replacements (`SmartCard`: "Use Card.", `SmartCardProps`: "Use
257
+ CardProps."), derived from `@deprecated` JSDoc. The finder leaves them out of
258
+ task recommendations and flags them when a query names one.
259
+ - Event calendar markers in narrow day cells keep the compact action height
260
+ (28px), so they meet the WCAG 2.2 24px target size instead of a 12px sliver.
261
+ - Regenerate `package-lock.json`: it pinned lightningcss 1.32.0 where the
262
+ package and Vite require `^1.33.0`, so `npm ci`, and with it CI, failed
263
+ before running any check.
264
+
265
+ ## 1.0.3 — 2026-10-15
266
+
267
+ - Document layout-block ownership, horizontal Stack rows, responsive tracks and
268
+ parent adaptation; ship a typed region-composition recipe and route common
269
+ layout queries to the corresponding owners and focused guidance.
270
+
271
+ - Align template peer Card stacks with Page/TwoColumnLayout’s existing `2xl`
272
+ rhythm: 24px in both axes at default scale, including stacked mobile regions.
273
+
274
+ - Let AddressCard, PaymentMethod, SeoListingCard and ProductVariantsManager own
275
+ their framed Card anatomy through existing surface/padding/divider props.
276
+ Preserve unframed defaults and suppress inherited embedded header rules;
277
+ replace redundant template wrappers with one full-width Card boundary.
278
+ - Audit the admin templates: isolate overlay drafts, preserve staff save/discard
279
+ baselines, close mobile navigation, honor shell presets/density and repair
280
+ variant duplication/options persistence. Include templates in design lint and
281
+ installed-package typechecks; correct their documented scope and discovery.
282
+ - Keep long MetadataList row labels from squeezing monetary values out of narrow
283
+ panels, and use the semantic copy-gap recipe for label/value rhythm.
284
+
285
+ - Increase the shared surface-x/y defaults to 1.25rem: ordinary Card insets are
286
+ 20px, compact surfaces 10px and large surfaces/page gutters 36px at default
287
+ scale. Preserve independent row padding, control heights, copy gaps and radii.
288
+ - Keep UsageCard period tabs on the shared scrollable track in narrow cards,
289
+ preventing wrapped labels from escaping the header into usage figures.
290
+
291
+ ## 1.0.2 — 2026-10-15
292
+
293
+ - Raise the default outer radius from 8px to 12px. Inputs, buttons, select/facet
294
+ triggers, collection highlights and navigation rows share a bounded 0.75× inner
295
+ role (normally 9px), derived from the same public root. The height/density bound
296
+ prevents short controls becoming capsules under large radius overrides.
297
+ - Enforce outer/inner ownership in repository and optional consumer checks;
298
+ verify painted corners, focus/selection, scoped portals and independent action/
299
+ field heights on desktop/mobile in both themes and densities. Preserve bounded
300
+ image-removal buttons and inner media-list focus targets while Card hit areas
301
+ retain outer corners.
302
+ - Explain the radius roles throughout consumer/maintainer skills and catalogue
303
+ guides. Route border-radius, page-padding and Card-anatomy searches to their
304
+ actual owners, declarations and focused composition references.
305
+
306
+ - Repair post-remediation findings at shared owners: independent media sizing,
307
+ complete directional spacing CSS/merge vocabulary, sRGB default colors,
308
+ dark sunken/sidebar roles, host-colored outline buttons and active feedback.
309
+ - Restore KPI and page-title hierarchy, square heatmap cells and grouped legend,
310
+ gift-card balances and strip layering. Align table/code/message/image insets
311
+ with their actual spacing roles and preserve standalone shell/Card fonts.
312
+ - Make calendar events compact and readable, retain mobile Today, portal tag
313
+ suggestions, and share compact inline actions across filters, products and
314
+ comments. Date pickers now inherit provider scale and accept an explicit size.
315
+ - Add typed Card region padding, remove caller inset overrides, improve real
316
+ flagship analytics examples, and strengthen discovery/consumer composition
317
+ checks with exact imports and practical skill examples.
318
+ - Close .ts recipe, Card-slot and SVG-embedded HTML lint gaps. Add focused
319
+ desktop/mobile light/dark checks and a finding-by-finding verification ledger.
320
+ - Pair Tooltip shell/arrow with inverse text in both themes. Wrap rich search
321
+ metadata without clipping currency or duplicating the wide value column.
322
+ - Consolidate corners under the single public shadcn radius root. Anchored
323
+ borders use the shared semantic boundary.
324
+
325
+ - Align ordinary controls and menu/command highlights through their shared
326
+ inner role. Keep compound fields and segmented toolbars within one sized
327
+ border; preserve provider sizing through filters, search and calendar controls.
328
+ - Tighten shared title/description defaults to normal 4px and dense 2px. Remove
329
+ typography margins and redundant Card region spacing without adding tokens.
330
+ - Make native inputs, navigation, color pickers, provider links and framed icons
331
+ own their box sizing independently of consumer resets. Keep search height and
332
+ keyboard focus stable when clearing; preserve inline collapsed activity metadata.
333
+ - Reject semantic-but-wrong radius/height overrides and copy margins. Route
334
+ consumer geometry discovery to focused references, and verify installed
335
+ package geometry across provider sizes, independent scales and both themes.
336
+
337
+ - Retire the final 87 spacing/control debt expressions through shared row,
338
+ surface, control and navigation owners; reject restored lint allowances.
339
+ Preserve fixed chart/illustration geometry with native SVG drawings.
340
+ - Align message continuations to actual media tracks, preserving rich avatar
341
+ slots, empty states, RTL and focus. Keep compact navigation text readable,
342
+ selected Item titles theme-aware, and documentation guides logically indented.
343
+ - Keep avatar removal reachable outside image clipping, preserve disabled
344
+ Sidebar targets through tooltips, retain heatmap civil dates across timezones,
345
+ and announce localized comment attachment rejection with safe reset/retry.
346
+ - Adapt auth split columns and panel visibility to the shell's own width;
347
+ keep feature copy shrinkable in narrow parents and scoped themes.
348
+
349
+ - Repair multiline/BEM class merging and derive property-aware merge namespaces
350
+ from actual CSS aliases. Verify utility emission alongside generated freshness.
351
+ - Close internal-import, static-template, passive-anatomy and omitted/default-gap
352
+ lint/checker gaps; improve component discovery without inventing unsupported APIs.
353
+ - Restore Button solid/tonal states, unreset field/list/font ownership, and
354
+ combined trailing-action geometry. Add concurrency and state-combination regressions.
355
+ - Add an optional Heading visual scale without changing semantic/default sizing;
356
+ restore prominent KPI values and native Metric navigation/actions.
357
+ - Consolidate table scroll/focus ownership, prioritize calendar titles by available
358
+ parent width, and review status foreground/elevation roles in both themes.
359
+ - Wire grouped/individual table resizing with real pointer/keyboard sizing,
360
+ inherited RTL direction and nonoverlapping sticky header rows. Strengthen
361
+ semantic focus contrast, including native field clear/reveal actions.
362
+ - Follow Slider's actual native input focus and attach the calendar day-button
363
+ ref, preserving arrow-key focus and visible indicators inside date pickers.
364
+ - Measure both field addon tracks naturally under independent scales; preserve
365
+ caller padding overrides without adding public theme variables.
366
+ - Add a finding-led drift guide with concrete reproductions, shared-owner
367
+ repairs, image review and executed behavior checks.
368
+
369
+ - Page owns larger `lg` inline/block insets, with `padding` and a centered
370
+ `narrow` resource-page mode; explicit width and gutter choices remain supported.
371
+ StackedLayout's contained measure owns the same large inline inset once.
372
+ - Page and workspace record headers default to dense supporting-copy rhythm.
373
+ Standard back controls remain beside the title while wrapped page commands
374
+ retain the full header width. Workspace content/header/footer share token insets.
375
+ Workspace regions adapt to parent width; narrow workspaces scroll long headers
376
+ with their body, while wide regions retain independent main scrolling.
377
+ - Add UIProvider card footer-divider defaults and the matching theme-editor
378
+ setting, preserving explicit overrides and one empty-body boundary. Ordinary
379
+ Card padding remains md.
380
+ - AppSidebar adds pinned headerStart/headerEnd slots, uses a separated footer,
381
+ and inherits compact navigation spacing from LayoutSidebarProvider by default.
382
+ - Enrich shell/account/workspace discovery, ship a complete shell recipe with
383
+ provider defaults, and add contextual compact-card/page-gutter review warnings.
384
+ Consumer guidance explicitly distinguishes Page padding from PageViewport scrolling.
385
+ - Card headers wrap by available content space rather than a named-container
386
+ breakpoint. App shell variants retain their width inside the sidebar provider;
387
+ UsageCard period headers no longer retain a vertical flex basis after wrapping.
388
+ - Preserve MetadataList primary value size in compact density. Separate framed
389
+ Card peers in provider/metadata examples and verify visible ring clearance.
390
+ Document card surface policy, header icon/placement and metadata hierarchy.
391
+ - Route KPI, revenue, statistics and quota discovery to the supported analytics
392
+ owners. Finder results link relevant symbols, focused references and recipe
393
+ exports; ship analytics and centered-resource recipes with installed checks.
394
+ - MonthYearPicker uses public Select menus for both nested selectors. Repair
395
+ confidence-dial centering, narrow table feedback, centered EmptyState copy,
396
+ floating email dismissal and responsive custom calendar event rendering.
397
+ - MediaLibrary adds titleSuffix and an optional onItemReplace request callback
398
+ for the inspected asset; unsupported replacement actions remain hidden.
399
+ - Pending overlay confirmations disable generated actions/dismissal and retain
400
+ modal keyboard focus; rejection restores retry. FormField no longer duplicates
401
+ a nested control's id onto a passive wrapper. Coupon/voucher previews exercise
402
+ validation, accepted results and removal through public callbacks.
403
+ - Dialog, confirmation and sheet title/description wrappers reset native margins,
404
+ keeping shared copy gaps correct without a consuming app's global preflight.
405
+ - Input and Textarea preserve loading when disabled is explicitly false, prevent
406
+ read-only clear actions, and clear registered/native values as well as form data.
407
+ - HeaderSearch truncates long placeholders within narrow parents; responsive
408
+ HeaderUserMenu triggers retain the signed-in user's full accessible name.
409
+ TaskCard retains its disclosure control beside wrapping header content.
410
+ - Add public-website discovery and a typed Container/Section service-page recipe,
411
+ preserving freedom to compose content without application chrome or KPI anatomy.
412
+ - InventorySection delegates responsive header wrapping to Card, preventing a
413
+ vertical flex basis from creating a large blank header on narrow screens.
414
+ - Analytics drawing follows live reduced-motion preferences with stable server
415
+ markup. Metric loading uses the shared Skeleton owner, and micro progress
416
+ disables its width transition when reduced motion is requested.
417
+ - Item owns border-box sizing, keeping padded Attachment rows inside Message
418
+ content even when an application has no global CSS reset.
419
+
3
420
  ## 1.0.1 — 2026-10-12
4
421
 
5
422
  - Consumer guidance now assigns task, scope, information priority and command
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A publishable React UI package built on Base UI and Tailwind, with shadcn-compatible themes and Themelia's public APIs. Routing, persistence, permissions and translations remain consumer-owned.
4
4
 
5
- Package: **`themelia-react-ui`** · current version: **`1.0.1`** · MIT licensed.
5
+ Package: **`themelia-react-ui`** · current version: **`2.0.0`** · MIT licensed.
6
6
  The GitHub repository is `themelia-react-ui`; npm imports use `themelia-react-ui`.
7
7
 
8
8
  Consuming apps start with [consumer setup](#consumer-setup) and the packaged
@@ -15,7 +15,7 @@ Commerce blocks include `Receipt` and `ReceiptItems` from `themelia-react-ui/blo
15
15
 
16
16
  ## Development
17
17
 
18
- For repository development and verification, use Node 24.12+ within the Node 24 line, or Node 26, and npm. CI pins 24.12.0; local checks ran on 26.3.1. The package consumer engine contract remains `>=22.12.0`, separate from the verification toolchain:
18
+ For repository development and verification, use Node 24.12+ within the Node 24 line, or Node 26, and npm. 24.12.0 is the minimum; local checks ran on 26.3.1. The package consumer engine contract remains `>=22.12.0`, separate from the verification toolchain:
19
19
 
20
20
  ```sh
21
21
  npm ci
@@ -31,6 +31,10 @@ The Vite React playground has foundations, a complete searchable catalogue, and
31
31
 
32
32
  `check` runs source/documentation checks, lint/design/types/unit checks, one library build, built declaration/skill and source-map checks, the installed package harness, then one preview build, in order. `check:all` adds the curated browser regression suite against that fresh static output, with zero retries. `test:browser` rebuilds the preview and runs those regressions independently. Exactly `deep-visual-audit.spec.ts` and `deep-audit-slices.spec.ts` are evidence collectors: `collect:browser` runs them separately, and their successful collection does not establish visual acceptance. Regression screenshots use per-test Playwright output paths. Set `THEMELIA_EVIDENCE_OUTPUT` to an explicit durable directory only when preserving a review; collectors also accept `AUDIT_OUTPUT`.
33
33
 
34
+ For quality reviews, reproduce each finding, repair its shared owner, inspect the
35
+ rendered result and execute the relevant behavior. Record those results in a
36
+ finding ledger using the [drift review guide](docs/maintainer-skills/themelia-cn-quality/drift-audit.md).
37
+
34
38
  Documentation refreshes are explicit: `docs:sync-preview` owns catalogue public symbols and authored literal selection guidance, `docs:sync-props` owns local prop names/types/required flags and branch constraints, and `docs:sync-skill` owns consumer references. Checks never refresh them. Existing props prose and defaults remain reviewed metadata; native fields and undisplayed historical nonpublic records remain imported evidence. Catalog digest fields retain their historical imported scope and are not freshness checks.
35
39
 
36
40
  Browser verification requires Playwright Chromium. An existing executable can be supplied through `PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH`.
@@ -60,7 +64,7 @@ export function Example() {
60
64
  <Card title="Account">
61
65
  <Stack gap="lg">
62
66
  <Input aria-label="Name" />
63
- <Button onClick={() => {}}>Save</Button>
67
+ <Button tone="primary" onClick={() => {}}>Save</Button>
64
68
  </Stack>
65
69
  </Card>
66
70
  </ThemeScope>
@@ -71,6 +75,8 @@ export function Example() {
71
75
 
72
76
  `UIProvider` is isolated and mount-once; configuration resolves explicit prop → provider default → fallback. Use direct props for per-instance state. It supports formatting, money, dates, comments, typography, density, items, buttons, badges, cards, toasts and spinners. `ThemeScope` is a CSS inheritance host; portaled menus, tooltips and overlays stay inside the nearest scope. Explicit Base UI portal containers take precedence.
73
77
 
78
+ The default primary is near-black, so status colors never compete with it. For the Themelia green brand, also import `themelia-react-ui/themes/green.css` after `style.css`. For your own brand, set `--primary` and `--primary-foreground` (light and `.dark`) at the root or a `ThemeScope`; `--primary-accent` follows `--primary`.
79
+
74
80
  Compiled `style.css` requires no source scanning and includes no global preflight. Your app supplies its reset. Load library CSS before app overrides. A Tailwind v4 application can additionally import `theme.css` after Tailwind to use the same mappings in its own classes; this editable file contains Tailwind directives and needs processing.
75
81
 
76
82
  React component chunks preserve `"use client"` boundaries for frameworks such as Next App Router. Pure utilities remain server-usable. Navigation uses native links, callbacks and render composition supplied by the consuming app.
@@ -136,15 +142,15 @@ The common geometry controls are:
136
142
  :root {
137
143
  --space-scale: 1;
138
144
  --density-scale: 1;
139
- --gap-normal: 0.5rem;
140
- --gap-dense: 0.25rem;
145
+ --gap-normal: 0.25rem;
146
+ --gap-dense: 0.125rem;
141
147
  --height-action: 2.25rem;
142
148
  --height-control: 2.25rem;
143
149
  --control-x: 0.75rem;
144
150
  --row-x: 0.75rem;
145
151
  --row-y: 0.5rem;
146
- --surface-x: 1rem;
147
- --surface-y: 1rem;
152
+ --surface-x: 1.25rem;
153
+ --surface-y: 1.25rem;
148
154
  }
149
155
  ```
150
156
 
@@ -153,7 +159,7 @@ The remaining roots cover icons/avatars, shell dimensions, content widths and ad
153
159
  Each default has one owner. There is no legacy token pipeline, JavaScript style engine, underscore prefix, or button-specific palette. Shared action/control, row, surface and text recipes prevent components from acquiring unrelated spacing or color systems.
154
160
 
155
161
  The additive copy-gap contract replaces scattered title/description gaps with
156
- `--gap-normal` (8px) and `--gap-dense` (4px), scaled once by `--space-scale`.
162
+ `--gap-normal` (4px) and `--gap-dense` (2px), scaled once by `--space-scale`.
157
163
  Headed surfaces accept `textGap`, and Stack/Grid accept the same semantic gap
158
164
  values. Existing spacing tiers and public roots remain available.
159
165
 
@@ -175,7 +181,7 @@ previous independent row tint. Existing explicit `indent` values are supported.
175
181
  - Children override `Text.content`, including zero. Inverse text uses the inverse foreground pair across themes; primary text uses the readable brand accent.
176
182
  - Primary button labels use the shared `text-sm` role across control sizes. Secondary buttons use the shadcn secondary surface/foreground pair.
177
183
  - Filter presets and saved views retain the `FilterTabs`/`SavedViewTabs` APIs but expose pressed buttons rather than tabs without panels. Arrow/Home/End navigation selects presets; use `aria-pressed` instead of `aria-selected` when querying this control.
178
- - Framed surfaces use their shared semantic border and outer-ring recipe; the `framed` variant and provider defaults remain available. Card header actions stay on the trailing side in wide containers and move below the full-width identity in narrow containers. Translated titles and suffix badges wrap within the leading region.
184
+ - Framed surfaces use their shared semantic border and outer-ring recipe; the `framed` variant and provider defaults remain available. Card headers wrap naturally when their title/copy and actions need more space, including inside differently named containers. Translated titles and suffix badges wrap within the leading region.
179
185
  - PopoverMenu matches plain labels/descriptions by default, preserves explicit `searchValue` overrides, and accepts `contentLabel`/`contentLabelledBy` for its popup name. Custom rows receive actual highlight state and own their structured markup.
180
186
  - AI copy feedback waits for a successful write. `onCopyError` and optional `strings.copyError` expose denied/unavailable writes; `onCopy` fires after success.
181
187
  - Card, badge, overlay and form geometry follows canonical shared recipes instead of obsolete source CSS module defaults. Typography has no incidental margins; structures own layout spacing.
@@ -199,15 +205,46 @@ Use `titleSuffix` for card status, count and version badges. `headerStart` is fu
199
205
 
200
206
  Application drawers use `ActionDrawer` and `useOverlayVisibility` from `themelia-react-ui/features/overlays`. Sheet is the structural foundation and remains available for lower-layer infrastructure and compatibility.
201
207
 
208
+ Page header commands are role-based: one `primaryAction` and ordered
209
+ `secondaryActions`, with overflow, destructive commands and narrow widths moved
210
+ into a More actions menu. Keep `actions` for non-command controls.
211
+ Page owns inline and block padding, defaulting to the large surface role;
212
+ PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
213
+ centered single resource; explicit `maxWidth` wins. Page headers use dense copy
214
+ gaps. Ordinary cards retain default `md` padding; configure header/footer rules
215
+ through UIProvider's `card.defaultHeaderDivider` and `card.defaultFooterDivider`.
216
+ AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
217
+ region, compact navigation and a separated footer. The
218
+ [complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
219
+ public workspace/account controls and application-owned callbacks.
220
+
221
+ Choose one ordinary card surface through `card.defaultSurface`; explicit per-card
222
+ surfaces win. Use Card's `icon` slot for routine header icons and `headerPlacement`
223
+ to choose inside/frame composition independently. Independent framed peers
224
+ usually use `gap="xl"`, since outer rings consume a smaller DOM gap.
225
+ MetadataList retains medium labels and normal primary values in both densities.
226
+ Dashboard KPIs use Metric/MetricGrid/MetricBar; quotas use the focused UsageCard
227
+ owner. See [analytics selection](docs/consumer-skill/references/analytics.md) and
228
+ the [resource page recipe](docs/consumer-skill/examples/detail.tsx).
229
+
230
+ The dated [whole-library review](docs/verification/2026-10-14-whole-library-review.md)
231
+ records repaired owners, rendered/interaction evidence and remaining coverage
232
+ limits separately from package checks.
233
+
202
234
  Consumer integration guidance is available in [the package consumer skill](docs/consumer-skill/SKILL.md). The token contract budgets 23 structural roots and 77 package-owned roots; derived utilities are implementation recipes, not additional customization settings.
203
235
 
236
+ Content-led websites can compose Container, Section, Stack/Grid, shared typography
237
+ and ordinary Card subjects without app chrome. The packaged
238
+ [website recipe](docs/consumer-skill/examples/website.tsx) demonstrates service
239
+ offers and real navigation links using the same theme and inset owners.
240
+
204
241
 
205
- Popover content uses `type="display"` for substantive content and `type="menu"` for collections. Mixed searchable menus use flush shells and compact region insets. `rounded-radius` is the package-wide default for cards, controls and popup shells. `rounded-inner` is opt-in for nested bodies or collection items, using the existing smaller tier. No separate surface radius or new public theme variable is introduced.
242
+ Popover content uses `type="display"` for substantive content and `type="menu"` for collections. Mixed searchable menus use flush shells and compact region insets. `--radius` defaults to 12px. Cards and popup/command shells use `rounded-radius`; controls, collection/navigation rows and nested bodies use the shared, height-bounded `rounded-inner` role (normally 9px). Both derive from the same public root. Consumers inherit these recipes; see the [theme contract](docs/consumer-skill/references/theming.md) for scaling and custom roots. No separate surface/control radius setting is introduced.
206
243
 
207
244
 
208
245
  ## Agent skill and consumer references
209
246
 
210
- The npm tarball ships the complete [consumer skill](docs/consumer-skill/SKILL.md), [discovery](docs/consumer-skill/references/discovery.md), [composition](docs/consumer-skill/references/composition.md), [integration](docs/consumer-skill/references/integration.md), [theme extension](docs/consumer-skill/references/theming.md) and [workflow](docs/consumer-skill/references/workflows.md) references. Its generated [public index](docs/consumer-skill/references/public-api.json) records exact imports, symbols, declarations and peer requirements; [the recipe manifest](docs/consumer-skill/examples/manifest.json) identifies all twelve runnable examples and their basic/optional phases. It contains no preview source or maintainer audit screenshots.
247
+ The npm tarball ships the complete [consumer skill](docs/consumer-skill/SKILL.md), [discovery](docs/consumer-skill/references/discovery.md), [composition](docs/consumer-skill/references/composition.md), [integration](docs/consumer-skill/references/integration.md), [theme extension](docs/consumer-skill/references/theming.md) and [workflow](docs/consumer-skill/references/workflows.md) references. Its generated [public index](docs/consumer-skill/references/public-api.json) records exact imports, symbols, declarations and peer requirements; [the recipe manifest](docs/consumer-skill/examples/manifest.json) identifies all runnable recipes and their basic/optional phases. It contains no preview source or maintainer audit screenshots.
211
248
 
212
249
  After installing the package, find a family using its real portable script:
213
250
 
@@ -219,8 +256,8 @@ Resolve the installed package and compare copied guidance using the [installed s
219
256
 
220
257
  Repository work uses the scoped [maintainer](docs/maintainer-skills/themelia-cn-maintainer/SKILL.md), [tokens](docs/maintainer-skills/themelia-cn-tokens/SKILL.md) and [quality](docs/maintainer-skills/themelia-cn-quality/SKILL.md) skills routed by [AGENTS.md](AGENTS.md). These repo-owned guides are excluded from the consumer package and do not replace separately installed skills.
221
258
 
222
- There is one packaged consumer skill with eight focused prose references, two
223
- generated indexes, twelve typed recipes and five helper scripts. Repository
259
+ There is one packaged consumer skill with nine focused prose references, two
260
+ generated indexes, fourteen typed recipe files and five helper scripts. Repository
224
261
  maintainer skills remain separate. The consumer entrypoint starts from task,
225
262
  context, information priority and command ownership and routes typography,
226
263
  layouts, theming, state/integration and verification detail to the relevant owner.
@@ -233,11 +270,15 @@ is a warning and dynamic/external styling needs review. `check:agent` verifies
233
270
  deterministic guidance infrastructure, not aesthetic judgment or new-task agent
234
271
  performance. Keep app-specific policy separate from the versioned package skill.
235
272
 
236
- Maintainers run `npm run docs:sync-skill` after changes to exports, types, selection guidance, peers or tokens. `npm run check:skill` requires a fresh library build and rejects stale source-backed references, built declaration exports and broken reference links. `prepack` checks source-backed references without rebuilding; `prepublishOnly` builds fresh assets and verifies built guidance. `check:package` verifies the complete shipped skill, then strictly compiles the eight basic recipes without optional peers and all twelve with their needed peers, alongside its installed runtime checks.
273
+ Finder results include relevant symbols and focused next reads for declarations,
274
+ references and exported recipes. This reduces the need to infer a component's
275
+ purpose from its name or read every document before starting a screen.
237
276
 
238
- Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/1.0.1/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
277
+ Maintainers run `npm run docs:sync-skill` after changes to exports, types, selection guidance, peers or tokens. `npm run check:skill` requires a fresh library build and rejects stale source-backed references, built declaration exports and broken reference links. `prepack` checks source-backed references without rebuilding; `prepublishOnly` builds fresh assets and verifies built guidance. `check:package` verifies the complete shipped skill, strictly compiles the basic recipes without optional peers and every recipe with its required peers, and executes installed shell/resource-page and workflow checks.
239
278
 
240
- `npm run check:agent` runs focused agent-consumption fixtures and built skill alignment. `npm run check:release` performs the real serial local build/package/browser/agent/static-documentation gate; it does not publish or deploy. See the [release guide](docs/releasing.md), [draft changelog](CHANGELOG.md) and [future GitHub Actions template](.github/workflows/ci.yml) for browser installation and explicit cold-cache handling. These commands verify locally; publication and deployment remain separate actions.
279
+ Build portable consumer documentation with `npm run build` followed by `npm run build:docs`. The generated [static entry](dist-docs/index.html) links to `dist-docs/2.0.0/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
280
+
281
+ `npm run check:agent` runs focused agent-consumption fixtures and built skill alignment. `npm run check:release` performs the real serial local build/package/browser/agent/static-documentation gate; it does not publish or deploy. `npm run check:quick` runs the everyday core (contract, lint, design lint, typecheck, unit tests, build). See the [release guide](docs/releasing.md) and [draft changelog](CHANGELOG.md). There is no hosted CI; every check runs locally, when you choose. These commands verify locally; publication and deployment remain separate actions.
241
282
 
242
283
  This package uses the [MIT license](LICENSE). Adapted shadcn/ui scaffolding retains its MIT attribution in [third-party notices](THIRD_PARTY_NOTICES.md). Package repository and issue metadata follow the configured Git remote. Repository-only links above describe checkout tooling; the complete consumer skill is shipped in the npm payload.
243
284
 
@@ -281,3 +322,13 @@ These families add no runtime dependencies or public token roots. AppSidebar's
281
322
  `searchable` option and controlled branch expansion extend the existing sidebar;
282
323
  routing and persistence remain consumer-owned. See the catalogue and packaged
283
324
  consumer recipes for the exact contracts.
325
+
326
+ Heading keeps semantic `tag` separate from optional visual `size` (`sm`, `base`,
327
+ `lg`, `xl`, `2xl`, `3xl`, `4xl`), using existing typography variables. The admin
328
+ default remains `base`; website examples opt into larger emphasis. Metric card,
329
+ bordered, accent and colored values use that shared scale. A card metric's `href`
330
+ is a native link; `onClick` without `href` is a native action.
331
+
332
+ Base Table exposes `containerProps` for the single scroll/focus wrapper;
333
+ `className` and other native table attributes still apply to the table itself.
334
+ DataTable uses that same wrapper for its localized scroll-region name.