themelia-react-ui 2.0.6 → 3.0.0

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 (912) hide show
  1. package/CHANGELOG.md +250 -0
  2. package/MIGRATION.md +746 -7
  3. package/README.md +27 -23
  4. package/dist/{accordion-0tQUZ20r.js → accordion-DNVqwEIC.js} +36 -36
  5. package/dist/accordion-DNVqwEIC.js.map +1 -0
  6. package/dist/action-menu-D5343RwT.js +286 -0
  7. package/dist/action-menu-D5343RwT.js.map +1 -0
  8. package/dist/ai-artifact-otrz9ZwS.js +1214 -0
  9. package/dist/ai-artifact-otrz9ZwS.js.map +1 -0
  10. package/dist/anchored-positioning-1U_eBFNx.js +9 -0
  11. package/dist/anchored-positioning-1U_eBFNx.js.map +1 -0
  12. package/dist/app-shell-CPN30Nb1.js +372 -0
  13. package/dist/app-shell-CPN30Nb1.js.map +1 -0
  14. package/dist/{attachment-BCpA4e7i.js → attachment-D2-fpfmv.js} +15 -15
  15. package/dist/{attachment-BCpA4e7i.js.map → attachment-D2-fpfmv.js.map} +1 -1
  16. package/dist/{auth-B0girIk_.js → auth-g_oUTDDC.js} +234 -241
  17. package/dist/auth-g_oUTDDC.js.map +1 -0
  18. package/dist/{avatar-B9Jnp-T-.js → avatar-Ca3Ihrq4.js} +4 -4
  19. package/dist/{avatar-B9Jnp-T-.js.map → avatar-Ca3Ihrq4.js.map} +1 -1
  20. package/dist/{badge-wWauMgAt.js → badge-oGiXblW7.js} +8 -9
  21. package/dist/badge-oGiXblW7.js.map +1 -0
  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 +2 -2
  29. package/dist/base/cards.js +3 -3
  30. package/dist/base/carousel.js +11 -11
  31. package/dist/base/carousel.js.map +1 -1
  32. package/dist/base/cascader.js +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +2 -2
  35. package/dist/base/code-block.js +1 -1
  36. package/dist/base/combobox.js +1 -1
  37. package/dist/base/command.js +1 -1
  38. package/dist/base/copyable.js +1 -1
  39. package/dist/base/date-pickers.js +2 -2
  40. package/dist/base/display.js +7 -7
  41. package/dist/base/feedback.js +4 -4
  42. package/dist/base/forms-numeric.js +2 -2
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +13 -13
  45. package/dist/base/inline-edit.js.map +1 -1
  46. package/dist/base/item.js +1 -1
  47. package/dist/base/media-gallery.js +203 -2
  48. package/dist/base/media-gallery.js.map +1 -0
  49. package/dist/base/metadata-list.js +1 -1
  50. package/dist/base/navigation.js +7 -7
  51. package/dist/base/popover-menu.js +1 -1
  52. package/dist/base/popover.js +1 -1
  53. package/dist/base/qr-code.js +32 -22
  54. package/dist/base/qr-code.js.map +1 -1
  55. package/dist/base/repeaters.js +91 -88
  56. package/dist/base/repeaters.js.map +1 -1
  57. package/dist/base/sidebar.js +2 -2
  58. package/dist/base/signature-pad.js +14 -14
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +6 -12
  62. package/dist/base/spinner.js.map +1 -1
  63. package/dist/base/structure.js +1 -1
  64. package/dist/base/table.js +1 -1
  65. package/dist/base/text-inputs.js +3 -3
  66. package/dist/base/toaster.js +2 -2
  67. package/dist/base/tree.js +2 -2
  68. package/dist/base/upload-queue.js +303 -2
  69. package/dist/base/upload-queue.js.map +1 -0
  70. package/dist/base/upload.js +3 -4
  71. package/dist/base/value-inputs.js +1 -1
  72. package/dist/{batch-action-bar-BoqWIIpV.js → batch-action-bar-D6MZQNnC.js} +10 -10
  73. package/dist/{batch-action-bar-BoqWIIpV.js.map → batch-action-bar-D6MZQNnC.js.map} +1 -1
  74. package/dist/blocks/admin.js +242 -228
  75. package/dist/blocks/admin.js.map +1 -1
  76. package/dist/blocks/ai.js +395 -357
  77. package/dist/blocks/ai.js.map +1 -1
  78. package/dist/blocks/analytics/charts.js +1022 -0
  79. package/dist/blocks/analytics/charts.js.map +1 -0
  80. package/dist/blocks/analytics/usage-card.js +1 -1
  81. package/dist/blocks/analytics.js +171 -1365
  82. package/dist/blocks/analytics.js.map +1 -1
  83. package/dist/blocks/collaboration.js +1 -1
  84. package/dist/blocks/commerce/receipt.js +1 -1
  85. package/dist/blocks/commerce.js +1487 -1358
  86. package/dist/blocks/commerce.js.map +1 -1
  87. package/dist/blocks/data-display.js +2 -3
  88. package/dist/blocks/onboarding.js +91 -82
  89. package/dist/blocks/onboarding.js.map +1 -1
  90. package/dist/blocks/planning.js +25 -25
  91. package/dist/blocks/planning.js.map +1 -1
  92. package/dist/blocks/timelines.js +2 -2
  93. package/dist/{breadcrumbs-Bp9Ke7kd.js → breadcrumbs-CQ9JSlez.js} +52 -45
  94. package/dist/breadcrumbs-CQ9JSlez.js.map +1 -0
  95. package/dist/{button-ChBovTx0.js → button-rd6FiHfQ.js} +12 -8
  96. package/dist/button-rd6FiHfQ.js.map +1 -0
  97. package/dist/{buttons-DeW0bQeK.js → buttons-pZVgPTZn.js} +230 -246
  98. package/dist/buttons-pZVgPTZn.js.map +1 -0
  99. package/dist/{cards-CNXnmvV5.js → cards-CgWyqvgZ.js} +25 -22
  100. package/dist/{cards-CNXnmvV5.js.map → cards-CgWyqvgZ.js.map} +1 -1
  101. package/dist/cascader-Cf05pwaq.js +444 -0
  102. package/dist/cascader-Cf05pwaq.js.map +1 -0
  103. package/dist/{chart-I7ROnsl8.js → chart-CygRCyIZ.js} +5 -5
  104. package/dist/{chart-I7ROnsl8.js.map → chart-CygRCyIZ.js.map} +1 -1
  105. package/dist/{checkbox-MoyHIAPs.js → checkbox-Dy5_XBMZ.js} +4 -4
  106. package/dist/{checkbox-MoyHIAPs.js.map → checkbox-Dy5_XBMZ.js.map} +1 -1
  107. package/dist/{choice-inputs-DHGtx0QV.js → choice-inputs-oJEsrb5Y.js} +113 -114
  108. package/dist/choice-inputs-oJEsrb5Y.js.map +1 -0
  109. package/dist/{code-block-BSJyq9e-.js → code-block-BrLD7mCi.js} +44 -60
  110. package/dist/code-block-BrLD7mCi.js.map +1 -0
  111. package/dist/collapsible-CRCCg_bO.js +80 -0
  112. package/dist/collapsible-CRCCg_bO.js.map +1 -0
  113. package/dist/{collection-content-CSnwtOTH.js → collection-content-D7SoDlYd.js} +3 -3
  114. package/dist/{collection-content-CSnwtOTH.js.map → collection-content-D7SoDlYd.js.map} +1 -1
  115. package/dist/combobox-Dl6f6kHz.js +362 -0
  116. package/dist/combobox-Dl6f6kHz.js.map +1 -0
  117. package/dist/combobox-DrDXtSSt.js +929 -0
  118. package/dist/combobox-DrDXtSSt.js.map +1 -0
  119. package/dist/command-CjZ2VzKC.js +432 -0
  120. package/dist/command-CjZ2VzKC.js.map +1 -0
  121. package/dist/comments-C2MZyRmh.js +1214 -0
  122. package/dist/comments-C2MZyRmh.js.map +1 -0
  123. package/dist/components/base/accordion/accordion.d.ts +11 -3
  124. package/dist/components/base/action-menu/action-menu.d.ts +11 -3
  125. package/dist/components/base/buttons/button.d.ts +2 -2
  126. package/dist/components/base/buttons/index.d.ts +1 -1
  127. package/dist/components/base/buttons/loader-button.d.ts +6 -15
  128. package/dist/components/base/cards/index.d.ts +1 -1
  129. package/dist/components/base/cards/partials/card-body-context.d.ts +6 -0
  130. package/dist/components/base/cards/smart-card.d.ts +0 -2
  131. package/dist/components/base/cards/smart-card.types.d.ts +12 -10
  132. package/dist/components/base/cascader/cascader.d.ts +8 -2
  133. package/dist/components/base/cascader/cascader.types.d.ts +24 -2
  134. package/dist/components/base/cascader/index.d.ts +1 -1
  135. package/dist/components/base/choice-inputs/switch.d.ts +1 -1
  136. package/dist/components/base/code-block/use-code-copy.d.ts +2 -6
  137. package/dist/components/base/command/command.d.ts +1 -1
  138. package/dist/components/base/date-pickers/datepicker.types.d.ts +1 -3
  139. package/dist/components/base/display/dialog.d.ts +3 -9
  140. package/dist/components/base/display/index.d.ts +2 -3
  141. package/dist/components/base/display/separator.d.ts +1 -1
  142. package/dist/components/base/feedback/alert.d.ts +2 -1
  143. package/dist/components/base/feedback/empty.d.ts +10 -2
  144. package/dist/components/base/forms/workflow.d.ts +2 -2
  145. package/dist/components/base/forms-numeric/dimensions-input.d.ts +9 -17
  146. package/dist/components/base/forms-numeric/index.d.ts +3 -3
  147. package/dist/components/base/item/item.types.d.ts +6 -2
  148. package/dist/components/base/metadata-list/index.d.ts +1 -3
  149. package/dist/components/base/metadata-list/metadata-list.d.ts +4 -1
  150. package/dist/components/base/navigation/index.d.ts +2 -2
  151. package/dist/components/base/navigation/language-switcher.d.ts +7 -6
  152. package/dist/components/base/navigation/navigation-tabs.d.ts +8 -1
  153. package/dist/components/base/navigation/page-header/index.d.ts +1 -1
  154. package/dist/components/base/navigation/page-header/page-header.d.ts +13 -17
  155. package/dist/components/base/navigation/pagination.d.ts +5 -5
  156. package/dist/components/base/popover/popover.recipes.d.ts +0 -1
  157. package/dist/components/base/qr-code/qr-code.d.ts +4 -0
  158. package/dist/components/base/repeaters/index.d.ts +1 -1
  159. package/dist/components/base/repeaters/key-value-editor.d.ts +4 -0
  160. package/dist/components/base/sheet/sheet.d.ts +6 -15
  161. package/dist/components/base/sidebar/index.d.ts +1 -6
  162. package/dist/components/base/sidebar/sidebar.d.ts +38 -10
  163. package/dist/components/base/skeleton/skeleton.d.ts +1 -1
  164. package/dist/components/base/structure/structure.types.d.ts +11 -2
  165. package/dist/components/base/text-inputs/index.d.ts +1 -1
  166. package/dist/components/base/tree/index.d.ts +1 -0
  167. package/dist/components/base/tree/tree.d.ts +2 -2
  168. package/dist/components/base/tree/tree.types.d.ts +7 -1
  169. package/dist/components/base/upload/file-upload.validation.d.ts +37 -1
  170. package/dist/components/base/upload/image-upload.d.ts +2 -0
  171. package/dist/components/base/upload/index.d.ts +3 -9
  172. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -0
  173. package/dist/components/base/value-inputs/slider.d.ts +5 -2
  174. package/dist/components/blocks/admin/action-surfaces/index.d.ts +17 -4
  175. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +9 -3
  176. package/dist/components/blocks/admin/index.d.ts +1 -1
  177. package/dist/components/blocks/ai/ai-artifact/ai-artifact.d.ts +1 -1
  178. package/dist/components/blocks/ai/ai-artifact/types.d.ts +9 -4
  179. package/dist/components/blocks/ai/ai-chain-of-thought/ai-chain-of-thought.d.ts +1 -1
  180. package/dist/components/blocks/ai/ai-chain-of-thought/types.d.ts +11 -1
  181. package/dist/components/blocks/ai/ai-citation/ai-citation.d.ts +1 -1
  182. package/dist/components/blocks/ai/ai-citation/types.d.ts +6 -0
  183. package/dist/components/blocks/ai/ai-confirmation/ai-confirmation.d.ts +1 -1
  184. package/dist/components/blocks/ai/ai-confirmation/types.d.ts +21 -5
  185. package/dist/components/blocks/ai/ai-feedback/types.d.ts +7 -2
  186. package/dist/components/blocks/ai/ai-inline-citation/types.d.ts +9 -3
  187. package/dist/components/blocks/ai/ai-package-info/ai-package-info.d.ts +1 -1
  188. package/dist/components/blocks/ai/ai-package-info/types.d.ts +6 -0
  189. package/dist/components/blocks/ai/ai-sources/ai-sources.d.ts +1 -1
  190. package/dist/components/blocks/ai/ai-sources/types.d.ts +8 -2
  191. package/dist/components/blocks/ai/ai-task/ai-task.d.ts +1 -1
  192. package/dist/components/blocks/ai/ai-task/types.d.ts +10 -1
  193. package/dist/components/blocks/ai/ai-tool-call/ai-tool-call.d.ts +1 -1
  194. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +6 -0
  195. package/dist/components/blocks/ai/ai.strings.d.ts +2 -0
  196. package/dist/components/blocks/analytics/activity-heatmap/types.d.ts +1 -1
  197. package/dist/components/blocks/analytics/analytics.strings.d.ts +2 -0
  198. package/dist/components/blocks/analytics/atoms/metric-trend-chip.d.ts +11 -1
  199. package/dist/components/blocks/analytics/chart-card/chart-card.d.ts +7 -5
  200. package/dist/components/blocks/analytics/charts/index.d.ts +27 -0
  201. package/dist/components/blocks/analytics/index.d.ts +17 -24
  202. package/dist/components/blocks/analytics/metric/metric.d.ts +5 -5
  203. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +2 -2
  204. package/dist/components/blocks/analytics/types.d.ts +12 -3
  205. package/dist/components/blocks/analytics/usage-card/usage-card.strings.d.ts +2 -0
  206. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  207. package/dist/components/blocks/commerce/address-card/types.d.ts +5 -16
  208. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +2 -2
  209. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +6 -4
  210. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +0 -2
  211. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  212. package/dist/components/blocks/commerce/cart-summary/types.d.ts +9 -11
  213. package/dist/components/blocks/commerce/coupon-input/coupon-input.d.ts +1 -1
  214. package/dist/components/blocks/commerce/coupon-input/types.d.ts +7 -3
  215. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +0 -2
  216. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  217. package/dist/components/blocks/commerce/discount-stack/types.d.ts +4 -6
  218. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +1 -1
  219. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +2 -0
  220. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-balance.d.ts +18 -0
  221. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-compact.d.ts +1 -1
  222. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-copy-button.d.ts +0 -1
  223. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-dark.d.ts +1 -1
  224. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-full.d.ts +1 -1
  225. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-illustrated.d.ts +1 -1
  226. package/dist/components/blocks/commerce/giftcard-card/partials/giftcard-minimal.d.ts +1 -1
  227. package/dist/components/blocks/commerce/giftcard-card/types.d.ts +16 -5
  228. package/dist/components/blocks/commerce/index.d.ts +8 -8
  229. package/dist/components/blocks/commerce/inventory-level/inventory-level.strings.d.ts +2 -0
  230. package/dist/components/blocks/commerce/inventory-level/types.d.ts +1 -1
  231. package/dist/components/blocks/commerce/inventory-section/types.d.ts +0 -5
  232. package/dist/components/blocks/commerce/invoice-line-items/types.d.ts +6 -3
  233. package/dist/components/blocks/commerce/loyalty-points/loyalty-points.d.ts +1 -1
  234. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +11 -5
  235. package/dist/components/blocks/commerce/order-status/order-status.d.ts +1 -1
  236. package/dist/components/blocks/commerce/order-status/types.d.ts +8 -8
  237. package/dist/components/blocks/commerce/order-timeline/order-timeline.d.ts +1 -1
  238. package/dist/components/blocks/commerce/order-timeline/types.d.ts +3 -1
  239. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  240. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +0 -8
  241. package/dist/components/blocks/commerce/payment-method/types.d.ts +0 -2
  242. package/dist/components/blocks/commerce/receipt/index.d.ts +1 -1
  243. package/dist/components/blocks/commerce/receipt/receipt-items.d.ts +1 -1
  244. package/dist/components/blocks/commerce/receipt/types.d.ts +10 -0
  245. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  246. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +0 -2
  247. package/dist/components/blocks/commerce/refund-status/types.d.ts +0 -2
  248. package/dist/components/blocks/commerce/seo-listing/types.d.ts +7 -0
  249. package/dist/components/blocks/commerce/shared/code-entry.d.ts +39 -0
  250. package/dist/components/blocks/commerce/shared/order-status.d.ts +1 -1
  251. package/dist/components/blocks/commerce/subscription-summary/subscription-summary.d.ts +1 -1
  252. package/dist/components/blocks/commerce/subscription-summary/types.d.ts +10 -1
  253. package/dist/components/blocks/commerce/upcoming-booking/index.d.ts +2 -1
  254. package/dist/components/blocks/commerce/upcoming-booking/types.d.ts +8 -0
  255. package/dist/components/blocks/commerce/upcoming-booking/upcoming-booking.d.ts +2 -2
  256. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -5
  257. package/dist/components/blocks/commerce/voucher-entry/types.d.ts +6 -3
  258. package/dist/components/blocks/commerce/voucher-entry/voucher-entry.d.ts +1 -1
  259. package/dist/components/blocks/content-block-hooks.d.ts +22 -0
  260. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +5 -1
  261. package/dist/components/blocks/data-display/dense-info-card/helpers.d.ts +3 -1
  262. package/dist/components/blocks/data-display/dense-info-card/index.d.ts +1 -1
  263. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-classification.d.ts +1 -1
  264. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-dashboard.d.ts +1 -1
  265. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-financial.d.ts +1 -1
  266. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-project.d.ts +1 -1
  267. package/dist/components/blocks/data-display/dense-info-card/partials/dense-info-score.d.ts +1 -1
  268. package/dist/components/blocks/data-display/dense-info-card/types.d.ts +12 -5
  269. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +6 -0
  270. package/dist/components/blocks/data-display/index.d.ts +0 -1
  271. package/dist/components/blocks/data-display/relationship-card-frame.d.ts +1 -1
  272. package/dist/components/blocks/onboarding/checklist/checklist.types.d.ts +5 -3
  273. package/dist/components/blocks/planning/task-card.types.d.ts +7 -3
  274. package/dist/components/blocks/timelines/changelog/types.d.ts +2 -2
  275. package/dist/components/blocks/timelines/index.d.ts +2 -2
  276. package/dist/components/blocks/timelines/milestones/types.d.ts +2 -2
  277. package/dist/components/blocks/timelines/shared/timeline.d.ts +6 -0
  278. package/dist/components/blocks/timelines/steps-card/index.d.ts +2 -1
  279. package/dist/components/blocks/timelines/steps-card/steps-card.d.ts +2 -2
  280. package/dist/components/blocks/timelines/steps-card/types.d.ts +13 -1
  281. package/dist/components/features/activities/activities.strings.d.ts +5 -3
  282. package/dist/components/features/activities/activities.types.d.ts +28 -11
  283. package/dist/components/features/activities/hooks/use-activity-feed.d.ts +6 -0
  284. package/dist/components/features/activities/index.d.ts +1 -1
  285. package/dist/components/features/activities/partials/activity-headline.d.ts +5 -0
  286. package/dist/components/features/activities/partials/activity-row.d.ts +12 -13
  287. package/dist/components/features/activities/partials/row-layers.d.ts +7 -0
  288. package/dist/components/features/activities/relative-time.d.ts +18 -0
  289. package/dist/components/features/ai-chat/ai-chat.d.ts +6 -2
  290. package/dist/components/features/ai-chat/ai-chat.strings.d.ts +41 -2
  291. package/dist/components/features/ai-chat/ai-chat.types.d.ts +6 -0
  292. package/dist/components/features/ai-chat/partials/ai-chat-attachments-strip.d.ts +5 -1
  293. package/dist/components/features/ai-chat/partials/ai-chat-prompt-input.d.ts +2 -2
  294. package/dist/components/features/ai-chat/partials/ai-chat-queue.d.ts +3 -1
  295. package/dist/components/features/ai-chat/partials/ai-chat-suggestions-row.d.ts +6 -1
  296. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  297. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +19 -5
  298. package/dist/components/features/appointment-calendar/index.d.ts +1 -1
  299. package/dist/components/features/appointment-calendar/partials/appointment-agenda.d.ts +18 -10
  300. package/dist/components/features/async-preview/async-preview.d.ts +2 -2
  301. package/dist/components/features/async-preview/async-preview.types.d.ts +30 -1
  302. package/dist/components/features/async-preview/preview-trigger-cell.d.ts +7 -2
  303. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  304. package/dist/components/features/combobox/combobox.d.ts +12 -3
  305. package/dist/components/features/combobox/components/error-message.d.ts +3 -1
  306. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -2
  307. package/dist/components/features/combobox/index.d.ts +1 -1
  308. package/dist/components/features/combobox/types.d.ts +47 -45
  309. package/dist/components/features/comments/comments.strings.d.ts +6 -5
  310. package/dist/components/features/comments/comments.types.d.ts +40 -26
  311. package/dist/components/features/comments/hooks/use-attachment-upload.d.ts +5 -1
  312. package/dist/components/features/comments/hooks/use-comments.d.ts +8 -1
  313. package/dist/components/features/data-view/data-view.strings.d.ts +9 -2
  314. package/dist/components/features/data-view/data-view.types.d.ts +15 -2
  315. package/dist/components/features/email-composer/email-html.d.ts +5 -0
  316. package/dist/components/features/email-composer/http.d.ts +2 -0
  317. package/dist/components/features/email-composer/strings.d.ts +17 -2
  318. package/dist/components/features/email-composer/types.d.ts +17 -2
  319. package/dist/components/features/email-composer/use-composer.d.ts +2 -78
  320. package/dist/components/features/event-calendar/event-calendar-day-cell.d.ts +1 -1
  321. package/dist/components/features/event-calendar/event-calendar-event-badge.d.ts +1 -1
  322. package/dist/components/features/event-calendar/event-calendar-header.d.ts +1 -1
  323. package/dist/components/features/event-calendar/event-calendar-legend.d.ts +2 -2
  324. package/dist/components/features/event-calendar/event-calendar.d.ts +1 -1
  325. package/dist/components/features/event-calendar/event-calendar.types.d.ts +126 -21
  326. package/dist/components/features/filters/facets/range-facet.d.ts +13 -8
  327. package/dist/components/features/filters/filter-context.d.ts +9 -0
  328. package/dist/components/features/filters/filters.strings.d.ts +36 -3
  329. package/dist/components/features/filters/filters.types.d.ts +72 -5
  330. package/dist/components/features/filters/hooks/use-filter-draft.d.ts +1 -0
  331. package/dist/components/features/filters/index.d.ts +2 -2
  332. package/dist/components/features/filters/operator-options.d.ts +25 -2
  333. package/dist/components/features/filters/partials/active-filter-item.d.ts +0 -13
  334. package/dist/components/features/filters/partials/async-options-status.d.ts +32 -0
  335. package/dist/components/features/filters/partials/filter-draft-footer.d.ts +11 -0
  336. package/dist/components/features/filters/partials/filter-operator-select.d.ts +4 -2
  337. package/dist/components/features/filters/partials/filter-pill.d.ts +5 -1
  338. package/dist/components/features/filters/partials/filter-tabs.d.ts +2 -1
  339. package/dist/components/features/filters/partials/regular-filter-content.d.ts +1 -1
  340. package/dist/components/features/filters/utils/filter-utils.d.ts +29 -4
  341. package/dist/components/features/global-search/global-search-dialog.d.ts +7 -1
  342. package/dist/components/features/global-search/global-search.d.ts +7 -1
  343. package/dist/components/features/global-search/global-search.strings.d.ts +19 -3
  344. package/dist/components/features/global-search/global-search.types.d.ts +30 -6
  345. package/dist/components/features/global-search/index.d.ts +1 -1
  346. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +6 -1
  347. package/dist/components/features/global-search/partials/global-search-input.d.ts +2 -0
  348. package/dist/components/features/kanban/index.d.ts +2 -2
  349. package/dist/components/features/kanban/kanban-context.d.ts +4 -0
  350. package/dist/components/features/kanban/kanban-keyboard.d.ts +7 -2
  351. package/dist/components/features/kanban/kanban.d.ts +10 -1
  352. package/dist/components/features/kanban/kanban.strings.d.ts +11 -2
  353. package/dist/components/features/kanban/kanban.types.d.ts +26 -0
  354. package/dist/components/features/map/map.d.ts +4 -0
  355. package/dist/components/features/map/place-autocomplete.d.ts +10 -1
  356. package/dist/components/features/media-library/hooks/use-media-library.d.ts +3 -1
  357. package/dist/components/features/media-library/media-library.d.ts +1 -1
  358. package/dist/components/features/media-library/media-library.strings.d.ts +33 -3
  359. package/dist/components/features/media-library/media-library.types.d.ts +47 -2
  360. package/dist/components/features/media-library/partials/media-library-partials.d.ts +1 -1
  361. package/dist/components/features/mentions/hooks/use-mentions-search.d.ts +7 -0
  362. package/dist/components/features/mentions/index.d.ts +1 -1
  363. package/dist/components/features/mentions/mentions.strings.d.ts +10 -2
  364. package/dist/components/features/mentions/partials/mention-chip.d.ts +1 -0
  365. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +8 -1
  366. package/dist/components/features/mentions/partials/mention-picker.d.ts +8 -1
  367. package/dist/components/features/mentions/partials/mention-search-error.d.ts +6 -0
  368. package/dist/components/features/mentions/utils/index.d.ts +0 -1
  369. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  370. package/dist/components/features/overlays/dialog.d.ts +1 -1
  371. package/dist/components/features/overlays/drawer.d.ts +1 -1
  372. package/dist/components/features/overlays/index.d.ts +2 -2
  373. package/dist/components/features/overlays/overlays.strings.d.ts +2 -1
  374. package/dist/components/features/overlays/overlays.types.d.ts +27 -10
  375. package/dist/components/features/products/components/index.d.ts +0 -10
  376. package/dist/components/features/products/components/product-contract-overview.d.ts +1 -1
  377. package/dist/components/features/products/components/product-details-card.d.ts +1 -1
  378. package/dist/components/features/products/components/product-operations-card.d.ts +1 -1
  379. package/dist/components/features/products/components/product-option-action-menu.d.ts +1 -1
  380. package/dist/components/features/products/components/product-options-summary.d.ts +1 -1
  381. package/dist/components/features/products/components/product-policies-card.d.ts +1 -1
  382. package/dist/components/features/products/components/product-quote-preview-card.d.ts +1 -1
  383. package/dist/components/features/products/components/product-readiness-card.d.ts +1 -1
  384. package/dist/components/features/products/components/product-structure-card.d.ts +1 -1
  385. package/dist/components/features/products/components/product-variant-action-menu.d.ts +1 -1
  386. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  387. package/dist/components/features/products/components/product-variants-table.d.ts +1 -1
  388. package/dist/components/features/products/partials/product-surface.d.ts +15 -0
  389. package/dist/components/features/products/products.strings.d.ts +8 -0
  390. package/dist/components/features/products/products.types.d.ts +25 -7
  391. package/dist/components/features/questionnaire/questionnaire.types.d.ts +6 -4
  392. package/dist/components/features/resource/index.d.ts +2 -3
  393. package/dist/components/features/resource/resource.d.ts +2 -10
  394. package/dist/components/features/resource/resource.types.d.ts +7 -149
  395. package/dist/components/features/resource-assignment/partials/assignment-surface.d.ts +15 -0
  396. package/dist/components/features/resource-assignment/resource-assignment.strings.d.ts +6 -1
  397. package/dist/components/features/resource-assignment/resource-assignment.types.d.ts +6 -0
  398. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +5 -7
  399. package/dist/components/features/rich-text-editor/partials/html-helpers.d.ts +2 -3
  400. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +6 -2
  401. package/dist/components/features/rich-text-editor/partials/index.d.ts +2 -3
  402. package/dist/components/features/rich-text-editor/partials/rich-text-editor-tiptap.d.ts +0 -1
  403. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +2 -3
  404. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +13 -1
  405. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -0
  406. package/dist/components/features/schema-form/schema-form.d.ts +1 -1
  407. package/dist/components/features/schema-form/schema-form.types.d.ts +13 -5
  408. package/dist/components/features/suggestions/suggestions.strings.d.ts +14 -0
  409. package/dist/components/features/suggestions/suggestions.types.d.ts +12 -4
  410. package/dist/components/features/table/data-table.d.ts +1 -1
  411. package/dist/components/features/table/filter-bar.d.ts +1 -1
  412. package/dist/components/features/table/pagination.d.ts +1 -1
  413. package/dist/components/features/table/partials/cell-value.d.ts +1 -1
  414. package/dist/components/features/table/table-body.d.ts +1 -1
  415. package/dist/components/features/table/table-header.d.ts +1 -1
  416. package/dist/components/features/table/table-helpers.d.ts +31 -9
  417. package/dist/components/features/table/table-region.recipes.d.ts +11 -0
  418. package/dist/components/features/table/table-toolbar.d.ts +1 -1
  419. package/dist/components/features/table/table.strings.d.ts +1 -0
  420. package/dist/components/features/table/table.types.d.ts +74 -48
  421. package/dist/components/features/theme-tweaker/theme-provider-settings.d.ts +4 -0
  422. package/dist/components/features/theme-tweaker/theme-tweaker.strings.d.ts +10 -7
  423. package/dist/components/features/theme-tweaker/theme-tweaker.utils.d.ts +17 -0
  424. package/dist/components/layout/app-shell/app-shell.types.d.ts +46 -49
  425. package/dist/components/layout/app-shell/index.d.ts +2 -2
  426. package/dist/components/layout/app-shell/shell-regions.d.ts +9 -0
  427. package/dist/components/layout/app-shell/shell-skip-link.d.ts +9 -0
  428. package/dist/components/layout/app-shell/sidebar-inset-layout.d.ts +1 -1
  429. package/dist/components/layout/app-shell/stacked-layout.d.ts +1 -1
  430. package/dist/components/layout/app-shell/topbar-sidebar-layout.d.ts +1 -1
  431. package/dist/components/layout/auth/auth-shell.d.ts +1 -1
  432. package/dist/components/layout/auth/auth.types.d.ts +0 -5
  433. package/dist/components/layout/containers/inline-gutter-context.d.ts +7 -0
  434. package/dist/components/layout/containers/main-landmark-context.d.ts +6 -0
  435. package/dist/components/layout/header/header.types.d.ts +16 -6
  436. package/dist/components/layout/header/partials/header-global-search-trigger.d.ts +1 -1
  437. package/dist/components/layout/header/partials/header-notifications.d.ts +1 -1
  438. package/dist/components/layout/header/partials/header-search.d.ts +1 -1
  439. package/dist/components/layout/hooks/use-command-shortcut.d.ts +10 -1
  440. package/dist/components/layout/layout.types.d.ts +2 -2
  441. package/dist/components/layout/navigation/breadcrumb-progress/breadcrumb-progress.d.ts +1 -1
  442. package/dist/components/layout/navigation/breadcrumb-progress/types.d.ts +9 -0
  443. package/dist/components/layout/navigation/section-nav/section-nav.d.ts +8 -1
  444. package/dist/components/layout/page/index.d.ts +2 -3
  445. package/dist/components/layout/page/page.strings.d.ts +12 -0
  446. package/dist/components/layout/page/page.types.d.ts +7 -110
  447. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  448. package/dist/components/layout/settings/index.d.ts +1 -1
  449. package/dist/components/layout/settings/settings.d.ts +3 -5
  450. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  451. package/dist/components/layout/sidebar/components/sidebar-grouped-navigation.d.ts +1 -1
  452. package/dist/components/layout/sidebar/components/sidebar-navigation-footer.d.ts +1 -1
  453. package/dist/components/layout/sidebar/components/sidebar-navigation.d.ts +1 -1
  454. package/dist/components/layout/sidebar/index.d.ts +1 -1
  455. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +15 -7
  456. package/dist/components/layout/sidebar/sidebar.types.d.ts +10 -12
  457. package/dist/components/layout/sidebar/sidebar.utils.d.ts +4 -0
  458. package/dist/components/layout/workspace/workspace.strings.d.ts +2 -2
  459. package/dist/components/layout/workspace/workspace.types.d.ts +13 -7
  460. package/dist/components/primitives/date.d.ts +22 -3
  461. package/dist/components/primitives/file-size.d.ts +8 -2
  462. package/dist/components/primitives/index.d.ts +1 -1
  463. package/dist/components/primitives/initials.d.ts +3 -1
  464. package/dist/components/primitives/link.d.ts +8 -1
  465. package/dist/components/primitives/money.d.ts +1 -1
  466. package/dist/components/primitives/number.d.ts +2 -1
  467. package/dist/components/typography/heading.d.ts +9 -3
  468. package/dist/components/typography/index.d.ts +1 -1
  469. package/dist/components/typography/text-link.d.ts +10 -3
  470. package/dist/components/ui/badge.d.ts +2 -4
  471. package/dist/components/ui/breadcrumb.d.ts +2 -3
  472. package/dist/components/ui/button.d.ts +8 -2
  473. package/dist/components/ui/collapsible.d.ts +1 -4
  474. package/dist/components/ui/command.d.ts +20 -18
  475. package/dist/components/ui/dialog.d.ts +3 -9
  476. package/dist/components/ui/empty.d.ts +2 -2
  477. package/dist/components/ui/input-group.d.ts +3 -3
  478. package/dist/components/ui/item.d.ts +3 -3
  479. package/dist/components/ui/popover.d.ts +3 -7
  480. package/dist/components/ui/sheet.d.ts +4 -12
  481. package/dist/components/ui/sidebar-state.d.ts +6 -1
  482. package/dist/components/ui/sidebar.d.ts +7 -4
  483. package/dist/components/ui/tabs.d.ts +2 -2
  484. package/dist/components/ui/toggle-group.d.ts +3 -3
  485. package/dist/components/ui/toggle.d.ts +2 -2
  486. package/dist/components/ui/tooltip.d.ts +1 -3
  487. package/dist/{containers-CSdc32h9.js → containers-BdfLTP4w.js} +37 -32
  488. package/dist/containers-BdfLTP4w.js.map +1 -0
  489. package/dist/content-block-hooks-Z3iKjqd1.js +17 -0
  490. package/dist/content-block-hooks-Z3iKjqd1.js.map +1 -0
  491. package/dist/{copyable-3fdHfMR3.js → copyable-Bmr14W0d.js} +6 -6
  492. package/dist/{copyable-3fdHfMR3.js.map → copyable-Bmr14W0d.js.map} +1 -1
  493. package/dist/{data-display-Cmj-xZYl.js → data-display-CWe9SOYh.js} +264 -251
  494. package/dist/data-display-CWe9SOYh.js.map +1 -0
  495. package/dist/date-3qsCE1ID.js +209 -0
  496. package/dist/date-3qsCE1ID.js.map +1 -0
  497. package/dist/{date-picker-CyQlFYsP.js → date-picker-D1keJQIG.js} +129 -129
  498. package/dist/date-picker-D1keJQIG.js.map +1 -0
  499. package/dist/date-pickers-D8aJoeHc.js +185 -0
  500. package/dist/date-pickers-D8aJoeHc.js.map +1 -0
  501. package/dist/disclosure-panel-B0HFNZ9x.js.map +1 -1
  502. package/dist/{display-CT_N2a3w.js → display-VlmP1I0i.js} +23 -46
  503. package/dist/display-VlmP1I0i.js.map +1 -0
  504. package/dist/{dropdown-menu-C08iIugv.js → dropdown-menu-B8hjvbkS.js} +9 -9
  505. package/dist/{dropdown-menu-C08iIugv.js.map → dropdown-menu-B8hjvbkS.js.map} +1 -1
  506. package/dist/dropzone-CHBNK3de.js +116 -0
  507. package/dist/dropzone-CHBNK3de.js.map +1 -0
  508. package/dist/features/activities.js +682 -628
  509. package/dist/features/activities.js.map +1 -1
  510. package/dist/features/ai-chat.js +258 -226
  511. package/dist/features/ai-chat.js.map +1 -1
  512. package/dist/features/appointment-calendar.js +436 -340
  513. package/dist/features/appointment-calendar.js.map +1 -1
  514. package/dist/features/async-preview.js +351 -265
  515. package/dist/features/async-preview.js.map +1 -1
  516. package/dist/features/combobox.js +2 -2
  517. package/dist/features/comments.js +1 -1
  518. package/dist/features/data-view.js +212 -151
  519. package/dist/features/data-view.js.map +1 -1
  520. package/dist/features/email-composer/engine.js +1 -1
  521. package/dist/features/email-composer.js +344 -315
  522. package/dist/features/email-composer.js.map +1 -1
  523. package/dist/features/event-calendar.js +504 -355
  524. package/dist/features/event-calendar.js.map +1 -1
  525. package/dist/features/filters.js +2 -2
  526. package/dist/features/global-search.js +250 -206
  527. package/dist/features/global-search.js.map +1 -1
  528. package/dist/features/kanban.js +269 -189
  529. package/dist/features/kanban.js.map +1 -1
  530. package/dist/features/map.js +385 -371
  531. package/dist/features/map.js.map +1 -1
  532. package/dist/features/media-library.js +1571 -1199
  533. package/dist/features/media-library.js.map +1 -1
  534. package/dist/features/mentions.js +2 -2
  535. package/dist/features/overlays.js +2 -2
  536. package/dist/features/products.js +1780 -1691
  537. package/dist/features/products.js.map +1 -1
  538. package/dist/features/questionnaire.js +165 -152
  539. package/dist/features/questionnaire.js.map +1 -1
  540. package/dist/features/resource-assignment.js +223 -191
  541. package/dist/features/resource-assignment.js.map +1 -1
  542. package/dist/features/resource.js +55 -220
  543. package/dist/features/resource.js.map +1 -1
  544. package/dist/features/rich-text-editor.js +3 -3
  545. package/dist/features/schema-form.js +280 -228
  546. package/dist/features/schema-form.js.map +1 -1
  547. package/dist/features/suggestions.js +48 -39
  548. package/dist/features/suggestions.js.map +1 -1
  549. package/dist/features/table.js +2 -2
  550. package/dist/features/theme-tweaker.js +723 -633
  551. package/dist/features/theme-tweaker.js.map +1 -1
  552. package/dist/feedback-DmqmXKLn.js +254 -0
  553. package/dist/feedback-DmqmXKLn.js.map +1 -0
  554. package/dist/{field-affordance-recipes-D6H7tVJi.js → field-affordance-recipes-DfbMadot.js} +13 -9
  555. package/dist/field-affordance-recipes-DfbMadot.js.map +1 -0
  556. package/dist/{field-state-recipes-7sza8QbC.js → field-state-recipes-EtCxpEy3.js} +6 -2
  557. package/dist/field-state-recipes-EtCxpEy3.js.map +1 -0
  558. package/dist/filters-BviMRMLS.js +2692 -0
  559. package/dist/filters-BviMRMLS.js.map +1 -0
  560. package/dist/{focus-recipes-B653VaLq.js → focus-recipes-DSkiUvUp.js} +3 -3
  561. package/dist/focus-recipes-DSkiUvUp.js.map +1 -0
  562. package/dist/{form-field-CAPdwdnZ.js → form-field-BdfCwSoQ.js} +5 -5
  563. package/dist/{form-field-CAPdwdnZ.js.map → form-field-BdfCwSoQ.js.map} +1 -1
  564. package/dist/{form-sizing-CgcrUbLU.js → form-sizing-DE_dZw32.js} +3 -3
  565. package/dist/{form-sizing-CgcrUbLU.js.map → form-sizing-DE_dZw32.js.map} +1 -1
  566. package/dist/{forms-B3W8CH7-.js → forms-B8DzJnBN.js} +35 -35
  567. package/dist/forms-B8DzJnBN.js.map +1 -0
  568. package/dist/forms-numeric-DOBswjKj.js +992 -0
  569. package/dist/forms-numeric-DOBswjKj.js.map +1 -0
  570. package/dist/{header-ZIIsRKxP.js → header-Cq3G0ZRP.js} +100 -95
  571. package/dist/header-Cq3G0ZRP.js.map +1 -0
  572. package/dist/{hooks-BitHSh-Y.js → hooks-DHfeSMAO.js} +34 -14
  573. package/dist/hooks-DHfeSMAO.js.map +1 -0
  574. package/dist/{http-D_6rOnzU.js → http-Cu-GPpss.js} +61 -35
  575. package/dist/http-Cu-GPpss.js.map +1 -0
  576. package/dist/{icon-badge-npxF1SLX.js → icon-badge-B0Kq7wom.js} +3 -3
  577. package/dist/{icon-badge-npxF1SLX.js.map → icon-badge-B0Kq7wom.js.map} +1 -1
  578. package/dist/index.js +6 -6
  579. package/dist/inline-gutter-context-CSqmrMFZ.js +11 -0
  580. package/dist/inline-gutter-context-CSqmrMFZ.js.map +1 -0
  581. package/dist/{input-DIREVYHs.js → input-2YrgTUrz.js} +3 -3
  582. package/dist/{input-DIREVYHs.js.map → input-2YrgTUrz.js.map} +1 -1
  583. package/dist/{input-7KAc7XQL.js → input-DfJyrjoR.js} +6 -6
  584. package/dist/{input-7KAc7XQL.js.map → input-DfJyrjoR.js.map} +1 -1
  585. package/dist/{interaction-recipes-4wZ2tvfb.js → interaction-recipes-DmuS1ase.js} +2 -2
  586. package/dist/{interaction-recipes-4wZ2tvfb.js.map → interaction-recipes-DmuS1ase.js.map} +1 -1
  587. package/dist/item-GJ9mvCcg.js +279 -0
  588. package/dist/item-GJ9mvCcg.js.map +1 -0
  589. package/dist/layout/app-shell.js +1 -1
  590. package/dist/layout/auth.js +1 -1
  591. package/dist/layout/containers.js +1 -1
  592. package/dist/layout/header.js +1 -1
  593. package/dist/layout/hooks.js +1 -1
  594. package/dist/layout/navigation.js +1 -1
  595. package/dist/layout/page.js +2 -2
  596. package/dist/layout/settings.js +2 -2
  597. package/dist/layout/sidebar.js +3 -3
  598. package/dist/layout/workspace.js +1 -1
  599. package/dist/layout.js +12 -12
  600. package/dist/{layout.types-E_GAApzO.js → layout.types-DbtnyAtd.js} +11 -8
  601. package/dist/layout.types-DbtnyAtd.js.map +1 -0
  602. package/dist/lib/anchored-positioning.d.ts +11 -0
  603. package/dist/lib/field-affordance-recipes.d.ts +10 -0
  604. package/dist/lib/field-state-recipes.d.ts +6 -0
  605. package/dist/lib/focus-recipes.d.ts +7 -0
  606. package/dist/lib/format.d.ts +25 -0
  607. package/dist/lib/money-format.d.ts +6 -0
  608. package/dist/lib/motion-recipes.d.ts +6 -0
  609. package/dist/lib/surface-recipes.d.ts +32 -2
  610. package/dist/lib/theme-scope.d.ts +17 -1
  611. package/dist/lib/token-merge.generated.d.ts +13 -19
  612. package/dist/lib/ui-provider/index.d.ts +1 -1
  613. package/dist/lib/ui-provider/types.d.ts +5 -0
  614. package/dist/lib/use-controllable-state.d.ts +16 -0
  615. package/dist/lib/use-copy-feedback.d.ts +15 -0
  616. package/dist/lib/utils.js +1 -1
  617. package/dist/lib/variant-props.d.ts +9 -0
  618. package/dist/main-landmark-context-BAsyqp2I.js +11 -0
  619. package/dist/main-landmark-context-BAsyqp2I.js.map +1 -0
  620. package/dist/mentions-zz0ewNIq.js +670 -0
  621. package/dist/mentions-zz0ewNIq.js.map +1 -0
  622. package/dist/{message-BJHnn43M.js → message-BiiVrRrm.js} +10 -7
  623. package/dist/{message-BJHnn43M.js.map → message-BiiVrRrm.js.map} +1 -1
  624. package/dist/{metadata-list-XkqZ_UXH.js → metadata-list-G85roWjS.js} +13 -12
  625. package/dist/metadata-list-G85roWjS.js.map +1 -0
  626. package/dist/{motion-recipes-DitYv6P2.js → motion-recipes-CUc_aHuG.js} +7 -4
  627. package/dist/motion-recipes-CUc_aHuG.js.map +1 -0
  628. package/dist/navigation-C0Be5C3i.js +304 -0
  629. package/dist/navigation-C0Be5C3i.js.map +1 -0
  630. package/dist/{navigation-Bt-v7rWP.js → navigation-CmqaQR_G.js} +99 -103
  631. package/dist/navigation-CmqaQR_G.js.map +1 -0
  632. package/dist/number-NFWKIoiK.js +340 -0
  633. package/dist/number-NFWKIoiK.js.map +1 -0
  634. package/dist/{overflow-tab-bar-BQCA2Zn2.js → overflow-tab-bar-DV7HE_3t.js} +8 -8
  635. package/dist/{overflow-tab-bar-BQCA2Zn2.js.map → overflow-tab-bar-DV7HE_3t.js.map} +1 -1
  636. package/dist/overlays-D-gAIfPF.js +1018 -0
  637. package/dist/overlays-D-gAIfPF.js.map +1 -0
  638. package/dist/page-D4pQhgSq.js +216 -0
  639. package/dist/page-D4pQhgSq.js.map +1 -0
  640. package/dist/{page-header-commands-DIKspJfx.js → page-header-commands-elelNOfd.js} +29 -29
  641. package/dist/{page-header-commands-DIKspJfx.js.map → page-header-commands-elelNOfd.js.map} +1 -1
  642. package/dist/{pagination-Br8TdV9A.js → pagination-BuSWw1US.js} +22 -23
  643. package/dist/pagination-BuSWw1US.js.map +1 -0
  644. package/dist/{popover-k8TdUcAt.js → popover-BpMxbqEK.js} +73 -69
  645. package/dist/popover-BpMxbqEK.js.map +1 -0
  646. package/dist/{popover-menu-yn-o0kyA.js → popover-menu-CO-_iiuz.js} +7 -7
  647. package/dist/{popover-menu-yn-o0kyA.js.map → popover-menu-CO-_iiuz.js.map} +1 -1
  648. package/dist/{popover.recipes-DJ0AkUan.js → popover.recipes-BqkdvlZn.js} +3 -4
  649. package/dist/{popover.recipes-DJ0AkUan.js.map → popover.recipes-BqkdvlZn.js.map} +1 -1
  650. package/dist/{portal-recipes-DyUXqUtD.js → portal-recipes-BPeS4rGB.js} +2 -2
  651. package/dist/{portal-recipes-DyUXqUtD.js.map → portal-recipes-BPeS4rGB.js.map} +1 -1
  652. package/dist/primitives-BlC1lXBr.js +447 -0
  653. package/dist/primitives-BlC1lXBr.js.map +1 -0
  654. package/dist/primitives.js +4 -4
  655. package/dist/{progress-DZFXXzPs.js → progress-RARK8AjB.js} +5 -5
  656. package/dist/{progress-DZFXXzPs.js.map → progress-RARK8AjB.js.map} +1 -1
  657. package/dist/receipt-CUf2Vegp.js +114 -0
  658. package/dist/receipt-CUf2Vegp.js.map +1 -0
  659. package/dist/{rich-text-BnTzZjIo.js → rich-text-Cypm9__d.js} +7 -8
  660. package/dist/{rich-text-BnTzZjIo.js.map → rich-text-Cypm9__d.js.map} +1 -1
  661. package/dist/rich-text-editor-Z6cQepsA.js +919 -0
  662. package/dist/rich-text-editor-Z6cQepsA.js.map +1 -0
  663. package/dist/rich-text-editor-toolbar-DYbRJARB.js +100 -0
  664. package/dist/rich-text-editor-toolbar-DYbRJARB.js.map +1 -0
  665. package/dist/rich-text-tree-DdKHIJx4.js +154 -0
  666. package/dist/rich-text-tree-DdKHIJx4.js.map +1 -0
  667. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  668. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  669. package/dist/{scroll-area-Bj6CRUif.js → scroll-area-B9HKbji0.js} +3 -3
  670. package/dist/{scroll-area-Bj6CRUif.js.map → scroll-area-B9HKbji0.js.map} +1 -1
  671. package/dist/{separator-DM6gs2vu.js → separator-DaDe26sf.js} +3 -3
  672. package/dist/separator-DaDe26sf.js.map +1 -0
  673. package/dist/{separator-B9ewiCGO.js → separator-KGsNXt2J.js} +2 -2
  674. package/dist/{separator-B9ewiCGO.js.map → separator-KGsNXt2J.js.map} +1 -1
  675. package/dist/services/actions/action-adapters.d.ts +5 -2
  676. package/dist/services/actions/index.d.ts +1 -1
  677. package/dist/services/actions.js +2 -2
  678. package/dist/services/actions.js.map +1 -1
  679. package/dist/settings-D5j_RJvT.js +160 -0
  680. package/dist/settings-D5j_RJvT.js.map +1 -0
  681. package/dist/sheet-B6j_BE9O.js +241 -0
  682. package/dist/sheet-B6j_BE9O.js.map +1 -0
  683. package/dist/{sidebar-CmD6a-HK.js → sidebar-C-iQ_TJP.js} +377 -351
  684. package/dist/sidebar-C-iQ_TJP.js.map +1 -0
  685. package/dist/sidebar-D5VO2W8S.js +715 -0
  686. package/dist/sidebar-D5VO2W8S.js.map +1 -0
  687. package/dist/{skeleton-DDgdhmu9.js → skeleton-Cab_KgVo.js} +12 -12
  688. package/dist/skeleton-Cab_KgVo.js.map +1 -0
  689. package/dist/{smart-card-B6vLxqa_.js → smart-card-C59z6KFO.js} +217 -210
  690. package/dist/smart-card-C59z6KFO.js.map +1 -0
  691. package/dist/{structure-DZJ2wbAU.js → structure-DElaQwwN.js} +2 -2
  692. package/dist/{structure-DZJ2wbAU.js.map → structure-DElaQwwN.js.map} +1 -1
  693. package/dist/style.css +1 -1
  694. package/dist/{surface-recipes-C8mNycaY.js → surface-recipes-DV6rrOFq.js} +10 -2
  695. package/dist/surface-recipes-DV6rrOFq.js.map +1 -0
  696. package/dist/{table-CXSPHH25.js → table-CSRUgpdK.js} +62 -61
  697. package/dist/table-CSRUgpdK.js.map +1 -0
  698. package/dist/table-DdXDBsR_.js +1657 -0
  699. package/dist/table-DdXDBsR_.js.map +1 -0
  700. package/dist/{tabs-C4Kr_hCr.js → tabs-WnHfV2pM.js} +27 -27
  701. package/dist/tabs-WnHfV2pM.js.map +1 -0
  702. package/dist/{text-inputs-jdkS3ReG.js → text-inputs-ljyBYaCd.js} +112 -112
  703. package/dist/text-inputs-ljyBYaCd.js.map +1 -0
  704. package/dist/theme.css +21 -5
  705. package/dist/timelines-mOmS9Eh3.js +479 -0
  706. package/dist/timelines-mOmS9Eh3.js.map +1 -0
  707. package/dist/tooltip-yjX-Uv-p.js +112 -0
  708. package/dist/tooltip-yjX-Uv-p.js.map +1 -0
  709. package/dist/{tree-CeYVzdFE.js → tree-YpkxUG2Z.js} +80 -72
  710. package/dist/tree-YpkxUG2Z.js.map +1 -0
  711. package/dist/typography/rich-text.js +1 -1
  712. package/dist/{typography-C7-YMW1S.js → typography-C0dELqYV.js} +46 -40
  713. package/dist/typography-C0dELqYV.js.map +1 -0
  714. package/dist/typography.js +1 -1
  715. package/dist/{ui-provider-C-74NVLc.js → ui-provider-Bu1S-o96.js} +4 -3
  716. package/dist/ui-provider-Bu1S-o96.js.map +1 -0
  717. package/dist/ui-provider.js +2 -2
  718. package/dist/{upload-Hdm5gObf.js → upload-DMuMYJFT.js} +276 -268
  719. package/dist/upload-DMuMYJFT.js.map +1 -0
  720. package/dist/{usage-card-9s8hLDfn.js → usage-card-DDPki5P1.js} +57 -54
  721. package/dist/usage-card-DDPki5P1.js.map +1 -0
  722. package/dist/use-controllable-state-BlP8SyBI.js +13 -0
  723. package/dist/use-controllable-state-BlP8SyBI.js.map +1 -0
  724. package/dist/use-copy-feedback-CzcaqlLf.js +28 -0
  725. package/dist/use-copy-feedback-CzcaqlLf.js.map +1 -0
  726. package/dist/use-metric-format-options-Dk4rC1NO.js +251 -0
  727. package/dist/use-metric-format-options-Dk4rC1NO.js.map +1 -0
  728. package/dist/{utils-DhuoqFy4.js → utils-BVbAG2J6.js} +98 -76
  729. package/dist/utils-BVbAG2J6.js.map +1 -0
  730. package/dist/value-inputs-h5MwjGCo.js +982 -0
  731. package/dist/value-inputs-h5MwjGCo.js.map +1 -0
  732. package/dist/value-typography-D15uwfj-.js +154 -0
  733. package/dist/value-typography-D15uwfj-.js.map +1 -0
  734. package/dist/workspace-DIryPqBt.js +400 -0
  735. package/dist/workspace-DIryPqBt.js.map +1 -0
  736. package/docs/consumer-skill/SKILL.md +7 -0
  737. package/docs/consumer-skill/agents/themelia-ui-designer.md +11 -2
  738. package/docs/consumer-skill/examples/analytics.tsx +1 -1
  739. package/docs/consumer-skill/examples/app-layout.tsx +3 -3
  740. package/docs/consumer-skill/examples/commerce-lines.tsx +7 -5
  741. package/docs/consumer-skill/examples/detail.tsx +3 -2
  742. package/docs/consumer-skill/examples/email-composer.tsx +1 -1
  743. package/docs/consumer-skill/examples/index-table.tsx +2 -2
  744. package/docs/consumer-skill/examples/scoped-directory.tsx +7 -6
  745. package/docs/consumer-skill/references/agents-md.md +20 -16
  746. package/docs/consumer-skill/references/analytics.md +20 -6
  747. package/docs/consumer-skill/references/building-views.md +213 -0
  748. package/docs/consumer-skill/references/catalogue.md +617 -0
  749. package/docs/consumer-skill/references/component-contracts.json +10202 -18084
  750. package/docs/consumer-skill/references/composition.md +21 -17
  751. package/docs/consumer-skill/references/discovery.md +8 -5
  752. package/docs/consumer-skill/references/installation.md +10 -4
  753. package/docs/consumer-skill/references/integration.md +5 -5
  754. package/docs/consumer-skill/references/product-composition.md +2 -2
  755. package/docs/consumer-skill/references/public-api.json +580 -633
  756. package/docs/consumer-skill/references/review.md +6 -4
  757. package/docs/consumer-skill/references/screen-archetypes.md +2 -2
  758. package/docs/consumer-skill/references/theming.md +1 -1
  759. package/docs/consumer-skill/references/tokens.json +4 -4
  760. package/docs/consumer-skill/references/workflows.md +7 -7
  761. package/docs/consumer-skill/scripts/composition-policy.mjs +40 -20
  762. package/docs/consumer-skill/scripts/composition.mjs +4 -1
  763. package/docs/consumer-skill/scripts/discovery.mjs +3 -1
  764. package/docs/consumer-skill/scripts/setup-skills.mjs +31 -4
  765. package/docs/consumer-skills/themelia-components/SKILL.md +8 -4
  766. package/docs/consumer-skills/themelia-composition/SKILL.md +7 -3
  767. package/docs/consumer-skills/themelia-design/SKILL.md +7 -1
  768. package/docs/consumer-skills/themelia-tokenization/SKILL.md +1 -1
  769. package/package.json +9 -12
  770. package/templates/README.md +3 -2
  771. package/templates/admin-shell-template.tsx +49 -9
  772. package/templates/analytics-operations-template.tsx +20 -24
  773. package/templates/customers-template.tsx +12 -9
  774. package/templates/index.ts +2 -8
  775. package/templates/orders-template.tsx +28 -24
  776. package/templates/products-template.tsx +14 -4
  777. package/templates/user-permissions-template.tsx +11 -14
  778. package/dist/accordion-0tQUZ20r.js.map +0 -1
  779. package/dist/action-menu-C0gjzLyE.js +0 -284
  780. package/dist/action-menu-C0gjzLyE.js.map +0 -1
  781. package/dist/ai-artifact-CGGpQryR.js +0 -1200
  782. package/dist/ai-artifact-CGGpQryR.js.map +0 -1
  783. package/dist/anchored-positioning-DPnKTvNs.js +0 -6
  784. package/dist/anchored-positioning-DPnKTvNs.js.map +0 -1
  785. package/dist/app-shell-EHuuRDGy.js +0 -321
  786. package/dist/app-shell-EHuuRDGy.js.map +0 -1
  787. package/dist/auth-B0girIk_.js.map +0 -1
  788. package/dist/badge-wWauMgAt.js.map +0 -1
  789. package/dist/base/sheet.js +0 -3
  790. package/dist/breadcrumbs-Bp9Ke7kd.js.map +0 -1
  791. package/dist/button-ChBovTx0.js.map +0 -1
  792. package/dist/buttons-DeW0bQeK.js.map +0 -1
  793. package/dist/cascader-CrAl9zD5.js +0 -439
  794. package/dist/cascader-CrAl9zD5.js.map +0 -1
  795. package/dist/choice-inputs-DHGtx0QV.js.map +0 -1
  796. package/dist/code-block-BSJyq9e-.js.map +0 -1
  797. package/dist/collapsible-BzJ91LUG.js +0 -81
  798. package/dist/collapsible-BzJ91LUG.js.map +0 -1
  799. package/dist/combobox-Bcvu5J8O.js +0 -363
  800. package/dist/combobox-Bcvu5J8O.js.map +0 -1
  801. package/dist/combobox-C2JiSQPc.js +0 -915
  802. package/dist/combobox-C2JiSQPc.js.map +0 -1
  803. package/dist/command-9e52NPgK.js +0 -425
  804. package/dist/command-9e52NPgK.js.map +0 -1
  805. package/dist/comments-BsgErEqd.js +0 -1174
  806. package/dist/comments-BsgErEqd.js.map +0 -1
  807. package/dist/components/base/buttons/tooltip-button.d.ts +0 -7
  808. package/dist/components/base/display/content-block.d.ts +0 -75
  809. package/dist/components/base/display/content-block.strings.d.ts +0 -5
  810. package/dist/components/base/sheet/index.d.ts +0 -29
  811. package/dist/components/blocks/ai/use-copy-feedback.d.ts +0 -6
  812. package/dist/components/blocks/data-display/metadata/index.d.ts +0 -30
  813. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +0 -10
  814. package/dist/components/features/resource/resource.strings.d.ts +0 -12
  815. package/dist/components/features/rich-text-editor/partials/rich-text-editor-fallback.d.ts +0 -8
  816. package/dist/components/features/sync/index.d.ts +0 -26
  817. package/dist/components/features/sync/sync-range-dialog-form.d.ts +0 -5
  818. package/dist/components/features/sync/sync.strings.d.ts +0 -18
  819. package/dist/components/features/sync/sync.types.d.ts +0 -44
  820. package/dist/components/layout/page/partials/page-actions.d.ts +0 -3
  821. package/dist/components/ui/slot.d.ts +0 -6
  822. package/dist/containers-CSdc32h9.js.map +0 -1
  823. package/dist/data-display-Cmj-xZYl.js.map +0 -1
  824. package/dist/date-Br0FicVv.js +0 -144
  825. package/dist/date-Br0FicVv.js.map +0 -1
  826. package/dist/date-picker-CyQlFYsP.js.map +0 -1
  827. package/dist/date-pickers-tj2MXmXd.js +0 -185
  828. package/dist/date-pickers-tj2MXmXd.js.map +0 -1
  829. package/dist/display-CT_N2a3w.js.map +0 -1
  830. package/dist/features/sync.js +0 -142
  831. package/dist/features/sync.js.map +0 -1
  832. package/dist/feedback-Dzo1xtAU.js +0 -246
  833. package/dist/feedback-Dzo1xtAU.js.map +0 -1
  834. package/dist/field-affordance-recipes-D6H7tVJi.js.map +0 -1
  835. package/dist/field-state-recipes-7sza8QbC.js.map +0 -1
  836. package/dist/filters-Dl80yYtN.js +0 -2415
  837. package/dist/filters-Dl80yYtN.js.map +0 -1
  838. package/dist/focus-recipes-B653VaLq.js.map +0 -1
  839. package/dist/forms-B3W8CH7-.js.map +0 -1
  840. package/dist/forms-numeric-CwjQJe-O.js +0 -991
  841. package/dist/forms-numeric-CwjQJe-O.js.map +0 -1
  842. package/dist/header-ZIIsRKxP.js.map +0 -1
  843. package/dist/hooks-BitHSh-Y.js.map +0 -1
  844. package/dist/http-D_6rOnzU.js.map +0 -1
  845. package/dist/item-FfWnaYST.js +0 -278
  846. package/dist/item-FfWnaYST.js.map +0 -1
  847. package/dist/layout.types-E_GAApzO.js.map +0 -1
  848. package/dist/media-gallery-C81DAnKI.js +0 -203
  849. package/dist/media-gallery-C81DAnKI.js.map +0 -1
  850. package/dist/mentions-qOnedSt4.js +0 -639
  851. package/dist/mentions-qOnedSt4.js.map +0 -1
  852. package/dist/metadata-list-XkqZ_UXH.js.map +0 -1
  853. package/dist/motion-recipes-DitYv6P2.js.map +0 -1
  854. package/dist/navigation-BgtPJAhi.js +0 -288
  855. package/dist/navigation-BgtPJAhi.js.map +0 -1
  856. package/dist/navigation-Bt-v7rWP.js.map +0 -1
  857. package/dist/number-CYqBcrSj.js +0 -346
  858. package/dist/number-CYqBcrSj.js.map +0 -1
  859. package/dist/overlays-CC8zI3Du.js +0 -1017
  860. package/dist/overlays-CC8zI3Du.js.map +0 -1
  861. package/dist/page-BoQ1VaFJ.js +0 -331
  862. package/dist/page-BoQ1VaFJ.js.map +0 -1
  863. package/dist/pagination-Br8TdV9A.js.map +0 -1
  864. package/dist/popover-k8TdUcAt.js.map +0 -1
  865. package/dist/primitives-BkkQjYl7.js +0 -385
  866. package/dist/primitives-BkkQjYl7.js.map +0 -1
  867. package/dist/receipt-C7LhOg7Q.js +0 -116
  868. package/dist/receipt-C7LhOg7Q.js.map +0 -1
  869. package/dist/rich-text-editor-CAurDwT5.js +0 -1273
  870. package/dist/rich-text-editor-CAurDwT5.js.map +0 -1
  871. package/dist/rich-text-editor-toolbar-DbXig7Jk.js +0 -99
  872. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +0 -1
  873. package/dist/rich-text-tree-BqyQ_7-R.js +0 -66
  874. package/dist/rich-text-tree-BqyQ_7-R.js.map +0 -1
  875. package/dist/sanitize-html-BWkH4dLM.js +0 -105
  876. package/dist/sanitize-html-BWkH4dLM.js.map +0 -1
  877. package/dist/separator-DM6gs2vu.js.map +0 -1
  878. package/dist/settings-DZPHgpx4.js +0 -155
  879. package/dist/settings-DZPHgpx4.js.map +0 -1
  880. package/dist/sheet-C4DHsgLk.js +0 -250
  881. package/dist/sheet-C4DHsgLk.js.map +0 -1
  882. package/dist/sidebar-C8BnDwTH.js +0 -709
  883. package/dist/sidebar-C8BnDwTH.js.map +0 -1
  884. package/dist/sidebar-CmD6a-HK.js.map +0 -1
  885. package/dist/skeleton-DDgdhmu9.js.map +0 -1
  886. package/dist/slot-CLF9kLrS.js +0 -16
  887. package/dist/slot-CLF9kLrS.js.map +0 -1
  888. package/dist/smart-card-B6vLxqa_.js.map +0 -1
  889. package/dist/surface-recipes-C8mNycaY.js.map +0 -1
  890. package/dist/table-CBonSdTp.js +0 -1584
  891. package/dist/table-CBonSdTp.js.map +0 -1
  892. package/dist/table-CXSPHH25.js.map +0 -1
  893. package/dist/tabs-C4Kr_hCr.js.map +0 -1
  894. package/dist/text-inputs-jdkS3ReG.js.map +0 -1
  895. package/dist/timelines-CoPwdJP0.js +0 -458
  896. package/dist/timelines-CoPwdJP0.js.map +0 -1
  897. package/dist/tooltip-31NwIpTo.js +0 -113
  898. package/dist/tooltip-31NwIpTo.js.map +0 -1
  899. package/dist/tree-CeYVzdFE.js.map +0 -1
  900. package/dist/typography-C7-YMW1S.js.map +0 -1
  901. package/dist/ui-provider-C-74NVLc.js.map +0 -1
  902. package/dist/upload-Hdm5gObf.js.map +0 -1
  903. package/dist/upload-queue-D0sYPuqo.js +0 -409
  904. package/dist/upload-queue-D0sYPuqo.js.map +0 -1
  905. package/dist/usage-card-9s8hLDfn.js.map +0 -1
  906. package/dist/utils-DhuoqFy4.js.map +0 -1
  907. package/dist/value-inputs-D3aPgq9H.js +0 -980
  908. package/dist/value-inputs-D3aPgq9H.js.map +0 -1
  909. package/dist/value-typography-uSzzG9Gf.js +0 -122
  910. package/dist/value-typography-uSzzG9Gf.js.map +0 -1
  911. package/dist/workspace-CC8Vchiu.js +0 -411
  912. package/dist/workspace-CC8Vchiu.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlays-D-gAIfPF.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","useThemePortalContainer","useOverlayConfig","cn","SheetDescription","SheetTitle","useInsideOverlayLayer","useOpenerFinalFocus","SheetContent","SheetBody","SheetFooter","overlayAnatomyRecipes","SheetClose","SheetHeader","Sheet","OverlayLayer","Text","textWeights","textLineHeights","textSizes","Button","portalClassName","motionRecipes","Button$1","Stack","toneRecipes","modalRegionRecipes","surfaceDividerRecipes","Alert","AlertDescription","compositionRhythm","modalBackdropRecipe","usePopupFocusRecovery","interactionRecipes","React$1","Dialog$2","props","Dialog","DialogTrigger$1","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","defaultConfirmDialogStrings","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","keysSignature","keyList","source","stateSignature","stateRef","onOpenChangeRef","setKeyOpen","previousState","nextState","closeOthersOnOpen","item","handlers","previousGroup","group","keyHandlers","previousEntry","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","footer","showCancel","showConfirm","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 { 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 ...props\n}: DialogPrimitive.Trigger.Props) {\n return (\n <DialogPrimitive.Trigger\n data-slot=\"dialog-trigger\"\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 ...props\n}: DialogPrimitive.Title.Props) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"leading-none font-medium\", className)}\n {...props}\n />\n )\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: DialogPrimitive.Description.Props) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\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\n/** ConfirmDialog's defaults, under the `default<Component>Strings` name. */\nexport const defaultConfirmDialogStrings: 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\t// Consumers pass the keys as an inline literal, so identity is taken from\n\t// the key names: the list only changes when a name does.\n\tconst keysSignature = keys.join('\\u0000');\n\t// oxlint-disable-next-line react-hooks/exhaustive-deps -- `keysSignature` is the cache key for `keys`\n\tconst keyList = useMemo(() => keys as readonly TKey[], [keysSignature]);\n\tconst [internalOpen, setInternalOpen] = useState<OverlayVisibilityGroupState<TKey>>(\n\t\t() => normalizeGroupState(keyList, defaultOpen),\n\t);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst source = isControlled ? controlledOpen : internalOpen;\n\t// The normalized state keeps its identity until one key's visibility changes.\n\tconst stateSignature = keyList.map((key) => (source?.[key] ? '1' : '0')).join('');\n\t// oxlint-disable-next-line react-hooks/exhaustive-deps -- `stateSignature` is the cache key for `source`\n\tconst state = useMemo(() => normalizeGroupState(keyList, source), [keyList, stateSignature]);\n\tconst stateRef = useRef(state);\n\tconst onOpenChangeRef = useRef(onOpenChange);\n\tuseLayoutEffect(() => {\n\t\tstateRef.current = state;\n\t\tonOpenChangeRef.current = onOpenChange;\n\t}, [onOpenChange, 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\tonOpenChangeRef.current?.(key, resolvedOpen, nextState);\n\t\t},\n\t\t[closeOthersOnOpen, isControlled, keyList],\n\t);\n\n\t// Per-key handlers are stable for the life of the key list.\n\tconst handlers = useMemo(() => {\n\t\tconst result = {} as Record<\n\t\t\tTKey,\n\t\t\tPick<UseOverlayVisibilityReturn, 'setOpen' | 'show' | 'hide' | 'toggle'>\n\t\t>;\n\t\tfor (const key of keyList) {\n\t\t\tresult[key] = {\n\t\t\t\tsetOpen: (nextOpen) => setKeyOpen(key, nextOpen),\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};\n\t\t}\n\t\treturn result;\n\t}, [keyList, setKeyOpen]);\n\n\tconst previousGroup = useRef<UseOverlayVisibilityGroupReturn<TKey> | null>(null);\n\tconst group = useMemo(() => {\n\t\tconst previous = previousGroup.current;\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 keyHandlers = handlers[key];\n\t\t\tconst previousEntry = previous?.[key];\n\t\t\t// A key whose visibility did not change keeps its object, so memoized\n\t\t\t// children and effects that depend on it are left alone.\n\t\t\tresult[key] =\n\t\t\t\tpreviousEntry && previousEntry.open === open && previousEntry.setOpen === keyHandlers.setOpen\n\t\t\t\t\t? previousEntry\n\t\t\t\t\t: {\n\t\t\t\t\t\t\topen,\n\t\t\t\t\t\t\tisOpen: open,\n\t\t\t\t\t\t\t...keyHandlers,\n\t\t\t\t\t\t\toverlayProps: { open, onOpenChange: keyHandlers.setOpen },\n\t\t\t\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}, [handlers, keyList, state]);\n\tuseLayoutEffect(() => {\n\t\tpreviousGroup.current = group;\n\t}, [group]);\n\n\treturn group;\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\tfinalFocus,\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\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = footer !== null && Boolean(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\tfinalFocus={finalFocus}\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\tfinalFocus,\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\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = showFooter && footer !== null && Boolean(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\tfinalFocus={finalFocus}\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 { defaultConfirmDialogStrings } 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\tfinalFocus,\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(defaultConfirmDialogStrings, 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\t// `footer={null}` is an explicit \"no footer\"; `undefined` keeps the generated one.\n\tconst hasFooter = footer !== null && Boolean(showCancel || showConfirm || footer);\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\t// A confirmation has no corner control and ignores outside presses,\n\t\t\t\t// so a dismissal that reaches here (Escape) is the user declining.\n\t\t\t\t// The Cancel button reports through `handleCancel` instead.\n\t\t\t\tif (!nextOpen && visibility.open) onCancel?.();\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\tfinalFocus={finalFocus}\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{!!hasFooter && (\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,216 @@
1
+ "use client";
2
+ import { useStrings as e } from "./lib/strings.js";
3
+ import { t } from "./utils-BVbAG2J6.js";
4
+ import { c as n, s as r } from "./typography-C0dELqYV.js";
5
+ import { n as i, t as a } from "./text.styles-B64My8RZ.js";
6
+ import { a as o, n as s } from "./buttons-pZVgPTZn.js";
7
+ import { t as c } from "./structure-DElaQwwN.js";
8
+ import { i as l, l as u, n as d, o as f, s as p, t as m } from "./feedback-DmqmXKLn.js";
9
+ import { n as h, t as g } from "./composition.recipes-COdiFhxB.js";
10
+ import { n as _, t as v } from "./page-header-commands-elelNOfd.js";
11
+ import { t as y } from "./overflow-tab-bar-DV7HE_3t.js";
12
+ import { m as b } from "./hooks-DHfeSMAO.js";
13
+ import { i as x, t as S } from "./containers-BdfLTP4w.js";
14
+ import { n as C } from "./inline-gutter-context-CSqmrMFZ.js";
15
+ import { forwardRef as w } from "react";
16
+ import { Fragment as T, jsx as E, jsxs as D } from "react/jsx-runtime";
17
+ import { ArrowLeft as O } from "lucide-react";
18
+ //#region src/components/layout/page/page.strings.ts
19
+ var k = {
20
+ back: "Back",
21
+ moreActions: "More actions",
22
+ sections: "Sections",
23
+ moreSections: "More"
24
+ }, A = {
25
+ loadingLabel: "Loading content",
26
+ loadingDescription: "Preparing the latest data for this view.",
27
+ errorTitle: "Content unavailable",
28
+ errorDescription: "The content could not be loaded.",
29
+ retryLabel: "Try again",
30
+ emptyTitle: "No content found",
31
+ emptyDescription: "There is no content available for this view."
32
+ };
33
+ //#endregion
34
+ //#region src/components/layout/page/partials/page-header.tsx
35
+ function j(e, t) {
36
+ return typeof e == "function" ? e(t) : e ?? t.defaultContent;
37
+ }
38
+ function M({ title: l, description: u, textGap: d = "dense", headingTag: f = "h1", backHref: p, onBack: m, primaryAction: h, secondaryActions: g, maxVisibleSecondaryActions: x, tabs: S, slots: C, strings: w, renderLink: A, className: M, contentClassName: N, actionsClassName: P, titleClassName: F, descriptionClassName: I }) {
39
+ let L = e(k, w), R = L.back, z = L.moreActions, B = b({ renderLink: A }), V = p || m ? /* @__PURE__ */ E("div", {
40
+ className: "flex items-center gap-space-sm shrink-0",
41
+ children: p && !m ? B({
42
+ href: p,
43
+ "aria-label": R,
44
+ className: t("page-header--back-link", o({
45
+ tone: "secondary",
46
+ buttonStyle: "ghost",
47
+ size: "sm",
48
+ iconOnly: !0
49
+ })),
50
+ children: /* @__PURE__ */ E(T, { children: /* @__PURE__ */ E(O, {
51
+ className: "size-icon rtl:rotate-180",
52
+ "aria-hidden": "true"
53
+ }) })
54
+ }) : /* @__PURE__ */ E(s, {
55
+ type: "button",
56
+ tone: "secondary",
57
+ buttonStyle: "ghost",
58
+ size: "sm",
59
+ iconOnly: !0,
60
+ className: "page-header--back-button",
61
+ onClick: m,
62
+ "aria-label": R,
63
+ children: /* @__PURE__ */ E(O, {
64
+ className: "size-icon rtl:rotate-180",
65
+ "aria-hidden": "true"
66
+ })
67
+ })
68
+ }) : null, H = V != null, U = _(h, g), W = U ? /* @__PURE__ */ E(v, {
69
+ primaryAction: h,
70
+ secondaryActions: g,
71
+ maxVisibleSecondaryActions: x,
72
+ moreActionsLabel: z,
73
+ renderLink: B
74
+ }) : null, G = j(C?.actions, {
75
+ renderLink: B,
76
+ defaultContent: W
77
+ }), K = G != null && G !== !1, q = j(C?.beforeTitle, {
78
+ renderLink: B,
79
+ defaultContent: null
80
+ }), J = j(C?.afterDescription, {
81
+ renderLink: B,
82
+ defaultContent: null
83
+ }), Y = j(C?.titleSuffix, {
84
+ renderLink: B,
85
+ defaultContent: null
86
+ }), X = typeof u == "string" || typeof u == "number" || typeof u == "bigint", Z = typeof l == "string" || typeof l == "number" || typeof l == "bigint";
87
+ return /* @__PURE__ */ E("header", {
88
+ className: t("layout-page-header--component page-heading--component page-header--component @container/page-header w-full min-w-0", M),
89
+ children: /* @__PURE__ */ D(c, {
90
+ gap: "xl",
91
+ children: [/* @__PURE__ */ D(c, {
92
+ gap: "sm",
93
+ className: t("page-header--content-row min-w-0", N),
94
+ children: [q, /* @__PURE__ */ D("div", {
95
+ className: "page-header--headline-row flex min-w-0 flex-wrap items-start gap-x-space-xl gap-y-space-lg",
96
+ children: [/* @__PURE__ */ D("div", {
97
+ 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", H ? "grid-cols-[auto_minmax(0,1fr)]" : "grid-cols-1", d === "normal" ? "gap-y-normal" : "gap-y-dense"),
98
+ children: [H && /* @__PURE__ */ E("span", {
99
+ className: "page-header--title-prefix inline-flex shrink-0 items-center self-start",
100
+ children: V
101
+ }), /* @__PURE__ */ D(c, {
102
+ gap: d,
103
+ className: "page-header--copy-content min-w-0",
104
+ children: [/* @__PURE__ */ D(c, {
105
+ direction: "horizontal",
106
+ gap: "md",
107
+ align: "center",
108
+ wrap: !0,
109
+ className: "page-header--title-line min-w-0",
110
+ children: [Z ? /* @__PURE__ */ E(r, {
111
+ tag: f,
112
+ size: i.route,
113
+ className: t("page-header--title min-w-0 [overflow-wrap:anywhere] border-0 pb-0", F),
114
+ children: l
115
+ }) : l, Y]
116
+ }), (u != null && u !== !1 || J != null && J !== !1) && /* @__PURE__ */ D(c, {
117
+ gap: "dense",
118
+ className: "page-header--title-block min-w-0",
119
+ children: [X ? /* @__PURE__ */ E(n, {
120
+ ...a.structuralDescription,
121
+ className: t("page-header--description max-w-2xl [overflow-wrap:anywhere]", I),
122
+ children: u
123
+ }) : u, J]
124
+ })]
125
+ })]
126
+ }), K && /* @__PURE__ */ E(c, {
127
+ direction: "horizontal",
128
+ gap: "md",
129
+ className: t("page-header--actions max-w-full shrink-0 self-start", U && C?.actions == null && "justify-end", P),
130
+ children: G
131
+ })]
132
+ })]
133
+ }), S && S.items.length > 0 && /* @__PURE__ */ E(y, {
134
+ items: S.items,
135
+ value: S.value,
136
+ onValueChange: S.onValueChange,
137
+ className: "page-header--tabs",
138
+ strings: {
139
+ navigationLabel: L.sections,
140
+ more: L.moreSections
141
+ }
142
+ })]
143
+ })
144
+ });
145
+ }
146
+ //#endregion
147
+ //#region src/components/layout/page/page.tsx
148
+ var N = {
149
+ none: "py-0",
150
+ sm: "py-surface-xs",
151
+ md: "py-surface",
152
+ lg: "py-surface-lg"
153
+ }, P = w(function({ header: n, children: r, slotProps: i, slots: a, renderLink: o, maxWidth: s, narrow: _ = !1, gutter: v, padding: y = "lg", aside: b, asideRatio: w = "7/5", stickyAside: T, toolbar: O, beforeHeader: k, loading: j = !1, error: P, onRetry: F, empty: I = !1, emptySlot: L, strings: R, className: z, render: B, ...V }, H) {
154
+ let U = e(A, R), W = C(), G = v ?? (W ? "none" : "lg"), { className: K, ...q } = i?.body ?? {}, { className: J, ...Y } = i?.toolbar ?? {}, { className: X, ...Z } = i?.footer ?? {}, Q = b != null && b !== !1, $ = O, ee = a?.header ?? (n ? /* @__PURE__ */ E(M, {
155
+ ...n,
156
+ renderLink: n.renderLink ?? o
157
+ }) : null), te = P instanceof Error ? P.message : typeof P == "string" || typeof P == "number" ? String(P) : U.errorDescription, ne = P && typeof P != "boolean" && typeof P != "string" && typeof P != "number" && !(P instanceof Error) ? P : void 0, re = j ? a?.loading ?? /* @__PURE__ */ E(d, {
158
+ variant: "panel",
159
+ label: U.loadingLabel,
160
+ description: U.loadingDescription,
161
+ skeleton: !0,
162
+ lines: 4
163
+ }) : P ? a?.error ?? ne ?? /* @__PURE__ */ E(m, {
164
+ variant: "panel",
165
+ title: U.errorTitle,
166
+ description: te,
167
+ onRetry: F,
168
+ retryLabel: U.retryLabel
169
+ }) : I ? L ?? /* @__PURE__ */ E(l, { children: /* @__PURE__ */ D(p, { children: [/* @__PURE__ */ E(u, { children: U.emptyTitle }), /* @__PURE__ */ E(f, { children: U.emptyDescription })] }) }) : r, ie = re == null ? null : /* @__PURE__ */ E("div", {
170
+ ...q,
171
+ "data-slot": "page-body",
172
+ className: t("page--body relative flex min-w-0 w-full flex-col", g.subjects, K),
173
+ children: re
174
+ });
175
+ return /* @__PURE__ */ E(x, {
176
+ ...V,
177
+ ref: H,
178
+ render: B,
179
+ maxWidth: s ?? (_ ? "md" : Q ? "xl" : "lg"),
180
+ gutter: G,
181
+ className: t("font-sans", N[y], z),
182
+ children: /* @__PURE__ */ D(c, {
183
+ gap: h.page,
184
+ className: "page--component",
185
+ children: [
186
+ k,
187
+ ee,
188
+ $ != null && $ !== !1 && /* @__PURE__ */ E("div", {
189
+ ...Y,
190
+ "data-slot": "page-toolbar",
191
+ className: t("page--toolbar min-w-0", J),
192
+ children: $
193
+ }),
194
+ Q ? /* @__PURE__ */ E(S, {
195
+ adaptTo: "container",
196
+ ratio: w,
197
+ stickyAside: T,
198
+ main: ie,
199
+ aside: b,
200
+ slotProps: { aside: i?.aside }
201
+ }) : ie,
202
+ a?.footer != null && a.footer !== !1 && /* @__PURE__ */ E("div", {
203
+ ...Z,
204
+ "data-slot": "page-footer",
205
+ className: t("page--footer min-w-0", X),
206
+ children: a.footer
207
+ })
208
+ ]
209
+ })
210
+ });
211
+ });
212
+ P.displayName = "Page";
213
+ //#endregion
214
+ export { A as i, M as n, k as r, P as t };
215
+
216
+ //# sourceMappingURL=page-D4pQhgSq.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-D4pQhgSq.js","names":["_Fragment","Text","Heading","headingRoleSizes","copyRoleProps","buttonVariants","Button","Stack","Empty","EmptyTitle","LoadingState","EmptyDescription","EmptyHeader","ErrorState","compositionRhythm","compositionClasses","hasPageHeaderCommands","PageHeaderCommands","OverflowTabBar","useLayoutLinkRenderer","Container","TwoColumnLayout","useInlineGutterOwned","Fragment$1","defaultPageHeaderStrings","defaultPageStrings","resolveSlot","slot","context","PageHeader","stringsProp","strings","useStrings","backLabel","moreActionsLabel","resolvedRenderLink","defaultBack","backHref","onBack","cn","ArrowLeft","hasPrefix","hasCommands","primaryAction","secondaryActions","defaultActions","actionsRegion","slots","hasActions","beforeTitle","afterDescription","titleSuffix","simpleDescription","description","simpleTitle","title","className","contentClassName","textGap","headingTag","titleClassName","descriptionClassName","actionsClassName","tabs","blockPadding","Page","forwardRef","gutterProp","containerProps","gutterOwned","gutter","bodyClassName","bodyProps","slotProps","toolbarClassName","toolbarProps","footerClassName","footerProps","hasAside","aside","toolbarNode","toolbar","headerNode","header","renderLink","errorDescription","error","customError","body","loading","empty","emptySlot","children","bodyNode","maxWidth","narrow","padding","beforeHeader","asideRatio"],"sources":["../src/components/layout/page/page.strings.ts","../src/components/layout/page/partials/page-header.tsx","../src/components/layout/page/page.tsx"],"sourcesContent":["/** Copy for PageHeader's own controls. */\nexport interface PageHeaderStrings {\n\t/** Accessible name of the back control. */\n\tback: string;\n\t/** Accessible name of the More actions menu trigger. */\n\tmoreActions: string;\n\t/** Accessible name of the section tab list. */\n\tsections: string;\n\t/** Label of the trigger that holds section tabs which do not fit. */\n\tmoreSections: string;\n}\n\nexport const defaultPageHeaderStrings: PageHeaderStrings = {\n\tback: 'Back',\n\tmoreActions: 'More actions',\n\tsections: 'Sections',\n\tmoreSections: 'More',\n};\n\n/** Copy for Page's primary-body lifecycle states. */\nexport interface PageStrings {\n\tloadingLabel: string;\n\tloadingDescription: string;\n\terrorTitle: string;\n\terrorDescription: string;\n\tretryLabel: string;\n\temptyTitle: string;\n\temptyDescription: string;\n}\n\nexport const defaultPageStrings: PageStrings = {\n\tloadingLabel: 'Loading content',\n\tloadingDescription: 'Preparing the latest data for this view.',\n\terrorTitle: 'Content unavailable',\n\terrorDescription: 'The content could not be loaded.',\n\tretryLabel: 'Try again',\n\temptyTitle: 'No content found',\n\temptyDescription: 'There is no content available for this view.',\n};\n","/** Route header anatomy with four content slots and shared responsive commands. */\nimport { ArrowLeft } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { Button } from '../../../base/buttons';\nimport { Stack } from '../../../base/structure';\nimport { OverflowTabBar } from '../../../base/navigation/overflow-tab-bar';\nimport { hasPageHeaderCommands, PageHeaderCommands } from '../../../base/navigation/page-header/page-header-commands';\nimport { buttonVariants } from '../../../base/buttons/button.variants';\nimport { Heading, Text } from '../../../typography';\nimport { copyRoleProps, headingRoleSizes } from '../../../typography/text.styles';\nimport { useStrings } from '../../../../lib/strings';\nimport { cn } from '../../../../lib/utils';\n\nimport { useLayoutLinkRenderer } from '../../hooks';\nimport { defaultPageHeaderStrings } from '../page.strings';\nimport type { PageHeaderProps, PageHeaderRenderContext, PageHeaderRenderSlot } from '../page.types';\n\nfunction resolveSlot(slot: PageHeaderRenderSlot, context: PageHeaderRenderContext): ReactNode {\n return typeof slot === 'function' ? slot(context) : slot ?? context.defaultContent;\n}\n\nexport function PageHeader({\n title, description, textGap = 'dense', headingTag = 'h1',\n backHref, onBack,\n primaryAction, secondaryActions, maxVisibleSecondaryActions, tabs, slots,\n strings: stringsProp, renderLink, className, contentClassName, actionsClassName, titleClassName,\n descriptionClassName,\n}: PageHeaderProps) {\n const strings = useStrings(defaultPageHeaderStrings, stringsProp);\n const backLabel = strings.back;\n const moreActionsLabel = strings.moreActions;\n const resolvedRenderLink = useLayoutLinkRenderer({renderLink});\n const hasBack = !!backHref || !!onBack;\n\tconst defaultBack = hasBack ? (\n\t\t<div className=\"flex items-center gap-space-sm shrink-0\">\n\t\t\t{backHref && !onBack ? (\n\t\t\t\tresolvedRenderLink({\n\t\t\t\t\thref: backHref,\n\t\t\t\t\t'aria-label': backLabel,\n\t\t\t\t\tclassName: cn('page-header--back-link', buttonVariants({tone:'secondary',buttonStyle:'ghost',size:'sm',iconOnly:true})),\n\t\t\t\t\tchildren: (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t\t\t</>\n\t\t\t\t\t),\n\t\t\t\t})\n\t\t\t) : (\n\t\t\t\t<Button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\ttone=\"secondary\"\n\t\t\t\t\tbuttonStyle=\"ghost\"\n\t\t\t\t\tsize=\"sm\" iconOnly\n\t\t\t\t\tclassName=\"page-header--back-button\"\n\t\t\t\t\tonClick={onBack}\n\t\t\t\t\taria-label={backLabel}\n\t\t\t\t>\n\t\t\t\t\t<ArrowLeft className=\"size-icon rtl:rotate-180\" aria-hidden=\"true\" />\n\t\t\t\t</Button>\n\t\t\t)}\n\t\t</div>\n\t) : null;\n const hasPrefix = defaultBack != null;\n const hasCommands = hasPageHeaderCommands(primaryAction, secondaryActions);\n const defaultActions = hasCommands ? <PageHeaderCommands primaryAction={primaryAction} secondaryActions={secondaryActions} maxVisibleSecondaryActions={maxVisibleSecondaryActions} moreActionsLabel={moreActionsLabel} renderLink={resolvedRenderLink} /> : null;\n const actionsRegion = resolveSlot(slots?.actions, {renderLink:resolvedRenderLink, defaultContent:defaultActions});\n const hasActions = actionsRegion != null && actionsRegion !== false;\n const beforeTitle = resolveSlot(slots?.beforeTitle, {renderLink:resolvedRenderLink, defaultContent:null});\n const afterDescription = resolveSlot(slots?.afterDescription, {renderLink:resolvedRenderLink, defaultContent:null});\n const titleSuffix = resolveSlot(slots?.titleSuffix, {renderLink:resolvedRenderLink, defaultContent:null});\n const simpleDescription = typeof description === 'string' || typeof description === 'number' || typeof description === 'bigint';\n const simpleTitle = typeof title === 'string' || typeof title === 'number' || typeof title === 'bigint';\n\n return <header className={cn('layout-page-header--component page-heading--component page-header--component @container/page-header w-full min-w-0', className)}>\n <Stack gap=\"xl\">\n <Stack gap=\"sm\" className={cn('page-header--content-row min-w-0', contentClassName)}>\n {beforeTitle}\n {/* The actions sit beside the copy only while the copy keeps a readable measure\n (12rem beside the compact menu, 24rem once inline commands show at 40rem of\n header width);\n otherwise they wrap below it, so commands never cramp the title. */}\n <div className=\"page-header--headline-row flex min-w-0 flex-wrap items-start gap-x-space-xl gap-y-space-lg\">\n <div className={cn('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', hasPrefix ? 'grid-cols-[auto_minmax(0,1fr)]' : 'grid-cols-1', textGap === 'normal' ? 'gap-y-normal' : 'gap-y-dense')}>\n {hasPrefix && <span className=\"page-header--title-prefix inline-flex shrink-0 items-center self-start\">{defaultBack}</span>}\n <Stack gap={textGap} className=\"page-header--copy-content min-w-0\">\n <Stack direction=\"horizontal\" gap=\"md\" align=\"center\" wrap className=\"page-header--title-line min-w-0\">\n {simpleTitle ? <Heading tag={headingTag} size={headingRoleSizes.route} className={cn('page-header--title min-w-0 [overflow-wrap:anywhere] border-0 pb-0',titleClassName)}>{title}</Heading> : title}\n {titleSuffix}\n </Stack>\n {((description != null && description !== false) || (afterDescription != null && afterDescription !== false)) && <Stack gap=\"dense\" className=\"page-header--title-block min-w-0\">\n {simpleDescription ? <Text {...copyRoleProps.structuralDescription} className={cn('page-header--description max-w-2xl [overflow-wrap:anywhere]',descriptionClassName)}>{description}</Text> : description}\n {afterDescription}\n </Stack>}\n </Stack>\n </div>\n {hasActions && <Stack direction=\"horizontal\" gap=\"md\" className={cn('page-header--actions max-w-full shrink-0 self-start', hasCommands && slots?.actions == null && 'justify-end', actionsClassName)}>{actionsRegion}</Stack>}\n </div>\n </Stack>\n {tabs && tabs.items.length > 0 && <OverflowTabBar items={tabs.items} value={tabs.value} onValueChange={tabs.onValueChange} className=\"page-header--tabs\" strings={{navigationLabel:strings.sections,more:strings.moreSections}} />}\n </Stack>\n </header>;\n}\n","import { forwardRef } from 'react';\n\nimport { ErrorState, LoadingState, Empty, EmptyHeader, EmptyTitle, EmptyDescription } from '../../base/feedback';\nimport { Stack } from '../../base/structure';\nimport { compositionClasses, compositionRhythm } from '../../base/structure/composition.recipes';\nimport { Container, TwoColumnLayout } from '../containers';\nimport { useInlineGutterOwned } from '../containers/inline-gutter-context';\nimport { useStrings } from '../../../lib/strings';\nimport { cn } from '../../../lib/utils';\n\nimport type { PageProps } from './page.types';\nimport { defaultPageStrings } from './page.strings';\nimport { PageHeader } from './partials/page-header';\n\nconst blockPadding = {none: 'py-0', sm: 'py-surface-xs', md: 'py-surface', lg: 'py-surface-lg'} as const;\n\n/** Route containment, header, lifecycle states and optional secondary context, without owning scrolling. */\nexport const Page = forwardRef<HTMLDivElement, PageProps>(function Page({\n header, children, slotProps, slots, renderLink, maxWidth, narrow = false,\n gutter: gutterProp, padding = 'lg', aside, asideRatio = '7/5', stickyAside,\n toolbar, beforeHeader, loading = false, error, onRetry,\n empty = false, emptySlot, strings: stringsProp, className, render,\n ...containerProps\n}, ref) {\n const strings = useStrings(defaultPageStrings, stringsProp);\n // One owner per inline gutter: inside a measure that already draws it, Page adds none unless asked.\n const gutterOwned = useInlineGutterOwned();\n const gutter = gutterProp ?? (gutterOwned ? 'none' : 'lg');\n const {className: bodyClassName, ...bodyProps} = slotProps?.body ?? {};\n const {className: toolbarClassName, ...toolbarProps} = slotProps?.toolbar ?? {};\n const {className: footerClassName, ...footerProps} = slotProps?.footer ?? {};\n const hasAside = aside !== undefined && aside !== null && aside !== false;\n const toolbarNode = toolbar;\n const headerNode = slots?.header ?? (header ? <PageHeader {...header} renderLink={header.renderLink ?? renderLink} /> : null);\n const errorDescription = error instanceof Error ? error.message\n : typeof error === 'string' || typeof error === 'number' ? String(error) : strings.errorDescription;\n const customError = error && typeof error !== 'boolean' && typeof error !== 'string' && typeof error !== 'number' && !(error instanceof Error) ? error : undefined;\n const body = loading ? slots?.loading ?? <LoadingState variant=\"panel\" label={strings.loadingLabel} description={strings.loadingDescription} skeleton lines={4} />\n : error ? slots?.error ?? customError ?? <ErrorState variant=\"panel\" title={strings.errorTitle} description={errorDescription} onRetry={onRetry} retryLabel={strings.retryLabel} />\n : empty ? emptySlot ?? <Empty><EmptyHeader><EmptyTitle>{strings.emptyTitle}</EmptyTitle><EmptyDescription>{strings.emptyDescription}</EmptyDescription></EmptyHeader></Empty>\n : children;\n const bodyNode = body !== undefined && body !== null ? (\n <div {...bodyProps} data-slot=\"page-body\" className={cn('page--body relative flex min-w-0 w-full flex-col', compositionClasses.subjects, bodyClassName)}>\n {body}\n </div>\n ) : null;\n\n return (\n <Container {...containerProps} ref={ref} render={render} maxWidth={maxWidth ?? (narrow ? 'md' : hasAside ? 'xl' : 'lg')}\n gutter={gutter} className={cn('font-sans', blockPadding[padding], className)}>\n <Stack gap={compositionRhythm.page} className=\"page--component\">\n {beforeHeader}\n {headerNode}\n {toolbarNode != null && toolbarNode !== false && <div {...toolbarProps} data-slot=\"page-toolbar\" className={cn('page--toolbar min-w-0', toolbarClassName)}>{toolbarNode}</div>}\n {hasAside ? <TwoColumnLayout adaptTo=\"container\" ratio={asideRatio} stickyAside={stickyAside} main={bodyNode} aside={aside} slotProps={{aside: slotProps?.aside}} /> : bodyNode}\n {slots?.footer != null && slots.footer !== false && <div {...footerProps} data-slot=\"page-footer\" className={cn('page--footer min-w-0', footerClassName)}>{slots.footer}</div>}\n </Stack>\n </Container>\n );\n});\nPage.displayName = 'Page';\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
- import { S as e, a as t, d as n, r } from "./ui-provider-C-74NVLc.js";
3
- import { t as i } from "./utils-DhuoqFy4.js";
4
- import { a, n as o } from "./buttons-DeW0bQeK.js";
5
- import { t as s } from "./focus-recipes-B653VaLq.js";
2
+ import { C as e, f as t, i as n, o as r } from "./ui-provider-Bu1S-o96.js";
3
+ import { t as i } from "./utils-BVbAG2J6.js";
4
+ import { t as a } from "./focus-recipes-DSkiUvUp.js";
5
+ import { a as o, n as s } from "./buttons-pZVgPTZn.js";
6
6
  import { t as c } from "./composition.recipes-COdiFhxB.js";
7
- import { n as l } from "./action-menu-C0gjzLyE.js";
7
+ import { n as l } from "./action-menu-D5343RwT.js";
8
8
  import { useCallback as u, useEffect as d, useRef as f, useState as p } from "react";
9
9
  import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
10
10
  //#region src/components/base/navigation/page-header/page-header-commands.tsx
@@ -37,14 +37,14 @@ function w(e, t) {
37
37
  function T(e) {
38
38
  return e.href && !e.onClick ? e.href : void 0;
39
39
  }
40
- function E({ action: t, role: r, renderLink: s, className: c }) {
41
- let { defaultScale: l } = n(), { tone: u, buttonStyle: d } = w(t, r), f = T(t), p = t.icon, _ = i(`page-header--${r}-action`, c);
42
- return f && !t.disabled && !t.loading ? /* @__PURE__ */ h(m, { children: s({
40
+ function E({ action: n, role: r, renderLink: a, className: c }) {
41
+ let { defaultScale: l } = t(), { tone: u, buttonStyle: d } = w(n, r), f = T(n), p = n.icon, _ = i(`page-header--${r}-action`, c);
42
+ return f && !n.disabled && !n.loading ? /* @__PURE__ */ h(m, { children: a({
43
43
  href: f,
44
- target: t.target,
45
- rel: t.rel,
46
- external: t.external,
47
- className: i("button--component base-button--component", a({
44
+ target: n.target,
45
+ rel: n.rel,
46
+ external: n.external,
47
+ className: i("button--component base-button--component", o({
48
48
  tone: u,
49
49
  buttonStyle: d,
50
50
  size: e(void 0, l)
@@ -52,18 +52,18 @@ function E({ action: t, role: r, renderLink: s, className: c }) {
52
52
  children: /* @__PURE__ */ g(m, { children: [p && /* @__PURE__ */ h(p, {
53
53
  className: "size-icon shrink-0",
54
54
  "aria-hidden": "true"
55
- }), t.label] })
56
- }) }) : /* @__PURE__ */ h(o, {
55
+ }), n.label] })
56
+ }) }) : /* @__PURE__ */ h(s, {
57
57
  type: "button",
58
58
  tone: u,
59
59
  buttonStyle: d,
60
60
  icon: p,
61
- loading: t.loading,
62
- handlesLoading: t.loading !== void 0,
63
- disabled: t.disabled,
64
- onClick: t.onClick,
61
+ loading: n.loading,
62
+ handlesLoading: n.loading !== void 0,
63
+ disabled: n.disabled,
64
+ onClick: n.onClick,
65
65
  className: _,
66
- children: t.label
66
+ children: n.label
67
67
  });
68
68
  }
69
69
  function D({ action: e, key: t }, n) {
@@ -81,8 +81,8 @@ function D({ action: e, key: t }, n) {
81
81
  className: n
82
82
  };
83
83
  }
84
- function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions: a, moreActionsLabel: o, renderLink: m = _ }) {
85
- let { host: C, attachHost: w, context: T } = t(), [O, k] = p(!1), A = f(null), j = f(null), M = u(() => A.current ?? !0, []), N = u((e) => {
84
+ function O({ primaryAction: e, secondaryActions: t, maxVisibleSecondaryActions: o, moreActionsLabel: s, renderLink: m = _ }) {
85
+ let { host: C, attachHost: w, context: T } = r(), [O, k] = p(!1), A = f(null), j = f(null), M = u(() => A.current ?? !0, []), N = u((e) => {
86
86
  e.target instanceof HTMLElement && (j.current = e.target);
87
87
  }, []), P = u((e) => {
88
88
  let t = e.relatedTarget;
@@ -113,15 +113,15 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
113
113
  }, [
114
114
  T.mounted,
115
115
  C,
116
- a,
116
+ o,
117
117
  O,
118
118
  e,
119
- n
119
+ t
120
120
  ]);
121
- let F = (n ?? []).map((e, t) => ({
121
+ let F = (t ?? []).map((e, t) => ({
122
122
  action: e,
123
123
  key: e.id ?? `secondary-${t}`
124
- })).filter(({ action: e }) => x(e)), I = F.filter(({ action: e }) => !e.destructive), L = F.filter(({ action: e }) => e.destructive), R = a === void 0 || Number.isNaN(a) ? 2 : Math.max(0, Math.floor(a)), z = I.slice(0, R), B = I.slice(R), V = x(e) ? e : void 0;
124
+ })).filter(({ action: e }) => x(e)), I = F.filter(({ action: e }) => !e.destructive), L = F.filter(({ action: e }) => e.destructive), R = o === void 0 || Number.isNaN(o) ? 2 : Math.max(0, Math.floor(o)), z = I.slice(0, R), B = I.slice(R), V = x(e) ? e : void 0;
125
125
  if (!V && F.length === 0) return null;
126
126
  let H = V ? {
127
127
  action: V,
@@ -142,7 +142,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
142
142
  groupClassName: B.length > 0 && L.length > 0 ? void 0 : y
143
143
  }))
144
144
  ], G = B.length === 0 && L.length === 0;
145
- return /* @__PURE__ */ h(r, {
145
+ return /* @__PURE__ */ h(n, {
146
146
  value: T,
147
147
  children: /* @__PURE__ */ g("div", {
148
148
  ref: w,
@@ -150,7 +150,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
150
150
  onBlurCapture: P,
151
151
  tabIndex: -1,
152
152
  "data-slot": "page-header-commands",
153
- className: i("page-header--commands flex min-w-0 max-w-full flex-wrap items-center justify-end outline-none", c.commands, s.inset),
153
+ className: i("page-header--commands flex min-w-0 max-w-full flex-wrap items-center justify-end outline-none", c.commands, a.inset),
154
154
  children: [
155
155
  z.map((e) => /* @__PURE__ */ h(E, {
156
156
  action: e.action,
@@ -172,7 +172,7 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
172
172
  finalFocus: A.current ? M : void 0,
173
173
  actions: W,
174
174
  context: "commands",
175
- srText: o,
175
+ srText: s,
176
176
  align: "end",
177
177
  closeOnSelect: !0,
178
178
  preserveOrder: !0,
@@ -190,4 +190,4 @@ function O({ primaryAction: e, secondaryActions: n, maxVisibleSecondaryActions:
190
190
  //#endregion
191
191
  export { C as n, O as t };
192
192
 
193
- //# sourceMappingURL=page-header-commands-DIKspJfx.js.map
193
+ //# sourceMappingURL=page-header-commands-elelNOfd.js.map