themelia-react-ui 2.0.3 → 2.0.5

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 (648) hide show
  1. package/CHANGELOG.md +185 -0
  2. package/README.md +168 -36
  3. package/dist/{accordion-Cjb6sx0G.js → accordion-B9MHG0cT.js} +11 -11
  4. package/dist/accordion-B9MHG0cT.js.map +1 -0
  5. package/dist/action-menu-Dr8K-ghE.js +284 -0
  6. package/dist/action-menu-Dr8K-ghE.js.map +1 -0
  7. package/dist/{affordance-geometry.generated-tF36bREk.js → affordance-geometry.generated-P-aVJisu.js} +42 -36
  8. package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
  9. package/dist/{ai-artifact-DvTwDVyL.js → ai-artifact-C58tQcBy.js} +387 -350
  10. package/dist/ai-artifact-C58tQcBy.js.map +1 -0
  11. package/dist/app-shell-B_IuNWOo.js +321 -0
  12. package/dist/app-shell-B_IuNWOo.js.map +1 -0
  13. package/dist/{attachment-BxDfL2mw.js → attachment-Dg_69lPS.js} +9 -9
  14. package/dist/{attachment-BxDfL2mw.js.map → attachment-Dg_69lPS.js.map} +1 -1
  15. package/dist/{auth-BGua8ouh.js → auth-DTkkshS8.js} +44 -47
  16. package/dist/auth-DTkkshS8.js.map +1 -0
  17. package/dist/{avatar-DAPlDvhJ.js → avatar-CeZaFmNH.js} +8 -8
  18. package/dist/avatar-CeZaFmNH.js.map +1 -0
  19. package/dist/{badge-HpFqoqSY.js → badge-xIiV_E7f.js} +5 -5
  20. package/dist/{badge-HpFqoqSY.js.map → badge-xIiV_E7f.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/batch-action-bar.js +1 -1
  27. package/dist/base/buttons.js +1 -1
  28. package/dist/base/cards.js +2 -2
  29. package/dist/base/carousel.js +3 -3
  30. package/dist/base/cascader.js +2 -372
  31. package/dist/base/chart.js +1 -1
  32. package/dist/base/choice-inputs.js +2 -2
  33. package/dist/base/code-block.js +1 -1
  34. package/dist/base/combobox.js +2 -2
  35. package/dist/base/command.js +1 -1
  36. package/dist/base/copyable.js +1 -1
  37. package/dist/base/date-pickers.js +2 -2
  38. package/dist/base/display.js +6 -6
  39. package/dist/base/feedback.js +3 -3
  40. package/dist/base/forms-numeric.js +1 -1
  41. package/dist/base/forms.js +3 -3
  42. package/dist/base/inline-edit.js +10 -10
  43. package/dist/base/item.js +1 -1
  44. package/dist/base/media-gallery.js +1 -1
  45. package/dist/base/metadata-list.js +1 -1
  46. package/dist/base/navigation.js +7 -7
  47. package/dist/base/popover-menu.js +1 -1
  48. package/dist/base/popover.js +1 -1
  49. package/dist/base/qr-code.js +1 -1
  50. package/dist/base/repeaters.js +12 -12
  51. package/dist/base/repeaters.js.map +1 -1
  52. package/dist/base/sheet.js +1 -1
  53. package/dist/base/sidebar.js +2 -2
  54. package/dist/base/signature-pad.js +7 -7
  55. package/dist/base/signature-pad.js.map +1 -1
  56. package/dist/base/skeleton.js +1 -1
  57. package/dist/base/spinner.js +4 -4
  58. package/dist/base/structure.js +1 -1
  59. package/dist/base/table.js +1 -1
  60. package/dist/base/text-inputs.js +2 -2
  61. package/dist/base/toaster.js +36 -36
  62. package/dist/base/toaster.js.map +1 -1
  63. package/dist/base/tree.js +1 -1
  64. package/dist/base/upload-queue.js +1 -1
  65. package/dist/base/upload.js +3 -3
  66. package/dist/base/value-inputs.js +1 -1
  67. package/dist/{batch-action-bar-DnUJ21NQ.js → batch-action-bar-Cb8cuvyy.js} +6 -6
  68. package/dist/batch-action-bar-Cb8cuvyy.js.map +1 -0
  69. package/dist/blocks/admin.js +23 -23
  70. package/dist/blocks/admin.js.map +1 -1
  71. package/dist/blocks/ai.js +230 -216
  72. package/dist/blocks/ai.js.map +1 -1
  73. package/dist/blocks/analytics/usage-card.js +1 -1
  74. package/dist/blocks/analytics.js +326 -307
  75. package/dist/blocks/analytics.js.map +1 -1
  76. package/dist/blocks/collaboration.js +1 -1
  77. package/dist/blocks/commerce/receipt.js +1 -1
  78. package/dist/blocks/commerce.js +1247 -1169
  79. package/dist/blocks/commerce.js.map +1 -1
  80. package/dist/blocks/data-display.js +2 -2
  81. package/dist/blocks/onboarding.js +6 -6
  82. package/dist/blocks/onboarding.js.map +1 -1
  83. package/dist/blocks/planning.js +11 -11
  84. package/dist/blocks/timelines.js +1 -1
  85. package/dist/{breadcrumbs-C-oqs1sQ.js → breadcrumbs-J-K2kl4c.js} +6 -6
  86. package/dist/{breadcrumbs-C-oqs1sQ.js.map → breadcrumbs-J-K2kl4c.js.map} +1 -1
  87. package/dist/{button-DVzspB_G.js → button-S2Cubiiz.js} +3 -3
  88. package/dist/button-S2Cubiiz.js.map +1 -0
  89. package/dist/{buttons-DPZekJFu.js → buttons-BedGfygC.js} +16 -16
  90. package/dist/buttons-BedGfygC.js.map +1 -0
  91. package/dist/cards-rNX1M4Xn.js +69 -0
  92. package/dist/cards-rNX1M4Xn.js.map +1 -0
  93. package/dist/cascader-B1MiqkBq.js +439 -0
  94. package/dist/cascader-B1MiqkBq.js.map +1 -0
  95. package/dist/chart-Darg_0Kv.js +162 -0
  96. package/dist/chart-Darg_0Kv.js.map +1 -0
  97. package/dist/{checkbox-AWIhNhmo.js → checkbox-fflqmODR.js} +9 -5
  98. package/dist/checkbox-fflqmODR.js.map +1 -0
  99. package/dist/choice-inputs-zUgBZfE4.js +777 -0
  100. package/dist/choice-inputs-zUgBZfE4.js.map +1 -0
  101. package/dist/{code-block-DeneBJR_.js → code-block-BzmM9Eig.js} +9 -9
  102. package/dist/code-block-BzmM9Eig.js.map +1 -0
  103. package/dist/{collapsible-C-_l4hpy.js → collapsible-BkAI_XD4.js} +5 -5
  104. package/dist/{collapsible-C-_l4hpy.js.map → collapsible-BkAI_XD4.js.map} +1 -1
  105. package/dist/{collection-content-By56pLog.js → collection-content-gDh1v6O4.js} +3 -3
  106. package/dist/{collection-content-By56pLog.js.map → collection-content-gDh1v6O4.js.map} +1 -1
  107. package/dist/combobox-BEx0vJgF.js +362 -0
  108. package/dist/combobox-BEx0vJgF.js.map +1 -0
  109. package/dist/{combobox-Dxo2fAYQ.js → combobox-BwzoXFSG.js} +254 -247
  110. package/dist/combobox-BwzoXFSG.js.map +1 -0
  111. package/dist/{command-C25VMRII.js → command-CrlPIL6m.js} +12 -12
  112. package/dist/command-CrlPIL6m.js.map +1 -0
  113. package/dist/{comments-DD0DUPwJ.js → comments-Dmpp0YIc.js} +380 -379
  114. package/dist/comments-Dmpp0YIc.js.map +1 -0
  115. package/dist/components/base/action-menu/action-menu.d.ts +9 -1
  116. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  117. package/dist/components/base/cards/card.recipes.d.ts +16 -7
  118. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
  119. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
  120. package/dist/components/base/cards/smart-card.types.d.ts +11 -7
  121. package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
  122. package/dist/components/base/chart/chart.d.ts +6 -1
  123. package/dist/components/base/choice-inputs/checkbox.d.ts +7 -2
  124. package/dist/components/base/choice-inputs/choice-types.d.ts +1 -1
  125. package/dist/components/base/choice-inputs/switch-card.d.ts +7 -0
  126. package/dist/components/base/choice-inputs/toggle-field.d.ts +7 -0
  127. package/dist/components/base/combobox/index.d.ts +4 -2
  128. package/dist/components/base/date-pickers/datepicker.types.d.ts +7 -0
  129. package/dist/components/base/feedback/alert.d.ts +1 -1
  130. package/dist/components/base/forms/controlled-form-field.d.ts +6 -6
  131. package/dist/components/base/forms/form-field.d.ts +5 -3
  132. package/dist/components/base/forms/form-sizing.d.ts +7 -7
  133. package/dist/components/base/forms/index.d.ts +1 -0
  134. package/dist/components/base/forms/server-errors.d.ts +16 -0
  135. package/dist/components/base/forms/workflow.d.ts +11 -2
  136. package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -0
  137. package/dist/components/base/metadata-list/metadata-list.d.ts +3 -1
  138. package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
  139. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
  140. package/dist/components/base/navigation/page-header/page-header.d.ts +13 -4
  141. package/dist/components/base/popover/popover.d.ts +3 -3
  142. package/dist/components/base/popover/popover.recipes.d.ts +10 -6
  143. package/dist/components/base/sheet/sheet.d.ts +2 -0
  144. package/dist/components/base/sidebar/index.d.ts +1 -1
  145. package/dist/components/base/sidebar/sidebar.d.ts +27 -5
  146. package/dist/components/base/structure/composition.recipes.d.ts +17 -0
  147. package/dist/components/base/text-inputs/hooks/use-form-field-state.d.ts +7 -2
  148. package/dist/components/base/text-inputs/input.d.ts +4 -2
  149. package/dist/components/base/text-inputs/textarea.d.ts +4 -2
  150. package/dist/components/base/toaster/index.d.ts +1 -0
  151. package/dist/components/base/value-inputs/date-time-input.d.ts +2 -1
  152. package/dist/components/base/value-inputs/slider.d.ts +5 -1
  153. package/dist/components/base/value-inputs/tags-input.d.ts +5 -1
  154. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
  155. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +3 -1
  156. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  157. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
  158. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  159. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
  160. package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
  161. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
  162. package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
  163. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  164. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
  165. package/dist/components/blocks/commerce/index.d.ts +7 -6
  166. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
  167. package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
  168. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
  169. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  170. package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
  171. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
  172. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
  173. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
  174. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
  175. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
  176. package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
  177. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
  178. package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
  179. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  180. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
  181. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  182. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +3 -1
  183. package/dist/components/features/activities/activities.types.d.ts +8 -2
  184. package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
  185. package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
  186. package/dist/components/features/event-calendar/colors.d.ts +2 -2
  187. package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
  188. package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
  189. package/dist/components/features/filters/filters.strings.d.ts +4 -0
  190. package/dist/components/features/filters/filters.types.d.ts +3 -0
  191. package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
  192. package/dist/components/features/filters/partials/filter-popover-content.d.ts +1 -1
  193. package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
  194. package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
  195. package/dist/components/features/filters/utils/filter-utils.d.ts +21 -3
  196. package/dist/components/features/global-search/global-search.types.d.ts +2 -0
  197. package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
  198. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
  199. package/dist/components/features/media-library/media-library.strings.d.ts +2 -0
  200. package/dist/components/features/media-library/media-library.types.d.ts +14 -4
  201. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  202. package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
  203. package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
  204. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  205. package/dist/components/features/products/products.strings.d.ts +9 -1
  206. package/dist/components/features/products/products.types.d.ts +43 -6
  207. package/dist/components/features/resource/resource.d.ts +5 -1
  208. package/dist/components/features/resource/resource.types.d.ts +12 -1
  209. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
  210. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
  211. package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
  212. package/dist/components/features/table/table.types.d.ts +1 -1
  213. package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
  214. package/dist/components/layout/app-shell/index.d.ts +1 -1
  215. package/dist/components/layout/app-shell/shell-regions.d.ts +27 -0
  216. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  217. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  218. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  219. package/dist/components/layout/containers/two-column-layout.d.ts +2 -0
  220. package/dist/components/layout/header/header.recipes.d.ts +6 -0
  221. package/dist/components/layout/header/header.types.d.ts +6 -6
  222. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
  223. package/dist/components/layout/page/index.d.ts +2 -1
  224. package/dist/components/layout/page/page.d.ts +1 -0
  225. package/dist/components/layout/page/page.strings.d.ts +11 -0
  226. package/dist/components/layout/page/page.types.d.ts +69 -17
  227. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  228. package/dist/components/layout/settings/settings.d.ts +9 -2
  229. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  230. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  231. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  232. package/dist/components/layout/sidebar/index.d.ts +2 -1
  233. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +36 -0
  234. package/dist/components/layout/sidebar/sidebar.context.d.ts +5 -7
  235. package/dist/components/layout/sidebar/sidebar.types.d.ts +48 -10
  236. package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
  237. package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
  238. package/dist/components/typography/text.styles.d.ts +26 -1
  239. package/dist/components/ui/alert-dialog.d.ts +2 -2
  240. package/dist/components/ui/combobox.d.ts +1 -1
  241. package/dist/components/ui/dialog.d.ts +2 -2
  242. package/dist/components/ui/overlay-layer.d.ts +18 -0
  243. package/dist/components/ui/sheet.d.ts +5 -1
  244. package/dist/components/ui/sidebar-state.d.ts +82 -0
  245. package/dist/components/ui/sidebar.d.ts +5 -17
  246. package/dist/composition.recipes-COdiFhxB.js +19 -0
  247. package/dist/composition.recipes-COdiFhxB.js.map +1 -0
  248. package/dist/containers-CIxwbZt5.js +112 -0
  249. package/dist/containers-CIxwbZt5.js.map +1 -0
  250. package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
  251. package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
  252. package/dist/{copyable-ClBuk_UK.js → copyable-DIznBqiT.js} +7 -7
  253. package/dist/{copyable-ClBuk_UK.js.map → copyable-DIznBqiT.js.map} +1 -1
  254. package/dist/{data-display-DT_khPl_.js → data-display-BdgCAw8T.js} +277 -285
  255. package/dist/data-display-BdgCAw8T.js.map +1 -0
  256. package/dist/{date-DCrsDTZc.js → date-Cq8ioE4o.js} +5 -5
  257. package/dist/{date-DCrsDTZc.js.map → date-Cq8ioE4o.js.map} +1 -1
  258. package/dist/{date-picker-B2K3ucWn.js → date-picker-RlIzKom_.js} +501 -480
  259. package/dist/date-picker-RlIzKom_.js.map +1 -0
  260. package/dist/date-pickers-DY-CpXS1.js +179 -0
  261. package/dist/date-pickers-DY-CpXS1.js.map +1 -0
  262. package/dist/{display-hAc1HjpI.js → display-KsZLw9Ov.js} +9 -9
  263. package/dist/{display-hAc1HjpI.js.map → display-KsZLw9Ov.js.map} +1 -1
  264. package/dist/dropdown-menu-CLs8Lihj.js +194 -0
  265. package/dist/dropdown-menu-CLs8Lihj.js.map +1 -0
  266. package/dist/features/activities.js +302 -253
  267. package/dist/features/activities.js.map +1 -1
  268. package/dist/features/ai-chat.js +15 -14
  269. package/dist/features/ai-chat.js.map +1 -1
  270. package/dist/features/appointment-calendar.js +222 -220
  271. package/dist/features/appointment-calendar.js.map +1 -1
  272. package/dist/features/async-preview.js +11 -10
  273. package/dist/features/async-preview.js.map +1 -1
  274. package/dist/features/combobox.js +1 -1
  275. package/dist/features/comments.js +1 -1
  276. package/dist/features/data-view.js +13 -13
  277. package/dist/features/data-view.js.map +1 -1
  278. package/dist/features/email-composer.js +249 -249
  279. package/dist/features/email-composer.js.map +1 -1
  280. package/dist/features/event-calendar.js +264 -269
  281. package/dist/features/event-calendar.js.map +1 -1
  282. package/dist/features/filters.js +1 -1
  283. package/dist/features/global-search.js +167 -138
  284. package/dist/features/global-search.js.map +1 -1
  285. package/dist/features/kanban.js +6 -7
  286. package/dist/features/kanban.js.map +1 -1
  287. package/dist/features/map.js +269 -260
  288. package/dist/features/map.js.map +1 -1
  289. package/dist/features/media-library.js +827 -777
  290. package/dist/features/media-library.js.map +1 -1
  291. package/dist/features/mentions.js +1 -1
  292. package/dist/features/overlays.js +1 -1
  293. package/dist/features/products.js +1246 -1169
  294. package/dist/features/products.js.map +1 -1
  295. package/dist/features/questionnaire.js +13 -13
  296. package/dist/features/questionnaire.js.map +1 -1
  297. package/dist/features/resource-assignment.js +8 -8
  298. package/dist/features/resource.js +127 -123
  299. package/dist/features/resource.js.map +1 -1
  300. package/dist/features/rich-text-editor.js +2 -2
  301. package/dist/features/schema-form.js +254 -253
  302. package/dist/features/schema-form.js.map +1 -1
  303. package/dist/features/suggestions.js +3 -3
  304. package/dist/features/sync.js +3 -3
  305. package/dist/features/table.js +1 -1
  306. package/dist/features/theme-tweaker.js +95 -96
  307. package/dist/features/theme-tweaker.js.map +1 -1
  308. package/dist/{feedback-BYIhtitP.js → feedback-Dm4izqFn.js} +81 -80
  309. package/dist/feedback-Dm4izqFn.js.map +1 -0
  310. package/dist/{field-affordance-recipes-DZhnIL_Y.js → field-affordance-recipes-DWcNcOjh.js} +4 -4
  311. package/dist/field-affordance-recipes-DWcNcOjh.js.map +1 -0
  312. package/dist/{filters-DJVAveHA.js → filters-DzgSJpMK.js} +693 -645
  313. package/dist/filters-DzgSJpMK.js.map +1 -0
  314. package/dist/{form-field-CwH9y77i.js → form-field-BriWAXyg.js} +14 -8
  315. package/dist/form-field-BriWAXyg.js.map +1 -0
  316. package/dist/{form-sizing-BdP_Mf5p.js → form-sizing-Bs2qFUeE.js} +4 -4
  317. package/dist/form-sizing-Bs2qFUeE.js.map +1 -0
  318. package/dist/forms-C0RGnJTe.js +216 -0
  319. package/dist/forms-C0RGnJTe.js.map +1 -0
  320. package/dist/{forms-numeric-B_jraJaQ.js → forms-numeric-DIhghX1Q.js} +295 -291
  321. package/dist/forms-numeric-DIhghX1Q.js.map +1 -0
  322. package/dist/{header-BSfIEWbI.js → header-DMMxG__r.js} +67 -63
  323. package/dist/header-DMMxG__r.js.map +1 -0
  324. package/dist/header.recipes-BigdJjw1.js +6 -0
  325. package/dist/header.recipes-BigdJjw1.js.map +1 -0
  326. package/dist/hooks/useFormErrors.d.ts +1 -1
  327. package/dist/{hooks-ClH9thn4.js → hooks-DB6CJ4MR.js} +26 -14
  328. package/dist/hooks-DB6CJ4MR.js.map +1 -0
  329. package/dist/{icon-badge-DYKIwvOV.js → icon-badge-DZF-YjQp.js} +4 -4
  330. package/dist/{icon-badge-DYKIwvOV.js.map → icon-badge-DZF-YjQp.js.map} +1 -1
  331. package/dist/index.js +4 -5
  332. package/dist/input-CvyDQlY7.js +289 -0
  333. package/dist/input-CvyDQlY7.js.map +1 -0
  334. package/dist/input-DMBwAZmr.js +21 -0
  335. package/dist/input-DMBwAZmr.js.map +1 -0
  336. package/dist/item-DjCcM18E.js +277 -0
  337. package/dist/item-DjCcM18E.js.map +1 -0
  338. package/dist/layout/app-shell.js +1 -1
  339. package/dist/layout/auth.js +1 -1
  340. package/dist/layout/containers.js +1 -1
  341. package/dist/layout/header.js +1 -1
  342. package/dist/layout/hooks.js +1 -1
  343. package/dist/layout/navigation.js +1 -1
  344. package/dist/layout/page.js +2 -2
  345. package/dist/layout/settings.js +1 -1
  346. package/dist/layout/sidebar.js +3 -3
  347. package/dist/layout/workspace.js +1 -1
  348. package/dist/layout.js +11 -11
  349. package/dist/lib/affordance-geometry.generated.d.ts +41 -35
  350. package/dist/lib/control-group-recipes.d.ts +5 -5
  351. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  352. package/dist/lib/motion-recipes.d.ts +3 -0
  353. package/dist/lib/navigation-row-recipes.d.ts +7 -7
  354. package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
  355. package/dist/lib/portal-recipes.d.ts +3 -0
  356. package/dist/lib/token-merge.generated.d.ts +13 -10
  357. package/dist/lib/ui-provider/types.d.ts +1 -1
  358. package/dist/lib/utils.js +1 -1
  359. package/dist/map-demo-tile.svg +1 -1
  360. package/dist/{media-gallery-3zIVLMWH.js → media-gallery-C-vChPmE.js} +6 -6
  361. package/dist/{media-gallery-3zIVLMWH.js.map → media-gallery-C-vChPmE.js.map} +1 -1
  362. package/dist/{mentions-CGlEJ15c.js → mentions-0_4nWuI-.js} +10 -10
  363. package/dist/{mentions-CGlEJ15c.js.map → mentions-0_4nWuI-.js.map} +1 -1
  364. package/dist/{message-DZ_ruyUV.js → message-g8p7eVtN.js} +7 -7
  365. package/dist/message-g8p7eVtN.js.map +1 -0
  366. package/dist/metadata-list-C3MkU-Om.js +443 -0
  367. package/dist/metadata-list-C3MkU-Om.js.map +1 -0
  368. package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
  369. package/dist/motion-recipes-DitYv6P2.js.map +1 -0
  370. package/dist/navigation-C90-oQFq.js +255 -0
  371. package/dist/navigation-C90-oQFq.js.map +1 -0
  372. package/dist/{navigation-BzhHI3lo.js → navigation-DaRjthVk.js} +101 -82
  373. package/dist/navigation-DaRjthVk.js.map +1 -0
  374. package/dist/{navigation-row-recipes-BFLCk_Aq.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
  375. package/dist/navigation-row-recipes-BGVLvU_O.js.map +1 -0
  376. package/dist/{number-DbV1Dija.js → number-CRU3kGuk.js} +5 -5
  377. package/dist/{number-DbV1Dija.js.map → number-CRU3kGuk.js.map} +1 -1
  378. package/dist/overflow-tab-bar-IVFVQFV6.js +172 -0
  379. package/dist/overflow-tab-bar-IVFVQFV6.js.map +1 -0
  380. package/dist/overlays-BSgCtM2v.js +1013 -0
  381. package/dist/overlays-BSgCtM2v.js.map +1 -0
  382. package/dist/page-DUUKDAjo.js +331 -0
  383. package/dist/page-DUUKDAjo.js.map +1 -0
  384. package/dist/page-header-commands-7P3sfE9u.js +193 -0
  385. package/dist/page-header-commands-7P3sfE9u.js.map +1 -0
  386. package/dist/{pagination-BL25hu2s.js → pagination-CgCjElfu.js} +7 -7
  387. package/dist/{pagination-BL25hu2s.js.map → pagination-CgCjElfu.js.map} +1 -1
  388. package/dist/popover-B85RenIl.js +201 -0
  389. package/dist/popover-B85RenIl.js.map +1 -0
  390. package/dist/{popover-menu-Cn9rUkdc.js → popover-menu-DlnQ2zlR.js} +7 -7
  391. package/dist/{popover-menu-Cn9rUkdc.js.map → popover-menu-DlnQ2zlR.js.map} +1 -1
  392. package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DdiEp0rd.js} +18 -11
  393. package/dist/popover.recipes-DdiEp0rd.js.map +1 -0
  394. package/dist/portal-recipes-BpsV_iRw.js +9 -0
  395. package/dist/portal-recipes-BpsV_iRw.js.map +1 -0
  396. package/dist/{primitives-BFK08r9M.js → primitives-ByWgGUgt.js} +6 -6
  397. package/dist/{primitives-BFK08r9M.js.map → primitives-ByWgGUgt.js.map} +1 -1
  398. package/dist/primitives.js +4 -4
  399. package/dist/{progress-B1VnCT0K.js → progress-BJhQP9WX.js} +9 -9
  400. package/dist/{progress-B1VnCT0K.js.map → progress-BJhQP9WX.js.map} +1 -1
  401. package/dist/{receipt-BVSOH3Xo.js → receipt-tOc7B3hw.js} +7 -7
  402. package/dist/receipt-tOc7B3hw.js.map +1 -0
  403. package/dist/{rich-text-GOUyKQ-s.js → rich-text-Dth5E882.js} +4 -4
  404. package/dist/{rich-text-GOUyKQ-s.js.map → rich-text-Dth5E882.js.map} +1 -1
  405. package/dist/{rich-text-editor-cRLC-eBK.js → rich-text-editor-C1fOjBTd.js} +429 -430
  406. package/dist/rich-text-editor-C1fOjBTd.js.map +1 -0
  407. package/dist/{rich-text-editor-toolbar-DfXg0-VC.js → rich-text-editor-toolbar-laT3tpBT.js} +33 -29
  408. package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +1 -0
  409. package/dist/{scroll-area-DcI-M1UT.js → scroll-area-B0dB2cBi.js} +2 -2
  410. package/dist/{scroll-area-DcI-M1UT.js.map → scroll-area-B0dB2cBi.js.map} +1 -1
  411. package/dist/{separator-Bom7NsGO.js → separator-Bb17I4pu.js} +2 -2
  412. package/dist/{separator-Bom7NsGO.js.map → separator-Bb17I4pu.js.map} +1 -1
  413. package/dist/{separator-BDV-Y648.js → separator-Ct_WSWTJ.js} +3 -3
  414. package/dist/{separator-BDV-Y648.js.map → separator-Ct_WSWTJ.js.map} +1 -1
  415. package/dist/services/actions.js +1 -1
  416. package/dist/settings-Bar5wiSo.js +167 -0
  417. package/dist/settings-Bar5wiSo.js.map +1 -0
  418. package/dist/sheet-BGPERY55.js +250 -0
  419. package/dist/sheet-BGPERY55.js.map +1 -0
  420. package/dist/sidebar-D-JYMMbY.js +686 -0
  421. package/dist/sidebar-D-JYMMbY.js.map +1 -0
  422. package/dist/sidebar-f9gRWXIR.js +1001 -0
  423. package/dist/sidebar-f9gRWXIR.js.map +1 -0
  424. package/dist/skeleton-BapcJd9C.js +265 -0
  425. package/dist/skeleton-BapcJd9C.js.map +1 -0
  426. package/dist/smart-card-CW0hjetE.js +617 -0
  427. package/dist/smart-card-CW0hjetE.js.map +1 -0
  428. package/dist/{structure-BmisBK-3.js → structure-DuxKl954.js} +3 -3
  429. package/dist/{structure-BmisBK-3.js.map → structure-DuxKl954.js.map} +1 -1
  430. package/dist/{structure.recipes-EPz60cU8.js → structure.recipes-BB4-n58V.js} +2 -2
  431. package/dist/{structure.recipes-EPz60cU8.js.map → structure.recipes-BB4-n58V.js.map} +1 -1
  432. package/dist/style.css +1 -1
  433. package/dist/{table-DsfzoUia.js → table-B4TE7iOV.js} +3 -3
  434. package/dist/{table-DsfzoUia.js.map → table-B4TE7iOV.js.map} +1 -1
  435. package/dist/{table-BweFy_P9.js → table-CFOWY9pQ.js} +394 -388
  436. package/dist/table-CFOWY9pQ.js.map +1 -0
  437. package/dist/{tabs-CDocW5D1.js → tabs-e7ko9S2o.js} +11 -11
  438. package/dist/tabs-e7ko9S2o.js.map +1 -0
  439. package/dist/{text-inputs-f9Ia-aCi.js → text-inputs-B1culiSK.js} +107 -104
  440. package/dist/text-inputs-B1culiSK.js.map +1 -0
  441. package/dist/{text.styles-g4He6UIW.js → text.styles-B64My8RZ.js} +25 -10
  442. package/dist/text.styles-B64My8RZ.js.map +1 -0
  443. package/dist/theme.css +192 -149
  444. package/dist/{timelines-CwM_9IhD.js → timelines-D3Sl9ueq.js} +13 -12
  445. package/dist/timelines-D3Sl9ueq.js.map +1 -0
  446. package/dist/tooltip-8wz5S_Zr.js +113 -0
  447. package/dist/tooltip-8wz5S_Zr.js.map +1 -0
  448. package/dist/{tree-WnKQzwbq.js → tree-CzUJHnFs.js} +9 -9
  449. package/dist/{tree-WnKQzwbq.js.map → tree-CzUJHnFs.js.map} +1 -1
  450. package/dist/typography/rich-text.js +1 -1
  451. package/dist/typography-BQnine1k.js +117 -0
  452. package/dist/typography-BQnine1k.js.map +1 -0
  453. package/dist/typography.js +1 -1
  454. package/dist/ui-provider-C-74NVLc.js +178 -0
  455. package/dist/ui-provider-C-74NVLc.js.map +1 -0
  456. package/dist/ui-provider.js +2 -3
  457. package/dist/{upload-CXyxmQBP.js → upload-BOW6U2tI.js} +25 -24
  458. package/dist/upload-BOW6U2tI.js.map +1 -0
  459. package/dist/{upload-queue-Boscubn9.js → upload-queue-qUXn1ykN.js} +16 -14
  460. package/dist/upload-queue-qUXn1ykN.js.map +1 -0
  461. package/dist/{usage-card-BhO5eqkX.js → usage-card-BeSLY0i0.js} +145 -137
  462. package/dist/usage-card-BeSLY0i0.js.map +1 -0
  463. package/dist/{utils-BRhFDwuU.js → utils-B6kKb8jB.js} +303 -144
  464. package/dist/utils-B6kKb8jB.js.map +1 -0
  465. package/dist/value-inputs-skdVB2zh.js +980 -0
  466. package/dist/value-inputs-skdVB2zh.js.map +1 -0
  467. package/dist/{value-typography-BP8OG6h5.js → value-typography-uAmWUAL1.js} +2 -2
  468. package/dist/{value-typography-BP8OG6h5.js.map → value-typography-uAmWUAL1.js.map} +1 -1
  469. package/dist/workspace-DHeHv0qw.js +411 -0
  470. package/dist/workspace-DHeHv0qw.js.map +1 -0
  471. package/docs/consumer-skill/SKILL.md +15 -129
  472. package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
  473. package/docs/consumer-skill/examples/app-layout.tsx +74 -13
  474. package/docs/consumer-skill/examples/authentication.tsx +77 -0
  475. package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
  476. package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
  477. package/docs/consumer-skill/examples/detail.tsx +5 -4
  478. package/docs/consumer-skill/examples/edit.tsx +30 -38
  479. package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
  480. package/docs/consumer-skill/examples/index-table.tsx +4 -4
  481. package/docs/consumer-skill/examples/manifest.json +88 -1
  482. package/docs/consumer-skill/examples/product-media.tsx +41 -0
  483. package/docs/consumer-skill/examples/product-parts.tsx +81 -0
  484. package/docs/consumer-skill/examples/rhf-bindings.tsx +86 -0
  485. package/docs/consumer-skill/examples/rhf-edit-page.tsx +141 -0
  486. package/docs/consumer-skill/examples/rhf-overlay-form.tsx +105 -0
  487. package/docs/consumer-skill/examples/rhf-transport.tsx +28 -0
  488. package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
  489. package/docs/consumer-skill/references/agents-md.md +23 -11
  490. package/docs/consumer-skill/references/analytics.md +18 -1
  491. package/docs/consumer-skill/references/authentication.md +42 -0
  492. package/docs/consumer-skill/references/commerce-composition.md +97 -0
  493. package/docs/consumer-skill/references/component-contracts.json +325201 -0
  494. package/docs/consumer-skill/references/composition-mapping.md +106 -0
  495. package/docs/consumer-skill/references/composition.md +198 -46
  496. package/docs/consumer-skill/references/critique-rubric.md +98 -0
  497. package/docs/consumer-skill/references/custom-composition.md +261 -0
  498. package/docs/consumer-skill/references/data-reading.md +79 -0
  499. package/docs/consumer-skill/references/design-contract.md +43 -9
  500. package/docs/consumer-skill/references/discovery.md +109 -8
  501. package/docs/consumer-skill/references/domain-structures.md +124 -0
  502. package/docs/consumer-skill/references/installation.md +51 -36
  503. package/docs/consumer-skill/references/integration.md +41 -2
  504. package/docs/consumer-skill/references/product-composition.md +94 -0
  505. package/docs/consumer-skill/references/public-api.json +4390 -475
  506. package/docs/consumer-skill/references/review.md +47 -5
  507. package/docs/consumer-skill/references/rhf-workflows.md +93 -0
  508. package/docs/consumer-skill/references/screen-archetypes.md +34 -0
  509. package/docs/consumer-skill/references/screen-decisions.md +126 -0
  510. package/docs/consumer-skill/references/theming.md +25 -27
  511. package/docs/consumer-skill/references/tokens.json +20 -11
  512. package/docs/consumer-skill/references/view-craft.md +153 -0
  513. package/docs/consumer-skill/references/view-spec.md +73 -0
  514. package/docs/consumer-skill/references/workflows.md +9 -2
  515. package/docs/consumer-skill/scripts/composition-policy.mjs +39 -3
  516. package/docs/consumer-skill/scripts/composition-schema.d.mts +2 -0
  517. package/docs/consumer-skill/scripts/composition-schema.mjs +32 -0
  518. package/docs/consumer-skill/scripts/composition.mjs +254 -0
  519. package/docs/consumer-skill/scripts/discovery.mjs +96 -10
  520. package/docs/consumer-skill/scripts/inspect-component.mjs +11 -0
  521. package/docs/consumer-skill/scripts/inspect-tokens.mjs +11 -0
  522. package/docs/consumer-skill/scripts/inspection.mjs +193 -0
  523. package/docs/consumer-skill/scripts/map-composition.mjs +12 -0
  524. package/docs/consumer-skill/scripts/setup-skills.mjs +111 -0
  525. package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
  526. package/docs/consumer-skills/themelia-components/SKILL.md +31 -0
  527. package/docs/consumer-skills/themelia-composition/SKILL.md +34 -0
  528. package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
  529. package/docs/consumer-skills/themelia-forms/SKILL.md +12 -0
  530. package/docs/consumer-skills/themelia-foundation/SKILL.md +15 -0
  531. package/docs/consumer-skills/themelia-tokenization/SKILL.md +42 -0
  532. package/package.json +4 -2
  533. package/templates/README.md +39 -0
  534. package/templates/admin-shell-template.tsx +382 -0
  535. package/templates/analytics-operations-template.tsx +376 -0
  536. package/templates/customers-template.tsx +509 -0
  537. package/templates/index.ts +29 -0
  538. package/templates/orders-template.tsx +1102 -0
  539. package/templates/products-template.tsx +834 -0
  540. package/templates/user-permissions-template.tsx +450 -0
  541. package/dist/accordion-Cjb6sx0G.js.map +0 -1
  542. package/dist/action-menu-CllU52Mm.js +0 -280
  543. package/dist/action-menu-CllU52Mm.js.map +0 -1
  544. package/dist/affordance-geometry.generated-tF36bREk.js.map +0 -1
  545. package/dist/ai-artifact-DvTwDVyL.js.map +0 -1
  546. package/dist/app-shell-C4FhvCqF.js +0 -236
  547. package/dist/app-shell-C4FhvCqF.js.map +0 -1
  548. package/dist/auth-BGua8ouh.js.map +0 -1
  549. package/dist/avatar-DAPlDvhJ.js.map +0 -1
  550. package/dist/base/cascader.js.map +0 -1
  551. package/dist/batch-action-bar-DnUJ21NQ.js.map +0 -1
  552. package/dist/button-DVzspB_G.js.map +0 -1
  553. package/dist/buttons-DPZekJFu.js.map +0 -1
  554. package/dist/cards-BaBZR-AU.js +0 -68
  555. package/dist/cards-BaBZR-AU.js.map +0 -1
  556. package/dist/chart-ZOYyK2xG.js +0 -155
  557. package/dist/chart-ZOYyK2xG.js.map +0 -1
  558. package/dist/checkbox-AWIhNhmo.js.map +0 -1
  559. package/dist/choice-inputs-CNHvARCJ.js +0 -770
  560. package/dist/choice-inputs-CNHvARCJ.js.map +0 -1
  561. package/dist/code-block-DeneBJR_.js.map +0 -1
  562. package/dist/combobox-DaHESuiL.js +0 -355
  563. package/dist/combobox-DaHESuiL.js.map +0 -1
  564. package/dist/combobox-Dxo2fAYQ.js.map +0 -1
  565. package/dist/command-C25VMRII.js.map +0 -1
  566. package/dist/comments-DD0DUPwJ.js.map +0 -1
  567. package/dist/containers-Mu1LMGV1.js +0 -103
  568. package/dist/containers-Mu1LMGV1.js.map +0 -1
  569. package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
  570. package/dist/data-display-DT_khPl_.js.map +0 -1
  571. package/dist/date-picker-B2K3ucWn.js.map +0 -1
  572. package/dist/date-pickers-Ds8gLaoP.js +0 -175
  573. package/dist/date-pickers-Ds8gLaoP.js.map +0 -1
  574. package/dist/dropdown-menu-Cl4X7L5S.js +0 -193
  575. package/dist/dropdown-menu-Cl4X7L5S.js.map +0 -1
  576. package/dist/feedback-BYIhtitP.js.map +0 -1
  577. package/dist/field-affordance-recipes-DZhnIL_Y.js.map +0 -1
  578. package/dist/filters-DJVAveHA.js.map +0 -1
  579. package/dist/form-field-CwH9y77i.js.map +0 -1
  580. package/dist/form-sizing-BdP_Mf5p.js.map +0 -1
  581. package/dist/forms-B9G_xwzi.js +0 -194
  582. package/dist/forms-B9G_xwzi.js.map +0 -1
  583. package/dist/forms-numeric-B_jraJaQ.js.map +0 -1
  584. package/dist/header-BSfIEWbI.js.map +0 -1
  585. package/dist/hooks-ClH9thn4.js.map +0 -1
  586. package/dist/input-CZw8iU99.js +0 -21
  587. package/dist/input-CZw8iU99.js.map +0 -1
  588. package/dist/input-DQdEd0YD.js +0 -263
  589. package/dist/input-DQdEd0YD.js.map +0 -1
  590. package/dist/item-K5_ghvze.js +0 -275
  591. package/dist/item-K5_ghvze.js.map +0 -1
  592. package/dist/message-DZ_ruyUV.js.map +0 -1
  593. package/dist/metadata-list-8N16ZMW_.js +0 -405
  594. package/dist/metadata-list-8N16ZMW_.js.map +0 -1
  595. package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
  596. package/dist/navigation-Bnotn4AQ.js +0 -145
  597. package/dist/navigation-Bnotn4AQ.js.map +0 -1
  598. package/dist/navigation-BzhHI3lo.js.map +0 -1
  599. package/dist/navigation-row-recipes-BFLCk_Aq.js.map +0 -1
  600. package/dist/overflow-tab-bar-CWY7Nogn.js +0 -282
  601. package/dist/overflow-tab-bar-CWY7Nogn.js.map +0 -1
  602. package/dist/overlays-tMkF-VAN.js +0 -1003
  603. package/dist/overlays-tMkF-VAN.js.map +0 -1
  604. package/dist/page-CL9YeH_V.js +0 -224
  605. package/dist/page-CL9YeH_V.js.map +0 -1
  606. package/dist/page-header-commands-DOb6WsfD.js +0 -126
  607. package/dist/page-header-commands-DOb6WsfD.js.map +0 -1
  608. package/dist/popover-gnTOhbFM.js +0 -198
  609. package/dist/popover-gnTOhbFM.js.map +0 -1
  610. package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
  611. package/dist/receipt-BVSOH3Xo.js.map +0 -1
  612. package/dist/rich-text-editor-cRLC-eBK.js.map +0 -1
  613. package/dist/rich-text-editor-toolbar-DfXg0-VC.js.map +0 -1
  614. package/dist/settings-ybnjVwbd.js +0 -171
  615. package/dist/settings-ybnjVwbd.js.map +0 -1
  616. package/dist/sheet-ijlsjq-n.js +0 -213
  617. package/dist/sheet-ijlsjq-n.js.map +0 -1
  618. package/dist/sidebar-Db6gkh3U.js +0 -619
  619. package/dist/sidebar-Db6gkh3U.js.map +0 -1
  620. package/dist/sidebar-DkTO4VTO.js +0 -512
  621. package/dist/sidebar-DkTO4VTO.js.map +0 -1
  622. package/dist/skeleton-Byjnt7qr.js +0 -264
  623. package/dist/skeleton-Byjnt7qr.js.map +0 -1
  624. package/dist/smart-card-DiC5aac3.js +0 -604
  625. package/dist/smart-card-DiC5aac3.js.map +0 -1
  626. package/dist/table-BweFy_P9.js.map +0 -1
  627. package/dist/tabs-CDocW5D1.js.map +0 -1
  628. package/dist/text-inputs-f9Ia-aCi.js.map +0 -1
  629. package/dist/text.styles-g4He6UIW.js.map +0 -1
  630. package/dist/theme-scope-BJ6eE2xt.js +0 -50
  631. package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
  632. package/dist/timelines-CwM_9IhD.js.map +0 -1
  633. package/dist/tooltip-yiRJUFjp.js +0 -111
  634. package/dist/tooltip-yiRJUFjp.js.map +0 -1
  635. package/dist/typography-UTnveOEy.js +0 -117
  636. package/dist/typography-UTnveOEy.js.map +0 -1
  637. package/dist/ui-provider-C_U0Xma4.js +0 -136
  638. package/dist/ui-provider-C_U0Xma4.js.map +0 -1
  639. package/dist/upload-CXyxmQBP.js.map +0 -1
  640. package/dist/upload-queue-Boscubn9.js.map +0 -1
  641. package/dist/usage-card-BhO5eqkX.js.map +0 -1
  642. package/dist/use-mobile-vaLKwgyf.js +0 -15
  643. package/dist/use-mobile-vaLKwgyf.js.map +0 -1
  644. package/dist/utils-BRhFDwuU.js.map +0 -1
  645. package/dist/value-inputs-TaX4OjNk.js +0 -963
  646. package/dist/value-inputs-TaX4OjNk.js.map +0 -1
  647. package/dist/workspace-B-OEm3Kf.js +0 -408
  648. package/dist/workspace-B-OEm3Kf.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ ---
2
+ name: themelia-design
3
+ description: Use when designing or redesigning a Themelia view from real records, or when a screen works but reads poorly; reads the data for what matters, ranks information, chooses encodings and emphasis, and critiques rendered screens with a scored rubric. Not for component APIs or theme tokens.
4
+ ---
5
+
6
+ # Themelia design
7
+
8
+ Correct owners and passing checks make a view valid, not clear. This skill adds
9
+ the designer's part: what the view shows, what the eye reaches first, and
10
+ whether the rendered result lets the user decide quickly. Use
11
+ **themelia-composition** for owner selection, surfaces and inset ownership,
12
+ **themelia-components** for installed APIs and **themelia-tokenization** for
13
+ themes and density.
14
+
15
+ ## Work in this order
16
+
17
+ 1. **Read the data.** Read a typical, a large, an exceptional and an empty
18
+ record, then write the data brief: the decision, three facts that matter, the
19
+ anomaly, and states to show or omit. See
20
+ [data reading](../../consumer-skill/references/data-reading.md).
21
+ 2. **Write the view spec.** Rank information as must, should, could and omit;
22
+ name the focal point; sketch 390 and 1440 wireframes in text; choose an
23
+ encoding per fact. See [view spec](../../consumer-skill/references/view-spec.md)
24
+ and [screen decisions](../../consumer-skill/references/screen-decisions.md).
25
+ 3. **Find owners.** Map regions to owners with the finder, mapper and inspector
26
+ described in [discovery](../../consumer-skill/references/discovery.md);
27
+ [archetypes](../../consumer-skill/references/screen-archetypes.md) and
28
+ [metrics](../../consumer-skill/references/analytics.md) give starting points.
29
+ 4. **Build one representative subject**, then the rest of the view.
30
+ 5. **Render and critique.** Screenshot 390×844 and 1440×900 in light and dark
31
+ with the opened, error and accepted states the task touches. Run the census
32
+ and score the [critique rubric](../../consumer-skill/references/critique-rubric.md).
33
+ 6. **Fix and repeat** at most three rounds, then report scores, decisions and
34
+ what stayed unverified.
35
+
36
+ ## Taste, briefly
37
+
38
+ [View craft](../../consumer-skill/references/view-craft.md) holds the detail:
39
+
40
+ - One focal point per view and per region.
41
+ - One solid primary command per surface; at most three text levels per region;
42
+ tones only for status that changes the action.
43
+ - Encode by the fact's shape: a figure with its baseline, a trend where shape
44
+ matters, a table for comparable rows, a list for rows that differ.
45
+ - Label only ambiguous values; omit zero and not-applicable counters.
46
+ - Gaps grow outward; few edges; one frame per independent subject.
47
+ - Most improvements remove something. Never add decoration, colours, tokens or
48
+ anatomy overrides to make a view look designed.
49
+
50
+ ## Delegate to the designer agent
51
+
52
+ For a whole view or a redesign, run the
53
+ [themelia-ui-designer agent](../../consumer-skill/agents/themelia-ui-designer.md):
54
+ `design` mode builds and self-critiques; `review` mode, in a fresh agent, gives
55
+ an independent read-only score.
@@ -0,0 +1,12 @@
1
+ ---
2
+ name: themelia-forms
3
+ description: Compatibility route for older Themelia form-skill instructions; use themelia-components for exact bindings and themelia-composition for complete edit/create workflows.
4
+ ---
5
+
6
+ # Themelia forms compatibility route
7
+
8
+ Use [themelia-components](../themelia-components/SKILL.md) to inspect actual value/event, callback, ref and controlled-state contracts. Use [themelia-composition](../themelia-composition/SKILL.md) for complete edit pages and overlay workflows.
9
+
10
+ The full [RHF workflows](../../consumer-skill/references/rhf-workflows.md), [typed bindings](../../consumer-skill/examples/rhf-bindings.tsx), [edit page](../../consumer-skill/examples/rhf-edit-page.tsx) and [overlay form](../../consumer-skill/examples/rhf-overlay-form.tsx) remain shared resources. Validation, dirty state, arrays, async transport, failure drafts, accepted-value reset and focus restoration retain their contracts.
11
+
12
+ This package path is retained for existing instructions. Install the complete current bundle through [installation](../../consumer-skill/references/installation.md); separately installed skills are not replaced automatically.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: themelia-foundation
3
+ description: Compatibility route for older Themelia instructions naming themelia-foundation; use the current components, tokenization, composition and design capabilities for new work.
4
+ ---
5
+
6
+ # Themelia foundation compatibility route
7
+
8
+ The canonical capability split is now:
9
+
10
+ - [themelia-components](../themelia-components/SKILL.md): installed setup, owner discovery, exact API inspection and framework integration.
11
+ - [themelia-tokenization](../themelia-tokenization/SKILL.md): CSS/theme setup, semantic roots, typography and scoped themes.
12
+ - [themelia-composition](../themelia-composition/SKILL.md): shell/route ownership, screen hierarchy and delivery.
13
+ - [themelia-design](../themelia-design/SKILL.md): data briefs, view specs and rubric-scored critique of rendered views.
14
+
15
+ Follow the matching capability. [Installation](../../consumer-skill/references/installation.md) explains the complete current bundle. This package path is retained for existing instructions; separately installed skills are not replaced automatically.
@@ -0,0 +1,42 @@
1
+ ---
2
+ name: themelia-tokenization
3
+ description: Build consistent domain structures with Themelia base/layout components, semantic JSX and token-backed Tailwind; also theme shared spacing, density, typography, colors and portals. Not library maintenance.
4
+ ---
5
+
6
+ # Themelia tokenization
7
+
8
+ Use mostly public base components and layout blocks. When a domain needs a particular structure, compose their content with semantic JSX and token-backed Tailwind on app-owned elements. **themelia-components** verifies APIs; **themelia-composition** decides hierarchy; **themelia-design** judges the rendered view. Read [domain structures](../../consumer-skill/references/domain-structures.md) and its executable allocation example; the [design contract](../../consumer-skill/references/design-contract.md) owns shared roles.
9
+
10
+ ## Inspect before applying
11
+
12
+ Resolve installed identity and active CSS through [installation](../../consumer-skill/references/installation.md). Shipped component CSS and app-authored Tailwind compilation are separate setup paths. Override after package styles or inside ThemeScope.
13
+
14
+ ```sh
15
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs gap-space-xl
16
+ node node_modules/themelia-react-ui/docs/consumer-skill/scripts/inspect-tokens.mjs --space-scale
17
+ ```
18
+
19
+ Read overrideRoot and exact spelling. Roots are settings; derived --spacing-*, --radius-* and --container-* aliases are not. Do not read those aliases in scoped calc expressions. The lookup does not index semantic colors; follow its stylesheet/theme reads.
20
+
21
+ ## Compose without drift
22
+
23
+ Public props/parts own controls, rows, text and surfaces. Stack/Grid/AdaptiveGrid own routine sibling layout. Tailwind owns specialized tracks, parent queries, alignment, overflow and drawing on app markup. A valid token on the wrong owner still drifts: do not repad a public panel/menu or redraw its states. Use fitting domain owners; custom JSX shapes additional relationships.
24
+
25
+ | Relationship | Public gap / shipped default |
26
+ | --- | --- |
27
+ | Title + description | dense / normal: 2 / 4px |
28
+ | Compact affordances | xs: 4px |
29
+ | Commands | md: 8px |
30
+ | Related fields/content | xl: 16px |
31
+ | Independent subjects/columns | 2xl: 24px |
32
+ | Major page regions | 3xl: 32px |
33
+
34
+ Page owns gutters, Card owns insets, structures own peer gaps. Card flat removes paint, not its md inset (24px). Use padding none when an ancestor owns that room; align flat/painted peer content edges. A block inside adds no second Card/inset. Read [semantic roles](../../consumer-skill/references/design-contract.md#semantic-roles), not a screenshot's measurements.
35
+
36
+ Use Heading/Text props for copy roles and primitives for Money/Date/Number/contact/missing values. Semantic tag is separate from visual size. Rich trigger/slot labels can override inherited typography: preserve the owner's label scale, reserving larger headings for the actual subject. Density does not shrink primary content into metadata.
37
+
38
+ Pair shadcn surfaces/foregrounds. Badges are neutral for categories/counts; status tones communicate status. Numbers use UI sans/tabular figures; MonoValue is for codes. Existing action/control, row, surface, icon/avatar and shell roots cover geometry. --space-scale changes gaps/insets; --density-scale changes controls/rows. First repair duplicated padding and priorities before proposing mobile root changes. Use [theme boundaries](../../consumer-skill/references/theming.md); avoid private recipes, local focus scales, raw palettes and per-component tokens.
39
+
40
+ ## Verify the effect
41
+
42
+ Vary spacing/density independently. Inspect both themes, narrow/wide parents, text hierarchy, adjoining heights, corners and clipping. Open a real menu/picker/overlay in the scoped theme and verify portal inheritance. Run app checks and [review](../../consumer-skill/references/review.md), execute keyboard/focus and relevant invalid/disabled states, and report source, inspected appearance and behavior separately. No Themelia theme-publishing CLI exists.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "themelia-react-ui",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "A composable React UI library for modern admin applications, built on Base UI and Tailwind with shadcn-compatible themes, shared design tokens, reusable layouts, blocks and workflows.",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -30,6 +30,8 @@
30
30
  "README.md",
31
31
  "CHANGELOG.md",
32
32
  "docs/consumer-skill",
33
+ "docs/consumer-skills",
34
+ "templates",
33
35
  "THIRD_PARTY_NOTICES.md"
34
36
  ],
35
37
  "sideEffects": [
@@ -477,7 +479,7 @@
477
479
  "check:maps": "node scripts/test-client-boundaries.mjs --built",
478
480
  "build:docs": "node scripts/build-static-docs.mjs",
479
481
  "check:static-docs": "node scripts/check-static-docs.mjs",
480
- "check:agent": "node --test scripts/test-consumer-discovery.mjs scripts/test-consumer-composition.mjs scripts/test-consumer-evals.mjs scripts/test-button-codemod.mjs scripts/test-consumer-skill-assets.mjs scripts/test-static-docs.mjs scripts/test-fixture-install.mjs && npm run check:skill",
482
+ "check:agent": "node --test scripts/test-consumer-discovery.mjs scripts/test-consumer-inspection.mjs scripts/test-consumer-mapper.mjs scripts/test-composition-metadata.mjs scripts/test-consumer-composition.mjs scripts/test-consumer-evals.mjs scripts/test-button-codemod.mjs scripts/test-consumer-skill-assets.mjs scripts/test-static-docs.mjs scripts/test-fixture-install.mjs && npm run check:skill",
481
483
  "check:release": "npm run check:all && npm run check:agent && npm run build:docs && npm run check:static-docs"
482
484
  },
483
485
  "peerDependencies": {
@@ -0,0 +1,39 @@
1
+ # Admin composition examples
2
+
3
+ These shipped, copyable application blueprints demonstrate `themelia-react-ui` through its public imports. Open `/?page=templates` after `npm run dev` for the shared shell, or use the individual catalogue pages under Templates. They ship in `node_modules/themelia-react-ui/templates/` as source assets, not additional npm entrypoints. Copy and adapt them into the application.
4
+
5
+ The examples use local, in-memory records. A reload resets them. Connect your app's data loading, persistence, authorization, notification delivery and navigation at the shown callbacks; no backend or authentication service is included. Publishing settings and permissions here describe sample state, not server enforcement.
6
+
7
+ For production create/edit workflows, adapt the [RHF edit page](../docs/consumer-skill/examples/rhf-edit-page.tsx) and [RHF overlay form](../docs/consumer-skill/examples/rhf-overlay-form.tsx) to these domain screens. Replace their local draft state with RHF values, validation, arrays and dirty tracking, and await the app's complete transport before accepting a saved baseline. The [forms workflow guide](../docs/consumer-skill/references/rhf-workflows.md) supplies typed control bindings and Inertia/TanStack integration seams.
8
+
9
+ | File | Export | Composition demonstrated |
10
+ | --- | --- | --- |
11
+ | [admin-shell-template.tsx](admin-shell-template.tsx) | `AdminStarterShell`, `AdminTemplatesShowcase` | UIProvider defaults, all five AppLayout presets, AppSidebar, workspace context, breadcrumbs, notifications and account/settings menus |
12
+ | [orders-template.tsx](orders-template.tsx) | `OrdersAdminTemplate` | Page with a fulfillment primary command, TwoColumnLayout, Card, lifecycle-grouped Item rows, MetadataList, Money, AddressCard, PaymentMethod, ActivityLog and refund/tracking/note dialogs |
13
+ | [products-template.tsx](products-template.tsx) | `ProductsAdminTemplate` | ProductVariantsManager, ProductVariantDetails/Editor, SeoListingCard, publishing/organization forms and variant duplication |
14
+ | [customers-template.tsx](customers-template.tsx) | `CustomersAdminTemplate` | MetricBar, DataTable order history, MetadataList, AddressCard, ActivityLog, contact drafts and validated store-credit submission |
15
+ | [user-permissions-template.tsx](user-permissions-template.tsx) | `UserPermissionsTemplate` | FormField, DirtyStateBanner, role-based Page save and confirmed suspend commands, role presets and editable permission groups with a saved/discard baseline |
16
+ | [analytics-operations-template.tsx](analytics-operations-template.tsx) | `AnalyticsOperationsTemplate` | Numeric MetricBar KPIs, MetricComparison, ActivityHeatmap, UsageCard and an app-owned operations list |
17
+
18
+ For layout selection, read the [owner map](../docs/consumer-skill/references/composition.md#structure-and-spacing) and [typed layout-block recipe](../docs/consumer-skill/examples/layout-blocks.tsx). Use horizontal Stack for rows, Grid/GridCell for prescribed columns and spans, AdaptiveGrid for parent-driven equal tiles, and TwoColumnLayout for a main/support split.
19
+
20
+ ## Boundaries to preserve when adapting
21
+
22
+ - `AdminTemplatesShowcase` supplies UIProvider defaults; embedded preview pages inherit the catalogue's provider. `AdminStarterShell` inherits the application's provider. `defaultDensity` belongs to the standalone showcase.
23
+ - Page owns gutters and the default resource measure, TwoColumnLayout owns the main/aside split, and Stack/Grid own peer gaps. These record and overview routes keep the default measure; only a wide directory or comparison opts into `maxWidth="full"`. Ordinary Cards retain the default padding. Compact control density does not shrink Cards. Peer Card stacks use `gap="2xl"`, matching Page and TwoColumnLayout’s 24px default rhythm in both axes; copy and form groups keep their own gaps.
24
+ - A headed address, payment, SEO or variants panel uses its own `surface="card"`. It delegates to Card's aligned header/body anatomy and inherits provider separators. Do not wrap it in an untitled padded Card. Omitted surface keeps these blocks unframed for embedding; an embedded header does not inherit an unintended Card separator.
25
+ - Put page commands in Page's header as `primaryAction` (one) and ordered
26
+ `secondaryActions`; the header owns their treatment, overflow and narrow-width
27
+ collapse. A destructive command is a `destructive: true` secondary action that
28
+ opens ConfirmDialog. Put subject commands in Card's header. Status/count badges use `titleSuffix`;
29
+ a status shown in the page header is not repeated in a card or fact list. Spacing separates a card's header, body and footer; a body separator is appropriate only between distinct body sections.
30
+ - Metrics use numeric values and formatting hints. Context such as “12 orders” belongs in a subtitle; it is not a directional trend. The analytics period changes the KPI strip; comparisons, heatmap and quota data are separately described monthly/current snapshots.
31
+ - Overlay edits start from a snapshot and update committed display state only on Save. Native forms use `formId` so required fields and submission ownership are preserved. App persistence should use the overlay's async contract with pending/error/retry handling before committing; do not bind a draft editor directly to committed record data.
32
+ - Local sidebar navigation preserves native link modifiers and closes the mobile drawer. Replace the local route map with your router adapter and record-aware destinations. Sample records across these pages are independent; a customer route is not an order's customer resolver.
33
+ - Choose the component that fits the subject. A lifecycle-specific order item group can use Item; editable permission groups can use ToggleField. Do not replace them with an unrelated block merely to increase the component count.
34
+
35
+ ## Checks
36
+
37
+ `npm run typecheck`, `npm run lint` and `npm run check:design-lint` include `templates/`. `npm run check:package` also typechecks these sources against the installed tarball, from the installed tarball, alongside the shipped consumer-skill recipes. `node docs/consumer-skill/scripts/check-composition.mjs templates` is a supplementary static review; unresolved dynamic spreads still need source and interaction review.
38
+
39
+ `tests/browser/templates.spec.ts` covers Card boundaries at desktop/mobile widths in both themes, mobile navigation and contact/credit submission. The dated verification report records the images actually inspected and the checks executed. Static checks and screenshots do not establish backend integration.
@@ -0,0 +1,382 @@
1
+ import { useState, type ReactNode } from 'react';
2
+ import {
3
+ BarChart3,
4
+ Package,
5
+ Settings,
6
+ ShoppingBag,
7
+ Store,
8
+ Users,
9
+ } from 'lucide-react';
10
+
11
+ import { IconBadge } from 'themelia-react-ui/base/display';
12
+ import { Stack } from 'themelia-react-ui/base/structure';
13
+ import { useSidebar } from 'themelia-react-ui/base/sidebar';
14
+ import {
15
+ type BreadcrumbItem,
16
+ type LayoutLinkRenderProps,
17
+ type WorkspaceLink,
18
+ } from 'themelia-react-ui/layout';
19
+ import { AppLayout, type AppLayoutVariant } from 'themelia-react-ui/layout/app-shell';
20
+ import {
21
+ HeaderBreadcrumbs,
22
+ HeaderNotifications,
23
+ HeaderUserMenu,
24
+ type HeaderNotification,
25
+ type HeaderUserMenuProps,
26
+ } from 'themelia-react-ui/layout/header';
27
+ import {
28
+ AppSidebar,
29
+ LayoutSidebarProvider,
30
+ SidebarNavigationUser,
31
+ type AppSidebarProps,
32
+ } from 'themelia-react-ui/layout/sidebar';
33
+ import { Text } from 'themelia-react-ui/typography';
34
+ import {
35
+ UIProvider,
36
+ type ComponentScale,
37
+ type UIConfig,
38
+ } from 'themelia-react-ui/ui-provider';
39
+
40
+ import { AnalyticsOperationsTemplate } from './analytics-operations-template';
41
+ import { CustomersAdminTemplate } from './customers-template';
42
+ import { OrdersAdminTemplate } from './orders-template';
43
+ import { ProductsAdminTemplate } from './products-template';
44
+ import { UserPermissionsTemplate } from './user-permissions-template';
45
+
46
+ export type AdminTemplateId =
47
+ | 'orders'
48
+ | 'products'
49
+ | 'customers'
50
+ | 'user-permissions'
51
+ | 'analytics';
52
+
53
+ interface TemplateRouteMeta {
54
+ id: AdminTemplateId;
55
+ label: string;
56
+ url: string;
57
+ breadcrumbs: BreadcrumbItem[];
58
+ }
59
+
60
+ const TEMPLATE_ROUTES: Record<AdminTemplateId, TemplateRouteMeta> = {
61
+ analytics: {
62
+ id: 'analytics',
63
+ label: 'Overview',
64
+ url: '/admin/overview',
65
+ breadcrumbs: [{ label: 'Store overview' }],
66
+ },
67
+ orders: {
68
+ id: 'orders',
69
+ label: 'Orders',
70
+ url: '/admin/orders',
71
+ breadcrumbs: [
72
+ { label: 'Orders', href: '/admin/orders' },
73
+ { label: '#1042' },
74
+ ],
75
+ },
76
+ products: {
77
+ id: 'products',
78
+ label: 'Products',
79
+ url: '/admin/products',
80
+ breadcrumbs: [
81
+ { label: 'Products', href: '/admin/products' },
82
+ { label: 'Merino Wool Crewneck Sweater' },
83
+ ],
84
+ },
85
+ customers: {
86
+ id: 'customers',
87
+ label: 'Customers',
88
+ url: '/admin/customers',
89
+ breadcrumbs: [
90
+ { label: 'Customers', href: '/admin/customers' },
91
+ { label: 'Elena Rostova' },
92
+ ],
93
+ },
94
+ 'user-permissions': {
95
+ id: 'user-permissions',
96
+ label: 'Settings',
97
+ url: '/admin/settings',
98
+ breadcrumbs: [
99
+ { label: 'Settings', href: '/admin/settings' },
100
+ { label: 'Staff & permissions' },
101
+ ],
102
+ },
103
+ };
104
+
105
+ const SIDEBAR_ICON_MAP: NonNullable<AppSidebarProps['iconMap']> = {
106
+ analytics: BarChart3,
107
+ orders: ShoppingBag,
108
+ products: Package,
109
+ customers: Users,
110
+ settings: Settings,
111
+ };
112
+
113
+ const NAVIGATION_GROUPS: NonNullable<AppSidebarProps['navigationGroups']> = {
114
+ Store: [
115
+ {
116
+ label: 'Overview',
117
+ href: '/admin/overview',
118
+ icon: 'analytics',
119
+ },
120
+ {
121
+ label: 'Orders',
122
+ href: '/admin/orders',
123
+ icon: 'orders',
124
+ badge: '3',
125
+ },
126
+ {
127
+ label: 'Products',
128
+ href: '/admin/products',
129
+ icon: 'products',
130
+ },
131
+ {
132
+ label: 'Customers',
133
+ href: '/admin/customers',
134
+ icon: 'customers',
135
+ },
136
+ ],
137
+ Settings: [
138
+ {
139
+ label: 'Staff & permissions',
140
+ href: '/admin/settings',
141
+ icon: 'settings',
142
+ },
143
+ ],
144
+ };
145
+
146
+ const WORKSPACE_LINKS: WorkspaceLink[] = [
147
+ {
148
+ label: 'Oak & Loom — US Online Store',
149
+ url: '/admin/overview',
150
+ },
151
+ ];
152
+
153
+ const CURRENT_USER: NonNullable<HeaderUserMenuProps['user']> = {
154
+ name: 'Maya Lin',
155
+ email: 'maya.lin@oakandloom.com',
156
+ role: 'Store Operations Lead',
157
+ };
158
+
159
+ const INITIAL_NOTIFICATIONS: HeaderNotification[] = [
160
+ {
161
+ id: 'notif-1',
162
+ title: 'Order #1042 shipped via UPS Ground',
163
+ description: 'Tracking 1Z999AA10123456784 scanned at Brooklyn hub.',
164
+ time: '12m ago',
165
+ tone: 'info',
166
+ read: false,
167
+ },
168
+ {
169
+ id: 'notif-2',
170
+ title: 'Low stock alert · Midnight Navy / Large',
171
+ description: '6 units remaining at Brooklyn Warehouse.',
172
+ time: '1h ago',
173
+ tone: 'warning',
174
+ read: false,
175
+ },
176
+ {
177
+ id: 'notif-3',
178
+ title: 'Daily Stripe payout deposited',
179
+ description: '6,420.50 USD settled to operating account.',
180
+ time: '3h ago',
181
+ tone: 'success',
182
+ read: true,
183
+ },
184
+ ];
185
+
186
+ export const adminStarterUIDefaults: UIConfig = {
187
+ density: { defaultScale: 'md' },
188
+ card: {
189
+ defaultSurface: 'card',
190
+ },
191
+ formatting: { locale: 'en-US' },
192
+ money: { defaultCurrency: 'USD' },
193
+ };
194
+
195
+ export interface AdminStarterShellProps {
196
+ defaultTemplate?: AdminTemplateId;
197
+ activeTemplate?: AdminTemplateId;
198
+ onTemplateChange?: (template: AdminTemplateId) => void;
199
+ defaultShellVariant?: AppLayoutVariant;
200
+ children?: ReactNode;
201
+ }
202
+
203
+ function TemplateLink({ href, children, active, disabled, external, target, rel, onClick, onNavigate, ...props }: LayoutLinkRenderProps & { onNavigate: (id: AdminTemplateId) => void }) {
204
+ const { setOpenMobile } = useSidebar();
205
+ return <a {...props} href={disabled ? undefined : href} target={target ?? (external ? '_blank' : undefined)} rel={rel ?? (external ? 'noopener noreferrer' : undefined)} aria-current={active ? 'page' : undefined} aria-disabled={disabled || undefined} onClick={(event) => {
206
+ onClick?.(event);
207
+ if (disabled) { event.preventDefault(); return; }
208
+ if (event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || external || (target && target !== '_self')) return;
209
+ const route = Object.values(TEMPLATE_ROUTES).find((item) => item.url === href);
210
+ if (route) { event.preventDefault(); onNavigate(route.id); setOpenMobile(false); }
211
+ }}>{children}</a>;
212
+ }
213
+
214
+ function TemplateUserMenu({ sidebar = false, onNavigate }: { sidebar?: boolean; onNavigate: (id: AdminTemplateId) => void }) {
215
+ const { setOpenMobile } = useSidebar();
216
+ const openSettings = () => { onNavigate('user-permissions'); setOpenMobile(false); };
217
+ return sidebar ? <SidebarNavigationUser user={CURRENT_USER} onSettings={openSettings} /> : <HeaderUserMenu user={CURRENT_USER} onSettings={openSettings} />;
218
+ }
219
+
220
+ export function AdminStarterShell({
221
+ defaultTemplate = 'orders',
222
+ activeTemplate: controlledTemplate,
223
+ onTemplateChange,
224
+ defaultShellVariant = 'inset',
225
+ children,
226
+ }: AdminStarterShellProps) {
227
+ const [internalTemplate, setInternalTemplate] = useState<AdminTemplateId>(defaultTemplate);
228
+ const [notifications, setNotifications] =
229
+ useState<HeaderNotification[]>(INITIAL_NOTIFICATIONS);
230
+
231
+ const activeTemplate = controlledTemplate ?? internalTemplate;
232
+ const activeMeta = TEMPLATE_ROUTES[activeTemplate];
233
+
234
+ const selectTemplate = (next: AdminTemplateId) => {
235
+ if (controlledTemplate === undefined) {
236
+ setInternalTemplate(next);
237
+ }
238
+ onTemplateChange?.(next);
239
+ };
240
+
241
+ const renderLink = (props: LayoutLinkRenderProps) => <TemplateLink {...props} onNavigate={selectTemplate} />;
242
+
243
+ const brandLogo = (
244
+ <Stack direction="horizontal" align="center" gap="sm" wrap={false}>
245
+ <IconBadge icon={Store} tone="primary" shape="square" />
246
+ <Stack gap="none" className="min-w-0">
247
+ <Text weight="semibold" size="sm" className="truncate">
248
+ Oak & Loom
249
+ </Text>
250
+ <Text size="xs" type="secondary" className="truncate">
251
+ Online Store
252
+ </Text>
253
+ </Stack>
254
+ </Stack>
255
+ );
256
+
257
+ const sidebarNode = (
258
+ <AppSidebar
259
+ className="h-full"
260
+ logo={brandLogo}
261
+ collapsedLogo={<IconBadge icon={Store} tone="primary" shape="square" />}
262
+ workspaceLinks={WORKSPACE_LINKS}
263
+ navigationGroups={NAVIGATION_GROUPS}
264
+ iconMap={SIDEBAR_ICON_MAP}
265
+ currentUrl={activeMeta.url}
266
+ renderLink={renderLink}
267
+ searchable
268
+ slots={{
269
+ footer: (
270
+ <TemplateUserMenu sidebar onNavigate={selectTemplate} />
271
+ ),
272
+ }}
273
+ />
274
+ );
275
+
276
+ const breadcrumbsNode = (
277
+ <HeaderBreadcrumbs
278
+ homeBreadcrumb={{ label: 'Oak & Loom', href: '/admin/overview' }}
279
+ breadcrumbs={activeMeta.breadcrumbs}
280
+ renderLink={renderLink}
281
+ />
282
+ );
283
+
284
+ const trailingToolsNode = (
285
+ <Stack direction="horizontal" align="center" gap="sm" wrap={false}>
286
+ <HeaderNotifications
287
+ notifications={notifications}
288
+ onMarkAllRead={() =>
289
+ setNotifications((current) =>
290
+ current.map((item) => ({ ...item, read: true })),
291
+ )
292
+ }
293
+ />
294
+ <TemplateUserMenu onNavigate={selectTemplate} />
295
+ </Stack>
296
+ );
297
+
298
+ const activePageNode =
299
+ children ??
300
+ (activeTemplate === 'orders' ? (
301
+ <OrdersAdminTemplate />
302
+ ) : activeTemplate === 'products' ? (
303
+ <ProductsAdminTemplate />
304
+ ) : activeTemplate === 'customers' ? (
305
+ <CustomersAdminTemplate />
306
+ ) : activeTemplate === 'user-permissions' ? (
307
+ <UserPermissionsTemplate />
308
+ ) : (
309
+ <AnalyticsOperationsTemplate />
310
+ ));
311
+
312
+ return (
313
+ <LayoutSidebarProvider adaptTo="container" className="h-full min-h-0">
314
+ {defaultShellVariant === 'sidebar' || defaultShellVariant === 'inset' ? (
315
+ <AppLayout
316
+ variant={defaultShellVariant}
317
+ className="h-full min-h-0"
318
+ sidebar={sidebarNode}
319
+ slots={{
320
+ toolbarStart: breadcrumbsNode,
321
+ toolbarEnd: trailingToolsNode,
322
+ }}
323
+ >
324
+ {activePageNode}
325
+ </AppLayout>
326
+ ) : defaultShellVariant === 'stacked' ? (
327
+ <AppLayout variant="stacked" className="h-full min-h-0" logo={brandLogo}
328
+ nav={<Stack direction="horizontal" gap="lg">{Object.values(TEMPLATE_ROUTES).map((route) => <TemplateLink key={route.id} href={route.url} active={route.id === activeTemplate} onNavigate={selectTemplate}>{route.label}</TemplateLink>)}</Stack>}
329
+ slots={{ headerEnd: trailingToolsNode }}>
330
+ {activePageNode}
331
+ </AppLayout>
332
+ ) : (
333
+ <AppLayout
334
+ variant={defaultShellVariant}
335
+ className="h-full min-h-0"
336
+ logo={brandLogo}
337
+ sidebar={sidebarNode}
338
+ slots={{
339
+ headerStart: breadcrumbsNode,
340
+ headerEnd: trailingToolsNode,
341
+ }}
342
+ >
343
+ {activePageNode}
344
+ </AppLayout>
345
+ )}
346
+ </LayoutSidebarProvider>
347
+ );
348
+ }
349
+
350
+ export interface AdminTemplatesShowcaseProps extends AdminStarterShellProps {
351
+ defaultDensity?: ComponentScale;
352
+ }
353
+
354
+ export function AdminTemplatesShowcase({ defaultDensity = 'md', ...props }: AdminTemplatesShowcaseProps) {
355
+ return (
356
+ <UIProvider config={{ ...adminStarterUIDefaults, density: { defaultScale: defaultDensity } }}>
357
+ <AdminStarterShell {...props} />
358
+ </UIProvider>
359
+ );
360
+ }
361
+
362
+ export function OrdersTemplatePreview() {
363
+ return <OrdersAdminTemplate />;
364
+ }
365
+
366
+ export function ProductsTemplatePreview() {
367
+ return <ProductsAdminTemplate />;
368
+ }
369
+
370
+ export function CustomersTemplatePreview() {
371
+ return <CustomersAdminTemplate />;
372
+ }
373
+
374
+ export function UserPermissionsTemplatePreview() {
375
+ return <UserPermissionsTemplate />;
376
+ }
377
+
378
+ export function AnalyticsOperationsTemplatePreview() {
379
+ return <AnalyticsOperationsTemplate />;
380
+ }
381
+
382
+ export default AdminTemplatesShowcase;