themelia-react-ui 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (488) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +59 -13
  3. package/dist/{accordion-B-5Focs8.js → accordion-BRTcsp8J.js} +8 -8
  4. package/dist/accordion-BRTcsp8J.js.map +1 -0
  5. package/dist/{action-menu-Cx3SdfbN.js → action-menu-Drxw_vJk.js} +36 -36
  6. package/dist/action-menu-Drxw_vJk.js.map +1 -0
  7. package/dist/affordance-geometry.generated-CL84ZN9A.js +63 -0
  8. package/dist/affordance-geometry.generated-CL84ZN9A.js.map +1 -0
  9. package/dist/{ai-artifact-B5tPpXnS.js → ai-artifact-DLVdK0Py.js} +151 -155
  10. package/dist/ai-artifact-DLVdK0Py.js.map +1 -0
  11. package/dist/{app-shell-at8Kt4l_.js → app-shell-C_fKpljx.js} +11 -10
  12. package/dist/app-shell-C_fKpljx.js.map +1 -0
  13. package/dist/{attachment-BO2R47wn.js → attachment-DbjUWsP0.js} +12 -12
  14. package/dist/{attachment-BO2R47wn.js.map → attachment-DbjUWsP0.js.map} +1 -1
  15. package/dist/auth-CAQcasMV.js +723 -0
  16. package/dist/auth-CAQcasMV.js.map +1 -0
  17. package/dist/{avatar-Bpzty83c.js → avatar-Bu2HhitA.js} +6 -6
  18. package/dist/{avatar-Bpzty83c.js.map → avatar-Bu2HhitA.js.map} +1 -1
  19. package/dist/{badge-BZXZT9wd.js → badge-CzId1Wlm.js} +4 -4
  20. package/dist/{badge-BZXZT9wd.js.map → badge-CzId1Wlm.js.map} +1 -1
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/buttons.js +3 -2
  27. package/dist/base/cards.js +3 -3
  28. package/dist/base/carousel.js +25 -27
  29. package/dist/base/carousel.js.map +1 -1
  30. package/dist/base/cascader.js +150 -148
  31. package/dist/base/cascader.js.map +1 -1
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +1 -1
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +3 -3
  39. package/dist/base/display.js +7 -7
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +40 -43
  44. package/dist/base/inline-edit.js.map +1 -1
  45. package/dist/base/item.js +1 -1
  46. package/dist/base/media-gallery.js +1 -1
  47. package/dist/base/navigation.js +6 -6
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +1 -1
  51. package/dist/base/repeaters.js +33 -33
  52. package/dist/base/repeaters.js.map +1 -1
  53. package/dist/base/sheet.js +1 -1
  54. package/dist/base/sidebar.js +1 -1
  55. package/dist/base/signature-pad.js +83 -81
  56. package/dist/base/signature-pad.js.map +1 -1
  57. package/dist/base/skeleton.js +1 -1
  58. package/dist/base/spinner.js +1 -1
  59. package/dist/base/structure.js +1 -1
  60. package/dist/base/table.js +1 -1
  61. package/dist/base/text-inputs.js +2 -2
  62. package/dist/base/toaster.js +6 -6
  63. package/dist/base/toaster.js.map +1 -1
  64. package/dist/base/tree.js +1 -1
  65. package/dist/base/upload-queue.js +1 -1
  66. package/dist/base/upload.js +3 -3
  67. package/dist/base/value-inputs.js +1 -1
  68. package/dist/blocks/admin.js +134 -134
  69. package/dist/blocks/admin.js.map +1 -1
  70. package/dist/blocks/ai.js +120 -117
  71. package/dist/blocks/ai.js.map +1 -1
  72. package/dist/blocks/analytics/usage-card.js +1 -1
  73. package/dist/blocks/analytics.js +510 -472
  74. package/dist/blocks/analytics.js.map +1 -1
  75. package/dist/blocks/collaboration.js +2 -2
  76. package/dist/blocks/commerce/receipt.js +1 -1
  77. package/dist/blocks/commerce.js +395 -383
  78. package/dist/blocks/commerce.js.map +1 -1
  79. package/dist/blocks/data-display.js +1 -1
  80. package/dist/blocks/onboarding.js +6 -6
  81. package/dist/blocks/onboarding.js.map +1 -1
  82. package/dist/blocks/planning.js +36 -36
  83. package/dist/blocks/planning.js.map +1 -1
  84. package/dist/blocks/timelines.js +1 -1
  85. package/dist/{breadcrumbs-DdQ_I5ra.js → breadcrumbs-BuYz5SDU.js} +9 -8
  86. package/dist/breadcrumbs-BuYz5SDU.js.map +1 -0
  87. package/dist/button-BZDasD04.js +651 -0
  88. package/dist/button-BZDasD04.js.map +1 -0
  89. package/dist/{button-BS6l5JUw.js → button-BZyfTvwm.js} +3 -3
  90. package/dist/button-BZyfTvwm.js.map +1 -0
  91. package/dist/buttons-D_6KJvEE.js +99 -0
  92. package/dist/buttons-D_6KJvEE.js.map +1 -0
  93. package/dist/{cards-Cum56XOF.js → cards-qGSErLw_.js} +12 -12
  94. package/dist/{cards-Cum56XOF.js.map → cards-qGSErLw_.js.map} +1 -1
  95. package/dist/chart-Bsc5BICK.js +150 -0
  96. package/dist/chart-Bsc5BICK.js.map +1 -0
  97. package/dist/{checkbox-BavDRjF7.js → checkbox-BQNDjUCh.js} +3 -3
  98. package/dist/checkbox-BQNDjUCh.js.map +1 -0
  99. package/dist/choice-inputs-Mk3iWbhr.js +725 -0
  100. package/dist/choice-inputs-Mk3iWbhr.js.map +1 -0
  101. package/dist/{code-block-xHKbAJDj.js → code-block-DzHKRybS.js} +23 -23
  102. package/dist/code-block-DzHKRybS.js.map +1 -0
  103. package/dist/{collapsible-DsnktFNv.js → collapsible-ClvC7Bj3.js} +3 -3
  104. package/dist/{collapsible-DsnktFNv.js.map → collapsible-ClvC7Bj3.js.map} +1 -1
  105. package/dist/{collection-content-C4fthJV_.js → collection-content-D6S8cv_n.js} +3 -3
  106. package/dist/{collection-content-C4fthJV_.js.map → collection-content-D6S8cv_n.js.map} +1 -1
  107. package/dist/{combobox-DEbdr-3u.js → combobox-BFnbJJp3.js} +18 -18
  108. package/dist/combobox-BFnbJJp3.js.map +1 -0
  109. package/dist/{combobox-xv3yJbzl.js → combobox-hozNwUcc.js} +313 -316
  110. package/dist/combobox-hozNwUcc.js.map +1 -0
  111. package/dist/{command-C0xe7u9B.js → command-BnmSchli.js} +9 -9
  112. package/dist/command-BnmSchli.js.map +1 -0
  113. package/dist/comments-u5L0OGip.js +1156 -0
  114. package/dist/comments-u5L0OGip.js.map +1 -0
  115. package/dist/components/base/buttons/button-group.recipes.d.ts +1 -1
  116. package/dist/components/base/buttons/button.recipes.d.ts +10 -19
  117. package/dist/components/base/buttons/use-pending-button-focus.d.ts +3 -0
  118. package/dist/components/base/cards/card.recipes.d.ts +13 -5
  119. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -4
  120. package/dist/components/base/cards/smart-card.types.d.ts +1 -1
  121. package/dist/components/base/date-pickers/date-picker.recipes.d.ts +5 -18
  122. package/dist/components/base/date-pickers/datepicker.types.d.ts +3 -0
  123. package/dist/components/base/forms/form-field.d.ts +1 -0
  124. package/dist/components/base/forms/form-sizing.d.ts +3 -3
  125. package/dist/components/base/navigation/tabs.d.ts +3 -5
  126. package/dist/components/base/popover/popover.recipes.d.ts +3 -3
  127. package/dist/components/base/table/index.d.ts +1 -1
  128. package/dist/components/base/text-inputs/clear-native-field.d.ts +2 -0
  129. package/dist/components/base/text-inputs/input-trailing-action.d.ts +3 -0
  130. package/dist/components/blocks/analytics/types.d.ts +1 -1
  131. package/dist/components/blocks/collaboration/message/message.recipes.d.ts +12 -0
  132. package/dist/components/blocks/data-display/empty-state/partials/illustrations/document-stack.d.ts +1 -4
  133. package/dist/components/blocks/data-display/empty-state/partials/illustrations/inbox-clean.d.ts +1 -4
  134. package/dist/components/blocks/data-display/empty-state/partials/illustrations/index.d.ts +3 -3
  135. package/dist/components/blocks/data-display/empty-state/partials/illustrations/stacked-cards.d.ts +1 -6
  136. package/dist/components/features/combobox/components/error-message.d.ts +1 -1
  137. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -0
  138. package/dist/components/features/filters/facets/search-facet.d.ts +0 -12
  139. package/dist/components/features/filters/facets/tags-facet.d.ts +1 -1
  140. package/dist/components/features/media-library/media-library.d.ts +1 -1
  141. package/dist/components/features/media-library/media-library.types.d.ts +9 -1
  142. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  143. package/dist/components/features/overlays/hooks/use-pending-overlay-focus.d.ts +2 -0
  144. package/dist/components/features/overlays/overlays.types.d.ts +5 -4
  145. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +2 -1
  146. package/dist/components/features/table/data-table.d.ts +1 -1
  147. package/dist/components/features/table/table.types.d.ts +1 -1
  148. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +3 -1
  149. package/dist/components/layout/auth/auth.types.d.ts +1 -0
  150. package/dist/components/layout/page/page.d.ts +0 -1
  151. package/dist/components/layout/page/page.types.d.ts +9 -3
  152. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -1
  153. package/dist/components/layout/sidebar/sidebar.types.d.ts +4 -0
  154. package/dist/components/layout/workspace/workspace.types.d.ts +3 -0
  155. package/dist/components/typography/heading.d.ts +5 -2
  156. package/dist/components/typography/index.d.ts +1 -1
  157. package/dist/components/typography/text.styles.d.ts +10 -0
  158. package/dist/components/ui/popover.d.ts +1 -1
  159. package/dist/components/ui/sidebar.d.ts +1 -1
  160. package/dist/components/ui/table.d.ts +2 -1
  161. package/dist/container.recipes-D9t8MHR3.js +27 -0
  162. package/dist/container.recipes-D9t8MHR3.js.map +1 -0
  163. package/dist/{containers-6s-ucRQQ.js → containers-DqB-bSYE.js} +33 -56
  164. package/dist/containers-DqB-bSYE.js.map +1 -0
  165. package/dist/control-group-recipes-DBXmfh2E.js +21 -0
  166. package/dist/control-group-recipes-DBXmfh2E.js.map +1 -0
  167. package/dist/{copyable-B7SBXJMr.js → copyable-BTSByfmq.js} +6 -6
  168. package/dist/{copyable-B7SBXJMr.js.map → copyable-BTSByfmq.js.map} +1 -1
  169. package/dist/{data-display-cWIRdeaf.js → data-display-Bihs9Ven.js} +545 -332
  170. package/dist/data-display-Bihs9Ven.js.map +1 -0
  171. package/dist/{date-BFNMnrS5.js → date-DOKhJPu7.js} +4 -4
  172. package/dist/{date-BFNMnrS5.js.map → date-DOKhJPu7.js.map} +1 -1
  173. package/dist/{date-picker-CA6ogMQB.js → date-picker-DzP5HQq7.js} +492 -472
  174. package/dist/date-picker-DzP5HQq7.js.map +1 -0
  175. package/dist/date-pickers-BpgGz7S-.js +196 -0
  176. package/dist/date-pickers-BpgGz7S-.js.map +1 -0
  177. package/dist/{display-CFM5myut.js → display-CS6Hbk18.js} +8 -8
  178. package/dist/{display-CFM5myut.js.map → display-CS6Hbk18.js.map} +1 -1
  179. package/dist/{dropdown-menu-BlnyHr-9.js → dropdown-menu-D-boNgGO.js} +7 -7
  180. package/dist/{dropdown-menu-BlnyHr-9.js.map → dropdown-menu-D-boNgGO.js.map} +1 -1
  181. package/dist/features/activities.js +152 -141
  182. package/dist/features/activities.js.map +1 -1
  183. package/dist/features/ai-chat.js +182 -179
  184. package/dist/features/ai-chat.js.map +1 -1
  185. package/dist/features/async-preview.js +9 -9
  186. package/dist/features/async-preview.js.map +1 -1
  187. package/dist/features/combobox.js +1 -1
  188. package/dist/features/comments.js +1 -1
  189. package/dist/features/data-view.js +25 -23
  190. package/dist/features/data-view.js.map +1 -1
  191. package/dist/features/email-composer/engine.js +1 -1
  192. package/dist/features/email-composer.js +103 -104
  193. package/dist/features/email-composer.js.map +1 -1
  194. package/dist/features/event-calendar.js +375 -373
  195. package/dist/features/event-calendar.js.map +1 -1
  196. package/dist/features/filters.js +1 -1
  197. package/dist/features/global-search.js +222 -224
  198. package/dist/features/global-search.js.map +1 -1
  199. package/dist/features/kanban.js +29 -29
  200. package/dist/features/kanban.js.map +1 -1
  201. package/dist/features/map.js +59 -58
  202. package/dist/features/map.js.map +1 -1
  203. package/dist/features/media-library.js +856 -855
  204. package/dist/features/media-library.js.map +1 -1
  205. package/dist/features/mentions.js +1 -1
  206. package/dist/features/overlays.js +1 -1
  207. package/dist/features/products.js +1209 -1209
  208. package/dist/features/products.js.map +1 -1
  209. package/dist/features/questionnaire.js +52 -52
  210. package/dist/features/questionnaire.js.map +1 -1
  211. package/dist/features/resource-assignment.js +29 -31
  212. package/dist/features/resource-assignment.js.map +1 -1
  213. package/dist/features/resource.js +13 -13
  214. package/dist/features/resource.js.map +1 -1
  215. package/dist/features/rich-text-editor.js +2 -2
  216. package/dist/features/schema-form.js +82 -82
  217. package/dist/features/schema-form.js.map +1 -1
  218. package/dist/features/suggestions.js +3 -3
  219. package/dist/features/sync.js +4 -4
  220. package/dist/features/sync.js.map +1 -1
  221. package/dist/features/table.js +1 -1
  222. package/dist/features/theme-tweaker.js +456 -450
  223. package/dist/features/theme-tweaker.js.map +1 -1
  224. package/dist/{feedback-DWUkgEjR.js → feedback-CJkUAapr.js} +29 -29
  225. package/dist/feedback-CJkUAapr.js.map +1 -0
  226. package/dist/field-affordance-recipes-uKY4MsZ_.js +25 -0
  227. package/dist/field-affordance-recipes-uKY4MsZ_.js.map +1 -0
  228. package/dist/{field-state-recipes-CBTRt9Bt.js → field-state-recipes-DQQpiLWC.js} +3 -3
  229. package/dist/field-state-recipes-DQQpiLWC.js.map +1 -0
  230. package/dist/{filters-BhsUtsxW.js → filters-D6FF8L6s.js} +715 -720
  231. package/dist/filters-D6FF8L6s.js.map +1 -0
  232. package/dist/{form-field-Bn7ZH1rA.js → form-field-CZwrkP7m.js} +17 -9
  233. package/dist/form-field-CZwrkP7m.js.map +1 -0
  234. package/dist/{form-sizing-BWs70_a2.js → form-sizing-QP8aIRaW.js} +8 -5
  235. package/dist/form-sizing-QP8aIRaW.js.map +1 -0
  236. package/dist/{forms-B7pzS25o.js → forms-B5NCbkSC.js} +35 -35
  237. package/dist/{forms-B7pzS25o.js.map → forms-B5NCbkSC.js.map} +1 -1
  238. package/dist/forms-numeric-Crrm80Lm.js +867 -0
  239. package/dist/forms-numeric-Crrm80Lm.js.map +1 -0
  240. package/dist/{header-C59QZyxV.js → header-kxruN3RM.js} +53 -49
  241. package/dist/header-kxruN3RM.js.map +1 -0
  242. package/dist/{hooks-CM1Vp9Pe.js → hooks-BrlnCwQd.js} +2 -2
  243. package/dist/{hooks-CM1Vp9Pe.js.map → hooks-BrlnCwQd.js.map} +1 -1
  244. package/dist/{http-CLTVJc5I.js → http-CdEIHyQf.js} +2 -2
  245. package/dist/http-CdEIHyQf.js.map +1 -0
  246. package/dist/{icon-badge-Dv0RYQwj.js → icon-badge-Btc6pQrp.js} +4 -4
  247. package/dist/{icon-badge-Dv0RYQwj.js.map → icon-badge-Btc6pQrp.js.map} +1 -1
  248. package/dist/index.js +2 -2
  249. package/dist/input-SX9V0AL3.js +255 -0
  250. package/dist/input-SX9V0AL3.js.map +1 -0
  251. package/dist/input-vxcaNCYC.js +20 -0
  252. package/dist/input-vxcaNCYC.js.map +1 -0
  253. package/dist/{item-pJ0GsOiJ.js → item-DE4YnuJx.js} +18 -17
  254. package/dist/item-DE4YnuJx.js.map +1 -0
  255. package/dist/layout/app-shell.js +1 -1
  256. package/dist/layout/auth.js +1 -1
  257. package/dist/layout/containers.js +1 -1
  258. package/dist/layout/header.js +1 -1
  259. package/dist/layout/hooks.js +1 -1
  260. package/dist/layout/navigation.js +1 -1
  261. package/dist/layout/page.js +1 -1
  262. package/dist/layout/settings.js +1 -1
  263. package/dist/layout/sidebar.js +2 -2
  264. package/dist/layout/workspace.js +1 -1
  265. package/dist/layout.js +10 -10
  266. package/dist/lib/affordance-geometry.generated.d.ts +40 -9
  267. package/dist/lib/control-group-recipes.d.ts +22 -0
  268. package/dist/lib/field-affordance-recipes.d.ts +35 -2
  269. package/dist/lib/field-state-recipes.d.ts +2 -2
  270. package/dist/lib/navigation-row-recipes.d.ts +3 -2
  271. package/dist/lib/overlay-anatomy-recipes.d.ts +1 -1
  272. package/dist/lib/surface-recipes.d.ts +5 -2
  273. package/dist/lib/token-merge.generated.d.ts +144 -2
  274. package/dist/lib/ui-provider/types.d.ts +4 -2
  275. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  276. package/dist/lib/utils.js +1 -1
  277. package/dist/{media-gallery-DhDRgnVZ.js → media-gallery-DLp3HAz0.js} +75 -74
  278. package/dist/media-gallery-DLp3HAz0.js.map +1 -0
  279. package/dist/{mentions-B8Ko-fhS.js → mentions-Cl0Kt_Pd.js} +52 -50
  280. package/dist/{mentions-B8Ko-fhS.js.map → mentions-Cl0Kt_Pd.js.map} +1 -1
  281. package/dist/message-SZUNB1eX.js +127 -0
  282. package/dist/message-SZUNB1eX.js.map +1 -0
  283. package/dist/{navigation-DBEu4POU.js → navigation-DnQSNMT0.js} +64 -55
  284. package/dist/navigation-DnQSNMT0.js.map +1 -0
  285. package/dist/{navigation-BUIn2Qxx.js → navigation-DyytsLRB.js} +37 -37
  286. package/dist/navigation-DyytsLRB.js.map +1 -0
  287. package/dist/{navigation-row-recipes-GVh11KiT.js → navigation-row-recipes-DQEXQcqY.js} +3 -3
  288. package/dist/navigation-row-recipes-DQEXQcqY.js.map +1 -0
  289. package/dist/{number-BNT_BIzJ.js → number-DasMFWEG.js} +4 -4
  290. package/dist/{number-BNT_BIzJ.js.map → number-DasMFWEG.js.map} +1 -1
  291. package/dist/overlays-DUbs1KEi.js +1011 -0
  292. package/dist/overlays-DUbs1KEi.js.map +1 -0
  293. package/dist/{page-BV6ioQg3.js → page-hGmT4nWK.js} +75 -64
  294. package/dist/page-hGmT4nWK.js.map +1 -0
  295. package/dist/{page-header-DQRa0jug.js → page-header-D8nERkn5.js} +9 -9
  296. package/dist/page-header-D8nERkn5.js.map +1 -0
  297. package/dist/{pagination-C29vvt3I.js → pagination-NLGqRirf.js} +20 -20
  298. package/dist/pagination-NLGqRirf.js.map +1 -0
  299. package/dist/{popover-CoLDEg19.js → popover-CghIYdQf.js} +23 -22
  300. package/dist/popover-CghIYdQf.js.map +1 -0
  301. package/dist/{popover-menu-GLIQTJTx.js → popover-menu-B4PoWhRl.js} +6 -6
  302. package/dist/{popover-menu-GLIQTJTx.js.map → popover-menu-B4PoWhRl.js.map} +1 -1
  303. package/dist/{popover.recipes-zgBhMlUu.js → popover.recipes-QlD4JenO.js} +5 -5
  304. package/dist/popover.recipes-QlD4JenO.js.map +1 -0
  305. package/dist/{primitives-DKPOGVpj.js → primitives-C7ff0QaI.js} +120 -113
  306. package/dist/primitives-C7ff0QaI.js.map +1 -0
  307. package/dist/primitives.js +3 -3
  308. package/dist/{progress-BOe8l_FZ.js → progress-BroqrAyV.js} +10 -9
  309. package/dist/progress-BroqrAyV.js.map +1 -0
  310. package/dist/{receipt-BM8xsGFy.js → receipt-BuJynLgf.js} +8 -8
  311. package/dist/{receipt-BM8xsGFy.js.map → receipt-BuJynLgf.js.map} +1 -1
  312. package/dist/{rich-text-B7sBAdDG.js → rich-text-DlxDOtf4.js} +4 -4
  313. package/dist/{rich-text-B7sBAdDG.js.map → rich-text-DlxDOtf4.js.map} +1 -1
  314. package/dist/rich-text-editor-BKyG7rWz.js +574 -0
  315. package/dist/rich-text-editor-BKyG7rWz.js.map +1 -0
  316. package/dist/{rich-text-editor.recipes-DxvOE0Lp.js → rich-text-editor.recipes-B72Nfuze.js} +35 -26
  317. package/dist/rich-text-editor.recipes-B72Nfuze.js.map +1 -0
  318. package/dist/{scroll-area-BheMQ270.js → scroll-area-D-pIhEKl.js} +3 -3
  319. package/dist/scroll-area-D-pIhEKl.js.map +1 -0
  320. package/dist/{separator-Gk_WXH-l.js → separator-BNIgG3au.js} +3 -3
  321. package/dist/{separator-Gk_WXH-l.js.map → separator-BNIgG3au.js.map} +1 -1
  322. package/dist/{separator-DO0EbCEm.js → separator-BhtFyo4x.js} +2 -2
  323. package/dist/{separator-DO0EbCEm.js.map → separator-BhtFyo4x.js.map} +1 -1
  324. package/dist/services/actions.js +1 -1
  325. package/dist/{settings-BnCyyPOJ.js → settings-DOTOzeZ2.js} +10 -9
  326. package/dist/{settings-BnCyyPOJ.js.map → settings-DOTOzeZ2.js.map} +1 -1
  327. package/dist/{sheet-B-q914Ad.js → sheet-BFhrNehm.js} +11 -11
  328. package/dist/sheet-BFhrNehm.js.map +1 -0
  329. package/dist/{sidebar-DPR7fmqN.js → sidebar-CyR4XKwR.js} +219 -200
  330. package/dist/sidebar-CyR4XKwR.js.map +1 -0
  331. package/dist/{sidebar-C_2p3Tfj.js → sidebar-SvGJ0Zwi.js} +63 -58
  332. package/dist/sidebar-SvGJ0Zwi.js.map +1 -0
  333. package/dist/{skeleton-CmT1ppqb.js → skeleton-3F0uhYn3.js} +4 -4
  334. package/dist/{skeleton-CmT1ppqb.js.map → skeleton-3F0uhYn3.js.map} +1 -1
  335. package/dist/{smart-card-CYLn46e6.js → smart-card-DjGVV2xr.js} +171 -165
  336. package/dist/smart-card-DjGVV2xr.js.map +1 -0
  337. package/dist/{spinner-BY9HbUEh.js → spinner-Cpf7oRkF.js} +5 -5
  338. package/dist/{spinner-BY9HbUEh.js.map → spinner-Cpf7oRkF.js.map} +1 -1
  339. package/dist/{structure-MvKVq-oL.js → structure-CRdqVawd.js} +2 -2
  340. package/dist/{structure-MvKVq-oL.js.map → structure-CRdqVawd.js.map} +1 -1
  341. package/dist/style.css +1 -1
  342. package/dist/{surface-recipes-CQfRr-VL.js → surface-recipes-Dd__PD-w.js} +4 -3
  343. package/dist/surface-recipes-Dd__PD-w.js.map +1 -0
  344. package/dist/{table-DnlAJ-xR.js → table-CLtJTxoR.js} +17 -16
  345. package/dist/table-CLtJTxoR.js.map +1 -0
  346. package/dist/table-CcRDZiLP.js +1444 -0
  347. package/dist/table-CcRDZiLP.js.map +1 -0
  348. package/dist/tabs-BNgu7g0u.js +188 -0
  349. package/dist/tabs-BNgu7g0u.js.map +1 -0
  350. package/dist/text-inputs-DsR56TR-.js +330 -0
  351. package/dist/text-inputs-DsR56TR-.js.map +1 -0
  352. package/dist/{text.styles-BwB7vAF2.js → text.styles-Q4sGAIgA.js} +18 -10
  353. package/dist/text.styles-Q4sGAIgA.js.map +1 -0
  354. package/dist/theme.css +77 -115
  355. package/dist/{timelines-B9ICkQcV.js → timelines-D1pkt3se.js} +84 -78
  356. package/dist/timelines-D1pkt3se.js.map +1 -0
  357. package/dist/{tree-BdWSaoFT.js → tree-BtmYyMZV.js} +8 -8
  358. package/dist/{tree-BdWSaoFT.js.map → tree-BtmYyMZV.js.map} +1 -1
  359. package/dist/typography/rich-text.js +1 -1
  360. package/dist/typography-BxQgiZyw.js +96 -0
  361. package/dist/typography-BxQgiZyw.js.map +1 -0
  362. package/dist/typography.js +1 -1
  363. package/dist/{ui-provider-CftIB6TY.js → ui-provider-DRPn3qNl.js} +3 -2
  364. package/dist/ui-provider-DRPn3qNl.js.map +1 -0
  365. package/dist/ui-provider.js +1 -1
  366. package/dist/{upload-D8Za5x_c.js → upload-CDbYw1WN.js} +326 -323
  367. package/dist/upload-CDbYw1WN.js.map +1 -0
  368. package/dist/{upload-queue-hIIYBLS7.js → upload-queue-CNd_hH_a.js} +25 -25
  369. package/dist/upload-queue-CNd_hH_a.js.map +1 -0
  370. package/dist/{usage-card-DnmnJ58D.js → usage-card-VyJLUwRr.js} +53 -54
  371. package/dist/usage-card-VyJLUwRr.js.map +1 -0
  372. package/dist/utils-BvH9PSmq.js +4275 -0
  373. package/dist/utils-BvH9PSmq.js.map +1 -0
  374. package/dist/value-inputs-D0KCrfVC.js +840 -0
  375. package/dist/value-inputs-D0KCrfVC.js.map +1 -0
  376. package/dist/{workspace-C1PZmk8L.js → workspace-CcR8r-Nt.js} +115 -122
  377. package/dist/workspace-CcR8r-Nt.js.map +1 -0
  378. package/docs/consumer-skill/SKILL.md +110 -119
  379. package/docs/consumer-skill/examples/analytics.tsx +34 -0
  380. package/docs/consumer-skill/examples/app-layout.tsx +42 -12
  381. package/docs/consumer-skill/examples/detail.tsx +20 -4
  382. package/docs/consumer-skill/examples/manifest.json +13 -1
  383. package/docs/consumer-skill/examples/website.tsx +56 -0
  384. package/docs/consumer-skill/references/analytics.md +70 -0
  385. package/docs/consumer-skill/references/composition.md +116 -2
  386. package/docs/consumer-skill/references/design-contract.md +33 -7
  387. package/docs/consumer-skill/references/discovery.md +76 -5
  388. package/docs/consumer-skill/references/integration.md +14 -0
  389. package/docs/consumer-skill/references/public-api.json +2023 -218
  390. package/docs/consumer-skill/references/review.md +55 -3
  391. package/docs/consumer-skill/references/theming.md +52 -7
  392. package/docs/consumer-skill/references/tokens.json +177 -9
  393. package/docs/consumer-skill/references/workflows.md +32 -0
  394. package/docs/consumer-skill/scripts/check-composition.mjs +1 -1
  395. package/docs/consumer-skill/scripts/composition-policy.mjs +179 -17
  396. package/docs/consumer-skill/scripts/discovery.mjs +61 -9
  397. package/docs/consumer-skill/scripts/surface-policy.mjs +44 -0
  398. package/package.json +7 -4
  399. package/dist/accordion-B-5Focs8.js.map +0 -1
  400. package/dist/action-menu-Cx3SdfbN.js.map +0 -1
  401. package/dist/affordance-geometry.generated-D8Jcfb0G.js +0 -32
  402. package/dist/affordance-geometry.generated-D8Jcfb0G.js.map +0 -1
  403. package/dist/ai-artifact-B5tPpXnS.js.map +0 -1
  404. package/dist/app-shell-at8Kt4l_.js.map +0 -1
  405. package/dist/auth-OFwWSAap.js +0 -704
  406. package/dist/auth-OFwWSAap.js.map +0 -1
  407. package/dist/breadcrumbs-DdQ_I5ra.js.map +0 -1
  408. package/dist/button-BS6l5JUw.js.map +0 -1
  409. package/dist/buttons-Co6GavvM.js +0 -674
  410. package/dist/buttons-Co6GavvM.js.map +0 -1
  411. package/dist/chart-DVfcwQu6.js +0 -149
  412. package/dist/chart-DVfcwQu6.js.map +0 -1
  413. package/dist/checkbox-BavDRjF7.js.map +0 -1
  414. package/dist/choice-inputs-CC7XqPQO.js +0 -619
  415. package/dist/choice-inputs-CC7XqPQO.js.map +0 -1
  416. package/dist/code-block-xHKbAJDj.js.map +0 -1
  417. package/dist/combobox-DEbdr-3u.js.map +0 -1
  418. package/dist/combobox-xv3yJbzl.js.map +0 -1
  419. package/dist/command-C0xe7u9B.js.map +0 -1
  420. package/dist/comments-DviPLnwy.js +0 -1132
  421. package/dist/comments-DviPLnwy.js.map +0 -1
  422. package/dist/containers-6s-ucRQQ.js.map +0 -1
  423. package/dist/data-display-cWIRdeaf.js.map +0 -1
  424. package/dist/date-picker-CA6ogMQB.js.map +0 -1
  425. package/dist/date-pickers-BPIKLdsD.js +0 -224
  426. package/dist/date-pickers-BPIKLdsD.js.map +0 -1
  427. package/dist/feedback-DWUkgEjR.js.map +0 -1
  428. package/dist/field-affordance-recipes-IjzPrCTw.js +0 -17
  429. package/dist/field-affordance-recipes-IjzPrCTw.js.map +0 -1
  430. package/dist/field-state-recipes-CBTRt9Bt.js.map +0 -1
  431. package/dist/filters-BhsUtsxW.js.map +0 -1
  432. package/dist/form-field-Bn7ZH1rA.js.map +0 -1
  433. package/dist/form-sizing-BWs70_a2.js.map +0 -1
  434. package/dist/forms-numeric-BUBxELBv.js +0 -867
  435. package/dist/forms-numeric-BUBxELBv.js.map +0 -1
  436. package/dist/header-C59QZyxV.js.map +0 -1
  437. package/dist/http-CLTVJc5I.js.map +0 -1
  438. package/dist/input-WwYQZJzG.js +0 -202
  439. package/dist/input-WwYQZJzG.js.map +0 -1
  440. package/dist/input-ci9fIgFH.js +0 -20
  441. package/dist/input-ci9fIgFH.js.map +0 -1
  442. package/dist/item-pJ0GsOiJ.js.map +0 -1
  443. package/dist/media-gallery-DhDRgnVZ.js.map +0 -1
  444. package/dist/message-COsdEvXT.js +0 -108
  445. package/dist/message-COsdEvXT.js.map +0 -1
  446. package/dist/navigation-BUIn2Qxx.js.map +0 -1
  447. package/dist/navigation-DBEu4POU.js.map +0 -1
  448. package/dist/navigation-row-recipes-GVh11KiT.js.map +0 -1
  449. package/dist/overlays-B11wZka6.js +0 -982
  450. package/dist/overlays-B11wZka6.js.map +0 -1
  451. package/dist/page-BV6ioQg3.js.map +0 -1
  452. package/dist/page-header-DQRa0jug.js.map +0 -1
  453. package/dist/pagination-C29vvt3I.js.map +0 -1
  454. package/dist/popover-CoLDEg19.js.map +0 -1
  455. package/dist/popover.recipes-zgBhMlUu.js.map +0 -1
  456. package/dist/primitives-DKPOGVpj.js.map +0 -1
  457. package/dist/progress-BOe8l_FZ.js.map +0 -1
  458. package/dist/rich-text-editor-CoVrTiSv.js +0 -575
  459. package/dist/rich-text-editor-CoVrTiSv.js.map +0 -1
  460. package/dist/rich-text-editor.recipes-DxvOE0Lp.js.map +0 -1
  461. package/dist/scroll-area-BheMQ270.js.map +0 -1
  462. package/dist/select-B2mb-qN2.js +0 -108
  463. package/dist/select-B2mb-qN2.js.map +0 -1
  464. package/dist/sheet-B-q914Ad.js.map +0 -1
  465. package/dist/sidebar-C_2p3Tfj.js.map +0 -1
  466. package/dist/sidebar-DPR7fmqN.js.map +0 -1
  467. package/dist/smart-card-CYLn46e6.js.map +0 -1
  468. package/dist/surface-recipes-CQfRr-VL.js.map +0 -1
  469. package/dist/table-BS39xnlq.js +0 -1424
  470. package/dist/table-BS39xnlq.js.map +0 -1
  471. package/dist/table-DnlAJ-xR.js.map +0 -1
  472. package/dist/tabs-B5cNMWiP.js +0 -187
  473. package/dist/tabs-B5cNMWiP.js.map +0 -1
  474. package/dist/text-inputs-Dh9XGyiS.js +0 -331
  475. package/dist/text-inputs-Dh9XGyiS.js.map +0 -1
  476. package/dist/text.styles-BwB7vAF2.js.map +0 -1
  477. package/dist/timelines-B9ICkQcV.js.map +0 -1
  478. package/dist/typography-Cv8MT-82.js +0 -96
  479. package/dist/typography-Cv8MT-82.js.map +0 -1
  480. package/dist/ui-provider-CftIB6TY.js.map +0 -1
  481. package/dist/upload-D8Za5x_c.js.map +0 -1
  482. package/dist/upload-queue-hIIYBLS7.js.map +0 -1
  483. package/dist/usage-card-DnmnJ58D.js.map +0 -1
  484. package/dist/utils-C2EKeIw3.js +0 -72
  485. package/dist/utils-C2EKeIw3.js.map +0 -1
  486. package/dist/value-inputs-DX2dbxjj.js +0 -824
  487. package/dist/value-inputs-DX2dbxjj.js.map +0 -1
  488. package/dist/workspace-C1PZmk8L.js.map +0 -1
