themelia-react-ui 2.0.0 → 2.0.2

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 (707) hide show
  1. package/CHANGELOG.md +527 -0
  2. package/README.md +47 -14
  3. package/THIRD_PARTY_NOTICES.md +13 -0
  4. package/dist/accordion-Cjb6sx0G.js +208 -0
  5. package/dist/accordion-Cjb6sx0G.js.map +1 -0
  6. package/dist/action-menu-CllU52Mm.js +280 -0
  7. package/dist/action-menu-CllU52Mm.js.map +1 -0
  8. package/dist/affordance-geometry.generated-tF36bREk.js +140 -0
  9. package/dist/affordance-geometry.generated-tF36bREk.js.map +1 -0
  10. package/dist/ai-artifact-DvTwDVyL.js +1148 -0
  11. package/dist/ai-artifact-DvTwDVyL.js.map +1 -0
  12. package/dist/{app-shell-BE_j8-AT.js → app-shell-C4FhvCqF.js} +5 -5
  13. package/dist/{app-shell-BE_j8-AT.js.map → app-shell-C4FhvCqF.js.map} +1 -1
  14. package/dist/attachment-BxDfL2mw.js +246 -0
  15. package/dist/attachment-BxDfL2mw.js.map +1 -0
  16. package/dist/{auth-M3vGMgDR.js → auth-ax2BqjrI.js} +241 -235
  17. package/dist/auth-ax2BqjrI.js.map +1 -0
  18. package/dist/{avatar-djdaaQ_s.js → avatar-DAPlDvhJ.js} +67 -66
  19. package/dist/avatar-DAPlDvhJ.js.map +1 -0
  20. package/dist/badge-HpFqoqSY.js +93 -0
  21. package/dist/badge-HpFqoqSY.js.map +1 -0
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +3 -0
  28. package/dist/base/buttons.js +2 -3
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +50 -46
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +69 -81
  33. package/dist/base/cascader.js.map +1 -1
  34. package/dist/base/chart.js +1 -1
  35. package/dist/base/choice-inputs.js +3 -3
  36. package/dist/base/code-block.js +1 -1
  37. package/dist/base/combobox.js +2 -2
  38. package/dist/base/command.js +1 -1
  39. package/dist/base/copyable.js +1 -1
  40. package/dist/base/date-pickers.js +2 -2
  41. package/dist/base/display.js +7 -7
  42. package/dist/base/feedback.js +3 -3
  43. package/dist/base/forms-numeric.js +1 -1
  44. package/dist/base/forms.js +2 -2
  45. package/dist/base/inline-edit.js +20 -20
  46. package/dist/base/inline-edit.js.map +1 -1
  47. package/dist/base/item.js +1 -1
  48. package/dist/base/media-gallery.js +1 -1
  49. package/dist/base/metadata-list.js +3 -0
  50. package/dist/base/navigation.js +7 -7
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +1 -1
  54. package/dist/base/repeaters.js +216 -220
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +147 -137
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +79 -2
  62. package/dist/base/spinner.js.map +1 -0
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +2 -2
  66. package/dist/base/toaster.js +46 -45
  67. package/dist/base/toaster.js.map +1 -1
  68. package/dist/base/tree.js +1 -1
  69. package/dist/base/upload-queue.js +1 -1
  70. package/dist/base/upload.js +3 -3
  71. package/dist/base/value-inputs.js +2 -2
  72. package/dist/batch-action-bar-DnUJ21NQ.js +105 -0
  73. package/dist/batch-action-bar-DnUJ21NQ.js.map +1 -0
  74. package/dist/blocks/admin.js +171 -169
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +308 -285
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/usage-card.js +1 -1
  79. package/dist/blocks/analytics.js +626 -589
  80. package/dist/blocks/analytics.js.map +1 -1
  81. package/dist/blocks/collaboration.js +1 -1
  82. package/dist/blocks/commerce/receipt.js +1 -1
  83. package/dist/blocks/commerce.js +2051 -1329
  84. package/dist/blocks/commerce.js.map +1 -1
  85. package/dist/blocks/data-display.js +3 -2
  86. package/dist/blocks/onboarding.js +68 -58
  87. package/dist/blocks/onboarding.js.map +1 -1
  88. package/dist/blocks/planning.js +27 -26
  89. package/dist/blocks/planning.js.map +1 -1
  90. package/dist/blocks/timelines.js +1 -1
  91. package/dist/breadcrumbs-C-oqs1sQ.js +129 -0
  92. package/dist/breadcrumbs-C-oqs1sQ.js.map +1 -0
  93. package/dist/{button-R9CCoH7A.js → button-DVzspB_G.js} +15 -14
  94. package/dist/button-DVzspB_G.js.map +1 -0
  95. package/dist/{button-BS3KDg00.js → buttons-DPZekJFu.js} +208 -216
  96. package/dist/buttons-DPZekJFu.js.map +1 -0
  97. package/dist/cards-BaBZR-AU.js +68 -0
  98. package/dist/cards-BaBZR-AU.js.map +1 -0
  99. package/dist/{chart-DwYRKKc-.js → chart-ZOYyK2xG.js} +58 -55
  100. package/dist/chart-ZOYyK2xG.js.map +1 -0
  101. package/dist/checkbox-AWIhNhmo.js +36 -0
  102. package/dist/checkbox-AWIhNhmo.js.map +1 -0
  103. package/dist/choice-inputs-CNHvARCJ.js +770 -0
  104. package/dist/choice-inputs-CNHvARCJ.js.map +1 -0
  105. package/dist/code-block-DeneBJR_.js +185 -0
  106. package/dist/code-block-DeneBJR_.js.map +1 -0
  107. package/dist/{collapsible-oMUGM4tr.js → collapsible-C-_l4hpy.js} +4 -4
  108. package/dist/{collapsible-oMUGM4tr.js.map → collapsible-C-_l4hpy.js.map} +1 -1
  109. package/dist/{collection-content-Ys-OZOkY.js → collection-content-By56pLog.js} +3 -3
  110. package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-By56pLog.js.map} +1 -1
  111. package/dist/combobox-C0EQW6dr.js +875 -0
  112. package/dist/combobox-C0EQW6dr.js.map +1 -0
  113. package/dist/combobox-xCQ2RMNE.js +309 -0
  114. package/dist/combobox-xCQ2RMNE.js.map +1 -0
  115. package/dist/{command-kPMPjIxJ.js → command-C25VMRII.js} +7 -7
  116. package/dist/{command-kPMPjIxJ.js.map → command-C25VMRII.js.map} +1 -1
  117. package/dist/{comments-You0Bzbr.js → comments-BYYlTA8E.js} +390 -379
  118. package/dist/comments-BYYlTA8E.js.map +1 -0
  119. package/dist/components/base/action-menu/action-menu.d.ts +21 -4
  120. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  121. package/dist/components/base/action-menu/index.d.ts +1 -0
  122. package/dist/components/base/badge/badge.recipes.d.ts +5 -5
  123. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  124. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  125. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  126. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  127. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  128. package/dist/components/base/buttons/loader-button.d.ts +2 -1
  129. package/dist/components/base/cards/card.recipes.d.ts +2 -3
  130. package/dist/components/base/cards/partials/smart-card-skeleton.d.ts +3 -13
  131. package/dist/components/base/cards/smart-card.types.d.ts +11 -4
  132. package/dist/components/base/chart/chart.d.ts +2 -5
  133. package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
  134. package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
  135. package/dist/components/base/combobox/combobox.strings.d.ts +7 -0
  136. package/dist/components/base/combobox/index.d.ts +30 -4
  137. package/dist/components/base/display/alert-dialog.d.ts +6 -5
  138. package/dist/components/base/display/dialog.d.ts +4 -8
  139. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  140. package/dist/components/base/forms/form-sizing.d.ts +26 -15
  141. package/dist/components/base/metadata-list/index.d.ts +12 -0
  142. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  143. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  144. package/dist/components/base/navigation/index.d.ts +1 -1
  145. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  146. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  147. package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
  148. package/dist/components/base/navigation/pagination.d.ts +5 -2
  149. package/dist/components/base/popover/popover.recipes.d.ts +15 -1
  150. package/dist/components/base/sheet/sheet.d.ts +4 -8
  151. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  152. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  153. package/dist/components/base/table/index.d.ts +9 -2
  154. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  155. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  156. package/dist/components/base/upload/upload.recipes.d.ts +25 -3
  157. package/dist/components/base/value-inputs/index.d.ts +5 -5
  158. package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
  159. package/dist/components/blocks/ai/ai-shimmer/ai-shimmer.d.ts +1 -1
  160. package/dist/components/blocks/ai/ai-shimmer/types.d.ts +3 -0
  161. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  162. package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
  163. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  164. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  165. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  166. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  167. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  168. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  169. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  170. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  171. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +45 -0
  172. package/dist/components/blocks/commerce/index.d.ts +13 -5
  173. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  174. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  175. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  176. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  177. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  178. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  179. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  180. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  181. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  182. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  183. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  184. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  185. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  186. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  187. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  188. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  189. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  190. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  191. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  192. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  193. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  194. package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
  195. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  196. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  197. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  198. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  199. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  200. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  201. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  202. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  203. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  204. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  205. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  206. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  207. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  208. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  209. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +16 -8
  210. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  211. package/dist/components/features/activities/partials/activity-marker.d.ts +6 -3
  212. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  213. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  214. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +5 -0
  215. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +220 -0
  216. package/dist/components/features/appointment-calendar/appointment-calendar.utils.d.ts +41 -0
  217. package/dist/components/features/appointment-calendar/index.d.ts +3 -0
  218. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +32 -0
  219. package/dist/components/features/appointment-calendar/partials/appointment-month.d.ts +13 -0
  220. package/dist/components/features/combobox/combobox.strings.d.ts +15 -1
  221. package/dist/components/features/combobox/types.d.ts +4 -0
  222. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  223. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  224. package/dist/components/features/kanban/kanban.d.ts +1 -1
  225. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  226. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  227. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  228. package/dist/components/features/media-library/index.d.ts +1 -1
  229. package/dist/components/features/media-library/media-library.d.ts +1 -1
  230. package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
  231. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  232. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  233. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  234. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  235. package/dist/components/features/overlays/dialog.d.ts +1 -1
  236. package/dist/components/features/overlays/index.d.ts +1 -1
  237. package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
  238. package/dist/components/features/overlays/overlays.types.d.ts +20 -0
  239. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  240. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  241. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  242. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  243. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  244. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  245. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  246. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  247. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  248. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  249. package/dist/components/features/products/products.types.d.ts +9 -2
  250. package/dist/components/features/resource/index.d.ts +1 -1
  251. package/dist/components/features/resource/resource.d.ts +1 -1
  252. package/dist/components/features/resource/resource.types.d.ts +34 -6
  253. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  254. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  255. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  256. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  257. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +7 -1
  258. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  259. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +54 -1
  260. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  261. package/dist/components/features/sync/index.d.ts +26 -3
  262. package/dist/components/features/table/data-table.d.ts +1 -1
  263. package/dist/components/features/table/table-header.d.ts +1 -1
  264. package/dist/components/features/table/table.strings.d.ts +55 -1
  265. package/dist/components/features/table/table.types.d.ts +49 -11
  266. package/dist/components/features/theme-tweaker/theme-tweaker.types.d.ts +5 -0
  267. package/dist/components/layout/page/index.d.ts +1 -1
  268. package/dist/components/layout/page/page.types.d.ts +33 -36
  269. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  270. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  271. package/dist/components/layout/settings/settings.d.ts +16 -2
  272. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  273. package/dist/components/primitives/number.d.ts +4 -2
  274. package/dist/components/primitives/value.d.ts +3 -1
  275. package/dist/components/typography/rich-text/index.d.ts +1 -1
  276. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  277. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  278. package/dist/components/typography/text-link.d.ts +8 -3
  279. package/dist/components/ui/checkbox.d.ts +4 -3
  280. package/dist/components/ui/combobox.d.ts +6 -2
  281. package/dist/components/ui/item.d.ts +8 -8
  282. package/dist/components/ui/overlay.recipes.d.ts +0 -9
  283. package/dist/components/ui/switch.d.ts +2 -2
  284. package/dist/components/ui/tabs.d.ts +1 -1
  285. package/dist/{containers-D_L4mTVb.js → containers-Mu1LMGV1.js} +36 -35
  286. package/dist/containers-Mu1LMGV1.js.map +1 -0
  287. package/dist/{copyable-DDjTeW_j.js → copyable-ClBuk_UK.js} +6 -6
  288. package/dist/{copyable-DDjTeW_j.js.map → copyable-ClBuk_UK.js.map} +1 -1
  289. package/dist/data-display-DT_khPl_.js +971 -0
  290. package/dist/data-display-DT_khPl_.js.map +1 -0
  291. package/dist/{date-uf3z37Nm.js → date-DCrsDTZc.js} +5 -5
  292. package/dist/{date-uf3z37Nm.js.map → date-DCrsDTZc.js.map} +1 -1
  293. package/dist/date-picker-ay0Pha_a.js +1530 -0
  294. package/dist/date-picker-ay0Pha_a.js.map +1 -0
  295. package/dist/date-pickers-Ccw8DL2b.js +175 -0
  296. package/dist/date-pickers-Ccw8DL2b.js.map +1 -0
  297. package/dist/display-hAc1HjpI.js +344 -0
  298. package/dist/display-hAc1HjpI.js.map +1 -0
  299. package/dist/dropdown-menu-Cl4X7L5S.js +193 -0
  300. package/dist/dropdown-menu-Cl4X7L5S.js.map +1 -0
  301. package/dist/editable-text-recipe-Cn61kEcv.js +10 -0
  302. package/dist/editable-text-recipe-Cn61kEcv.js.map +1 -0
  303. package/dist/features/activities.js +478 -542
  304. package/dist/features/activities.js.map +1 -1
  305. package/dist/features/ai-chat.js +209 -199
  306. package/dist/features/ai-chat.js.map +1 -1
  307. package/dist/features/appointment-calendar.js +683 -0
  308. package/dist/features/appointment-calendar.js.map +1 -0
  309. package/dist/features/async-preview.js +109 -107
  310. package/dist/features/async-preview.js.map +1 -1
  311. package/dist/features/combobox.js +1 -1
  312. package/dist/features/comments.js +1 -1
  313. package/dist/features/data-view.js +30 -29
  314. package/dist/features/data-view.js.map +1 -1
  315. package/dist/features/email-composer/engine.js +1 -1
  316. package/dist/features/email-composer.js +285 -283
  317. package/dist/features/email-composer.js.map +1 -1
  318. package/dist/features/event-calendar.js +282 -273
  319. package/dist/features/event-calendar.js.map +1 -1
  320. package/dist/features/filters.js +1 -1
  321. package/dist/features/global-search.js +318 -318
  322. package/dist/features/global-search.js.map +1 -1
  323. package/dist/features/kanban.js +146 -147
  324. package/dist/features/kanban.js.map +1 -1
  325. package/dist/features/map.js +269 -268
  326. package/dist/features/map.js.map +1 -1
  327. package/dist/features/media-library.js +970 -863
  328. package/dist/features/media-library.js.map +1 -1
  329. package/dist/features/mentions.js +1 -1
  330. package/dist/features/overlays.js +1 -1
  331. package/dist/features/products.js +1137 -1124
  332. package/dist/features/products.js.map +1 -1
  333. package/dist/features/questionnaire.js +206 -194
  334. package/dist/features/questionnaire.js.map +1 -1
  335. package/dist/features/resource-assignment.js +24 -21
  336. package/dist/features/resource-assignment.js.map +1 -1
  337. package/dist/features/resource.js +77 -69
  338. package/dist/features/resource.js.map +1 -1
  339. package/dist/features/rich-text-editor.js +30 -11
  340. package/dist/features/rich-text-editor.js.map +1 -1
  341. package/dist/features/schema-form.js +35 -33
  342. package/dist/features/schema-form.js.map +1 -1
  343. package/dist/features/suggestions.js +3 -3
  344. package/dist/features/sync.js +11 -5
  345. package/dist/features/sync.js.map +1 -1
  346. package/dist/features/table.js +1 -1
  347. package/dist/features/theme-tweaker.js +501 -496
  348. package/dist/features/theme-tweaker.js.map +1 -1
  349. package/dist/feedback-BYIhtitP.js +239 -0
  350. package/dist/feedback-BYIhtitP.js.map +1 -0
  351. package/dist/field-affordance-recipes-DZhnIL_Y.js +41 -0
  352. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +1 -0
  353. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  354. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  355. package/dist/{filters-Da-gNPsE.js → filters-BGfvjP4d.js} +483 -472
  356. package/dist/filters-BGfvjP4d.js.map +1 -0
  357. package/dist/focus-recipes-B653VaLq.js +12 -0
  358. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  359. package/dist/{form-field-VZRULhUK.js → form-field-CwH9y77i.js} +6 -5
  360. package/dist/form-field-CwH9y77i.js.map +1 -0
  361. package/dist/{form-sizing-uWP4lzVh.js → form-sizing-BdP_Mf5p.js} +45 -46
  362. package/dist/form-sizing-BdP_Mf5p.js.map +1 -0
  363. package/dist/{forms-DDeEnXSY.js → forms-B9G_xwzi.js} +22 -22
  364. package/dist/{forms-DDeEnXSY.js.map → forms-B9G_xwzi.js.map} +1 -1
  365. package/dist/forms-numeric-B_jraJaQ.js +906 -0
  366. package/dist/forms-numeric-B_jraJaQ.js.map +1 -0
  367. package/dist/{header-2ycNqGOR.js → header-CGXuhcRm.js} +164 -161
  368. package/dist/header-CGXuhcRm.js.map +1 -0
  369. package/dist/{hooks-DQ5SPwZw.js → hooks-Dkz0K2WT.js} +2 -2
  370. package/dist/{hooks-DQ5SPwZw.js.map → hooks-Dkz0K2WT.js.map} +1 -1
  371. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  372. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  373. package/dist/icon-badge-DYKIwvOV.js +55 -0
  374. package/dist/icon-badge-DYKIwvOV.js.map +1 -0
  375. package/dist/index.js +7 -7
  376. package/dist/input-CZw8iU99.js +21 -0
  377. package/dist/input-CZw8iU99.js.map +1 -0
  378. package/dist/input-DQdEd0YD.js +263 -0
  379. package/dist/input-DQdEd0YD.js.map +1 -0
  380. package/dist/interaction-recipes-XR9ZpVYL.js +25 -0
  381. package/dist/interaction-recipes-XR9ZpVYL.js.map +1 -0
  382. package/dist/item-K5_ghvze.js +275 -0
  383. package/dist/item-K5_ghvze.js.map +1 -0
  384. package/dist/layer-recipes-CCpklYME.js +13 -0
  385. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  386. package/dist/layout/app-shell.js +1 -1
  387. package/dist/layout/auth.js +1 -1
  388. package/dist/layout/containers.js +1 -1
  389. package/dist/layout/header.js +1 -1
  390. package/dist/layout/hooks.js +1 -1
  391. package/dist/layout/navigation.js +1 -1
  392. package/dist/layout/page.js +1 -1
  393. package/dist/layout/settings.js +1 -1
  394. package/dist/layout/sidebar.js +2 -2
  395. package/dist/layout/workspace.js +1 -1
  396. package/dist/layout.js +10 -10
  397. package/dist/lib/affordance-geometry.generated.d.ts +72 -0
  398. package/dist/lib/editable-text-recipe.d.ts +4 -4
  399. package/dist/lib/field-affordance-recipes.d.ts +8 -3
  400. package/dist/lib/field-state-recipes.d.ts +9 -8
  401. package/dist/lib/focus-recipes.d.ts +24 -0
  402. package/dist/lib/interaction-recipes.d.ts +40 -0
  403. package/dist/lib/layer-recipes.d.ts +19 -0
  404. package/dist/lib/motion-recipes.d.ts +1 -0
  405. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
  406. package/dist/lib/safe-image-src.d.ts +10 -0
  407. package/dist/lib/sanitize-html.d.ts +15 -3
  408. package/dist/lib/surface-recipes.d.ts +47 -7
  409. package/dist/lib/theme-mode-css.d.ts +7 -0
  410. package/dist/lib/token-merge.generated.d.ts +9 -6
  411. package/dist/lib/tone-recipes.d.ts +87 -0
  412. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  413. package/dist/lib/ui-provider/index.d.ts +2 -2
  414. package/dist/lib/ui-provider/types.d.ts +11 -2
  415. package/dist/lib/utils.js +1 -1
  416. package/dist/media-gallery-3zIVLMWH.js +203 -0
  417. package/dist/media-gallery-3zIVLMWH.js.map +1 -0
  418. package/dist/mentions-utuUvH1K.js +570 -0
  419. package/dist/mentions-utuUvH1K.js.map +1 -0
  420. package/dist/{message-YfFmbXNP.js → message-DZ_ruyUV.js} +7 -6
  421. package/dist/message-DZ_ruyUV.js.map +1 -0
  422. package/dist/metadata-list-8N16ZMW_.js +405 -0
  423. package/dist/metadata-list-8N16ZMW_.js.map +1 -0
  424. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  425. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  426. package/dist/navigation-Bnotn4AQ.js +145 -0
  427. package/dist/navigation-Bnotn4AQ.js.map +1 -0
  428. package/dist/navigation-BzhHI3lo.js +269 -0
  429. package/dist/navigation-BzhHI3lo.js.map +1 -0
  430. package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BFLCk_Aq.js} +2 -2
  431. package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BFLCk_Aq.js.map} +1 -1
  432. package/dist/{number-CKRBYmZK.js → number-DbV1Dija.js} +36 -34
  433. package/dist/{number-CKRBYmZK.js.map → number-DbV1Dija.js.map} +1 -1
  434. package/dist/overflow-tab-bar-CWY7Nogn.js +282 -0
  435. package/dist/overflow-tab-bar-CWY7Nogn.js.map +1 -0
  436. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  437. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  438. package/dist/overlays-DNWmZrJ4.js +1001 -0
  439. package/dist/overlays-DNWmZrJ4.js.map +1 -0
  440. package/dist/page-Bgl1F560.js +224 -0
  441. package/dist/page-Bgl1F560.js.map +1 -0
  442. package/dist/page-header-commands-DOb6WsfD.js +126 -0
  443. package/dist/page-header-commands-DOb6WsfD.js.map +1 -0
  444. package/dist/pagination-BL25hu2s.js +158 -0
  445. package/dist/pagination-BL25hu2s.js.map +1 -0
  446. package/dist/{popover-Dcv_9jxr.js → popover-7_m66eYW.js} +11 -10
  447. package/dist/popover-7_m66eYW.js.map +1 -0
  448. package/dist/popover-menu-B9WWygpa.js +100 -0
  449. package/dist/popover-menu-B9WWygpa.js.map +1 -0
  450. package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-D3j8R8Yp.js} +18 -11
  451. package/dist/popover.recipes-D3j8R8Yp.js.map +1 -0
  452. package/dist/{primitives-BHrwQXFC.js → primitives-BFK08r9M.js} +45 -44
  453. package/dist/primitives-BFK08r9M.js.map +1 -0
  454. package/dist/primitives.js +4 -4
  455. package/dist/{progress-Br9WTFya.js → progress-B1VnCT0K.js} +9 -9
  456. package/dist/{progress-Br9WTFya.js.map → progress-B1VnCT0K.js.map} +1 -1
  457. package/dist/{receipt-CV89q1fs.js → receipt-BVSOH3Xo.js} +9 -6
  458. package/dist/{receipt-CV89q1fs.js.map → receipt-BVSOH3Xo.js.map} +1 -1
  459. package/dist/rich-text-GOUyKQ-s.js +78 -0
  460. package/dist/rich-text-GOUyKQ-s.js.map +1 -0
  461. package/dist/rich-text-editor-cRLC-eBK.js +1196 -0
  462. package/dist/rich-text-editor-cRLC-eBK.js.map +1 -0
  463. package/dist/rich-text-editor-toolbar-DfXg0-VC.js +94 -0
  464. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +1 -0
  465. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  466. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  467. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  468. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  469. package/dist/sanitize-html-DsQmI48u.js +92 -0
  470. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  471. package/dist/scroll-area-DcI-M1UT.js +48 -0
  472. package/dist/scroll-area-DcI-M1UT.js.map +1 -0
  473. package/dist/{separator-Do5GWDYi.js → separator-BDV-Y648.js} +3 -3
  474. package/dist/{separator-Do5GWDYi.js.map → separator-BDV-Y648.js.map} +1 -1
  475. package/dist/{separator-BMEvwnSX.js → separator-Bom7NsGO.js} +2 -2
  476. package/dist/{separator-BMEvwnSX.js.map → separator-Bom7NsGO.js.map} +1 -1
  477. package/dist/services/actions/action-adapters.d.ts +18 -0
  478. package/dist/services/actions/index.d.ts +1 -1
  479. package/dist/services/actions.js +16 -4
  480. package/dist/services/actions.js.map +1 -1
  481. package/dist/settings-ybnjVwbd.js +171 -0
  482. package/dist/settings-ybnjVwbd.js.map +1 -0
  483. package/dist/sheet-CGpB3omz.js +211 -0
  484. package/dist/sheet-CGpB3omz.js.map +1 -0
  485. package/dist/{sidebar-Cb8WzOvE.js → sidebar-A0ElHINE.js} +17 -16
  486. package/dist/sidebar-A0ElHINE.js.map +1 -0
  487. package/dist/{sidebar-Crc9M9JV.js → sidebar-CPx_7YBa.js} +205 -203
  488. package/dist/sidebar-CPx_7YBa.js.map +1 -0
  489. package/dist/{skeleton-DVMXr15h.js → skeleton-Byjnt7qr.js} +9 -9
  490. package/dist/{skeleton-DVMXr15h.js.map → skeleton-Byjnt7qr.js.map} +1 -1
  491. package/dist/smart-card-DiC5aac3.js +604 -0
  492. package/dist/smart-card-DiC5aac3.js.map +1 -0
  493. package/dist/{structure-hzCW-XsV.js → structure-BmisBK-3.js} +2 -2
  494. package/dist/{structure-hzCW-XsV.js.map → structure-BmisBK-3.js.map} +1 -1
  495. package/dist/style.css +1 -1
  496. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  497. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  498. package/dist/table-BweFy_P9.js +1530 -0
  499. package/dist/table-BweFy_P9.js.map +1 -0
  500. package/dist/table-DsfzoUia.js +175 -0
  501. package/dist/table-DsfzoUia.js.map +1 -0
  502. package/dist/tabs-CDocW5D1.js +191 -0
  503. package/dist/tabs-CDocW5D1.js.map +1 -0
  504. package/dist/text-inputs-f9Ia-aCi.js +353 -0
  505. package/dist/text-inputs-f9Ia-aCi.js.map +1 -0
  506. package/dist/theme-mode-css-BB-_RYab.js +14 -0
  507. package/dist/theme-mode-css-BB-_RYab.js.map +1 -0
  508. package/dist/theme-scope-BJ6eE2xt.js +50 -0
  509. package/dist/theme-scope-BJ6eE2xt.js.map +1 -0
  510. package/dist/theme.css +285 -228
  511. package/dist/themes/green.css +16 -12
  512. package/dist/timelines-CwM_9IhD.js +457 -0
  513. package/dist/timelines-CwM_9IhD.js.map +1 -0
  514. package/dist/tone-recipes-BPsRAvhu.js +73 -0
  515. package/dist/tone-recipes-BPsRAvhu.js.map +1 -0
  516. package/dist/tooltip-yiRJUFjp.js +111 -0
  517. package/dist/tooltip-yiRJUFjp.js.map +1 -0
  518. package/dist/{tree-BotPlyiD.js → tree-WnKQzwbq.js} +69 -67
  519. package/dist/tree-WnKQzwbq.js.map +1 -0
  520. package/dist/typography/rich-text.js +1 -1
  521. package/dist/typography-UTnveOEy.js +117 -0
  522. package/dist/typography-UTnveOEy.js.map +1 -0
  523. package/dist/typography.js +2 -2
  524. package/dist/{ui-provider-D2_TeLqw.js → ui-provider-C_U0Xma4.js} +13 -5
  525. package/dist/ui-provider-C_U0Xma4.js.map +1 -0
  526. package/dist/ui-provider.js +3 -3
  527. package/dist/{upload-B0WHW7ak.js → upload-CXyxmQBP.js} +210 -209
  528. package/dist/upload-CXyxmQBP.js.map +1 -0
  529. package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-Boscubn9.js} +111 -111
  530. package/dist/upload-queue-Boscubn9.js.map +1 -0
  531. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  532. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  533. package/dist/{usage-card-U0YBLTNT.js → usage-card-BhO5eqkX.js} +45 -29
  534. package/dist/usage-card-BhO5eqkX.js.map +1 -0
  535. package/dist/{utils-Cospvlj1.js → utils-BRhFDwuU.js} +114 -67
  536. package/dist/utils-BRhFDwuU.js.map +1 -0
  537. package/dist/value-inputs-DXPDjvBU.js +963 -0
  538. package/dist/value-inputs-DXPDjvBU.js.map +1 -0
  539. package/dist/{value-typography-Deb3yQZg.js → value-typography-BP8OG6h5.js} +2 -2
  540. package/dist/{value-typography-Deb3yQZg.js.map → value-typography-BP8OG6h5.js.map} +1 -1
  541. package/dist/workspace-Cdrg7k9f.js +408 -0
  542. package/dist/workspace-Cdrg7k9f.js.map +1 -0
  543. package/docs/consumer-skill/SKILL.md +21 -22
  544. package/docs/consumer-skill/examples/app-layout.tsx +1 -1
  545. package/docs/consumer-skill/examples/composition.tsx +3 -3
  546. package/docs/consumer-skill/examples/detail.tsx +59 -12
  547. package/docs/consumer-skill/examples/edit.tsx +1 -1
  548. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  549. package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
  550. package/docs/consumer-skill/examples/website.tsx +1 -1
  551. package/docs/consumer-skill/references/agents-md.md +33 -0
  552. package/docs/consumer-skill/references/analytics.md +1 -1
  553. package/docs/consumer-skill/references/composition.md +58 -13
  554. package/docs/consumer-skill/references/design-contract.md +12 -3
  555. package/docs/consumer-skill/references/installation.md +11 -1
  556. package/docs/consumer-skill/references/integration.md +4 -3
  557. package/docs/consumer-skill/references/public-api.json +956 -453
  558. package/docs/consumer-skill/references/review.md +32 -5
  559. package/docs/consumer-skill/references/theming.md +78 -9
  560. package/docs/consumer-skill/references/tokens.json +1 -1
  561. package/docs/consumer-skill/references/workflows.md +54 -10
  562. package/docs/consumer-skill/scripts/composition-policy.mjs +42 -11
  563. package/docs/consumer-skill/scripts/surface-policy.mjs +150 -5
  564. package/package.json +17 -5
  565. package/dist/accordion-CQXVcd7Q.js +0 -205
  566. package/dist/accordion-CQXVcd7Q.js.map +0 -1
  567. package/dist/action-menu-BTpyPWJ2.js +0 -264
  568. package/dist/action-menu-BTpyPWJ2.js.map +0 -1
  569. package/dist/affordance-geometry.generated-CCIXb2A1.js +0 -68
  570. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
  571. package/dist/ai-artifact-2PQ2fItc.js +0 -1112
  572. package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
  573. package/dist/attachment-q69dlt5Y.js +0 -244
  574. package/dist/attachment-q69dlt5Y.js.map +0 -1
  575. package/dist/auth-M3vGMgDR.js.map +0 -1
  576. package/dist/avatar-djdaaQ_s.js.map +0 -1
  577. package/dist/badge-0tATj-tW.js +0 -92
  578. package/dist/badge-0tATj-tW.js.map +0 -1
  579. package/dist/breadcrumbs-BG_FfMK4.js +0 -128
  580. package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
  581. package/dist/button-BS3KDg00.js.map +0 -1
  582. package/dist/button-R9CCoH7A.js.map +0 -1
  583. package/dist/buttons-DS0ZIwJ_.js +0 -99
  584. package/dist/buttons-DS0ZIwJ_.js.map +0 -1
  585. package/dist/cards-QoJ4syG9.js +0 -66
  586. package/dist/cards-QoJ4syG9.js.map +0 -1
  587. package/dist/chart-DwYRKKc-.js.map +0 -1
  588. package/dist/checkbox-B7ygNTYp.js +0 -35
  589. package/dist/checkbox-B7ygNTYp.js.map +0 -1
  590. package/dist/choice-inputs-DrJ17tpL.js +0 -752
  591. package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
  592. package/dist/code-block-CD0B7M93.js +0 -183
  593. package/dist/code-block-CD0B7M93.js.map +0 -1
  594. package/dist/combobox-6dvVny2q.js +0 -272
  595. package/dist/combobox-6dvVny2q.js.map +0 -1
  596. package/dist/combobox-CB7039j7.js +0 -865
  597. package/dist/combobox-CB7039j7.js.map +0 -1
  598. package/dist/comments-You0Bzbr.js.map +0 -1
  599. package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
  600. package/dist/containers-D_L4mTVb.js.map +0 -1
  601. package/dist/data-display-3xWQUnMA.js +0 -1335
  602. package/dist/data-display-3xWQUnMA.js.map +0 -1
  603. package/dist/date-picker-DrDFj8Lo.js +0 -1527
  604. package/dist/date-picker-DrDFj8Lo.js.map +0 -1
  605. package/dist/date-pickers-CnFCb0n2.js +0 -174
  606. package/dist/date-pickers-CnFCb0n2.js.map +0 -1
  607. package/dist/display-DrdvPwF0.js +0 -343
  608. package/dist/display-DrdvPwF0.js.map +0 -1
  609. package/dist/dropdown-menu-CURh59jb.js +0 -193
  610. package/dist/dropdown-menu-CURh59jb.js.map +0 -1
  611. package/dist/editable-text-recipe-Bkm6wKHp.js +0 -10
  612. package/dist/editable-text-recipe-Bkm6wKHp.js.map +0 -1
  613. package/dist/feedback-C7nR0UtT.js +0 -232
  614. package/dist/feedback-C7nR0UtT.js.map +0 -1
  615. package/dist/field-affordance-recipes-CkOCdE2y.js +0 -46
  616. package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
  617. package/dist/field-state-recipes-C-MFBX_8.js +0 -11
  618. package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
  619. package/dist/filters-Da-gNPsE.js.map +0 -1
  620. package/dist/form-field-VZRULhUK.js.map +0 -1
  621. package/dist/form-sizing-uWP4lzVh.js.map +0 -1
  622. package/dist/forms-numeric-D3CO60IF.js +0 -905
  623. package/dist/forms-numeric-D3CO60IF.js.map +0 -1
  624. package/dist/header-2ycNqGOR.js.map +0 -1
  625. package/dist/icon-badge-DKlaKXoo.js +0 -53
  626. package/dist/icon-badge-DKlaKXoo.js.map +0 -1
  627. package/dist/input-BoLm9Hks.js +0 -20
  628. package/dist/input-BoLm9Hks.js.map +0 -1
  629. package/dist/input-DhQdBnV3.js +0 -255
  630. package/dist/input-DhQdBnV3.js.map +0 -1
  631. package/dist/item-xzh8Df65.js +0 -264
  632. package/dist/item-xzh8Df65.js.map +0 -1
  633. package/dist/media-gallery-DQUQ0m3O.js +0 -201
  634. package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
  635. package/dist/mentions-DwnO1hh4.js +0 -564
  636. package/dist/mentions-DwnO1hh4.js.map +0 -1
  637. package/dist/message-YfFmbXNP.js.map +0 -1
  638. package/dist/navigation-Cbp5V8gG.js +0 -264
  639. package/dist/navigation-Cbp5V8gG.js.map +0 -1
  640. package/dist/navigation-Cs1npsPm.js +0 -300
  641. package/dist/navigation-Cs1npsPm.js.map +0 -1
  642. package/dist/overlay.recipes-CNO2S9V6.js +0 -34
  643. package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
  644. package/dist/overlays-DhZO7N-I.js +0 -994
  645. package/dist/overlays-DhZO7N-I.js.map +0 -1
  646. package/dist/page-C6R_8jFt.js +0 -325
  647. package/dist/page-C6R_8jFt.js.map +0 -1
  648. package/dist/page-header-hUTzcRZX.js +0 -112
  649. package/dist/page-header-hUTzcRZX.js.map +0 -1
  650. package/dist/pagination-Cm0jqa3I.js +0 -149
  651. package/dist/pagination-Cm0jqa3I.js.map +0 -1
  652. package/dist/popover-Dcv_9jxr.js.map +0 -1
  653. package/dist/popover-menu-DnRFKnHP.js +0 -99
  654. package/dist/popover-menu-DnRFKnHP.js.map +0 -1
  655. package/dist/popover.recipes-wmbvL8Ah.js.map +0 -1
  656. package/dist/primitives-BHrwQXFC.js.map +0 -1
  657. package/dist/rich-text-editor-CF8QYt5p.js +0 -574
  658. package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
  659. package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
  660. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
  661. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  662. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  663. package/dist/rich-text-j-FGAeZW.js +0 -32
  664. package/dist/rich-text-j-FGAeZW.js.map +0 -1
  665. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  666. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  667. package/dist/scroll-area-DRdr16Pt.js +0 -47
  668. package/dist/scroll-area-DRdr16Pt.js.map +0 -1
  669. package/dist/settings-DHk0L2MF.js +0 -161
  670. package/dist/settings-DHk0L2MF.js.map +0 -1
  671. package/dist/sheet-DRFNY1_D.js +0 -207
  672. package/dist/sheet-DRFNY1_D.js.map +0 -1
  673. package/dist/sidebar-Cb8WzOvE.js.map +0 -1
  674. package/dist/sidebar-Crc9M9JV.js.map +0 -1
  675. package/dist/smart-card-Bek-TwUp.js +0 -599
  676. package/dist/smart-card-Bek-TwUp.js.map +0 -1
  677. package/dist/spinner-CmTAbEp0.js +0 -80
  678. package/dist/spinner-CmTAbEp0.js.map +0 -1
  679. package/dist/surface-recipes-DOdoBXGm.js +0 -28
  680. package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
  681. package/dist/table-D6zKeYQX.js +0 -162
  682. package/dist/table-D6zKeYQX.js.map +0 -1
  683. package/dist/table-Dn4XSrSB.js +0 -1444
  684. package/dist/table-Dn4XSrSB.js.map +0 -1
  685. package/dist/tabs-Dk8E_knt.js +0 -189
  686. package/dist/tabs-Dk8E_knt.js.map +0 -1
  687. package/dist/text-inputs-BFpku0Qd.js +0 -331
  688. package/dist/text-inputs-BFpku0Qd.js.map +0 -1
  689. package/dist/theme-scope-kStaAer0.js +0 -39
  690. package/dist/theme-scope-kStaAer0.js.map +0 -1
  691. package/dist/timelines-CxuAFIc2.js +0 -439
  692. package/dist/timelines-CxuAFIc2.js.map +0 -1
  693. package/dist/tree-BotPlyiD.js.map +0 -1
  694. package/dist/typography-CAr3dQhX.js +0 -116
  695. package/dist/typography-CAr3dQhX.js.map +0 -1
  696. package/dist/ui-provider-D2_TeLqw.js.map +0 -1
  697. package/dist/upload-B0WHW7ak.js.map +0 -1
  698. package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
  699. package/dist/usage-card-U0YBLTNT.js.map +0 -1
  700. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  701. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  702. package/dist/utils-Cospvlj1.js.map +0 -1
  703. package/dist/value-inputs-CjfzGMsN.js +0 -854
  704. package/dist/value-inputs-CjfzGMsN.js.map +0 -1
  705. package/dist/workspace-YoFjXi6i.js +0 -394
  706. package/dist/workspace-YoFjXi6i.js.map +0 -1
  707. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,532 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.2 — 2026-10-21
