themelia-react-ui 2.0.4 → 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (715) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/MIGRATION.md +119 -0
  3. package/README.md +122 -20
  4. package/dist/{accordion-96o0pN62.js → accordion-0tQUZ20r.js} +13 -13
  5. package/dist/accordion-0tQUZ20r.js.map +1 -0
  6. package/dist/{action-menu-CHgs8vmj.js → action-menu-C0gjzLyE.js} +48 -45
  7. package/dist/action-menu-C0gjzLyE.js.map +1 -0
  8. package/dist/{affordance-geometry.generated-B8yGOr8-.js → affordance-geometry.generated-P-aVJisu.js} +36 -36
  9. package/dist/affordance-geometry.generated-P-aVJisu.js.map +1 -0
  10. package/dist/{ai-artifact-BZUGwBq6.js → ai-artifact-CGGpQryR.js} +281 -230
  11. package/dist/ai-artifact-CGGpQryR.js.map +1 -0
  12. package/dist/app-shell-EHuuRDGy.js +321 -0
  13. package/dist/app-shell-EHuuRDGy.js.map +1 -0
  14. package/dist/{attachment-DkoqHPPl.js → attachment-BCpA4e7i.js} +10 -10
  15. package/dist/{attachment-DkoqHPPl.js.map → attachment-BCpA4e7i.js.map} +1 -1
  16. package/dist/{auth-D2FVZ1MH.js → auth-B0girIk_.js} +49 -52
  17. package/dist/auth-B0girIk_.js.map +1 -0
  18. package/dist/{avatar-DWO_HHhB.js → avatar-B9Jnp-T-.js} +8 -8
  19. package/dist/avatar-B9Jnp-T-.js.map +1 -0
  20. package/dist/{badge-DErMA7ul.js → badge-wWauMgAt.js} +5 -5
  21. package/dist/{badge-DErMA7ul.js.map → badge-wWauMgAt.js.map} +1 -1
  22. package/dist/base/accordion.js +1 -1
  23. package/dist/base/action-menu.js +1 -1
  24. package/dist/base/attachment.js +1 -1
  25. package/dist/base/avatar.js +1 -1
  26. package/dist/base/badge.js +1 -1
  27. package/dist/base/batch-action-bar.js +1 -1
  28. package/dist/base/buttons.js +1 -1
  29. package/dist/base/cards.js +2 -2
  30. package/dist/base/carousel.js +3 -3
  31. package/dist/base/cascader.js +2 -372
  32. package/dist/base/chart.js +1 -1
  33. package/dist/base/choice-inputs.js +2 -2
  34. package/dist/base/code-block.js +1 -1
  35. package/dist/base/combobox.js +2 -2
  36. package/dist/base/command.js +1 -1
  37. package/dist/base/copyable.js +1 -1
  38. package/dist/base/date-pickers.js +2 -2
  39. package/dist/base/display.js +6 -6
  40. package/dist/base/feedback.js +4 -4
  41. package/dist/base/forms-numeric.js +1 -1
  42. package/dist/base/forms.js +2 -2
  43. package/dist/base/inline-edit.js +10 -10
  44. package/dist/base/item.js +1 -1
  45. package/dist/base/media-gallery.js +1 -1
  46. package/dist/base/metadata-list.js +1 -1
  47. package/dist/base/navigation.js +7 -7
  48. package/dist/base/popover-menu.js +1 -1
  49. package/dist/base/popover.js +1 -1
  50. package/dist/base/qr-code.js +1 -1
  51. package/dist/base/repeaters.js +200 -193
  52. package/dist/base/repeaters.js.map +1 -1
  53. package/dist/base/sheet.js +1 -1
  54. package/dist/base/sidebar.js +2 -2
  55. package/dist/base/signature-pad.js +8 -8
  56. package/dist/base/signature-pad.js.map +1 -1
  57. package/dist/base/skeleton.js +1 -1
  58. package/dist/base/spinner.js +6 -6
  59. package/dist/base/spinner.js.map +1 -1
  60. package/dist/base/structure.js +1 -1
  61. package/dist/base/table.js +1 -1
  62. package/dist/base/text-inputs.js +2 -2
  63. package/dist/base/toaster.js +36 -36
  64. package/dist/base/toaster.js.map +1 -1
  65. package/dist/base/tree.js +1 -1
  66. package/dist/base/upload-queue.js +1 -1
  67. package/dist/base/upload.js +3 -3
  68. package/dist/base/value-inputs.js +1 -1
  69. package/dist/{batch-action-bar-CdfIkCsV.js → batch-action-bar-BoqWIIpV.js} +7 -7
  70. package/dist/batch-action-bar-BoqWIIpV.js.map +1 -0
  71. package/dist/blocks/admin.js +21 -21
  72. package/dist/blocks/admin.js.map +1 -1
  73. package/dist/blocks/ai.js +267 -247
  74. package/dist/blocks/ai.js.map +1 -1
  75. package/dist/blocks/analytics/usage-card.js +1 -1
  76. package/dist/blocks/analytics.js +537 -543
  77. package/dist/blocks/analytics.js.map +1 -1
  78. package/dist/blocks/collaboration.js +1 -1
  79. package/dist/blocks/commerce/receipt.js +1 -1
  80. package/dist/blocks/commerce.js +1330 -1250
  81. package/dist/blocks/commerce.js.map +1 -1
  82. package/dist/blocks/data-display.js +2 -2
  83. package/dist/blocks/onboarding.js +6 -6
  84. package/dist/blocks/onboarding.js.map +1 -1
  85. package/dist/blocks/planning.js +11 -11
  86. package/dist/blocks/timelines.js +1 -1
  87. package/dist/{breadcrumbs-B-WFKecD.js → breadcrumbs-Bp9Ke7kd.js} +7 -7
  88. package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
  89. package/dist/{button-DkmK-z8E.js → button-ChBovTx0.js} +3 -3
  90. package/dist/button-ChBovTx0.js.map +1 -0
  91. package/dist/{buttons-BbfzgczK.js → buttons-DeW0bQeK.js} +16 -16
  92. package/dist/buttons-DeW0bQeK.js.map +1 -0
  93. package/dist/cards-CNXnmvV5.js +69 -0
  94. package/dist/cards-CNXnmvV5.js.map +1 -0
  95. package/dist/cascader-CrAl9zD5.js +439 -0
  96. package/dist/cascader-CrAl9zD5.js.map +1 -0
  97. package/dist/chart-I7ROnsl8.js +162 -0
  98. package/dist/chart-I7ROnsl8.js.map +1 -0
  99. package/dist/{checkbox-CzYUTPeJ.js → checkbox-MoyHIAPs.js} +3 -3
  100. package/dist/{checkbox-CzYUTPeJ.js.map → checkbox-MoyHIAPs.js.map} +1 -1
  101. package/dist/choice-inputs-DHGtx0QV.js +789 -0
  102. package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
  103. package/dist/{code-block-CGNaUtAE.js → code-block-BSJyq9e-.js} +9 -9
  104. package/dist/code-block-BSJyq9e-.js.map +1 -0
  105. package/dist/{collapsible-Do4G0zcC.js → collapsible-BzJ91LUG.js} +5 -5
  106. package/dist/{collapsible-Do4G0zcC.js.map → collapsible-BzJ91LUG.js.map} +1 -1
  107. package/dist/{collection-content-C0e8SsTm.js → collection-content-CSnwtOTH.js} +3 -3
  108. package/dist/{collection-content-C0e8SsTm.js.map → collection-content-CSnwtOTH.js.map} +1 -1
  109. package/dist/combobox-Bcvu5J8O.js +363 -0
  110. package/dist/combobox-Bcvu5J8O.js.map +1 -0
  111. package/dist/combobox-C2JiSQPc.js +915 -0
  112. package/dist/combobox-C2JiSQPc.js.map +1 -0
  113. package/dist/{command-D8NrBj-b.js → command-9e52NPgK.js} +11 -11
  114. package/dist/command-9e52NPgK.js.map +1 -0
  115. package/dist/{comments-Di4w0H_S.js → comments-BsgErEqd.js} +44 -39
  116. package/dist/comments-BsgErEqd.js.map +1 -0
  117. package/dist/components/base/action-menu/action-menu.d.ts +7 -1
  118. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  119. package/dist/components/base/cards/card.recipes.d.ts +6 -4
  120. package/dist/components/base/cards/partials/card-primitives.d.ts +9 -2
  121. package/dist/components/base/cards/partials/smart-card-header-row.d.ts +3 -1
  122. package/dist/components/base/cards/smart-card.types.d.ts +3 -4
  123. package/dist/components/base/cascader/cascader-panel.d.ts +76 -0
  124. package/dist/components/base/chart/chart.d.ts +6 -1
  125. package/dist/components/base/choice-inputs/choice-types.d.ts +5 -1
  126. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
  127. package/dist/components/base/combobox/combobox-field.d.ts +2 -2
  128. package/dist/components/base/combobox/index.d.ts +4 -2
  129. package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
  130. package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
  131. package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
  132. package/dist/components/base/feedback/alert.d.ts +1 -1
  133. package/dist/components/base/feedback/state-display.d.ts +5 -1
  134. package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
  135. package/dist/components/base/forms/form-field.d.ts +7 -2
  136. package/dist/components/base/forms/form-sizing.d.ts +7 -7
  137. package/dist/components/base/forms/workflow.d.ts +7 -1
  138. package/dist/components/base/forms-numeric/coordinates-input.d.ts +8 -1
  139. package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
  140. package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
  141. package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
  142. package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
  143. package/dist/components/base/metadata-list/metadata-list.d.ts +1 -1
  144. package/dist/components/base/navigation/dropdown-menu.d.ts +1 -1
  145. package/dist/components/base/navigation/language-switcher.d.ts +12 -4
  146. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +14 -7
  147. package/dist/components/base/navigation/page-header/page-header.d.ts +10 -3
  148. package/dist/components/base/popover/popover.d.ts +3 -3
  149. package/dist/components/base/popover/popover.recipes.d.ts +10 -6
  150. package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
  151. package/dist/components/base/sheet/sheet.d.ts +2 -0
  152. package/dist/components/base/sidebar/index.d.ts +1 -1
  153. package/dist/components/base/sidebar/sidebar.d.ts +29 -5
  154. package/dist/components/base/toaster/index.d.ts +1 -0
  155. package/dist/components/base/upload/avatar-upload.d.ts +2 -1
  156. package/dist/components/base/upload/image-upload.d.ts +2 -1
  157. package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
  158. package/dist/components/blocks/ai/ai-file-tree/types.d.ts +1 -1
  159. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
  160. package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
  161. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +5 -1
  162. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  163. package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
  164. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +4 -0
  165. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
  166. package/dist/components/blocks/analytics/types.d.ts +2 -2
  167. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  168. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +1 -1
  169. package/dist/components/blocks/commerce/cart-summary/types.d.ts +3 -1
  170. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +1 -1
  171. package/dist/components/blocks/commerce/discount-stack/types.d.ts +3 -1
  172. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  173. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +11 -2
  174. package/dist/components/blocks/commerce/index.d.ts +7 -6
  175. package/dist/components/blocks/commerce/inventory-section/inventory-section.d.ts +1 -1
  176. package/dist/components/blocks/commerce/inventory-section/types.d.ts +7 -2
  177. package/dist/components/blocks/commerce/invoice-header/index.d.ts +2 -1
  178. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  179. package/dist/components/blocks/commerce/invoice-header/types.d.ts +20 -6
  180. package/dist/components/blocks/commerce/invoice-line-items/invoice-line-items.d.ts +1 -1
  181. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +24 -7
  182. package/dist/components/blocks/commerce/invoice-mini/index.d.ts +2 -1
  183. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +7 -1
  184. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +1 -1
  185. package/dist/components/blocks/commerce/order-customer/types.d.ts +9 -1
  186. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  187. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +1 -1
  188. package/dist/components/blocks/commerce/refund-status/types.d.ts +3 -1
  189. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  190. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +3 -1
  191. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  192. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +3 -1
  193. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
  194. package/dist/components/features/activities/activities.types.d.ts +26 -13
  195. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
  196. package/dist/components/features/activities/partials/activity-marker.d.ts +7 -3
  197. package/dist/components/features/activities/partials/activity-row.d.ts +24 -0
  198. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
  199. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  200. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
  201. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  202. package/dist/components/features/combobox/combobox.d.ts +2 -2
  203. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
  204. package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
  205. package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
  206. package/dist/components/features/combobox/types.d.ts +37 -8
  207. package/dist/components/features/email-composer/types.d.ts +3 -1
  208. package/dist/components/features/event-calendar/colors.d.ts +2 -2
  209. package/dist/components/features/event-calendar/event-calendar.types.d.ts +4 -0
  210. package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
  211. package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
  212. package/dist/components/features/filters/facets/select-facet.d.ts +2 -1
  213. package/dist/components/features/filters/filters.strings.d.ts +4 -0
  214. package/dist/components/features/filters/filters.types.d.ts +6 -3
  215. package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
  216. package/dist/components/features/filters/partials/filter-editor-header.d.ts +16 -0
  217. package/dist/components/features/filters/partials/filter-popover-content.d.ts +5 -3
  218. package/dist/components/features/filters/partials/nested-filter-options.d.ts +21 -0
  219. package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
  220. package/dist/components/features/filters/partials/regular-filter-content.d.ts +2 -1
  221. package/dist/components/features/filters/utils/filter-utils.d.ts +25 -3
  222. package/dist/components/features/global-search/global-search.types.d.ts +2 -0
  223. package/dist/components/features/global-search/partials/global-search-input.d.ts +10 -0
  224. package/dist/components/features/global-search/partials/global-search-result-row.d.ts +7 -1
  225. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  226. package/dist/components/features/media-library/media-library.d.ts +1 -1
  227. package/dist/components/features/media-library/media-library.strings.d.ts +8 -0
  228. package/dist/components/features/media-library/media-library.types.d.ts +50 -12
  229. package/dist/components/features/media-library/partials/media-library-partials.d.ts +4 -4
  230. package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
  231. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
  232. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
  233. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
  234. package/dist/components/features/products/components/product-options-matrix.d.ts +1 -1
  235. package/dist/components/features/products/components/product-variant-editor.d.ts +1 -1
  236. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  237. package/dist/components/features/products/products.strings.d.ts +9 -1
  238. package/dist/components/features/products/products.types.d.ts +45 -8
  239. package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
  240. package/dist/components/features/resource/resource.d.ts +6 -2
  241. package/dist/components/features/resource/resource.types.d.ts +14 -1
  242. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  243. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +1 -1
  244. package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
  245. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +1 -1
  246. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
  247. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +12 -2
  248. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
  249. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
  250. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
  251. package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
  252. package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
  253. package/dist/components/features/table/data-table.d.ts +1 -1
  254. package/dist/components/features/table/index.d.ts +1 -0
  255. package/dist/components/features/table/partials/resource-cell.d.ts +22 -5
  256. package/dist/components/features/table/table-body.d.ts +1 -1
  257. package/dist/components/features/table/table-helpers.d.ts +6 -3
  258. package/dist/components/features/table/table.strings.d.ts +3 -0
  259. package/dist/components/features/table/table.types.d.ts +18 -2
  260. package/dist/components/layout/app-shell/app-shell.types.d.ts +35 -6
  261. package/dist/components/layout/app-shell/index.d.ts +1 -1
  262. package/dist/components/layout/app-shell/shell-regions.d.ts +27 -0
  263. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  264. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  265. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  266. package/dist/components/layout/containers/two-column-layout.d.ts +2 -0
  267. package/dist/components/layout/header/header.recipes.d.ts +6 -0
  268. package/dist/components/layout/header/header.types.d.ts +9 -8
  269. package/dist/components/layout/layout.types.d.ts +5 -3
  270. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +5 -0
  271. package/dist/components/layout/navigation/side-nav.d.ts +3 -2
  272. package/dist/components/layout/normalize-layout-path.d.ts +1 -0
  273. package/dist/components/layout/page/index.d.ts +2 -1
  274. package/dist/components/layout/page/page.d.ts +1 -0
  275. package/dist/components/layout/page/page.strings.d.ts +11 -0
  276. package/dist/components/layout/page/page.types.d.ts +69 -17
  277. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  278. package/dist/components/layout/settings/settings.d.ts +10 -3
  279. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  280. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  281. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  282. package/dist/components/layout/sidebar/index.d.ts +2 -1
  283. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +38 -0
  284. package/dist/components/layout/sidebar/sidebar.context.d.ts +6 -7
  285. package/dist/components/layout/sidebar/sidebar.types.d.ts +50 -10
  286. package/dist/components/layout/sidebar/sidebar.utils.d.ts +9 -1
  287. package/dist/components/layout/workspace/workspace.types.d.ts +8 -1
  288. package/dist/components/primitives/link.d.ts +3 -2
  289. package/dist/components/primitives/money.d.ts +1 -1
  290. package/dist/components/primitives/number.d.ts +1 -1
  291. package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
  292. package/dist/components/ui/alert-dialog.d.ts +2 -2
  293. package/dist/components/ui/combobox.d.ts +1 -1
  294. package/dist/components/ui/dialog.d.ts +2 -2
  295. package/dist/components/ui/overlay-layer.d.ts +18 -0
  296. package/dist/components/ui/sheet.d.ts +5 -1
  297. package/dist/components/ui/sidebar-state.d.ts +82 -0
  298. package/dist/components/ui/sidebar.d.ts +5 -17
  299. package/dist/{containers-CRmHf7GP.js → containers-CSdc32h9.js} +26 -18
  300. package/dist/containers-CSdc32h9.js.map +1 -0
  301. package/dist/{control-group-recipes-DBXmfh2E.js → control-group-recipes-fMuFo0H7.js} +6 -6
  302. package/dist/control-group-recipes-fMuFo0H7.js.map +1 -0
  303. package/dist/{copyable-CnGCZdX4.js → copyable-3fdHfMR3.js} +7 -7
  304. package/dist/{copyable-CnGCZdX4.js.map → copyable-3fdHfMR3.js.map} +1 -1
  305. package/dist/{data-display-D4oujtx0.js → data-display-Cmj-xZYl.js} +271 -279
  306. package/dist/data-display-Cmj-xZYl.js.map +1 -0
  307. package/dist/{date-Q7jnXxpk.js → date-Br0FicVv.js} +5 -5
  308. package/dist/{date-Q7jnXxpk.js.map → date-Br0FicVv.js.map} +1 -1
  309. package/dist/date-picker-CyQlFYsP.js +1617 -0
  310. package/dist/date-picker-CyQlFYsP.js.map +1 -0
  311. package/dist/date-pickers-tj2MXmXd.js +185 -0
  312. package/dist/date-pickers-tj2MXmXd.js.map +1 -0
  313. package/dist/{display-BB4BL_-K.js → display-CT_N2a3w.js} +9 -9
  314. package/dist/{display-BB4BL_-K.js.map → display-CT_N2a3w.js.map} +1 -1
  315. package/dist/dropdown-menu-C08iIugv.js +194 -0
  316. package/dist/dropdown-menu-C08iIugv.js.map +1 -0
  317. package/dist/features/activities.js +388 -326
  318. package/dist/features/activities.js.map +1 -1
  319. package/dist/features/ai-chat.js +46 -32
  320. package/dist/features/ai-chat.js.map +1 -1
  321. package/dist/features/appointment-calendar.js +130 -130
  322. package/dist/features/appointment-calendar.js.map +1 -1
  323. package/dist/features/async-preview.js +11 -10
  324. package/dist/features/async-preview.js.map +1 -1
  325. package/dist/features/combobox.js +1 -1
  326. package/dist/features/comments.js +1 -1
  327. package/dist/features/data-view.js +13 -13
  328. package/dist/features/data-view.js.map +1 -1
  329. package/dist/features/email-composer.js +243 -239
  330. package/dist/features/email-composer.js.map +1 -1
  331. package/dist/features/event-calendar.js +197 -199
  332. package/dist/features/event-calendar.js.map +1 -1
  333. package/dist/features/filters.js +2 -2
  334. package/dist/features/global-search.js +168 -143
  335. package/dist/features/global-search.js.map +1 -1
  336. package/dist/features/kanban.js +19 -30
  337. package/dist/features/kanban.js.map +1 -1
  338. package/dist/features/map/style.css +15 -0
  339. package/dist/features/map.js +369 -343
  340. package/dist/features/map.js.map +1 -1
  341. package/dist/features/media-library.js +1202 -975
  342. package/dist/features/media-library.js.map +1 -1
  343. package/dist/features/mentions.js +2 -2
  344. package/dist/features/overlays.js +1 -1
  345. package/dist/features/products.js +1270 -1183
  346. package/dist/features/products.js.map +1 -1
  347. package/dist/features/questionnaire.js +160 -153
  348. package/dist/features/questionnaire.js.map +1 -1
  349. package/dist/features/resource-assignment.js +8 -8
  350. package/dist/features/resource.js +119 -113
  351. package/dist/features/resource.js.map +1 -1
  352. package/dist/features/rich-text-editor.js +28 -19
  353. package/dist/features/rich-text-editor.js.map +1 -1
  354. package/dist/features/schema-form.js +297 -256
  355. package/dist/features/schema-form.js.map +1 -1
  356. package/dist/features/suggestions.js +57 -50
  357. package/dist/features/suggestions.js.map +1 -1
  358. package/dist/features/sync.js +3 -3
  359. package/dist/features/table.js +1 -1
  360. package/dist/features/theme-tweaker.js +470 -470
  361. package/dist/features/theme-tweaker.js.map +1 -1
  362. package/dist/feedback-Dzo1xtAU.js +246 -0
  363. package/dist/feedback-Dzo1xtAU.js.map +1 -0
  364. package/dist/{field-affordance-recipes-DjwGx8eM.js → field-affordance-recipes-D6H7tVJi.js} +5 -5
  365. package/dist/field-affordance-recipes-D6H7tVJi.js.map +1 -0
  366. package/dist/field-control-attributes-B6i335wr.js +18 -0
  367. package/dist/field-control-attributes-B6i335wr.js.map +1 -0
  368. package/dist/{field-state-recipes-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
  369. package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
  370. package/dist/filters-Dl80yYtN.js +2415 -0
  371. package/dist/filters-Dl80yYtN.js.map +1 -0
  372. package/dist/form-field-CAPdwdnZ.js +74 -0
  373. package/dist/form-field-CAPdwdnZ.js.map +1 -0
  374. package/dist/{form-sizing-NXgjkmBG.js → form-sizing-CgcrUbLU.js} +5 -5
  375. package/dist/form-sizing-CgcrUbLU.js.map +1 -0
  376. package/dist/{forms-BV5m5aQF.js → forms-B3W8CH7-.js} +17 -13
  377. package/dist/forms-B3W8CH7-.js.map +1 -0
  378. package/dist/forms-numeric-CwjQJe-O.js +991 -0
  379. package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
  380. package/dist/{header-BA697l4a.js → header-ZIIsRKxP.js} +145 -141
  381. package/dist/header-ZIIsRKxP.js.map +1 -0
  382. package/dist/header.recipes-BigdJjw1.js +6 -0
  383. package/dist/header.recipes-BigdJjw1.js.map +1 -0
  384. package/dist/hooks/use-files.d.ts +2 -0
  385. package/dist/{hooks-BQ-L7Uu2.js → hooks-BitHSh-Y.js} +27 -15
  386. package/dist/hooks-BitHSh-Y.js.map +1 -0
  387. package/dist/{icon-badge-COWbCCWu.js → icon-badge-npxF1SLX.js} +4 -4
  388. package/dist/{icon-badge-COWbCCWu.js.map → icon-badge-npxF1SLX.js.map} +1 -1
  389. package/dist/index.js +4 -5
  390. package/dist/{input-Cdw4k0fb.js → input-7KAc7XQL.js} +9 -9
  391. package/dist/{input-Cdw4k0fb.js.map → input-7KAc7XQL.js.map} +1 -1
  392. package/dist/input-DIREVYHs.js +21 -0
  393. package/dist/input-DIREVYHs.js.map +1 -0
  394. package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
  395. package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
  396. package/dist/item-FfWnaYST.js +278 -0
  397. package/dist/item-FfWnaYST.js.map +1 -0
  398. package/dist/layout/app-shell.js +1 -1
  399. package/dist/layout/auth.js +1 -1
  400. package/dist/layout/containers.js +1 -1
  401. package/dist/layout/header.js +1 -1
  402. package/dist/layout/hooks.js +1 -1
  403. package/dist/layout/navigation.js +1 -1
  404. package/dist/layout/page.js +2 -2
  405. package/dist/layout/settings.js +1 -1
  406. package/dist/layout/sidebar.js +3 -3
  407. package/dist/layout/workspace.js +1 -1
  408. package/dist/layout.js +12 -12
  409. package/dist/layout.types-E_GAApzO.js +30 -0
  410. package/dist/layout.types-E_GAApzO.js.map +1 -0
  411. package/dist/lib/affordance-geometry.generated.d.ts +35 -35
  412. package/dist/lib/control-group-recipes.d.ts +5 -5
  413. package/dist/lib/field-affordance-recipes.d.ts +2 -2
  414. package/dist/lib/field-control-attributes.d.ts +11 -0
  415. package/dist/lib/field-state-recipes.d.ts +2 -0
  416. package/dist/lib/format.d.ts +1 -0
  417. package/dist/lib/motion-recipes.d.ts +3 -0
  418. package/dist/lib/navigation-row-recipes.d.ts +7 -7
  419. package/dist/lib/overlay-anatomy-recipes.d.ts +3 -3
  420. package/dist/lib/portal-recipes.d.ts +3 -0
  421. package/dist/lib/surface-recipes.d.ts +1 -1
  422. package/dist/lib/token-merge.generated.d.ts +18 -15
  423. package/dist/lib/utils.js +1 -1
  424. package/dist/map-demo-tile.svg +1 -1
  425. package/dist/{media-gallery-CSl5W1Fy.js → media-gallery-C81DAnKI.js} +6 -6
  426. package/dist/{media-gallery-CSl5W1Fy.js.map → media-gallery-C81DAnKI.js.map} +1 -1
  427. package/dist/{mentions-RKOQaaIB.js → mentions-qOnedSt4.js} +237 -168
  428. package/dist/mentions-qOnedSt4.js.map +1 -0
  429. package/dist/message-BJHnn43M.js +135 -0
  430. package/dist/message-BJHnn43M.js.map +1 -0
  431. package/dist/{metadata-list-qVV7AVxa.js → metadata-list-XkqZ_UXH.js} +64 -64
  432. package/dist/metadata-list-XkqZ_UXH.js.map +1 -0
  433. package/dist/{motion-recipes-ChBg4HBq.js → motion-recipes-DitYv6P2.js} +10 -2
  434. package/dist/motion-recipes-DitYv6P2.js.map +1 -0
  435. package/dist/navigation-BgtPJAhi.js +288 -0
  436. package/dist/navigation-BgtPJAhi.js.map +1 -0
  437. package/dist/navigation-Bt-v7rWP.js +261 -0
  438. package/dist/navigation-Bt-v7rWP.js.map +1 -0
  439. package/dist/{navigation-row-recipes-WZEs-hYo.js → navigation-row-recipes-BGVLvU_O.js} +9 -9
  440. package/dist/navigation-row-recipes-BGVLvU_O.js.map +1 -0
  441. package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
  442. package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
  443. package/dist/{number-E_OiIfJz.js → number-CYqBcrSj.js} +79 -87
  444. package/dist/number-CYqBcrSj.js.map +1 -0
  445. package/dist/overflow-tab-bar-BQCA2Zn2.js +172 -0
  446. package/dist/overflow-tab-bar-BQCA2Zn2.js.map +1 -0
  447. package/dist/overlays-CC8zI3Du.js +1017 -0
  448. package/dist/overlays-CC8zI3Du.js.map +1 -0
  449. package/dist/page-BoQ1VaFJ.js +331 -0
  450. package/dist/page-BoQ1VaFJ.js.map +1 -0
  451. package/dist/page-header-commands-DIKspJfx.js +193 -0
  452. package/dist/page-header-commands-DIKspJfx.js.map +1 -0
  453. package/dist/{pagination-Ch8X_47u.js → pagination-Br8TdV9A.js} +7 -7
  454. package/dist/{pagination-Ch8X_47u.js.map → pagination-Br8TdV9A.js.map} +1 -1
  455. package/dist/popover-k8TdUcAt.js +201 -0
  456. package/dist/popover-k8TdUcAt.js.map +1 -0
  457. package/dist/{popover-menu-BYaCdFhf.js → popover-menu-yn-o0kyA.js} +7 -7
  458. package/dist/{popover-menu-BYaCdFhf.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
  459. package/dist/{popover.recipes-D3j8R8Yp.js → popover.recipes-DJ0AkUan.js} +19 -12
  460. package/dist/popover.recipes-DJ0AkUan.js.map +1 -0
  461. package/dist/portal-recipes-DyUXqUtD.js +9 -0
  462. package/dist/portal-recipes-DyUXqUtD.js.map +1 -0
  463. package/dist/{primitives-Du64iDbb.js → primitives-BkkQjYl7.js} +23 -18
  464. package/dist/primitives-BkkQjYl7.js.map +1 -0
  465. package/dist/primitives.js +4 -4
  466. package/dist/{progress-BvF2oCdV.js → progress-DZFXXzPs.js} +9 -9
  467. package/dist/{progress-BvF2oCdV.js.map → progress-DZFXXzPs.js.map} +1 -1
  468. package/dist/{receipt-D789Jwyy.js → receipt-C7LhOg7Q.js} +7 -7
  469. package/dist/receipt-C7LhOg7Q.js.map +1 -0
  470. package/dist/rich-text-BnTzZjIo.js +45 -0
  471. package/dist/rich-text-BnTzZjIo.js.map +1 -0
  472. package/dist/{rich-text-editor-Cm1dpUpQ.js → rich-text-editor-CAurDwT5.js} +501 -424
  473. package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
  474. package/dist/rich-text-editor-toolbar-DbXig7Jk.js +99 -0
  475. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
  476. package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
  477. package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
  478. package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
  479. package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
  480. package/dist/{scroll-area-La5RXsEk.js → scroll-area-Bj6CRUif.js} +2 -2
  481. package/dist/{scroll-area-La5RXsEk.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
  482. package/dist/{separator-DAEV0w65.js → separator-B9ewiCGO.js} +2 -2
  483. package/dist/{separator-DAEV0w65.js.map → separator-B9ewiCGO.js.map} +1 -1
  484. package/dist/{separator-GNfPG-90.js → separator-DM6gs2vu.js} +3 -3
  485. package/dist/{separator-GNfPG-90.js.map → separator-DM6gs2vu.js.map} +1 -1
  486. package/dist/services/actions.js +1 -1
  487. package/dist/settings-DZPHgpx4.js +155 -0
  488. package/dist/settings-DZPHgpx4.js.map +1 -0
  489. package/dist/sheet-C4DHsgLk.js +250 -0
  490. package/dist/sheet-C4DHsgLk.js.map +1 -0
  491. package/dist/sidebar-C8BnDwTH.js +709 -0
  492. package/dist/sidebar-C8BnDwTH.js.map +1 -0
  493. package/dist/sidebar-CmD6a-HK.js +1004 -0
  494. package/dist/sidebar-CmD6a-HK.js.map +1 -0
  495. package/dist/skeleton-DDgdhmu9.js +265 -0
  496. package/dist/skeleton-DDgdhmu9.js.map +1 -0
  497. package/dist/smart-card-B6vLxqa_.js +617 -0
  498. package/dist/smart-card-B6vLxqa_.js.map +1 -0
  499. package/dist/{structure-C0V0_Fyf.js → structure-DZJ2wbAU.js} +2 -2
  500. package/dist/{structure-C0V0_Fyf.js.map → structure-DZJ2wbAU.js.map} +1 -1
  501. package/dist/style.css +1 -1
  502. package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
  503. package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
  504. package/dist/{table-DH7rozUv.js → table-CBonSdTp.js} +573 -519
  505. package/dist/table-CBonSdTp.js.map +1 -0
  506. package/dist/{table-CpvnzJn9.js → table-CXSPHH25.js} +75 -71
  507. package/dist/table-CXSPHH25.js.map +1 -0
  508. package/dist/tabs-C4Kr_hCr.js +192 -0
  509. package/dist/tabs-C4Kr_hCr.js.map +1 -0
  510. package/dist/{text-inputs-DXItiR0O.js → text-inputs-jdkS3ReG.js} +18 -18
  511. package/dist/text-inputs-jdkS3ReG.js.map +1 -0
  512. package/dist/theme.css +40 -37
  513. package/dist/{timelines-DmtztAY_.js → timelines-CoPwdJP0.js} +13 -12
  514. package/dist/timelines-CoPwdJP0.js.map +1 -0
  515. package/dist/tooltip-31NwIpTo.js +113 -0
  516. package/dist/tooltip-31NwIpTo.js.map +1 -0
  517. package/dist/{tree-CV11PURP.js → tree-CeYVzdFE.js} +9 -9
  518. package/dist/{tree-CV11PURP.js.map → tree-CeYVzdFE.js.map} +1 -1
  519. package/dist/typography/rich-text.js +1 -1
  520. package/dist/{typography-CSyJrh28.js → typography-C7-YMW1S.js} +12 -12
  521. package/dist/{typography-CSyJrh28.js.map → typography-C7-YMW1S.js.map} +1 -1
  522. package/dist/typography.js +1 -1
  523. package/dist/ui-provider-C-74NVLc.js +178 -0
  524. package/dist/ui-provider-C-74NVLc.js.map +1 -0
  525. package/dist/ui-provider.js +2 -3
  526. package/dist/{upload-C9SA0X-8.js → upload-Hdm5gObf.js} +309 -296
  527. package/dist/upload-Hdm5gObf.js.map +1 -0
  528. package/dist/{upload-queue-DhQJiSRc.js → upload-queue-D0sYPuqo.js} +16 -14
  529. package/dist/upload-queue-D0sYPuqo.js.map +1 -0
  530. package/dist/{usage-card-DVTRDmGz.js → usage-card-9s8hLDfn.js} +24 -17
  531. package/dist/usage-card-9s8hLDfn.js.map +1 -0
  532. package/dist/{utils-CF3c95Io.js → utils-DhuoqFy4.js} +255 -165
  533. package/dist/utils-DhuoqFy4.js.map +1 -0
  534. package/dist/value-inputs-D3aPgq9H.js +980 -0
  535. package/dist/value-inputs-D3aPgq9H.js.map +1 -0
  536. package/dist/{value-typography-ClupF0Gz.js → value-typography-uSzzG9Gf.js} +32 -26
  537. package/dist/value-typography-uSzzG9Gf.js.map +1 -0
  538. package/dist/{workspace-9EFVXUyk.js → workspace-CC8Vchiu.js} +51 -50
  539. package/dist/workspace-CC8Vchiu.js.map +1 -0
  540. package/docs/consumer-skill/SKILL.md +4 -3
  541. package/docs/consumer-skill/agents/themelia-ui-designer.md +96 -0
  542. package/docs/consumer-skill/examples/app-layout.tsx +52 -1
  543. package/docs/consumer-skill/examples/commerce-lines.tsx +271 -0
  544. package/docs/consumer-skill/examples/custom-composition.tsx +21 -0
  545. package/docs/consumer-skill/examples/detail.tsx +5 -4
  546. package/docs/consumer-skill/examples/edit.tsx +3 -3
  547. package/docs/consumer-skill/examples/editable-sections.tsx +38 -0
  548. package/docs/consumer-skill/examples/index-table.tsx +4 -4
  549. package/docs/consumer-skill/examples/manifest.json +38 -1
  550. package/docs/consumer-skill/examples/product-media.tsx +41 -0
  551. package/docs/consumer-skill/examples/product-parts.tsx +81 -0
  552. package/docs/consumer-skill/examples/rhf-edit-page.tsx +1 -1
  553. package/docs/consumer-skill/examples/rhf-overlay-form.tsx +24 -11
  554. package/docs/consumer-skill/examples/token-domain-structure.tsx +68 -0
  555. package/docs/consumer-skill/references/agents-md.md +21 -19
  556. package/docs/consumer-skill/references/analytics.md +33 -1
  557. package/docs/consumer-skill/references/commerce-composition.md +97 -0
  558. package/docs/consumer-skill/references/component-contracts.json +21249 -14205
  559. package/docs/consumer-skill/references/composition-mapping.md +17 -3
  560. package/docs/consumer-skill/references/composition.md +177 -32
  561. package/docs/consumer-skill/references/critique-rubric.md +98 -0
  562. package/docs/consumer-skill/references/custom-composition.md +261 -0
  563. package/docs/consumer-skill/references/data-reading.md +79 -0
  564. package/docs/consumer-skill/references/design-contract.md +12 -9
  565. package/docs/consumer-skill/references/discovery.md +27 -3
  566. package/docs/consumer-skill/references/domain-structures.md +124 -0
  567. package/docs/consumer-skill/references/installation.md +62 -8
  568. package/docs/consumer-skill/references/integration.md +59 -1
  569. package/docs/consumer-skill/references/product-composition.md +94 -0
  570. package/docs/consumer-skill/references/public-api.json +3044 -445
  571. package/docs/consumer-skill/references/review.md +87 -10
  572. package/docs/consumer-skill/references/rhf-workflows.md +79 -0
  573. package/docs/consumer-skill/references/screen-archetypes.md +19 -7
  574. package/docs/consumer-skill/references/screen-decisions.md +126 -0
  575. package/docs/consumer-skill/references/theming.md +24 -20
  576. package/docs/consumer-skill/references/tokens.json +9 -9
  577. package/docs/consumer-skill/references/view-craft.md +153 -0
  578. package/docs/consumer-skill/references/view-spec.md +73 -0
  579. package/docs/consumer-skill/references/workflows.md +7 -1
  580. package/docs/consumer-skill/scripts/composition-policy.mjs +176 -26
  581. package/docs/consumer-skill/scripts/composition-schema.mjs +1 -1
  582. package/docs/consumer-skill/scripts/composition.mjs +61 -5
  583. package/docs/consumer-skill/scripts/discovery.mjs +54 -0
  584. package/docs/consumer-skill/scripts/inspect-component.mjs +1 -1
  585. package/docs/consumer-skill/scripts/inspection.mjs +73 -18
  586. package/docs/consumer-skill/scripts/setup-skills.mjs +79 -7
  587. package/docs/consumer-skill/scripts/surface-policy.mjs +5 -5
  588. package/docs/consumer-skills/themelia-components/SKILL.md +14 -13
  589. package/docs/consumer-skills/themelia-composition/SKILL.md +16 -17
  590. package/docs/consumer-skills/themelia-design/SKILL.md +55 -0
  591. package/docs/consumer-skills/themelia-foundation/SKILL.md +2 -1
  592. package/docs/consumer-skills/themelia-tokenization/SKILL.md +24 -17
  593. package/package.json +4 -2
  594. package/templates/admin-shell-template.tsx +1 -2
  595. package/templates/customers-template.tsx +18 -16
  596. package/dist/accordion-96o0pN62.js.map +0 -1
  597. package/dist/action-menu-CHgs8vmj.js.map +0 -1
  598. package/dist/affordance-geometry.generated-B8yGOr8-.js.map +0 -1
  599. package/dist/ai-artifact-BZUGwBq6.js.map +0 -1
  600. package/dist/app-shell-D63ATkIK.js +0 -237
  601. package/dist/app-shell-D63ATkIK.js.map +0 -1
  602. package/dist/auth-D2FVZ1MH.js.map +0 -1
  603. package/dist/avatar-DWO_HHhB.js.map +0 -1
  604. package/dist/base/cascader.js.map +0 -1
  605. package/dist/batch-action-bar-CdfIkCsV.js.map +0 -1
  606. package/dist/breadcrumbs-B-WFKecD.js.map +0 -1
  607. package/dist/button-DkmK-z8E.js.map +0 -1
  608. package/dist/buttons-BbfzgczK.js.map +0 -1
  609. package/dist/cards-4JTWqvVe.js +0 -68
  610. package/dist/cards-4JTWqvVe.js.map +0 -1
  611. package/dist/chart-C19flDQb.js +0 -155
  612. package/dist/chart-C19flDQb.js.map +0 -1
  613. package/dist/choice-inputs-JLtij2y4.js +0 -776
  614. package/dist/choice-inputs-JLtij2y4.js.map +0 -1
  615. package/dist/code-block-CGNaUtAE.js.map +0 -1
  616. package/dist/combobox-CBJDs6w_.js +0 -877
  617. package/dist/combobox-CBJDs6w_.js.map +0 -1
  618. package/dist/combobox-hbhSS18O.js +0 -355
  619. package/dist/combobox-hbhSS18O.js.map +0 -1
  620. package/dist/command-D8NrBj-b.js.map +0 -1
  621. package/dist/comments-Di4w0H_S.js.map +0 -1
  622. package/dist/containers-CRmHf7GP.js.map +0 -1
  623. package/dist/control-group-recipes-DBXmfh2E.js.map +0 -1
  624. package/dist/data-display-D4oujtx0.js.map +0 -1
  625. package/dist/date-picker-zOt1oNss.js +0 -1542
  626. package/dist/date-picker-zOt1oNss.js.map +0 -1
  627. package/dist/date-pickers-cj8IXbDC.js +0 -179
  628. package/dist/date-pickers-cj8IXbDC.js.map +0 -1
  629. package/dist/dropdown-menu-CjY8Vt7W.js +0 -193
  630. package/dist/dropdown-menu-CjY8Vt7W.js.map +0 -1
  631. package/dist/feedback-DZNL5Lg1.js +0 -239
  632. package/dist/feedback-DZNL5Lg1.js.map +0 -1
  633. package/dist/field-affordance-recipes-DjwGx8eM.js.map +0 -1
  634. package/dist/filters-BcT-uoFy.js +0 -2209
  635. package/dist/filters-BcT-uoFy.js.map +0 -1
  636. package/dist/form-field-CsgRmdit.js +0 -63
  637. package/dist/form-field-CsgRmdit.js.map +0 -1
  638. package/dist/form-sizing-NXgjkmBG.js.map +0 -1
  639. package/dist/forms-BV5m5aQF.js.map +0 -1
  640. package/dist/forms-numeric-Cd33AKbD.js +0 -906
  641. package/dist/forms-numeric-Cd33AKbD.js.map +0 -1
  642. package/dist/header-BA697l4a.js.map +0 -1
  643. package/dist/hooks-BQ-L7Uu2.js.map +0 -1
  644. package/dist/input-DOPL5_QE.js +0 -21
  645. package/dist/input-DOPL5_QE.js.map +0 -1
  646. package/dist/item-BvZ2DR_x.js +0 -277
  647. package/dist/item-BvZ2DR_x.js.map +0 -1
  648. package/dist/layout.types-Cn7aUzJp.js +0 -20
  649. package/dist/layout.types-Cn7aUzJp.js.map +0 -1
  650. package/dist/mentions-RKOQaaIB.js.map +0 -1
  651. package/dist/message-INU2xsxu.js +0 -128
  652. package/dist/message-INU2xsxu.js.map +0 -1
  653. package/dist/metadata-list-qVV7AVxa.js.map +0 -1
  654. package/dist/motion-recipes-ChBg4HBq.js.map +0 -1
  655. package/dist/navigation-BQNcg1jT.js +0 -269
  656. package/dist/navigation-BQNcg1jT.js.map +0 -1
  657. package/dist/navigation-DLF3E1IC.js +0 -145
  658. package/dist/navigation-DLF3E1IC.js.map +0 -1
  659. package/dist/navigation-row-recipes-WZEs-hYo.js.map +0 -1
  660. package/dist/number-E_OiIfJz.js.map +0 -1
  661. package/dist/overflow-tab-bar-CrbqMteP.js +0 -284
  662. package/dist/overflow-tab-bar-CrbqMteP.js.map +0 -1
  663. package/dist/overlays-BlKynmde.js +0 -1004
  664. package/dist/overlays-BlKynmde.js.map +0 -1
  665. package/dist/page-CIwNUtGr.js +0 -227
  666. package/dist/page-CIwNUtGr.js.map +0 -1
  667. package/dist/page-header-commands-DFMlNYzN.js +0 -128
  668. package/dist/page-header-commands-DFMlNYzN.js.map +0 -1
  669. package/dist/popover-uwzX2vo7.js +0 -198
  670. package/dist/popover-uwzX2vo7.js.map +0 -1
  671. package/dist/popover.recipes-D3j8R8Yp.js.map +0 -1
  672. package/dist/primitives-Du64iDbb.js.map +0 -1
  673. package/dist/receipt-D789Jwyy.js.map +0 -1
  674. package/dist/rich-text-CLJEf76s.js +0 -78
  675. package/dist/rich-text-CLJEf76s.js.map +0 -1
  676. package/dist/rich-text-editor-Cm1dpUpQ.js.map +0 -1
  677. package/dist/rich-text-editor-toolbar-L__e4x47.js +0 -94
  678. package/dist/rich-text-editor-toolbar-L__e4x47.js.map +0 -1
  679. package/dist/safe-image-src-C6kQSMBZ.js +0 -17
  680. package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
  681. package/dist/sanitize-html-DsQmI48u.js.map +0 -1
  682. package/dist/settings-BA2iboic.js +0 -174
  683. package/dist/settings-BA2iboic.js.map +0 -1
  684. package/dist/sheet-DoAxTb2J.js +0 -213
  685. package/dist/sheet-DoAxTb2J.js.map +0 -1
  686. package/dist/sidebar-ByqKR_W5.js +0 -512
  687. package/dist/sidebar-ByqKR_W5.js.map +0 -1
  688. package/dist/sidebar-D2iSnGJ7.js +0 -619
  689. package/dist/sidebar-D2iSnGJ7.js.map +0 -1
  690. package/dist/skeleton-CUj8O5Bd.js +0 -264
  691. package/dist/skeleton-CUj8O5Bd.js.map +0 -1
  692. package/dist/smart-card-CqkzQsK-.js +0 -614
  693. package/dist/smart-card-CqkzQsK-.js.map +0 -1
  694. package/dist/table-CpvnzJn9.js.map +0 -1
  695. package/dist/table-DH7rozUv.js.map +0 -1
  696. package/dist/tabs-eqVsJZWO.js +0 -191
  697. package/dist/tabs-eqVsJZWO.js.map +0 -1
  698. package/dist/text-inputs-DXItiR0O.js.map +0 -1
  699. package/dist/theme-scope-BJ6eE2xt.js +0 -50
  700. package/dist/theme-scope-BJ6eE2xt.js.map +0 -1
  701. package/dist/timelines-DmtztAY_.js.map +0 -1
  702. package/dist/tooltip-B4hjKtoV.js +0 -111
  703. package/dist/tooltip-B4hjKtoV.js.map +0 -1
  704. package/dist/ui-provider-CQCuCBcy.js +0 -136
  705. package/dist/ui-provider-CQCuCBcy.js.map +0 -1
  706. package/dist/upload-C9SA0X-8.js.map +0 -1
  707. package/dist/upload-queue-DhQJiSRc.js.map +0 -1
  708. package/dist/usage-card-DVTRDmGz.js.map +0 -1
  709. package/dist/use-mobile-vaLKwgyf.js +0 -15
  710. package/dist/use-mobile-vaLKwgyf.js.map +0 -1
  711. package/dist/utils-CF3c95Io.js.map +0 -1
  712. package/dist/value-inputs-C0o70p-U.js +0 -980
  713. package/dist/value-inputs-C0o70p-U.js.map +0 -1
  714. package/dist/value-typography-ClupF0Gz.js.map +0 -1
  715. package/dist/workspace-9EFVXUyk.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlays-CC8zI3Du.js","names":["Dialog","DialogPrimitive","DialogTrigger","DialogClose","DialogContent","Button","DialogHeader","DialogFooter","DialogTitle","DialogDescription","isSimpleText","titleTypography","Dialog","DialogPrimitive","React","DialogTriggerPrimitive","DialogClosePrimitive","DialogContentPrimitive","DialogHeaderPrimitive","DialogFooterPrimitive","DialogTitlePrimitive","DialogDescriptionPrimitive","BaseDialog","AlertDialog","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogContent","AlertDialogFooter","AlertDialogMedia","AlertDialogTitle","AlertDialogDescription","AlertDialogAction","Button","AlertDialogCancel","AlertDialog","AlertDialogPrimitive","React","AlertDialogTriggerPrimitive","AlertDialogContentPrimitive","AlertDialogFooterPrimitive","AlertDialogTitlePrimitive","AlertDialogDescriptionPrimitive","AlertDialogMediaPrimitive","AlertDialogActionPrimitive","AlertDialogCancelPrimitive","BaseAlertDialog","useOverlayConfig","useThemePortalContainer","cn","SheetDescription","SheetTitle","useInsideOverlayLayer","useOpenerFinalFocus","SheetContent","SheetBody","SheetFooter","overlayAnatomyRecipes","SheetClose","SheetHeader","Sheet","OverlayLayer","Button","Text","textWeights","textLineHeights","textSizes","portalClassName","motionRecipes","Slot","Button$1","Stack","toneRecipes","AlertDescription","Alert","surfaceDividerRecipes","modalRegionRecipes","compositionRhythm","modalBackdropRecipe","usePopupFocusRecovery","interactionRecipes","React$1","Dialog$2","props","Dialog","DialogTrigger$1","renderSlot","asChild","DialogPortal","resolvedContainer","container","className","DialogClose$1","DialogOverlay","DialogContent$1","finalFocusProp","recoverFocus","onFocusCapture","insideOverlay","capture","showCloseButton","XIcon","DialogHeader$1","DialogFooter$1","children","DialogTitle$1","DialogDescription$1","isSimpleText$1","value","titleTypography$1","Dialog$1","DialogTrigger","DialogClose","DialogContent","DialogHeader","textGap","DialogBody","DialogFooter","DialogTitle","DialogDescription","defaultOverlayStrings","defaultAlertDialogStrings","useOverlayActions","strings","useStrings","customStrings","isExecuting","setIsExecuting","useState","executingRef","useRef","handleConfirm","useCallback","onConfirm","closeDialog","onAsyncConfirm","closeOnAsyncComplete","error","onError","loading","handleCancel","onCancel","handleFormSubmit","formId","form","useMemo","emphasis","tone","confirmTone","resolveOpenValue","nextOpen","currentOpen","normalizeGroupState","result","key","keys","state","hasGroupStateChanged","previous","next","useOverlayVisibility","controlledOpen","internalOpen","setInternalOpen","defaultOpen","isControlled","open","openRef","previousVisibility","useLayoutEffect","useEffect","onOpen","onClose","setOpen","resolvedOpen","onOpenChange","useOverlayVisibilityGroup","keyList","stateRef","setKeyOpen","previousState","nextState","closeOthersOnOpen","item","usePendingOverlayFocus","popupRef","popup","pending","modal","active","overlayToneGlyphs","HelpCircle","AlertCircle","AlertTriangle","Info","CheckCircle","OverlayToneIcon","Glyph","color","SIZE_CLASSES","ActionDialogImpl","centered","align","defaultDialogAlign","visibility","pendingFocusRef","effectiveLoading","hasContent","alertMessage","hasFooter","showCancel","showConfirm","footer","closeOnBackdropClick","details","closeOnEscape","trigger","isValidElement","surfaceStyle","initialFocusRef","title","size","description","visuallyHideHeader","showIcon","contentClassName","finalConfirmTone","confirmStyle","confirmButtonOnClick","X","ActionDialog","memo","WIDTH_CLASSES","ActionDrawerImpl","isHorizontal","direction","showFooter","SheetTrigger","width","ActionDrawer","AlertDialog$2","AlertDialog","AlertDialogTrigger$1","AlertDialogPortal","AlertDialogOverlay","AlertDialogContent$1","AlertDialogFooter$1","AlertDialogMedia$1","AlertDialogTitle$1","AlertDialogDescription$1","AlertDialogAction$1","AlertDialogCancel$1","isSimpleText","titleTypography","AlertDialog$1","AlertDialogTrigger","AlertDialogContent","AlertDialogHeader","AlertDialogBody","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription","AlertDialogMedia","AlertDialogAction","AlertDialogCancel","ConfirmDialogImpl","resolvedAlign","defaultConfirmAlign","mergedStrings","resolvedConfirmTone","destructive","resolvedTone","toneGlyph","hasHeading","ConfirmDialog"],"sources":["../src/components/ui/dialog.tsx","../src/components/base/display/dialog.tsx","../src/components/features/overlays/overlays.strings.ts","../src/components/features/overlays/hooks/use-overlay-actions.ts","../src/components/features/overlays/hooks/use-overlay-visibility.ts","../src/components/features/overlays/hooks/use-pending-overlay-focus.ts","../src/components/features/overlays/overlay-tone-icon.tsx","../src/components/features/overlays/dialog.tsx","../src/components/features/overlays/drawer.tsx","../src/components/ui/alert-dialog.tsx","../src/components/base/display/alert-dialog.tsx","../src/components/features/overlays/alert-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { overlayAnatomyRecipes } from '../../lib/overlay-anatomy-recipes';\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { portalClassName } from '../../lib/portal-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { OverlayLayer, useInsideOverlayLayer, useOpenerFinalFocus } from './overlay-layer';\nimport { usePopupFocusRecovery } from '../../lib/use-popup-focus-recovery';\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { XIcon } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"./button\"\nimport { Slot } from \"./slot\"\nimport { cn } from \"../../lib/utils\"\n\nfunction Dialog({ ...props }: DialogPrimitive.Root.Props) {\n return <DialogPrimitive.Root data-slot=\"dialog\" modal=\"trap-focus\" {...props} />\n}\n\nfunction DialogTrigger({\n asChild = false,\n ...props\n}: DialogPrimitive.Trigger.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\n render={renderSlot}\n {...props}\n />\n )\n}\n\nfunction DialogPortal({ container, className, ...props }: DialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return <DialogPrimitive.Portal container={resolvedContainer} data-slot=\"dialog-portal\" className={portalClassName(className)} {...props} />\n}\n\nfunction DialogClose({ ...props }: DialogPrimitive.Close.Props) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: DialogPrimitive.Backdrop.Props) {\n return (\n <DialogPrimitive.Backdrop\n data-slot=\"dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop, \"isolate\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogContent({\n className,\n container,\n children,\n showCloseButton = true,\n onFocusCapture,\n finalFocus: finalFocusProp,\n ...props\n}: DialogPrimitive.Popup.Props & {\n showCloseButton?: boolean\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n const recoverFocus = usePopupFocusRecovery(onFocusCapture)\n const insideOverlay = useInsideOverlayLayer()\n const { capture, finalFocus } = useOpenerFinalFocus(finalFocusProp)\n return (\n <DialogPortal container={resolvedContainer}>\n <DialogOverlay forceRender={!insideOverlay} />\n <DialogPrimitive.Popup\n data-slot=\"dialog-content\"\n className={cn(\n motionRecipes.dialog,\n \"bg-background grid max-w-[calc(100%-2rem)] gap-space-xl rounded-surface p-surface text-sm sm:max-w-md fixed top-1/2 left-1/2 z-50 w-full -translate-x-1/2 -translate-y-1/2 outline-none\",\n className\n )}\n {...props}\n finalFocus={finalFocus}\n onFocusCapture={recoverFocus}\n >\n {capture}\n <OverlayLayer>{children}</OverlayLayer>\n {!!showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n render={\n <Button\n variant=\"ghost\"\n data-overlay-close=\"\"\n className={overlayAnatomyRecipes.close}\n size=\"icon-sm\"\n />\n }\n >\n <XIcon\n />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Popup>\n </DialogPortal>\n )\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogFooter({\n className,\n showCloseButton = false,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showCloseButton?: boolean\n}) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n >\n {children}\n {!!showCloseButton && (\n <DialogPrimitive.Close render={<Button variant=\"outline\" />}>\n Close\n </DialogPrimitive.Close>\n )}\n </div>\n )\n}\n\nfunction DialogTitle({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Title.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n render={renderSlot}\n className={cn(\"leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n asChild = false,\n ...props\n}: DialogPrimitive.Description.Props & { asChild?: boolean }) {\n const renderSlot = asChild ? <Slot /> : undefined\n\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n render={renderSlot}\n className={cn(\"text-muted-foreground *:[a]:hover:text-foreground text-sm *:[a]:underline *:[a]:underline-offset-3\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n}\n","import { modalRegionRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport type { TextGap } from '../structure';\n/**\n * Dialog — internal modal anatomy behind `ActionDialog`.\n *\n * Not published from any entrypoint: applications use `ActionDialog` (or\n * `ConfirmDialog`) from `themelia-react-ui/features/overlays`, which owns the\n * lifecycle, focus, dismissal and action contract. This wrapper supplies the\n * modal geometry those features share: one framed popover surface whose\n * header, scrolling body and footer each own their inset, with exactly one rule\n * between adjacent visible regions (`modalRegionRecipes`).\n */\nimport * as React from 'react';\n\nimport {\n\tDialog as DialogPrimitive,\n\tDialogClose as DialogClosePrimitive,\n\tDialogContent as DialogContentPrimitive,\n\tDialogDescription as DialogDescriptionPrimitive,\n\tDialogFooter as DialogFooterPrimitive,\n\tDialogHeader as DialogHeaderPrimitive,\n\tDialogOverlay,\n\tDialogPortal,\n\tDialogTitle as DialogTitlePrimitive,\n\tDialogTrigger as DialogTriggerPrimitive,\n} from '../../ui/dialog';\nimport { Text } from '../../typography';\nimport { textLineHeights, textSizes, textWeights } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/**\n * The title element carries the canonical title role, so custom title nodes\n * match scalar titles and its line box never differs from the Text inside.\n * Descriptions keep the configurable Text default instead.\n */\nconst titleTypography = cn(textSizes.base, textWeights.semibold, textLineHeights.snug);\n\nexport const Dialog = DialogPrimitive;\n\nexport const DialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof DialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTriggerPrimitive>\n>(function DialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogTrigger.displayName = 'DialogTrigger';\n\nexport const DialogClose = React.forwardRef<\n\tReact.ElementRef<typeof DialogClosePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogClosePrimitive>\n>(function DialogClose({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogClosePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-close--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogClose.displayName = 'DialogClose';\n\nexport const DialogContent = React.forwardRef<\n\tReact.ElementRef<typeof DialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogContentPrimitive>\n>(function DialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t// The shell is flush: each region owns its inset once and the rules\n\t\t\t\t// between regions run edge to edge.\n\t\t\t\t'dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-surface bg-popover p-0 text-popover-foreground shadow-xl sm:max-w-lg', surfaceDividerRecipes.modal.shell,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogContent.displayName = 'DialogContent';\n\nexport const DialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogHeaderPrimitive> & { textGap?: TextGap }\n>(function DialogHeader({ className, textGap = 'normal', ...props }, ref) {\n\treturn (\n\t\t<DialogHeaderPrimitive\n\t\t\tref={ref}\n\t\t\tdata-modal-region=\"\"\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-header--component', modalRegionRecipes.header,\n\t\t\t\toverlayAnatomyRecipes.header,\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogHeader.displayName = 'DialogHeader';\n\n/** Scroll-owning content region between the pinned dialog header and footer. */\nexport const DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction DialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"dialog-body\"\n\t\t\t\tdata-modal-region=\"\"\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'dialog-body--component', modalRegionRecipes.body,\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nDialogBody.displayName = 'DialogBody';\n\nexport const DialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof DialogFooterPrimitive>\n>(function DialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<DialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tdata-modal-region=\"\"\n\t\t\tclassName={cn(\n\t\t\t\t'dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nDialogFooter.displayName = 'DialogFooter';\n\nexport const DialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof DialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogTitlePrimitive>\n>(function DialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-title--component m-0', titleTypography, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype=\"inherit\"\n\t\t\t\t\tsize=\"base\"\n\t\t\t\t\tweight=\"semibold\"\n\t\t\t\t\tlineHeight=\"snug\"\n\t\t\t\t\tclassName=\"dialog-title--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogTitlePrimitive>\n\t);\n});\n\nDialogTitle.displayName = 'DialogTitle';\n\nexport const DialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof DialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof DialogDescriptionPrimitive>\n>(function DialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<DialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('dialog-description--component m-0', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text\n\t\t\t\t\ttag=\"span\"\n\t\t\t\t\ttype=\"secondary\"\n\t\t\t\t\tlineHeight=\"relaxed\"\n\t\t\t\t\tclassName=\"dialog-description--text\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</DialogDescriptionPrimitive>\n\t);\n});\n\nDialogDescription.displayName = 'DialogDescription';\n\nexport { DialogOverlay, DialogPortal };\n","/**\n * Default user-facing strings shared by ActionDialog, ActionDrawer, and\n * ConfirmDialog recipes.\n *\n * Consumers wire backend i18n at the call site:\n *\n * <ActionDialog strings={{ confirm: t('common.confirm') }} … />\n */\n\nexport interface OverlayStrings {\n\tconfirm: string;\n\tcancel: string;\n\tclose: string;\n\tloading: string;\n\tdialogLabel: string;\n\tdrawerLabel: string;\n\talertDialogLabel: string;\n}\n\nexport const defaultOverlayStrings: OverlayStrings = {\n\tconfirm: 'Confirm',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n\nexport const defaultAlertDialogStrings: OverlayStrings = {\n\tconfirm: 'Continue',\n\tcancel: 'Cancel',\n\tclose: 'Close',\n\tloading: 'Loading...',\n\tdialogLabel: 'Dialog',\n\tdrawerLabel: 'Drawer',\n\talertDialogLabel: 'Confirmation',\n};\n","import { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { useStrings, type StringsProp } from '../../../../lib/strings';\n\nimport {\n\tdefaultOverlayStrings,\n\ttype OverlayStrings,\n} from '../overlays.strings';\nimport type {\n\tOverlayButtonTone,\n\tOverlayActionProps,\n\tOverlayTone,\n} from '../overlays.types';\n\nexport interface UseOverlayActionsOptions\n\textends Pick<\n\t\tOverlayActionProps,\n\t\t| 'onConfirm'\n\t\t| 'onAsyncConfirm'\n\t\t| 'closeOnAsyncComplete'\n\t\t| 'confirmTone'\n\t\t| 'loading'\n\t\t| 'formId'\n\t> {\n\tcloseDialog: () => void;\n\tonCancel?: () => void;\n\tcustomStrings?: StringsProp<OverlayStrings>;\n\temphasis?: boolean;\n\ttone?: OverlayTone;\n\t/** Called when `onAsyncConfirm` throws; the consumer reports or retries.\n\t * Without it the library logs the rejection in development only. */\n\tonError?: (error: unknown) => void;\n}\n\nexport interface UseOverlayActionsReturn {\n\t/** Overrides this surface's own copy. */\n\tstrings: OverlayStrings;\n\tisExecuting: boolean;\n\thandleConfirm: () => Promise<void>;\n\thandleCancel: () => void;\n\tfinalConfirmTone: OverlayButtonTone;\n\tconfirmButtonOnClick: (() => Promise<void>) | undefined;\n\teffectiveLoading: boolean;\n}\n\nexport function useOverlayActions({\n\tcloseDialog,\n\tonConfirm,\n\tonAsyncConfirm,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tloading = false,\n\tformId,\n\tonCancel,\n\tcustomStrings,\n\temphasis = false,\n\ttone = 'neutral',\n\tonError,\n}: UseOverlayActionsOptions): UseOverlayActionsReturn {\n\tconst strings = useStrings(defaultOverlayStrings, customStrings);\n\n\tconst [isExecuting, setIsExecuting] = useState(false);\n\tconst executingRef = useRef(false);\n\n\tconst handleConfirm = useCallback(async () => {\n\t\tif (loading || executingRef.current) return;\n\t\tif (onConfirm) {\n\t\t\tonConfirm();\n\t\t\tcloseDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tif (onAsyncConfirm) {\n\t\t\texecutingRef.current = true;\n\t\t\tsetIsExecuting(true);\n\t\t\ttry {\n\t\t\t\tawait onAsyncConfirm();\n\t\t\t\tif (closeOnAsyncComplete) {\n\t\t\t\t\tcloseDialog();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\t// A consumer that handles the failure owns its reporting; only an\n\t\t\t\t// unhandled rejection is surfaced in development.\n\t\t\t\tif (onError) onError(error);\n\t\t\t\telse if (import.meta.env?.DEV) console.error('Overlay async confirm failed:', error);\n\t\t\t} finally {\n\t\t\t\texecutingRef.current = false;\n\t\t\t\tsetIsExecuting(false);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tcloseDialog();\n\t}, [loading, onConfirm, onAsyncConfirm, closeOnAsyncComplete, closeDialog, onError]);\n\n\tconst handleCancel = useCallback(() => {\n\t\tif (loading || executingRef.current) return;\n\t\tonCancel?.();\n\t\tcloseDialog();\n\t}, [loading, onCancel, closeDialog]);\n\n\tconst handleFormSubmit = useCallback(async () => {\n\t\tif (!formId || loading || executingRef.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst form = document.getElementById(formId);\n\n\t\tif (!(form instanceof HTMLFormElement)) {\n\t\t\treturn;\n\t\t}\n\n\t\tform.requestSubmit();\n\t}, [formId, loading]);\n\n\tconst finalConfirmTone = useMemo<OverlayButtonTone>(() => {\n\t\tif (!emphasis) return confirmTone ?? 'primary';\n\t\tif (tone === 'destructive') return 'destructive';\n\t\tif (tone === 'warning') return 'warning';\n\t\tif (tone === 'success') return 'success';\n\t\treturn confirmTone ?? 'primary';\n\t}, [emphasis, tone, confirmTone]);\n\n\tconst confirmButtonOnClick = formId ? handleFormSubmit : handleConfirm;\n\n\treturn {\n\t\tstrings,\n\t\tisExecuting,\n\t\thandleConfirm,\n\t\thandleCancel,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading: isExecuting || loading,\n\t};\n}\n","import {\n\tuseCallback,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n\tuseRef,\n\tuseState,\n\ttype Dispatch,\n\ttype SetStateAction,\n} from 'react';\n\nexport type OverlayOpenSetter = Dispatch<SetStateAction<boolean>>;\n\nexport interface OverlayVisibilityProps {\n\t/** Current visibility. */\n\topen: boolean;\n\t/** Requests a visibility change; spread both onto an overlay. */\n\tonOpenChange: (open: boolean) => void;\n}\n\nexport interface UseOverlayVisibilityOptions {\n\t/** Initial visibility when uncontrolled. Default: `false`. */\n\tdefaultOpen?: boolean;\n\t/** Controlled visibility. Omit to let the hook own it. */\n\topen?: boolean;\n\t/** Fired for each request that differs from the current visibility. */\n\tonOpenChange?: (open: boolean) => void;\n\t/** Fired after a change to open. */\n\tonOpen?: () => void;\n\t/** Fired after a change to closed, whatever dismissed the overlay. */\n\tonClose?: () => void;\n}\n\nexport interface UseOverlayVisibilityReturn {\n\topen: boolean;\n\tisOpen: boolean;\n\tsetOpen: OverlayOpenSetter;\n\tshow: () => void;\n\thide: () => void;\n\ttoggle: () => void;\n\toverlayProps: OverlayVisibilityProps;\n}\n\nexport type OverlayVisibilityGroupState<TKey extends string = string> = Record<TKey, boolean>;\n\nexport interface UseOverlayVisibilityGroupOptions<TKey extends string = string> {\n\t/** Initial visibility per key when uncontrolled. */\n\tdefaultOpen?: Partial<Record<TKey, boolean>>;\n\t/** Controlled visibility per key. */\n\topen?: Partial<Record<TKey, boolean>>;\n\t/** Fired for each requested change, with the key, its visibility and the proposed group state. */\n\tonOpenChange?: (\n\t\tkey: TKey,\n\t\topen: boolean,\n\t\tstate: OverlayVisibilityGroupState<TKey>,\n\t) => void;\n\t/** Opening one key closes the others, for one-at-a-time overlays. Default: `false`. */\n\tcloseOthersOnOpen?: boolean;\n}\n\nexport type UseOverlayVisibilityGroupReturn<TKey extends string = string> = Record<\n\tTKey,\n\tUseOverlayVisibilityReturn\n>;\n\nfunction resolveOpenValue(\n\tnextOpen: SetStateAction<boolean>,\n\tcurrentOpen: boolean,\n): boolean {\n\tif (typeof nextOpen === 'function') {\n\t\treturn (nextOpen as (open: boolean) => boolean)(currentOpen);\n\t}\n\treturn nextOpen;\n}\n\nfunction normalizeGroupState<TKey extends string>(\n\tkeys: readonly TKey[],\n\tstate?: Partial<Record<TKey, boolean>>,\n): OverlayVisibilityGroupState<TKey> {\n\tconst result = {} as OverlayVisibilityGroupState<TKey>;\n\tfor (const key of keys) {\n\t\tresult[key] = Boolean(state?.[key]);\n\t}\n\treturn result;\n}\n\nfunction hasGroupStateChanged<TKey extends string>(\n\tprevious: OverlayVisibilityGroupState<TKey>,\n\tnext: OverlayVisibilityGroupState<TKey>,\n\tkeys: readonly TKey[],\n): boolean {\n\treturn keys.some((key) => previous[key] !== next[key]);\n}\n\nexport function useOverlayVisibility({\n\tdefaultOpen = false,\n\topen: controlledOpen,\n\tonOpenChange,\n\tonOpen,\n\tonClose,\n}: UseOverlayVisibilityOptions = {}): UseOverlayVisibilityReturn {\n\tconst [internalOpen, setInternalOpen] = useState(defaultOpen);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : internalOpen;\n\tconst openRef = useRef(open);\n\tconst previousVisibility = useRef(open);\n\tuseLayoutEffect(() => {\n\t\topenRef.current = open;\n\t}, [isControlled, open]);\n\tuseEffect(() => {\n\t\tif (previousVisibility.current === open) return;\n\t\tpreviousVisibility.current = open;\n\t\tif (open) onOpen?.();\n\t\telse onClose?.();\n\t}, [onClose, onOpen, open]);\n\n\tconst setOpen = useCallback<OverlayOpenSetter>(\n\t\t(nextOpen) => {\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, openRef.current);\n\t\t\tif (openRef.current === resolvedOpen) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\topenRef.current = resolvedOpen;\n\t\t\t\tsetInternalOpen(resolvedOpen);\n\t\t\t}\n\n\t\t\tonOpenChange?.(resolvedOpen);\n\t\t},\n\t\t[isControlled, onOpenChange],\n\t);\n\n\tconst show = useCallback(() => {\n\t\tsetOpen(true);\n\t}, [setOpen]);\n\n\tconst hide = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tconst toggle = useCallback(() => {\n\t\tsetOpen((currentOpen) => !currentOpen);\n\t}, [setOpen]);\n\n\tconst overlayProps = useMemo(\n\t\t() => ({\n\t\t\topen,\n\t\t\tonOpenChange: setOpen,\n\t\t}),\n\t\t[open, setOpen],\n\t);\n\n\treturn {\n\t\topen,\n\t\tisOpen: open,\n\t\tsetOpen,\n\t\tshow,\n\t\thide,\n\t\ttoggle,\n\t\toverlayProps,\n\t};\n}\n\nexport function useOverlayVisibilityGroup<const TKeys extends readonly string[]>(\n\tkeys: TKeys,\n\t{\n\t\tdefaultOpen,\n\t\topen: controlledOpen,\n\t\tonOpenChange,\n\t\tcloseOthersOnOpen = false,\n\t}: UseOverlayVisibilityGroupOptions<TKeys[number] & string> = {},\n): UseOverlayVisibilityGroupReturn<TKeys[number] & string> {\n\ttype TKey = TKeys[number] & string;\n\n\tconst keyList = keys as readonly TKey[];\n\tconst [internalOpen, setInternalOpen] = useState<OverlayVisibilityGroupState<TKey>>(\n\t\t() => normalizeGroupState(keyList, defaultOpen),\n\t);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst state = normalizeGroupState(keyList, isControlled ? controlledOpen : internalOpen);\n\tconst stateRef = useRef(state);\n\tuseLayoutEffect(() => {\n\t\tstateRef.current = state;\n\t}, [state]);\n\n\tconst setKeyOpen = useCallback(\n\t\t(key: TKey, nextOpen: SetStateAction<boolean>) => {\n\t\t\tconst previousState = stateRef.current;\n\t\t\tconst resolvedOpen = resolveOpenValue(nextOpen, previousState[key]);\n\t\t\tconst nextState = {\n\t\t\t\t...previousState,\n\t\t\t\t[key]: resolvedOpen,\n\t\t\t} as OverlayVisibilityGroupState<TKey>;\n\n\t\t\tif (closeOthersOnOpen && resolvedOpen) {\n\t\t\t\tfor (const item of keyList) {\n\t\t\t\t\tif (item !== key) {\n\t\t\t\t\t\tnextState[item] = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!hasGroupStateChanged(previousState, nextState, keyList)) return;\n\n\t\t\tif (!isControlled) {\n\t\t\t\tstateRef.current = nextState;\n\t\t\t\tsetInternalOpen(nextState);\n\t\t\t}\n\n\t\t\tonOpenChange?.(key, resolvedOpen, nextState);\n\t\t},\n\t\t[closeOthersOnOpen, isControlled, keyList, onOpenChange],\n\t);\n\n\treturn useMemo(() => {\n\t\tconst result = {} as UseOverlayVisibilityGroupReturn<TKey>;\n\n\t\tfor (const key of keyList) {\n\t\t\tconst open = state[key];\n\t\t\tconst setOpen: OverlayOpenSetter = (nextOpen) => {\n\t\t\t\tsetKeyOpen(key, nextOpen);\n\t\t\t};\n\n\t\t\tresult[key] = {\n\t\t\t\topen,\n\t\t\t\tisOpen: open,\n\t\t\t\tsetOpen,\n\t\t\t\tshow: () => setKeyOpen(key, true),\n\t\t\t\thide: () => setKeyOpen(key, false),\n\t\t\t\ttoggle: () => setKeyOpen(key, (currentOpen) => !currentOpen),\n\t\t\t\toverlayProps: {\n\t\t\t\t\topen,\n\t\t\t\t\tonOpenChange: setOpen,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}, [keyList, setKeyOpen, state]);\n}\n","import { useLayoutEffect, useRef } from 'react';\n\n/** Keep modal focus anchored when its focused action becomes disabled. */\nexport function usePendingOverlayFocus(pending: boolean, modal: boolean | 'trap-focus' = true) {\n\tconst popupRef = useRef<HTMLDivElement>(null);\n\tuseLayoutEffect(() => {\n\t\tconst popup = popupRef.current;\n\t\tif (!pending || !modal || !popup) return;\n\t\tconst active = popup.ownerDocument.activeElement;\n\t\t// Preserve enabled fields and consumer-owned custom footer controls.\n\t\tif (active === popup.ownerDocument.body || (active && popup.contains(active) && active.matches(':disabled'))) {\n\t\t\tpopup.focus({ preventScroll: true });\n\t\t}\n\t}, [pending, modal]);\n\treturn popupRef;\n}\n","import { AlertCircle, AlertTriangle, CheckCircle, HelpCircle, Info } from 'lucide-react';\n\nimport { textLineHeights, textSizes } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nimport type { OverlayTone } from './overlays.types';\nimport { toneRecipes } from '../../../lib/tone-recipes';\n\n/** One glyph and colour per tone, shared by every overlay's opt-in `showIcon`. */\nexport const overlayToneGlyphs = {\n\tneutral: { Glyph: HelpCircle, color: 'text-muted-foreground', surface: 'bg-muted' },\n\tdestructive: { Glyph: AlertCircle, color: 'text-destructive', surface: toneRecipes.destructive.tint },\n\twarning: { Glyph: AlertTriangle, color: 'text-warning-accent', surface: toneRecipes.warning.tint },\n\tinfo: { Glyph: Info, color: 'text-info', surface: toneRecipes.info.tint },\n\tsuccess: { Glyph: CheckCircle, color: 'text-success', surface: toneRecipes.success.tint },\n} as const satisfies Record<OverlayTone, { Glyph: typeof Info; color: string; surface: string }>;\n\n/**\n * Inline tone glyph for a heading row. The wrapper takes the title's own line\n * box (base size, snug leading, `h-lh`), so the glyph centres on the first title\n * line at any density instead of relying on an optical offset.\n */\nexport function OverlayToneIcon({ tone }: { tone: OverlayTone }) {\n\tconst { Glyph, color } = overlayToneGlyphs[tone];\n\treturn (\n\t\t<span aria-hidden=\"true\" className={cn('overlay-tone-icon--component flex h-lh shrink-0 items-center', textSizes.base, textLineHeights.snug)}>\n\t\t\t<Glyph className={cn('size-icon', color)} />\n\t\t</span>\n\t);\n}\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport { X } from 'lucide-react';\nimport { isValidElement, memo } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tDialog as BaseDialog,\n\tDialogBody,\n\tDialogClose,\n\tDialogContent,\n\tDialogDescription,\n\tDialogFooter,\n\tDialogHeader,\n\tDialogTitle,\n\tDialogTrigger,\n} from '../../base/display/dialog';\nimport { Stack } from '../../base/structure';\nimport { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { useOverlayConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { OverlayToneIcon } from './overlay-tone-icon';\nimport type { ActionDialogProps, OverlaySize } from './overlays.types';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\nconst SIZE_CLASSES: Record<OverlaySize, string> = {\n\txs: 'sm:max-w-xs',\n\tsm: 'sm:max-w-sm',\n\tmd: 'sm:max-w-md',\n\tlg: 'sm:max-w-lg',\n\txl: 'sm:max-w-xl',\n\t'2xl': 'sm:max-w-2xl',\n\t'3xl': 'sm:max-w-3xl',\n\t'4xl': 'sm:max-w-4xl',\n\t'5xl': 'sm:max-w-5xl',\n\tfull: 'sm:max-w-[calc(100vw-2rem)]',\n};\n\nfunction ActionDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tshowCloseButton = true,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tsize = 'lg',\n\ttrigger,\n\talign,\n}: ActionDialogProps) {\n\tconst { defaultDialogAlign } = useOverlayConfig();\n\tconst centered = (align ?? defaultDialogAlign ?? 'start') === 'center';\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst pendingFocusRef = usePendingOverlayFocus(effectiveLoading);\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showCancel || showConfirm || footer;\n\n\treturn (\n\t\t<BaseDialog\n\t\t\topen={visibility.open}\n\t\t\tmodal\n\t\t\tdisablePointerDismissal={effectiveLoading || !closeOnBackdropClick}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && (effectiveLoading || (details.reason === 'escape-key' && !closeOnEscape))) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<DialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<DialogTrigger render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</DialogTrigger>\n\t\t\t))}\n\n\t\t\t<DialogContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.dialogLabel}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-dialog--component dialog--component',\n\t\t\t\t\tSIZE_CLASSES[size],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<DialogHeader\n\t\t\t\t\t\tdata-align={centered ? 'center' : 'start'}\n\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t'dialog--header',\n\t\t\t\t\t\t\tcentered && cn('text-center', overlayAnatomyRecipes.headerCentered),\n\t\t\t\t\t\t\tvisuallyHideHeader && 'sr-only',\n\t\t\t\t\t\t)}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Stack direction={centered ? 'vertical' : 'horizontal'} gap=\"sm\" align={centered ? 'center' : 'start'} wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <OverlayToneIcon tone={tone} />}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" align={centered ? 'center' : undefined} className={cn('min-w-0', centered ? 'w-full' : 'flex-1')}>\n\t\t\t\t\t\t\t\t{!!title && <DialogTitle>{title}</DialogTitle>}\n\t\t\t\t\t\t\t\t{!!description && <DialogDescription>{description}</DialogDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</DialogHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<DialogBody className={cn('dialog--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</DialogBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<DialogFooter className=\"dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap={compositionRhythm.commands}\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify={centered ? 'center' : 'end'}\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel} disabled={effectiveLoading}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</DialogFooter>\n\t\t\t\t)}\n\n\t\t\t\t{/*\n\t\t\t\t * Last in the DOM, drawn in the corner: opening focuses the first\n\t\t\t\t * field or action rather than the dismiss control, and the reading\n\t\t\t\t * order stays title → content → actions.\n\t\t\t\t */}\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t\t<DialogClose\n\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\trender={(\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\tdata-overlay-close=\"\"\n\t\t\t\t\t\t\t\tclassName={cn(overlayAnatomyRecipes.close, `z-10 text-muted-foreground ${interactionRecipes.rowHover}`)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={strings.close}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</DialogContent>\n\t\t</BaseDialog>\n\t);\n}\n\nexport const ActionDialog = memo(ActionDialogImpl);\nActionDialog.displayName = 'ActionDialog';\n","import { overlayAnatomyRecipes } from '../../../lib/overlay-anatomy-recipes';\nimport { X } from 'lucide-react';\nimport { isValidElement, memo } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tSheet,\n\tSheetBody,\n\tSheetClose,\n\tSheetContent,\n\tSheetDescription,\n\tSheetFooter,\n\tSheetHeader,\n\tSheetTitle,\n\tSheetTrigger,\n} from '../../base/sheet/sheet';\nimport { Stack } from '../../base/structure';\nimport { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { OverlayToneIcon } from './overlay-tone-icon';\nimport type { ActionDrawerProps, OverlaySize } from './overlays.types';\nimport { interactionRecipes } from '../../../lib/interaction-recipes';\n\nconst WIDTH_CLASSES: Record<OverlaySize, string> = {\n\txs: 'data-[side=left]:sm:max-w-xs data-[side=right]:sm:max-w-xs',\n\tsm: 'data-[side=left]:sm:max-w-sm data-[side=right]:sm:max-w-sm',\n\tmd: 'data-[side=left]:sm:max-w-md data-[side=right]:sm:max-w-md',\n\tlg: 'data-[side=left]:sm:max-w-lg data-[side=right]:sm:max-w-lg',\n\txl: 'data-[side=left]:sm:max-w-xl data-[side=right]:sm:max-w-xl',\n\t'2xl': 'data-[side=left]:sm:max-w-2xl data-[side=right]:sm:max-w-2xl',\n\t'3xl': 'data-[side=left]:sm:max-w-3xl data-[side=right]:sm:max-w-3xl',\n\t'4xl': 'data-[side=left]:sm:max-w-4xl data-[side=right]:sm:max-w-4xl',\n\t'5xl': 'data-[side=left]:sm:max-w-5xl data-[side=right]:sm:max-w-5xl',\n\tfull: 'data-[side=left]:sm:max-w-[calc(100vw-2rem)] data-[side=right]:sm:max-w-[calc(100vw-2rem)]',\n};\n\nfunction ActionDrawerImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tshowCloseButton = true,\n\tclassName,\n\tcontentClassName,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tcloseOnBackdropClick = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone = 'primary',\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\temphasis = false,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\tdirection = 'right',\n\twidth = 'lg',\n\tshowFooter = true,\n\tmodal = true,\n\ttrigger,\n}: ActionDrawerProps) {\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst {\n\t\tstrings,\n\t\tfinalConfirmTone,\n\t\tconfirmButtonOnClick,\n\t\teffectiveLoading,\n\t\thandleCancel,\n\t} = useOverlayActions({\n\t\tcloseDialog: visibility.hide,\n\t\tonConfirm,\n\t\tonAsyncConfirm,\n\t\tonError,\n\t\tcloseOnAsyncComplete,\n\t\tconfirmTone,\n\t\tloading,\n\t\tformId,\n\t\tonCancel,\n\t\tcustomStrings,\n\t\temphasis,\n\t\ttone,\n\t});\n\n\tconst isHorizontal = direction === 'left' || direction === 'right';\n\tconst pendingFocusRef = usePendingOverlayFocus(effectiveLoading, modal);\n\tconst hasContent = Boolean(children || alertMessage);\n\tconst hasFooter = showFooter && (showCancel || showConfirm || footer);\n\n\treturn (\n\t\t<Sheet\n\t\t\topen={visibility.open}\n\t\t\tmodal={modal}\n\t\t\t// A non-modal panel sits beside the page you keep working in, so a page\n\t\t\t// press must not dismiss it; it closes from its own controls or Escape.\n\t\t\tdisablePointerDismissal={effectiveLoading || !closeOnBackdropClick || modal === false}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && (effectiveLoading || (details.reason === 'escape-key' && !closeOnEscape))) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<SheetTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<SheetTrigger render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</SheetTrigger>\n\t\t\t))}\n\n\t\t\t<SheetContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tside={direction}\n\t\t\t\tshowCloseButton={false}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.drawerLabel}\n\t\t\t\t// The vendored SheetContent renders its backdrop unconditionally,\n\t\t\t\t// so a non-modal drawer would still sit behind a full-viewport\n\t\t\t\t// scrim. This marks the panel so the token layer can drop it.\n\t\t\t\tdata-modal={modal === false ? 'false' : undefined}\n\t\t\t\tclassName={cn(\n\t\t\t\t\t'action-drawer--component drawer--component',\n\t\t\t\t\tisHorizontal && 'data-[side=left]:w-full data-[side=right]:w-full',\n\t\t\t\t\tisHorizontal && WIDTH_CLASSES[width],\n\t\t\t\t\tclassName,\n\t\t\t\t)}\n\t\t\t>\n\t\t\t\t{!!(title || description) && (\n\t\t\t\t\t<SheetHeader className={cn('drawer--header', visuallyHideHeader && 'sr-only')}>\n\t\t\t\t\t\t<Stack direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t\t\t\t\t\t\t{!!showIcon && <OverlayToneIcon tone={tone} />}\n\t\t\t\t\t\t\t<Stack gap=\"normal\" className=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t{!!title && <SheetTitle>{title}</SheetTitle>}\n\t\t\t\t\t\t\t\t{!!description && <SheetDescription>{description}</SheetDescription>}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<SheetBody className={cn('drawer--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={tone} className=\"mb-space-md\">\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</SheetBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasFooter && (\n\t\t\t\t\t<SheetFooter className=\"drawer--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap={compositionRhythm.commands}\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify=\"end\"\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel} disabled={effectiveLoading}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone={finalConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</SheetFooter>\n\t\t\t\t)}\n\n\t\t\t\t{/*\n\t\t\t\t * Last in the DOM, drawn in the corner: opening focuses the first\n\t\t\t\t * field or action rather than the dismiss control, and the reading\n\t\t\t\t * order stays title → content → actions.\n\t\t\t\t */}\n\t\t\t\t{!!showCloseButton && (\n\t\t\t\t\t<SheetClose\n\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\trender={(\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\t\t\t\tsize=\"sm\"\n\t\t\t\t\t\t\t\ticonOnly\n\t\t\t\t\t\t\t\tdata-overlay-close=\"\"\n\t\t\t\t\t\t\t\tclassName={cn(overlayAnatomyRecipes.close, `z-10 text-muted-foreground ${interactionRecipes.rowHover}`)}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<X className=\"size-icon\" />\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\taria-label={strings.close}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</SheetContent>\n\t\t</Sheet>\n\t);\n}\n\nexport const ActionDrawer = memo(ActionDrawerImpl);\nActionDrawer.displayName = 'ActionDrawer';\n","\"use client\";\n\nimport { motionRecipes } from '../../lib/motion-recipes';\nimport { portalClassName } from '../../lib/portal-recipes';\nimport { modalBackdropRecipe } from './overlay.recipes';\nimport { OverlayLayer, useInsideOverlayLayer, useOpenerFinalFocus } from './overlay-layer';\n\nimport { useThemePortalContainer, type ThemePortalContainer } from '../../lib/theme-scope';\n\nimport * as React from \"react\"\nimport { AlertDialog as AlertDialogPrimitive } from \"@base-ui/react/alert-dialog\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"./button\"\n\nfunction AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />\n}\n\nfunction AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n )\n}\n\nfunction AlertDialogPortal({ container, className, ...props }: AlertDialogPrimitive.Portal.Props) {\n const resolvedContainer = useThemePortalContainer(container)\n return (\n <AlertDialogPrimitive.Portal container={resolvedContainer} data-slot=\"alert-dialog-portal\" className={portalClassName(className)} {...props} />\n )\n}\n\nfunction AlertDialogOverlay({\n className,\n ...props\n}: AlertDialogPrimitive.Backdrop.Props) {\n return (\n <AlertDialogPrimitive.Backdrop\n data-slot=\"alert-dialog-overlay\"\n className={cn(modalBackdropRecipe, motionRecipes.backdrop,\n \"isolate\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogContent({\n className,\n container,\n size = \"default\",\n children,\n finalFocus: finalFocusProp,\n ...props\n}: AlertDialogPrimitive.Popup.Props & {\n size?: \"default\" | \"sm\"\n} & { container?: ThemePortalContainer }) {\n const resolvedContainer = useThemePortalContainer(container)\n const insideOverlay = useInsideOverlayLayer()\n const { capture, finalFocus } = useOpenerFinalFocus(finalFocusProp)\n return (\n <AlertDialogPortal container={resolvedContainer}>\n <AlertDialogOverlay forceRender={!insideOverlay} />\n <AlertDialogPrimitive.Popup\n data-slot=\"alert-dialog-content\"\n data-size={size}\n className={cn(\n motionRecipes.dialog,\n \"group/alert-dialog-content fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-space-xl rounded-surface bg-popover p-surface text-popover-foreground shadow-xl outline-none data-[size=sm]:max-w-xs data-[size=default]:sm:max-w-md\",\n className\n )}\n {...props}\n finalFocus={finalFocus}\n >\n {capture}\n <OverlayLayer>{children}</OverlayLayer>\n </AlertDialogPrimitive.Popup>\n </AlertDialogPortal>\n )\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\n \"grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-space-2xl sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogMedia({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-media\"\n className={cn(\n \"mb-space-md inline-flex size-16 items-center justify-center rounded-full bg-muted sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\n \"text-lg font-medium sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\n \"text-sm text-muted-foreground *:[a]:underline *:[a]:underline-offset-3 *:[a]:hover:text-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof Button>) {\n return (\n <Button\n data-slot=\"alert-dialog-action\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction AlertDialogCancel({\n className,\n variant = \"outline\",\n size = \"default\",\n ...props\n}: AlertDialogPrimitive.Close.Props &\n Pick<React.ComponentProps<typeof Button>, \"variant\" | \"size\">) {\n return (\n <AlertDialogPrimitive.Close\n data-slot=\"alert-dialog-cancel\"\n className={cn(className)}\n render={<Button variant={variant} size={size} />}\n {...props}\n />\n )\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n}\n","import { modalRegionRecipes, surfaceDividerRecipes } from '../../../lib/surface-recipes';\nimport type { TextGap } from '../structure';\n/**\n * AlertDialog — internal confirmation anatomy behind `ConfirmDialog`.\n *\n * Not published from any entrypoint: applications use `ConfirmDialog` from\n * `themelia-react-ui/features/overlays`, which owns the decision lifecycle.\n * The surface shares the modal shell, region, rule and typography geometry of\n * the internal Dialog wrapper: a pinned heading region, an optional scrolling\n * body and pinned answers, with one rule between adjacent visible regions.\n */\nimport * as React from 'react';\n\nimport {\n\tAlertDialog as AlertDialogPrimitive,\n\tAlertDialogAction as AlertDialogActionPrimitive,\n\tAlertDialogCancel as AlertDialogCancelPrimitive,\n\tAlertDialogContent as AlertDialogContentPrimitive,\n\tAlertDialogDescription as AlertDialogDescriptionPrimitive,\n\tAlertDialogFooter as AlertDialogFooterPrimitive,\n\tAlertDialogMedia as AlertDialogMediaPrimitive,\n\tAlertDialogOverlay,\n\tAlertDialogPortal,\n\tAlertDialogTitle as AlertDialogTitlePrimitive,\n\tAlertDialogTrigger as AlertDialogTriggerPrimitive,\n} from '../../ui/alert-dialog';\nimport { Text } from '../../typography';\nimport { textLineHeights, textSizes, textWeights } from '../../typography/text.styles';\nimport { cn } from '../../../lib/utils';\n\nfunction isSimpleText(value: React.ReactNode): value is string | number | bigint {\n\treturn typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint';\n}\n\n/** Same title role as Dialog, set on the element so its line box matches the Text inside. */\nconst titleTypography = cn('font-sans', textSizes.base, textWeights.semibold, textLineHeights.snug);\n\nexport const AlertDialog = AlertDialogPrimitive;\n\nexport const AlertDialogTrigger = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTriggerPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTriggerPrimitive>\n>(function AlertDialogTrigger({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTriggerPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-trigger--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogTrigger.displayName = 'AlertDialogTrigger';\n\nexport const AlertDialogContent = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogContentPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogContentPrimitive>\n>(function AlertDialogContent({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogContentPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn(\n\t\t\t\t// Same flush shell as Dialog: regions own their insets and the rules between them.\n\t\t\t\t'alert-dialog-content--component flex max-h-[min(90vh,48rem)] flex-col gap-0 overflow-hidden rounded-surface bg-popover p-0 text-popover-foreground sm:max-w-md', surfaceDividerRecipes.modal.shell,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogContent.displayName = 'AlertDialogContent';\n\nexport const AlertDialogHeader = React.forwardRef<\n\tHTMLDivElement,\n\tReact.HTMLAttributes<HTMLDivElement> & { textGap?: TextGap; align?: 'start' | 'center' }\n>(function AlertDialogHeader({ className, textGap = 'normal', align = 'start', ...props }, ref) {\n\t// Owned here rather than by the raw header, whose responsive variants force\n\t// start alignment from `sm`; a confirmation chooses its own alignment.\n\treturn (\n\t\t<div\n\t\t\tref={ref}\n\t\t\tdata-slot=\"alert-dialog-header\"\n\t\t\tdata-modal-region=\"\"\n\t\t\tdata-align={align}\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-header--component flex flex-col',\n\t\t\t\tmodalRegionRecipes.header,\n\t\t\t\talign === 'center' ? 'items-center text-center' : 'items-start text-start',\n\t\t\t\ttextGap === 'dense' ? 'gap-dense' : 'gap-normal',\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\n/** Scroll-owning region between the pinned heading and the pinned answers. */\nexport const AlertDialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n\tfunction AlertDialogBody({ className, ...props }, ref) {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tdata-slot=\"alert-dialog-body\"\n\t\t\t\tdata-modal-region=\"\"\n\t\t\t\tclassName={cn('alert-dialog-body--component', modalRegionRecipes.body, className)}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t},\n);\n\nAlertDialogBody.displayName = 'AlertDialogBody';\n\nexport const AlertDialogFooter = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogFooterPrimitive>\n>(function AlertDialogFooter({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogFooterPrimitive\n\t\t\tref={ref}\n\t\t\tdata-modal-region=\"\"\n\t\t\tclassName={cn(\n\t\t\t\t'alert-dialog-footer--component', modalRegionRecipes.footer,\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\nexport const AlertDialogTitle = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogTitlePrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogTitlePrimitive>\n>(function AlertDialogTitle({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogTitlePrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-title--component m-0', titleTypography, className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"inherit\" size=\"base\" weight=\"semibold\" lineHeight=\"snug\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogTitlePrimitive>\n\t);\n});\n\nAlertDialogTitle.displayName = 'AlertDialogTitle';\n\nexport const AlertDialogDescription = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogDescriptionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogDescriptionPrimitive>\n>(function AlertDialogDescription({ children, className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogDescriptionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-description--component m-0', className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{isSimpleText(children) ? (\n\t\t\t\t<Text tag=\"span\" type=\"secondary\" lineHeight=\"relaxed\">\n\t\t\t\t\t{children}\n\t\t\t\t</Text>\n\t\t\t) : children}\n\t\t</AlertDialogDescriptionPrimitive>\n\t);\n});\n\nAlertDialogDescription.displayName = 'AlertDialogDescription';\n\nexport const AlertDialogMedia = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogMediaPrimitive>\n>(function AlertDialogMedia({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogMediaPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-media--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogMedia.displayName = 'AlertDialogMedia';\n\nexport const AlertDialogAction = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogActionPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogActionPrimitive>\n>(function AlertDialogAction({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogActionPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-action--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogAction.displayName = 'AlertDialogAction';\n\nexport const AlertDialogCancel = React.forwardRef<\n\tReact.ElementRef<typeof AlertDialogCancelPrimitive>,\n\tReact.ComponentPropsWithoutRef<typeof AlertDialogCancelPrimitive>\n>(function AlertDialogCancel({ className, ...props }, ref) {\n\treturn (\n\t\t<AlertDialogCancelPrimitive\n\t\t\tref={ref}\n\t\t\tclassName={cn('alert-dialog-cancel--component', className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n\nexport { AlertDialogOverlay, AlertDialogPortal };\n","import { isValidElement, memo, useMemo } from 'react';\n\nimport { Button } from '../../base/buttons';\nimport { Alert, AlertDescription } from '../../base/feedback';\nimport {\n\tAlertDialog as BaseAlertDialog,\n\tAlertDialogBody,\n\tAlertDialogContent,\n\tAlertDialogDescription,\n\tAlertDialogFooter,\n\tAlertDialogHeader,\n\tAlertDialogTitle,\n\tAlertDialogTrigger,\n} from '../../base/display/alert-dialog';\nimport { Stack } from '../../base/structure';\nimport { compositionRhythm } from '../../base/structure/composition.recipes';\nimport { useStrings } from '../../../lib/strings';\nimport { useOverlayConfig } from '../../../lib/ui-provider';\nimport { cn } from '../../../lib/utils';\n\nimport { useOverlayActions, useOverlayVisibility } from './hooks';\nimport { usePendingOverlayFocus } from './hooks/use-pending-overlay-focus';\nimport { overlayToneGlyphs } from './overlay-tone-icon';\nimport { defaultAlertDialogStrings } from './overlays.strings';\nimport type { ConfirmDialogProps } from './overlays.types';\n\nfunction ConfirmDialogImpl({\n\topen,\n\tonOpenChange,\n\tonClose,\n\tchildren,\n\ttitle,\n\tdescription,\n\tvisuallyHideHeader = false,\n\tclassName,\n\tcontentClassName,\n\tsurfaceStyle,\n\tinitialFocusRef,\n\tcloseOnEscape = true,\n\tstrings: customStrings,\n\tshowCancel = true,\n\tshowConfirm = true,\n\tonCancel,\n\tonConfirm,\n\tonAsyncConfirm,\n\tonError,\n\tcloseOnAsyncComplete = true,\n\tconfirmTone,\n\tconfirmStyle = 'solid',\n\tloading = false,\n\tformId,\n\tfooter,\n\ttone = 'neutral',\n\tshowIcon = false,\n\talertMessage,\n\ttrigger,\n\tdestructive = false,\n\talign,\n}: ConfirmDialogProps) {\n\tconst { defaultConfirmAlign } = useOverlayConfig();\n\tconst resolvedAlign = align ?? defaultConfirmAlign ?? 'center';\n\tconst visibility = useOverlayVisibility({ open, onOpenChange, onClose });\n\tconst mergedStrings = useStrings(defaultAlertDialogStrings, customStrings);\n\tconst resolvedConfirmTone = useMemo(() => {\n\t\tif (destructive) return 'destructive' as const;\n\t\tif (confirmTone) return confirmTone;\n\t\tconst toneMap = {\n\t\t\tneutral: 'primary',\n\t\t\tdestructive: 'destructive',\n\t\t\twarning: 'warning',\n\t\t\tinfo: 'primary',\n\t\t\tsuccess: 'success',\n\t\t} as const;\n\t\treturn toneMap[tone];\n\t}, [destructive, confirmTone, tone]);\n\n\tconst { strings, confirmButtonOnClick, effectiveLoading, handleCancel } =\n\t\tuseOverlayActions({\n\t\t\tcloseDialog: visibility.hide,\n\t\t\tonConfirm,\n\t\t\tonAsyncConfirm,\n\t\t\tonError,\n\t\t\tcloseOnAsyncComplete,\n\t\t\tconfirmTone: resolvedConfirmTone,\n\t\t\tloading,\n\t\t\tformId,\n\t\t\tonCancel,\n\t\t\tcustomStrings: mergedStrings,\n\t\t});\n\n\t/*\n\t * `destructive` is documented as the destructive *presentation*, but it only\n\t * ever reached the confirm button — the icon and the inline alert still came\n\t * from `tone`, which defaults to neutral. The result was a red confirm button\n\t * beside a grey question mark: two signals disagreeing about how serious the\n\t * action is. An explicit `tone` still wins, so this only fills the gap.\n\t */\n\tconst resolvedTone = destructive && tone === 'neutral' ? ('destructive' as const) : tone;\n\tconst toneGlyph = overlayToneGlyphs[resolvedTone];\n\tconst pendingFocusRef = usePendingOverlayFocus(effectiveLoading);\n\tconst hasHeading = Boolean(title || description || (showIcon && !visuallyHideHeader));\n\tconst hasContent = Boolean(children || alertMessage);\n\n\treturn (\n\t\t<BaseAlertDialog\n\t\t\topen={visibility.open}\n\t\t\tonOpenChange={(nextOpen, details) => {\n\t\t\t\tif (!nextOpen && (effectiveLoading || (details.reason === 'escape-key' && !closeOnEscape))) {\n\t\t\t\t\tdetails.cancel();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisibility.setOpen(nextOpen);\n\t\t\t}}\n\t\t>\n\t\t\t{!!trigger && (isValidElement(trigger) ? (\n\t\t\t\t<AlertDialogTrigger render={trigger} />\n\t\t\t) : (\n\t\t\t\t<AlertDialogTrigger render={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" />} className=\"overlay-trigger--fallback\">\n\t\t\t\t\t{trigger}\n\t\t\t\t</AlertDialogTrigger>\n\t\t\t))}\n\n\t\t\t<AlertDialogContent\n\t\t\t\tref={pendingFocusRef}\n\t\t\t\tstyle={surfaceStyle}\n\t\t\t\tinitialFocus={initialFocusRef}\n\t\t\t\taria-label={title ? undefined : strings.alertDialogLabel}\n\t\t\t\tclassName={cn('confirm-dialog--component alert-dialog--component', className)}\n\t\t\t>\n\t\t\t\t{!!hasHeading && (\n\t\t\t\t\t<AlertDialogHeader\n\t\t\t\t\t\talign={resolvedAlign}\n\t\t\t\t\t\tclassName={cn('alert-dialog--header', visuallyHideHeader && 'sr-only')}\n\t\t\t\t\t>\n\t\t\t\t\t\t{!!showIcon && !visuallyHideHeader && (\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\t\t\t'mb-space-sm flex size-avatar-lg shrink-0 items-center justify-center rounded-full',\n\t\t\t\t\t\t\t\t\ttoneGlyph.surface,\n\t\t\t\t\t\t\t\t\ttoneGlyph.color,\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<toneGlyph.Glyph className=\"size-icon-lg\" />\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{!!title && <AlertDialogTitle>{title}</AlertDialogTitle>}\n\t\t\t\t\t\t{!!description && <AlertDialogDescription>{description}</AlertDialogDescription>}\n\t\t\t\t\t</AlertDialogHeader>\n\t\t\t\t)}\n\n\t\t\t\t{!!hasContent && (\n\t\t\t\t\t<AlertDialogBody className={cn('alert-dialog--body', contentClassName)}>\n\t\t\t\t\t\t{!!alertMessage && (\n\t\t\t\t\t\t\t<Alert tone={resolvedTone} className={cn(!!children && 'mb-space-md')}>\n\t\t\t\t\t\t\t\t<AlertDescription>{alertMessage}</AlertDescription>\n\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</AlertDialogBody>\n\t\t\t\t)}\n\n\t\t\t\t{!!(showCancel || showConfirm || footer) && (\n\t\t\t\t\t<AlertDialogFooter className=\"alert-dialog--footer\">\n\t\t\t\t\t\t{footer ?? (\n\t\t\t\t\t\t\t<Stack\n\t\t\t\t\t\t\t\tdirection={{ base: 'vertical', sm: 'horizontal' }}\n\t\t\t\t\t\t\t\tgap={compositionRhythm.commands}\n\t\t\t\t\t\t\t\talign={{ base: 'stretch', sm: 'center' }}\n\t\t\t\t\t\t\t\tjustify={resolvedAlign === 'center' ? 'center' : 'end'}\n\t\t\t\t\t\t\t\tclassName=\"w-full\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{!!showCancel && (\n\t\t\t\t\t\t\t\t\t<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" onClick={handleCancel} disabled={effectiveLoading}>\n\t\t\t\t\t\t\t\t\t\t{strings.cancel}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t{!!showConfirm && (\n\t\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\ttone={resolvedConfirmTone}\n\t\t\t\t\t\t\t\t\t\tbuttonStyle={confirmStyle}\n\t\t\t\t\t\t\t\t\t\tonClick={confirmButtonOnClick}\n\t\t\t\t\t\t\t\t\t\tdisabled={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tloading={effectiveLoading}\n\t\t\t\t\t\t\t\t\t\tstrings={{ loading: strings.loading }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{strings.confirm}\n\t\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</AlertDialogFooter>\n\t\t\t\t)}\n\t\t\t</AlertDialogContent>\n\t\t</BaseAlertDialog>\n\t);\n}\n\nexport const ConfirmDialog = memo(ConfirmDialogImpl);\nConfirmDialog.displayName = 'ConfirmDialog';\n"],"mappings":"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"}
@@ -0,0 +1,331 @@
1
+ "use client";
2
+ import { useStrings as e } from "./lib/strings.js";
3
+ import { t } from "./utils-DhuoqFy4.js";
4
+ import { a as n, n as r } from "./buttons-DeW0bQeK.js";
5
+ import { c as i, s as a } from "./typography-C7-YMW1S.js";
6
+ import { n as o, t as s } from "./text.styles-B64My8RZ.js";
7
+ import { t as c } from "./structure-DZJ2wbAU.js";
8
+ import { i as l, l as u, n as d, o as f, s as p, t as m } from "./feedback-Dzo1xtAU.js";
9
+ import { n as h, t as g } from "./composition.recipes-COdiFhxB.js";
10
+ import { n as _, t as v } from "./action-menu-C0gjzLyE.js";
11
+ import { t as y } from "./badge-wWauMgAt.js";
12
+ import { n as b, t as x } from "./page-header-commands-DIKspJfx.js";
13
+ import { t as S } from "./overflow-tab-bar-BQCA2Zn2.js";
14
+ import { f as C } from "./hooks-BitHSh-Y.js";
15
+ import { i as w, t as T } from "./containers-CSdc32h9.js";
16
+ import { forwardRef as E, useEffect as D, useMemo as O, useState as k } from "react";
17
+ import { Fragment as A, jsx as j, jsxs as M } from "react/jsx-runtime";
18
+ import { ArrowLeft as N } from "lucide-react";
19
+ //#region src/components/layout/page/page.strings.ts
20
+ var P = {
21
+ loadingLabel: "Loading content",
22
+ loadingDescription: "Preparing the latest data for this view.",
23
+ errorTitle: "Content unavailable",
24
+ errorDescription: "The content could not be loaded.",
25
+ retryLabel: "Try again",
26
+ emptyTitle: "No content found",
27
+ emptyDescription: "There is no content available for this view."
28
+ };
29
+ //#endregion
30
+ //#region src/components/layout/page/partials/page-header.tsx
31
+ function F(e, t) {
32
+ return typeof e == "function" ? e(t) : e ?? t.defaultContent;
33
+ }
34
+ function I({ title: e, description: l, textGap: u = "dense", headingTag: d = "h1", titleIcon: f, titleIconHref: p, onTitleIconClick: m, titleIconLabel: h = "Open title link", backHref: g, onBack: _, backLabel: v = "Back", titleBadges: w = [], primaryAction: T, secondaryActions: E, maxVisibleSecondaryActions: D, moreActionsLabel: O = "More actions", tabs: k, actions: P, slots: I, renderLink: ee, className: L, contentClassName: R, actionsClassName: z, titleClassName: B, titleIconClassName: V, descriptionClassName: H }) {
35
+ let U = C({ renderLink: ee }), te = g || _ ? /* @__PURE__ */ j("div", {
36
+ className: "flex items-center gap-space-sm shrink-0",
37
+ children: g && !_ ? U({
38
+ href: g,
39
+ "aria-label": v,
40
+ className: t("page-header--back-link", n({
41
+ tone: "secondary",
42
+ buttonStyle: "ghost",
43
+ size: "sm",
44
+ iconOnly: !0
45
+ })),
46
+ children: /* @__PURE__ */ j(A, { children: /* @__PURE__ */ j(N, {
47
+ className: "size-icon rtl:rotate-180",
48
+ "aria-hidden": "true"
49
+ }) })
50
+ }) : /* @__PURE__ */ j(r, {
51
+ type: "button",
52
+ tone: "secondary",
53
+ buttonStyle: "ghost",
54
+ size: "sm",
55
+ iconOnly: !0,
56
+ className: "page-header--back-button",
57
+ onClick: _,
58
+ "aria-label": v,
59
+ children: /* @__PURE__ */ j(N, {
60
+ className: "size-icon rtl:rotate-180",
61
+ "aria-hidden": "true"
62
+ })
63
+ })
64
+ }) : null, W = (() => {
65
+ if (!f) return null;
66
+ let e = /* @__PURE__ */ j(f, {
67
+ className: "size-icon",
68
+ "aria-hidden": "true"
69
+ }), i = t("page-header--title-icon flex size-icon shrink-0 items-center justify-center text-muted-foreground", V);
70
+ return p && !m ? U({
71
+ href: p,
72
+ "aria-label": h,
73
+ className: t("page-header--title-icon-link", n({
74
+ tone: "secondary",
75
+ buttonStyle: "ghost",
76
+ size: "sm",
77
+ iconOnly: !0
78
+ }), V),
79
+ children: /* @__PURE__ */ j(A, { children: e })
80
+ }) : m ? /* @__PURE__ */ j(r, {
81
+ type: "button",
82
+ tone: "secondary",
83
+ buttonStyle: "ghost",
84
+ size: "sm",
85
+ iconOnly: !0,
86
+ className: t("page-header--title-icon-button", V),
87
+ onClick: m,
88
+ "aria-label": h,
89
+ children: e
90
+ }) : /* @__PURE__ */ j("span", {
91
+ "aria-hidden": "true",
92
+ className: i,
93
+ children: e
94
+ });
95
+ })(), G = I?.back ?? te, K = G || W ? /* @__PURE__ */ M(c, {
96
+ direction: "horizontal",
97
+ align: "center",
98
+ gap: "sm",
99
+ wrap: !1,
100
+ children: [G, W]
101
+ }) : null, q = K != null, J = b(T, E), Y = J ? /* @__PURE__ */ M(A, { children: [P, /* @__PURE__ */ j(x, {
102
+ primaryAction: T,
103
+ secondaryActions: E,
104
+ maxVisibleSecondaryActions: D,
105
+ moreActionsLabel: O,
106
+ renderLink: U
107
+ })] }) : P, X = F(I?.actions, {
108
+ renderLink: U,
109
+ defaultContent: Y
110
+ }), ne = X != null && X !== !1, re = F(I?.beforeTitle, {
111
+ renderLink: U,
112
+ defaultContent: null
113
+ }), Z = F(I?.afterDescription, {
114
+ renderLink: U,
115
+ defaultContent: null
116
+ }), Q = w.length ? /* @__PURE__ */ j(c, {
117
+ direction: "horizontal",
118
+ gap: "sm",
119
+ wrap: !0,
120
+ className: "page-header--badges min-w-0 max-w-full",
121
+ children: w.map((e, t) => /* @__PURE__ */ j(y, {
122
+ tone: e.tone ?? "secondary",
123
+ children: e.label
124
+ }, e.key ?? t))
125
+ }) : null, $ = F(I?.titleSuffix, {
126
+ renderLink: U,
127
+ defaultContent: Q
128
+ }), ie = typeof l == "string" || typeof l == "number" || typeof l == "bigint", ae = typeof e == "string" || typeof e == "number" || typeof e == "bigint";
129
+ return /* @__PURE__ */ j("header", {
130
+ className: t("layout-page-header--component page-heading--component page-header--component @container/page-header w-full min-w-0", L),
131
+ children: /* @__PURE__ */ M(c, {
132
+ gap: "xl",
133
+ children: [/* @__PURE__ */ M(c, {
134
+ gap: "sm",
135
+ className: t("page-header--content-row min-w-0", R),
136
+ children: [re, /* @__PURE__ */ M("div", {
137
+ className: "page-header--headline-row flex min-w-0 flex-wrap items-start gap-x-space-xl gap-y-space-lg",
138
+ children: [/* @__PURE__ */ M("div", {
139
+ className: t("page-header--copy-column page-header--title-row grid min-w-0 flex-1 basis-48 items-start gap-x-space-md @min-[40rem]/page-header:basis-96", q ? "grid-cols-[auto_minmax(0,1fr)]" : "grid-cols-1", u === "normal" ? "gap-y-normal" : "gap-y-dense"),
140
+ children: [q && /* @__PURE__ */ j("span", {
141
+ className: "page-header--title-prefix inline-flex shrink-0 items-center self-start",
142
+ children: K
143
+ }), /* @__PURE__ */ M(c, {
144
+ gap: u,
145
+ className: "page-header--copy-content min-w-0",
146
+ children: [/* @__PURE__ */ M(c, {
147
+ direction: "horizontal",
148
+ gap: "md",
149
+ align: "center",
150
+ wrap: !0,
151
+ className: "page-header--title-line min-w-0",
152
+ children: [ae ? /* @__PURE__ */ j(a, {
153
+ tag: d,
154
+ size: o.route,
155
+ className: t("page-header--title min-w-0 [overflow-wrap:anywhere] border-0 pb-0", B),
156
+ children: e
157
+ }) : e, $]
158
+ }), (l != null && l !== !1 || Z != null && Z !== !1) && /* @__PURE__ */ M(c, {
159
+ gap: "dense",
160
+ className: "page-header--title-block min-w-0",
161
+ children: [ie ? /* @__PURE__ */ j(i, {
162
+ ...s.structuralDescription,
163
+ className: t("page-header--description max-w-2xl [overflow-wrap:anywhere]", H),
164
+ children: l
165
+ }) : l, Z]
166
+ })]
167
+ })]
168
+ }), ne && /* @__PURE__ */ j(c, {
169
+ direction: "horizontal",
170
+ gap: "md",
171
+ className: t("page-header--actions max-w-full shrink-0 self-start", J && I?.actions == null && "justify-end", z),
172
+ children: X
173
+ })]
174
+ })]
175
+ }), k && k.items.length > 0 && /* @__PURE__ */ j(S, {
176
+ items: k.items,
177
+ value: k.value,
178
+ onValueChange: k.onValueChange,
179
+ className: "page-header--tabs",
180
+ strings: {
181
+ navigationLabel: k.label ?? "Sections",
182
+ more: k.moreLabel ?? "More"
183
+ }
184
+ })]
185
+ })
186
+ });
187
+ }
188
+ //#endregion
189
+ //#region src/components/layout/page/page.tsx
190
+ var ee = {
191
+ none: "py-0",
192
+ sm: "py-surface-xs",
193
+ md: "py-surface",
194
+ lg: "py-surface-lg"
195
+ }, L = E(function({ header: n, children: r, slotProps: i, slots: a, renderLink: o, maxWidth: s, narrow: _ = !1, gutter: v = "lg", padding: y = "lg", aside: b, asideRatio: x = "7/5", stickyAside: S, toolbar: C, beforeHeader: E, afterHeader: D, loading: O = !1, error: k, onRetry: A, empty: N = !1, emptySlot: F, strings: L, className: R, render: z, ...B }, V) {
196
+ let H = e(P, L), { className: U, ...te } = i?.body ?? {}, { className: W, ...G } = i?.toolbar ?? {}, { className: K, ...q } = i?.footer ?? {}, J = a?.aside ?? b, Y = J != null && J !== !1, X = a?.toolbar ?? C ?? D, ne = a?.header ?? (n ? /* @__PURE__ */ j(I, {
197
+ ...n,
198
+ renderLink: n.renderLink ?? o
199
+ }) : null), re = k instanceof Error ? k.message : typeof k == "string" || typeof k == "number" ? String(k) : H.errorDescription, Z = k && typeof k != "boolean" && typeof k != "string" && typeof k != "number" && !(k instanceof Error) ? k : void 0, Q = O ? a?.loading ?? /* @__PURE__ */ j(d, {
200
+ variant: "panel",
201
+ label: H.loadingLabel,
202
+ description: H.loadingDescription,
203
+ skeleton: !0,
204
+ lines: 4
205
+ }) : k ? a?.error ?? Z ?? /* @__PURE__ */ j(m, {
206
+ variant: "panel",
207
+ title: H.errorTitle,
208
+ description: re,
209
+ onRetry: A,
210
+ retryLabel: H.retryLabel
211
+ }) : N ? a?.empty ?? F ?? /* @__PURE__ */ j(l, { children: /* @__PURE__ */ M(p, { children: [/* @__PURE__ */ j(u, { children: H.emptyTitle }), /* @__PURE__ */ j(f, { children: H.emptyDescription })] }) }) : r, $ = Q == null ? null : /* @__PURE__ */ j("div", {
212
+ ...te,
213
+ "data-slot": "page-body",
214
+ className: t("page--body relative flex min-w-0 w-full flex-col", g.subjects, U),
215
+ children: Q
216
+ });
217
+ return /* @__PURE__ */ j(w, {
218
+ ...B,
219
+ ref: V,
220
+ render: z,
221
+ maxWidth: s ?? (_ ? "md" : Y ? "xl" : "lg"),
222
+ gutter: v,
223
+ className: t("font-sans", ee[y], R),
224
+ children: /* @__PURE__ */ M(c, {
225
+ gap: h.page,
226
+ className: "page--component",
227
+ children: [
228
+ E,
229
+ ne,
230
+ X != null && X !== !1 && /* @__PURE__ */ j("div", {
231
+ ...G,
232
+ "data-slot": "page-toolbar",
233
+ className: t("page--toolbar min-w-0", W),
234
+ children: X
235
+ }),
236
+ Y ? /* @__PURE__ */ j(T, {
237
+ adaptTo: "container",
238
+ ratio: x,
239
+ stickyAside: S,
240
+ main: $,
241
+ aside: J,
242
+ slotProps: { aside: i?.aside }
243
+ }) : $,
244
+ a?.footer != null && a.footer !== !1 && /* @__PURE__ */ j("div", {
245
+ ...q,
246
+ "data-slot": "page-footer",
247
+ className: t("page--footer min-w-0", K),
248
+ children: a.footer
249
+ })
250
+ ]
251
+ })
252
+ });
253
+ });
254
+ L.displayName = "Page";
255
+ //#endregion
256
+ //#region src/components/layout/page/page.types.ts
257
+ var R = { menuLabel: "More actions" }, z = "max-h-[80vh] overflow-y-auto overscroll-contain", B = 4;
258
+ function V({ action: e, index: t }, n, r, i) {
259
+ let a = {
260
+ ...n,
261
+ index: t,
262
+ isInline: r
263
+ }, o = !!e.disabled || !!e.loading;
264
+ return {
265
+ id: e.id ?? String(t),
266
+ label: e.label,
267
+ icon: e.icon,
268
+ onClick: e.onClick,
269
+ href: e.href && !e.onClick ? e.href : void 0,
270
+ target: e.target,
271
+ rel: e.rel,
272
+ external: e.external,
273
+ disabled: o,
274
+ tone: e.tone ?? "secondary",
275
+ buttonStyle: e.buttonStyle ?? "solid",
276
+ buttonSize: e.size,
277
+ group: e.group,
278
+ render: e.element ?? i?.(e, a)
279
+ };
280
+ }
281
+ function H({ actions: n, display: r = "dropdown", size: i = "sm", breakpoint: a = 1040, maxInlineActions: o = B, renderLink: s, strings: c, className: l, inlineClassName: u, menuClassName: d, renderAction: f }) {
282
+ let p = e(R, c), m = C({ renderLink: s }), h = O(() => (n ?? []).map((e, t) => ({
283
+ action: e,
284
+ index: t
285
+ })).filter(({ action: e }) => e.visible !== !1), [n]), [g, y] = k(!1);
286
+ if (D(() => {
287
+ if (r !== "auto" || typeof window > "u") return;
288
+ let e = () => y(window.innerWidth <= a);
289
+ return e(), window.addEventListener("resize", e), () => window.removeEventListener("resize", e);
290
+ }, [r, a]), h.length === 0) return null;
291
+ let b = { renderLink: m }, x = (e) => m({
292
+ ...e,
293
+ children: e.children ?? null
294
+ }), S = t("flex min-w-0 max-w-full flex-wrap items-center gap-space-sm", u, l), w = t(z, d);
295
+ if (r === "dropdown" || r === "auto" && g) {
296
+ let e = h.map((e) => V(e, b, !1, f));
297
+ return /* @__PURE__ */ j(_, {
298
+ actions: e,
299
+ context: "commands",
300
+ srText: p.menuLabel,
301
+ align: "end",
302
+ closeOnSelect: !0,
303
+ contentClassName: w,
304
+ preserveOrder: !0,
305
+ renderLink: x
306
+ });
307
+ }
308
+ let T = Math.max(0, o), E = h.filter(({ action: e }) => (e.placement ?? "auto") !== "menu"), A = E.slice(0, T), N = [...E.slice(T), ...h.filter(({ action: e }) => (e.placement ?? "auto") === "menu")], P = A.map((e) => V(e, b, !0, f)), F = N.map((e) => V(e, b, !1, f));
309
+ return /* @__PURE__ */ M("div", {
310
+ className: S,
311
+ children: [/* @__PURE__ */ j(v, {
312
+ actions: P,
313
+ size: i,
314
+ renderLink: x
315
+ }), N.length > 0 && /* @__PURE__ */ j(_, {
316
+ actions: F,
317
+ context: "commands",
318
+ srText: p.menuLabel,
319
+ align: "end",
320
+ closeOnSelect: !0,
321
+ contentClassName: w,
322
+ preserveOrder: !0,
323
+ renderLink: x,
324
+ buttonProps: { size: i }
325
+ })]
326
+ });
327
+ }
328
+ //#endregion
329
+ export { P as a, I as i, R as n, L as r, H as t };
330
+
331
+ //# sourceMappingURL=page-BoQ1VaFJ.js.map