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
@@ -1,12 +1,18 @@
1
1
  export declare const affordanceGeometry: {
2
+ readonly surfaceGap: {
3
+ readonly xs: "gap-[calc(var(--surface-y)*0.5*var(--space-scale))]";
4
+ readonly sm: "gap-[calc(var(--surface-y)*2/3*var(--space-scale))]";
5
+ readonly md: "gap-[calc(var(--surface-y)*var(--space-scale))]";
6
+ readonly lg: "gap-[calc(var(--surface-y)*4/3*var(--space-scale))]";
7
+ };
2
8
  readonly inlineEditColumns: {
3
- readonly single: "grid-cols-[minmax(0,1fr)_calc(var(--height-action)*8/9*var(--density-scale)*2+0.25rem*var(--space-scale))]";
4
- readonly multiline: "grid-cols-[minmax(0,1fr)_calc(var(--height-action)*8/9*var(--density-scale))]";
9
+ readonly single: "grid-cols-[minmax(0,1fr)_calc(var(--height-action)*7/8*var(--density-scale)*2+0.25rem*var(--space-scale))]";
10
+ readonly multiline: "grid-cols-[minmax(0,1fr)_calc(var(--height-action)*7/8*var(--density-scale))]";
5
11
  };
6
12
  readonly avatarOverlap: {
7
- readonly sm: "has-data-[scale=sm]:-space-x-[calc(var(--avatar)*0.75/4)]";
8
- readonly md: "-space-x-[calc(var(--avatar)/4)]";
9
- readonly lg: "has-data-[scale=lg]:-space-x-[calc(var(--avatar)*1.25/4)]";
13
+ readonly sm: "has-data-[scale=sm]:-space-x-[calc(var(--avatar)*0.75/6)]";
14
+ readonly md: "-space-x-[calc(var(--avatar)/6)]";
15
+ readonly lg: "has-data-[scale=lg]:-space-x-[calc(var(--avatar)*1.25/6)]";
10
16
  };
11
17
  readonly navigationGuideStart: "ms-[calc(var(--control-x)*0.8333333*var(--space-scale)+var(--icon)*0.75/2)]";
12
18
  readonly clearEnd: {
@@ -54,36 +60,36 @@ export declare const affordanceGeometry: {
54
60
  readonly largeIconStart: "ps-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)*1.25)]";
55
61
  readonly largeIconEnd: "pe-[calc((var(--control-x)+0.5rem)*var(--space-scale)+var(--icon)*1.25)]";
56
62
  readonly buttonBlockPadding: {
57
- readonly sm: "py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*8/9*var(--density-scale)-1lh)/2-1px))]";
63
+ readonly sm: "py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*7/8*var(--density-scale)-1lh)/2-1px))]";
58
64
  readonly md: "py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*var(--density-scale)-1lh)/2-1px))]";
59
- readonly lg: "py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*10/9*var(--density-scale)-1lh)/2-1px))]";
65
+ readonly lg: "py-[min(calc(0.25rem*var(--space-scale)),calc((var(--height-action)*9/8*var(--density-scale)-1lh)/2-1px))]";
60
66
  };
61
67
  readonly controlTextMinHeight: "min-h-[calc(1lh+2px)]";
62
68
  readonly controlBlockPadding: {
63
- readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-1lh)/2-1px)))]";
69
+ readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*7/8*var(--density-scale)-1lh)/2-1px)))]";
64
70
  readonly md: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-1lh)/2-1px)))]";
65
- readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-1lh)/2-1px)))]";
71
+ readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*9/8*var(--density-scale)-1lh)/2-1px)))]";
66
72
  };
67
73
  readonly fileField: {
68
- readonly minHeight: "min-h-[calc(max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px)))+2px)]";
74
+ readonly minHeight: "min-h-[calc(max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px)))+2px)]";
69
75
  readonly buttonMinHeight: "file:min-h-[calc(1lh+2px)]";
70
76
  readonly blockPadding: {
71
- readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
72
- readonly md: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
73
- readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
77
+ readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*7/8*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
78
+ readonly md: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
79
+ readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*9/8*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-pxs)*var(--text-pxs--line-height)+2px))))/2-1px)))]";
74
80
  };
75
81
  };