@@ -30,6 +30,7 @@ a detail workspace or a form; they need different information hierarchies.
30
30
  | ResourceCell | Identity inside a table cell | Item for independent list entries; MetadataList for label/value facts about one subject |
31
31
  | Page / application shell | Route identity, navigation, content bounds and page commands | Card for an independent subject within that route; do not repeat the same heading merely to frame a table |
32
32
  | Card | One subject needs a frame and headed regions | `surface="flat" padding="none"` inside an existing boundary; nested DataTable uses its own `surface="flat"` |
33
+ | Metric / MetricGrid / MetricBar | A KPI needs formatted value, comparison/trend or peer layout | UsageCard for used/limit quotas; InlineStat for one plain fact, MetadataList for several record facts |
33
34
  | FormField / InlineEdit | A field needs label/hint/error, or isolated save/cancel | Complete feature/overlay for a workflow; app form owns whole-record submission |
34
35
 
35
36
  For a DataTable composition, put queries in `topbarContent`, exports or collection
@@ -74,6 +75,34 @@ and public anatomy, not imitate one screenshot.
74
75
 
75
76
  Use the exact family declarations from public-api.json. Catalogue URLs and source folders are not import contracts.
76
77
 
78
+ For dashboard KPIs, revenue and statistic cards, read the focused
79
+ [analytics selection and recipe](analytics.md). Metric's card variant,
80
+ MetricGrid's default peers and UsageCard own their surfaces. A distinct custom
81
+ Card subject remains valid; compare the complete subject contract before rebuilding
82
+ formatting, hierarchy or request-state presentation from lower text primitives.
83
+
84
+ ## Public websites and service overviews
85
+
86
+ Compose a landing page or public website from its content. `Container` owns the
87
+ centered measure and inline gutters; `Section` owns semantic content groups and
88
+ their sibling rhythm. Stack/Grid arrange copy, actions and peer subjects. Shared
89
+ Heading/Text roles preserve typography while heading tags express document order.
90
+ Choose `Page` when its route identity, commands and composition slots fit; choose
91
+ Container/Section when content leads. AppLayout supplies application chrome when
92
+ the product needs it. These are application choices, not required website shells.
93
+
94
+ The app owns section order, hero content, media, link destinations, responsive
95
+ placement and brand theming through existing semantic roots. Keep one inset owner:
96
+ Container supplies inline gutters, a site boundary may supply semantic block
97
+ padding, and each independently framed subject keeps Card's default inset.
98
+
99
+ A service offer or pricing option is a legitimate Card subject. Put its name and
100
+ description in the header, price through Money, and navigation in the footer seam.
101
+ Metric/MetricGrid represent observed KPIs and comparisons; a selling price belongs
102
+ to the offer's content. Preserve application-owned currency, billing terms and
103
+ destinations. See the typed [website recipe](../examples/website.tsx), which uses
104
+ ordinary document scrolling and a responsive service grid with real link actions.
105
+
77
106
  ## Typography and rich content
