themelia-react-ui 1.0.2 → 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 (748) hide show
  1. package/CHANGELOG.md +632 -1
  2. package/README.md +31 -13
  3. package/dist/accordion-B6a3vVgA.js +207 -0
  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-CL84ZN9A.js → affordance-geometry.generated-B5iu-Mkr.js} +9 -3
  8. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
  9. package/dist/{ai-artifact-DLVdK0Py.js → ai-artifact-BMJdv-6q.js} +389 -391
  10. package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
  11. package/dist/{app-shell-C_fKpljx.js → app-shell-ZK5RWdo6.js} +4 -4
  12. package/dist/{app-shell-C_fKpljx.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-CAQcasMV.js → auth-CYxKfo69.js} +239 -237
  16. package/dist/auth-CYxKfo69.js.map +1 -0
  17. package/dist/{avatar-Bu2HhitA.js → avatar-BBnEJIx8.js} +71 -68
  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 +19 -19
  30. package/dist/base/carousel.js.map +1 -1
  31. package/dist/base/cascader.js +234 -224
  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 +81 -76
  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 +7 -4
  53. package/dist/base/qr-code.js.map +1 -1
  54. package/dist/base/repeaters.js +175 -174
  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 +148 -138
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +1 -1
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +4 -4
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +2 -2
  71. package/dist/batch-action-bar-BZGDG-Si.js +104 -0
  72. package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
  73. package/dist/blocks/admin.js +264 -253
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +293 -323
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +596 -587
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +2246 -1693
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +3 -2
  85. package/dist/blocks/onboarding.js +50 -49
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +82 -91
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/breadcrumbs-D5t7I023.js +129 -0
  91. package/dist/breadcrumbs-D5t7I023.js.map +1 -0
  92. package/dist/{button-BZyfTvwm.js → button-QYwiyhD2.js} +15 -14
  93. package/dist/button-QYwiyhD2.js.map +1 -0
  94. package/dist/buttons-SbIcm1HJ.js +661 -0
  95. package/dist/buttons-SbIcm1HJ.js.map +1 -0
  96. package/dist/{cards-qGSErLw_.js → cards-CiiHpKYd.js} +8 -8
  97. package/dist/cards-CiiHpKYd.js.map +1 -0
  98. package/dist/{chart-Bsc5BICK.js → chart-QfrARkXl.js} +17 -15
  99. package/dist/chart-QfrARkXl.js.map +1 -0
  100. package/dist/checkbox-DhB6K0bK.js +36 -0
  101. package/dist/checkbox-DhB6K0bK.js.map +1 -0
  102. package/dist/choice-inputs-t6w3ATNz.js +766 -0
  103. package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
  104. package/dist/code-block-Dgbu-CU3.js +185 -0
  105. package/dist/code-block-Dgbu-CU3.js.map +1 -0
  106. package/dist/{collapsible-ClvC7Bj3.js → collapsible-D8AEGU1-.js} +4 -4
  107. package/dist/{collapsible-ClvC7Bj3.js.map → collapsible-D8AEGU1-.js.map} +1 -1
  108. package/dist/{collection-content-D6S8cv_n.js → collection-content-uK16Grv0.js} +3 -3
  109. package/dist/{collection-content-D6S8cv_n.js.map → collection-content-uK16Grv0.js.map} +1 -1
  110. package/dist/{combobox-BFnbJJp3.js → combobox-2Ic8N9bL.js} +103 -98
  111. package/dist/combobox-2Ic8N9bL.js.map +1 -0
  112. package/dist/combobox-DLl0bfiq.js +867 -0
  113. package/dist/combobox-DLl0bfiq.js.map +1 -0
  114. package/dist/{command-BnmSchli.js → command-kNR20o7x.js} +34 -30
  115. package/dist/command-kNR20o7x.js.map +1 -0
  116. package/dist/{comments-u5L0OGip.js → comments-BpDuCUUu.js} +304 -301
  117. package/dist/comments-BpDuCUUu.js.map +1 -0
  118. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  119. package/dist/components/base/action-menu/action-menu.d.ts +27 -5
  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/avatar/stacked-avatars.d.ts +5 -4
  123. package/dist/components/base/badge/badge.d.ts +1 -1
  124. package/dist/components/base/badge/badge.recipes.d.ts +6 -6
  125. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  126. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  127. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  128. package/dist/components/base/buttons/base-button.d.ts +7 -0
  129. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  130. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  131. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  132. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  133. package/dist/components/base/buttons/text-button.d.ts +2 -2
  134. package/dist/components/base/carousel/carousel.d.ts +3 -1
  135. package/dist/components/base/chart/chart.d.ts +7 -7
  136. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  137. package/dist/components/base/choice-inputs/choice-types.d.ts +24 -3
  138. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  139. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  140. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  141. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  142. package/dist/components/base/date-pickers/datepicker.types.d.ts +13 -3
  143. package/dist/components/base/display/alert-dialog.d.ts +10 -3
  144. package/dist/components/base/display/content-block.d.ts +4 -2
  145. package/dist/components/base/display/date-block.d.ts +1 -1
  146. package/dist/components/base/display/dialog.d.ts +8 -5
  147. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  148. package/dist/components/base/display/surface-title.d.ts +6 -1
  149. package/dist/components/base/feedback/alert.d.ts +1 -1
  150. package/dist/components/base/feedback/state-display.d.ts +5 -4
  151. package/dist/components/base/forms/form-sizing.d.ts +43 -8
  152. package/dist/components/base/forms/workflow.d.ts +2 -0
  153. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  154. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  155. package/dist/components/base/metadata-list/index.d.ts +12 -0
  156. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  157. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  158. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  159. package/dist/components/base/navigation/index.d.ts +1 -1
  160. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  161. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  162. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  163. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  164. package/dist/components/base/navigation/page-header/page-header.d.ts +30 -4
  165. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  166. package/dist/components/base/sheet/index.d.ts +29 -1
  167. package/dist/components/base/sheet/sheet.d.ts +10 -5
  168. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  169. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  170. package/dist/components/base/spinner/spinner.d.ts +3 -2
  171. package/dist/components/base/structure/structure.types.d.ts +1 -1
  172. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  173. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  174. package/dist/components/base/upload/upload.recipes.d.ts +33 -0
  175. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  176. package/dist/components/base/value-inputs/index.d.ts +5 -5
  177. package/dist/components/base/value-inputs/tags-input.d.ts +38 -12
  178. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  179. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  180. package/dist/components/blocks/analytics/index.d.ts +1 -1
  181. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  182. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  183. package/dist/components/blocks/commerce/address-card/types.d.ts +4 -1
  184. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  185. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  186. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  187. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  188. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  189. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  190. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  191. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  192. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  193. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  194. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
  195. package/dist/components/blocks/commerce/index.d.ts +13 -5
  196. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  197. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  198. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  199. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  200. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  201. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  202. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  203. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  204. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  205. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  206. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  207. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  208. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  209. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  210. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  211. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  212. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  213. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  214. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  215. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  216. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  217. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  218. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  219. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  220. package/dist/components/blocks/commerce/payment-method/types.d.ts +14 -1
  221. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  222. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  223. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  224. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  225. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  226. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  227. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  228. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  229. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  230. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  231. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  232. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  233. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  234. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  235. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  236. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  237. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  238. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  239. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  240. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  241. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  242. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  243. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  244. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  245. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  246. package/dist/components/features/kanban/kanban.d.ts +1 -1
  247. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  248. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  249. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  250. package/dist/components/features/media-library/index.d.ts +1 -1
  251. package/dist/components/features/media-library/media-library.d.ts +1 -1
  252. package/dist/components/features/media-library/media-library.strings.d.ts +4 -0
  253. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  254. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  255. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  256. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  257. package/dist/components/features/overlays/dialog.d.ts +1 -1
  258. package/dist/components/features/overlays/drawer.d.ts +1 -1
  259. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  260. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  261. package/dist/components/features/overlays/index.d.ts +1 -1
  262. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  263. package/dist/components/features/overlays/overlays.types.d.ts +62 -19
  264. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  265. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  266. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  267. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  268. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  269. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  270. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  271. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  272. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  273. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  274. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  275. package/dist/components/features/products/partials/index.d.ts +1 -1
  276. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  277. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  278. package/dist/components/features/products/products.types.d.ts +11 -3
  279. package/dist/components/features/resource/index.d.ts +1 -1
  280. package/dist/components/features/resource/resource.d.ts +1 -1
  281. package/dist/components/features/resource/resource.types.d.ts +34 -6
  282. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  283. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  284. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  285. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  286. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  287. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  288. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
  289. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  290. package/dist/components/features/sync/index.d.ts +26 -3
  291. package/dist/components/features/table/data-table.d.ts +1 -1
  292. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  293. package/dist/components/features/table/table.types.d.ts +32 -7
  294. package/dist/components/layout/page/index.d.ts +1 -1
  295. package/dist/components/layout/page/page.types.d.ts +51 -4
  296. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  297. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  298. package/dist/components/layout/settings/settings.d.ts +16 -2
  299. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  300. package/dist/components/primitives/date.d.ts +16 -3
  301. package/dist/components/primitives/dimensions.d.ts +6 -0
  302. package/dist/components/primitives/duration.d.ts +6 -0
  303. package/dist/components/primitives/file-size.d.ts +6 -0
  304. package/dist/components/primitives/index.d.ts +1 -1
  305. package/dist/components/primitives/initials.d.ts +11 -2
  306. package/dist/components/primitives/link.d.ts +7 -0
  307. package/dist/components/primitives/money.d.ts +29 -7
  308. package/dist/components/primitives/number.d.ts +17 -0
  309. package/dist/components/primitives/value-typography.d.ts +54 -0
  310. package/dist/components/primitives/value.d.ts +31 -6
  311. package/dist/components/typography/heading.d.ts +9 -1
  312. package/dist/components/typography/label.d.ts +3 -0
  313. package/dist/components/typography/rich-text/index.d.ts +1 -1
  314. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  315. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  316. package/dist/components/typography/running-text.d.ts +12 -0
  317. package/dist/components/typography/text-link.d.ts +24 -1
  318. package/dist/components/typography/text.d.ts +12 -0
  319. package/dist/components/typography/text.styles.d.ts +35 -13
  320. package/dist/components/ui/button.d.ts +1 -1
  321. package/dist/components/ui/checkbox.d.ts +6 -0
  322. package/dist/components/ui/overlay.recipes.d.ts +6 -2
  323. package/dist/components/ui/select.d.ts +3 -1
  324. package/dist/components/ui/switch.d.ts +5 -0
  325. package/dist/{containers-DqB-bSYE.js → containers-DmWiJa2I.js} +36 -35
  326. package/dist/containers-DmWiJa2I.js.map +1 -0
  327. package/dist/{copyable-BTSByfmq.js → copyable-B3Gwgdqc.js} +6 -6
  328. package/dist/{copyable-BTSByfmq.js.map → copyable-B3Gwgdqc.js.map} +1 -1
  329. package/dist/data-display-DafIvCl5.js +960 -0
  330. package/dist/data-display-DafIvCl5.js.map +1 -0
  331. package/dist/date-BgK3bTdo.js +144 -0
  332. package/dist/date-BgK3bTdo.js.map +1 -0
  333. package/dist/date-picker-CF-DtUpF.js +1529 -0
  334. package/dist/date-picker-CF-DtUpF.js.map +1 -0
  335. package/dist/date-pickers-BmzxJl5l.js +174 -0
  336. package/dist/date-pickers-BmzxJl5l.js.map +1 -0
  337. package/dist/{display-CS6Hbk18.js → display-DsQTVzMz.js} +88 -87
  338. package/dist/display-DsQTVzMz.js.map +1 -0
  339. package/dist/{dropdown-menu-D-boNgGO.js → dropdown-menu-E2qmdC7o.js} +23 -16
  340. package/dist/dropdown-menu-E2qmdC7o.js.map +1 -0
  341. package/dist/features/activities.js +437 -521
  342. package/dist/features/activities.js.map +1 -1
  343. package/dist/features/ai-chat.js +174 -172
  344. package/dist/features/ai-chat.js.map +1 -1
  345. package/dist/features/async-preview.js +8 -8
  346. package/dist/features/async-preview.js.map +1 -1
  347. package/dist/features/combobox.js +1 -1
  348. package/dist/features/comments.js +1 -1
  349. package/dist/features/data-view.js +139 -138
  350. package/dist/features/data-view.js.map +1 -1
  351. package/dist/features/email-composer/engine.js +1 -1
  352. package/dist/features/email-composer.js +353 -352
  353. package/dist/features/email-composer.js.map +1 -1
  354. package/dist/features/event-calendar.js +262 -269
  355. package/dist/features/event-calendar.js.map +1 -1
  356. package/dist/features/filters.js +1 -1
  357. package/dist/features/global-search.js +307 -310
  358. package/dist/features/global-search.js.map +1 -1
  359. package/dist/features/kanban.js +95 -97
  360. package/dist/features/kanban.js.map +1 -1
  361. package/dist/features/map.js +56 -57
  362. package/dist/features/map.js.map +1 -1
  363. package/dist/features/media-library.js +914 -824
  364. package/dist/features/media-library.js.map +1 -1
  365. package/dist/features/mentions.js +1 -1
  366. package/dist/features/overlays.js +1 -1
  367. package/dist/features/products.js +1272 -1311
  368. package/dist/features/products.js.map +1 -1
  369. package/dist/features/questionnaire.js +204 -194
  370. package/dist/features/questionnaire.js.map +1 -1
  371. package/dist/features/resource-assignment.js +103 -95
  372. package/dist/features/resource-assignment.js.map +1 -1
  373. package/dist/features/resource.js +77 -69
  374. package/dist/features/resource.js.map +1 -1
  375. package/dist/features/rich-text-editor.js +30 -11
  376. package/dist/features/rich-text-editor.js.map +1 -1
  377. package/dist/features/schema-form.js +193 -189
  378. package/dist/features/schema-form.js.map +1 -1
  379. package/dist/features/suggestions.js +3 -3
  380. package/dist/features/sync.js +7 -7
  381. package/dist/features/sync.js.map +1 -1
  382. package/dist/features/table.js +1 -1
  383. package/dist/features/theme-tweaker.js +455 -455
  384. package/dist/features/theme-tweaker.js.map +1 -1
  385. package/dist/feedback-qNuMBtRH.js +233 -0
  386. package/dist/feedback-qNuMBtRH.js.map +1 -0
  387. package/dist/field-affordance-recipes-qQeIf4lG.js +48 -0
  388. package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
  389. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  390. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  391. package/dist/{filters-D6FF8L6s.js → filters-BkHH53uv.js} +414 -412
  392. package/dist/filters-BkHH53uv.js.map +1 -0
  393. package/dist/focus-recipes-B653VaLq.js +12 -0
  394. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  395. package/dist/{form-field-CZwrkP7m.js → form-field-DUt4UxSV.js} +7 -7
  396. package/dist/{form-field-CZwrkP7m.js.map → form-field-DUt4UxSV.js.map} +1 -1
  397. package/dist/form-sizing-By94KzXE.js +130 -0
  398. package/dist/form-sizing-By94KzXE.js.map +1 -0
  399. package/dist/{forms-B5NCbkSC.js → forms-Bzha-Y3B.js} +25 -25
  400. package/dist/forms-Bzha-Y3B.js.map +1 -0
  401. package/dist/forms-numeric-C0bvjRPZ.js +906 -0
  402. package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
  403. package/dist/{header-kxruN3RM.js → header-BOefOKd1.js} +38 -41
  404. package/dist/header-BOefOKd1.js.map +1 -0
  405. package/dist/{hooks-BrlnCwQd.js → hooks-9k_TtmKh.js} +2 -2
  406. package/dist/{hooks-BrlnCwQd.js.map → hooks-9k_TtmKh.js.map} +1 -1
  407. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  408. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  409. package/dist/icon-badge-CAuKupo9.js +55 -0
  410. package/dist/icon-badge-CAuKupo9.js.map +1 -0
  411. package/dist/index.js +7 -7
  412. package/dist/input-DWhBBBww.js +262 -0
  413. package/dist/input-DWhBBBww.js.map +1 -0
  414. package/dist/{input-vxcaNCYC.js → input-Ddi_LSYv.js} +3 -3
  415. package/dist/{input-vxcaNCYC.js.map → input-Ddi_LSYv.js.map} +1 -1
  416. package/dist/interaction-recipes-CHr0dJUs.js +24 -0
  417. package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
  418. package/dist/item-DEmDiTlD.js +265 -0
  419. package/dist/item-DEmDiTlD.js.map +1 -0
  420. package/dist/layer-recipes-CCpklYME.js +13 -0
  421. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  422. package/dist/layout/app-shell.js +1 -1
  423. package/dist/layout/auth.js +1 -1
  424. package/dist/layout/containers.js +1 -1
  425. package/dist/layout/header.js +1 -1
  426. package/dist/layout/hooks.js +1 -1
  427. package/dist/layout/navigation.js +1 -1
  428. package/dist/layout/page.js +1 -1
  429. package/dist/layout/settings.js +1 -1
  430. package/dist/layout/sidebar.js +2 -2
  431. package/dist/layout/workspace.js +1 -1
  432. package/dist/layout.js +10 -10
  433. package/dist/lib/affordance-geometry.generated.d.ts +7 -1
  434. package/dist/lib/field-affordance-recipes.d.ts +41 -1
  435. package/dist/lib/field-state-recipes.d.ts +9 -6
  436. package/dist/lib/focus-recipes.d.ts +24 -0
  437. package/dist/lib/format.d.ts +9 -0
  438. package/dist/lib/interaction-recipes.d.ts +35 -0
  439. package/dist/lib/layer-recipes.d.ts +19 -0
  440. package/dist/lib/money-format.d.ts +30 -0
  441. package/dist/lib/motion-recipes.d.ts +1 -0
  442. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -1
  443. package/dist/lib/safe-image-src.d.ts +10 -0
  444. package/dist/lib/sanitize-html.d.ts +15 -3
  445. package/dist/lib/surface-recipes.d.ts +48 -6
  446. package/dist/lib/token-merge.generated.d.ts +17 -14
  447. package/dist/lib/tone-recipes.d.ts +79 -0
  448. package/dist/lib/track-recipes.d.ts +1 -1
  449. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  450. package/dist/lib/ui-provider/index.d.ts +2 -2
  451. package/dist/lib/ui-provider/provider.d.ts +7 -2
  452. package/dist/lib/ui-provider/store.d.ts +6 -2
  453. package/dist/lib/ui-provider/types.d.ts +14 -2
  454. package/dist/lib/utils.js +1 -1
  455. package/dist/media-gallery-DcTtAaeC.js +203 -0
  456. package/dist/media-gallery-DcTtAaeC.js.map +1 -0
  457. package/dist/mentions-D-uyCh01.js +568 -0
  458. package/dist/mentions-D-uyCh01.js.map +1 -0
  459. package/dist/{message-SZUNB1eX.js → message-CdHgIWKf.js} +5 -5
  460. package/dist/{message-SZUNB1eX.js.map → message-CdHgIWKf.js.map} +1 -1
  461. package/dist/metadata-list-X5rYAKSB.js +394 -0
  462. package/dist/metadata-list-X5rYAKSB.js.map +1 -0
  463. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  464. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  465. package/dist/navigation-D3KwXmaq.js +145 -0
  466. package/dist/navigation-D3KwXmaq.js.map +1 -0
  467. package/dist/navigation-HJf5zxlH.js +268 -0
  468. package/dist/navigation-HJf5zxlH.js.map +1 -0
  469. package/dist/{navigation-row-recipes-DQEXQcqY.js → navigation-row-recipes-BVowojQw.js} +2 -2
  470. package/dist/{navigation-row-recipes-DQEXQcqY.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
  471. package/dist/number-DMhe-Vsk.js +352 -0
  472. package/dist/number-DMhe-Vsk.js.map +1 -0
  473. package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
  474. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
  475. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  476. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  477. package/dist/overlays-I0axtYA6.js +999 -0
  478. package/dist/overlays-I0axtYA6.js.map +1 -0
  479. package/dist/{page-hGmT4nWK.js → page-B5dTH9gE.js} +79 -68
  480. package/dist/page-B5dTH9gE.js.map +1 -0
  481. package/dist/page-header-commands-DjzFEq3E.js +126 -0
  482. package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
  483. package/dist/{pagination-NLGqRirf.js → pagination-3bPA_a6K.js} +19 -19
  484. package/dist/{pagination-NLGqRirf.js.map → pagination-3bPA_a6K.js.map} +1 -1
  485. package/dist/{popover-CghIYdQf.js → popover-Di55PyAI.js} +8 -8
  486. package/dist/popover-Di55PyAI.js.map +1 -0
  487. package/dist/{popover-menu-B4PoWhRl.js → popover-menu-B71Tn2Qz.js} +6 -6
  488. package/dist/{popover-menu-B4PoWhRl.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
  489. package/dist/{popover.recipes-QlD4JenO.js → popover.recipes-Bdyhj2db.js} +2 -2
  490. package/dist/{popover.recipes-QlD4JenO.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
  491. package/dist/primitives-B-CkiEMU.js +379 -0
  492. package/dist/primitives-B-CkiEMU.js.map +1 -0
  493. package/dist/primitives.js +5 -5
  494. package/dist/{progress-BroqrAyV.js → progress-rnS8-uAW.js} +11 -11
  495. package/dist/progress-rnS8-uAW.js.map +1 -0
  496. package/dist/{receipt-BuJynLgf.js → receipt-D0oswZ0p.js} +6 -6
  497. package/dist/{receipt-BuJynLgf.js.map → receipt-D0oswZ0p.js.map} +1 -1
  498. package/dist/rich-text-DvGulsNJ.js +78 -0
  499. package/dist/rich-text-DvGulsNJ.js.map +1 -0
  500. package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
  501. package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
  502. package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
  503. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
  504. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  505. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  506. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  507. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  508. package/dist/sanitize-html-DsQmI48u.js +92 -0
  509. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  510. package/dist/scroll-area-Bt_vXY2b.js +48 -0
  511. package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
  512. package/dist/{separator-BNIgG3au.js → separator-C8DlRGwF.js} +4 -4
  513. package/dist/separator-C8DlRGwF.js.map +1 -0
  514. package/dist/{separator-BhtFyo4x.js → separator-CYHnjsAb.js} +2 -2
  515. package/dist/{separator-BhtFyo4x.js.map → separator-CYHnjsAb.js.map} +1 -1
  516. package/dist/services/actions/action-adapters.d.ts +22 -0
  517. package/dist/services/actions/index.d.ts +1 -1
  518. package/dist/services/actions.js +23 -6
  519. package/dist/services/actions.js.map +1 -1
  520. package/dist/settings-CQW3b-Cu.js +170 -0
  521. package/dist/settings-CQW3b-Cu.js.map +1 -0
  522. package/dist/sheet-4SEvVYzA.js +210 -0
  523. package/dist/sheet-4SEvVYzA.js.map +1 -0
  524. package/dist/{sidebar-CyR4XKwR.js → sidebar-C7WWR29L.js} +181 -180
  525. package/dist/sidebar-C7WWR29L.js.map +1 -0
  526. package/dist/sidebar-d7Dg80ln.js +511 -0
  527. package/dist/sidebar-d7Dg80ln.js.map +1 -0
  528. package/dist/{skeleton-3F0uhYn3.js → skeleton-Cz890JZF.js} +10 -10
  529. package/dist/skeleton-Cz890JZF.js.map +1 -0
  530. package/dist/smart-card-lFKxn5Hu.js +595 -0
  531. package/dist/smart-card-lFKxn5Hu.js.map +1 -0
  532. package/dist/{spinner-Cpf7oRkF.js → spinner-fa3h1Aif.js} +10 -8
  533. package/dist/spinner-fa3h1Aif.js.map +1 -0
  534. package/dist/{structure-CRdqVawd.js → structure-DC2dygdA.js} +3 -3
  535. package/dist/{structure-CRdqVawd.js.map → structure-DC2dygdA.js.map} +1 -1
  536. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  537. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  538. package/dist/style.css +1 -1
  539. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  540. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  541. package/dist/table-CIKyLUsy.js +163 -0
  542. package/dist/table-CIKyLUsy.js.map +1 -0
  543. package/dist/{table-CcRDZiLP.js → table-CrcLN9Io.js} +544 -530
  544. package/dist/table-CrcLN9Io.js.map +1 -0
  545. package/dist/tabs-DwBJfjxX.js +190 -0
  546. package/dist/tabs-DwBJfjxX.js.map +1 -0
  547. package/dist/{text-inputs-DsR56TR-.js → text-inputs-aaK9wcDT.js} +151 -155
  548. package/dist/text-inputs-aaK9wcDT.js.map +1 -0
  549. package/dist/{text.styles-Q4sGAIgA.js → text.styles-g4He6UIW.js} +17 -14
  550. package/dist/text.styles-g4He6UIW.js.map +1 -0
  551. package/dist/theme.css +16 -12
  552. package/dist/themes/green.css +24 -0
  553. package/dist/{timelines-D1pkt3se.js → timelines-C_SBwHNP.js} +154 -164
  554. package/dist/timelines-C_SBwHNP.js.map +1 -0
  555. package/dist/tone-recipes-CPoExcTE.js +70 -0
  556. package/dist/tone-recipes-CPoExcTE.js.map +1 -0
  557. package/dist/tooltip-CsfgrfS7.js +111 -0
  558. package/dist/tooltip-CsfgrfS7.js.map +1 -0
  559. package/dist/track-recipes-CDcKmndW.js +10 -0
  560. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  561. package/dist/{tree-BtmYyMZV.js → tree-BiKhg8AY.js} +72 -70
  562. package/dist/tree-BiKhg8AY.js.map +1 -0
  563. package/dist/typography/rich-text.js +1 -1
  564. package/dist/typography-DTRkE9zL.js +117 -0
  565. package/dist/typography-DTRkE9zL.js.map +1 -0
  566. package/dist/typography.js +2 -2
  567. package/dist/{ui-provider-DRPn3qNl.js → ui-provider-1D_NSYzO.js} +30 -23
  568. package/dist/ui-provider-1D_NSYzO.js.map +1 -0
  569. package/dist/ui-provider.js +3 -3
  570. package/dist/{upload-CDbYw1WN.js → upload-BO8-CLN6.js} +294 -293
  571. package/dist/upload-BO8-CLN6.js.map +1 -0
  572. package/dist/{upload-queue-CNd_hH_a.js → upload-queue-EOC8g1gf.js} +133 -138
  573. package/dist/upload-queue-EOC8g1gf.js.map +1 -0
  574. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  575. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  576. package/dist/{usage-card-VyJLUwRr.js → usage-card-obRaBskq.js} +42 -43
  577. package/dist/{usage-card-VyJLUwRr.js.map → usage-card-obRaBskq.js.map} +1 -1
  578. package/dist/{utils-BvH9PSmq.js → utils-l5LpDw2z.js} +264 -62
  579. package/dist/utils-l5LpDw2z.js.map +1 -0
  580. package/dist/value-inputs-TAYMX111.js +947 -0
  581. package/dist/value-inputs-TAYMX111.js.map +1 -0
  582. package/dist/value-typography-b8wpz1eX.js +116 -0
  583. package/dist/value-typography-b8wpz1eX.js.map +1 -0
  584. package/dist/workspace-DH0v0KcB.js +407 -0
  585. package/dist/workspace-DH0v0KcB.js.map +1 -0
  586. package/docs/consumer-skill/SKILL.md +62 -50
  587. package/docs/consumer-skill/examples/app-layout.tsx +3 -5
  588. package/docs/consumer-skill/examples/composition.tsx +3 -3
  589. package/docs/consumer-skill/examples/detail.tsx +59 -13
  590. package/docs/consumer-skill/examples/edit.tsx +2 -2
  591. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  592. package/docs/consumer-skill/examples/manifest.json +28 -6
  593. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  594. package/docs/consumer-skill/examples/scoped-directory.tsx +3 -3
  595. package/docs/consumer-skill/examples/website.tsx +1 -1
  596. package/docs/consumer-skill/references/agents-md.md +33 -0
  597. package/docs/consumer-skill/references/analytics.md +1 -1
  598. package/docs/consumer-skill/references/composition.md +139 -24
  599. package/docs/consumer-skill/references/design-contract.md +12 -3
  600. package/docs/consumer-skill/references/discovery.md +4 -0
  601. package/docs/consumer-skill/references/installation.md +33 -1
  602. package/docs/consumer-skill/references/integration.md +32 -1
  603. package/docs/consumer-skill/references/public-api.json +1051 -610
  604. package/docs/consumer-skill/references/review.md +44 -8
  605. package/docs/consumer-skill/references/theming.md +14 -4
  606. package/docs/consumer-skill/references/tokens.json +5 -2
  607. package/docs/consumer-skill/references/workflows.md +30 -9
  608. package/docs/consumer-skill/scripts/composition-policy.mjs +127 -6
  609. package/docs/consumer-skill/scripts/discovery.mjs +11 -3
  610. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  611. package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
  612. package/package.json +13 -3
  613. package/dist/accordion-BRTcsp8J.js +0 -205
  614. package/dist/accordion-BRTcsp8J.js.map +0 -1
  615. package/dist/action-menu-Drxw_vJk.js +0 -265
  616. package/dist/action-menu-Drxw_vJk.js.map +0 -1
  617. package/dist/affordance-geometry.generated-CL84ZN9A.js.map +0 -1
  618. package/dist/ai-artifact-DLVdK0Py.js.map +0 -1
  619. package/dist/attachment-DbjUWsP0.js +0 -244
  620. package/dist/attachment-DbjUWsP0.js.map +0 -1
  621. package/dist/auth-CAQcasMV.js.map +0 -1
  622. package/dist/avatar-Bu2HhitA.js.map +0 -1
  623. package/dist/badge-CzId1Wlm.js +0 -92
  624. package/dist/badge-CzId1Wlm.js.map +0 -1
  625. package/dist/breadcrumbs-BuYz5SDU.js +0 -128
  626. package/dist/breadcrumbs-BuYz5SDU.js.map +0 -1
  627. package/dist/button-BZDasD04.js +0 -651
  628. package/dist/button-BZDasD04.js.map +0 -1
  629. package/dist/button-BZyfTvwm.js.map +0 -1
  630. package/dist/buttons-D_6KJvEE.js +0 -99
  631. package/dist/buttons-D_6KJvEE.js.map +0 -1
  632. package/dist/cards-qGSErLw_.js.map +0 -1
  633. package/dist/chart-Bsc5BICK.js.map +0 -1
  634. package/dist/checkbox-BQNDjUCh.js +0 -34
  635. package/dist/checkbox-BQNDjUCh.js.map +0 -1
  636. package/dist/choice-inputs-Mk3iWbhr.js +0 -725
  637. package/dist/choice-inputs-Mk3iWbhr.js.map +0 -1
  638. package/dist/code-block-DzHKRybS.js +0 -183
  639. package/dist/code-block-DzHKRybS.js.map +0 -1
  640. package/dist/combobox-BFnbJJp3.js.map +0 -1
  641. package/dist/combobox-hozNwUcc.js +0 -847
  642. package/dist/combobox-hozNwUcc.js.map +0 -1
  643. package/dist/command-BnmSchli.js.map +0 -1
  644. package/dist/comments-u5L0OGip.js.map +0 -1
  645. package/dist/containers-DqB-bSYE.js.map +0 -1
  646. package/dist/data-display-Bihs9Ven.js +0 -1342
  647. package/dist/data-display-Bihs9Ven.js.map +0 -1
  648. package/dist/date-DOKhJPu7.js +0 -140
  649. package/dist/date-DOKhJPu7.js.map +0 -1
  650. package/dist/date-picker-DzP5HQq7.js +0 -1541
  651. package/dist/date-picker-DzP5HQq7.js.map +0 -1
  652. package/dist/date-pickers-BpgGz7S-.js +0 -196
  653. package/dist/date-pickers-BpgGz7S-.js.map +0 -1
  654. package/dist/display-CS6Hbk18.js.map +0 -1
  655. package/dist/dropdown-menu-D-boNgGO.js.map +0 -1
  656. package/dist/feedback-CJkUAapr.js +0 -233
  657. package/dist/feedback-CJkUAapr.js.map +0 -1
  658. package/dist/field-affordance-recipes-uKY4MsZ_.js +0 -25
  659. package/dist/field-affordance-recipes-uKY4MsZ_.js.map +0 -1
  660. package/dist/field-state-recipes-DQQpiLWC.js +0 -11
  661. package/dist/field-state-recipes-DQQpiLWC.js.map +0 -1
  662. package/dist/filters-D6FF8L6s.js.map +0 -1
  663. package/dist/form-sizing-QP8aIRaW.js +0 -103
  664. package/dist/form-sizing-QP8aIRaW.js.map +0 -1
  665. package/dist/format-iamDSqs2.js +0 -110
  666. package/dist/format-iamDSqs2.js.map +0 -1
  667. package/dist/forms-B5NCbkSC.js.map +0 -1
  668. package/dist/forms-numeric-Crrm80Lm.js +0 -867
  669. package/dist/forms-numeric-Crrm80Lm.js.map +0 -1
  670. package/dist/header-kxruN3RM.js.map +0 -1
  671. package/dist/icon-badge-Btc6pQrp.js +0 -53
  672. package/dist/icon-badge-Btc6pQrp.js.map +0 -1
  673. package/dist/input-SX9V0AL3.js +0 -255
  674. package/dist/input-SX9V0AL3.js.map +0 -1
  675. package/dist/item-DE4YnuJx.js +0 -258
  676. package/dist/item-DE4YnuJx.js.map +0 -1
  677. package/dist/media-gallery-DLp3HAz0.js +0 -201
  678. package/dist/media-gallery-DLp3HAz0.js.map +0 -1
  679. package/dist/mentions-Cl0Kt_Pd.js +0 -565
  680. package/dist/mentions-Cl0Kt_Pd.js.map +0 -1
  681. package/dist/navigation-DnQSNMT0.js +0 -276
  682. package/dist/navigation-DnQSNMT0.js.map +0 -1
  683. package/dist/navigation-DyytsLRB.js +0 -265
  684. package/dist/navigation-DyytsLRB.js.map +0 -1
  685. package/dist/number-DasMFWEG.js +0 -269
  686. package/dist/number-DasMFWEG.js.map +0 -1
  687. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  688. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  689. package/dist/overlays-DUbs1KEi.js +0 -1011
  690. package/dist/overlays-DUbs1KEi.js.map +0 -1
  691. package/dist/page-hGmT4nWK.js.map +0 -1
  692. package/dist/page-header-D8nERkn5.js +0 -112
  693. package/dist/page-header-D8nERkn5.js.map +0 -1
  694. package/dist/popover-CghIYdQf.js.map +0 -1
  695. package/dist/primitives-C7ff0QaI.js +0 -337
  696. package/dist/primitives-C7ff0QaI.js.map +0 -1
  697. package/dist/progress-BroqrAyV.js.map +0 -1
  698. package/dist/rich-text-DlxDOtf4.js +0 -32
  699. package/dist/rich-text-DlxDOtf4.js.map +0 -1
  700. package/dist/rich-text-editor-BKyG7rWz.js +0 -574
  701. package/dist/rich-text-editor-BKyG7rWz.js.map +0 -1
  702. package/dist/rich-text-editor.recipes-B72Nfuze.js +0 -81
  703. package/dist/rich-text-editor.recipes-B72Nfuze.js.map +0 -1
  704. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  705. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  706. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  707. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  708. package/dist/scroll-area-D-pIhEKl.js +0 -47
  709. package/dist/scroll-area-D-pIhEKl.js.map +0 -1
  710. package/dist/separator-BNIgG3au.js.map +0 -1
  711. package/dist/settings-DOTOzeZ2.js +0 -161
  712. package/dist/settings-DOTOzeZ2.js.map +0 -1
  713. package/dist/sheet-BFhrNehm.js +0 -205
  714. package/dist/sheet-BFhrNehm.js.map +0 -1
  715. package/dist/sidebar-CyR4XKwR.js.map +0 -1
  716. package/dist/sidebar-SvGJ0Zwi.js +0 -506
  717. package/dist/sidebar-SvGJ0Zwi.js.map +0 -1
  718. package/dist/skeleton-3F0uhYn3.js.map +0 -1
  719. package/dist/smart-card-DjGVV2xr.js +0 -584
  720. package/dist/smart-card-DjGVV2xr.js.map +0 -1
  721. package/dist/spinner-Cpf7oRkF.js.map +0 -1
  722. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  723. package/dist/surface-recipes-Dd__PD-w.js +0 -28
  724. package/dist/surface-recipes-Dd__PD-w.js.map +0 -1
  725. package/dist/table-CLtJTxoR.js +0 -147
  726. package/dist/table-CLtJTxoR.js.map +0 -1
  727. package/dist/table-CcRDZiLP.js.map +0 -1
  728. package/dist/tabs-BNgu7g0u.js +0 -188
  729. package/dist/tabs-BNgu7g0u.js.map +0 -1
  730. package/dist/text-inputs-DsR56TR-.js.map +0 -1
  731. package/dist/text.styles-Q4sGAIgA.js.map +0 -1
  732. package/dist/timelines-D1pkt3se.js.map +0 -1
  733. package/dist/track-recipes-LLPNVwFg.js +0 -10
  734. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  735. package/dist/tree-BtmYyMZV.js.map +0 -1
  736. package/dist/typography-BxQgiZyw.js +0 -96
  737. package/dist/typography-BxQgiZyw.js.map +0 -1
  738. package/dist/ui-provider-DRPn3qNl.js.map +0 -1
  739. package/dist/upload-CDbYw1WN.js.map +0 -1
  740. package/dist/upload-queue-CNd_hH_a.js.map +0 -1
  741. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  742. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  743. package/dist/utils-BvH9PSmq.js.map +0 -1
  744. package/dist/value-inputs-D0KCrfVC.js +0 -840
  745. package/dist/value-inputs-D0KCrfVC.js.map +0 -1
  746. package/dist/workspace-CcR8r-Nt.js +0 -395
  747. package/dist/workspace-CcR8r-Nt.js.map +0 -1
  748. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
@@ -5,11 +5,23 @@ description: Use when building, integrating, theming or migrating React apps and
5
5
 
6
6
  # Themelia React UI consumer
7
7
 
8
- Build from the public owner that fits the task. Use the exact family import,
9
- its supported props and the application's data, callbacks and product conventions.
10
- Before writing JSX, resolve the installed contract below. Select an owner in the
11
- table or finder, read its declaration and the matching recipe, then adapt the
12
- app's data/callbacks. Do not infer props or missing capabilities from names alone.
8
+ Build from the public owner that fits the task: resolve the installed contract,
9
+ pick the exact family import in the table or finder, read its declaration and
10
+ recipe, then adapt the app's data and callbacks. Never infer props from names.
11
+
12
+ ## House rules
13
+
14
+ Each rule has an owning prop or component, and the [composition checker](references/review.md) reports most; depart only for a nameable product reason.
15
+
16
+ 1. Mount `UIProvider` (`themelia-react-ui/ui-provider`) once at the app root; calls inherit its currency, locale, date, density, button, badge and card defaults.
17
+ 2. Give every admin route a `Page` (`themelia-react-ui/layout/page`); its title is the route's `h1`, so do not repeat it in the body.
18
+ 3. Give commands roles: one `header.primaryAction`, ordered `header.secondaryActions`, `destructive: true` plus `ConfirmDialog`; the header renders `[secondary…] [primary] [⋯]`. Record headers in `features/resource`, `layout/workspace` and `layout/settings` take the same props. A record's sections go in `header.tabs`. An untoned `Button` is the neutral outline; give only the main command `tone="primary"` (solid), one per page or surface.
19
+ 4. Space siblings with `Stack`/`Grid` and their semantic `gap` (`themelia-react-ui/base/structure`), not flex divs with gap or margin utilities.
20
+ 5. Write copy with `Heading`/`Text`, not raw `h1`–`h6`; show values with `Money`, `Date`, `Number` and `Percent`, and use `useMoneyFormatter()` inside strings.
21
+ 6. Color with semantic classes (`bg-muted`, `text-muted-foreground`, `border-border`, status tones); palette classes such as `bg-blue-500` bypass theming and dark mode.
22
+ 7. Badges stay neutral unless the status means `success`, `warning`, `destructive` or `info`. Titles, facts and rows get no decorative icons, and gaps, not dividers, separate a card's sections.
23
+ 8. In a Card, badges go in `titleSuffix`, one quick control in `headerAction`, a command list in `actions` and the commit action in `footerSlot`.
24
+ 9. Dialogs, confirmations, drawers and sheets come only from `themelia-react-ui/features/overlays` (`ActionDialog`, `ConfirmDialog`, `ActionDrawer` with `useOverlayVisibility`); never hand-roll a modal, import `Dialog`/`Sheet` primitives or add a modal library.
13
25
 
14
26
  ## Start with an owner
15
27
 
@@ -17,12 +29,15 @@ app's data/callbacks. Do not infer props or missing capabilities from names alon
17
29
  | --- | --- |
18
30
  | KPI cards, revenue, trends, comparisons | `themelia-react-ui/blocks/analytics`: `Metric`, `MetricGrid`, `MetricBar`, `MetricComparison`, `MetricGradient`, `MetricMicroGrid`, `ChartCard`, `ActivityHeatmap` |
19
31
  | Used/limit quotas and period/retry states | `themelia-react-ui/blocks/analytics/usage-card`: `UsageCard` |
20
- | Record facts, one plain value, empty regions | `themelia-react-ui/blocks/data-display`: `MetadataList`, `InlineStat`, `EmptyState` |
32
+ | Record facts, one plain value, empty regions | `themelia-react-ui/base/metadata-list`: `MetadataList`; `themelia-react-ui/blocks/data-display`: `InlineStat`, `EmptyState` |
21
33
  | Query-driven directory or tabular comparison | `themelia-react-ui/features/data-view`: `DataView`; `themelia-react-ui/features/table`: `DataTable`, `ResourceCell` |
22
34
  | Query criteria and facets | `themelia-react-ui/features/filters`: `FilterLayout`, `SelectFacet`, `SearchFacet`, `DateFacet` |
23
35
  | Modal action, confirmation, drawer | `themelia-react-ui/features/overlays`: `ActionDialog`, `ConfirmDialog`, `ActionDrawer`, `useOverlayVisibility` |
24
36
  | Fields, schema-driven forms, inline drafts | `themelia-react-ui/base/forms`: `FormField`, `FormSection`, `FormActionsBar`; `themelia-react-ui/features/schema-form`: `SchemaForm`; `themelia-react-ui/base/inline-edit`: `InlineEdit` |
37
+ | Passive rows, stacks, tracks and spans | `themelia-react-ui/base/structure`: `Stack`, `Grid`, `GridCell`, `AdaptiveGrid`; a row is `Stack direction="horizontal"` |
38
+ | Content measure, sections, main/aside split | `themelia-react-ui/layout/containers`: `Container`, `Section`, `TwoColumnLayout`, `PageViewport` |
25
39
  | Application shell, sidebar, route identity | `themelia-react-ui/layout/app-shell`: `AppLayout`; `themelia-react-ui/layout/sidebar`: `AppSidebar`; `themelia-react-ui/layout/page`: `Page` |
40
+ | Record page: status badge, role-based commands, section tabs with counts | `themelia-react-ui/layout/page`: `Page`, `PageHeaderAction`, `PageHeaderTabs`; see the [detail recipe](examples/detail.tsx) |
26
41
  | Public website and content sections | `themelia-react-ui/layout/containers`: `Container`, `Section`, `PageViewport` |
27
42
  | Task summaries and conversation messages | `themelia-react-ui/blocks/planning`: `TaskCard`; `themelia-react-ui/blocks/collaboration`: `Message`, `MessageBubble` |
28
43
  | Timelines, activity, commerce workflows | `themelia-react-ui/blocks/timelines`: `Timeline`, `StepsCard`; `themelia-react-ui/features/activities`: `ActivityLog`; discover the commerce subject below |
@@ -33,7 +48,8 @@ For example, a KPI owns formatting, hierarchy and trend presentation:
33
48
 
34
49
  ```tsx
35
50
  import { Metric, MetricGrid, type MetricData } from 'themelia-react-ui/blocks/analytics';
36
- import { InlineStat, MetadataList } from 'themelia-react-ui/blocks/data-display';
51
+ import { MetadataList } from 'themelia-react-ui/base/metadata-list';
52
+ import { InlineStat } from 'themelia-react-ui/blocks/data-display';
37
53
 
38
54
  const revenue: MetricData = {
39
55
  id: 'revenue', label: 'Revenue', value: 42500,
@@ -43,24 +59,21 @@ const revenue: MetricData = {
43
59
  export const Revenue = () => <Metric variant="card" data={revenue} />;
44
60
  export const Dashboard = () => <MetricGrid metrics={[revenue]} columns={3} />;
45
61
  export const InvoiceCount = () => <InlineStat label="Invoices" value={18} />;
46
- export const AccountFacts = () => <MetadataList items={[
47
- { id: 'email', label: 'Email', value: 'morgan@example.com' },
48
- ]} />;
62
+ export const AccountFacts = () => <MetadataList items={[{ id: 'email', label: 'Email', value: 'morgan@example.com' }]} />;
49
63
  ```
50
64
 
51
65
  `Metric variant="card"`, default `MetricGrid`, `UsageCard` and `TaskCard` already
52
66
  own their surfaces. MetadataList, InlineStat and ChartCard delegate framing;
53
67
  Receipt owns its flat paper and insets. Choose a custom subject when its content
54
- or lifecycle calls for it; reuse the appropriate lower owners within it.
55
- The analytics barrel requires optional `recharts`, including without a sparkline;
56
- the focused UsageCard import has no chart peer. See [analytics](references/analytics.md).
68
+ or lifecycle calls for it; reuse the appropriate lower owners within it. The analytics
69
+ barrel needs optional `recharts`; UsageCard's focused import does not. See [analytics](references/analytics.md).
57
70
 
58
71
  ## Resolve the installed contract
59
72
 
60
- Follow [installed setup](references/installation.md) to resolve the app's package
61
- and check copied guidance after upgrades. Import `themelia-react-ui/style.css`
62
- once; shipped components need no source scanning. Apps authoring semantic
63
- utilities process `theme.css` in their Tailwind v4 build.
73
+ Follow [installed setup](references/installation.md) to resolve the package and check
74
+ copied guidance after upgrades; paste the [project instructions block](references/agents-md.md)
75
+ into the app's AGENTS.md. Import `themelia-react-ui/style.css` once; components need no
76
+ source scanning. Apps authoring semantic utilities process `theme.css` with Tailwind v4.
64
77
 
65
78
  For another task or an unfamiliar prop, run the bundled [finder](references/discovery.md):
66
79
 
@@ -68,37 +81,36 @@ For another task or an unfamiliar prop, run the bundled [finder](references/disc
68
81
  node node_modules/themelia-react-ui/docs/consumer-skill/scripts/find-components.mjs record directory --limit 5
69
82
  ```
70
83
 
71
- Task nouns retain richer alternatives; case-exact symbols such as `DataTable`
72
- and exact imports select their precise contract. Follow `relevantSymbols` and
73
- `nextReads` to the matching declaration, reference and recipe. Check the reported
74
- optional peers before assigning props. The [public index](references/public-api.json)
75
- contains all families; catalogue routes and private source paths are not imports.
76
- RichText accepts sanitized HTML; convert Markdown in the app before passing `html`.
84
+ Task nouns return richer alternatives; exact symbols such as `DataTable` and
85
+ exact imports select one contract. Follow `relevantSymbols` and `nextReads`,
86
+ check reported optional peers, and replace any name listed under `deprecated`.
87
+ The [public index](references/public-api.json) lists all families; catalogue
88
+ routes and source paths are not imports. RichText takes sanitized HTML, not Markdown.
77
89
 
78
90
  ## Compose and adapt the screen
79
91
 
80
- Use Page for route identity/commands and Container/Section for content-led sites.
81
- Card frames one independent subject. Put status/count/version badges in
82
- `titleSuffix`, actions in `headerAction`/`actions`, and pre-title context in
83
- `headerStart`. Use `surface="flat" padding="none"` within an existing boundary.
92
+ Use Page for routes and Container/Section for content-led sites. Header `actions`
93
+ holds non-command controls such as a period select, never command rows. Card frames
94
+ one subject; `surface="flat" padding="none"` composes within an existing boundary.
95
+ For headed commerce/variants blocks, choose their `surface` prop instead of
96
+ adding a second Card boundary; see [headed blocks](references/composition.md#headed-blocks-inside-surfaces).
84
97
  Use the table/query/selection/row-action seams when they fit the workflow.
85
98
  Keep fixed parent context while criteria change; make command scope clear.
86
99
 
87
100
  Give each inset and gap one owner: page/container gutters, surface padding,
88
- section rhythm and Stack/Grid sibling gaps. Use Heading/Text and formatted
89
- primitives for display copy; choose Heading `tag` for semantics and `size` for
90
- visual emphasis. Keep typography margin-free and primary rows at the shared size.
91
- Choose `textGap`, density, control `size` and surface padding independently.
92
- Shells own global corners; controls/rows own bounded inner corners. Change
93
- `--radius` at the theme boundary; keep per-component radius classes out of callers.
94
- Omit control size to inherit provider defaults. Public props and regions own
95
- internal anatomy; application placement, alignment and overflow remain flexible.
96
-
97
- Treat appearance feedback as an acceptance criterion. Inspect the reported
98
- state and improve its owning composition or recipe. A passing static check
99
- cannot establish that hierarchy, contrast, corners or spacing look right.
100
- Use CSS semantic surface/foreground pairs and existing structural roots for
101
- appearance; UIProvider supplies defaults. Use ThemeScope for scoped portals and
101
+ section rhythm and Stack/Grid sibling gaps. Peer Card stacks in TwoColumnLayout
102
+ use `gap="2xl"` to match its default grid rhythm in both axes. Choose Heading
103
+ `tag` for semantics and `size` for emphasis; keep typography margin-free and
104
+ primary rows at the shared size. Choose `textGap`, density, control `size` and
105
+ surface padding independently. Shells own global corners; controls/rows own
106
+ bounded inner corners. Change `--radius` at the theme boundary, never per
107
+ component. Public props and regions own internal anatomy; application
108
+ placement, alignment and overflow remain flexible.
109
+
110
+ Treat appearance feedback as an acceptance criterion: inspect the reported state
111
+ and improve its owning composition or recipe, since a passing static check cannot
112
+ show that hierarchy, contrast, corners or spacing look right. Theme through
113
+ semantic pairs and structural roots; use ThemeScope for scoped portals and
102
114
  native `dir` plus DirectionProvider for RTL. See [theming](references/theming.md).
103
115
 
104
116
  Keep controlled values authoritative and per-mount callbacks in the component.
@@ -111,16 +123,16 @@ For server-component apps, mount interactive families from a client wrapper.
111
123
 
112
124
  | Work | Focused guidance and complete example |
113
125
  | --- | --- |
114
- | Structure, Card, public websites, heading scale | [Composition](references/composition.md), [website](examples/website.tsx) |
126
+ | Rows, grids, regions and peer gaps | [Layout-owner map](references/composition.md#structure-and-spacing), [layout blocks](examples/layout-blocks.tsx) |
127
+ | Card, public websites, heading scale | [Composition](references/composition.md), [website](examples/website.tsx) |
115
128
  | Shell/sidebar/header and parent adaptation | [Layout composition](references/composition.md#application-layouts), [workspace](examples/app-layout.tsx) |
116
129
  | Directory, detail, editing and confirmation | [Workflows](references/workflows.md), [directory](examples/scoped-directory.tsx), [detail](examples/detail.tsx), [edit](examples/edit.tsx), [confirmation](examples/destructive-confirm.tsx) |
117
130
  | KPI, facts, quota/task summaries | [Analytics](references/analytics.md), [analytics recipe](examples/analytics.tsx), [task/usage/inline edit](examples/planning-usage-edit.tsx) |
118
131
  | Email, receipts, files, messages and integrations | [Domain composition](references/composition.md#receipts), [recipe exports/peers](examples/manifest.json), [integration](references/integration.md) |
119
- | Shared anatomy and source review | [Design contract](references/design-contract.md), [optional read-only checker](references/review.md) |
120
-
121
- Run the app's type/lint/behavior checks. Inspect long content and missing values
122
- at narrow/desktop parent widths in light/dark themes. Open menus/overlays and
123
- execute keyboard selection, dismissal/focus return, callbacks, validation and
124
- failure/retry. Keep source findings, inspected images and executed interactions
125
- separate; the optional checker reports errors, review warnings and unresolved
126
- expressions. Install/copy the complete skill manually after package upgrades.
132
+ | Shared anatomy, checker and hand-back | [Design contract](references/design-contract.md), [composition checker](references/review.md#done-means) |
133
+
134
+ Done means the [checker](references/review.md#done-means) reports no errors on the
135
+ files you changed (fix and re-run, at most three rounds), then the app's typecheck,
136
+ lint and tests pass. Inspect long content at narrow/desktop widths in light/dark;
137
+ open menus/overlays and run keyboard, dismissal, validation and retry paths. Hand
138
+ back each check as run or not run, and every kept warning with file:line.
@@ -1,8 +1,6 @@
1
1
  import type { ReactNode } from 'react';
2
- import { Button } from 'themelia-react-ui/base/buttons';
3
2
  import { Card } from 'themelia-react-ui/base/cards';
4
3
  import { SidebarTrigger } from 'themelia-react-ui/base/sidebar';
5
- import { Stack } from 'themelia-react-ui/base/structure';
6
4
  import { AppLayout, type AppLayoutVariant } from 'themelia-react-ui/layout/app-shell';
7
5
  import { HeaderUserMenu, type HeaderUserMenuProps } from 'themelia-react-ui/layout/header';
8
6
  import { Page } from 'themelia-react-ui/layout/page';
@@ -13,7 +11,7 @@ import { Text } from 'themelia-react-ui/typography';
13
11
  /** Use at the application's single UIProvider mount; CSS owns palette/geometry. */
14
12
  export const workspaceUIDefaults: UIConfig = {
15
13
  density: { defaultScale: 'md' },
16
- card: { defaultSurface: 'card', defaultHeaderDivider: true, defaultFooterDivider: true },
14
+ card: { defaultSurface: 'card' },
17
15
  };
18
16
 
19
17
  export interface WorkspaceLayoutProps {
@@ -46,13 +44,13 @@ export function WorkspaceLayout({ variant = 'inset', sidebar, navigationGroups =
46
44
  slots={{ headerEnd: workspaceSwitcher, footer: user && sidebarAccount ? <SidebarNavigationUser user={user} onLogout={onLogout} /> : undefined }} />;
47
45
  const content = <Page narrow={narrow} gutter={variant === 'stacked' ? 'none' : undefined}
48
46
  header={{ title: 'Workspace', description: 'Review activity and manage your records.',
49
- headingTag: 'h1', actions: <Button onClick={onCreate}>Create record</Button> }}>
47
+ primaryAction: { label: 'Create record', onClick: onCreate } }}>
50
48
  {children ?? <Card title="Activity" footerText="Latest workspace activity"><Text>Application content goes here.</Text></Card>}
51
49
  </Page>;
52
50
  const trigger = <SidebarTrigger />;
53
51
  return <LayoutSidebarProvider adaptTo="container" className="min-h-0">
54
52
  {variant === 'stacked' ? <AppLayout variant="stacked" className="h-svh min-h-0" logo={brand}
55
- slots={{headerEnd: account}} nav={<Stack direction="horizontal" gap="sm"><Button onClick={onCreate}>Create record</Button></Stack>}>{content}</AppLayout>
53
+ slots={{headerEnd: account}}>{content}</AppLayout>
56
54
  : variant === 'sidebar' || variant === 'inset' ? <AppLayout variant={variant} className="h-svh min-h-0"
57
55
  sidebar={navigation} sidebarTrigger={trigger} slots={{ toolbarStart: brand, toolbarEnd: account }}>{content}</AppLayout>
58
56
  : <AppLayout variant={variant} className="h-svh min-h-0" logo={brand} sidebar={navigation}
@@ -17,9 +17,9 @@ export function AccountComposition({ save }: { save: (name: string) => Promise<v
17
17
  return <ThemeScope style={{ '--height-action': '2.5rem', '--height-control': '2.5rem' }}>
18
18
  <Grid columns={{ base: 1, lg: 2 }} align="start" gap="xl">
19
19
  <Card surface="card" title={savedName} titleSuffix={<Badge tone="neutral">Workspace</Badge>}
20
- headerPlacement="frame" footerDivider
21
- footerSlot={<Button tone="secondary" buttonStyle="outline" onClick={() => { setName(savedName); setError(undefined); editor.show(); }}>Edit workspace</Button>}>
22
- <Stack gap="lg"><Text type="secondary">A framed header with one body and one footer.</Text></Stack>
20
+ headerPlacement="frame"
21
+ headerAction={<Button onClick={() => { setName(savedName); setError(undefined); editor.show(); }}>Edit workspace</Button>}>
22
+ <Stack gap="lg"><Text type="secondary">A framed header with one quick control and one body.</Text></Stack>
23
23
  </Card>
24
24
  <Card surface="flat" padding="none" title="Ownership">
25
25
  <Stack gap="md"><Text>The app owns data and save behavior.</Text>
@@ -1,13 +1,17 @@
1
- import { Building2 } from 'lucide-react';
1
+ import { useState, type ReactNode } from 'react';
2
2
  import { Button } from 'themelia-react-ui/base/buttons';
3
3
  import { Card } from 'themelia-react-ui/base/cards';
4
- import { MetadataList } from 'themelia-react-ui/blocks/data-display';
4
+ import { MetadataList } from 'themelia-react-ui/base/metadata-list';
5
+ import { ConfirmDialog, useOverlayVisibility } from 'themelia-react-ui/features/overlays';
6
+ import { Page, type PageHeaderAction } from 'themelia-react-ui/layout/page';
5
7
  import { Date, Email, Money, Value } from 'themelia-react-ui/primitives';
6
- import { Page } from 'themelia-react-ui/layout/page';
8
+ import { Text } from 'themelia-react-ui/typography';
7
9
 
8
10
  export interface AccountDetailRecord {
9
11
  id: string; name: string; email: string | null;
10
12
  createdAt: string | null; balanceMinor: number | null; currency: string;
13
+ /** Shown as the one status badge beside the title. */
14
+ overdue?: boolean;
11
15
  }
12
16
  export interface AccountDetailProps {
13
17
  account: AccountDetailRecord;
@@ -15,21 +19,63 @@ export interface AccountDetailProps {
15
19
  onBack: () => void;
16
20
  }
17
21
 
18
- export function AccountDetail({ account, onEdit, onBack }: AccountDetailProps) {
22
+ /** One framed subject for a drawer or dashboard: one quick control, no page chrome. */
23
+ export function AccountDetail({ account, onEdit }: AccountDetailProps) {
19
24
  return <Card title={account.name} headerPlacement="frame"
20
- headerAction={<Button onClick={() => onEdit(account.id)}>Edit account</Button>}
21
- footerSlot={<Button tone="secondary" buttonStyle="outline" onClick={onBack}>Back to accounts</Button>}>
25
+ headerAction={<Button onClick={() => onEdit(account.id)}>Edit</Button>}>
22
26
  <AccountFacts account={account}/>
23
27
  </Card>;
24
28
  }
25
29
 
26
- /** A focused resource route: Page owns measure, gutters, identity and commands. */
27
- export function AccountDetailPage({account,onEdit,onBack}:AccountDetailProps) {
28
- return <Page narrow header={{title:account.name,description:'Account details',onBack,
29
- backLabel:'Back to accounts',actions:<Button onClick={()=>onEdit(account.id)}>Edit account</Button>}}>
30
- <Card title="Contact and billing" icon={<Building2/>} headerPlacement="frame">
31
- <AccountFacts account={account}/>
32
- </Card>
30
+ export type AccountSection = 'overview' | 'invoices' | 'activity';
31
+
32
+ export interface AccountDetailPageProps extends AccountDetailProps {
33
+ section: AccountSection;
34
+ onSectionChange: (section: AccountSection) => void;
35
+ invoiceCount: number;
36
+ onSendStatement: (id: string) => void;
37
+ /** Reject on failure; the confirmation stays open and shows the error. */
38
+ onDelete: (id: string) => Promise<void>;
39
+ /** The app's invoice table or activity log for the other sections. */
40
+ children?: ReactNode;
41
+ }
42
+
43
+ /**
44
+ * A record route: Page owns the title, status, commands and section tabs.
45
+ * Commands carry roles, not colours; the header places them.
46
+ */
47
+ export function AccountDetailPage({ account, onEdit, onBack, section, onSectionChange,
48
+ invoiceCount, onSendStatement, onDelete, children }: AccountDetailPageProps) {
49
+ const deletion = useOverlayVisibility();
50
+ const [error, setError] = useState<string>();
51
+ const commands: PageHeaderAction[] = [
52
+ { label: 'Send statement', onClick: () => onSendStatement(account.id) },
53
+ { label: 'Delete account', destructive: true, onClick: () => { setError(undefined); deletion.show(); } },
54
+ ];
55
+ return <Page header={{
56
+ title: account.name, onBack, backLabel: 'Back to accounts',
57
+ titleBadges: account.overdue ? [{ label: 'Overdue', tone: 'warning' }] : undefined,
58
+ primaryAction: { label: 'Edit account', onClick: () => onEdit(account.id) },
59
+ secondaryActions: commands,
60
+ tabs: {
61
+ label: 'Account sections', value: section,
62
+ onValueChange: id => onSectionChange(id as AccountSection),
63
+ items: [
64
+ { id: 'overview', label: 'Overview' },
65
+ { id: 'invoices', label: 'Invoices', badge: invoiceCount },
66
+ { id: 'activity', label: 'Activity' },
67
+ ],
68
+ },
69
+ }}>
70
+ {section === 'overview'
71
+ ? <Card title="Contact and billing" headerPlacement="frame"><AccountFacts account={account}/></Card>
72
+ : children}
73
+ <ConfirmDialog {...deletion.overlayProps} destructive
74
+ title={`Delete ${account.name}?`} description="This permanently removes the account."
75
+ onAsyncConfirm={() => onDelete(account.id)}
76
+ onError={() => setError('Deletion failed. The account is kept; retry or cancel.')}>
77
+ {error && <Text role="alert" type="error">{error}</Text>}
78
+ </ConfirmDialog>
33
79
  </Page>;
34
80
  }
35
81
 
@@ -52,8 +52,8 @@ export function AccountEdit({ initial, onSave, onCancel }: AccountEditProps) {
52
52
  {error && <Text role="alert" type="error">{error}</Text>}
53
53
  {saved && <Text role="status">Account saved.</Text>}
54
54
  <Stack direction={{ base: 'vertical', sm: 'horizontal' }} gap="sm">
55
- <Button type="submit" loading={pending} strings={{ loading: 'Saving account…' }}>Save account</Button>
56
- <Button type="button" tone="secondary" buttonStyle="outline" disabled={pending} onClick={onCancel}>Cancel edit</Button>
55
+ <Button tone="primary" type="submit" loading={pending} strings={{ loading: 'Saving account…' }}>Save account</Button>
56
+ <Button type="button" disabled={pending} onClick={onCancel}>Cancel edit</Button>
57
57
  </Stack>
58
58
  </Stack>
59
59
  </form>
@@ -0,0 +1,20 @@
1
+ import type { ReactNode } from 'react';
2
+ import { Stack } from 'themelia-react-ui/base/structure';
3
+ import { TwoColumnLayout } from 'themelia-react-ui/layout/containers';
4
+
5
+ export interface LayoutBlocksProps {
6
+ summary?: ReactNode;
7
+ primary: ReactNode;
8
+ secondary: ReactNode;
9
+ support: ReactNode;
10
+ actions?: ReactNode;
11
+ }
12
+
13
+ /** Place inside Page. Pass independently framed subjects; this composition adds no Card or gutter. */
14
+ export function LayoutBlocks({ summary, primary, secondary, support, actions }: LayoutBlocksProps) {
15
+ return <TwoColumnLayout adaptTo="container" header={summary}
16
+ main={<Stack gap="2xl">{primary}{secondary}</Stack>}
17
+ aside={<Stack gap="2xl">{support}</Stack>}
18
+ footer={actions ? <Stack direction="horizontal" justify="end" gap="md">{actions}</Stack> : undefined}
19
+ />;
20
+ }
@@ -3,7 +3,9 @@
3
3
  "examples": [
4
4
  {
5
5
  "file": "website.tsx",
6
- "exports": ["WebsiteLandingPage"],
6
+ "exports": [
7
+ "WebsiteLandingPage"
8
+ ],
7
9
  "phase": "basic",
8
10
  "optionalPeers": []
9
11
  },
@@ -27,14 +29,20 @@
27
29
  },
28
30
  {
29
31
  "file": "scoped-directory.tsx",
30
- "exports": ["ScopedDirectory"],
32
+ "exports": [
33
+ "ScopedDirectory"
34
+ ],
31
35
  "phase": "optional",
32
- "optionalPeers": ["@tanstack/react-table", "react-day-picker"]
36
+ "optionalPeers": [
37
+ "@tanstack/react-table",
38
+ "react-day-picker"
39
+ ]
33
40
  },
34
41
  {
35
42
  "file": "detail.tsx",
36
43
  "exports": [
37
- "AccountDetail", "AccountDetailPage"
44
+ "AccountDetail",
45
+ "AccountDetailPage"
38
46
  ],
39
47
  "phase": "basic",
40
48
  "optionalPeers": []
@@ -112,9 +120,23 @@
112
120
  },
113
121
  {
114
122
  "file": "analytics.tsx",
115
- "exports": ["RevenueOverview", "RevenueMetric", "PlainStatistic"],
123
+ "exports": [
124
+ "RevenueOverview",
125
+ "RevenueMetric",
126
+ "PlainStatistic"
127
+ ],
116
128
  "phase": "optional",
117
- "optionalPeers": ["recharts"]
129
+ "optionalPeers": [
130
+ "recharts"
131
+ ]
132
+ },
133
+ {
134
+ "file": "layout-blocks.tsx",
135
+ "exports": [
136
+ "LayoutBlocks"
137
+ ],
138
+ "phase": "basic",
139
+ "optionalPeers": []
118
140
  }
119
141
  ]
120
142
  }
@@ -1,5 +1,5 @@
1
1
  import { Receipt, ReceiptItems, type ReceiptLineItem } from 'themelia-react-ui/blocks/commerce/receipt';
2
- import { MetadataList } from 'themelia-react-ui/blocks/data-display';
2
+ import { MetadataList } from 'themelia-react-ui/base/metadata-list';
3
3
  import { Money } from 'themelia-react-ui/primitives';
4
4
  import { Separator } from 'themelia-react-ui/base/display';
5
5
  import { Stack } from 'themelia-react-ui/base/structure';
@@ -13,7 +13,7 @@ export function PurchaseReceipt({ items, total, reference }: { items: readonly R
13
13
  <Separator dashed />
14
14
  <ReceiptItems items={items} currency="EUR" unit="minor" />
15
15
  <Separator dashed />
16
- <MetadataList layout="rows" items={[{ label: 'Total', value: <Money tag="div" className="block" amount={total} currency="EUR" unit="minor" weight="semibold" /> }]} />
16
+ <MetadataList layout="rows" valueAlign="end" items={[{ label: 'Total', value: <Money tag="div" className="block" amount={total} currency="EUR" unit="minor" weight="semibold" /> }]} />
17
17
  </Stack>
18
18
  </Receipt>;
19
19
  }
@@ -50,11 +50,11 @@ export function ScopedDirectory(props: ScopedDirectoryProps) {
50
50
  const rowActions = useMemo<DataTableProps<DirectoryContact, unknown>['rowActions']>(() => [
51
51
  { id: 'open', label: 'Open contact', onClick: contact => props.onOpen(contact.id) },
52
52
  ], [props.onOpen]);
53
- return <Page header={{ title: 'Contacts', headingTag: 'h1',
53
+ return <Page header={{ title: 'Contacts',
54
54
  description: 'People responsible for bookings, billing and operations.',
55
55
  onBack: props.onBack, backLabel: 'All businesses',
56
56
  slots: { beforeTitle: <Text type="secondary">Business: {props.scope.label}</Text> },
57
- actions: props.onCreate ? <Button tone="primary" onClick={props.onCreate}>New contact</Button> : undefined,
57
+ primaryAction: props.onCreate ? { label: 'New contact', onClick: props.onCreate } : undefined,
58
58
  }}>
59
59
  <FilterProvider filters={criteria} activeFilters={props.filters}
60
60
  navigating={props.state.status === 'loading'}
@@ -70,7 +70,7 @@ export function ScopedDirectory(props: ScopedDirectoryProps) {
70
70
  props.state.status === 'error' ? 'Contacts could not be loaded.' :
71
71
  props.filters.length ? 'No contacts match these criteria.' : 'No contacts in this business yet.'}
72
72
  emptyStateAction={props.state.status === 'error' ? <Stack gap="dense"><Text role="alert" type="error">{props.state.message}</Text>
73
- <Button tone="secondary" buttonStyle="outline" onClick={props.onRetry}>Retry contacts</Button></Stack> : undefined}
73
+ <Button onClick={props.onRetry}>Retry contacts</Button></Stack> : undefined}
74
74
  rowActions={rowActions} />
75
75
  </FilterProvider>
76
76
  </Page>;
@@ -43,7 +43,7 @@ export function WebsiteLandingPage({ title, description, actionLabel, actionHref
43
43
  <Heading tag="h2" size="2xl" id={servicesId}>{servicesTitle}</Heading>
44
44
  <Grid columns={{ base: 1, md: 2, lg: 3 }} gap="xl">
45
45
  {offers.map(offer => <Card key={offer.id} title={offer.title} description={offer.description}
46
- footerSlot={<Button href={offer.href} tone="secondary" buttonStyle="outline">{offer.actionLabel}</Button>}>
46
+ footerSlot={<Button href={offer.href}>{offer.actionLabel}</Button>}>
47
47
  <Stack gap="dense">
48
48
  <Money {...offer.price} locale={locale} align="left" weight="semibold" />
49
49
  <Text type="secondary" size="xs">{offer.priceNote}</Text>
@@ -0,0 +1,33 @@
1
+ # Project instructions block
2
+
3
+ Agents load a skill only when they decide to, and often never open it. Paste this
4
+ block into the consuming app's `AGENTS.md`, which Codex, Cursor, Copilot and
5
+ Claude Code read; in a project that has only `CLAUDE.md`, paste it there. It
6
+ points agents at this installed skill and states when UI work is done.
7
+
8
+ ```md
9
+ <!-- themelia-react-ui:start 2.0.1 -->
10
+ ## UI built with themelia-react-ui
11
+ Before writing UI, read node_modules/themelia-react-ui/docs/consumer-skill/SKILL.md and the
12
+ installed declarations; prefer them over memory. Find the owner for a task with:
13
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/find-components.mjs <task nouns>
14
+ Rules: one Page per route, whose title is the h1. Commands go in header.primaryAction
15
+ (one) and ordered header.secondaryActions; destructive ones confirm with ConfirmDialog.
16
+ A record's sections go in header.tabs. Space siblings with Stack/Grid gap; write copy
17
+ with Heading/Text and values with Money/Date/Number; use semantic colors; badges stay
18
+ neutral unless they state status; dialogs come only from themelia-react-ui/features/overlays.
19
+ Done means: node node_modules/themelia-react-ui/docs/consumer-skill/scripts/check-composition.mjs <changed files>
20
+ reports no errors (fix and re-run, at most three rounds), then the app's typecheck, lint
21
+ and tests pass. Hand back each check as run or not run, and every kept warning with
22
+ file:line and its reason.
23
+ <!-- themelia-react-ui:end -->
24
+ ```
25
+
26
+ - Keep the block between its markers and replace all of it after an upgrade. The
27
+ start marker records the package version it was generated for; app rules belong
28
+ outside the markers.
29
+ - It names only the Node scripts that ship in `docs/consumer-skill/scripts`, so
30
+ every agent can run them without a plugin, MCP server or global CLI.
31
+ - The done condition is the agent's, not the build's: app CI can stay
32
+ non-blocking on checker warnings. See [review](review.md#done-means) for the
33
+ hand-back and the checker's coverage.
@@ -15,7 +15,7 @@ application data and never fetch or define a business metric.
15
15
  | Current versus previous metric | `MetricComparison` from `themelia-react-ui/blocks/analytics` | Uses current/previous `MetricData`; app defines the comparison baseline. |
16
16
  | Used/limit quotas with shares, daily values and period selection | `UsageCard` from `themelia-react-ui/blocks/analytics/usage-card` | Owns a Card and ready/loading/error/empty presentation with retry/period callbacks. No optional chart peer. |
17
17
  | One plain label/value fact | `InlineStat` from `themelia-react-ui/blocks/data-display` | Card-free; app chooses whether this subject needs a Card. |
18
- | Several facts about one record | `MetadataList` from `themelia-react-ui/blocks/data-display` | Card-free; value primitives own formatting. |
18
+ | Several facts about one record | `MetadataList` from `themelia-react-ui/base/metadata-list` | Card-free; value primitives own formatting. |
19
19
  | Caller-owned chart series | `ChartCard` from `themelia-react-ui/blocks/analytics` | Card-free chart composition; caller supplies chart content and an optional Card boundary. |
20
20
 
21
21
  Start with these subject owners before constructing a Card with a number and