76
82
  readonly rawFileField: {
77
- readonly minHeight: "min-h-[calc(max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px)))+2px)]";
83
+ readonly minHeight: "min-h-[calc(max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px)))+2px)]";
78
84
  readonly buttonMinHeight: "file:min-h-[calc(1lh+0px)]";
79
85
  readonly blockPadding: {
80
- readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*8/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
81
- readonly md: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
82
- readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*10/9*var(--density-scale)-max(1lh,max(calc(1.75rem*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
86
+ readonly sm: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*7/8*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
87
+ readonly md: "py-[max(0px,min(calc(0.25rem*var(--space-scale)),calc((var(--height-control)*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
88
+ readonly lg: "py-[max(0px,min(calc(0.375rem*var(--space-scale)),calc((var(--height-control)*9/8*var(--density-scale)-max(1lh,max(calc(var(--height-control)*3/4*var(--density-scale)),calc(var(--text-sm)*var(--text-sm--line-height)+0px))))/2-1px)))]";
83
89
  };
84
90
  };
85
- readonly overlayClose: "absolute top-[calc(var(--surface-y)*var(--space-scale)+(var(--text-base)*var(--leading-snug)-var(--height-action)*8/9*var(--density-scale))/2)] end-[calc(var(--surface-x)*var(--space-scale))]";
86
- readonly overlayHeader: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:pe-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
91
+ readonly overlayClose: "absolute top-[calc(var(--surface-y)*var(--space-scale)+(var(--text-base)*var(--leading-snug)-var(--height-action)*7/8*var(--density-scale))/2)] end-[calc(var(--surface-x)*var(--space-scale))]";
92
+ readonly overlayHeader: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:pe-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
87
93
  readonly selectToggleTrack: {
88
94
  readonly sm: "end-[calc(var(--control-x)*0.8333333*var(--space-scale)+1px-(1.375rem*var(--density-scale)-var(--icon)*0.75)/2)]";
89
95
  readonly md: "end-[calc(var(--control-x)*var(--space-scale)+1px-(1.375rem*var(--density-scale)-var(--icon))/2)]";
@@ -95,41 +101,41 @@ export declare const affordanceGeometry: {
95
101
  readonly lg: "pe-[calc((var(--control-x)+0.375rem)*var(--space-scale)+1px+(1.375rem*var(--density-scale)+var(--icon)*1.25)/2)]";
96
102
  };
97
103
  readonly textareaBlockPadding: {
98
- readonly sm: "py-[calc((var(--height-control)*8/9*var(--density-scale)-1lh)/2-1px)]";
104
+ readonly sm: "py-[calc((var(--height-control)*7/8*var(--density-scale)-1lh)/2-1px)]";
99
105
  readonly md: "py-[calc((var(--height-control)*var(--density-scale)-1lh)/2-1px)]";
100
- readonly lg: "py-[calc((var(--height-control)*10/9*var(--density-scale)-1lh)/2-1px)]";
106
+ readonly lg: "py-[calc((var(--height-control)*9/8*var(--density-scale)-1lh)/2-1px)]";
101
107
  };
102
108
  readonly textareaClearTop: {
103
- readonly sm: "top-[calc((var(--height-control)*8/9-1.375rem)*var(--density-scale)/2)]";
109
+ readonly sm: "top-[calc((var(--height-control)*7/8-1.375rem)*var(--density-scale)/2)]";
104
110
  readonly md: "top-[calc((var(--height-control)-1.375rem)*var(--density-scale)/2)]";
105
- readonly lg: "top-[calc((var(--height-control)*10/9-1.375rem)*var(--density-scale)/2)]";
111
+ readonly lg: "top-[calc((var(--height-control)*9/8-1.375rem)*var(--density-scale)/2)]";
106
112
  };
107
113
  readonly textareaIconTop: {
108
- readonly sm: "top-[calc((var(--height-control)*8/9*var(--density-scale)-var(--icon))/2)]";
114
+ readonly sm: "top-[calc((var(--height-control)*7/8*var(--density-scale)-var(--icon))/2)]";
109
115
  readonly md: "top-[calc((var(--height-control)*var(--density-scale)-var(--icon))/2)]";
110
- readonly lg: "top-[calc((var(--height-control)*10/9*var(--density-scale)-var(--icon))/2)]";
116
+ readonly lg: "top-[calc((var(--height-control)*9/8*var(--density-scale)-var(--icon))/2)]";
111
117
  };
112
118
  readonly clearTargetBleed: "-my-[calc((1.375rem*var(--density-scale)-var(--icon)*0.75)/2)]";
113
119
  readonly actionGutter: {
114
120
  readonly sm: {
115
- readonly start: "ps-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
116
- readonly end: "pe-[calc(var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
121
+ readonly start: "ps-[calc(var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
122
+ readonly end: "pe-[calc(var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
117
123
  };
118
124
  readonly md: {
119
125
  readonly start: "ps-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]";
120
126
  readonly end: "pe-[calc(var(--height-action)*var(--density-scale)+0.5rem*var(--space-scale))]";
121
127
  };
122
128
  readonly lg: {
123
- readonly start: "ps-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]";
124
- readonly end: "pe-[calc(var(--height-action)*10/9*var(--density-scale)+0.5rem*var(--space-scale))]";
129
+ readonly start: "ps-[calc(var(--height-action)*9/8*var(--density-scale)+0.5rem*var(--space-scale))]";
130
+ readonly end: "pe-[calc(var(--height-action)*9/8*var(--density-scale)+0.5rem*var(--space-scale))]";
125
131
  };
126
132
  };
127
133
  readonly menuActionReserve: {
128
- readonly item: "group-has-[>[data-sidebar=menu-action]]/menu-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!";
129
- readonly subItem: "group-has-[>[data-sidebar=menu-action]]/menu-sub-item:pe-[calc(var(--height-action)*7/9*var(--density-scale)+var(--control-x)*var(--space-scale))]!";
134
+ readonly item: "group-has-[>[data-sidebar=menu-action]]/menu-item:pe-[calc(var(--height-action)*3/4*var(--density-scale)+var(--control-x)*var(--space-scale))]!";
135
+ readonly subItem: "group-has-[>[data-sidebar=menu-action]]/menu-sub-item:pe-[calc(var(--height-action)*3/4*var(--density-scale)+var(--control-x)*var(--space-scale))]!";
130
136
  };
131
- readonly toastCloseReserve: "has-[[data-close-button]]:!pe-[calc(var(--height-action)*8/9*var(--density-scale)+0.75rem*var(--space-scale))]";
132
- readonly calendarCell: "[--cell-size:calc(var(--height-action)*8/9*var(--density-scale))] [--cell-radius:min(calc(var(--radius)*0.75),calc(min(var(--height-action),var(--height-control))*var(--density-scale)/4))]";
133
- readonly calendarCompactCell: "[--cell-size:calc(1.875rem*var(--density-scale))] sm:[--cell-size:calc(var(--height-action)*8/9*var(--density-scale))]";
134
- readonly overlayHeaderCentered: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:ps-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
137
+ readonly toastCloseReserve: "has-[[data-close-button]]:!pe-[calc(var(--height-action)*7/8*var(--density-scale)+0.75rem*var(--space-scale))]";
138
+ readonly calendarCell: "[--cell-size:calc(var(--height-action)*7/8*var(--density-scale))] [--cell-radius:var(--radius)]";
139
+ readonly calendarCompactCell: "[--cell-size:calc(1.875rem*var(--density-scale))] sm:[--cell-size:calc(var(--height-action)*7/8*var(--density-scale))]";
140
+ readonly overlayHeaderCentered: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:ps-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
135
141
  };
@@ -3,12 +3,12 @@
3
3
  * to the field height, border or inset a second time.
4
4
  */
5
5
  export declare const segmentedControlRecipes: {
6
- readonly frame: "box-border inline-flex h-control shrink-0 items-stretch rounded-inner bg-muted p-space-2xs";
7
- readonly item: "!h-full min-h-0 rounded-inner";
8
- readonly joinedFrame: "box-border inline-flex h-control shrink-0 items-stretch overflow-hidden rounded-inner border border-input";
6
+ readonly frame: "box-border inline-flex h-control shrink-0 items-stretch rounded-radius bg-muted p-space-2xs";
7
+ readonly item: "!h-full min-h-0 rounded-radius";
8
+ readonly joinedFrame: "box-border inline-flex h-control shrink-0 items-stretch overflow-hidden rounded-radius border border-input";
9
9
  readonly joinedItem: "!h-full min-h-0 rounded-none";
10
- readonly firstItem: "rounded-s-inner";
11
- readonly lastItem: "rounded-e-inner";
10
+ readonly firstItem: "rounded-s-radius";
11
+ readonly lastItem: "rounded-e-radius";
12
12
  };
13
13
  export declare const controlGroupHeightClasses: {
14
14
  sm: string;
@@ -6,8 +6,8 @@ export declare const FieldClearGlyph: import("lucide-react").LucideIcon;
6
6
  /** Field affordances have one target/clearance owner. Primitives own behavior. */
7
7
  export declare const fieldAffordanceRecipes: {
8
8
  /** Content-sized targets for a chip/reaction that already owns its chrome. */
9
- readonly inline: "box-border m-0 border-0 bg-transparent p-0 font-sans inline-flex shrink-0 items-center justify-center rounded-inner outline-none transition-[color,box-shadow]";
10
- readonly target: "box-border m-0 border-0 bg-transparent p-0 font-sans inline-flex size-control-clear shrink-0 items-center justify-center rounded-inner outline-none transition-[color,box-shadow]";
9
+ readonly inline: "box-border m-0 border-0 bg-transparent p-0 font-sans inline-flex shrink-0 items-center justify-center rounded-radius outline-none transition-[color,box-shadow]";
10
+ readonly target: "box-border m-0 border-0 bg-transparent p-0 font-sans inline-flex size-control-clear shrink-0 items-center justify-center rounded-radius outline-none transition-[color,box-shadow]";
11
11
  readonly focus: "focus-visible:z-10 focus-visible:inset-ring focus-visible:inset-ring-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50";
12
12
  readonly clear: "text-muted-foreground hover:text-foreground";
13
13
  readonly toggle: "text-muted-foreground hover:bg-accent hover:text-accent-foreground";
@@ -1,4 +1,6 @@
1
1
  export declare const motionRecipes: {
2
+ /** One navigation track owns collapse geometry; panel contents do not resize independently. */
3
+ readonly sidebar: "transition-[width] duration-150 ease-out motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
2
4
  readonly backdrop: "transition-opacity duration-200 ease-out data-ending-style:duration-100 data-starting-style:opacity-0 data-ending-style:opacity-0 motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
3
5
  readonly dialog: "transition-[opacity,scale] duration-200 ease-out data-ending-style:duration-150 data-starting-style:opacity-0 data-ending-style:opacity-0 data-starting-style:scale-95 data-ending-style:scale-95 motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
4
6
  readonly drawer: string;
@@ -6,4 +8,5 @@ export declare const motionRecipes: {
6
8
  readonly disclosure: "overflow-hidden transition-[height,padding-block] duration-200 ease-out data-starting-style:h-0 data-ending-style:h-0 data-starting-style:py-0! data-ending-style:py-0! motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
7
9
  readonly chevron: "transition-transform duration-200 ease-out motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
8
10
  readonly dock: "transition-[opacity,translate] duration-150 ease-out starting:opacity-0 starting:translate-y-space-lg motion-reduce:transition-none motion-reduce:duration-0 motion-reduce:data-ending-style:duration-0";
11
+ readonly level: string;
9
12
  };
@@ -1,26 +1,26 @@
1
1
  /** Shared navigation geometry and primary-copy fallback. Density changes height,
2
2
  * never primary text size; owners may retain an explicit typography override. */
3
- export declare const navigationRowInlineClasses = "box-border min-w-0 gap-space-md rounded-inner px-control-sm text-sm";
3
+ export declare const navigationRowInlineClasses = "box-border min-w-0 gap-space-md rounded-radius px-control-sm text-sm";
4
4
  export declare const navigationChildInsetClasses: string;
5
5
  export declare const navigationRowDensityRecipes: {
6
6
  readonly compact: {
7
7
  readonly size: "sm";
8
- readonly gap: "gap-0";
9
- readonly childGap: "gap-0 py-0";
8
+ readonly gap: "gap-space-2xs";
9
+ readonly childGap: "gap-space-2xs py-space-2xs";
10
10
  readonly height: "h-action-sm";
11
11
  readonly childHeight: "h-action-xs";
12
12
  };
13
13
  readonly default: {
14
14
  readonly size: "sm";
15
- readonly gap: "gap-space-2xs";
16
- readonly childGap: "gap-0 py-0";
15
+ readonly gap: "gap-space-xs";
16
+ readonly childGap: "gap-space-2xs py-space-2xs";
17
17
  readonly height: "h-action-sm";
18
18
  readonly childHeight: "h-action-xs";
19
19
  };
20
20
  readonly comfortable: {
21
21
  readonly size: "md";
22
- readonly gap: "gap-space-2xs";
23
- readonly childGap: "gap-space-2xs py-space-2xs";
22
+ readonly gap: "gap-space-xs";
23
+ readonly childGap: "gap-space-xs py-space-xs";
24
24
  readonly height: "h-action";
25
25
  readonly childHeight: "h-action-sm";
26
26
  };
@@ -3,7 +3,7 @@
3
3
  * These are derived recipes, not additional theme settings.
4
4
  */
5
5
  export declare const overlayAnatomyRecipes: {
6
- readonly close: "absolute top-[calc(var(--surface-y)*var(--space-scale)+(var(--text-base)*var(--leading-snug)-var(--height-action)*8/9*var(--density-scale))/2)] end-[calc(var(--surface-x)*var(--space-scale))]";
7
- readonly header: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:pe-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
8
- readonly headerCentered: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:ps-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*8/9*var(--density-scale)+0.5rem*var(--space-scale))]";
6
+ readonly close: "absolute top-[calc(var(--surface-y)*var(--space-scale)+(var(--text-base)*var(--leading-snug)-var(--height-action)*7/8*var(--density-scale))/2)] end-[calc(var(--surface-x)*var(--space-scale))]";
7
+ readonly header: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:pe-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
8
+ readonly headerCentered: "[[data-slot$=-content]:has(>[data-overlay-close])>&]:ps-[calc(var(--surface-x)*var(--space-scale)+var(--height-action)*7/8*var(--density-scale)+0.5rem*var(--space-scale))]";
9
9
  };
@@ -0,0 +1,3 @@
1
+ /** Native portals retain their DOM/theme boundary without becoming flex/grid
2
+ * items. Native class callbacks and deliberate display overrides still win. */
3
+ export declare function portalClassName<State>(className?: string | ((state: State) => string | undefined)): (state: State) => string;
@@ -23,6 +23,9 @@ export declare const tokenClassGroups: {
23
23
  px: {
24
24
  px: string[];
25
25
  }[];
26
+ py: {
27
+ py: string[];
28
+ }[];
26
29
  right: {
27
30
  right: string[];
28
31
  }[];
@@ -44,6 +47,9 @@ export declare const tokenClassGroups: {
44
47
  mt: {
45
48
  mt: string[];
46
49
  }[];
50
+ my: {
51
+ my: string[];
52
+ }[];
47
53
  "space-x": {
48
54
  "space-x": string[];
49
55
  }[];
@@ -56,20 +62,20 @@ export declare const tokenClassGroups: {
56
62
  top: {
57
63
  top: string[];
58
64
  }[];
59
- py: {
60
- py: string[];
61
- }[];
62
65
  inset: {
63
66
  inset: string[];
64
67
  }[];
65
- my: {
66
- my: string[];
68
+ "inset-y": {
69
+ "inset-y": string[];
70
+ }[];
71
+ w: {
72
+ w: string[];
67
73
  }[];
68
74
  bottom: {
69
75
  bottom: string[];
70
76
  }[];
71
- w: {
72
- w: string[];
77
+ "translate-x": {
78
+ "translate-x": string[];
73
79
  }[];
74
80
  ps: {
75
81
  ps: string[];
@@ -104,9 +110,6 @@ export declare const tokenClassGroups: {
104
110
  "inset-x": {
105
111
  "inset-x": string[];
106
112
  }[];
107
- "inset-y": {
108
- "inset-y": string[];
109
- }[];
110
113
  left: {
111
114
  left: string[];
112
115
  }[];
@@ -116,7 +116,7 @@ export interface BadgeConfigSlice {
116
116
  export interface CardConfigSlice {
117
117
  /** Default Card surface chrome. Per-card `surface` still wins. */
118
118
  defaultSurface?: CardSurface;
119
- /** Whether framed Card headers render a bottom divider by default. Default: `true`. Flat cards draw none. */
119
+ /** Whether framed Card headers render a bottom divider by default. Default: `false`. Flat cards draw none. */
120
120
  defaultHeaderDivider?: boolean;
121
121
  /** Whether framed Card footers render a top divider by default. Default: `true`. Explicit per-card booleans still win. */
122
122
  defaultFooterDivider?: boolean;
package/dist/lib/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as e } from "../utils-BRhFDwuU.js";
1
+ import { t as e } from "../utils-B6kKb8jB.js";
2
2
  export { e as cn };
@@ -1 +1 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><rect width="256" height="256" fill="#f4f4f5"/><path d="M0 64h256M0 128h256M0 192h256M64 0v256M128 0v256M192 0v256" stroke="#d4d4d8"/><text x="128" y="145" text-anchor="middle" font-family="sans-serif" font-size="12" fill="#52525b">Demo coordinate grid</text></svg>
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><rect width="256" height="256" fill="#f4f4f5"/><path d="M0 64h256M0 128h256M0 192h256M64 0v256M128 0v256M192 0v256" stroke="#d4d4d8"/><text x="8" y="20" text-anchor="start" font-family="sans-serif" font-size="12" fill="#52525b">Demo coordinate grid</text></svg>
@@ -1,12 +1,12 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-BRhFDwuU.js";
4
- import { c as n } from "./typography-UTnveOEy.js";
3
+ import { t } from "./utils-B6kKb8jB.js";
4
+ import { c as n } from "./typography-BQnine1k.js";
5
5
  import { t as r } from "./focus-recipes-B653VaLq.js";
6
- import { r as i, t as a } from "./structure-BmisBK-3.js";
6
+ import { r as i, t as a } from "./structure-DuxKl954.js";
7
7
  import { i as o } from "./tone-recipes-BPsRAvhu.js";
8
- import { t as s } from "./badge-HpFqoqSY.js";
9
- import { n as c } from "./field-affordance-recipes-DZhnIL_Y.js";
8
+ import { t as s } from "./badge-xIiV_E7f.js";
9
+ import { n as c } from "./field-affordance-recipes-DWcNcOjh.js";
10
10
  import { n as l, t as u } from "./upload.recipes-BbxTqrCT.js";
11
11
  import { forwardRef as d, useCallback as f, useEffect as p, useId as m, useMemo as h, useRef as g, useState as _ } from "react";
12
12
  import { jsx as v, jsxs as y } from "react/jsx-runtime";
@@ -200,4 +200,4 @@ F.displayName = "MediaGallery";
200
200
  //#endregion
201
201
  export { j as n, F as t };
202
202
 
203
- //# sourceMappingURL=media-gallery-3zIVLMWH.js.map
203
+ //# sourceMappingURL=media-gallery-C-vChPmE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media-gallery-3zIVLMWH.js","names":["Text","focusRecipes","Grid","Stack","toneRecipes","Badge","fieldAffordanceRecipes","useFileDropTarget","uploadDropTargetRecipes","defaultMediaGalleryStrings","counter","makeId","SortableTile","useSortable","item","style","CSS","transform","setNodeRef","cn","isDragging","disabled","tileClassName","setActivatorNodeRef","attributes","listeners","isFirst","strings","onRemove","X","MediaGallery","forwardRef","stringsProp","useStrings","inputId","useId","inputRef","useRef","items","setItems","useState","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","itemsRef","useEffect","value","prev","index","remaining","next","file","it","commit","useCallback","onValueChange","addFiles","rules","accept","rule","accepted","incoming","limit","maxFiles","additions","remove","target","id","onPickerChange","list","onDragEnd","event","over","active","from","to","moved","announce","template","overId","announcements","tileIds","useMemo","isFull","className","DndContext","SortableContext","rectSortingStrategy","i","dropTargetProps","invalid","ImagePlus"],"sources":["../src/components/base/media-gallery/media-gallery.tsx"],"sourcesContent":["/**\n * MediaGallery — multi-image upload + sortable thumbnail grid. Drop a batch\n * of images onto the dashed top tile or click to open the picker; tiles\n * appear inline and can be reordered via drag (`@dnd-kit/sortable`). The\n * first tile is implicitly the \"cover\" and is marked with a small chip;\n * each tile has a hover-revealed remove button.\n *\n * Use for product galleries, mood boards, or any collection where the order\n * matters and the consumer needs the final `File[]` (and the order of those\n * files) on submit.\n *\n * Strings overridable for i18n.\n */\nimport { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport {\n\tDndContext,\n\ttype DragEndEvent,\n\ttype Announcements,\n\tPointerSensor,\n\tKeyboardSensor,\n\tuseSensor,\n\tuseSensors,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\trectSortingStrategy,\n\tsortableKeyboardCoordinates,\n\tuseSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { ImagePlus, X } from 'lucide-react';\nimport { Badge } from '../badge';\nimport { Text } from '../../typography';\nimport { Grid, Stack } from '../structure';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { fieldAffordanceRecipes } from '../../../lib/field-affordance-recipes';\nimport { useFileDropTarget } from '../upload/use-file-drop-target';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { uploadDropTargetRecipes } from '../upload/upload.recipes';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nexport interface MediaGalleryStrings {\n\taddInstruction: string;\n\thelper: string;\n\tdragOver: string;\n\tcover: string;\n\tremoveAria: string;\n\tmaxReached: string;\n\t/** Sort announcements; {name} is the filename and {position} is its one-based position. */\n\tpickedUp?: string;\n\tmovedTo?: string;\n\tdropped?: string;\n\tcancelled?: string;\n}\n\nexport const defaultMediaGalleryStrings = {\n\taddInstruction: 'Drop or click to add images',\n\thelper: '',\n\tdragOver: 'Release to select',\n\tcover: 'Cover',\n\tremoveAria: 'Remove image',\n\tmaxReached: 'You have reached the maximum number of images.',\n\tpickedUp: 'Picked up {name}.',\n\tmovedTo: '{name} moved to position {position}.',\n\tdropped: 'Dropped {name}.',\n\tcancelled: 'Sorting cancelled for {name}.',\n} satisfies MediaGalleryStrings;\n\nexport interface MediaGalleryProps {\n\t/** Selected files. Controlled. */\n\tvalue?: File[];\n\tonValueChange?: (files: File[]) => void;\n\t/** Accepted MIME types or extensions. */\n\taccept?: string;\n\t/** Caps how many files may be added. */\n\tmaxFiles?: number;\n\t/** Disables the control and blocks drops. */\n\tdisabled?: boolean;\n\t/** Applies the invalid styling. */\n\tinvalid?: boolean;\n\tclassName?: string;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings?: StringsProp<MediaGalleryStrings>;\n}\n\ninterface InternalItem {\n\tid: string;\n\tfile: File;\n\tpreviewUrl: string;\n}\n\nlet counter = 0;\nconst makeId = () => `media-${Date.now().toString(36)}-${(counter++).toString(36)}`;\n\nfunction SortableTile({\n\titem,\n\tisFirst,\n\tdisabled,\n\tonRemove,\n\tstrings,\n\ttileClassName,\n}: {\n\titem: InternalItem;\n\tisFirst: boolean;\n\t/** Disables the control and blocks drops. */\n\tdisabled: boolean;\n\tonRemove: () => void;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings: MediaGalleryStrings;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n}) {\n\tconst { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } =\n\t\tuseSortable({ id: item.id, disabled });\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t} as React.CSSProperties;\n\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tstyle={style}\n\t\t\tclassName={cn(\n\t\t\t\t'media-gallery--item',\n\t\t\t\t'group relative aspect-square overflow-hidden rounded-radius border border-border/60 bg-muted/30',\n\t\t\t\tisDragging && `z-10 shadow-lg ring-2 ${toneRecipes.primary.halo}`,\n\t\t\t\tdisabled && 'opacity-50',\n\t\t\t\ttileClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={setActivatorNodeRef}\n\t\t\t\taria-label={item.file.name}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`absolute inset-0 cursor-grab outline-none active:cursor-grabbing ${focusRecipes.inset}`,\n\t\t\t\t\tdisabled && 'pointer-events-none',\n\t\t\t\t)}\n\t\t\t\t{...attributes}\n\t\t\t\t{...listeners}\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={item.previewUrl}\n\t\t\t\t\talt={item.file.name}\n\t\t\t\t\tclassName=\"absolute inset-0 size-full object-cover\"\n\t\t\t\t\tdraggable={false}\n\t\t\t\t/>\n\t\t\t\t{isFirst && (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tclassName=\"media-gallery--cover absolute start-space-sm top-space-sm bg-card shadow-sm ring-1 ring-border\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.cover}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={`${strings.removeAria}: ${item.file.name}`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonPointerDown={(e) => e.stopPropagation()}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tonRemove();\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\t\t'absolute end-space-sm top-space-sm z-10 bg-card text-card-foreground shadow-sm ring-1 ring-border',\n\t\t\t\t\t'opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<X className={fieldAffordanceRecipes.icon} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n\nexport const MediaGallery = forwardRef<HTMLDivElement, MediaGalleryProps>(function MediaGallery({\n\tvalue,\n\tonValueChange,\n\taccept = '.png,.jpg,.jpeg,.gif,.webp',\n\tmaxFiles,\n\tdisabled = false,\n\tinvalid = false,\n\tclassName,\n\ttileClassName,\n\tstrings: stringsProp,\n}: MediaGalleryProps, ref) {\n\tconst strings = useStrings(defaultMediaGalleryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [items, setItems] = useState<InternalItem[]>([]);\n\n\tconst sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));\n\n\t// Track the live preview-URL set in a ref so the unmount cleanup sees the\n\t// latest values without depending on render-time `items`. Without this,\n\t// the cleanup closes over the initial empty array and any object URLs\n\t// created during the lifetime of the component leak (the browser will\n\t// still hold them until the document unloads).\n\tconst itemsRef = useRef<InternalItem[]>([]);\n\titemsRef.current = items;\n\n\t// Reconcile by file identity so order changes preserve sortable ids and URLs.\n\tuseEffect(() => {\n\t\tif (!value) return;\n\t\tconst prev = itemsRef.current;\n\t\tif (prev.length === value.length && prev.every((item, index) => item.file === value[index])) return;\n\t\tconst remaining = [...prev];\n\t\tconst next = value.map((file) => {\n\t\t\tconst index = remaining.findIndex((item) => item.file === file);\n\t\t\tif (index >= 0) return remaining.splice(index, 1)[0];\n\t\t\treturn { id: makeId(), file, previewUrl: URL.createObjectURL(file) };\n\t\t});\n\t\tremaining.forEach((item) => URL.revokeObjectURL(item.previewUrl));\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t}, [value]);\n\n\t// Cleanup on unmount — revoke whatever previews were live at the time.\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\titemsRef.current.forEach((it) => URL.revokeObjectURL(it.previewUrl));\n\t\t\titemsRef.current = [];\n\t\t};\n\t}, []);\n\n\tconst commit = useCallback((next: InternalItem[]) => {\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t\tonValueChange?.(next.map((item) => item.file));\n\t}, [onValueChange]);\n\n\tconst addFiles = useCallback((incoming: File[]) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst rules = accept.split(',').map((rule) => rule.trim().toLowerCase()).filter(Boolean);\n\t\tconst accepted = incoming.filter((file) => rules.length === 0 || rules.some((rule) => {\n\t\t\tif (rule.startsWith('.')) return file.name.toLowerCase().endsWith(rule);\n\t\t\tif (rule.endsWith('/*')) return file.type.toLowerCase().startsWith(rule.slice(0, -1));\n\t\t\treturn file.type.toLowerCase() === rule;\n\t\t}));\n\t\tconst limit = maxFiles !== undefined && Number.isFinite(maxFiles) ? Math.max(0, Math.floor(maxFiles) - prev.length) : accepted.length;\n\t\tconst additions = accepted.slice(0, limit).map((file) => ({ id: makeId(), file, previewUrl: URL.createObjectURL(file) }));\n\t\tif (additions.length > 0) commit([...prev, ...additions]);\n\t}, [accept, commit, disabled, maxFiles]);\n\n\tconst remove = useCallback((id: string) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst target = prev.find((item) => item.id === id);\n\t\tif (!target) return;\n\t\tURL.revokeObjectURL(target.previewUrl);\n\t\tcommit(prev.filter((item) => item.id !== id));\n\t}, [commit, disabled]);\n\n\tconst onPickerChange = useCallback(\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst list = e.target.files;\n\t\t\tif (!list || list.length === 0) return;\n\t\t\taddFiles(Array.from(list));\n\t\t\tif (inputRef.current) inputRef.current.value = '';\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tconst { isDragging, dropTargetProps } = useFileDropTarget({ disabled, onFiles: addFiles });\n\tconst onDragEnd = useCallback((event: DragEndEvent) => {\n\t\tif (disabled) return;\n\t\tconst { active, over } = event;\n\t\tif (!over || active.id === over.id) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst from = prev.findIndex((item) => item.id === active.id);\n\t\tconst to = prev.findIndex((item) => item.id === over.id);\n\t\tif (from < 0 || to < 0) return;\n\t\tconst next = [...prev];\n\t\tconst [moved] = next.splice(from, 1);\n\t\tnext.splice(to, 0, moved);\n\t\tcommit(next);\n\t}, [commit, disabled]);\n\n\tconst announce = (template: string, id: string | number, overId?: string | number) => template\n\t\t.replace('{name}', items.find(item => item.id === id)?.file.name ?? strings.removeAria)\n\t\t.replace('{position}', String(items.findIndex(item => item.id === (overId ?? id)) + 1));\n\tconst announcements: Announcements = {\n\t\tonDragStart: ({ active }) => announce(strings.pickedUp ?? defaultMediaGalleryStrings.pickedUp, active.id),\n\t\tonDragOver: ({ active, over }) => over ? announce(strings.movedTo ?? defaultMediaGalleryStrings.movedTo, active.id, over.id) : undefined,\n\t\tonDragEnd: ({ active }) => announce(strings.dropped ?? defaultMediaGalleryStrings.dropped, active.id),\n\t\tonDragCancel: ({ active }) => announce(strings.cancelled ?? defaultMediaGalleryStrings.cancelled, active.id),\n\t};\n\tconst tileIds = useMemo(() => items.map((it) => it.id), [items]);\n\tconst isFull = maxFiles !== undefined && items.length >= maxFiles;\n\n\treturn (\n\t\t<Stack ref={ref} gap=\"lg\" className={cn('media-gallery--component', className)}>\n\t\t\t<DndContext sensors={sensors} onDragEnd={onDragEnd} accessibility={{ announcements }}>\n\t\t\t\t<SortableContext items={tileIds} strategy={rectSortingStrategy}>\n\t\t\t\t\t<Grid columns={{ base: 2, sm: 3, md: 4 }} gap=\"md\">\n\t\t\t\t\t\t{items.map((item, i) => (\n\t\t\t\t\t\t\t<SortableTile\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tisFirst={i === 0}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tonRemove={() => remove(item.id)}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\ttileClassName={tileClassName}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t{!isFull && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...dropTargetProps}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'relative flex aspect-square items-center justify-center rounded-radius border border-dashed text-center outline-none transition-colors',\n\t\t\t\t\t\t\t\t\tuploadDropTargetRecipes.hover,\n\t\t\t\t\t\t\t\t\t// Keyboard focus on the file input frames the tile like any field; an\n\t\t\t\t\t\t\t\t\t// invalid tile keeps its destructive border and tints the halo.\n\t\t\t\t\t\t\t\t\t'has-[input:focus-visible]:ring-3',\n\t\t\t\t\t\t\t\t\tinvalid ? cn(uploadDropTargetRecipes.invalid, uploadDropTargetRecipes.focus.input.invalid) : cn(uploadDropTargetRecipes.idle, uploadDropTargetRecipes.focus.input.valid),\n\t\t\t\t\t\t\t\t\tdisabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t\t!disabled && isDragging && uploadDropTargetRecipes.dragging,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t\t\taria-label={strings.addInstruction}\n\t\t\t\t\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\t\t\t\t\taccept={accept}\n\t\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonChange={onPickerChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Stack align=\"center\" gap=\"sm\" className=\"px-space-sm\">\n\t\t\t\t\t\t\t\t\t<ImagePlus className=\"size-icon-lg text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" align=\"center\">\n\t\t\t\t\t\t\t\t\t\t{isDragging ? strings.dragOver : strings.addInstruction}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</SortableContext>\n\t\t\t</DndContext>\n\n\t\t\t{!!isFull && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.maxReached}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!isFull && !!strings.helper && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.helper}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nMediaGallery.displayName = 'MediaGallery';\n"],"mappings":"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"}
1
+ {"version":3,"file":"media-gallery-C-vChPmE.js","names":["Text","focusRecipes","Grid","Stack","toneRecipes","Badge","fieldAffordanceRecipes","useFileDropTarget","uploadDropTargetRecipes","defaultMediaGalleryStrings","counter","makeId","SortableTile","useSortable","item","style","CSS","transform","setNodeRef","cn","isDragging","disabled","tileClassName","setActivatorNodeRef","attributes","listeners","isFirst","strings","onRemove","X","MediaGallery","forwardRef","stringsProp","useStrings","inputId","useId","inputRef","useRef","items","setItems","useState","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","itemsRef","useEffect","value","prev","index","remaining","next","file","it","commit","useCallback","onValueChange","addFiles","rules","accept","rule","accepted","incoming","limit","maxFiles","additions","remove","target","id","onPickerChange","list","onDragEnd","event","over","active","from","to","moved","announce","template","overId","announcements","tileIds","useMemo","isFull","className","DndContext","SortableContext","rectSortingStrategy","i","dropTargetProps","invalid","ImagePlus"],"sources":["../src/components/base/media-gallery/media-gallery.tsx"],"sourcesContent":["/**\n * MediaGallery — multi-image upload + sortable thumbnail grid. Drop a batch\n * of images onto the dashed top tile or click to open the picker; tiles\n * appear inline and can be reordered via drag (`@dnd-kit/sortable`). The\n * first tile is implicitly the \"cover\" and is marked with a small chip;\n * each tile has a hover-revealed remove button.\n *\n * Use for product galleries, mood boards, or any collection where the order\n * matters and the consumer needs the final `File[]` (and the order of those\n * files) on submit.\n *\n * Strings overridable for i18n.\n */\nimport { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent } from 'react';\nimport {\n\tDndContext,\n\ttype DragEndEvent,\n\ttype Announcements,\n\tPointerSensor,\n\tKeyboardSensor,\n\tuseSensor,\n\tuseSensors,\n} from '@dnd-kit/core';\nimport {\n\tSortableContext,\n\trectSortingStrategy,\n\tsortableKeyboardCoordinates,\n\tuseSortable,\n} from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { ImagePlus, X } from 'lucide-react';\nimport { Badge } from '../badge';\nimport { Text } from '../../typography';\nimport { Grid, Stack } from '../structure';\nimport { useStrings, type StringsProp } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\nimport { fieldAffordanceRecipes } from '../../../lib/field-affordance-recipes';\nimport { useFileDropTarget } from '../upload/use-file-drop-target';\nimport { focusRecipes } from '../../../lib/focus-recipes';\nimport { uploadDropTargetRecipes } from '../upload/upload.recipes';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\nexport interface MediaGalleryStrings {\n\taddInstruction: string;\n\thelper: string;\n\tdragOver: string;\n\tcover: string;\n\tremoveAria: string;\n\tmaxReached: string;\n\t/** Sort announcements; {name} is the filename and {position} is its one-based position. */\n\tpickedUp?: string;\n\tmovedTo?: string;\n\tdropped?: string;\n\tcancelled?: string;\n}\n\nexport const defaultMediaGalleryStrings = {\n\taddInstruction: 'Drop or click to add images',\n\thelper: '',\n\tdragOver: 'Release to select',\n\tcover: 'Cover',\n\tremoveAria: 'Remove image',\n\tmaxReached: 'You have reached the maximum number of images.',\n\tpickedUp: 'Picked up {name}.',\n\tmovedTo: '{name} moved to position {position}.',\n\tdropped: 'Dropped {name}.',\n\tcancelled: 'Sorting cancelled for {name}.',\n} satisfies MediaGalleryStrings;\n\nexport interface MediaGalleryProps {\n\t/** Selected files. Controlled. */\n\tvalue?: File[];\n\tonValueChange?: (files: File[]) => void;\n\t/** Accepted MIME types or extensions. */\n\taccept?: string;\n\t/** Caps how many files may be added. */\n\tmaxFiles?: number;\n\t/** Disables the control and blocks drops. */\n\tdisabled?: boolean;\n\t/** Applies the invalid styling. */\n\tinvalid?: boolean;\n\tclassName?: string;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings?: StringsProp<MediaGalleryStrings>;\n}\n\ninterface InternalItem {\n\tid: string;\n\tfile: File;\n\tpreviewUrl: string;\n}\n\nlet counter = 0;\nconst makeId = () => `media-${Date.now().toString(36)}-${(counter++).toString(36)}`;\n\nfunction SortableTile({\n\titem,\n\tisFirst,\n\tdisabled,\n\tonRemove,\n\tstrings,\n\ttileClassName,\n}: {\n\titem: InternalItem;\n\tisFirst: boolean;\n\t/** Disables the control and blocks drops. */\n\tdisabled: boolean;\n\tonRemove: () => void;\n\t/** Overrides the upload, remove, and empty copy. */\n\tstrings: MediaGalleryStrings;\n\t/** Merged onto each media tile. */\n\ttileClassName?: string;\n}) {\n\tconst { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition, isDragging } =\n\t\tuseSortable({ id: item.id, disabled });\n\tconst style = {\n\t\ttransform: CSS.Transform.toString(transform),\n\t\ttransition,\n\t} as React.CSSProperties;\n\n\treturn (\n\t\t<div\n\t\t\tref={setNodeRef}\n\t\t\tstyle={style}\n\t\t\tclassName={cn(\n\t\t\t\t'media-gallery--item',\n\t\t\t\t'group relative aspect-square overflow-hidden rounded-radius border border-border/60 bg-muted/30',\n\t\t\t\tisDragging && `z-10 shadow-lg ring-2 ${toneRecipes.primary.halo}`,\n\t\t\t\tdisabled && 'opacity-50',\n\t\t\t\ttileClassName,\n\t\t\t)}\n\t\t>\n\t\t\t<div\n\t\t\t\tref={setActivatorNodeRef}\n\t\t\t\taria-label={item.file.name}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t`absolute inset-0 cursor-grab outline-none active:cursor-grabbing ${focusRecipes.inset}`,\n\t\t\t\t\tdisabled && 'pointer-events-none',\n\t\t\t\t)}\n\t\t\t\t{...attributes}\n\t\t\t\t{...listeners}\n\t\t\t>\n\t\t\t\t<img\n\t\t\t\t\tsrc={item.previewUrl}\n\t\t\t\t\talt={item.file.name}\n\t\t\t\t\tclassName=\"absolute inset-0 size-full object-cover\"\n\t\t\t\t\tdraggable={false}\n\t\t\t\t/>\n\t\t\t\t{isFirst && (\n\t\t\t\t\t<Badge\n\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\tclassName=\"media-gallery--cover absolute start-space-sm top-space-sm bg-card shadow-sm ring-1 ring-border\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{strings.cover}\n\t\t\t\t\t</Badge>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\taria-label={`${strings.removeAria}: ${item.file.name}`}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tonPointerDown={(e) => e.stopPropagation()}\n\t\t\t\tonClick={(e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\tonRemove();\n\t\t\t\t}}\n\t\t\t\tclassName={cn(\n\t\t\t\t\tfieldAffordanceRecipes.target,\n\t\t\t\t\tfieldAffordanceRecipes.focus,\n\t\t\t\t\t'absolute end-space-sm top-space-sm z-10 bg-card text-card-foreground shadow-sm ring-1 ring-border',\n\t\t\t\t\t'opacity-100 transition-opacity sm:opacity-0 sm:group-hover:opacity-100 group-focus-within:opacity-100 focus-visible:opacity-100',\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t<X className={fieldAffordanceRecipes.icon} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n\nexport const MediaGallery = forwardRef<HTMLDivElement, MediaGalleryProps>(function MediaGallery({\n\tvalue,\n\tonValueChange,\n\taccept = '.png,.jpg,.jpeg,.gif,.webp',\n\tmaxFiles,\n\tdisabled = false,\n\tinvalid = false,\n\tclassName,\n\ttileClassName,\n\tstrings: stringsProp,\n}: MediaGalleryProps, ref) {\n\tconst strings = useStrings(defaultMediaGalleryStrings, stringsProp);\n\tconst inputId = useId();\n\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\tconst [items, setItems] = useState<InternalItem[]>([]);\n\n\tconst sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 6 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));\n\n\t// Track the live preview-URL set in a ref so the unmount cleanup sees the\n\t// latest values without depending on render-time `items`. Without this,\n\t// the cleanup closes over the initial empty array and any object URLs\n\t// created during the lifetime of the component leak (the browser will\n\t// still hold them until the document unloads).\n\tconst itemsRef = useRef<InternalItem[]>([]);\n\titemsRef.current = items;\n\n\t// Reconcile by file identity so order changes preserve sortable ids and URLs.\n\tuseEffect(() => {\n\t\tif (!value) return;\n\t\tconst prev = itemsRef.current;\n\t\tif (prev.length === value.length && prev.every((item, index) => item.file === value[index])) return;\n\t\tconst remaining = [...prev];\n\t\tconst next = value.map((file) => {\n\t\t\tconst index = remaining.findIndex((item) => item.file === file);\n\t\t\tif (index >= 0) return remaining.splice(index, 1)[0];\n\t\t\treturn { id: makeId(), file, previewUrl: URL.createObjectURL(file) };\n\t\t});\n\t\tremaining.forEach((item) => URL.revokeObjectURL(item.previewUrl));\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t}, [value]);\n\n\t// Cleanup on unmount — revoke whatever previews were live at the time.\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\titemsRef.current.forEach((it) => URL.revokeObjectURL(it.previewUrl));\n\t\t\titemsRef.current = [];\n\t\t};\n\t}, []);\n\n\tconst commit = useCallback((next: InternalItem[]) => {\n\t\titemsRef.current = next;\n\t\tsetItems(next);\n\t\tonValueChange?.(next.map((item) => item.file));\n\t}, [onValueChange]);\n\n\tconst addFiles = useCallback((incoming: File[]) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst rules = accept.split(',').map((rule) => rule.trim().toLowerCase()).filter(Boolean);\n\t\tconst accepted = incoming.filter((file) => rules.length === 0 || rules.some((rule) => {\n\t\t\tif (rule.startsWith('.')) return file.name.toLowerCase().endsWith(rule);\n\t\t\tif (rule.endsWith('/*')) return file.type.toLowerCase().startsWith(rule.slice(0, -1));\n\t\t\treturn file.type.toLowerCase() === rule;\n\t\t}));\n\t\tconst limit = maxFiles !== undefined && Number.isFinite(maxFiles) ? Math.max(0, Math.floor(maxFiles) - prev.length) : accepted.length;\n\t\tconst additions = accepted.slice(0, limit).map((file) => ({ id: makeId(), file, previewUrl: URL.createObjectURL(file) }));\n\t\tif (additions.length > 0) commit([...prev, ...additions]);\n\t}, [accept, commit, disabled, maxFiles]);\n\n\tconst remove = useCallback((id: string) => {\n\t\tif (disabled) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst target = prev.find((item) => item.id === id);\n\t\tif (!target) return;\n\t\tURL.revokeObjectURL(target.previewUrl);\n\t\tcommit(prev.filter((item) => item.id !== id));\n\t}, [commit, disabled]);\n\n\tconst onPickerChange = useCallback(\n\t\t(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst list = e.target.files;\n\t\t\tif (!list || list.length === 0) return;\n\t\t\taddFiles(Array.from(list));\n\t\t\tif (inputRef.current) inputRef.current.value = '';\n\t\t},\n\t\t[addFiles],\n\t);\n\n\tconst { isDragging, dropTargetProps } = useFileDropTarget({ disabled, onFiles: addFiles });\n\tconst onDragEnd = useCallback((event: DragEndEvent) => {\n\t\tif (disabled) return;\n\t\tconst { active, over } = event;\n\t\tif (!over || active.id === over.id) return;\n\t\tconst prev = itemsRef.current;\n\t\tconst from = prev.findIndex((item) => item.id === active.id);\n\t\tconst to = prev.findIndex((item) => item.id === over.id);\n\t\tif (from < 0 || to < 0) return;\n\t\tconst next = [...prev];\n\t\tconst [moved] = next.splice(from, 1);\n\t\tnext.splice(to, 0, moved);\n\t\tcommit(next);\n\t}, [commit, disabled]);\n\n\tconst announce = (template: string, id: string | number, overId?: string | number) => template\n\t\t.replace('{name}', items.find(item => item.id === id)?.file.name ?? strings.removeAria)\n\t\t.replace('{position}', String(items.findIndex(item => item.id === (overId ?? id)) + 1));\n\tconst announcements: Announcements = {\n\t\tonDragStart: ({ active }) => announce(strings.pickedUp ?? defaultMediaGalleryStrings.pickedUp, active.id),\n\t\tonDragOver: ({ active, over }) => over ? announce(strings.movedTo ?? defaultMediaGalleryStrings.movedTo, active.id, over.id) : undefined,\n\t\tonDragEnd: ({ active }) => announce(strings.dropped ?? defaultMediaGalleryStrings.dropped, active.id),\n\t\tonDragCancel: ({ active }) => announce(strings.cancelled ?? defaultMediaGalleryStrings.cancelled, active.id),\n\t};\n\tconst tileIds = useMemo(() => items.map((it) => it.id), [items]);\n\tconst isFull = maxFiles !== undefined && items.length >= maxFiles;\n\n\treturn (\n\t\t<Stack ref={ref} gap=\"lg\" className={cn('media-gallery--component', className)}>\n\t\t\t<DndContext sensors={sensors} onDragEnd={onDragEnd} accessibility={{ announcements }}>\n\t\t\t\t<SortableContext items={tileIds} strategy={rectSortingStrategy}>\n\t\t\t\t\t<Grid columns={{ base: 2, sm: 3, md: 4 }} gap=\"md\">\n\t\t\t\t\t\t{items.map((item, i) => (\n\t\t\t\t\t\t\t<SortableTile\n\t\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\t\titem={item}\n\t\t\t\t\t\t\t\tisFirst={i === 0}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\tonRemove={() => remove(item.id)}\n\t\t\t\t\t\t\t\tstrings={strings}\n\t\t\t\t\t\t\t\ttileClassName={tileClassName}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\n\t\t\t\t\t\t{!isFull && (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t{...dropTargetProps}\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'relative flex aspect-square items-center justify-center rounded-radius border border-dashed text-center outline-none transition-colors',\n\t\t\t\t\t\t\t\t\tuploadDropTargetRecipes.hover,\n\t\t\t\t\t\t\t\t\t// Keyboard focus on the file input frames the tile like any field; an\n\t\t\t\t\t\t\t\t\t// invalid tile keeps its destructive border and tints the halo.\n\t\t\t\t\t\t\t\t\t'has-[input:focus-visible]:ring-3',\n\t\t\t\t\t\t\t\t\tinvalid ? cn(uploadDropTargetRecipes.invalid, uploadDropTargetRecipes.focus.input.invalid) : cn(uploadDropTargetRecipes.idle, uploadDropTargetRecipes.focus.input.valid),\n\t\t\t\t\t\t\t\t\tdisabled && 'cursor-not-allowed opacity-50',\n\t\t\t\t\t\t\t\t\t!disabled && isDragging && uploadDropTargetRecipes.dragging,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tid={inputId}\n\t\t\t\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\t\t\t\ttype=\"file\"\n\t\t\t\t\t\t\t\t\tclassName=\"absolute inset-0 z-10 size-full cursor-pointer opacity-0 disabled:cursor-not-allowed\"\n\t\t\t\t\t\t\t\t\taria-label={strings.addInstruction}\n\t\t\t\t\t\t\t\t\taria-invalid={invalid || undefined}\n\t\t\t\t\t\t\t\t\taccept={accept}\n\t\t\t\t\t\t\t\t\tmultiple\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonChange={onPickerChange}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Stack align=\"center\" gap=\"sm\" className=\"px-space-sm\">\n\t\t\t\t\t\t\t\t\t<ImagePlus className=\"size-icon-lg text-muted-foreground\" aria-hidden=\"true\" />\n\t\t\t\t\t\t\t\t\t<Text weight=\"medium\" align=\"center\">\n\t\t\t\t\t\t\t\t\t\t{isDragging ? strings.dragOver : strings.addInstruction}\n\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Grid>\n\t\t\t\t</SortableContext>\n\t\t\t</DndContext>\n\n\t\t\t{!!isFull && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.maxReached}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t\t{!isFull && !!strings.helper && (\n\t\t\t\t<Text size=\"xs\" type=\"secondary\">\n\t\t\t\t\t{strings.helper}\n\t\t\t\t</Text>\n\t\t\t)}\n\t\t</Stack>\n\t);\n});\n\nMediaGallery.displayName = 'MediaGallery';\n"],"mappings":"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"}
@@ -1,18 +1,18 @@
1
1
  "use client";
2
2
  import { useStrings as e } from "./lib/strings.js";
3
- import { t } from "./utils-BRhFDwuU.js";
4
- import { n } from "./buttons-DPZekJFu.js";
5
- import { c as r, o as i, t as a } from "./typography-UTnveOEy.js";
3
+ import { t } from "./utils-B6kKb8jB.js";
4
+ import { n } from "./buttons-BedGfygC.js";
5
+ import { c as r, o as i, t as a } from "./typography-BQnine1k.js";
6
6
  import { t as o } from "./focus-recipes-B653VaLq.js";
7
- import { t as s } from "./structure-BmisBK-3.js";
7
+ import { t as s } from "./structure-DuxKl954.js";
8
8
  import { a as c } from "./surface-recipes-BKRVW8Os.js";
9
- import { i as l, n as u, r as d, t as f } from "./popover.recipes-D3j8R8Yp.js";
9
+ import { i as l, n as u, r as d, t as f } from "./popover.recipes-DdiEp0rd.js";
10
10
  import { t as p } from "./interaction-recipes-XR9ZpVYL.js";
11
11
  import { t as m } from "./sanitize-html-DsQmI48u.js";
12
12
  import { t as h } from "./content-typography-CnwgMJ37.js";
13
- import { t as g } from "./badge-HpFqoqSY.js";
14
- import { a as _, i as v, n as y, o as b, r as x, t as S } from "./command-C25VMRII.js";
15
- import { i as C, t as w } from "./popover-gnTOhbFM.js";
13
+ import { t as g } from "./badge-xIiV_E7f.js";
14
+ import { a as _, i as v, n as y, o as b, r as x, t as S } from "./command-CrlPIL6m.js";
15
+ import { i as C, t as w } from "./popover-B85RenIl.js";
16
16
  import { t as T } from "./use-debounced-callback-Cx1h-hdv.js";
17
17
  import { Fragment as E, useCallback as D, useEffect as O, useMemo as k, useRef as A, useState as j } from "react";
18
18
  import { Fragment as M, jsx as N, jsxs as P } from "react/jsx-runtime";
@@ -456,7 +456,7 @@ function X({ open: n, activeKind: a, setActiveKind: m, kinds: h, resources: g, s
456
456
  className: t("mention-inline-suggestions--header", d.menuRegion, c.anchored.header),
457
457
  children: /* @__PURE__ */ P(s, {
458
458
  gap: "sm",
459
- className: "px-row-x",
459
+ className: d.menuCopyInset,
460
460
  children: [/* @__PURE__ */ P(s, {
461
461
  direction: "horizontal",
462
462
  align: "baseline",
@@ -567,4 +567,4 @@ function $(e) {
567
567
  //#endregion
568
568
  export { q as a, V as c, L as d, J as i, z as l, X as n, G as o, Y as r, U as s, $ as t, R as u };
569
569
 
570
- //# sourceMappingURL=mentions-CGlEJ15c.js.map
570
+ //# sourceMappingURL=mentions-0_4nWuI-.js.map