78
107
 
79
108
  Choose Heading, Text, DisplayLabel, Label and TextLink from the published
@@ -101,15 +130,44 @@ the content owner. Embedded React UI can opt out of reading rhythm through
101
130
  `not-typeset` or `data-not-typeset` on its subtree; those opt-outs do not bypass
102
131
  HTML sanitization or establish a separate typography system.
103
132
 
133
+ ### Visual heading emphasis
134
+
135
+ `Heading tag="h1"` preserves the compact admin default. For website/hero copy,
136
+ choose `size="3xl"` or `size="4xl"`; sections may use `size="xl"` or `"2xl"`.
137
+ The semantic tag, visual size and surrounding Section/Stack gap are independent.
138
+ Existing text-size classes remain supported overrides. Section owns rhythm,
139
+ Container owns measure/gutters, and application utilities may own a hero's outer
140
+ padding or background. No additional section/hero theme tokens are required.
141
+ See the [website example](../examples/website.tsx) for both hero and section emphasis.
142
+
143
+
104
144
  ## Card anatomy
105
145
 
106
146
  Card surface="card" is the ordinary bordered surface; surface="framed" retains its ring recipe; surface="flat" padding="none" composes within an existing boundary. headerPlacement="frame" places title/icon/actions above an inset body, retaining default corners and using rounded-inner on that body.