4
+
5
+ Card dividers on by default, one rule per overlay region boundary, the
6
+ appointment calendar, and the fixes and shared recipes that followed 2.0.1. No
7
+ public export or prop is removed. Base UI is now the patched
8
+ `@base-ui/react@1.8.0-kpo.2` archive (see "Upgrading from 2.0.1"). Additions:
9
+ `align` on ConfirmDialog and ActionDialog with UIProvider overlay defaults;
10
+ `selecting`, `defaultSelecting`, `onSelectingChange`, `onItemOpen` and
11
+ `bulkActions` on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor
12
+ and RichText; `bodyHeight` on RichTextEditor; the
13
+ `themelia-react-ui/base/metadata-list`, `themelia-react-ui/base/batch-action-bar`
14
+ and `themelia-react-ui/features/appointment-calendar` entrypoints; an optional
15
+ `fontFamily` on `signaturePadToSVG`; the order blocks, `SummaryPanel` and
16
+ `AmountRow` in `blocks/commerce`; `valueAlign` on MetadataList; `defaultValue`,
17
+ `name` and ARIA props on TagsInput; `density` on Table; `variant="chips"` on
18
+ TabsList; `valueWeight` on InlineStat and `size` on AiShimmer; screen-reader
19
+ label strings on Combobox, AsyncResourceCombobox, DataTable and MediaLibrary.
20
+ `features/sync`, the standalone product region cards, the `blocks/data-display`
21
+ MetadataList exports and `ActivityRow` `moreLabel` are deprecated.
22
+
23
+ ### Audit update — 2026-10-24
24
+
25
+ - Layouts, blocks and features pair painted surfaces with their foregrounds;
26
+ owned primary copy inherits those roles while secondary, status and custom
27
+ content keep their intended colors. Existing sizing, spacing and radius
28
+ defaults remain unchanged.
29
+ - Bordered auth/workspace, metric, media/chat and event frames preserve their
30
+ geometry without a consumer CSS reset. Rich editor controls dim once, and a
31
+ disabled AI prompt suspends staged and custom actions as well as its input.
32
+ - Narrow checklist titles stay beside their status markers. Media detail regions
33
+ retain their content height and scroll in order without overlap. Flat Card
34
+ sections inherit their containing surface; search previews pair canvas ink.
35
+ - Owned field labels follow their containing surface across forms, helper fields,
36
+ repeaters, filters and questionnaires; the public Label defaults are preserved.
37
+ - MetadataList labels and primary values follow their containing surface in all
38
+ layouts; explicit secondary, link, status and custom content retain their roles.
39
+ Product catalogue viewports preserve native keyboard focus clearance.
40
+ - Compact table pagination resolves one size across its anatomy. Muted values
41
+ use the shared secondary role without an extra opacity tier; source and
42
+ consumer composition checks reject faded typography and primitive copy.
43
+ - Generated brand palettes retain the centralized input and focus roles instead
44
+ of replacing their contrast with a weak brand wash.
45
+ - Base composition now consistently follows the foreground of its card or
46
+ popover surface, including owned titles, values, upload copy and chart
47
+ tooltips. Native hosts retain their geometry without a consumer CSS reset.
48
+ - Card keeps full-width pre-title context, omits empty body regions, and reveals
49
+ clipped actions when keyboard focus enters them. CardSkeleton follows the
50
+ provider surface and accepts an optional `surface` override.
51
+ - Pagination resolves one shared size for links, previous/next and ellipsis;
52
+ PaginationEllipsis also accepts an optional `size`. Attachment focus corners
53
+ match their Item shell, and Empty media follows the existing media roots.
54
+ - Nested disabled content dims once; compound field affordances respect pending
55
+ and read-only state, including PhoneInput blur normalization. Carousel
56
+ preserves descendant editing keys, uncontrolled SliderField values stay
57
+ synchronized, and overflow links retain native href and keyboard behavior.
58
+ - Resting control boundaries now meet the shared 3:1 contrast floor, including
59
+ filled fields on supported surfaces. Divider and focus roles remain separate.
60
+ - Nested light/dark state utilities follow the nearest explicit mode boundary.
61
+ ThemeScope rebinds default aliases for explicitly supplied source roots while
62
+ preserving deliberate CSS/inline role overrides. This behavior uses container
63
+ style queries: Chromium 111+, Safari 18.1+ and Firefox 151+.
64
+ - Chart series and scoped theme exports follow the same mode boundary. Scoped
65
+ selector helpers add optional `modeScope` metadata while retaining their
66
+ existing selector strings. Package defaults use the theme cascade layer so
67
+ explicit utility classes can override them on a mode boundary.
68
+ - Enlarged editable typography can grow its shared field frame and reduce spare
69
+ vertical padding. Default control sizes and radius roles remain unchanged.
70
+ - Fullscreen table menus and dialogs retain keyboard ownership; sorted headers
71
+ expose direction/precedence; nested cell controls no longer activate the row.
72
+ Row callbacks also support Enter and Space with visible keyboard focus.
73
+ - Maintainer and packaged consumer guidance now cover surface inheritance at
74
+ owned text/label/value leaves, semantic text roles without extra opacity,
75
+ once-only disabled treatment, and stable post-interaction visual evidence.
76
+ The MetadataList evaluation uses its current base entrypoint.
77
+
78
+ ### Upgrading from 2.0.1
79
+
80
+ - **Patched Base UI peer.** The `@base-ui/react` peer is pinned to
81
+ `1.8.0-kpo.2`, a patched build that adds `Combobox.Root.dismissLabel` and keeps
82
+ focus restored inside a parent popup when a nested popup closes. It is not on
83
+ the public registry: install the companion `base-ui-react-1.8.0-kpo.2.tgz`
84
+ beside this package, as the README describes.
85
+ - **MetadataList moved to base.** Import `MetadataList`, its item types and
86
+ default strings from `themelia-react-ui/base/metadata-list`. The
87
+ `themelia-react-ui/blocks/data-display` re-exports keep working and are
88
+ deprecated. Labels render semibold.
89
+ - **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
90
+ Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
91
+ mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
92
+ start selecting; pass `defaultSelecting` where a library relied on selecting
93
+ by default.
94
+ - **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
95
+ `align: 'start' | 'center'`, resolved from the prop, then the UIProvider
96
+ `overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
97
+ center for ConfirmDialog and start for ActionDialog.
98
+ - **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
99
+ application-specific; use `SchemaForm` with `radio-cards` and
100
+ `checkbox-cards` fields. The entrypoint still ships.
101
+ - **Deprecated: standalone product region cards and row menus.** Render them
102
+ through `ProductOverview` slots and the `renderOptionActions` /
103
+ `renderVariantActions` options. They stay exported.
104
+ - **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
105
+ labelled is gone; secondary detail opens with the details disclosure.
106
+ - **Selection bars are a `BatchActionBar`.** DataTable's default selection
107
+ toolbar now docks to the bottom of the viewport (`floating`); pass
108
+ `selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
109
+ the new `totalRowCount` prop default to `pagination.total`, so server-paginated
110
+ tables count the whole result. Product variant tables show an inline bar only
111
+ while variants are selected; `renderBulkActions` now replaces the default
112
+ commands, as documented (return `null` to keep them), and Delete no longer
113
+ repeats the count.
114
+ - **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
115
+ and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
116
+ the previous right-aligned figures, such as money columns.
117
+ - **TagsInput.** Chips sit inside the field, before the text input in Tab order;
118
+ the count and clear-all move to a footer under the field, and the placeholder
119
+ shows only while the field is empty. The input stays enabled at `maxTags`.
120
+ - **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
121
+ DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
122
+ and lose the `content-block--*` classes and `data-component="content-block"`;
123
+ their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
124
+ a visible title with the status chip in its suffix.
125
+ - **Shell width utilities.** `shell-sidebar-icon-current` and
126
+ `shell-sidebar-offcanvas-current` read their widths from `shell-sidebar-vars`;
127
+ apply them together on the same element, as the library's shells do.
128
+ - **Card dividers are on by default.** `card.defaultHeaderDivider` and
129
+ `card.defaultFooterDivider` now default to `true`, so framed cards rule their
130
+ header and footer apart. Flat, card-free structure (`surface="flat"`) and a
131
+ `headerPlacement="frame"` header still draw no rule unless asked, and
132
+ explicit per-card booleans still win. For the previous spacing-only look, set
133
+ both provider defaults to `false`, or pass `headerDivider={false}` /
134
+ `footerDivider={false}` on a card.
135
+
136
+ ### Changes
137
+
138
+ - **Accessibility strings.** Combobox, AsyncResourceCombobox, DataTable and
139
+ MediaLibrary take strings for their screen-reader-only labels, including both
140
+ Combobox dismissal controls. Closing a nested popup no longer moves focus that
141
+ was already restored inside its parent popup.
142
+ - **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
143
+ and ConfirmDialog separate header, body and footer with a rule, and a dialog
144
+ without a body shows a single rule.
145
+ - **Rich text images.** RichTextEditor and RichText support images through
146
+ `useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
147
+ owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
148
+ and remove, type and size limits, alt text and the http/https/blob/relative
149
+ source policy. `renderImage` draws read-only images with the consumer's
150
+ component.
151
+ - **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
152
+ to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
153
+ (rich text, comment, activity and email composers) silently rendered the
154
+ contenteditable fallback with formatting disabled. Picking a mention in Tiptap
155
+ now replaces its `@query` instead of appending after it, and the editor chip
156
+ keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
157
+ - **Mentions insert as atomic badge chips** removed by one Backspace. The
158
+ suggestion list and picker are more compact, and kind filters use the shared
159
+ toggle style.
160
+ - **Global search** builds its field on the public `InputGroup` and lays out
161
+ results, group headings and the footer with the compact Command recipe.
162
+ - **Activities open compact.** Rich rows show the headline and description;
163
+ metadata, changes, details, resource chips and inline actions appear together
164
+ behind "Show details".
165
+ - **Comments** no longer leave an empty band under each comment's action row.
166
+ - **Choice inputs centre on the label line.** Checkbox, radio, switch and
167
+ selected-card checks share one label-line track (questionnaire,
168
+ ApiTokenManager, card groups).
169
+ - **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
170
+ search clear actions, and TagsInput and Combobox chip removes, draw a plain X
171
+ instead of a circled X.
172
+ - **Cascader** draws Input's field frame and the shared Combobox affordance
173
+ track; its clear sits beside a chevron aligned with Select's.
174
+ - **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
175
+ type size; inline badges are unchanged, and TagsInput chips follow.
176
+ - **NavigationTabs** keeps the current tab lifted under hover and press;
177
+ inactive tabs change colour only.
178
+ - **SignaturePad** draws, exports and previews typed names in the pad's font
179
+ (theme sans by default) instead of `cursive`, and fits long names by font
180
+ size; `signaturePadToSVG` accepts an optional `fontFamily`.
181
+ - **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
182
+ its icon role (SmartAccordion medallions render at 16px); Alert's icon and
183
+ action columns use Toast's 8px gap; content typography fits images to the
184
+ column.
185
+ - **Catalogue:** the deprecated Sheet page, the products main-column, actions
186
+ and support-rail pages and the sync page are retired; their URLs redirect to
187
+ the overlays, product overview and SchemaForm pages.
188
+ - **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
189
+ bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
190
+ or `inline`. The count is a polite live region, Escape inside the bar clears,
191
+ and focus returns to the list (or `returnFocusRef`) when the bar goes away.
192
+ DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
193
+ old sticky selection toolbar and its overlap with the sticky topbar are gone.
194
+ - **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
195
+ status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
196
+ `OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
197
+ Order detail composition. The shared money ledger `SummaryPanel` and
198
+ `AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
199
+ InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
200
+ - **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
201
+ tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
202
+ current step is `aria-current="step"`; RefundStatusCard is an ordered list of
203
+ stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
204
+ ("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
205
+ and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
206
+ `kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
207
+ `DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
208
+ kit's names for the same components. `Timeline` items expose `data-status` and
209
+ mark the current item `aria-current="step"`.
210
+ - **MetadataList** labels wrap in every layout and stay semibold; inline
211
+ `itemSeparator` is a middle dot hidden from screen readers; `render` output
212
+ takes the value style; the info trigger no longer grows its line; `icon` takes
213
+ any `ComponentType<{ className?: string }>`.
214
+ - **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
215
+ right tag, object tags are created from an empty value, a refused entry no
216
+ longer traps Tab, IME composition no longer commits, a typed delimiter splits,
217
+ single-token paste is native, and focus moves to the neighbouring chip after a
218
+ removal. Refused entries stay in the draft and are announced
219
+ (`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
220
+ ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
221
+ exported.
222
+ - **Order and commerce block fixes.** ShipmentTracking marks no checkpoint
223
+ current before the parcel reaches the first one. FulfillmentGroup keeps its
224
+ `items` rows when a conditional `children` renders nothing, takes Card's
225
+ default rules instead of forcing them, and accepts `headerDivider` /
226
+ `footerDivider`. OrderTransactions signs only money that moved (a failed
227
+ refund shows no minus), spells each kind out without a glyph tile or tinted
228
+ row, and draws no frame of its own inside a card. PaymentMethod's `row`
229
+ variant drops the credit-card tile, which misnamed wallets. Order status chips
230
+ match the rest of the library (no dot), and InvoiceHeader shows its dates as
231
+ facts rather than money rows.
232
+ - **Item as a button or link.** An `Item` given `render` renders its media,
233
+ content, title, description, actions, header and footer as spans, so a
234
+ button row holds valid phrasing content. Layout and `data-slot` hooks are
235
+ unchanged.
236
+ - **Theme fixes.** Light `--sidebar-primary` and its foreground follow
237
+ `--primary`, as dark already did, so a brand theme colours the sidebar
238
+ selection in both modes (the default theme is unchanged). `themes/green.css`
239
+ drops its `--chart-1` override, which restated the default. Theme Studio's
240
+ light warning accent matches the shipped token again.
241
+ - **Filter pill focus.** Active filter segments draw the inset focus recipe
242
+ instead of clearing the ring, so keyboard focus no longer looks like hover.
243
+ - **Icons follow `--icon`.** Sidebar, tabs, breadcrumb, item media, pagination,
244
+ avatar-group, toaster and chart-legend icons use the `size-icon*` roles
245
+ instead of fixed sizes; at the default `--icon` nothing moves.
246
+ - **Design checks.** Design lint judges every `*ClassName` slot prop like
247
+ `className`, adds an `icon-size` rule, and rejects a cleared focus ring with
248
+ no replacement edge. `check:contract` adds theme-mode checks: one value per
249
+ mode, mode-dependent aliases restated in `.dark`, no role that follows another
250
+ in one mode while copying its value in the other, and no brand-theme no-ops.
251
+ - **One owner for shared geometry.** The clear-target size, the action and
252
+ control size steps and the corner formulas that fields, the sidebar, toasts,
253
+ calendars, the key-value editor and MetadataList each wrote by hand now come
254
+ from the generated `affordanceGeometry` recipes, and `check:contract` keeps
255
+ the rich-content corners on the same formulas as the radius tokens. The
256
+ sidebar's collapsed and off-canvas widths are defined once by
257
+ `shell-sidebar-vars`; Workspace's sidebar column reads `--shell-sidebar-width`;
258
+ the mobile range-calendar cell follows density; the toaster's corner is the
259
+ shell radius role. BatchActionBar's dock offset and MetadataList's info target
260
+ no longer read `:root`-resolved aliases, so a scoped `ThemeScope` spacing or
261
+ density reaches them, and a new `root-alias` design-lint rule keeps such reads
262
+ out.
263
+ - **Shared components instead of hand-built copies.** AI, metric, giftcard and
264
+ checklist blocks frame with `Card` instead of hand-built shells; progress bars
265
+ across blocks and features are `Progress`; avatar, step and status discs are
266
+ `IconBadge`, `Avatar` or Badge `dot`; count pills and resource chips are
267
+ `Badge`; the media facts list is `MetadataList`; spacing chains are `Stack`
268
+ gaps; the map card uses the popover surface recipe and the AI prompt frame the
269
+ shared field-state recipes. MetricComparison drops its nested tiles.
270
+ - **Table density.** Base `Table` takes `density` (`compact`, `default`,
271
+ `comfortable`; also `data-density` on the table) and owns head and cell
272
+ insets; DataTable passes its `size` through it instead of overriding cells,
273
+ and headers lose the fixed `h-12`, so they follow density. Consumer
274
+ `cellClassName` padding now wins.
275
+ - **Typography through props.** `InlineStat` takes `valueWeight` and renders its
276
+ value in the provider text size; `AiShimmer` takes `size`; field labels share
277
+ one line box (`formLabelLineClass`); link-styled text shares the 0.2em
278
+ underline offset; library components set size, weight and leading through
279
+ `Text`/`Heading` props, and `no-restyle` now enforces that in library code.
280
+ - **Shared recipes for repeated choices.** Anchored surfaces (popovers, menus,
281
+ Select, Combobox, map and chart popups) take their viewport bound from the
282
+ shared surface recipe, and their widths from one `popoverWidthRecipes` scale;
283
+ the kanban card menu widens from 11rem to 12rem, the default filter popover
284
+ from 16rem to 18rem and ActionMenu's minimum from 9rem to 10rem. Status dots
285
+ use `dotRecipes` (6px beside text, 8px as a marker). The unread and stale
286
+ `theme` section of the token contract is removed.
287
+ - **Tabs chips.** `TabsList` takes `variant="chips"`: wrapping, trackless toggle
288
+ chips with the muted hover and accent pressed fill. Saved views and filter
289
+ presets use it instead of overriding the default track.
290
+ - **Smaller shared pieces.** AI source and citation numbers sit in `IconBadge`
291
+ (24px, up from a 20px hand-built disc). Native buttons that draw their own
292
+ shape start from `interactionRecipes.nativeButtonReset`.
293
+ - **Appointment calendar.** New `features/appointment-calendar` entrypoint:
294
+ `AppointmentCalendar` puts a month with category dots beside the day or week
295
+ agenda, with category and staff filters, booked and conflict counts and a
296
+ dismissible double-booking alert. Overlaps are found per staff member across
297
+ every category. `onAppointmentClick` opens a row, `appointmentActions` adds a
298
+ per-row commands menu, `onRangeChange` reports the days on screen for loading,
299
+ and `loading`, `error` and `onRetry` cover the agenda's states.
300
+ `renderAppointment` renders custom rows from a context with the category
301
+ colour, conflict, status, time, `open`, actions, a ready actions menu and
302
+ `defaultRender`; the calendar is generic over the app's appointment type.
303
+ `appointmentsOn`, `filterAppointments` and `findConflicts` are exported for
304
+ apps that pre-compute their own view.
305
+ - **Editor body height.** RichTextEditor takes `bodyHeight` (`control`, `field`
306
+ or `document`); `minHeight` still wins. The comment composer uses `field`, so
307
+ its empty editor is one textarea tall, 1rem taller than before.
308
+
309
+ ## 2.0.1 — 2026-10-18
310
+
311
+ One shared recipe and design-lint rule for each visual state, the fixes the new
312
+ drift checks found, and one command row and record-page recipe for every page
313
+ header. No public export or prop is removed. Additions: `header.tabs` on Page
314
+ (`PageHeaderTabs`); `primaryAction`, `secondaryActions`, `moreActionsLabel` and
315
+ `renderLink` on PageHeading, ResourceHeader, the resource shells and
316
+ SettingsShell, and `primaryAction` on WorkspaceRecordHeader;
317
+ `toPageHeaderAction` in `services/actions`; an optional `toggle` flag on
318
+ `ToolbarButtonConfig` and `RichTextEditorToolbarItem`; `context` on
319
+ `ActionMenu` (`ActionMenuContext`); an optional `actions.menuLabel` in DataTable
320
+ strings. `PageActions`, `PageAction` and `toPageAction` are deprecated.
321
+
322
+ ### Upgrading from 2.0.0
323
+
324
+ - **Focus and control borders.** Library controls draw the soft `--input`
325
+ boundary and one shared focus indicator. Drop `ring-2`, `ring-offset-*` or
326
+ full-strength `ring-ring` focus classes passed to library controls; the
327
+ consumer checker reports them as `focus-ring-recipe`. Themes that override
328
+ `--ring` should keep it at 3:1 against their surfaces.
329
+ - **Page commands.** Replace a `PageActions` ribbon or hand-built buttons in a
330
+ header's `actions` with `primaryAction` (one) and ordered `secondaryActions`;
331
+ mark irreversible commands `destructive: true` and confirm them in the
332
+ handler. `actions` stays for non-command controls such as a period select.
333
+ Move section tabs placed at the top of a Page body into `header.tabs`. The
334
+ consumer checker reports the old shapes as `page-command-roles`.
335
+ - **Overflow trigger names.** Overflow triggers are named "More actions" by
336
+ default. This replaces "Open menu" (`ActionMenu` `strings.openMenuLabel`),
337
+ "Card actions" (Card `actionsLabel`), "Actions" (ContentBlock and DataTable
338
+ row menus) and "Page actions" (`PageActions` `strings.menuLabel`). Update
339
+ tests or automation that find these buttons by name, or pass the old copy
340
+ through those strings. The DataTable actions column header stays "Actions"
341
+ (`strings.actions.triggerLabel`); the row trigger's name moves to the new
342
+ `strings.actions.menuLabel`. Copy that sets only `triggerLabel`, as localized
343
+ tables did before, keeps naming the trigger with it.
344
+ - **Overflow trigger size and glyph.** An icon-only `ActionMenu` trigger now
345
+ follows `UIProvider.density.defaultScale` instead of always rendering at
346
+ `md`; pass `buttonProps.size` to match the controls beside it. The default
347
+ glyph is the horizontal ellipsis (`MoreHorizontal`) rather than
348
+ `MoreVertical`; `icon` still overrides it.
349
+ - **State styling.** Hover, selection, pressed, status-tint, divider, disabled,
350
+ motion, corner and stacking classes passed to library rows and tiles should
351
+ follow the shared roles below. Pressed toggles, including AI feedback votes,
352
+ editor formatting buttons and the editor's source view, show the accent fill
353
+ instead of a status colour or a solid primary fill. `HighlightedText`'s
354
+ default `highlightClassName` is the shared match mark: foreground text on the
355
+ warning tint.
356
+
357
+ ### Changes
358
+
359
+ - **Visual: the More actions menu ends the page header's command row.** Page
360
+ commands render as the secondary commands, then the primary command, then the
361
+ More actions menu (`[secondary…] [primary] [⋯]`); 2.0.0 placed the menu
362
+ between the secondary and primary commands. The menu trigger takes the
363
+ secondary treatment, an outline square at the commands' own height, including
364
+ under a compact `UIProvider` scale; it was a ghost glyph at the default size.
365
+ - **Visual: one overflow trigger.** Every overflow menu shares one `ActionMenu`
366
+ trigger recipe (`action-menu.recipes.ts`). It draws the `⋯` glyph, is named
367
+ "More actions", and is a square at the size of the controls beside it, or at
368
+ the provider scale when nothing sits beside it. `context="inline"`, the
369
+ default, is a quiet ghost square with a muted glyph for rows, cards and
370
+ footers. `context="commands"` is the outline square beside outline commands,
371
+ which the page header's More actions trigger now takes from the recipe.
372
+ Card headers, DataTable rows, Kanban items and the EmailComposer footer
373
+ follow the provider scale. Activity rows and ApiKeyList match their own
374
+ compact expand and add controls. `PageActions` uses the outline treatment at
375
+ its inline `size`. The library no longer hand-sets trigger sizes, styles or
376
+ glyphs.
377
+ - **The menu ends any row with a primary command.** The EmailComposer footer
378
+ renders `[Discard] … [Send] [⋯]`, where 2.0.0 placed the menu before Send.
379
+ Send and the menu wrap together, so the menu never sits alone on a narrow
380
+ line.
381
+ - **One menu per header, destructive commands last.** `ProductVariantDetails`
382
+ merges its default variant commands (Open, Edit, Duplicate, Delete) into the
383
+ card's own `actions` menu. Its header no longer shows a second, differently
384
+ sized `⋯`, and Delete sorts last. A custom `renderActions` still renders in
385
+ the header. The product variants bulk bar places Delete after Apply and any
386
+ `renderBulkActions` content.
387
+ - **Overflow trigger enforcement.** The `overflow-trigger` rule in
388
+ `check:contract` rejects overflow glyph imports outside the ActionMenu owner,
389
+ raw UI, pagination and the OverflowTabBar More tab. It also rejects icon-only
390
+ `ActionMenu` triggers that set `tone`, `buttonStyle`, `iconOnly` or
391
+ action-size classes through `buttonProps`.
392
+ `tests/browser/overflow-trigger.spec.ts` checks order, heights and every
393
+ opened menu at 390px and 1440px in light and dark.
394
+ - **One command row for every header.** PageHeading owns the role-based row,
395
+ and `PageHeaderAction` moves to `base/navigation` (still exported from
396
+ `layout/page`). Page and PageHeader pass their commands to it; ResourceHeader,
397
+ ResourceIndexShell, ResourceShowShell and TabbedResourceShell
398
+ (`ResourceHeaderCommandProps`), SettingsShell and WorkspaceRecordHeader take
399
+ the same `primaryAction` and `secondaryActions` and render the same row after
400
+ their custom `actions`. WorkspaceRecordHeader's `secondaryActions` accepts
401
+ command objects; rendered elements keep their previous cluster.
402
+ - **Section tabs in the page header.** `header.tabs` renders a record's
403
+ sections under the header's copy and commands with the shared OverflowTabBar:
404
+ `badge` shows a count, tabs that do not fit move into a More menu, the active
405
+ tab stays visible, and `onValueChange` switches the section or routes.
406
+ - **Deprecated `PageActions`.** Its ribbon defaulted inline commands to solid
407
+ secondary buttons beside a larger ghost menu trigger and collapsed by viewport
408
+ width. Pass commands by role instead, or use ActionButtons for a toolbar.
409
+ `toPageHeaderAction` adapts a resolved action to a role-based command, with a
410
+ destructive tone marking it destructive.
411
+ - **One record-page recipe.** The detail recipe, the resource-detail build
412
+ recipe and a new Page example show a record with one status badge,
413
+ role-based commands, a confirmed destructive command and section tabs with
414
+ counts. Catalogue examples for PageHeading, resources, workspaces, settings,
415
+ app shells and tables use role-based commands; the consumer docs no longer
416
+ recommend card dividers, footer command rows or decorative title icons.
417
+ - **Consumer checker.** `page-command-roles` also flags PageActions,
418
+ ActionButtons and ActionMenu in a header's `actions`, and covers PageHeading,
419
+ the resource shells, WorkspaceRecordHeader and SettingsShell.
420
+ `decorative-icon` flags a page `titleIcon` without a link or handler, and an
421
+ icon on more than one page command. `raw-button` no longer flags a native
422
+ button passed as a package owner's `render`, such as an Item row rendered as
423
+ a button; the owner keeps that root's focus edge and row anatomy. Local
424
+ components passing a native button are still reviewed.
425
+ - **Teaching material follows the house rules.** Catalogue examples, templates
426
+ and the shipped consumer examples use an untoned Button for neutral commands
427
+ (a `tone="secondary"` Button without `buttonStyle` renders solid), spell
428
+ neutral badges `tone="neutral"`, space siblings with Stack, Grid and
429
+ AdaptiveGrid instead of flex/grid gap divs or `space-y` margins, and drop
430
+ decorative title tiles. The order, product, customer, staff and overview
431
+ templates keep Page's default measure; the order template's fulfillment is
432
+ its `header.primaryAction`, the staff template's suspension is a
433
+ `destructive: true` secondary action confirmed by ConfirmDialog, and neither
434
+ repeats the header's status badge in a card or fact list.
435
+ - **Agent guidance closes the loop.** The consumer skill ships a project
436
+ instructions block (`references/agents-md.md`) to paste into an app's
437
+ `AGENTS.md`: under 2,000 characters, version-stamped in its start marker,
438
+ generated and verified by `check:skill`, and naming only scripts that ship
439
+ with the skill. The installed identity recipe reports the block as missing,
440
+ current or stale. SKILL.md and the review guide now make the composition
441
+ checker the agent's done condition (no errors on changed files, at most three
442
+ fix rounds, then the app's typecheck, lint and tests) with a five-line
443
+ hand-back, instead of calling it optional.
444
+ - **Consumer-skill evals.** `evals/consumer-skill` holds eight admin tasks,
445
+ five of them temptations such as a red Delete button or hand-made KPI cards,
446
+ each with a reference and a naive solution. `scripts/consumer-evals.mjs`
447
+ scores agent outputs with the shipped checker, imports and source patterns,
448
+ and `check:agent` proves every reference passes and every naive version fails.
449
+ - **Fix: destructive activity actions.** ActivityFeed row menus passed the
450
+ action tone as an unknown `variant` field, so a destructive action lost its
451
+ destructive treatment and its place at the end of the menu.
452
+ - **Visual: one control boundary and one focus indicator.** `--input` is the
453
+ single control boundary: fields, select and date triggers, checkboxes, radios,
454
+ switch tracks, upload targets and outline buttons all draw it, so adjoining
455
+ controls read as one family. It is now soft and translucent
456
+ (`oklch(0.28 0 0 / 15%)` in light, white at 15% in dark) and reads the same on
457
+ every surface, replacing the 3:1 gray of 2.0.0 (`oklch(0.62 0 0)`, white at
458
+ 40% in dark) that made fields and selects read darker than the outline buttons
459
+ beside them; `--border` stays the divider color, and the repeater's empty
460
+ placeholder uses it. Every focused element draws one indicator from
461
+ `src/lib/focus-recipes.ts`: a 1px `--ring` edge at full strength (the
462
+ control's own border, an inset edge on borderless rows and regions, or an
463
+ outline just outside link and text-button glyphs) inside a soft 3px halo of
464
+ `--ring` at 50%. It replaces the 2px full-strength and offset rings, which
465
+ read as a heavier border. The edge carries the 3:1 contrast. An invalid field
466
+ keeps its destructive border at rest and while focused, where the halo turns
467
+ destructive; there is no resting halo. Focus on a MediaGallery tile is drawn
468
+ inside the tile, where its overflow clipping had hidden it. Design lint's
469
+ `focus-ring-recipe` rule (replacing `focus-ring-contrast`) rejects other focus
470
+ ring widths, offsets and halo strengths in library source and on imported
471
+ consumer controls. The contrast contract keeps `--ring` and `--sidebar-ring`
472
+ at 3:1 and checks `--input` against a 1.3:1 visibility floor on background,
473
+ card, popover, muted, accent and secondary surfaces.
474
+ - **Visual: one recipe per state family.** Each family that had several local
475
+ spellings now has one owner and a design-lint rule that cannot acquire
476
+ migration debt.
477
+ - Rows (navigation, lists, trees, results, menus) hover and select with
478
+ `--accent`, and the current location adds medium weight, so a hover never
479
+ reads as current. Ghost and outline buttons hover with the same fill and its
480
+ `--accent-foreground`; a component's own hover colour still wins.
481
+ - Toggles hover with `--muted` and press with `--accent`. Tables keep a
482
+ quieter `muted` ladder for stripes, hover and selection. Segmented tracks
483
+ lift the active segment to `--card`.
484
+ - Text never takes opacity: faded secondary text, which fell under 4.5:1, uses
485
+ the typography roles.
486
+ - Dividers are `--border` at full strength on surface edges and at 60% between
487
+ rows.
488
+ - Disabled content dims once, to 50%.
489
+ - Status and emphasis tints use one scale per tone
490
+ (`src/lib/tone-recipes.ts`): a wash for large surfaces, a tint for chips,
491
+ badges and icon tiles, and an edge, halo and line strength. The contrast
492
+ contract tests each tone's ink on its tint. Badges, alerts, avatars, icon
493
+ tiles, activity, search, calendar, timeline, commerce and AI blocks share
494
+ it. Search matches and edit diffs use one inline mark, and the heatmap and
495
+ distribution ruler keep their data ramps.
496
+ - Colour, border and shadow state changes keep the default 150ms transition.
497
+ - Corners derive from `--radius`: the fixed 4px `rounded` and the t-shirt
498
+ steps in raw UI, skeletons and chips are gone.
499
+ - Stacking uses one scale: raised, sticky, sticky over sticky, chrome and
500
+ overlay.
501
+ - SectionNav links gain the shared focus indicator, borderless Item rows draw
502
+ the focus edge inset, and the column-resize handle marks focus in the ring
503
+ colour.
504
+ - Neutral fills use one strength per role: a wash for quiet regions, a band
505
+ for header, toolbar and footer strips, a solid track, a neutral chip and
506
+ neutral markers. Twenty strengths become five. Table heads, toolbars, empty
507
+ states, AI panels, auth and workspace regions, tab tracks, meters and
508
+ carousel dots share them.
509
+ - Elevation uses one theme shadow per role: resting, card, raised, lifted and
510
+ modal. The command palette's 2xl shadow, two custom table-frame shadows
511
+ (which glowed in dark mode) and a shadow colour override are gone.
512
+ - Keyboard-shortcut hints in the header search trigger and the global search
513
+ footer share one key-cap style.
514
+ - Floating chips over media, lifted panels over the auth art and the chat
515
+ composer band are opaque.
516
+ - A drift census budgets each family's vocabulary in `check:design-lint`, and
517
+ a rendered role-parity browser check measures hover, current, disabled and
518
+ focus in light and dark.
519
+ - Rich-text toolbar toggles announce their state. Built-in format buttons and
520
+ the source view expose `aria-pressed`; undo and redo do not.
521
+ `ToolbarButtonConfig` and `RichTextEditorToolbarItem` gain an optional
522
+ `toggle` flag; an extra toolbar item with `isActive` is a toggle unless it
523
+ sets `toggle: false`.
524
+ - Item titles that cannot fit end in an ellipsis on their text. The title row is
525
+ a flex container, where `text-overflow` has no effect, so a long token was
526
+ clipped mid-glyph instead: an applied coupon `SPRING2026` read as `SPRING202`.
527
+ Truncating titles in citations, vendor profiles, gift cards and attachments
528
+ benefit too. The applied coupon also carries its full code as a `title`.
529
+
3
530
  ## 2.0.0 — 2026-10-16
