themelia-react-ui 2.0.4 → 2.0.6

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 (715) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/MIGRATION.md +119 -0
  3. package/README.md +122 -20
  4. package/dist/{accordion-96o0pN62.js → accordion-0tQUZ20r.js} +13 -13
  5. package/dist/accordion-0tQUZ20r.js.map +1 -0
  6. package/dist/{action-menu-CHgs8vmj.js → action-menu-C0gjzLyE.js} +48 -45
  7. package/dist/action-menu-C0gjzLyE.js.map +1 -0
  8. package/dist/{affordance-geometry.generated-B8yGOr8-.js → affordance-geometry.generated-P-aVJisu.js} +36 -36
  9. package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
  10. package/dist/{ai-artifact-BZUGwBq6.js → ai-artifact-CGGpQryR.js} +281 -230
  11. package/dist/ai-artifact-CGGpQryR.js.map +1 -0
  12. package/dist/app-shell-EHuuRDGy.js +321 -0
  13. package/dist/app-shell-EHuuRDGy.js.map +1 -0
  14. package/dist/{attachment-DkoqHPPl.js → attachment-BCpA4e7i.js} +10 -10
  15. package/dist/{attachment-DkoqHPPl.js.map → attachment-BCpA4e7i.js.map} +1 -1
  16. package/dist/{auth-D2FVZ1MH.js → auth-B0girIk_.js} +49 -52
  17. package/dist/auth-B0girIk_.js.map +1 -0
  18. package/dist/{avatar-DWO_HHhB.js → avatar-B9Jnp-T-.js} +8 -8
  19. package/dist/avatar-B9Jnp-T-.js.map +1 -0
  20. package/dist/{badge-DErMA7ul.js → badge-wWauMgAt.js} +5 -5
  21. package/dist/{badge-DErMA7ul.js.map → badge-wWauMgAt.js.map} +1 -1
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +3 -3
  31. package/dist/base/cascader.js +2 -372
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +2 -2
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +2 -2
  39. package/dist/base/display.js +6 -6
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +10 -10
  44. package/dist/base/item.js +1 -1
  45. package/dist/base/media-gallery.js +1 -1
  46. package/dist/base/metadata-list.js +1 -1
  47. package/dist/base/navigation.js +7 -7
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +1 -1
  51. package/dist/base/repeaters.js +200 -193
  52. package/dist/base/repeaters.js.map +1 -1
  53. package/dist/base/sheet.js +1 -1
  54. package/dist/base/sidebar.js +2 -2
  55. package/dist/base/signature-pad.js +8 -8
  56. package/dist/base/signature-pad.js.map +1 -1
  57. package/dist/base/skeleton.js +1 -1
  58. package/dist/base/spinner.js +6 -6
  59. package/dist/base/spinner.js.map +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +36 -36
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/{batch-action-bar-CdfIkCsV.js → batch-action-bar-BoqWIIpV.js} +7 -7
  70. package/dist/batch-action-bar-BoqWIIpV.js.map +1 -0
  71. package/dist/blocks/admin.js +21 -21
  72. package/dist/blocks/admin.js.map +1 -1
  73. package/dist/blocks/ai.js +267 -247
  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 +537 -543
  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 +1330 -1250
  81. package/dist/blocks/commerce.js.map +1 -1
  82. package/dist/blocks/data-display.js +2 -2
  83. package/dist/blocks/onboarding.js +6 -6
  84. package/dist/blocks/onboarding.js.map +1 -1
  85. package/dist/blocks/planning.js +11 -11
  86. package/dist/blocks/timelines.js +1 -1
  87. package/dist/{breadcrumbs-B-WFKecD.js → breadcrumbs-Bp9Ke7kd.js} +7 -7
  88. package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
  89. package/dist/{button-DkmK-z8E.js → button-ChBovTx0.js} +3 -3
  90. package/dist/button-ChBovTx0.js.map +1 -0
  91. package/dist/{buttons-BbfzgczK.js → buttons-DeW0bQeK.js} +16 -16
  92. package/dist/buttons-DeW0bQeK.js.map +1 -0
  93. package/dist/cards-CNXnmvV5.js +69 -0
  94. package/dist/cards-CNXnmvV5.js.map +1 -0
  95. package/dist/cascader-CrAl9zD5.js +439 -0
  96. package/dist/cascader-CrAl9zD5.js.map +1 -0
  97. package/dist/chart-I7ROnsl8.js +162 -0
  98. package/dist/chart-I7ROnsl8.js.map +1 -0
  99. package/dist/{checkbox-CzYUTPeJ.js → checkbox-MoyHIAPs.js} +3 -3
  100. package/dist/{checkbox-CzYUTPeJ.js.map → checkbox-MoyHIAPs.js.map} +1 -1
  101. package/dist/choice-inputs-DHGtx0QV.js +789 -0
  102. package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
  103. package/dist/{code-block-CGNaUtAE.js → code-block-BSJyq9e-.js} +9 -9
  104. package/dist/code-block-BSJyq9e-.js.map +1 -0
  105. package/dist/{collapsible-Do4G0zcC.js → collapsible-BzJ91LUG.js} +5 -5
  106. package/dist/{collapsible-Do4G0zcC.js.map → collapsible-BzJ91LUG.js.map} +1 -1
  107. package/dist/{collection-content-C0e8SsTm.js → collection-content-CSnwtOTH.js} +3 -3
  108. package/dist/{collection-content-C0e8SsTm.js.map → collection-content-CSnwtOTH.js.map} +1 -1
  109. package/dist/combobox-Bcvu5J8O.js +363 -0
  110. package/dist/combobox-Bcvu5J8O.js.map +1 -0
  111. package/dist/combobox-C2JiSQPc.js +915 -0
  112. package/dist/combobox-C2JiSQPc.js.map +1 -0
  113. package/dist/{command-D8NrBj-b.js → command-9e52NPgK.js} +11 -11
  114. package/dist/command-9e52NPgK.js.map +1 -0
  115. package/dist/{comments-Di4w0H_S.js → comments-BsgErEqd.js} +44 -39
  116. package/dist/comments-BsgErEqd.js.map +1 -0
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -1
  118. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  119. package/dist/components/base/cards/card.recipes.d.ts +6 -4
  120. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
  121. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
  122. package/dist/components/base/cards/smart-card.types.d.ts +3 -4
  123. package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
  124. package/dist/components/base/chart/chart.d.ts +6 -1
  125. package/dist/components/base/choice-inputs/choice-types.d.ts +5 -1
  126. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
  127. package/dist/components/base/combobox/combobox-field.d.ts +2 -2
  128. package/dist/components/base/combobox/index.d.ts +4 -2
  129. package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
  130. package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
  131. package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
  132. package/dist/components/base/feedback/alert.d.ts +1 -1
  133. package/dist/components/base/feedback/state-display.d.ts +5 -1
  134. package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
  135. package/dist/components/base/forms/form-field.d.ts +7 -2
  136. package/dist/components/base/forms/form-sizing.d.ts +7 -7
  137. package/dist/components/base/forms/workflow.d.ts +7 -1
  138. package/dist/components/base/forms-numeric/coordinates-input.d.ts +8 -1
  139. package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
  140. package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
  141. package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
  142. package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
  143. package/dist/components/base/metadata-list/metadata-list.d.ts +1 -1
  144. package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
  145. package/dist/components/base/navigation/language-switcher.d.ts +12 -4
  146. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
  147. package/dist/components/base/navigation/page-header/page-header.d.ts +10 -3
  148. package/dist/components/base/popover/popover.d.ts +3 -3
  149. package/dist/components/base/popover/popover.recipes.d.ts +10 -6
  150. package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
  151. package/dist/components/base/sheet/sheet.d.ts +2 -0
  152. package/dist/components/base/sidebar/index.d.ts +1 -1
  153. package/dist/components/base/sidebar/sidebar.d.ts +29 -5
  154. package/dist/components/base/toaster/index.d.ts +1 -0
  155. package/dist/components/base/upload/avatar-upload.d.ts +2 -1
  156. package/dist/components/base/upload/image-upload.d.ts +2 -1
  157. package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
  158. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
  159. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
  160. package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
  161. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +5 -1
  162. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  163. package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
  164. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +4 -0
  165. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
  166. package/dist/components/blocks/analytics/types.d.ts +2 -2
  167. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  168. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
  169. package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
  170. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
  171. package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
  172. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  173. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
  174. package/dist/components/blocks/commerce/index.d.ts +7 -6
  175. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
  176. package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
  177. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
  178. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  179. package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
  180. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
  181. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
  182. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
  183. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
  184. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
  185. package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
  186. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  187. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
  188. package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  190. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
  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 +3 -1
  193. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
  194. package/dist/components/features/activities/activities.types.d.ts +26 -13
  195. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
  196. package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
  197. package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
  198. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
  199. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  200. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
  201. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  202. package/dist/components/features/combobox/combobox.d.ts +2 -2
  203. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
  204. package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
  205. package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
  206. package/dist/components/features/combobox/types.d.ts +37 -8
  207. package/dist/components/features/email-composer/types.d.ts +3 -1
  208. package/dist/components/features/event-calendar/colors.d.ts +2 -2
  209. package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
  210. package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
  211. package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
  212. package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
  213. package/dist/components/features/filters/filters.strings.d.ts +4 -0
  214. package/dist/components/features/filters/filters.types.d.ts +6 -3
  215. package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
  216. package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
  217. package/dist/components/features/filters/partials/filter-popover-content.d.ts +5 -3
  218. package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
  219. package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
  220. package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
  221. package/dist/components/features/filters/utils/filter-utils.d.ts +25 -3
  222. package/dist/components/features/global-search/global-search.types.d.ts +2 -0
  223. package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
  224. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
  225. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  226. package/dist/components/features/media-library/media-library.d.ts +1 -1
  227. package/dist/components/features/media-library/media-library.strings.d.ts +8 -0
  228. package/dist/components/features/media-library/media-library.types.d.ts +50 -12
  229. package/dist/components/features/media-library/partials/media-library-partials.d.ts +4 -4
  230. package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
  231. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
  232. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
  233. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
  234. package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
  235. package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
  236. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  237. package/dist/components/features/products/products.strings.d.ts +9 -1
  238. package/dist/components/features/products/products.types.d.ts +45 -8
  239. package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
  240. package/dist/components/features/resource/resource.d.ts +6 -2
  241. package/dist/components/features/resource/resource.types.d.ts +14 -1
  242. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  243. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +1 -1
  244. package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
  245. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
  246. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
  247. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
  248. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
  249. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
  250. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
  251. package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
  252. package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
  253. package/dist/components/features/table/data-table.d.ts +1 -1
  254. package/dist/components/features/table/index.d.ts +1 -0
  255. package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
  256. package/dist/components/features/table/table-body.d.ts +1 -1
  257. package/dist/components/features/table/table-helpers.d.ts +6 -3
  258. package/dist/components/features/table/table.strings.d.ts +3 -0
  259. package/dist/components/features/table/table.types.d.ts +18 -2
  260. package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
  261. package/dist/components/layout/app-shell/index.d.ts +1 -1
  262. package/dist/components/layout/app-shell/shell-regions.d.ts +27 -0
  263. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  264. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  265. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  266. package/dist/components/layout/containers/two-column-layout.d.ts +2 -0
  267. package/dist/components/layout/header/header.recipes.d.ts +6 -0
  268. package/dist/components/layout/header/header.types.d.ts +9 -8
  269. package/dist/components/layout/layout.types.d.ts +5 -3
  270. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
  271. package/dist/components/layout/navigation/side-nav.d.ts +3 -2
  272. package/dist/components/layout/normalize-layout-path.d.ts +1 -0
  273. package/dist/components/layout/page/index.d.ts +2 -1
  274. package/dist/components/layout/page/page.d.ts +1 -0
  275. package/dist/components/layout/page/page.strings.d.ts +11 -0
  276. package/dist/components/layout/page/page.types.d.ts +69 -17
  277. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  278. package/dist/components/layout/settings/settings.d.ts +10 -3
  279. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  280. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  281. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  282. package/dist/components/layout/sidebar/index.d.ts +2 -1
  283. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +38 -0
  284. package/dist/components/layout/sidebar/sidebar.context.d.ts +6 -7
  285. package/dist/components/layout/sidebar/sidebar.types.d.ts +50 -10
  286. package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
  287. package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
  288. package/dist/components/primitives/link.d.ts +3 -2
  289. package/dist/components/primitives/money.d.ts +1 -1
  290. package/dist/components/primitives/number.d.ts +1 -1
  291. package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
  292. package/dist/components/ui/alert-dialog.d.ts +2 -2
  293. package/dist/components/ui/combobox.d.ts +1 -1
  294. package/dist/components/ui/dialog.d.ts +2 -2
  295. package/dist/components/ui/overlay-layer.d.ts +18 -0
  296. package/dist/components/ui/sheet.d.ts +5 -1
  297. package/dist/components/ui/sidebar-state.d.ts +82 -0
  298. package/dist/components/ui/sidebar.d.ts +5 -17
  299. package/dist/{containers-CRmHf7GP.js → containers-CSdc32h9.js} +26 -18
  300. package/dist/containers-CSdc32h9.js.map +1 -0
  301. package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
  302. package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
  303. package/dist/{copyable-CnGCZdX4.js → copyable-3fdHfMR3.js} +7 -7
  304. package/dist/{copyable-CnGCZdX4.js.map → copyable-3fdHfMR3.js.map} +1 -1
  305. package/dist/{data-display-D4oujtx0.js → data-display-Cmj-xZYl.js} +271 -279
  306. package/dist/data-display-Cmj-xZYl.js.map +1 -0
  307. package/dist/{date-Q7jnXxpk.js → date-Br0FicVv.js} +5 -5
  308. package/dist/{date-Q7jnXxpk.js.map → date-Br0FicVv.js.map} +1 -1
  309. package/dist/date-picker-CyQlFYsP.js +1617 -0
  310. package/dist/date-picker-CyQlFYsP.js.map +1 -0
  311. package/dist/date-pickers-tj2MXmXd.js +185 -0
  312. package/dist/date-pickers-tj2MXmXd.js.map +1 -0
  313. package/dist/{display-BB4BL_-K.js → display-CT_N2a3w.js} +9 -9
  314. package/dist/{display-BB4BL_-K.js.map → display-CT_N2a3w.js.map} +1 -1
  315. package/dist/dropdown-menu-C08iIugv.js +194 -0
  316. package/dist/dropdown-menu-C08iIugv.js.map +1 -0
  317. package/dist/features/activities.js +388 -326
  318. package/dist/features/activities.js.map +1 -1
  319. package/dist/features/ai-chat.js +46 -32
  320. package/dist/features/ai-chat.js.map +1 -1
  321. package/dist/features/appointment-calendar.js +130 -130
  322. package/dist/features/appointment-calendar.js.map +1 -1
  323. package/dist/features/async-preview.js +11 -10
  324. package/dist/features/async-preview.js.map +1 -1
  325. package/dist/features/combobox.js +1 -1
  326. package/dist/features/comments.js +1 -1
  327. package/dist/features/data-view.js +13 -13
  328. package/dist/features/data-view.js.map +1 -1
  329. package/dist/features/email-composer.js +243 -239
  330. package/dist/features/email-composer.js.map +1 -1
  331. package/dist/features/event-calendar.js +197 -199
  332. package/dist/features/event-calendar.js.map +1 -1
  333. package/dist/features/filters.js +2 -2
  334. package/dist/features/global-search.js +168 -143
  335. package/dist/features/global-search.js.map +1 -1
  336. package/dist/features/kanban.js +19 -30
  337. package/dist/features/kanban.js.map +1 -1
  338. package/dist/features/map/style.css +15 -0
  339. package/dist/features/map.js +369 -343
  340. package/dist/features/map.js.map +1 -1
  341. package/dist/features/media-library.js +1202 -975
  342. package/dist/features/media-library.js.map +1 -1
  343. package/dist/features/mentions.js +2 -2
  344. package/dist/features/overlays.js +1 -1
  345. package/dist/features/products.js +1270 -1183
  346. package/dist/features/products.js.map +1 -1
  347. package/dist/features/questionnaire.js +160 -153
  348. package/dist/features/questionnaire.js.map +1 -1
  349. package/dist/features/resource-assignment.js +8 -8
  350. package/dist/features/resource.js +119 -113
  351. package/dist/features/resource.js.map +1 -1
  352. package/dist/features/rich-text-editor.js +28 -19
  353. package/dist/features/rich-text-editor.js.map +1 -1
  354. package/dist/features/schema-form.js +297 -256
  355. package/dist/features/schema-form.js.map +1 -1
  356. package/dist/features/suggestions.js +57 -50
  357. package/dist/features/suggestions.js.map +1 -1
  358. package/dist/features/sync.js +3 -3
  359. package/dist/features/table.js +1 -1
  360. package/dist/features/theme-tweaker.js +470 -470
  361. package/dist/features/theme-tweaker.js.map +1 -1
  362. package/dist/feedback-Dzo1xtAU.js +246 -0
  363. package/dist/feedback-Dzo1xtAU.js.map +1 -0
  364. package/dist/{field-affordance-recipes-DjwGx8eM.js → field-affordance-recipes-D6H7tVJi.js} +5 -5
  365. package/dist/field-affordance-recipes-D6H7tVJi.js.map +1 -0
  366. package/dist/field-control-attributes-B6i335wr.js +18 -0
  367. package/dist/field-control-attributes-B6i335wr.js.map +1 -0
  368. package/dist/{field-state-recipes-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
  369. package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
  370. package/dist/filters-Dl80yYtN.js +2415 -0
  371. package/dist/filters-Dl80yYtN.js.map +1 -0
  372. package/dist/form-field-CAPdwdnZ.js +74 -0
  373. package/dist/form-field-CAPdwdnZ.js.map +1 -0
  374. package/dist/{form-sizing-NXgjkmBG.js → form-sizing-CgcrUbLU.js} +5 -5
  375. package/dist/form-sizing-CgcrUbLU.js.map +1 -0
  376. package/dist/{forms-BV5m5aQF.js → forms-B3W8CH7-.js} +17 -13
  377. package/dist/forms-B3W8CH7-.js.map +1 -0
  378. package/dist/forms-numeric-CwjQJe-O.js +991 -0
  379. package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
  380. package/dist/{header-BA697l4a.js → header-ZIIsRKxP.js} +145 -141
  381. package/dist/header-ZIIsRKxP.js.map +1 -0
  382. package/dist/header.recipes-BigdJjw1.js +6 -0
  383. package/dist/header.recipes-BigdJjw1.js.map +1 -0
  384. package/dist/hooks/use-files.d.ts +2 -0
  385. package/dist/{hooks-BQ-L7Uu2.js → hooks-BitHSh-Y.js} +27 -15
  386. package/dist/hooks-BitHSh-Y.js.map +1 -0
  387. package/dist/{icon-badge-COWbCCWu.js → icon-badge-npxF1SLX.js} +4 -4
  388. package/dist/{icon-badge-COWbCCWu.js.map → icon-badge-npxF1SLX.js.map} +1 -1
  389. package/dist/index.js +4 -5
  390. package/dist/{input-Cdw4k0fb.js → input-7KAc7XQL.js} +9 -9
  391. package/dist/{input-Cdw4k0fb.js.map → input-7KAc7XQL.js.map} +1 -1
  392. package/dist/input-DIREVYHs.js +21 -0
  393. package/dist/input-DIREVYHs.js.map +1 -0
  394. package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
  395. package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
  396. package/dist/item-FfWnaYST.js +278 -0
  397. package/dist/item-FfWnaYST.js.map +1 -0
  398. package/dist/layout/app-shell.js +1 -1
  399. package/dist/layout/auth.js +1 -1
  400. package/dist/layout/containers.js +1 -1
  401. package/dist/layout/header.js +1 -1
  402. package/dist/layout/hooks.js +1 -1
  403. package/dist/layout/navigation.js +1 -1
  404. package/dist/layout/page.js +2 -2
  405. package/dist/layout/settings.js +1 -1
  406. package/dist/layout/sidebar.js +3 -3
  407. package/dist/layout/workspace.js +1 -1
  408. package/dist/layout.js +12 -12
  409. package/dist/layout.types-E_GAApzO.js +30 -0
  410. package/dist/layout.types-E_GAApzO.js.map +1 -0
  411. package/dist/lib/affordance-geometry.generated.d.ts +35 -35
  412. package/dist/lib/control-group-recipes.d.ts +5 -5
  413. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  414. package/dist/lib/field-control-attributes.d.ts +11 -0
  415. package/dist/lib/field-state-recipes.d.ts +2 -0
  416. package/dist/lib/format.d.ts +1 -0
  417. package/dist/lib/motion-recipes.d.ts +3 -0
  418. package/dist/lib/navigation-row-recipes.d.ts +7 -7
  419. package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
  420. package/dist/lib/portal-recipes.d.ts +3 -0
  421. package/dist/lib/surface-recipes.d.ts +1 -1
  422. package/dist/lib/token-merge.generated.d.ts +18 -15
  423. package/dist/lib/utils.js +1 -1
  424. package/dist/map-demo-tile.svg +1 -1
  425. package/dist/{media-gallery-CSl5W1Fy.js → media-gallery-C81DAnKI.js} +6 -6
  426. package/dist/{media-gallery-CSl5W1Fy.js.map → media-gallery-C81DAnKI.js.map} +1 -1
  427. package/dist/{mentions-RKOQaaIB.js → mentions-qOnedSt4.js} +237 -168
  428. package/dist/mentions-qOnedSt4.js.map +1 -0
  429. package/dist/message-BJHnn43M.js +135 -0
  430. package/dist/message-BJHnn43M.js.map +1 -0
  431. package/dist/{metadata-list-qVV7AVxa.js → metadata-list-XkqZ_UXH.js} +64 -64
  432. package/dist/metadata-list-XkqZ_UXH.js.map +1 -0
  433. package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
  434. package/dist/motion-recipes-DitYv6P2.js.map +1 -0
  435. package/dist/navigation-BgtPJAhi.js +288 -0
  436. package/dist/navigation-BgtPJAhi.js.map +1 -0
  437. package/dist/navigation-Bt-v7rWP.js +261 -0
  438. package/dist/navigation-Bt-v7rWP.js.map +1 -0
  439. package/dist/{navigation-row-recipes-WZEs-hYo.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
  440. package/dist/navigation-row-recipes-BGVLvU_O.js.map +1 -0
  441. package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
  442. package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
  443. package/dist/{number-E_OiIfJz.js → number-CYqBcrSj.js} +79 -87
  444. package/dist/number-CYqBcrSj.js.map +1 -0
  445. package/dist/overflow-tab-bar-BQCA2Zn2.js +172 -0
  446. package/dist/overflow-tab-bar-BQCA2Zn2.js.map +1 -0
  447. package/dist/overlays-CC8zI3Du.js +1017 -0
  448. package/dist/overlays-CC8zI3Du.js.map +1 -0
  449. package/dist/page-BoQ1VaFJ.js +331 -0
  450. package/dist/page-BoQ1VaFJ.js.map +1 -0
  451. package/dist/page-header-commands-DIKspJfx.js +193 -0
  452. package/dist/page-header-commands-DIKspJfx.js.map +1 -0
  453. package/dist/{pagination-Ch8X_47u.js → pagination-Br8TdV9A.js} +7 -7
  454. package/dist/{pagination-Ch8X_47u.js.map → pagination-Br8TdV9A.js.map} +1 -1
  455. package/dist/popover-k8TdUcAt.js +201 -0
  456. package/dist/popover-k8TdUcAt.js.map +1 -0
  457. package/dist/{popover-menu-BYaCdFhf.js → popover-menu-yn-o0kyA.js} +7 -7
  458. package/dist/{popover-menu-BYaCdFhf.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
  459. package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DJ0AkUan.js} +19 -12
  460. package/dist/popover.recipes-DJ0AkUan.js.map +1 -0
  461. package/dist/portal-recipes-DyUXqUtD.js +9 -0
  462. package/dist/portal-recipes-DyUXqUtD.js.map +1 -0
  463. package/dist/{primitives-Du64iDbb.js → primitives-BkkQjYl7.js} +23 -18
  464. package/dist/primitives-BkkQjYl7.js.map +1 -0
  465. package/dist/primitives.js +4 -4
  466. package/dist/{progress-BvF2oCdV.js → progress-DZFXXzPs.js} +9 -9
  467. package/dist/{progress-BvF2oCdV.js.map → progress-DZFXXzPs.js.map} +1 -1
  468. package/dist/{receipt-D789Jwyy.js → receipt-C7LhOg7Q.js} +7 -7
  469. package/dist/receipt-C7LhOg7Q.js.map +1 -0
  470. package/dist/rich-text-BnTzZjIo.js +45 -0
  471. package/dist/rich-text-BnTzZjIo.js.map +1 -0
  472. package/dist/{rich-text-editor-Cm1dpUpQ.js → rich-text-editor-CAurDwT5.js} +501 -424
  473. package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
  474. package/dist/rich-text-editor-toolbar-DbXig7Jk.js +99 -0
  475. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
  476. package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
  477. package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
  478. package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
  479. package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
  480. package/dist/{scroll-area-La5RXsEk.js → scroll-area-Bj6CRUif.js} +2 -2
  481. package/dist/{scroll-area-La5RXsEk.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
  482. package/dist/{separator-DAEV0w65.js → separator-B9ewiCGO.js} +2 -2
  483. package/dist/{separator-DAEV0w65.js.map → separator-B9ewiCGO.js.map} +1 -1
  484. package/dist/{separator-GNfPG-90.js → separator-DM6gs2vu.js} +3 -3
  485. package/dist/{separator-GNfPG-90.js.map → separator-DM6gs2vu.js.map} +1 -1
  486. package/dist/services/actions.js +1 -1
  487. package/dist/settings-DZPHgpx4.js +155 -0
  488. package/dist/settings-DZPHgpx4.js.map +1 -0
  489. package/dist/sheet-C4DHsgLk.js +250 -0
  490. package/dist/sheet-C4DHsgLk.js.map +1 -0
  491. package/dist/sidebar-C8BnDwTH.js +709 -0
  492. package/dist/sidebar-C8BnDwTH.js.map +1 -0
  493. package/dist/sidebar-CmD6a-HK.js +1004 -0
  494. package/dist/sidebar-CmD6a-HK.js.map +1 -0
  495. package/dist/skeleton-DDgdhmu9.js +265 -0
  496. package/dist/skeleton-DDgdhmu9.js.map +1 -0
  497. package/dist/smart-card-B6vLxqa_.js +617 -0
  498. package/dist/smart-card-B6vLxqa_.js.map +1 -0
  499. package/dist/{structure-C0V0_Fyf.js → structure-DZJ2wbAU.js} +2 -2
  500. package/dist/{structure-C0V0_Fyf.js.map → structure-DZJ2wbAU.js.map} +1 -1
  501. package/dist/style.css +1 -1
  502. package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
  503. package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
  504. package/dist/{table-DH7rozUv.js → table-CBonSdTp.js} +573 -519
  505. package/dist/table-CBonSdTp.js.map +1 -0
  506. package/dist/{table-CpvnzJn9.js → table-CXSPHH25.js} +75 -71
  507. package/dist/table-CXSPHH25.js.map +1 -0
  508. package/dist/tabs-C4Kr_hCr.js +192 -0
  509. package/dist/tabs-C4Kr_hCr.js.map +1 -0
  510. package/dist/{text-inputs-DXItiR0O.js → text-inputs-jdkS3ReG.js} +18 -18
  511. package/dist/text-inputs-jdkS3ReG.js.map +1 -0
  512. package/dist/theme.css +40 -37
  513. package/dist/{timelines-DmtztAY_.js → timelines-CoPwdJP0.js} +13 -12
  514. package/dist/timelines-CoPwdJP0.js.map +1 -0
  515. package/dist/tooltip-31NwIpTo.js +113 -0
  516. package/dist/tooltip-31NwIpTo.js.map +1 -0
  517. package/dist/{tree-CV11PURP.js → tree-CeYVzdFE.js} +9 -9
  518. package/dist/{tree-CV11PURP.js.map → tree-CeYVzdFE.js.map} +1 -1
  519. package/dist/typography/rich-text.js +1 -1
  520. package/dist/{typography-CSyJrh28.js → typography-C7-YMW1S.js} +12 -12
  521. package/dist/{typography-CSyJrh28.js.map → typography-C7-YMW1S.js.map} +1 -1
  522. package/dist/typography.js +1 -1
  523. package/dist/ui-provider-C-74NVLc.js +178 -0
  524. package/dist/ui-provider-C-74NVLc.js.map +1 -0
  525. package/dist/ui-provider.js +2 -3
  526. package/dist/{upload-C9SA0X-8.js → upload-Hdm5gObf.js} +309 -296
  527. package/dist/upload-Hdm5gObf.js.map +1 -0
  528. package/dist/{upload-queue-DhQJiSRc.js → upload-queue-D0sYPuqo.js} +16 -14
  529. package/dist/upload-queue-D0sYPuqo.js.map +1 -0
  530. package/dist/{usage-card-DVTRDmGz.js → usage-card-9s8hLDfn.js} +24 -17
  531. package/dist/usage-card-9s8hLDfn.js.map +1 -0
  532. package/dist/{utils-CF3c95Io.js → utils-DhuoqFy4.js} +255 -165
  533. package/dist/utils-DhuoqFy4.js.map +1 -0
  534. package/dist/value-inputs-D3aPgq9H.js +980 -0
  535. package/dist/value-inputs-D3aPgq9H.js.map +1 -0
  536. package/dist/{value-typography-ClupF0Gz.js → value-typography-uSzzG9Gf.js} +32 -26
  537. package/dist/value-typography-uSzzG9Gf.js.map +1 -0
  538. package/dist/{workspace-9EFVXUyk.js → workspace-CC8Vchiu.js} +51 -50
  539. package/dist/workspace-CC8Vchiu.js.map +1 -0
  540. package/docs/consumer-skill/SKILL.md +4 -3
  541. package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
  542. package/docs/consumer-skill/examples/app-layout.tsx +52 -1
  543. package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
  544. package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
  545. package/docs/consumer-skill/examples/detail.tsx +5 -4
  546. package/docs/consumer-skill/examples/edit.tsx +3 -3
  547. package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
  548. package/docs/consumer-skill/examples/index-table.tsx +4 -4
  549. package/docs/consumer-skill/examples/manifest.json +38 -1
  550. package/docs/consumer-skill/examples/product-media.tsx +41 -0
  551. package/docs/consumer-skill/examples/product-parts.tsx +81 -0
  552. package/docs/consumer-skill/examples/rhf-edit-page.tsx +1 -1
  553. package/docs/consumer-skill/examples/rhf-overlay-form.tsx +24 -11
  554. package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
  555. package/docs/consumer-skill/references/agents-md.md +21 -19
  556. package/docs/consumer-skill/references/analytics.md +33 -1
  557. package/docs/consumer-skill/references/commerce-composition.md +97 -0
  558. package/docs/consumer-skill/references/component-contracts.json +21249 -14205
  559. package/docs/consumer-skill/references/composition-mapping.md +17 -3
  560. package/docs/consumer-skill/references/composition.md +177 -32
  561. package/docs/consumer-skill/references/critique-rubric.md +98 -0
  562. package/docs/consumer-skill/references/custom-composition.md +261 -0
  563. package/docs/consumer-skill/references/data-reading.md +79 -0
  564. package/docs/consumer-skill/references/design-contract.md +12 -9
  565. package/docs/consumer-skill/references/discovery.md +27 -3
  566. package/docs/consumer-skill/references/domain-structures.md +124 -0
  567. package/docs/consumer-skill/references/installation.md +62 -8
  568. package/docs/consumer-skill/references/integration.md +59 -1
  569. package/docs/consumer-skill/references/product-composition.md +94 -0
  570. package/docs/consumer-skill/references/public-api.json +3044 -445
  571. package/docs/consumer-skill/references/review.md +87 -10
  572. package/docs/consumer-skill/references/rhf-workflows.md +79 -0
  573. package/docs/consumer-skill/references/screen-archetypes.md +19 -7
  574. package/docs/consumer-skill/references/screen-decisions.md +126 -0
  575. package/docs/consumer-skill/references/theming.md +24 -20
  576. package/docs/consumer-skill/references/tokens.json +9 -9
  577. package/docs/consumer-skill/references/view-craft.md +153 -0
  578. package/docs/consumer-skill/references/view-spec.md +73 -0
  579. package/docs/consumer-skill/references/workflows.md +7 -1
  580. package/docs/consumer-skill/scripts/composition-policy.mjs +176 -26
  581. package/docs/consumer-skill/scripts/composition-schema.mjs +1 -1
  582. package/docs/consumer-skill/scripts/composition.mjs +61 -5
  583. package/docs/consumer-skill/scripts/discovery.mjs +54 -0
  584. package/docs/consumer-skill/scripts/inspect-component.mjs +1 -1
  585. package/docs/consumer-skill/scripts/inspection.mjs +73 -18
  586. package/docs/consumer-skill/scripts/setup-skills.mjs +79 -7
  587. package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
  588. package/docs/consumer-skills/themelia-components/SKILL.md +14 -13
  589. package/docs/consumer-skills/themelia-composition/SKILL.md +16 -17
  590. package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
  591. package/docs/consumer-skills/themelia-foundation/SKILL.md +2 -1
  592. package/docs/consumer-skills/themelia-tokenization/SKILL.md +24 -17
  593. package/package.json +4 -2
  594. package/templates/admin-shell-template.tsx +1 -2
  595. package/templates/customers-template.tsx +18 -16
  596. package/dist/accordion-96o0pN62.js.map +0 -1
  597. package/dist/action-menu-CHgs8vmj.js.map +0 -1
  598. package/dist/affordance-geometry.generated-B8yGOr8-.js.map +0 -1
  599. package/dist/ai-artifact-BZUGwBq6.js.map +0 -1
  600. package/dist/app-shell-D63ATkIK.js +0 -237
  601. package/dist/app-shell-D63ATkIK.js.map +0 -1
  602. package/dist/auth-D2FVZ1MH.js.map +0 -1
  603. package/dist/avatar-DWO_HHhB.js.map +0 -1
  604. package/dist/base/cascader.js.map +0 -1
  605. package/dist/batch-action-bar-CdfIkCsV.js.map +0 -1
  606. package/dist/breadcrumbs-B-WFKecD.js.map +0 -1
  607. package/dist/button-DkmK-z8E.js.map +0 -1
  608. package/dist/buttons-BbfzgczK.js.map +0 -1
  609. package/dist/cards-4JTWqvVe.js +0 -68
  610. package/dist/cards-4JTWqvVe.js.map +0 -1
  611. package/dist/chart-C19flDQb.js +0 -155
  612. package/dist/chart-C19flDQb.js.map +0 -1
  613. package/dist/choice-inputs-JLtij2y4.js +0 -776
  614. package/dist/choice-inputs-JLtij2y4.js.map +0 -1
  615. package/dist/code-block-CGNaUtAE.js.map +0 -1
  616. package/dist/combobox-CBJDs6w_.js +0 -877
  617. package/dist/combobox-CBJDs6w_.js.map +0 -1
  618. package/dist/combobox-hbhSS18O.js +0 -355
  619. package/dist/combobox-hbhSS18O.js.map +0 -1
  620. package/dist/command-D8NrBj-b.js.map +0 -1
  621. package/dist/comments-Di4w0H_S.js.map +0 -1
  622. package/dist/containers-CRmHf7GP.js.map +0 -1
  623. package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
  624. package/dist/data-display-D4oujtx0.js.map +0 -1
  625. package/dist/date-picker-zOt1oNss.js +0 -1542
  626. package/dist/date-picker-zOt1oNss.js.map +0 -1
  627. package/dist/date-pickers-cj8IXbDC.js +0 -179
  628. package/dist/date-pickers-cj8IXbDC.js.map +0 -1
  629. package/dist/dropdown-menu-CjY8Vt7W.js +0 -193
  630. package/dist/dropdown-menu-CjY8Vt7W.js.map +0 -1
  631. package/dist/feedback-DZNL5Lg1.js +0 -239
  632. package/dist/feedback-DZNL5Lg1.js.map +0 -1
  633. package/dist/field-affordance-recipes-DjwGx8eM.js.map +0 -1
  634. package/dist/filters-BcT-uoFy.js +0 -2209
  635. package/dist/filters-BcT-uoFy.js.map +0 -1
  636. package/dist/form-field-CsgRmdit.js +0 -63
  637. package/dist/form-field-CsgRmdit.js.map +0 -1
  638. package/dist/form-sizing-NXgjkmBG.js.map +0 -1
  639. package/dist/forms-BV5m5aQF.js.map +0 -1
  640. package/dist/forms-numeric-Cd33AKbD.js +0 -906
  641. package/dist/forms-numeric-Cd33AKbD.js.map +0 -1
  642. package/dist/header-BA697l4a.js.map +0 -1
  643. package/dist/hooks-BQ-L7Uu2.js.map +0 -1
  644. package/dist/input-DOPL5_QE.js +0 -21
  645. package/dist/input-DOPL5_QE.js.map +0 -1
  646. package/dist/item-BvZ2DR_x.js +0 -277
  647. package/dist/item-BvZ2DR_x.js.map +0 -1
  648. package/dist/layout.types-Cn7aUzJp.js +0 -20
  649. package/dist/layout.types-Cn7aUzJp.js.map +0 -1
  650. package/dist/mentions-RKOQaaIB.js.map +0 -1
  651. package/dist/message-INU2xsxu.js +0 -128
  652. package/dist/message-INU2xsxu.js.map +0 -1
  653. package/dist/metadata-list-qVV7AVxa.js.map +0 -1
  654. package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
  655. package/dist/navigation-BQNcg1jT.js +0 -269
  656. package/dist/navigation-BQNcg1jT.js.map +0 -1
  657. package/dist/navigation-DLF3E1IC.js +0 -145
  658. package/dist/navigation-DLF3E1IC.js.map +0 -1
  659. package/dist/navigation-row-recipes-WZEs-hYo.js.map +0 -1
  660. package/dist/number-E_OiIfJz.js.map +0 -1
  661. package/dist/overflow-tab-bar-CrbqMteP.js +0 -284
  662. package/dist/overflow-tab-bar-CrbqMteP.js.map +0 -1
  663. package/dist/overlays-BlKynmde.js +0 -1004
  664. package/dist/overlays-BlKynmde.js.map +0 -1
  665. package/dist/page-CIwNUtGr.js +0 -227
  666. package/dist/page-CIwNUtGr.js.map +0 -1
  667. package/dist/page-header-commands-DFMlNYzN.js +0 -128
  668. package/dist/page-header-commands-DFMlNYzN.js.map +0 -1
  669. package/dist/popover-uwzX2vo7.js +0 -198
  670. package/dist/popover-uwzX2vo7.js.map +0 -1
  671. package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
  672. package/dist/primitives-Du64iDbb.js.map +0 -1
  673. package/dist/receipt-D789Jwyy.js.map +0 -1
  674. package/dist/rich-text-CLJEf76s.js +0 -78
  675. package/dist/rich-text-CLJEf76s.js.map +0 -1
  676. package/dist/rich-text-editor-Cm1dpUpQ.js.map +0 -1
  677. package/dist/rich-text-editor-toolbar-L__e4x47.js +0 -94
  678. package/dist/rich-text-editor-toolbar-L__e4x47.js.map +0 -1
  679. package/dist/safe-image-src-C6kQSMBZ.js +0 -17
  680. package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
  681. package/dist/sanitize-html-DsQmI48u.js.map +0 -1
  682. package/dist/settings-BA2iboic.js +0 -174
  683. package/dist/settings-BA2iboic.js.map +0 -1
  684. package/dist/sheet-DoAxTb2J.js +0 -213
  685. package/dist/sheet-DoAxTb2J.js.map +0 -1
  686. package/dist/sidebar-ByqKR_W5.js +0 -512
  687. package/dist/sidebar-ByqKR_W5.js.map +0 -1
  688. package/dist/sidebar-D2iSnGJ7.js +0 -619
  689. package/dist/sidebar-D2iSnGJ7.js.map +0 -1
  690. package/dist/skeleton-CUj8O5Bd.js +0 -264
  691. package/dist/skeleton-CUj8O5Bd.js.map +0 -1
  692. package/dist/smart-card-CqkzQsK-.js +0 -614
  693. package/dist/smart-card-CqkzQsK-.js.map +0 -1
  694. package/dist/table-CpvnzJn9.js.map +0 -1
  695. package/dist/table-DH7rozUv.js.map +0 -1
  696. package/dist/tabs-eqVsJZWO.js +0 -191
  697. package/dist/tabs-eqVsJZWO.js.map +0 -1
  698. package/dist/text-inputs-DXItiR0O.js.map +0 -1
  699. package/dist/theme-scope-BJ6eE2xt.js +0 -50
  700. package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
  701. package/dist/timelines-DmtztAY_.js.map +0 -1
  702. package/dist/tooltip-B4hjKtoV.js +0 -111
  703. package/dist/tooltip-B4hjKtoV.js.map +0 -1
  704. package/dist/ui-provider-CQCuCBcy.js +0 -136
  705. package/dist/ui-provider-CQCuCBcy.js.map +0 -1
  706. package/dist/upload-C9SA0X-8.js.map +0 -1
  707. package/dist/upload-queue-DhQJiSRc.js.map +0 -1
  708. package/dist/usage-card-DVTRDmGz.js.map +0 -1
  709. package/dist/use-mobile-vaLKwgyf.js +0 -15
  710. package/dist/use-mobile-vaLKwgyf.js.map +0 -1
  711. package/dist/utils-CF3c95Io.js.map +0 -1
  712. package/dist/value-inputs-C0o70p-U.js +0 -980
  713. package/dist/value-inputs-C0o70p-U.js.map +0 -1
  714. package/dist/value-typography-ClupF0Gz.js.map +0 -1
  715. package/dist/workspace-9EFVXUyk.js.map +0 -1
@@ -0,0 +1,261 @@
1
+ # App-owned composites
2
+
3
+ Use this when the product's data needs a particular presentation, when the app
4
+ needs a reusable subject, or when several existing owners should cooperate.
5
+ Start from the user's decision and the data relationships, then choose the seam.
6
+ The four skills cooperate: design decides what the view shows and judges the
7
+ rendered result, components verifies APIs, composition assigns owners, and
8
+ tokenization supplies shared visual roles. A new app component does not imply a
9
+ new library component or token.
10
+
11
+ ## Compare capabilities before constructing the subject
12
+
13
+ Break the screen into task responsibilities and search each one, including its
14
+ domain nouns. Finding Card, Input and Grid does not finish discovery of a product
15
+ editor's options, variant workflow or media gallery. For each substantial region,
16
+ compare the fitting feature/block and its public parts: accepted data, state and
17
+ callbacks, content/render seams, presentation fit, and what remains app-owned.
18
+ A few working notes suffice; no permission gate or large inventory is needed.
19
+
20
+ Use the existing owner when it fits; extend its supported content/render seam
21
+ when the data needs extra structure. Check a compound part before replacing a
22
+ convenience wrapper. Custom domain JSX remains a first-class choice for a
23
+ comparison, grouping or relationship, but it is not a reason to recreate an
24
+ existing option editor, gallery selection/reordering, menu or focus lifecycle.
25
+ If an owner seems unsuitable, inspect the exact limitation and its callers.
26
+ Do not mistake incorrect controlled-state wiring for missing support.
27
+
28
+ The [product capability map](product-composition.md) demonstrates this comparison:
29
+ product options and their generated variant rows, editing one variant, a local
30
+ File[] gallery and already-attached asset records are distinct responsibilities.
31
+ Its examples route to actual public APIs rather than a handcrafted photo grid
32
+ or a new option-pill implementation. Other domains need the same task-specific
33
+ discovery, not the same product layout.
34
+
35
+ ## Shape the subject from the data
36
+
37
+ Inspect real representative records before choosing a template. Notice which
38
+ facts interact, which values reconcile, where there are stages or dependencies,
39
+ and which exceptional states change the next action. Choose an information
40
+ structure that lets the user understand those relationships in place.
41
+
42
+ | Data and user decision | Useful subject structure |
43
+ | --- | --- |
44
+ | A supplier's contact details and one edit command | An existing facts/contact block or MetadataList; the simple subject needs no invented workflow |
45
+ | Goods split across warehouses, partially allocated stock, payment coverage and a release hold | A release-readiness subject: affected goods and quantities grouped by warehouse, shortages beside those lines, payment/hold consequences beside the release command |
46
+ | Several payments allocated to invoices, a disputed amount and unapplied credit | An account-reconciliation subject: allocation provenance, collectible/disputed/future balances and the calculation connecting them; keep unallocated credit distinct until an allocation rule applies |
47
+ | Agreed invoice lines plus a service-specific exception | Keep InvoiceLineItems for the invoice subject and add an app-owned exception/decision region through the surrounding composition |
48
+
49
+ These are examples of relationships, not mandatory component shapes. The
50
+ business rules must establish what can ship, what is collectible or which
51
+ action is permitted. Missing valuation, allocation or policy is unknown; do
52
+ not infer it from a total or manufacture a precise decision.
53
+
54
+ Choose among an existing block, an app-owned subject made from smaller parts,
55
+ or a combination. The match includes meaning, emphasis and relationships as
56
+ well as prop coverage. A block accepting the fields does not establish that
57
+ its arrangement communicates the task well.
58
+
59
+ An app-owned component can combine Button, Badge, Text, value primitives,
60
+ Stack/Grid and ordinary JSX such as a definition list, grouped list or
61
+ comparison tracks. App-owned domain functions or authoritative server results
62
+ supply calculations and eligibility; the subject presents those results with
63
+ their explanations and related evidence. Its caller can supply
64
+ permissions, callbacks and transport; the public controls retain their
65
+ keyboard, loading, focus and disabled behavior. Use the shared typography,
66
+ spacing, color and surface roles throughout the custom content.
67
+
68
+ For example, a `ReleaseReadiness` app component can present the unshipped
69
+ quantity, allocated quantity and shortage for each product, then explain which
70
+ hold blocks release. It can reuse a customer block elsewhere and the existing
71
+ line-item table for price reconciliation. A new name around unchanged generic
72
+ cards adds no information structure; the useful change is making the
73
+ relationship and its operational consequence visible.
74
+
75
+ Extract a domain component when it gives a coherent subject, useful local
76
+ contract or reuse. Local JSX inside a page is also valid. Neither a new file
77
+ nor custom code is required for every region. After composing, check whether
78
+ the user can make the intended decision without mentally joining disconnected
79
+ facts, and whether the same arrangement would still make sense with a
80
+ different record or exception.
81
+
82
+ ## Check domain coverage
83
+
84
+ A route title and a fact summary do not establish coverage of an entity. Inspect
85
+ the brief, data types, representative records, related entities and existing app
86
+ flows for the parts users actually work with. Separate the parts present in the
87
+ model, those required by the task but missing, and those outside the task.
88
+
89
+ | Entity | Inspect when relevant | What changes the presentation |
90
+ | --- | --- | --- |
91
+ | Order | Line items, purchased variant/SKU and selected options, quantities, price adjustments/tax, payment records, fulfillment groups, cancellations/refunds | Item identity and options stay with the purchased line; partial fulfillment and refunds stay with affected quantities; totals reconcile separately from operational readiness |
92
+ | Product | Option groups and values, variant combinations, per-variant SKU/price/inventory/availability/media, publishing and product type | Option definitions differ from sellable variants; use a variant comparison/editor when combinations matter, with shared defaults and exceptions made explicit |
93
+ | Invoice/account | Line items, due dates, payments and allocations, credits/disputes, remaining balance and collection history | Trace the remaining collectible amount and its provenance instead of showing disconnected totals or treating payment state as the complete history |
94
+
95
+ Adapt this inspection to the product: digital goods, services, subscriptions and
96
+ simple products have different parts. Do not add warehouses, variants or a refund
97
+ workflow just because another product has them. For relevant missing data, state
98
+ the contract or coverage gap rather than presenting an absent region as complete.
99
+ Inspect existing public domain features and templates: the
100
+ [products template](../../../templates/products-template.tsx) demonstrates
101
+ ProductVariantsManager, ProductVariantEditor and ProductVariantDetails from
102
+ features/products, including option groups and variant-level fields. A feature's
103
+ existence is separate from whether this app actually integrates it.
104
+
105
+ For a requested prototype, use coherent, explicitly mock examples that exercise
106
+ its agreed domain depth: a simple record and representative variants, partial
107
+ states or exceptions. Keep related IDs, selected options, quantities and money
108
+ consistent. Preserve supplied authoritative fixtures; expand an evaluation's
109
+ dataset as an explicit new round so original results remain reproducible.
110
+ For an existing app, inspect its real contracts before adding domain assumptions.
111
+ Report which regions and behaviors were delivered and which remain outside the
112
+ scope or unverified. A rendered generic summary is not evidence of options,
113
+ variant editing, line-level fulfillment or other unimplemented behavior.
114
+
115
+ ## Choose owners before JSX
116
+
117
+ | Layer | Owns | Does not imply |
118
+ | --- | --- | --- |
119
+ | Typography | Text/Heading/Label roles; semantic tag and visual size are separate | Every nested label should become a large heading |
120
+ | Primitives | Formatted Money, Date, Number, contact and missing values | Raw unstyled interaction primitives |
121
+ | Base | Accessible controls, disclosure, collection, surface and passive structures | A headless kit whose states need restyling |
122
+ | Layout | App chrome, Page identity/gutters, scrolling and responsive regions | Another Card around every route or another shell inside its children |
123
+ | Blocks | Reusable subject presentation with supported local interactions | A complete transport workflow or an implicit frame |
124
+ | Features | Coordinated business workflow, editing/selection/async lifecycle | Exclusive ownership of all interaction in the package |
125
+
126
+ Stack/Grid/AdaptiveGrid live in base/structure and browse under Foundations.
127
+ Layout sidebar owns application navigation; base/sidebar exposes its lower-level
128
+ anatomy. Prefer AppSidebar for routine grouped/workspace navigation and inspect
129
+ its render slots before reconstructing that behavior. A formatted value, a row
130
+ of record facts and a sidebar are different responsibilities even if all appear
131
+ inside one business panel.
132
+
133
+ Search each responsibility. A fitting feature can own the workflow; a block can
134
+ own its subject; a base component can own local behavior. Use compound parts when
135
+ the convenience wrapper's bounded shape cannot express the requirement. Combine
136
+ those owners into app content after inspecting the relevant API seams.
137
+ The search term is a task responsibility, not necessarily a package layer.
138
+
139
+ Before replacing an existing control, disclosure or workflow implementation,
140
+ identify the behavior it cannot express and verify that limit. Composing a
141
+ domain's content from smaller public parts does not require an API gap; its
142
+ data relationships can justify the shape. For an unfamiliar interactive
143
+ composition, retain a brief source note: selected owner/import,
144
+ needed prop or slot, and the behavior that still belongs to the app. No lengthy
145
+ report is needed for routine known controls.
146
+
147
+ ## Disclosure sections
148
+
149
+ For labeled expandable sections, inspect Accordion and its compound parts before
150
+ choosing Card + Collapsible. Custom badges or retained fields are requirements to
151
+ check, not evidence that Accordion cannot work.
152
+
153
+ ```sh
154
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/find-components.mjs "expandable form sections"
155
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-component.mjs Accordion --import themelia-react-ui/base/accordion --prop multiple
156
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-component.mjs AccordionContent --import themelia-react-ui/base/accordion --prop keepMounted
157
+ ```
158
+
159
+ The [editable sections recipe](../examples/editable-sections.tsx) demonstrates
160
+ multiple open panels, a validation badge inside rich trigger content and
161
+ keepMounted on each content panel. SmartAccordion supports badge nodes but does
162
+ not expose keepMounted. Use compound parts for that verified requirement.
163
+ Collapsible remains appropriate for one custom disclosure; independently framed
164
+ objects can legitimately use Card. The app owns form values, validation,
165
+ submission and opening an invalid section before focusing its field.
166
+
167
+ Keep the panel title at the subject heading role. A disclosure trigger owns its
168
+ smaller medium label; custom trigger JSX should inherit that scale rather than
169
+ introducing Card title typography. Use Text's size/type inheritance and medium
170
+ weight for a rich label. Include a text separator between label and badge
171
+ (`{' '}` or an explicitly spaced accessible name); a CSS gap alone can produce
172
+ the accessible name "Business details2 errors". Do not place another button/link inside that trigger.
173
+ Custom content is a real styling seam: a Text child with its own weight can
174
+ override the trigger's inherited type even when the outer component is correct.
175
+
176
+ Preserving a React value alone does not establish mounted DOM. Verify node
177
+ identity and draft retention after closing/reopening, multiple expansion,
178
+ keyboard operation, hidden-field focus, validation badges and submission. The
179
+ recipe does not implement a validation library or persistence.
180
+
181
+ ## Token-backed placement and drawing
182
+
183
+ The [assessment comparison recipe](../examples/custom-composition.tsx) combines a
184
+ block's label/value role, Money primitives and wrapping Stack actions. It adds
185
+ no Card, heading, inset or control skin; the host owns those. Its Tailwind grid
186
+ chooses exactly two comparison tracks at the local container breakpoint. That
187
+ breakpoint is product geometry. Prefer AdaptiveGrid when automatic equal tracks
188
+ fit; ordinary viewport Grid props are not container queries.
189
+
190
+ | Need | Use |
191
+ | --- | --- |
192
+ | Peer groups, actions, equal available-width tracks | Stack/Grid/AdaptiveGrid props |
193
+ | A subject's frame/title/body/footer | Card or the selected block's documented surface |
194
+ | App-specific tracks, container queries, alignment, min-width and overflow | Tailwind on the app-owned wrapper |
195
+ | A shared gap/inset in custom markup | Verified gap-space-*, row or surface utility for that responsibility |
196
+ | Text role, formatted value, control or focus behavior | Public typography, primitive or interactive owner |
197
+ | Related components should change together | Supported CSS roots at root/ThemeScope |
198
+
199
+ Token-backed does not mean appropriate everywhere: gap-space-xl can be correct
200
+ between fields yet padding on AccordionContent or a menu can duplicate its
201
+ owner's inset. No second local radius, focus, hover or disabled recipe is needed
202
+ around an existing control. Missing interaction behavior requires an accessible
203
+ owner or a verified additive seam, not a div styled to resemble a control.
204
+
205
+ ```sh
206
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs gap-space-xl
207
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs --space-scale
208
+ ```
209
+
210
+ Inspect exact utility spelling and overrideRoot. Derived utilities can be used
211
+ as classes; their CSS aliases are not settings to override or read inside a
212
+ scoped calc. A genuinely app-owned formula uses canonical roots and scales
213
+ exactly once. Semantic colors pair surface/foreground (card/card-foreground,
214
+ sidebar/sidebar-foreground); status uses Badge/Alert tones. The lookup does not
215
+ index semantic color values: follow its theme stylesheet/reference reads.
216
+
217
+ Shipped component CSS and app-authored utility compilation are different. Follow
218
+ [the Tailwind setup](theming.md) before adding classes: a utility in an app's
219
+ source must be generated by its Tailwind build. Package cn supports the shipped
220
+ vocabulary; app-only aliases need the app's merge configuration. Use supported
221
+ public slots/className rather than private imports, DOM descendants or copied
222
+ component recipes.
223
+
224
+ ## Commerce lines and financial summaries
225
+
226
+ Match the line's meaning before choosing its presentation. `OrderLineItem` from
227
+ `themelia-react-ui/blocks/commerce` keeps a sold product's selected options
228
+ (`variantTitle`), `sku`, `properties`, unit price, quantity and passed line total
229
+ together. Compose `SummaryPanel` with `AmountRow` beneath the goods when the
230
+ subject also needs shipping, tax or a grand total. `AmountRow` accepts an already
231
+ formatted `amount`; `total` sets emphasis and `rollup` draws the rule above the
232
+ financial grand total. The app owns calculations and the surrounding Card.
233
+
234
+ `InvoiceLineItems` from that same public import fits an invoice's description,
235
+ quantity, unit-price and line-total grid. Its concise default adapts to narrow
236
+ containers and can compute a subtotal/tax/total footer from the supplied line
237
+ totals and tax ratio. Pass `footerRows` for authoritative custom amounts. Typed
238
+ `columns` replace the default grid and narrow layout; each `width` is a CSS grid
239
+ track value, such as `minmax(0, 1fr)`, and each `cell` owns its custom content.
240
+
241
+ The [commerce lines recipe](../examples/commerce-lines.tsx) shows both choices:
242
+ `SoldProductWithSummary` keeps purchased identity and financial rows together;
243
+ `CustomServiceInvoice` uses two columns with quantity × unit price below the
244
+ service description. It uses public Text/Stack and Number/Money primitives
245
+ instead of styling InvoiceLineItems descendants. Its custom footer gives normal
246
+ Money values `weight="regular"` and the financial total `weight="bold"`.
247
+ `emphasis="total"` controls the footer label, plain-text value and top spacing;
248
+ a React-node value retains its own typography. Select the seam that fits the
249
+ record, then inspect representative narrow/wide output before changing shared
250
+ defaults or imposing the same arrangement on every invoice or order.
251
+
252
+ ## Validate the chosen seam
253
+
254
+ Check the exact public types and existing source checker, then verify the app.
255
+ Inspect narrow/wide parent widths, both themes, enlarged type and independent
256
+ spacing/density settings. Open a real menu or picker inside the scoped theme;
257
+ a themed trigger alone cannot establish portal inheritance. Exercise local
258
+ state, dismissal/focus, validation and asynchronous paths that the chosen
259
+ composition uses. Keep source, appearance and interaction evidence separate;
260
+ an advisory mapper result or a syntactically valid class list is not visual
261
+ acceptance.
@@ -0,0 +1,79 @@
1
+ # Read the data before the layout
2
+
3
+ Use before designing or redesigning a view. A layout chosen before the records
4
+ are read turns every field into an equally weighted box. Read four records
5
+ before any JSX: a typical one, the largest, an exception and an empty one. Read
6
+ records, not only the schema: a schema lists every field, while records show
7
+ which few vary, which repeat and which change what the user does.
8
+
9
+ ## What to read
10
+
11
+ | Read | Ask | It decides |
12
+ | --- | --- | --- |
13
+ | Subject and cardinality | What is the subject? How many children does a typical and a large one have: one line or forty, three variants or sixty? | List, table or grid; whether children need search, paging or a summary line |
14
+ | Ranges and outliers | What are the minimum, typical and maximum of each number? Which records sit far from typical? | Format, column width, default sort and whether an outlier earns emphasis |
15
+ | State frequency | Which states occur, how often, and which one needs action? | Which states take a tone, which collapse into "nothing outstanding", whether zero counters appear at all |
16
+ | Time | Is it a series (values at intervals) or events (things that happened)? | Series become a trend with a stated period and baseline; events become a timeline or history |
17
+ | Relationships | Which facts only make sense together: a shortage and its line, a refund and its payment, a price and its variant? | Adjacency. These stay in one subject and never split across separate cards |
18
+ | Missing, not applicable, zero | Is a value unknown, irrelevant to this record, or a real zero? | "Not set" versus `0`; a not-applicable row is omitted, not printed empty |
19
+ | Units and precision | Currency and minor units, percentage base, whole quantities | The value primitive, its precision and tabular alignment |
20
+ | Text length | Longest names, translations, identifiers | Wrapping, truncation with full text available, track widths |
21
+
22
+ ## Find the decision
23
+
24
+ Name who looks at the screen, what they decide or do next, and how often. An
25
+ operator working a queue scans many records for exceptions and acts on one. A
26
+ manager opening an overview wants to know whether things are on track and where
27
+ to look. A catalogue editor configures structure that later sales depend on. The
28
+ same records produce different views for each; write the one you are designing
29
+ for.
30
+
31
+ ## Questions per data shape
32
+
33
+ - **One figure.** Compared with what: the previous period, a target, a limit? A
34
+ figure without a baseline cannot be judged. If no honest baseline exists, say
35
+ so instead of inventing a trend.
36
+ - **A series.** Is the shape the message (a dip, a ramp, seasonality) or only
37
+ the latest value? Do the series period and the comparison period match?
38
+ - **A collection.** Which column would the user sort by first? Which rows need
39
+ attention, and how does a row show it? What identifies a row, and what lets the
40
+ user decide about it without opening it?
41
+ - **A record.** What state is it in now, what blocks it, and what is the next
42
+ action? Which facts are evidence and which drive the action?
43
+ - **A lifecycle.** Which stage is current, which are complete, and what stops
44
+ progress? Completed stages rarely need equal weight with the current one.
45
+
46
+ ## Write the data brief
47
+
48
+ Keep it to a few lines in the view spec. It is the input to every later choice,
49
+ so state facts from the records, not intentions.
50
+
51
+ ```text
52
+ Decision: <who> decides <what>, <how often>
53
+ Subject: <entity>; typical <n> children, largest <n>
54
+ Facts that matter: 1) … 2) … 3) …
55
+ Anomaly: <the record or value that breaks the pattern, and what the view must make visible>
56
+ States: show <…>; collapse <…>; omit <zero or not-applicable …>
57
+ Must stay together: <fact + fact>, <fact + command>
58
+ Unknowns: <data the records do not contain; state them, never invent them>
59
+ ```
60
+
61
+ ## Example: an order with a split shipment
62
+
63
+ An order whose line is reserved across two warehouses, with one unit short:
64
+
65
+ ```text
66
+ Decision: an operator decides what can ship now and what blocks the rest, many times a day
67
+ Subject: order; typical 2 lines, largest 6; up to 2 locations
68
+ Facts that matter: 1) units that can ship from each location now 2) the shortage and the line it affects 3) whether payment allows release
69
+ Anomaly: one line split across two locations; the split belongs on the line, not in two unrelated lists
70
+ States: show reserved, short and shipped where non-zero; omit "0 returned"; collapse fully shipped lines
71
+ Must stay together: shortage + its line + location; payment state + the release command
72
+ Unknowns: carrier tracking is not in the records
73
+ ```
74
+
75
+ That brief already rules out a facts card repeating the header, per-line counters
76
+ for every lifecycle stage, and a generic "items" table that separates goods from
77
+ their location. Owner selection then follows from
78
+ [screen decisions](screen-decisions.md) and the
79
+ [order and invoice owner map](commerce-composition.md).
@@ -68,6 +68,7 @@ These base measurements use the shipped roots; spacing scales once through
68
68
  | Independent subject regions | `2xl`, 24px | Page body, TwoColumnLayout, resource, workspace and settings subjects |
69
69
  | Page header/body separation | `3xl`, 32px | Page composition |
70
70
  | Surface header/body/footer | Surface-derived regional gap | Card or overlay anatomy, independent of peer gaps |
71
+ | Live table outer / interior cell insets | Small surface / row inline tiers, 16 / 12px | Table head, body and footer cells; row density changes only block rhythm |
71
72
 
72
73
  Generic Stack and Grid keep their existing defaults; choose their semantic gap
73
74
  for the relationship they host. A Card's regional gap derives from its surface
@@ -92,7 +93,7 @@ custom render content rather than forcing every heading onto the admin scale.
92
93
  | Collection density | Row block padding and minimum height | Inline padding, text size, surface inset or corners |
93
94
  | Item size | Legacy text/media scale, including provider fallback | Vertical row density |
94
95
  | Control size | That owner's action/field geometry | Page rhythm or surface padding |
95
- | Surface inset default/compact | Full/half surface roots | Row density |
96
+ | Surface inset default/compact | Rich surface roots / compact collection shell (24/8px defaults) | Row density |
96
97
  | Surface inset flush | Delegate padding to public regions | Remove Input padding or create a third density |
97
98
  | `--space-scale` | Shared gaps, inline insets and surface padding | Row block/control-height density |
98
99
  | `--density-scale` | Action/control heights and row block padding | Inline room or primary text hierarchy |
@@ -102,14 +103,16 @@ multiply once by `--space-scale`. Descriptions have no extra margin. These are
102
103
  copy gaps; larger section and action-cluster gaps remain on their own owners.
103
104
  The [token reference](tokens.json) records the installed defaults and vocabulary.
104
105
 
105
- Outer Card, popup and Command shells use `rounded-radius`: the shadcn root,
106
- 12px by default. Input, Button, Select/facet triggers, collection highlights,
107
- navigation rows and intentional nested bodies use the shared `rounded-inner`
108
- role, 9px by default. It derives at 0.75× and is bounded by one quarter of the
109
- smaller action/control base height, scaled by density. A larger global root
110
- therefore cannot turn short controls into capsules. See [the exact theme
111
- recipe](theming.md). Density can tighten the inner bound; it does not change
112
- outer corners. Spacing scale and padding do not select another radius tier.
106
+ Corners derive from the one shadcn root, `--radius` (12px by default). Input,
107
+ Button, Select/facet triggers, badges, collection highlights, navigation rows and
108
+ nested bodies use the default `rounded-radius`, the root itself. Card, popup and
109
+ Command shells use the larger `rounded-surface` (4/3 of the root, 16px). See [the
110
+ exact theme recipe](theming.md). Density, spacing scale and padding do not select
111
+ another radius; only small mechanics use the proportional xs/sm/md steps.
112
+
113
+ Short tooltip labels use the existing compact `rounded-radius-xs` tier
114
+ (0.4× the radius root, 4.8px by default) and an arrowless 4px anchor gap. They
115
+ remain inverse contextual labels rather than substantive popup surfaces.
113
116
 
114
117
  Use the public component defaults instead of adding radius classes to callers.
115
118
  Joined edges may reset their meeting corners. Circular indicators and avatars
@@ -35,6 +35,16 @@ they do not establish an unsupported capability. Read the suggested owner's
35
35
  choose/avoid guidance and inspect its contract before choosing. Unknown-only
36
36
  queries, API-like CamelCase names and explicit import paths do not recover.
37
37
 
38
+ An unpublished import path is resolved only from deterministic evidence: the
39
+ missing package prefix (`base/cards`), a catalogue path alias, the family's
40
+ published singular or plural spelling (`base/card` → `base/cards`, `base/charts`
41
+ → `base/chart`) or a trailing segment naming one exported component
42
+ (`features/data-table` → `DataTable` in `features/table`,
43
+ `blocks/commerce/order-header` → `OrderHeader`). The result then reports
44
+ `importResolution` with the requested path, the canonical `import`, the reason
45
+ and any named `symbol`. Use that canonical import in code. A path without such
46
+ evidence, such as `features/unknown`, still returns no owner.
47
+
38
48
  If there are no useful related owners, shorten the query to the main
39
49
  responsibility or an exact symbol, then remove the layer filter. No result does
40
50
  not prove the package lacks that responsibility. Read the selected result's choose/avoid guidance and
@@ -77,7 +87,7 @@ content; application chrome and analytics are separate responsibilities.
77
87
 
78
88
  For geometry, `radius`, `border radius`, `control corners` and `control heights` select the existing UIProvider/theme
79
89
  boundary guidance; `copy gaps` selects Structure. Their focused references explain
80
- outer/inner corner roles, corresponding sizes, inherited defaults and normal/dense
90
+ surface/default corner roles, corresponding sizes, inherited defaults and normal/dense
81
91
  copy rhythm even when no executable recipe matches the query. `page padding`
82
92
  selects Page; `card padding` selects Card. Read those owners before adding local
83
93
  gutters, reducing normal Card insets or rebuilding their headers/footers.
@@ -124,6 +134,12 @@ Read each declaration relative to the installed package root, for example `node_
124
134
 
125
135
  ## Map cooperating components
126
136
 
137
+ `expandable form sections`, `collapsible sections` and `editable sections` select
138
+ Accordion's coordinated disclosure anatomy and the retained-content recipe.
139
+ Inspect the exact compound parts when a bounded convenience wrapper lacks a
140
+ needed seam. `custom composition` routes to passive structure guidance; it does
141
+ not mean Stack replaces the semantic controls/blocks inside that composition.
142
+
127
143
  The [composition mapper](composition-mapping.md) resolves explicit role tags into
128
144
  qualified owners and an advisory region tree. Use it after decomposing a screen
129
145
  into subjects, or inspect the available roles before choosing components:
@@ -148,10 +164,18 @@ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-componen
148
164
  node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-component.mjs ThemeScope --import themelia-react-ui/ui-provider
149
165
  ```
150
166
 
167
+ Default inspection includes meaningful inherited component behavior before
168
+ native/ARIA noise. All inherited props remain available through exact --prop;
169
+ read omissions before concluding that an API is absent. For example, inspect
170
+ AccordionContent's keepMounted rather than assuming form fields must unmount.
171
+
151
172
  Use `--import` to select an exact public contract when a symbol has several
152
- owners. `--prop` requests one exact property; `--limit` bounds the initial list
173
+ owners. `--prop` requests exact properties: repeat it or separate names with
174
+ commas (`--prop title,primaryAction`); `--limit` bounds the initial list
153
175
  of props. Read reported omissions before assuming a property is absent. Unknown
154
- exports/props and ambiguous unqualified contracts fail explicitly. Aliases can
176
+ exports/props and ambiguous unqualified contracts fail explicitly. A public hook
177
+ or helper such as `useOverlayVisibility` has no component contract; the error
178
+ names the declaration file and import that hold its signature. Aliases can
155
179
  share implementation while distinct exports such as the two ThemeScope owners
156
180
  have different APIs.
157
181
 
@@ -0,0 +1,124 @@
1
+ # Token-backed domain structures
2
+
3
+ Use when a business relationship needs its own structure: an allocation ledger,
4
+ stock comparison, schedule, reconciliation or other subject whose arrangement is
5
+ more specific than a ready-made block. Start with [screen decisions](screen-decisions.md)
6
+ and the installed component discovery tools. Mostly compose public base
7
+ components, layout blocks, typography and value primitives; add semantic JSX and
8
+ Tailwind where the subject needs custom tracks, grouping or responsive behavior.
9
+ This is a normal application seam, not a fallback that requires a missing API.
10
+
11
+ ## Divide the work deliberately
12
+
13
+ | Requirement | Owner |
14
+ | --- | --- |
15
+ | Route identity, commands, gutters and page regions | Page and the chosen app layout |
16
+ | A titled/framed/transparent subject with aligned insets | Card; paint and padding are independent |
17
+ | Routine stack, wrapping actions, equal tracks or column split | Stack, Grid, AdaptiveGrid, TwoColumnLayout |
18
+ | A product-specific comparison, local container adaptation or irregular tracks | App component with semantic JSX and Tailwind on its own elements |
19
+ | Display text and formatted values | Heading, Text, Money, Number, Date and related primitives |
20
+ | Selection, commands, menus, forms and overlays | The relevant public interactive owner and its supported parts |
21
+ | Business calculations, allocation rules and accepted state | App/domain logic or authoritative backend results |
22
+
23
+ Do not recreate Input, Menu, Button, Card anatomy or keyboard behavior in custom
24
+ markup. An app-owned region can still contain these owners. Extract a component
25
+ when it gives a coherent domain contract; a new file or custom component count
26
+ does not itself improve a screen.
27
+
28
+ ## Choose classes by responsibility
29
+
30
+ Use `inspect-tokens.mjs` to verify the installed utility spelling and overrideRoot.
31
+ The following are shipped classes, not new variables:
32
+
33
+ | Intent on app-owned markup | Vocabulary |
34
+ | --- | --- |
35
+ | Close label/supporting copy | `gap-dense`, `gap-normal` or the equivalent Stack gap |
36
+ | Related values/fields | `gap-space-xl` |
37
+ | Separate subjects | `gap-space-2xl` |
38
+ | A custom surface region | `p-surface`, `px-surface`, `py-surface` when that element owns the inset |
39
+ | A custom plain row | `px-row-x`, `py-row-y` when its row inset is required |
40
+ | Layout and responsive geometry | `min-w-0`, `grid`, `grid-cols-[…]`, `@container/name`, named container queries, wrapping and overflow |
41
+ | App surface/foreground | `bg-card text-card-foreground`, `bg-background text-foreground`, `bg-sidebar text-sidebar-foreground` |
42
+ | Quiet copy / structural rule | Text type="secondary" / `border-border` |
43
+
44
+ Pick the relationship before the size. Page/Card already owning an inset means
45
+ the inner subject does not add `p-surface`. Flat Card retains md padding unless
46
+ explicitly changed; use padding="none" only under another inset owner or for an
47
+ intentional flush region. Transparent and painted peers can use the same inset
48
+ so their heading/body edges align.
49
+
50
+ Continuous sections can share one padded host and an unpadded internal Stack.
51
+ Separate padded flat Cards can accidentally add bottom inset + peer gap + top
52
+ inset; a valid token on each layer does not justify that combined distance.
53
+
54
+ Use a local container query when a subject can live in either a main column or
55
+ a narrow aside. Viewport width alone does not establish available space. An
56
+ arbitrary grid track or breakpoint can express product geometry; arbitrary
57
+ spacing, text sizes, radius or state palettes usually recreate a shared role.
58
+ Do not force essential rows into horizontal scrolling merely to retain every
59
+ desktop column. Preserve the important identity/value relationship in the
60
+ narrow composition and keep other detail accessible.
61
+
62
+ ## Customize the theme, not each control
63
+
64
+ Keep shadcn surface/foreground pairs and use component tone/status props.
65
+ Use Heading/Text props instead of typography classes on imported text owners.
66
+ Use supported sizes/insets on controls and surfaces. Do not add local hover,
67
+ focus, selected or disabled recipes to a public component.
68
+
69
+ Typography props are not interchangeable: Heading selects semantic level and
70
+ visual size with tag/size; Text has its own supported tags and weight/type
71
+ contract. Inspect the exact export instead of assuming that a prop supported by
72
+ one typography owner exists on another.
73
+
74
+ Custom table cells retain those primitives' alignment and flow. Match the column
75
+ header and every line of the cell deliberately: a right-aligned Money above
76
+ left-aligned cost copy under a left-aligned header creates three conflicting
77
+ axes. Preserve the table's chosen alignment or use its supported column seam;
78
+ do not assume the surrounding cell overrides a child primitive's own default.
79
+ Keep primary prices/SKUs readable and move secondary detail to its inspection
80
+ subject when it prevents useful comparison.
81
+
82
+ Canonical roots are the settings: `--space-scale` changes shared gaps/insets;
83
+ `--density-scale` changes action/control/row geometry; `--surface-x` and
84
+ `--surface-y` own surface room. They have different responsibilities. A smaller
85
+ mobile viewport does not automatically justify globally shrinking all of them.
86
+ First repair duplicated insets, wrong group spacing and low-priority content.
87
+ When the product needs a shared responsive spacing policy, set the appropriate
88
+ existing root at its app/theme boundary in CSS and review affected siblings.
89
+ Preserve usable controls and copy; avoid component-specific token copies.
90
+
91
+ Use derived utilities as classes. Never override or read derived `--spacing-*`,
92
+ `--radius-*` or `--container-*` aliases inside a scoped formula: they resolve at
93
+ the root. If custom drawing needs a formula, derive from the canonical roots
94
+ and apply each scale once. ThemeScope handles scoped/portaled theme inheritance;
95
+ do not copy computed variables through JavaScript.
96
+
97
+ ## Executable example
98
+
99
+ The [allocation subject](../examples/token-domain-structure.tsx) combines public
100
+ Card/Stack/Text/value owners with an app-owned definition grid. It compares
101
+ reserved quantities across locations, a relationship no block represents. Goods
102
+ that share one fulfillment status and ship-from location, with the commands that
103
+ move them on, are a `FulfillmentGroup` instead; see the
104
+ [order and invoice map](commerce-composition.md). Warehouse groups
105
+ and unavailable quantities stay near their goods. The custom grid changes at
106
+ its own container width; no control or surface recipe is replaced. The caller
107
+ supplies accepted quantities and optional public actions; the example does not
108
+ invent inventory allocation or fulfillment policy.
109
+
110
+ The [assessment comparison](../examples/custom-composition.tsx) is a smaller
111
+ example, and [commerce lines](../examples/commerce-lines.tsx) demonstrates a
112
+ block's typed content seam. Run these through the consumer checker after
113
+ adapting them. Ensure the app compiles its own Tailwind utilities as described in
114
+ [theming](theming.md); shipped component CSS does not compile app-authored classes.
115
+
116
+ ## Inspect the result
117
+
118
+ Review actual hierarchy, peer content edges, spacing and wrapping in narrow/wide
119
+ parents, light/dark themes and independently changed spacing/density. Inspect
120
+ the image; zero overflow is not enough. Open a menu/editor in the active scope,
121
+ then verify keyboard/focus, invalid/disabled and accepted/error states. If a
122
+ supported public composition still drifts, report the exact owner and a minimal
123
+ reproduction so the shared component is repaired instead of patched with local
124
+ CSS. See [review](review.md) for separate source, appearance and interaction proof.