107
147
 
148
+ Choose one ordinary Card surface through UIProvider's `card.defaultSurface` and
149
+ let sibling subjects inherit it. Explicit per-card surfaces win: mixing `card`
150
+ and `framed` intentionally changes their visible treatment. Header placement is
151
+ independent: `inside` keeps the heading with the body; `frame` puts context and
152
+ commands on the outer frame above the inset body. Use `icon={<Icon />}` for a
153
+ routine heading glyph and plain `title`; embedding raw SVG in title JSX bypasses
154
+ the owner's icon sizing. Custom titles remain appropriate for richer content.
155
+
108
156
  Card `gap` owns spacing between regions; `contentGap` owns direct body-child
109
157
  spacing; `textGap` owns title/supporting-copy rhythm. Region spacing defaults to
110
158
  `xl` (`md` for `padding="none"`). Use a semantic region gap for compact cards
111
159
  instead of resetting padding or adding local margins.
112
160
 
161
+ Ordinary independent cards omit `padding` and retain `md` (the full surface
162
+ inset, 20px at default roots). `sm` is half that inset (10px), for a deliberately
163
+ compact subject; it is not the default for forms, settings, metrics or resource
164
+ pages. Component size and
165
+ density do not choose Card padding. `lg` uses 1.8 times the inset (36px), while
166
+ `none` removes it. All sizes follow the surface roots and space-scale.
167
+ UIProvider can configure both
168
+ `card.defaultHeaderDivider` and `card.defaultFooterDivider`; explicit per-card
169
+ booleans win. Header/footer-only cards still render one shared divider.
170
+
113
171
  Use titleSuffix for status/count/version badges. Long titles/suffixes wrap through the shared owner; no literal spaces/local margins to manufacture gaps. headerAction/actions are trailing controls, headerStart pre-title context. footerSlot/footer definitions own card-level actions; footerDivider owns the rule and inset. Do not simulate a footer inside children. SmartCard and ContentBlock are deprecated migration names; use Card in new code.