4
531
 
5
532
  A major release. Untouched defaults now give a screen one deliberate primary
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: **`2.0.0`** · MIT licensed.
5
+ Package: **`themelia-react-ui`** · current version: **`2.0.2`** · 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
@@ -41,7 +41,26 @@ Browser verification requires Playwright Chromium. An existing executable can be
41
41
 
42
42
  ## Consumer setup
43
43
 
44
- Install a built tarball; use a registry release when available. React 19, React DOM 19, Base UI 1.8+ and Lucide React 1 are required peers. Import exact family paths; there is no aggregate component barrel or public raw UI entrypoint.
44
+ Install a built tarball; use a registry release when available. React 19, React DOM 19, the declared Base UI peer and Lucide React 1 are required peers. Import exact family paths; there is no aggregate component barrel or public raw UI entrypoint.
45
+
46
+ Nested light/dark utilities use custom-property container style queries. Use
47
+ Chromium 111+, Safari 18.1+ or Firefox 151+ for this theme behavior. The nearest
48
+ mode class governs nested components and their scoped portals; see the
49
+ [theme guide](docs/consumer-skill/references/theming.md) for partial overrides.
50
+
51
+ Version 2.0.2 requires the companion `base-ui-react-1.8.0-kpo.2.tgz`
52
+ archive. It adds the public `Combobox.Root.dismissLabel` translation seam for both
53
+ screen-reader dismissal controls and preserves focus already restored inside a
54
+ parent popup when a nested popup closes. Install both versioned archives together; no
55
+ public registry release is required. The source checkout keeps the Base UI archive
56
+ beside `package.json` and pins it through the lockfile for reproducible `npm ci`.
57
+
58
+ ```sh
59
+ npm install ./themelia-react-ui-2.0.2.tgz ./base-ui-react-1.8.0-kpo.2.tgz
60
+ ```
61
+
62
+ The source checkout retains `base-ui-react-1.8.0-kpo.2.patch`; its upstream
63
+ provenance and license are recorded in `THIRD_PARTY_NOTICES.md`.
45
64
 
