themelia-react-ui 2.0.0 → 2.0.1

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 (625) hide show
  1. package/CHANGELOG.md +351 -0
  2. package/README.md +26 -13
  3. package/dist/{accordion-CQXVcd7Q.js → accordion-B6a3vVgA.js} +84 -82
  4. package/dist/accordion-B6a3vVgA.js.map +1 -0
  5. package/dist/action-menu-TzCoSlwL.js +280 -0
  6. package/dist/action-menu-TzCoSlwL.js.map +1 -0
  7. package/dist/{affordance-geometry.generated-CCIXb2A1.js → affordance-geometry.generated-B5iu-Mkr.js} +3 -2
  8. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
  9. package/dist/{ai-artifact-2PQ2fItc.js → ai-artifact-BMJdv-6q.js} +379 -376
  10. package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
  11. package/dist/{app-shell-BE_j8-AT.js → app-shell-ZK5RWdo6.js} +4 -4
  12. package/dist/{app-shell-BE_j8-AT.js.map → app-shell-ZK5RWdo6.js.map} +1 -1
  13. package/dist/attachment-BtfhGm8i.js +245 -0
  14. package/dist/attachment-BtfhGm8i.js.map +1 -0
  15. package/dist/{auth-M3vGMgDR.js → auth-CYxKfo69.js} +237 -235
  16. package/dist/auth-CYxKfo69.js.map +1 -0
  17. package/dist/{avatar-djdaaQ_s.js → avatar-BBnEJIx8.js} +66 -65
  18. package/dist/avatar-BBnEJIx8.js.map +1 -0
  19. package/dist/badge-MrKVNzW9.js +93 -0
  20. package/dist/badge-MrKVNzW9.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/batch-action-bar.js +3 -0
  27. package/dist/base/buttons.js +2 -3
  28. package/dist/base/cards.js +2 -2
  29. package/dist/base/carousel.js +13 -13
  30. package/dist/base/carousel.js.map +1 -1
  31. package/dist/base/cascader.js +103 -115
  32. package/dist/base/cascader.js.map +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +3 -3
  35. package/dist/base/code-block.js +1 -1
  36. package/dist/base/combobox.js +1 -1
  37. package/dist/base/command.js +1 -1
  38. package/dist/base/copyable.js +1 -1
  39. package/dist/base/date-pickers.js +2 -2
  40. package/dist/base/display.js +7 -7
  41. package/dist/base/feedback.js +3 -3
  42. package/dist/base/forms-numeric.js +1 -1
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +17 -17
  45. package/dist/base/inline-edit.js.map +1 -1
  46. package/dist/base/item.js +1 -1
  47. package/dist/base/media-gallery.js +1 -1
  48. package/dist/base/metadata-list.js +3 -0
  49. package/dist/base/navigation.js +7 -7
  50. package/dist/base/popover-menu.js +1 -1
  51. package/dist/base/popover.js +1 -1
  52. package/dist/base/qr-code.js +1 -1
  53. package/dist/base/repeaters.js +171 -170
  54. package/dist/base/repeaters.js.map +1 -1
  55. package/dist/base/sheet.js +1 -1
  56. package/dist/base/sidebar.js +1 -1
  57. package/dist/base/signature-pad.js +147 -137
  58. package/dist/base/signature-pad.js.map +1 -1
  59. package/dist/base/skeleton.js +1 -1
  60. package/dist/base/spinner.js +1 -1
  61. package/dist/base/structure.js +1 -1
  62. package/dist/base/table.js +1 -1
  63. package/dist/base/text-inputs.js +2 -2
  64. package/dist/base/toaster.js +2 -2
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +2 -2
  69. package/dist/batch-action-bar-BZGDG-Si.js +104 -0
  70. package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
  71. package/dist/blocks/admin.js +173 -171
  72. package/dist/blocks/admin.js.map +1 -1
  73. package/dist/blocks/ai.js +266 -263
  74. package/dist/blocks/ai.js.map +1 -1
  75. package/dist/blocks/analytics/usage-card.js +1 -1
  76. package/dist/blocks/analytics.js +440 -438
  77. package/dist/blocks/analytics.js.map +1 -1
  78. package/dist/blocks/collaboration.js +1 -1
  79. package/dist/blocks/commerce/receipt.js +1 -1
  80. package/dist/blocks/commerce.js +1945 -1266
  81. package/dist/blocks/commerce.js.map +1 -1
  82. package/dist/blocks/data-display.js +3 -2
  83. package/dist/blocks/onboarding.js +50 -49
  84. package/dist/blocks/onboarding.js.map +1 -1
  85. package/dist/blocks/planning.js +25 -25
  86. package/dist/blocks/planning.js.map +1 -1
  87. package/dist/blocks/timelines.js +1 -1
  88. package/dist/breadcrumbs-D5t7I023.js +129 -0
  89. package/dist/breadcrumbs-D5t7I023.js.map +1 -0
  90. package/dist/{button-R9CCoH7A.js → button-QYwiyhD2.js} +15 -14
  91. package/dist/button-QYwiyhD2.js.map +1 -0
  92. package/dist/{button-BS3KDg00.js → buttons-SbIcm1HJ.js} +200 -213
  93. package/dist/buttons-SbIcm1HJ.js.map +1 -0
  94. package/dist/{cards-QoJ4syG9.js → cards-CiiHpKYd.js} +8 -8
  95. package/dist/cards-CiiHpKYd.js.map +1 -0
  96. package/dist/{chart-DwYRKKc-.js → chart-QfrARkXl.js} +5 -5
  97. package/dist/{chart-DwYRKKc-.js.map → chart-QfrARkXl.js.map} +1 -1
  98. package/dist/checkbox-DhB6K0bK.js +36 -0
  99. package/dist/checkbox-DhB6K0bK.js.map +1 -0
  100. package/dist/choice-inputs-t6w3ATNz.js +766 -0
  101. package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
  102. package/dist/code-block-Dgbu-CU3.js +185 -0
  103. package/dist/code-block-Dgbu-CU3.js.map +1 -0
  104. package/dist/{collapsible-oMUGM4tr.js → collapsible-D8AEGU1-.js} +4 -4
  105. package/dist/{collapsible-oMUGM4tr.js.map → collapsible-D8AEGU1-.js.map} +1 -1
  106. package/dist/{collection-content-Ys-OZOkY.js → collection-content-uK16Grv0.js} +3 -3
  107. package/dist/{collection-content-Ys-OZOkY.js.map → collection-content-uK16Grv0.js.map} +1 -1
  108. package/dist/{combobox-6dvVny2q.js → combobox-2Ic8N9bL.js} +74 -68
  109. package/dist/combobox-2Ic8N9bL.js.map +1 -0
  110. package/dist/{combobox-CB7039j7.js → combobox-DLl0bfiq.js} +307 -305
  111. package/dist/combobox-DLl0bfiq.js.map +1 -0
  112. package/dist/{command-kPMPjIxJ.js → command-kNR20o7x.js} +7 -7
  113. package/dist/{command-kPMPjIxJ.js.map → command-kNR20o7x.js.map} +1 -1
  114. package/dist/{comments-You0Bzbr.js → comments-BpDuCUUu.js} +341 -339
  115. package/dist/comments-BpDuCUUu.js.map +1 -0
  116. package/dist/components/base/action-menu/action-menu.d.ts +21 -4
  117. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  118. package/dist/components/base/action-menu/index.d.ts +1 -0
  119. package/dist/components/base/badge/badge.recipes.d.ts +4 -4
  120. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  121. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  122. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  123. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  124. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  125. package/dist/components/base/choice-inputs/checkbox.d.ts +2 -2
  126. package/dist/components/base/choice-inputs/choice-types.d.ts +18 -6
  127. package/dist/components/base/display/alert-dialog.d.ts +6 -5
  128. package/dist/components/base/display/dialog.d.ts +4 -8
  129. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  130. package/dist/components/base/forms/form-sizing.d.ts +15 -12
  131. package/dist/components/base/metadata-list/index.d.ts +12 -0
  132. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  133. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  134. package/dist/components/base/navigation/index.d.ts +1 -1
  135. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  136. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  137. package/dist/components/base/navigation/page-header/page-header.d.ts +26 -3
  138. package/dist/components/base/sheet/sheet.d.ts +4 -8
  139. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  140. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  141. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  142. package/dist/components/base/upload/upload.recipes.d.ts +25 -3
  143. package/dist/components/base/value-inputs/index.d.ts +5 -5
  144. package/dist/components/base/value-inputs/tags-input.d.ts +36 -12
  145. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  146. package/dist/components/blocks/commerce/address-card/types.d.ts +2 -1
  147. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  148. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  149. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  150. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  151. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  152. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  153. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  154. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  155. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
  156. package/dist/components/blocks/commerce/index.d.ts +13 -5
  157. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  158. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  159. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  160. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  161. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  162. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  163. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  164. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  165. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  166. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  167. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  168. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  169. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  170. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  171. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  172. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  173. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  174. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  175. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  176. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  177. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  178. package/dist/components/blocks/commerce/payment-method/types.d.ts +12 -1
  179. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  180. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  181. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  182. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  183. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  184. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  185. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  186. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  187. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  188. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  189. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  190. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  191. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  192. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  193. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  194. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  195. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  196. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  197. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  198. package/dist/components/features/kanban/kanban.d.ts +1 -1
  199. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  200. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  201. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  202. package/dist/components/features/media-library/index.d.ts +1 -1
  203. package/dist/components/features/media-library/media-library.d.ts +1 -1
  204. package/dist/components/features/media-library/media-library.strings.d.ts +4 -0
  205. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  206. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  207. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  208. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  209. package/dist/components/features/overlays/dialog.d.ts +1 -1
  210. package/dist/components/features/overlays/index.d.ts +1 -1
  211. package/dist/components/features/overlays/overlay-tone-icon.d.ts +3 -3
  212. package/dist/components/features/overlays/overlays.types.d.ts +20 -0
  213. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  214. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  215. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  216. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  217. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  218. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  219. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  220. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  221. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  222. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  223. package/dist/components/features/products/products.types.d.ts +9 -2
  224. package/dist/components/features/resource/index.d.ts +1 -1
  225. package/dist/components/features/resource/resource.d.ts +1 -1
  226. package/dist/components/features/resource/resource.types.d.ts +34 -6
  227. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  228. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  229. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  230. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  231. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  232. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  233. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
  234. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  235. package/dist/components/features/sync/index.d.ts +26 -3
  236. package/dist/components/features/table/data-table.d.ts +1 -1
  237. package/dist/components/features/table/table.types.d.ts +32 -7
  238. package/dist/components/layout/page/index.d.ts +1 -1
  239. package/dist/components/layout/page/page.types.d.ts +33 -36
  240. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  241. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  242. package/dist/components/layout/settings/settings.d.ts +16 -2
  243. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  244. package/dist/components/typography/rich-text/index.d.ts +1 -1
  245. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  246. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  247. package/dist/components/typography/text-link.d.ts +4 -3
  248. package/dist/components/ui/checkbox.d.ts +4 -3
  249. package/dist/components/ui/overlay.recipes.d.ts +0 -9
  250. package/dist/components/ui/switch.d.ts +2 -2
  251. package/dist/{containers-D_L4mTVb.js → containers-DmWiJa2I.js} +36 -35
  252. package/dist/containers-DmWiJa2I.js.map +1 -0
  253. package/dist/{copyable-DDjTeW_j.js → copyable-B3Gwgdqc.js} +6 -6
  254. package/dist/{copyable-DDjTeW_j.js.map → copyable-B3Gwgdqc.js.map} +1 -1
  255. package/dist/data-display-DafIvCl5.js +960 -0
  256. package/dist/data-display-DafIvCl5.js.map +1 -0
  257. package/dist/{date-uf3z37Nm.js → date-BgK3bTdo.js} +5 -5
  258. package/dist/{date-uf3z37Nm.js.map → date-BgK3bTdo.js.map} +1 -1
  259. package/dist/date-picker-CF-DtUpF.js +1529 -0
  260. package/dist/date-picker-CF-DtUpF.js.map +1 -0
  261. package/dist/{date-pickers-CnFCb0n2.js → date-pickers-BmzxJl5l.js} +19 -19
  262. package/dist/{date-pickers-CnFCb0n2.js.map → date-pickers-BmzxJl5l.js.map} +1 -1
  263. package/dist/{display-DrdvPwF0.js → display-DsQTVzMz.js} +88 -87
  264. package/dist/display-DsQTVzMz.js.map +1 -0
  265. package/dist/{dropdown-menu-CURh59jb.js → dropdown-menu-E2qmdC7o.js} +7 -7
  266. package/dist/{dropdown-menu-CURh59jb.js.map → dropdown-menu-E2qmdC7o.js.map} +1 -1
  267. package/dist/features/activities.js +414 -501
  268. package/dist/features/activities.js.map +1 -1
  269. package/dist/features/ai-chat.js +170 -169
  270. package/dist/features/ai-chat.js.map +1 -1
  271. package/dist/features/async-preview.js +8 -8
  272. package/dist/features/async-preview.js.map +1 -1
  273. package/dist/features/combobox.js +1 -1
  274. package/dist/features/comments.js +1 -1
  275. package/dist/features/data-view.js +139 -138
  276. package/dist/features/data-view.js.map +1 -1
  277. package/dist/features/email-composer/engine.js +1 -1
  278. package/dist/features/email-composer.js +73 -71
  279. package/dist/features/email-composer.js.map +1 -1
  280. package/dist/features/event-calendar.js +278 -275
  281. package/dist/features/event-calendar.js.map +1 -1
  282. package/dist/features/filters.js +1 -1
  283. package/dist/features/global-search.js +307 -310
  284. package/dist/features/global-search.js.map +1 -1
  285. package/dist/features/kanban.js +95 -97
  286. package/dist/features/kanban.js.map +1 -1
  287. package/dist/features/map.js +56 -57
  288. package/dist/features/map.js.map +1 -1
  289. package/dist/features/media-library.js +918 -825
  290. package/dist/features/media-library.js.map +1 -1
  291. package/dist/features/mentions.js +1 -1
  292. package/dist/features/overlays.js +1 -1
  293. package/dist/features/products.js +1115 -1122
  294. package/dist/features/products.js.map +1 -1
  295. package/dist/features/questionnaire.js +202 -194
  296. package/dist/features/questionnaire.js.map +1 -1
  297. package/dist/features/resource-assignment.js +25 -25
  298. package/dist/features/resource-assignment.js.map +1 -1
  299. package/dist/features/resource.js +77 -69
  300. package/dist/features/resource.js.map +1 -1
  301. package/dist/features/rich-text-editor.js +30 -11
  302. package/dist/features/rich-text-editor.js.map +1 -1
  303. package/dist/features/schema-form.js +33 -33
  304. package/dist/features/schema-form.js.map +1 -1
  305. package/dist/features/suggestions.js +3 -3
  306. package/dist/features/sync.js +3 -3
  307. package/dist/features/table.js +1 -1
  308. package/dist/features/theme-tweaker.js +397 -396
  309. package/dist/features/theme-tweaker.js.map +1 -1
  310. package/dist/{feedback-C7nR0UtT.js → feedback-qNuMBtRH.js} +84 -83
  311. package/dist/feedback-qNuMBtRH.js.map +1 -0
  312. package/dist/{field-affordance-recipes-CkOCdE2y.js → field-affordance-recipes-qQeIf4lG.js} +8 -6
  313. package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
  314. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  315. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  316. package/dist/{filters-Da-gNPsE.js → filters-BkHH53uv.js} +565 -563
  317. package/dist/filters-BkHH53uv.js.map +1 -0
  318. package/dist/focus-recipes-B653VaLq.js +12 -0
  319. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  320. package/dist/{form-field-VZRULhUK.js → form-field-DUt4UxSV.js} +4 -4
  321. package/dist/{form-field-VZRULhUK.js.map → form-field-DUt4UxSV.js.map} +1 -1
  322. package/dist/{form-sizing-uWP4lzVh.js → form-sizing-By94KzXE.js} +19 -15
  323. package/dist/form-sizing-By94KzXE.js.map +1 -0
  324. package/dist/{forms-DDeEnXSY.js → forms-Bzha-Y3B.js} +22 -22
  325. package/dist/{forms-DDeEnXSY.js.map → forms-Bzha-Y3B.js.map} +1 -1
  326. package/dist/{forms-numeric-D3CO60IF.js → forms-numeric-C0bvjRPZ.js} +265 -264
  327. package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
  328. package/dist/{header-2ycNqGOR.js → header-BOefOKd1.js} +47 -51
  329. package/dist/header-BOefOKd1.js.map +1 -0
  330. package/dist/{hooks-DQ5SPwZw.js → hooks-9k_TtmKh.js} +2 -2
  331. package/dist/{hooks-DQ5SPwZw.js.map → hooks-9k_TtmKh.js.map} +1 -1
  332. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  333. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  334. package/dist/icon-badge-CAuKupo9.js +55 -0
  335. package/dist/icon-badge-CAuKupo9.js.map +1 -0
  336. package/dist/index.js +7 -7
  337. package/dist/input-DWhBBBww.js +262 -0
  338. package/dist/input-DWhBBBww.js.map +1 -0
  339. package/dist/{input-BoLm9Hks.js → input-Ddi_LSYv.js} +3 -3
  340. package/dist/{input-BoLm9Hks.js.map → input-Ddi_LSYv.js.map} +1 -1
  341. package/dist/interaction-recipes-CHr0dJUs.js +24 -0
  342. package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
  343. package/dist/{item-xzh8Df65.js → item-DEmDiTlD.js} +98 -97
  344. package/dist/item-DEmDiTlD.js.map +1 -0
  345. package/dist/layer-recipes-CCpklYME.js +13 -0
  346. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  347. package/dist/layout/app-shell.js +1 -1
  348. package/dist/layout/auth.js +1 -1
  349. package/dist/layout/containers.js +1 -1
  350. package/dist/layout/header.js +1 -1
  351. package/dist/layout/hooks.js +1 -1
  352. package/dist/layout/navigation.js +1 -1
  353. package/dist/layout/page.js +1 -1
  354. package/dist/layout/settings.js +1 -1
  355. package/dist/layout/sidebar.js +2 -2
  356. package/dist/layout/workspace.js +1 -1
  357. package/dist/layout.js +10 -10
  358. package/dist/lib/affordance-geometry.generated.d.ts +1 -0
  359. package/dist/lib/field-affordance-recipes.d.ts +6 -1
  360. package/dist/lib/field-state-recipes.d.ts +9 -8
  361. package/dist/lib/focus-recipes.d.ts +24 -0
  362. package/dist/lib/interaction-recipes.d.ts +35 -0
  363. package/dist/lib/layer-recipes.d.ts +19 -0
  364. package/dist/lib/motion-recipes.d.ts +1 -0
  365. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -0
  366. package/dist/lib/safe-image-src.d.ts +10 -0
  367. package/dist/lib/sanitize-html.d.ts +15 -3
  368. package/dist/lib/surface-recipes.d.ts +47 -7
  369. package/dist/lib/token-merge.generated.d.ts +9 -6
  370. package/dist/lib/tone-recipes.d.ts +79 -0
  371. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  372. package/dist/lib/ui-provider/index.d.ts +2 -2
  373. package/dist/lib/ui-provider/types.d.ts +9 -0
  374. package/dist/lib/utils.js +1 -1
  375. package/dist/media-gallery-DcTtAaeC.js +203 -0
  376. package/dist/media-gallery-DcTtAaeC.js.map +1 -0
  377. package/dist/mentions-D-uyCh01.js +568 -0
  378. package/dist/mentions-D-uyCh01.js.map +1 -0
  379. package/dist/{message-YfFmbXNP.js → message-CdHgIWKf.js} +5 -5
  380. package/dist/{message-YfFmbXNP.js.map → message-CdHgIWKf.js.map} +1 -1
  381. package/dist/metadata-list-X5rYAKSB.js +394 -0
  382. package/dist/metadata-list-X5rYAKSB.js.map +1 -0
  383. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  384. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  385. package/dist/navigation-D3KwXmaq.js +145 -0
  386. package/dist/navigation-D3KwXmaq.js.map +1 -0
  387. package/dist/navigation-HJf5zxlH.js +268 -0
  388. package/dist/navigation-HJf5zxlH.js.map +1 -0
  389. package/dist/{navigation-row-recipes-DlU-4QYO.js → navigation-row-recipes-BVowojQw.js} +2 -2
  390. package/dist/{navigation-row-recipes-DlU-4QYO.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
  391. package/dist/{number-CKRBYmZK.js → number-DMhe-Vsk.js} +5 -5
  392. package/dist/{number-CKRBYmZK.js.map → number-DMhe-Vsk.js.map} +1 -1
  393. package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
  394. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
  395. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  396. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  397. package/dist/overlays-I0axtYA6.js +999 -0
  398. package/dist/overlays-I0axtYA6.js.map +1 -0
  399. package/dist/page-B5dTH9gE.js +224 -0
  400. package/dist/page-B5dTH9gE.js.map +1 -0
  401. package/dist/page-header-commands-DjzFEq3E.js +126 -0
  402. package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
  403. package/dist/{pagination-Cm0jqa3I.js → pagination-3bPA_a6K.js} +15 -15
  404. package/dist/{pagination-Cm0jqa3I.js.map → pagination-3bPA_a6K.js.map} +1 -1
  405. package/dist/{popover-Dcv_9jxr.js → popover-Di55PyAI.js} +8 -8
  406. package/dist/popover-Di55PyAI.js.map +1 -0
  407. package/dist/{popover-menu-DnRFKnHP.js → popover-menu-B71Tn2Qz.js} +6 -6
  408. package/dist/{popover-menu-DnRFKnHP.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
  409. package/dist/{popover.recipes-wmbvL8Ah.js → popover.recipes-Bdyhj2db.js} +2 -2
  410. package/dist/{popover.recipes-wmbvL8Ah.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
  411. package/dist/{primitives-BHrwQXFC.js → primitives-B-CkiEMU.js} +5 -5
  412. package/dist/{primitives-BHrwQXFC.js.map → primitives-B-CkiEMU.js.map} +1 -1
  413. package/dist/primitives.js +4 -4
  414. package/dist/{progress-Br9WTFya.js → progress-rnS8-uAW.js} +9 -9
  415. package/dist/{progress-Br9WTFya.js.map → progress-rnS8-uAW.js.map} +1 -1
  416. package/dist/{receipt-CV89q1fs.js → receipt-D0oswZ0p.js} +6 -6
  417. package/dist/{receipt-CV89q1fs.js.map → receipt-D0oswZ0p.js.map} +1 -1
  418. package/dist/rich-text-DvGulsNJ.js +78 -0
  419. package/dist/rich-text-DvGulsNJ.js.map +1 -0
  420. package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
  421. package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
  422. package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
  423. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
  424. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  425. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  426. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  427. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  428. package/dist/sanitize-html-DsQmI48u.js +92 -0
  429. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  430. package/dist/scroll-area-Bt_vXY2b.js +48 -0
  431. package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
  432. package/dist/{separator-Do5GWDYi.js → separator-C8DlRGwF.js} +3 -3
  433. package/dist/{separator-Do5GWDYi.js.map → separator-C8DlRGwF.js.map} +1 -1
  434. package/dist/{separator-BMEvwnSX.js → separator-CYHnjsAb.js} +2 -2
  435. package/dist/{separator-BMEvwnSX.js.map → separator-CYHnjsAb.js.map} +1 -1
  436. package/dist/services/actions/action-adapters.d.ts +18 -0
  437. package/dist/services/actions/index.d.ts +1 -1
  438. package/dist/services/actions.js +16 -4
  439. package/dist/services/actions.js.map +1 -1
  440. package/dist/settings-CQW3b-Cu.js +170 -0
  441. package/dist/settings-CQW3b-Cu.js.map +1 -0
  442. package/dist/sheet-4SEvVYzA.js +210 -0
  443. package/dist/sheet-4SEvVYzA.js.map +1 -0
  444. package/dist/{sidebar-Crc9M9JV.js → sidebar-C7WWR29L.js} +180 -179
  445. package/dist/sidebar-C7WWR29L.js.map +1 -0
  446. package/dist/{sidebar-Cb8WzOvE.js → sidebar-d7Dg80ln.js} +16 -16
  447. package/dist/sidebar-d7Dg80ln.js.map +1 -0
  448. package/dist/{skeleton-DVMXr15h.js → skeleton-Cz890JZF.js} +9 -9
  449. package/dist/{skeleton-DVMXr15h.js.map → skeleton-Cz890JZF.js.map} +1 -1
  450. package/dist/smart-card-lFKxn5Hu.js +595 -0
  451. package/dist/smart-card-lFKxn5Hu.js.map +1 -0
  452. package/dist/{spinner-CmTAbEp0.js → spinner-fa3h1Aif.js} +7 -7
  453. package/dist/{spinner-CmTAbEp0.js.map → spinner-fa3h1Aif.js.map} +1 -1
  454. package/dist/{structure-hzCW-XsV.js → structure-DC2dygdA.js} +2 -2
  455. package/dist/{structure-hzCW-XsV.js.map → structure-DC2dygdA.js.map} +1 -1
  456. package/dist/style.css +1 -1
  457. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  458. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  459. package/dist/{table-D6zKeYQX.js → table-CIKyLUsy.js} +59 -58
  460. package/dist/table-CIKyLUsy.js.map +1 -0
  461. package/dist/table-CrcLN9Io.js +1458 -0
  462. package/dist/table-CrcLN9Io.js.map +1 -0
  463. package/dist/{tabs-Dk8E_knt.js → tabs-DwBJfjxX.js} +58 -57
  464. package/dist/tabs-DwBJfjxX.js.map +1 -0
  465. package/dist/{text-inputs-BFpku0Qd.js → text-inputs-aaK9wcDT.js} +74 -79
  466. package/dist/text-inputs-aaK9wcDT.js.map +1 -0
  467. package/dist/theme.css +3 -3
  468. package/dist/{timelines-CxuAFIc2.js → timelines-C_SBwHNP.js} +153 -150
  469. package/dist/timelines-C_SBwHNP.js.map +1 -0
  470. package/dist/tone-recipes-CPoExcTE.js +70 -0
  471. package/dist/tone-recipes-CPoExcTE.js.map +1 -0
  472. package/dist/tooltip-CsfgrfS7.js +111 -0
  473. package/dist/tooltip-CsfgrfS7.js.map +1 -0
  474. package/dist/{tree-BotPlyiD.js → tree-BiKhg8AY.js} +68 -66
  475. package/dist/tree-BiKhg8AY.js.map +1 -0
  476. package/dist/typography/rich-text.js +1 -1
  477. package/dist/typography-DTRkE9zL.js +117 -0
  478. package/dist/typography-DTRkE9zL.js.map +1 -0
  479. package/dist/typography.js +1 -1
  480. package/dist/{ui-provider-D2_TeLqw.js → ui-provider-1D_NSYzO.js} +11 -3
  481. package/dist/ui-provider-1D_NSYzO.js.map +1 -0
  482. package/dist/ui-provider.js +3 -3
  483. package/dist/{upload-B0WHW7ak.js → upload-BO8-CLN6.js} +209 -209
  484. package/dist/upload-BO8-CLN6.js.map +1 -0
  485. package/dist/{upload-queue-BHZ_wBfd.js → upload-queue-EOC8g1gf.js} +109 -111
  486. package/dist/upload-queue-EOC8g1gf.js.map +1 -0
  487. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  488. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  489. package/dist/{usage-card-U0YBLTNT.js → usage-card-obRaBskq.js} +46 -46
  490. package/dist/{usage-card-U0YBLTNT.js.map → usage-card-obRaBskq.js.map} +1 -1
  491. package/dist/{utils-Cospvlj1.js → utils-l5LpDw2z.js} +56 -24
  492. package/dist/utils-l5LpDw2z.js.map +1 -0
  493. package/dist/value-inputs-TAYMX111.js +947 -0
  494. package/dist/value-inputs-TAYMX111.js.map +1 -0
  495. package/dist/{value-typography-Deb3yQZg.js → value-typography-b8wpz1eX.js} +2 -2
  496. package/dist/{value-typography-Deb3yQZg.js.map → value-typography-b8wpz1eX.js.map} +1 -1
  497. package/dist/workspace-DH0v0KcB.js +407 -0
  498. package/dist/workspace-DH0v0KcB.js.map +1 -0
  499. package/docs/consumer-skill/SKILL.md +19 -20
  500. package/docs/consumer-skill/examples/app-layout.tsx +1 -1
  501. package/docs/consumer-skill/examples/composition.tsx +3 -3
  502. package/docs/consumer-skill/examples/detail.tsx +59 -12
  503. package/docs/consumer-skill/examples/edit.tsx +1 -1
  504. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  505. package/docs/consumer-skill/examples/scoped-directory.tsx +1 -1
  506. package/docs/consumer-skill/examples/website.tsx +1 -1
  507. package/docs/consumer-skill/references/agents-md.md +33 -0
  508. package/docs/consumer-skill/references/analytics.md +1 -1
  509. package/docs/consumer-skill/references/composition.md +51 -8
  510. package/docs/consumer-skill/references/design-contract.md +12 -3
  511. package/docs/consumer-skill/references/installation.md +11 -1
  512. package/docs/consumer-skill/references/public-api.json +847 -447
  513. package/docs/consumer-skill/references/review.md +25 -5
  514. package/docs/consumer-skill/references/theming.md +8 -4
  515. package/docs/consumer-skill/references/tokens.json +1 -1
  516. package/docs/consumer-skill/references/workflows.md +29 -10
  517. package/docs/consumer-skill/scripts/composition-policy.mjs +41 -11
  518. package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
  519. package/package.json +10 -2
  520. package/dist/accordion-CQXVcd7Q.js.map +0 -1
  521. package/dist/action-menu-BTpyPWJ2.js +0 -264
  522. package/dist/action-menu-BTpyPWJ2.js.map +0 -1
  523. package/dist/affordance-geometry.generated-CCIXb2A1.js.map +0 -1
  524. package/dist/ai-artifact-2PQ2fItc.js.map +0 -1
  525. package/dist/attachment-q69dlt5Y.js +0 -244
  526. package/dist/attachment-q69dlt5Y.js.map +0 -1
  527. package/dist/auth-M3vGMgDR.js.map +0 -1
  528. package/dist/avatar-djdaaQ_s.js.map +0 -1
  529. package/dist/badge-0tATj-tW.js +0 -92
  530. package/dist/badge-0tATj-tW.js.map +0 -1
  531. package/dist/breadcrumbs-BG_FfMK4.js +0 -128
  532. package/dist/breadcrumbs-BG_FfMK4.js.map +0 -1
  533. package/dist/button-BS3KDg00.js.map +0 -1
  534. package/dist/button-R9CCoH7A.js.map +0 -1
  535. package/dist/buttons-DS0ZIwJ_.js +0 -99
  536. package/dist/buttons-DS0ZIwJ_.js.map +0 -1
  537. package/dist/cards-QoJ4syG9.js.map +0 -1
  538. package/dist/checkbox-B7ygNTYp.js +0 -35
  539. package/dist/checkbox-B7ygNTYp.js.map +0 -1
  540. package/dist/choice-inputs-DrJ17tpL.js +0 -752
  541. package/dist/choice-inputs-DrJ17tpL.js.map +0 -1
  542. package/dist/code-block-CD0B7M93.js +0 -183
  543. package/dist/code-block-CD0B7M93.js.map +0 -1
  544. package/dist/combobox-6dvVny2q.js.map +0 -1
  545. package/dist/combobox-CB7039j7.js.map +0 -1
  546. package/dist/comments-You0Bzbr.js.map +0 -1
  547. package/dist/components/layout/page/partials/page-header-commands.d.ts +0 -13
  548. package/dist/containers-D_L4mTVb.js.map +0 -1
  549. package/dist/data-display-3xWQUnMA.js +0 -1335
  550. package/dist/data-display-3xWQUnMA.js.map +0 -1
  551. package/dist/date-picker-DrDFj8Lo.js +0 -1527
  552. package/dist/date-picker-DrDFj8Lo.js.map +0 -1
  553. package/dist/display-DrdvPwF0.js.map +0 -1
  554. package/dist/feedback-C7nR0UtT.js.map +0 -1
  555. package/dist/field-affordance-recipes-CkOCdE2y.js.map +0 -1
  556. package/dist/field-state-recipes-C-MFBX_8.js +0 -11
  557. package/dist/field-state-recipes-C-MFBX_8.js.map +0 -1
  558. package/dist/filters-Da-gNPsE.js.map +0 -1
  559. package/dist/form-sizing-uWP4lzVh.js.map +0 -1
  560. package/dist/forms-numeric-D3CO60IF.js.map +0 -1
  561. package/dist/header-2ycNqGOR.js.map +0 -1
  562. package/dist/icon-badge-DKlaKXoo.js +0 -53
  563. package/dist/icon-badge-DKlaKXoo.js.map +0 -1
  564. package/dist/input-DhQdBnV3.js +0 -255
  565. package/dist/input-DhQdBnV3.js.map +0 -1
  566. package/dist/item-xzh8Df65.js.map +0 -1
  567. package/dist/media-gallery-DQUQ0m3O.js +0 -201
  568. package/dist/media-gallery-DQUQ0m3O.js.map +0 -1
  569. package/dist/mentions-DwnO1hh4.js +0 -564
  570. package/dist/mentions-DwnO1hh4.js.map +0 -1
  571. package/dist/navigation-Cbp5V8gG.js +0 -264
  572. package/dist/navigation-Cbp5V8gG.js.map +0 -1
  573. package/dist/navigation-Cs1npsPm.js +0 -300
  574. package/dist/navigation-Cs1npsPm.js.map +0 -1
  575. package/dist/overlay.recipes-CNO2S9V6.js +0 -34
  576. package/dist/overlay.recipes-CNO2S9V6.js.map +0 -1
  577. package/dist/overlays-DhZO7N-I.js +0 -994
  578. package/dist/overlays-DhZO7N-I.js.map +0 -1
  579. package/dist/page-C6R_8jFt.js +0 -325
  580. package/dist/page-C6R_8jFt.js.map +0 -1
  581. package/dist/page-header-hUTzcRZX.js +0 -112
  582. package/dist/page-header-hUTzcRZX.js.map +0 -1
  583. package/dist/popover-Dcv_9jxr.js.map +0 -1
  584. package/dist/rich-text-editor-CF8QYt5p.js +0 -574
  585. package/dist/rich-text-editor-CF8QYt5p.js.map +0 -1
  586. package/dist/rich-text-editor.recipes-CnrbmTS1.js +0 -81
  587. package/dist/rich-text-editor.recipes-CnrbmTS1.js.map +0 -1
  588. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  589. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  590. package/dist/rich-text-j-FGAeZW.js +0 -32
  591. package/dist/rich-text-j-FGAeZW.js.map +0 -1
  592. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  593. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  594. package/dist/scroll-area-DRdr16Pt.js +0 -47
  595. package/dist/scroll-area-DRdr16Pt.js.map +0 -1
  596. package/dist/settings-DHk0L2MF.js +0 -161
  597. package/dist/settings-DHk0L2MF.js.map +0 -1
  598. package/dist/sheet-DRFNY1_D.js +0 -207
  599. package/dist/sheet-DRFNY1_D.js.map +0 -1
  600. package/dist/sidebar-Cb8WzOvE.js.map +0 -1
  601. package/dist/sidebar-Crc9M9JV.js.map +0 -1
  602. package/dist/smart-card-Bek-TwUp.js +0 -599
  603. package/dist/smart-card-Bek-TwUp.js.map +0 -1
  604. package/dist/surface-recipes-DOdoBXGm.js +0 -28
  605. package/dist/surface-recipes-DOdoBXGm.js.map +0 -1
  606. package/dist/table-D6zKeYQX.js.map +0 -1
  607. package/dist/table-Dn4XSrSB.js +0 -1444
  608. package/dist/table-Dn4XSrSB.js.map +0 -1
  609. package/dist/tabs-Dk8E_knt.js.map +0 -1
  610. package/dist/text-inputs-BFpku0Qd.js.map +0 -1
  611. package/dist/timelines-CxuAFIc2.js.map +0 -1
  612. package/dist/tree-BotPlyiD.js.map +0 -1
  613. package/dist/typography-CAr3dQhX.js +0 -116
  614. package/dist/typography-CAr3dQhX.js.map +0 -1
  615. package/dist/ui-provider-D2_TeLqw.js.map +0 -1
  616. package/dist/upload-B0WHW7ak.js.map +0 -1
  617. package/dist/upload-queue-BHZ_wBfd.js.map +0 -1
  618. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  619. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  620. package/dist/utils-Cospvlj1.js.map +0 -1
  621. package/dist/value-inputs-CjfzGMsN.js +0 -854
  622. package/dist/value-inputs-CjfzGMsN.js.map +0 -1
  623. package/dist/workspace-YoFjXi6i.js +0 -394
  624. package/dist/workspace-YoFjXi6i.js.map +0 -1
  625. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,356 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.1 — 2026-10-18
4
+
5
+ One shared recipe and design-lint rule for each visual state, the fixes the new
6
+ drift checks found, and one command row and record-page recipe for every page
7
+ header. No public export or prop is removed. Additions: `header.tabs` on Page
8
+ (`PageHeaderTabs`); `primaryAction`, `secondaryActions`, `moreActionsLabel` and
9
+ `renderLink` on PageHeading, ResourceHeader, the resource shells and
10
+ SettingsShell, and `primaryAction` on WorkspaceRecordHeader;
11
+ `toPageHeaderAction` in `services/actions`; an optional `toggle` flag on
12
+ `ToolbarButtonConfig` and `RichTextEditorToolbarItem`; `context` on
13
+ `ActionMenu` (`ActionMenuContext`); an optional `actions.menuLabel` in DataTable
14
+ strings; `align` on ConfirmDialog and ActionDialog with UIProvider overlay
15
+ defaults; `selecting`, `defaultSelecting`, `onSelectingChange` and `onItemOpen`
16
+ on MediaLibrary; `useRichTextImages` and `images` on RichTextEditor and
17
+ RichText; the `themelia-react-ui/base/metadata-list` entrypoint; an optional
18
+ `fontFamily` on `signaturePadToSVG`; the `themelia-react-ui/base/batch-action-bar`
19
+ entrypoint; the order blocks, `SummaryPanel` and `AmountRow` in `blocks/commerce`;
20
+ `valueAlign` on MetadataList; `defaultValue`, `name` and ARIA props on TagsInput.
21
+ `PageActions`, `PageAction`,
22
+ `toPageAction`, `features/sync`, the standalone product region cards, the
23
+ `blocks/data-display` MetadataList exports and `ActivityRow` `moreLabel` are
24
+ deprecated.
25
+
26
+ ### Upgrading from 2.0.0
27
+
28
+ - **Focus and control borders.** Library controls draw the soft `--input`
29
+ boundary and one shared focus indicator. Drop `ring-2`, `ring-offset-*` or
30
+ full-strength `ring-ring` focus classes passed to library controls; the
31
+ consumer checker reports them as `focus-ring-recipe`. Themes that override
32
+ `--ring` should keep it at 3:1 against their surfaces.
33
+ - **Page commands.** Replace a `PageActions` ribbon or hand-built buttons in a
34
+ header's `actions` with `primaryAction` (one) and ordered `secondaryActions`;
35
+ mark irreversible commands `destructive: true` and confirm them in the
36
+ handler. `actions` stays for non-command controls such as a period select.
37
+ Move section tabs placed at the top of a Page body into `header.tabs`. The
38
+ consumer checker reports the old shapes as `page-command-roles`.
39
+ - **Overflow trigger names.** Overflow triggers are named "More actions" by
40
+ default. This replaces "Open menu" (`ActionMenu` `strings.openMenuLabel`),
41
+ "Card actions" (Card `actionsLabel`), "Actions" (ContentBlock and DataTable
42
+ row menus) and "Page actions" (`PageActions` `strings.menuLabel`). Update
43
+ tests or automation that find these buttons by name, or pass the old copy
44
+ through those strings. The DataTable actions column header stays "Actions"
45
+ (`strings.actions.triggerLabel`); the row trigger's name moves to the new
46
+ `strings.actions.menuLabel`. Copy that sets only `triggerLabel`, as localized
47
+ tables did before, keeps naming the trigger with it.
48
+ - **Overflow trigger size and glyph.** An icon-only `ActionMenu` trigger now
49
+ follows `UIProvider.density.defaultScale` instead of always rendering at
50
+ `md`; pass `buttonProps.size` to match the controls beside it. The default
51
+ glyph is the horizontal ellipsis (`MoreHorizontal`) rather than
52
+ `MoreVertical`; `icon` still overrides it.
53
+ - **State styling.** Hover, selection, pressed, status-tint, divider, disabled,
54
+ motion, corner and stacking classes passed to library rows and tiles should
55
+ follow the shared roles below. Pressed toggles, including AI feedback votes,
56
+ editor formatting buttons and the editor's source view, show the accent fill
57
+ instead of a status colour or a solid primary fill. `HighlightedText`'s
58
+ default `highlightClassName` is the shared match mark: foreground text on the
59
+ warning tint.
60
+ - **MetadataList moved to base.** Import `MetadataList`, its item types and
61
+ default strings from `themelia-react-ui/base/metadata-list`. The
62
+ `themelia-react-ui/blocks/data-display` re-exports keep working and are
63
+ deprecated. Labels render semibold.
64
+ - **MediaLibrary opens before it selects.** Activating an asset (click, Enter,
65
+ Space) calls `onItemOpen` or shows the details panel. Selection is an explicit
66
+ mode: `selecting`, `defaultSelecting` and `onSelectingChange`. Picker dialogs
67
+ start selecting; pass `defaultSelecting` where a library relied on selecting
68
+ by default.
69
+ - **ConfirmDialog is centred.** ConfirmDialog and ActionDialog accept
70
+ `align: 'start' | 'center'`, resolved from the prop, then the UIProvider
71
+ `overlay.defaultConfirmAlign` / `overlay.defaultDialogAlign` defaults, then
72
+ center for ConfirmDialog and start for ActionDialog.
73
+ - **Deprecated: `themelia-react-ui/features/sync`.** `SyncRangeDialogForm` is
74
+ application-specific; use `SchemaForm` with `radio-cards` and
75
+ `checkbox-cards` fields. The entrypoint still ships.
76
+ - **Deprecated: standalone product region cards and row menus.** Render them
77
+ through `ProductOverview` slots and the `renderOptionActions` /
78
+ `renderVariantActions` options. They stay exported.
79
+ - **Deprecated: `ActivityRow` `moreLabel`.** The collapsed metadata preview it
80
+ labelled is gone; secondary detail opens with the details disclosure.
81
+ - **Selection bars are a `BatchActionBar`.** DataTable's default selection
82
+ toolbar now docks to the bottom of the viewport (`floating`); pass
83
+ `selectionToolbarPlacement="inline"` to keep it in the table. Its summary and
84
+ the new `totalRowCount` prop default to `pagination.total`, so server-paginated
85
+ tables count the whole result. Product variant tables show an inline bar only
86
+ while variants are selected; `renderBulkActions` now replaces the default
87
+ commands, as documented (return `null` to keep them), and Delete no longer
88
+ repeats the count.
89
+ - **MetadataList rows.** `layout="rows"` draws rules only with `itemSeparator`,
90
+ and values start their column on `2fr/3fr` tracks. Pass `valueAlign="end"` for
91
+ the previous right-aligned figures, such as money columns.
92
+ - **TagsInput.** Chips sit inside the field, before the text input in Tab order;
93
+ the count and clear-all move to a footer under the field, and the placeholder
94
+ shows only while the field is empty. The input stays enabled at `maxTags`.
95
+ - **Commerce DOM hooks.** RefundStatusCard, CartSummaryCard,
96
+ DiscountStackPreview, TaxBreakdownCard and ShipmentTracking render on `Card`
97
+ and lose the `content-block--*` classes and `data-component="content-block"`;
98
+ their own `--component` classes stay. ShipmentTracking and InvoiceHeader show
99
+ a visible title with the status chip in its suffix.
100
+
101
+ ### Changes
102
+
103
+ - **Visual: the More actions menu ends the page header's command row.** Page
104
+ commands render as the secondary commands, then the primary command, then the
105
+ More actions menu (`[secondary…] [primary] [⋯]`); 2.0.0 placed the menu
106
+ between the secondary and primary commands. The menu trigger takes the
107
+ secondary treatment, an outline square at the commands' own height, including
108
+ under a compact `UIProvider` scale; it was a ghost glyph at the default size.
109
+ - **Visual: one overflow trigger.** Every overflow menu shares one `ActionMenu`
110
+ trigger recipe (`action-menu.recipes.ts`). It draws the `⋯` glyph, is named
111
+ "More actions", and is a square at the size of the controls beside it, or at
112
+ the provider scale when nothing sits beside it. `context="inline"`, the
113
+ default, is a quiet ghost square with a muted glyph for rows, cards and
114
+ footers. `context="commands"` is the outline square beside outline commands,
115
+ which the page header's More actions trigger now takes from the recipe.
116
+ Card headers, DataTable rows, Kanban items and the EmailComposer footer
117
+ follow the provider scale. Activity rows and ApiKeyList match their own
118
+ compact expand and add controls. `PageActions` uses the outline treatment at
119
+ its inline `size`. The library no longer hand-sets trigger sizes, styles or
120
+ glyphs.
121
+ - **The menu ends any row with a primary command.** The EmailComposer footer
122
+ renders `[Discard] … [Send] [⋯]`, where 2.0.0 placed the menu before Send.
123
+ Send and the menu wrap together, so the menu never sits alone on a narrow
124
+ line.
125
+ - **One menu per header, destructive commands last.** `ProductVariantDetails`
126
+ merges its default variant commands (Open, Edit, Duplicate, Delete) into the
127
+ card's own `actions` menu. Its header no longer shows a second, differently
128
+ sized `⋯`, and Delete sorts last. A custom `renderActions` still renders in
129
+ the header. The product variants bulk bar places Delete after Apply and any
130
+ `renderBulkActions` content.
131
+ - **Overflow trigger enforcement.** The `overflow-trigger` rule in
132
+ `check:contract` rejects overflow glyph imports outside the ActionMenu owner,
133
+ raw UI, pagination and the OverflowTabBar More tab. It also rejects icon-only
134
+ `ActionMenu` triggers that set `tone`, `buttonStyle`, `iconOnly` or
135
+ action-size classes through `buttonProps`.
136
+ `tests/browser/overflow-trigger.spec.ts` checks order, heights and every
137
+ opened menu at 390px and 1440px in light and dark.
138
+ - **One command row for every header.** PageHeading owns the role-based row,
139
+ and `PageHeaderAction` moves to `base/navigation` (still exported from
140
+ `layout/page`). Page and PageHeader pass their commands to it; ResourceHeader,
141
+ ResourceIndexShell, ResourceShowShell and TabbedResourceShell
142
+ (`ResourceHeaderCommandProps`), SettingsShell and WorkspaceRecordHeader take
143
+ the same `primaryAction` and `secondaryActions` and render the same row after
144
+ their custom `actions`. WorkspaceRecordHeader's `secondaryActions` accepts
145
+ command objects; rendered elements keep their previous cluster.
146
+ - **Section tabs in the page header.** `header.tabs` renders a record's
147
+ sections under the header's copy and commands with the shared OverflowTabBar:
148
+ `badge` shows a count, tabs that do not fit move into a More menu, the active
149
+ tab stays visible, and `onValueChange` switches the section or routes.
150
+ - **Deprecated `PageActions`.** Its ribbon defaulted inline commands to solid
151
+ secondary buttons beside a larger ghost menu trigger and collapsed by viewport
152
+ width. Pass commands by role instead, or use ActionButtons for a toolbar.
153
+ `toPageHeaderAction` adapts a resolved action to a role-based command, with a
154
+ destructive tone marking it destructive.
155
+ - **One record-page recipe.** The detail recipe, the resource-detail build
156
+ recipe and a new Page example show a record with one status badge,
157
+ role-based commands, a confirmed destructive command and section tabs with
158
+ counts. Catalogue examples for PageHeading, resources, workspaces, settings,
159
+ app shells and tables use role-based commands; the consumer docs no longer
160
+ recommend card dividers, footer command rows or decorative title icons.
161
+ - **Consumer checker.** `page-command-roles` also flags PageActions,
162
+ ActionButtons and ActionMenu in a header's `actions`, and covers PageHeading,
163
+ the resource shells, WorkspaceRecordHeader and SettingsShell.
164
+ `decorative-icon` flags a page `titleIcon` without a link or handler, and an
165
+ icon on more than one page command. `raw-button` no longer flags a native
166
+ button passed as a package owner's `render`, such as an Item row rendered as
167
+ a button; the owner keeps that root's focus edge and row anatomy. Local
168
+ components passing a native button are still reviewed.
169
+ - **Teaching material follows the house rules.** Catalogue examples, templates
170
+ and the shipped consumer examples use an untoned Button for neutral commands
171
+ (a `tone="secondary"` Button without `buttonStyle` renders solid), spell
172
+ neutral badges `tone="neutral"`, space siblings with Stack, Grid and
173
+ AdaptiveGrid instead of flex/grid gap divs or `space-y` margins, and drop
174
+ decorative title tiles. The order, product, customer, staff and overview
175
+ templates keep Page's default measure; the order template's fulfillment is
176
+ its `header.primaryAction`, the staff template's suspension is a
177
+ `destructive: true` secondary action confirmed by ConfirmDialog, and neither
178
+ repeats the header's status badge in a card or fact list.
179
+ - **Agent guidance closes the loop.** The consumer skill ships a project
180
+ instructions block (`references/agents-md.md`) to paste into an app's
181
+ `AGENTS.md`: under 2,000 characters, version-stamped in its start marker,
182
+ generated and verified by `check:skill`, and naming only scripts that ship
183
+ with the skill. The installed identity recipe reports the block as missing,
184
+ current or stale. SKILL.md and the review guide now make the composition
185
+ checker the agent's done condition (no errors on changed files, at most three
186
+ fix rounds, then the app's typecheck, lint and tests) with a five-line
187
+ hand-back, instead of calling it optional.
188
+ - **Consumer-skill evals.** `evals/consumer-skill` holds eight admin tasks,
189
+ five of them temptations such as a red Delete button or hand-made KPI cards,
190
+ each with a reference and a naive solution. `scripts/consumer-evals.mjs`
191
+ scores agent outputs with the shipped checker, imports and source patterns,
192
+ and `check:agent` proves every reference passes and every naive version fails.
193
+ - **Fix: destructive activity actions.** ActivityFeed row menus passed the
194
+ action tone as an unknown `variant` field, so a destructive action lost its
195
+ destructive treatment and its place at the end of the menu.
196
+ - **Visual: one control boundary and one focus indicator.** `--input` is the
197
+ single control boundary: fields, select and date triggers, checkboxes, radios,
198
+ switch tracks, upload targets and outline buttons all draw it, so adjoining
199
+ controls read as one family. It is now soft and translucent
200
+ (`oklch(0.28 0 0 / 15%)` in light, white at 15% in dark) and reads the same on
201
+ every surface, replacing the 3:1 gray of 2.0.0 (`oklch(0.62 0 0)`, white at
202
+ 40% in dark) that made fields and selects read darker than the outline buttons
203
+ beside them; `--border` stays the divider color, and the repeater's empty
204
+ placeholder uses it. Every focused element draws one indicator from
205
+ `src/lib/focus-recipes.ts`: a 1px `--ring` edge at full strength (the
206
+ control's own border, an inset edge on borderless rows and regions, or an
207
+ outline just outside link and text-button glyphs) inside a soft 3px halo of
208
+ `--ring` at 50%. It replaces the 2px full-strength and offset rings, which
209
+ read as a heavier border. The edge carries the 3:1 contrast. An invalid field
210
+ keeps its destructive border at rest and while focused, where the halo turns
211
+ destructive; there is no resting halo. Focus on a MediaGallery tile is drawn
212
+ inside the tile, where its overflow clipping had hidden it. Design lint's
213
+ `focus-ring-recipe` rule (replacing `focus-ring-contrast`) rejects other focus
214
+ ring widths, offsets and halo strengths in library source and on imported
215
+ consumer controls. The contrast contract keeps `--ring` and `--sidebar-ring`
216
+ at 3:1 and checks `--input` against a 1.3:1 visibility floor on background,
217
+ card, popover, muted, accent and secondary surfaces.
218
+ - **Visual: one recipe per state family.** Each family that had several local
219
+ spellings now has one owner and a design-lint rule that cannot acquire
220
+ migration debt.
221
+ - Rows (navigation, lists, trees, results, menus) hover and select with
222
+ `--accent`, and the current location adds medium weight, so a hover never
223
+ reads as current. Ghost and outline buttons hover with the same fill and its
224
+ `--accent-foreground`; a component's own hover colour still wins.
225
+ - Toggles hover with `--muted` and press with `--accent`. Tables keep a
226
+ quieter `muted` ladder for stripes, hover and selection. Segmented tracks
227
+ lift the active segment to `--card`.
228
+ - Text never takes opacity: faded secondary text, which fell under 4.5:1, uses
229
+ the typography roles.
230
+ - Dividers are `--border` at full strength on surface edges and at 60% between
231
+ rows.
232
+ - Disabled content dims once, to 50%.
233
+ - Status and emphasis tints use one scale per tone
234
+ (`src/lib/tone-recipes.ts`): a wash for large surfaces, a tint for chips,
235
+ badges and icon tiles, and an edge, halo and line strength. The contrast
236
+ contract tests each tone's ink on its tint. Badges, alerts, avatars, icon
237
+ tiles, activity, search, calendar, timeline, commerce and AI blocks share
238
+ it. Search matches and edit diffs use one inline mark, and the heatmap and
239
+ distribution ruler keep their data ramps.
240
+ - Colour, border and shadow state changes keep the default 150ms transition.
241
+ - Corners derive from `--radius`: the fixed 4px `rounded` and the t-shirt
242
+ steps in raw UI, skeletons and chips are gone.
243
+ - Stacking uses one scale: raised, sticky, sticky over sticky, chrome and
244
+ overlay.
245
+ - SectionNav links gain the shared focus indicator, borderless Item rows draw
246
+ the focus edge inset, and the column-resize handle marks focus in the ring
247
+ colour.
248
+ - Neutral fills use one strength per role: a wash for quiet regions, a band
249
+ for header, toolbar and footer strips, a solid track, a neutral chip and
250
+ neutral markers. Twenty strengths become five. Table heads, toolbars, empty
251
+ states, AI panels, auth and workspace regions, tab tracks, meters and
252
+ carousel dots share them.
253
+ - Elevation uses one theme shadow per role: resting, card, raised, lifted and
254
+ modal. The command palette's 2xl shadow, two custom table-frame shadows
255
+ (which glowed in dark mode) and a shadow colour override are gone.
256
+ - Keyboard-shortcut hints in the header search trigger and the global search
257
+ footer share one key-cap style.
258
+ - Floating chips over media, lifted panels over the auth art and the chat
259
+ composer band are opaque.
260
+ - A drift census budgets each family's vocabulary in `check:design-lint`, and
261
+ a rendered role-parity browser check measures hover, current, disabled and
262
+ focus in light and dark.
263
+ - Rich-text toolbar toggles announce their state. Built-in format buttons and
264
+ the source view expose `aria-pressed`; undo and redo do not.
265
+ `ToolbarButtonConfig` and `RichTextEditorToolbarItem` gain an optional
266
+ `toggle` flag; an extra toolbar item with `isActive` is a toggle unless it
267
+ sets `toggle: false`.
268
+ - Item titles that cannot fit end in an ellipsis on their text. The title row is
269
+ a flex container, where `text-overflow` has no effect, so a long token was
270
+ clipped mid-glyph instead: an applied coupon `SPRING2026` read as `SPRING202`.
271
+ Truncating titles in citations, vendor profiles, gift cards and attachments
272
+ benefit too. The applied coupon also carries its full code as a `title`.
273
+ - **Overlays draw one rule per region boundary.** ActionDialog, ActionDrawer
274
+ and ConfirmDialog separate header, body and footer with a rule, and a dialog
275
+ without a body shows a single rule.
276
+ - **Rich text images.** RichTextEditor and RichText support images through
277
+ `useRichTextImages`: the consumer owns `upload(file, { signal })`; the library
278
+ owns toolbar, paste and drop insertion, the upload placeholder, cancel, retry
279
+ and remove, type and size limits, alt text and the http/https/blob/relative
280
+ source policy. `renderImage` draws read-only images with the consumer's
281
+ component.
282
+ - **RichTextEditor runs Tiptap.** Its runtime check required `EditorContent`
283
+ to be a function, but Tiptap 3 exports it as `React.memo`, so every editor
284
+ (rich text, comment, activity and email composers) silently rendered the
285
+ contenteditable fallback with formatting disabled. Picking a mention in Tiptap
286
+ now replaces its `@query` instead of appending after it, and the editor chip
287
+ keeps the `.rsc-mention` hook, so mention-chip.css draws it in both engines.
288
+ - **Mentions insert as atomic badge chips** removed by one Backspace. The
289
+ suggestion list and picker are more compact, and kind filters use the shared
290
+ toggle style.
291
+ - **Global search** builds its field on the public `InputGroup` and lays out
292
+ results, group headings and the footer with the compact Command recipe.
293
+ - **Activities open compact.** Rich rows show the headline and description;
294
+ metadata, changes, details, resource chips and inline actions appear together
295
+ behind "Show details".
296
+ - **Comments** no longer leave an empty band under each comment's action row.
297
+ - **Choice inputs centre on the label line.** Checkbox, radio, switch and
298
+ selected-card checks share one label-line track (questionnaire,
299
+ ApiTokenManager, card groups).
300
+ - **One plain X clears fields.** Input, Textarea, Cascader, Combobox and global
301
+ search clear actions, and TagsInput and Combobox chip removes, draw a plain X
302
+ instead of a circled X.
303
+ - **Cascader** draws Input's field frame and the shared Combobox affordance
304
+ track; its clear sits beside a chevron aligned with Select's.
305
+ - **Visual: Badge `sm` and `md` are 2px taller** (20px and 23px) at the same
306
+ type size; inline badges are unchanged, and TagsInput chips follow.
307
+ - **NavigationTabs** keeps the current tab lifted under hover and press;
308
+ inactive tabs change colour only.
309
+ - **SignaturePad** draws, exports and previews typed names in the pad's font
310
+ (theme sans by default) instead of `cursive`, and fits long names by font
311
+ size; `signaturePadToSVG` accepts an optional `fontFamily`.
312
+ - **Fixes:** Dropzone centres both copy lines; IconBadge sizes child glyphs with
313
+ its icon role (SmartAccordion medallions render at 16px); Alert's icon and
314
+ action columns use Toast's 8px gap; content typography fits images to the
315
+ column.
316
+ - **Catalogue:** the deprecated Sheet page, the products main-column, actions
317
+ and support-rail pages and the sync page are retired; their URLs redirect to
318
+ the overlays, product overview and SchemaForm pages.
319
+ - **BatchActionBar** (`themelia-react-ui/base/batch-action-bar`): one selection
320
+ bar with a count, bulk actions and Clear, `floating` (docked, lifted, opaque)
321
+ or `inline`. The count is a polite live region, Escape inside the bar clears,
322
+ and focus returns to the list (or `returnFocusRef`) when the bar goes away.
323
+ DataTable, product variants and MediaLibrary's new `bulkActions` use it; the
324
+ old sticky selection toolbar and its overlap with the sticky topbar are gone.
325
+ - **Order blocks** in `blocks/commerce`: `OrderHeader` (payment and fulfilment
326
+ status axes), `FulfillmentGroup`, `OrderLineItem`, `OrderSummary`,
327
+ `OrderTransactions` and `OrderCustomer`, with an Orders catalogue group and an
328
+ Order detail composition. The shared money ledger `SummaryPanel` and
329
+ `AmountRow` now draw CartSummaryCard, TaxBreakdownCard, DiscountStackPreview,
330
+ InvoiceHeader and OrderSummary: no tinted box, one rule above a grand total.
331
+ - **Commerce blocks follow the source kit.** ShipmentTracking has a copyable
332
+ tracking number (`onCopyTracking`) and a timestamped checkpoint rail whose
333
+ current step is `aria-current="step"`; RefundStatusCard is an ordered list of
334
+ stages; PaymentMethod gains `variant="row"` and speaks `strings.formatCard`
335
+ ("Visa ending 4242"); CartSummaryCard falls back to initials on a failed image
336
+ and adds `strings.formatQuantity`; DiscountStackPreview takes an optional
337
+ `kind` and `id`. Blocks pass native attributes to their root. `CartSummary`,
338
+ `DiscountStack`, `RefundStatus` and `PaymentMethodCard` are added as the source
339
+ kit's names for the same components. `Timeline` items expose `data-status` and
340
+ mark the current item `aria-current="step"`.
341
+ - **MetadataList** labels wrap in every layout and stay semibold; inline
342
+ `itemSeparator` is a middle dot hidden from screen readers; `render` output
343
+ takes the value style; the info trigger no longer grows its line; `icon` takes
344
+ any `ComponentType<{ className?: string }>`.
345
+ - **TagsInput fixes.** Multi-tag paste commits every tag, `sortTags` removes the
346
+ right tag, object tags are created from an empty value, a refused entry no
347
+ longer traps Tab, IME composition no longer commits, a typed delimiter splits,
348
+ single-token paste is native, and focus moves to the neighbouring chip after a
349
+ removal. Refused entries stay in the draft and are announced
350
+ (`strings.notAdded`). New `defaultValue`, `name` (hidden `name[]` inputs) and
351
+ ARIA pass-through; `TagsInputStrings` and `defaultTagsInputStrings` are
352
+ exported.
353
+
3
354
  ## 2.0.0 — 2026-10-16
4
355
 
5
356
  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.1`** · 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
@@ -95,7 +95,7 @@ The shipped stylesheet follows `prefers-reduced-motion` automatically for these
95
95
  | Base | `base/<family>` — controls, forms, buttons, cards, structure, navigation, menus, feedback, display, tables, uploads and specialist controls |
96
96
  | Layout | `layout`, `layout/<family>` — application shell, authentication, containers, page, settings, header, navigation, sidebar, workspace and hooks |
97
97
  | 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/`) |
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` (deprecated), `table`, `theme-tweaker` (each prefixed `features/`) |
99
99
 
100
100
  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
101
 
@@ -201,28 +201,41 @@ The default development URL opens the full component catalogue. The focused foun
201
201
 
202
202
  `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
203
 
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.
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. Give a card one quick control in `headerAction`, a command list in `actions` (its More actions menu) and the commit action in `footerSlot`; spacing, not a divider, separates the footer. 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
205
 
206
206
  Application drawers use `ActionDrawer` and `useOverlayVisibility` from `themelia-react-ui/features/overlays`. Sheet is the structural foundation and remains available for lower-layer infrastructure and compatibility.
207
207
 
208
- Page header commands are role-based: one `primaryAction` and ordered
209
- `secondaryActions`, with overflow, destructive commands and narrow widths moved
210
- into a More actions menu. Keep `actions` for non-command controls.
208
+ Header commands are role-based: one `primaryAction` and ordered
209
+ `secondaryActions` render as `[secondary…] [primary] [⋯]`, with overflow,
210
+ destructive commands and narrow widths moved into the More actions menu that
211
+ ends the row. Page, PageHeader, PageHeading, the resource shells,
212
+ WorkspaceRecordHeader and SettingsShell share that row; keep `actions` for
213
+ non-command controls. `header.tabs` puts a record's section tabs, with counts,
214
+ under its header.
215
+
216
+ Every overflow menu shares one `ActionMenu` trigger: the `⋯` glyph named "More
217
+ actions", a quiet ghost square in rows and cards (`context="inline"`, the
218
+ default) or an outline square beside outline commands (`context="commands"`),
219
+ at the size of the controls beside it (`buttonProps.size`) or the provider
220
+ scale. The menu comes after any primary command in its row, and destructive
221
+ entries stay last.
211
222
  Page owns inline and block padding, defaulting to the large surface role;
212
223
  PageViewport owns scrolling and supplies no inset. Use `Page narrow` for a
213
224
  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`.
225
+ gaps. Ordinary cards retain default `md` padding and separate header, body and
226
+ footer by spacing; `card.defaultHeaderDivider` and `card.defaultFooterDivider`
227
+ remain for an app whose design calls for rules.
216
228
  AppSidebar offers pinned `slots.headerStart`/`headerEnd` around its workspace
217
229
  region, compact navigation and a separated footer. The
218
230
  [complete shell recipe](docs/consumer-skill/examples/app-layout.tsx) demonstrates
219
231
  public workspace/account controls and application-owned callbacks.
220
232
 
221
233
  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.
234
+ surfaces win. Leave Card's `icon` slot for a glyph that carries state or a
235
+ brand; titles name the subject. `headerPlacement` chooses inside/frame
236
+ composition independently. Independent framed peers use `gap="2xl"`, matching
237
+ Page and TwoColumnLayout's rhythm, since outer rings consume a smaller DOM gap.
238
+ MetadataList (`themelia-react-ui/base/metadata-list`) keeps semibold labels and normal primary values in both densities.
226
239
  Dashboard KPIs use Metric/MetricGrid/MetricBar; quotas use the focused UsageCard
227
240
  owner. See [analytics selection](docs/consumer-skill/references/analytics.md) and
228
241
  the [resource page recipe](docs/consumer-skill/examples/detail.tsx).
@@ -276,7 +289,7 @@ purpose from its name or read every document before starting a screen.
276
289
 
277
290
  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
291
 
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.
292
+ 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.1/` for the current version. Each version preserves the complete skill and all declaration files, supports search with the same finder, and uses relative links under any hosting subdirectory. Serve the entire artifact over HTTP; it needs no external CDN. Run `npm run check:static-docs` to check generated asset paths. The future hosting destination remains pending.
280
293
 
281
294
  `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
295