114
172
 
115
173
  Reusable blocks/features stay card-free unless their explicit purpose is a card. Frame them at the composition boundary.
@@ -120,6 +178,18 @@ Shells own gutters, surfaces own padding, sections own rhythm, Stack/Grid own si
120
178
 
121
179
  Grid exposes viewport columns; AdaptiveGrid responds to parent width and a semantic minimum column size. GridCell spans belong to the nearest Grid. Keep narrow DOM order meaningful. Horizontal Stack wraps by default; disable it only when overflow is intentionally handled. Tailwind is appropriate for min-w-0, positioning, overflow and drawing geometry.
122
180
 
181
+ Independent surfaces need peer rhythm, usually `gap="xl"`; Stack's default
182
+ `md` is general sibling spacing, not a card-grid prescription. Framed Card rings
183
+ extend outside layout rectangles, so two rings can consume a small DOM gap.
184
+ Inspect visible edge clearance in both axes rather than accepting token use alone.
185
+ Copy gaps normal/dense are for supporting text, not spacing independent cards.
186
+
187
+ MetadataList owns medium-weight labels and normal-weight routine values. Its
188
+ compact density tightens gaps/rows without shrinking primary values. Plain values
189
+ and typed descriptors retain the shared roles; React nodes, `display` and `render`
190
+ preserve supplied typography. Keep custom formatted values consistent with value
191
+ primitives rather than replacing labels and values with undifferentiated Text.
192
+
123
193
  ## Menus and controls