46
65
  After the initial registry release, install into a React 19 application with:
47
66
 
@@ -95,7 +114,7 @@ The shipped stylesheet follows `prefers-reduced-motion` automatically for these
95
114
  | Base | `base/<family>` — controls, forms, buttons, cards, structure, navigation, menus, feedback, display, tables, uploads and specialist controls |
96
115
  | Layout | `layout`, `layout/<family>` — application shell, authentication, containers, page, settings, header, navigation, sidebar, workspace and hooks |
97
116
  | Blocks | `blocks/admin`, `ai`, `analytics`, `commerce`, `data-display`, `onboarding`, `timelines` (each prefixed `blocks/`) |
98
- | Features | `features/activities`, `ai-chat`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync`, `table`, `theme-tweaker` (each prefixed `features/`) |
117
+ | Features | `features/activities`, `ai-chat`, `appointment-calendar`, `async-preview`, `combobox`, `comments`, `data-view`, `email-composer`, `event-calendar`, `filters`, `global-search`, `kanban`, `map`, `media-library`, `mentions`, `overlays`, `products`, `resource`, `resource-assignment`, `rich-text-editor`, `schema-form`, `suggestions`, `sync` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
99
118
 
100
119
  The complete machine-readable entry inventory is `scripts/entries.json`. Dialogs and confirmations use `ActionDialog`, `ActionDrawer`, `ConfirmDialog` and visibility/action hooks from `features/overlays`.
101
120
 
@@ -201,28 +220,42 @@ The default development URL opens the full component catalogue. The focused foun
201
220
 
202
221
  `Button` separates `tone` from `buttonStyle` (`solid`, `outline`, `ghost`); the catalogue shows their matrix, sizes and loading/disabled states. Icon-only controls may omit children when an accessible label or tooltip is supplied. Badges use compact typography and insets rather than inheriting action geometry.
203
222
 
204
- Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Put card-level actions in `footerSlot` with `footerDivider`; reserve body actions for a specific content step. Card owns aligned card insets, frames and expand/collapse behavior; Use `Card surface="flat" padding="none"` for card-free content hierarchy. ChartCard exposes `titleSuffix` too. Use `headerPlacement="frame"` for a header above an inset body. SmartCard and ContentBlock remain deprecated migration adapters; new code uses Card.
223
+ Use `titleSuffix` for card status, count and version badges. `headerStart` is full-width pre-title context, and `headerAction`/`actions` own controls. Card owns token-spaced title/suffix wrapping for all surface modes. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`; a framed card rules the footer off by default. Reserve body actions for a specific content step. Card owns aligned card insets, frames and expand/collapse behavior; Use `Card surface="flat" padding="none"` for card-free content hierarchy. ChartCard exposes `titleSuffix` too. Use `headerPlacement="frame"` for a header above an inset body. SmartCard and ContentBlock remain deprecated migration adapters; new code uses Card.
205
224
 