124
194
 
125
195
  PopoverContent type="display" owns substantive-content padding; type="menu" compact collection padding around already-padded rows. Popover and Command share inset="default" and inset="compact" paradigms. Mixed searchable shells use inset="flush"; public header/search/list/footer anatomy owns its insets automatically. CommandInput composes the public Input for control geometry and focus styling; its search region adds only outer spacing. Do not pass padding through className, contentClassName or inline styles. Compact header controls and footer actions align with row highlight edges; header text and footer captions align with row labels. Use PopoverHeader start for a leading control and PopoverFooter caption for supporting content alongside trailing action children. Dividers use the same semantic recipe. density selects vertical row rhythm without changing inline padding. ActionMenu owns action definitions, PopoverMenu searchable selection, DropdownMenu bespoke menu anatomy. Shared appearance preserves their accessible menu/listbox/dialog behavior.
@@ -132,6 +202,13 @@ PopoverContent type="display" owns substantive-content padding; type="menu" comp
132
202
  | density="compact" / "default" / "comfortable" | Collection row block rhythm, independent from inline spacing |
133
203
  | size="sm" / "md" / "lg" | Supported control's scale; consult its declaration and provider precedence |
134
204
 
205
+ Input, Button, Select and filter-facet triggers share bounded inner corners
206
+ and corresponding heights; Card and popup shells use the global outer radius. Omitted sizes inherit the provider; explicit sizes win.
207
+ Keep action/control roots equal when those controls adjoin. Compact menu rows,
208
+ surface insets and control sizes remain independent; density can tighten the
209
+ inner-radius height bound without changing outer corners.
210
+ Inset segmented children use the supported compound owner's same-height frame.
211
+
135
212
  PopoverContent defaults to display/default; Command defaults to compact. An explicit PopoverContent type controls anatomy; explicit inset controls padding and takes precedence over the type's inferred inset. Without type, compact implies menu, other insets imply display. Put type="menu" inset="flush" on PopoverContent for a headed searchable picker. Popover is the interaction root and receives no surface props. PopoverMenu already assembles that picker anatomy; use its declared selection/search props. ComboboxPopup is flush because ComboboxList owns its inset. Do not add another wrapper inset around a normal collection list.
136
213
 
137
214
  At shipped roots, compact shell padding is 8px; row inline padding is 12px; default row block padding is 8px and minimum height 36px. Compact/comfortable rows use 6/10px block padding and 32/40px minimum heights. Content can grow when it wraps. These are token-derived measurements, not app constants. Flush compact header/footer shell padding matches the list (8px inline). Header text bodies without a leading control and footer captions add the row inset once, aligning text at 20px. Actions keep the 8px shell edge. Nested public slots do not repeat these insets.
@@ -150,8 +227,8 @@ Use exact themelia-react-ui paths. Presentation imports use blocks/<family>, rep
150
227
  ## Copy rhythm
151
228
 
152
229
  For title/supporting-copy rhythm use `textGap="normal" | "dense"` on Card,
153
- PageHeading and public surface headers; normal is 8px and dense is 4px before
154
- spacing scaling. Item/ItemContent and menu popover headers default to dense.
230
+ PageHeading and public surface headers. The installed token reference records
231
+ their unscaled defaults. Item/ItemContent and menu popover headers default to dense.
155
232
  Stack/Grid accept the same semantic gaps, including responsive objects and
156
233
  axis overrides. Keep surface insets and action-cluster gaps on their owners;
157
234
  do not add a second margin to descriptions.
@@ -257,6 +334,43 @@ parent width while preserving main-before-aside DOM/focus order.
257
334
 
258
335
  See the installed [workspace recipe](../examples/app-layout.tsx).
259
336
 
337
+ PageViewport owns scrolling and adds no padding. Page defaults to `gutter="lg"`
338
+ and `padding="lg"` (36px at shipped roots), so it owns inline/block space once.
339
+ `narrow` selects centered `md` width; explicit `maxWidth` wins. Header copy
340
+ defaults to dense; `textGap="normal"` is an explicit alternative. Do not assume
341
+ an app shell supplies gutters because it supplies a viewport. Set `gutter="none"`
342
+ only when an actual parent Container/surface supplies the inline inset, such as
343
+ StackedLayout's contained mode. Block padding remains independent.
344
+ That contained measure uses the same large gutter as Page; ordinary Container
345
+ defaults remain unchanged.
346
+
347
+ Select width from the task: a single focused resource/form can use `narrow`;
348
+ a record with a supporting aside can retain the default `lg` measure and use
349
+ TwoColumnLayout. A wide comparison/directory can deliberately use `maxWidth="full"`.
350
+ Setting full on every route defeats the resource measure. Do not remove Page's
351
+ gutters to make its title touch the sidebar; align the header and body through
352
+ the same Page. Density, container measure and page inset are separate choices.
353
+ The [detail recipe](../examples/detail.tsx) includes `AccountDetailPage`: a
354
+ centered resource measure, route-level commands, native Card icon/frame anatomy
355
+ and MetadataList facts, with no duplicated subject header or gutter.
356
+
357
+ Compose HeaderUserMenu in topbar `slots.headerEnd` or a local toolbar, and
358
+ SidebarNavigationUser in AppSidebar `slots.footer` when account access belongs
359
+ in navigation. Use SidebarWorkspaceDropdown for workspace links, or add a
360
+ custom control through `slots.headerEnd` alongside the logo. `headerStart` and
361
+ `headerEnd` stay inside the padded, fixed header; `slots.header` replaces it all.
362
+ `beforeNavigation` scrolls with the links. SidebarFooter owns its rule and inset.
363
+ LayoutSidebarProvider defaults to compact row gaps; explicit density still wins.
364
+ WorkspaceLayout owns its own bounded content inset; do not add a padded Page
365
+ inside it. WorkspaceRecordHeader and WorkspaceLocaleStrip align to the same
366
+ large inline surface role. Record copy supports textGap with a dense default.
367
+ Below 80rem of its own width, WorkspaceLayout scrolls header and body together;
368
+ above that boundary its main region scrolls beside the sidebar. Its rail appears
369
+ at 96rem. Supply header/drawer access to essential hidden regions on narrow
370
+ screens; this passive layout does not create a complete mobile workflow.
371
+ Do not infer workspace/user menus from a generic Avatar: choose their actual
372
+ published owners and supply permitted callbacks. The app owns user/workspace data.
373
+
260
374
  ## Task and usage summaries, editable fields
261
375
 
262
376
  | Intent | Public owner | Composition boundary |
@@ -57,15 +57,36 @@ an explicitly expandable card retains its collapse region.
57
57
  | `--space-scale` | Shared gaps, inline insets and surface padding | Row block/control-height density |
58
58
  | `--density-scale` | Action/control heights and row block padding | Inline room or primary text hierarchy |
59
59
 
60
- `--gap-normal` and `--gap-dense` default to 0.5rem and 0.25rem. Their utilities
60
+ `--gap-normal` and `--gap-dense` default to 0.25rem and 0.125rem. Their utilities
61
61
  multiply once by `--space-scale`. Descriptions have no extra margin. These are
62
62
  copy gaps; larger section and action-cluster gaps remain on their own owners.
63
63
  The [token reference](tokens.json) records the installed defaults and vocabulary.
64
64
 
65
- Use `rounded-radius` for ordinary controls and shells; `rounded-inner` is an
66
- intentional nested role. Density does not change radius. Circular indicators and
67
- avatars retain their shape. Elevation uses the existing shadow ladder, with
68
- family recipes selecting the tier; do not add a separate card/menu shadow root.
65
+ Outer Card, popup and Command shells use `rounded-radius`: the shadcn root,
66
+ 12px by default. Input, Button, Select/facet triggers, collection highlights,
67
+ navigation rows and intentional nested bodies use the shared `rounded-inner`
68
+ role, 9px by default. It derives at 0.75× and is bounded by one quarter of the
69
+ smaller action/control base height, scaled by density. A larger global root
70
+ therefore cannot turn short controls into capsules. See [the exact theme
71
+ recipe](theming.md). Density can tighten the inner bound; it does not change
72
+ outer corners. Spacing scale and padding do not select another radius tier.
73
+
74
+ Use the public component defaults instead of adding radius classes to callers.
75
+ Joined edges may reset their meeting corners. Circular indicators and avatars
76
+ retain their shape; Badge retains its root-based recipe. Elevation uses the
77
+ existing shadow ladder, with family recipes selecting the tier; neither a
78
+ card/menu radius root nor a separate shadow root is needed.
79
+
80
+ For appearance feedback, compare the actual open/focused state with the requested
81
+ theme value. Inspect CSS radius resolution, dimensions, clipping, borders and
82
+ rings as well as the computed root. Correct the visible problem at its owner;
83
+ matching radius values alone do not establish that the result looks right.
84
+
85
+ For adjoining fields and actions, keep `--height-action` and `--height-control`
86
+ equal and choose corresponding supported sizes. Omit `size` to inherit the
87
+ provider scale; an explicit prop intentionally takes precedence. Feature wrappers
88
+ should preserve that inheritance rather than force `md` on one facet while its
89
+ neighbor inherits `sm`. Deliberately different action/field roots remain supported.
69
90
 
70
91
  Structural dividers use one private recipe owner with explicit frame, anchored
71
92
  and modal roles. They share the semantic `border` root; their established strength
@@ -102,12 +123,17 @@ for logical geometry, keyboard navigation and anchored positioning; see
102
123
  3. Change an existing shared root at the intended [theme boundary](theming.md) when several related components should move together.
103
124
  4. If the public API cannot express a recurring composition, request an additive seam at that owner. Keep genuinely application-specific geometry namespaced in the application.
104
125
 
105
- Do not fix a shared mismatch with padding on Popover, Command, Select popup or
106
- Combobox anatomy, including `contentClassName`, inline styles, descendants and
126
+ Use Card's `padding` and slots, and Popover/Command/Select/Combobox's supported
127
+ inset and region props to correct shared padding. Preserve their internal recipe
128
+ instead of replacing it through `contentClassName`, inline styles, descendants and
107
129
  forwarding wrappers. Likewise, do not locally replace fixed control typography
108
130
  or make descriptions carry surrounding margins. The same restriction applies
109
131
  to token-backed overrides: a semantic utility can still be used on the wrong owner.
110
132
 
133
+ For custom copy, use `<Stack gap="dense">` around a title and description rather
134
+ than `className="mt-space-sm"` on the description's Text. Preserve Text/Heading's
135
+ size and semantic-element APIs; move surrounding margins to the structure owner.
136
+
111
137
  Theme inheritance belongs to CSS. Use ThemeScope for scoped portals; an explicit
112
138
  portal container must live in the intended boundary. Provider defaults and app
113
139
  callbacks do not form a parallel JavaScript styling system. Opening a popup is
@@ -14,11 +14,22 @@ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/find-components.
14
14
 
15
15
  For a copied skill, replace the script path with that copy's `scripts/find-components.mjs`. Copy the complete skill folder: the script resolves its adjacent `references/public-api.json` relative to itself, regardless of the working directory. It needs Node compatible with the package's engine requirement, not an npm/global CLI or extra dependency.
16
16
 
17
- Queries accept multiple words, quoted or separate. Every term must match candidate metadata; an unknown term produces empty results. Exact imports and exported symbols rank first. `--layer` filters the technical package layer: `foundations`, `base`, `layout`, `blocks` or `features`. This is independent of responsibility-based browse sections: `themelia-react-ui/base/structure` browses Foundations but filters under `--layer base`; a theme-tweaker recipe browses Recipes but filters under `--layer features`. `--limit` is an integer from 1 to 100 and defaults to 5. Unknown flags, duplicate options, missing values and incompatible/malformed indexes exit nonzero with an error on stderr.
17
+ Queries accept multiple words, quoted or separate. Every term must match metadata
18
+ as a word; `stat` does not match `state` or `status`. An unknown term produces
19
+ empty results. Exact imports and case-exact exported names such as `Table` or
20
+ `Empty` select their precise contract. Ordinary task nouns `table` and `empty`
21
+ retain DataTable/DataView and EmptyState alongside the base anatomy. Exported
22
+ types and helper symbols remain available by their exact API name; documented
23
+ component symbols and curated aliases drive task recommendations.
24
+ `--layer` filters the technical package layer: `foundations`, `base`, `layout`,
25
+ `blocks` or `features`. This differs from browse sections: Structure browses
26
+ Foundations but filters under `--layer base`. `--limit` accepts 1–100 and defaults
27
+ to 5. Invalid flags/options or incompatible indexes exit nonzero on stderr.
18
28
 
19
29
  If a query returns no results, shorten it to the main responsibility or an exact
20
- symbol, then remove the layer filter. Read choose/avoid guidance and alternatives
21
- before selecting the owner. For routine compact searchable selection, search
30
+ symbol, then remove the layer filter. No result does not prove the package lacks
31
+ that responsibility. Read the selected result's choose/avoid guidance and
32
+ alternatives, then follow `nextReads`; do not load every reference. For routine compact searchable selection, search
22
33
  `PopoverMenu` or `compact searchable selection`; surface adjectives describe