206
225
  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.
207
226
 
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.
227
+ Header commands are role-based: one `primaryAction` and ordered
228
+ `secondaryActions` render as `[secondary…] [primary] [⋯]`, with overflow,
229
+ destructive commands and narrow widths moved into the More actions menu that
230
+ ends the row. Page, PageHeader, PageHeading, the resource shells,
231
+ WorkspaceRecordHeader and SettingsShell share that row; keep `actions` for
232
+ non-command controls. `header.tabs` puts a record's section tabs, with counts,
233
+ under its header.
234
+
235
+ Every overflow menu shares one `ActionMenu` trigger: the `⋯` glyph named "More
236
+ actions", a quiet ghost square in rows and cards (`context="inline"`, the
237
+ default) or an outline square beside outline commands (`context="commands"`),
238
+ at the size of the controls beside it (`buttonProps.size`) or the provider
239
+ scale. The menu comes after any primary command in its row, and destructive
240
+ entries stay last.
211
241
  Page owns inline and block padding, defaulting to the large surface role;
212
242
  PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
213
243
  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`.
244
+ gaps. Ordinary framed cards retain default `md` padding and rule header, body and
245
+ footer apart by default; flat, card-free structure draws no rule unless asked. Set
246
+ `card.defaultHeaderDivider` and `card.defaultFooterDivider` to `false` for an app
247
+ that separates card regions by spacing alone.
216
248
  AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
217
249
  region, compact navigation and a separated footer. The
218
250
  [complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
219
251
  public workspace/account controls and application-owned callbacks.
220
252
 
221
253
  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.
254
+ surfaces win. Leave Card's `icon` slot for a glyph that carries state or a
255
+ brand; titles name the subject. `headerPlacement` chooses inside/frame
256
+ composition independently. Independent framed peers use `gap="2xl"`, matching
257
+ Page and TwoColumnLayout's rhythm, since outer rings consume a smaller DOM gap.
258
+ MetadataList (`themelia-react-ui/base/metadata-list`) keeps semibold labels and normal primary values in both densities.
226
259
  Dashboard KPIs use Metric/MetricGrid/MetricBar; quotas use the focused UsageCard
227
260
  owner. See [analytics selection](docs/consumer-skill/references/analytics.md) and
228
261
  the [resource page recipe](docs/consumer-skill/examples/detail.tsx).
@@ -276,7 +309,7 @@ purpose from its name or read every document before starting a screen.
276
309
 
277
310
  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.
278
311
 
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.
312
+ 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.2/` 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
313
 
281
314
  `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.
282
315