23
34
  variants, not permission to rebuild the owner's padding.
24
35
 
@@ -35,13 +46,73 @@ or `theme boundary`. Read choose/avoid and app-owned responsibilities before
35
46
  deciding; a directory result does not require DataView when its workflow differs.
36
47
  Unknown terms still return no result; no fuzzy API or guessed prop is invented.
37
48
 
38
- Output is deterministic JSON: package/version, query/options, total matching families and a bounded `results` list. Each result includes exact `import`, packaged `declaration`, technical `layer`, responsibility, required `optionalPeers`, match kind, exact matched symbols and up to three relevant guidance entries. Family `sections` and guidance `section` reflect responsibility-based documentation placement. Guidance carries jobs, tags, aliases, selection/avoidance, application ownership, canonical browse group/domain plus catalogue category/collection, search-section labels/symbols and alternatives resolved to exact published imports. Read the [full index](public-api.json) for all symbols/guidance. A result suggests an owner; declarations establish its actual props and behavior.
49
+ Task language also includes `dashboard KPIs`, `dashboard metrics`, `revenue
50
+ overview`, `statistic cards`, `usage statistics` and `single resource page`.
51
+ `dark header` and `light header` select AppLayout shell composition.
52
+ KPI peers select MetricGrid/MetricBar guidance; one statistic card selects Metric;
53
+ usage quotas select the focused UsageCard leaf; a record route selects Page.
54
+ The [analytics reference](analytics.md) explains their boundary with simple
55
+ InlineStat facts, MetadataList and legitimate custom Card subjects.
56
+
57
+ `kpi`, `metric card`, `number card`, `statistics` and `stat` expose Metric.
58
+ `key value` and `details` retain MetadataList and InlineStat before helper rows.
59
+ `chat` includes Message/MessageBubble as well as AiChat: choose message presentation
60
+ or the complete prompt/conversation workflow according to the task. `markdown`
61
+ routes to RichText's sanitized `html` display contract; the application converts
62
+ Markdown to HTML. It does not introduce a Markdown parser or an invented renderer.
63
+
64
+ For `website landing page`, `public website` or `service overview`, discovery
65
+ selects Container/Section and the focused [website composition](composition.md#public-websites-and-service-overviews)
66
+ recipe. Choose Page instead when its route identity/command contract fits the
67
+ content; application chrome and analytics are separate responsibilities.
68
+
69
+ For geometry, `radius`, `border radius`, `control corners` and `control heights` select the existing UIProvider/theme
70
+ boundary guidance; `copy gaps` selects Structure. Their focused references explain
71
+ outer/inner corner roles, corresponding sizes, inherited defaults and normal/dense
72
+ copy rhythm even when no executable recipe matches the query. `page padding`
73
+ selects Page; `card padding` selects Card. Read those owners before adding local
74
+ gutters, reducing normal Card insets or rebuilding their headers/footers.
75
+
76
+ Output is deterministic JSON: package/version, query/options, total matching
77
+ families and bounded `results`. Each result includes exact `import`, packaged
78
+ `declaration`, technical `layer`, responsibility, required `optionalPeers`, match
79
+ kind, exact `matchedSymbols`, `relevantSymbols`, `nextReads` and up to three
80
+ relevant guidance entries. Exact symbol queries keep that symbol; intent queries
81
+ derive relevantSymbols from selected catalogue API sections and current public
82
+ exports. An exact family import retains the complete public symbol vocabulary.
83
+ Exact guide aliases precede generic overlap, and unrelated family pages
84
+ do not fill the result merely to reach three entries.
85
+
86
+ `nextReads.declaration` is relative to the installed package root.
87
+ `nextReads.references` and `nextReads.examples[].file` are relative to this
88
+ skill folder, so they also work with a complete copied skill. Examples report
89
+ their actual exported recipe names and the selected public symbols they use.
90
+ Recipe selection requires symbol overlap, not just a common family import.
91
+ This prevents a PageHeader selection from inheriting Page-only recipes. A
92
+ recipe's `optionalPeers` comes from its manifest and can include other families'
93
+ requirements beyond the selected owner's peers. Inspect it before copying. A
94
+ selected family with no matching recipe reports empty references/examples;
95
+ use its declaration and the [full index](public-api.json), without guessing.
96
+
97
+ Family sections/guidance placement follows browse responsibility. Guidance
98
+ carries jobs, tags, aliases, choose/avoid, app ownership, browse context, API
99
+ sections/symbols and alternatives resolved to exact imports. Results suggest
100
+ owners and focused reads; declarations establish actual props and behavior.
39
101
 
40
102
  Read each declaration relative to the installed package root, for example `node_modules/themelia-react-ui/dist/components/base/cards/index.d.ts`, following its relative exports as needed. Copying this skill copies metadata, not the declaration tree: use declarations from the same installed package version. Never combine metadata from one version with another version's declarations.
41
103
 
42
104
  `ThemeScope` has distinct contracts. Root and `themelia-react-ui/ui-provider` export the basic CSS-inheritance boundary with native div/style props and portal hosting. `themelia-react-ui/features/theme-tweaker` exports the advanced theme-definition scope. Inspect the result's responsibility and that exact family's declaration before selecting props.
43
105
 
44
- The index retains `schemaVersion: 1` and adds `discoveryVersion: 1`. Package name/version and peer ranges come from the published manifest; symbols and declaration paths come from live public exports; jobs and guidance come from the live consumer catalogue. Utility/root responsibilities have explicit owners when no catalogue family represents them. Optional peer requirements follow transitive local source imports, including type-only and resolved `@types` peers; the manifest supplies their compatible ranges. This describes whole-family declaration/runtime requirements, not the smaller graph a bundler may obtain after tree shaking.
106
+ The index retains schemaVersion/discoveryVersion 1; optional family `recipes` and `references`
107
+ are compatible additions. Package identity/peers derive from the published
108
+ manifest, symbols/declarations from live exports, and jobs/guidance from the
109
+ consumer catalogue. Recipe metadata derives from the existing example manifest,
110
+ each export's actual use of exact public imports and reference-to-recipe section links; it adds no
111
+ independent task taxonomy. Older matching indexes without recipes still work
112
+ and return empty recipe reads. Utility/root responsibilities have explicit
113
+ owners when no catalogue family represents them. Optional peer requirements
114
+ follow transitive local imports, including type-only and resolved `@types` peers.
115
+ These describe whole-family requirements; tree shaking may produce a smaller graph.
45
116
 
46
117
  Routing, records, translation, permissions and backend effects stay in the application. Discovery grants no publication or global installation authority.
47
118
 
@@ -18,6 +18,20 @@ Load intentional, scoped app overrides after the package stylesheet. Keep broad
18
18
 
19
19
  UIProvider supplies stable mount-time defaults: explicit prop, provider default, fallback. Per-mount requests/data/callbacks stay on components. ThemeScope from themelia-react-ui/ui-provider places descendant portals inside its CSS boundary. A styled div does not relocate body portals; explicit Base UI portal containers take precedence.
20
20
 
21
+ For separated card regions, configure the single application provider with
22
+ `card: { defaultSurface: 'card', defaultHeaderDivider: true, defaultFooterDivider: true }`.
23
+ Explicit Card booleans, including false, override these defaults. Ordinary card
24
+ padding remains md, independent of density. The typed [workspace recipe](../examples/app-layout.tsx)
25
+ exports `workspaceUIDefaults` for that root configuration and composes the public
26
+ workspace/user controls. It does not mount another UIProvider inside the app.
27
+
28
+ Page owns inline/block insets and offers `narrow` for a centered resource page.
29
+ PageViewport owns scroll containment only. Check actual padding before passing
30
+ `gutter="none"`; a local guide claiming all shell viewports are padded contradicts
31
+ the installed contract. Fix that app policy through its own review rather than
32
+ compensating with card or field padding. Bounded AppSidebar instances use h-full
33
+ inside the shell's constrained column; standalone sidebars may use viewport height.
34
+
21
35
  For RTL, pair the native DOM direction with `DirectionProvider` from the same
22
36
  entrypoint. Native `dir` owns text flow and logical CSS geometry; the provider
23
37
  owns Base UI keyboard navigation and popup positioning. It does not set `dir`.