themelia-react-ui 1.0.2 → 2.0.1

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 (748) hide show
  1. package/CHANGELOG.md +632 -1
  2. package/README.md +31 -13
  3. package/dist/accordion-B6a3vVgA.js +207 -0
  4. package/dist/accordion-B6a3vVgA.js.map +1 -0
  5. package/dist/action-menu-TzCoSlwL.js +280 -0
  6. package/dist/action-menu-TzCoSlwL.js.map +1 -0
  7. package/dist/{affordance-geometry.generated-CL84ZN9A.js → affordance-geometry.generated-B5iu-Mkr.js} +9 -3
  8. package/dist/affordance-geometry.generated-B5iu-Mkr.js.map +1 -0
  9. package/dist/{ai-artifact-DLVdK0Py.js → ai-artifact-BMJdv-6q.js} +389 -391
  10. package/dist/ai-artifact-BMJdv-6q.js.map +1 -0
  11. package/dist/{app-shell-C_fKpljx.js → app-shell-ZK5RWdo6.js} +4 -4
  12. package/dist/{app-shell-C_fKpljx.js.map → app-shell-ZK5RWdo6.js.map} +1 -1
  13. package/dist/attachment-BtfhGm8i.js +245 -0
  14. package/dist/attachment-BtfhGm8i.js.map +1 -0
  15. package/dist/{auth-CAQcasMV.js → auth-CYxKfo69.js} +239 -237
  16. package/dist/auth-CYxKfo69.js.map +1 -0
  17. package/dist/{avatar-Bu2HhitA.js → avatar-BBnEJIx8.js} +71 -68
  18. package/dist/avatar-BBnEJIx8.js.map +1 -0
  19. package/dist/badge-MrKVNzW9.js +93 -0
  20. package/dist/badge-MrKVNzW9.js.map +1 -0
  21. package/dist/base/accordion.js +1 -1
  22. package/dist/base/action-menu.js +1 -1
  23. package/dist/base/attachment.js +1 -1
  24. package/dist/base/avatar.js +1 -1
  25. package/dist/base/badge.js +1 -1
  26. package/dist/base/batch-action-bar.js +3 -0
  27. package/dist/base/buttons.js +2 -3
  28. package/dist/base/cards.js +2 -2
  29. package/dist/base/carousel.js +19 -19
  30. package/dist/base/carousel.js.map +1 -1
  31. package/dist/base/cascader.js +234 -224
  32. package/dist/base/cascader.js.map +1 -1
  33. package/dist/base/chart.js +1 -1
  34. package/dist/base/choice-inputs.js +3 -3
  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 +3 -3
  42. package/dist/base/forms-numeric.js +1 -1
  43. package/dist/base/forms.js +2 -2
  44. package/dist/base/inline-edit.js +81 -76
  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 +1 -1
  48. package/dist/base/metadata-list.js +3 -0
  49. package/dist/base/navigation.js +7 -7
  50. package/dist/base/popover-menu.js +1 -1
  51. package/dist/base/popover.js +1 -1
  52. package/dist/base/qr-code.js +7 -4
  53. package/dist/base/qr-code.js.map +1 -1
  54. package/dist/base/repeaters.js +175 -174
  55. package/dist/base/repeaters.js.map +1 -1
  56. package/dist/base/sheet.js +1 -1
  57. package/dist/base/sidebar.js +1 -1
  58. package/dist/base/signature-pad.js +148 -138
  59. package/dist/base/signature-pad.js.map +1 -1
  60. package/dist/base/skeleton.js +1 -1
  61. package/dist/base/spinner.js +1 -1
  62. package/dist/base/structure.js +1 -1
  63. package/dist/base/table.js +1 -1
  64. package/dist/base/text-inputs.js +2 -2
  65. package/dist/base/toaster.js +4 -4
  66. package/dist/base/toaster.js.map +1 -1
  67. package/dist/base/tree.js +1 -1
  68. package/dist/base/upload-queue.js +1 -1
  69. package/dist/base/upload.js +3 -3
  70. package/dist/base/value-inputs.js +2 -2
  71. package/dist/batch-action-bar-BZGDG-Si.js +104 -0
  72. package/dist/batch-action-bar-BZGDG-Si.js.map +1 -0
  73. package/dist/blocks/admin.js +264 -253
  74. package/dist/blocks/admin.js.map +1 -1
  75. package/dist/blocks/ai.js +293 -323
  76. package/dist/blocks/ai.js.map +1 -1
  77. package/dist/blocks/analytics/usage-card.js +1 -1
  78. package/dist/blocks/analytics.js +596 -587
  79. package/dist/blocks/analytics.js.map +1 -1
  80. package/dist/blocks/collaboration.js +1 -1
  81. package/dist/blocks/commerce/receipt.js +1 -1
  82. package/dist/blocks/commerce.js +2246 -1693
  83. package/dist/blocks/commerce.js.map +1 -1
  84. package/dist/blocks/data-display.js +3 -2
  85. package/dist/blocks/onboarding.js +50 -49
  86. package/dist/blocks/onboarding.js.map +1 -1
  87. package/dist/blocks/planning.js +82 -91
  88. package/dist/blocks/planning.js.map +1 -1
  89. package/dist/blocks/timelines.js +1 -1
  90. package/dist/breadcrumbs-D5t7I023.js +129 -0
  91. package/dist/breadcrumbs-D5t7I023.js.map +1 -0
  92. package/dist/{button-BZyfTvwm.js → button-QYwiyhD2.js} +15 -14
  93. package/dist/button-QYwiyhD2.js.map +1 -0
  94. package/dist/buttons-SbIcm1HJ.js +661 -0
  95. package/dist/buttons-SbIcm1HJ.js.map +1 -0
  96. package/dist/{cards-qGSErLw_.js → cards-CiiHpKYd.js} +8 -8
  97. package/dist/cards-CiiHpKYd.js.map +1 -0
  98. package/dist/{chart-Bsc5BICK.js → chart-QfrARkXl.js} +17 -15
  99. package/dist/chart-QfrARkXl.js.map +1 -0
  100. package/dist/checkbox-DhB6K0bK.js +36 -0
  101. package/dist/checkbox-DhB6K0bK.js.map +1 -0
  102. package/dist/choice-inputs-t6w3ATNz.js +766 -0
  103. package/dist/choice-inputs-t6w3ATNz.js.map +1 -0
  104. package/dist/code-block-Dgbu-CU3.js +185 -0
  105. package/dist/code-block-Dgbu-CU3.js.map +1 -0
  106. package/dist/{collapsible-ClvC7Bj3.js → collapsible-D8AEGU1-.js} +4 -4
  107. package/dist/{collapsible-ClvC7Bj3.js.map → collapsible-D8AEGU1-.js.map} +1 -1
  108. package/dist/{collection-content-D6S8cv_n.js → collection-content-uK16Grv0.js} +3 -3
  109. package/dist/{collection-content-D6S8cv_n.js.map → collection-content-uK16Grv0.js.map} +1 -1
  110. package/dist/{combobox-BFnbJJp3.js → combobox-2Ic8N9bL.js} +103 -98
  111. package/dist/combobox-2Ic8N9bL.js.map +1 -0
  112. package/dist/combobox-DLl0bfiq.js +867 -0
  113. package/dist/combobox-DLl0bfiq.js.map +1 -0
  114. package/dist/{command-BnmSchli.js → command-kNR20o7x.js} +34 -30
  115. package/dist/command-kNR20o7x.js.map +1 -0
  116. package/dist/{comments-u5L0OGip.js → comments-BpDuCUUu.js} +304 -301
  117. package/dist/comments-BpDuCUUu.js.map +1 -0
  118. package/dist/components/base/accordion/accordion-variants.d.ts +3 -3
  119. package/dist/components/base/action-menu/action-menu.d.ts +27 -5
  120. package/dist/components/base/action-menu/action-menu.recipes.d.ts +21 -0
  121. package/dist/components/base/action-menu/index.d.ts +1 -0
  122. package/dist/components/base/avatar/stacked-avatars.d.ts +5 -4
  123. package/dist/components/base/badge/badge.d.ts +1 -1
  124. package/dist/components/base/badge/badge.recipes.d.ts +6 -6
  125. package/dist/components/base/batch-action-bar/batch-action-bar.d.ts +50 -0
  126. package/dist/components/base/batch-action-bar/batch-action-bar.strings.d.ts +20 -0
  127. package/dist/components/base/batch-action-bar/index.d.ts +8 -0
  128. package/dist/components/base/buttons/base-button.d.ts +7 -0
  129. package/dist/components/base/buttons/button-group.recipes.d.ts +2 -2
  130. package/dist/components/base/buttons/button.recipes.d.ts +2 -2
  131. package/dist/components/base/buttons/button.variants.d.ts +1 -0
  132. package/dist/components/base/buttons/loader-button.d.ts +3 -1
  133. package/dist/components/base/buttons/text-button.d.ts +2 -2
  134. package/dist/components/base/carousel/carousel.d.ts +3 -1
  135. package/dist/components/base/chart/chart.d.ts +7 -7
  136. package/dist/components/base/choice-inputs/checkbox.d.ts +6 -7
  137. package/dist/components/base/choice-inputs/choice-types.d.ts +24 -3
  138. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +9 -0
  139. package/dist/components/base/choice-inputs/select-popup.d.ts +9 -1
  140. package/dist/components/base/choice-inputs/switch-card.d.ts +1 -1
  141. package/dist/components/base/date-pickers/date-picker-field.d.ts +23 -0
  142. package/dist/components/base/date-pickers/datepicker.types.d.ts +13 -3
  143. package/dist/components/base/display/alert-dialog.d.ts +10 -3
  144. package/dist/components/base/display/content-block.d.ts +4 -2
  145. package/dist/components/base/display/date-block.d.ts +1 -1
  146. package/dist/components/base/display/dialog.d.ts +8 -5
  147. package/dist/components/base/display/icon-badge/icon-badge.d.ts +1 -1
  148. package/dist/components/base/display/surface-title.d.ts +6 -1
  149. package/dist/components/base/feedback/alert.d.ts +1 -1
  150. package/dist/components/base/feedback/state-display.d.ts +5 -4
  151. package/dist/components/base/forms/form-sizing.d.ts +43 -8
  152. package/dist/components/base/forms/workflow.d.ts +2 -0
  153. package/dist/components/base/forms-numeric/coordinates-input.d.ts +3 -0
  154. package/dist/components/base/forms-numeric/rounding-mode-select.d.ts +4 -1
  155. package/dist/components/base/metadata-list/index.d.ts +12 -0
  156. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.d.ts +28 -25
  157. package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-value.d.ts +2 -2
  158. package/dist/components/base/navigation/dropdown-menu.d.ts +2 -2
  159. package/dist/components/base/navigation/index.d.ts +1 -1
  160. package/dist/components/base/navigation/language-switcher.d.ts +4 -1
  161. package/dist/components/base/navigation/overflow-tab-bar.d.ts +7 -0
  162. package/dist/components/base/navigation/page-header/index.d.ts +1 -0
  163. package/dist/components/base/navigation/page-header/page-header-commands.d.ts +73 -0
  164. package/dist/components/base/navigation/page-header/page-header.d.ts +30 -4
  165. package/dist/components/base/qr-code/qr-code.d.ts +2 -0
  166. package/dist/components/base/sheet/index.d.ts +29 -1
  167. package/dist/components/base/sheet/sheet.d.ts +10 -5
  168. package/dist/components/base/signature-pad/signature-pad.types.d.ts +5 -1
  169. package/dist/components/base/signature-pad/signature-pad.utils.d.ts +11 -3
  170. package/dist/components/base/spinner/spinner.d.ts +3 -2
  171. package/dist/components/base/structure/structure.types.d.ts +1 -1
  172. package/dist/components/base/text-inputs/field-clear-button.d.ts +6 -0
  173. package/dist/components/base/text-inputs/input-group.d.ts +2 -2
  174. package/dist/components/base/upload/upload.recipes.d.ts +33 -0
  175. package/dist/components/base/value-inputs/date-time-input.d.ts +4 -2
  176. package/dist/components/base/value-inputs/index.d.ts +5 -5
  177. package/dist/components/base/value-inputs/tags-input.d.ts +38 -12
  178. package/dist/components/blocks/admin/api-key-list/api-key-list.types.d.ts +1 -1
  179. package/dist/components/blocks/analytics/format-metric-value.d.ts +11 -1
  180. package/dist/components/blocks/analytics/index.d.ts +1 -1
  181. package/dist/components/blocks/analytics/use-metric-format-options.d.ts +3 -0
  182. package/dist/components/blocks/commerce/address-card/address-card.d.ts +1 -1
  183. package/dist/components/blocks/commerce/address-card/types.d.ts +4 -1
  184. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.d.ts +4 -0
  185. package/dist/components/blocks/commerce/booking-calendar-event-card/booking-calendar-event-card.types.d.ts +2 -2
  186. package/dist/components/blocks/commerce/cart-summary/cart-summary.d.ts +3 -1
  187. package/dist/components/blocks/commerce/cart-summary/index.d.ts +2 -2
  188. package/dist/components/blocks/commerce/cart-summary/types.d.ts +6 -1
  189. package/dist/components/blocks/commerce/discount-stack/discount-stack.d.ts +3 -1
  190. package/dist/components/blocks/commerce/discount-stack/index.d.ts +2 -2
  191. package/dist/components/blocks/commerce/discount-stack/types.d.ts +16 -4
  192. package/dist/components/blocks/commerce/fulfillment-group/fulfillment-group.d.ts +5 -0
  193. package/dist/components/blocks/commerce/fulfillment-group/index.d.ts +2 -0
  194. package/dist/components/blocks/commerce/fulfillment-group/types.d.ts +43 -0
  195. package/dist/components/blocks/commerce/index.d.ts +13 -5
  196. package/dist/components/blocks/commerce/inventory-section/types.d.ts +4 -1
  197. package/dist/components/blocks/commerce/invoice-header/invoice-header.d.ts +1 -1
  198. package/dist/components/blocks/commerce/invoice-header/types.d.ts +4 -2
  199. package/dist/components/blocks/commerce/invoice-mini/invoice-mini.d.ts +1 -1
  200. package/dist/components/blocks/commerce/invoice-mini/types.d.ts +2 -1
  201. package/dist/components/blocks/commerce/loyalty-points/types.d.ts +1 -1
  202. package/dist/components/blocks/commerce/order-customer/index.d.ts +2 -0
  203. package/dist/components/blocks/commerce/order-customer/order-customer.d.ts +5 -0
  204. package/dist/components/blocks/commerce/order-customer/types.d.ts +48 -0
  205. package/dist/components/blocks/commerce/order-header/index.d.ts +2 -0
  206. package/dist/components/blocks/commerce/order-header/order-header.d.ts +5 -0
  207. package/dist/components/blocks/commerce/order-header/types.d.ts +37 -0
  208. package/dist/components/blocks/commerce/order-line-item/index.d.ts +2 -0
  209. package/dist/components/blocks/commerce/order-line-item/order-line-item.d.ts +5 -0
  210. package/dist/components/blocks/commerce/order-line-item/types.d.ts +46 -0
  211. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  212. package/dist/components/blocks/commerce/order-summary/index.d.ts +2 -0
  213. package/dist/components/blocks/commerce/order-summary/order-summary.d.ts +5 -0
  214. package/dist/components/blocks/commerce/order-summary/types.d.ts +42 -0
  215. package/dist/components/blocks/commerce/order-transactions/index.d.ts +2 -0
  216. package/dist/components/blocks/commerce/order-transactions/order-transactions.d.ts +5 -0
  217. package/dist/components/blocks/commerce/order-transactions/types.d.ts +46 -0
  218. package/dist/components/blocks/commerce/payment-method/index.d.ts +2 -2
  219. package/dist/components/blocks/commerce/payment-method/payment-method.d.ts +9 -1
  220. package/dist/components/blocks/commerce/payment-method/types.d.ts +14 -1
  221. package/dist/components/blocks/commerce/refund-status/index.d.ts +2 -2
  222. package/dist/components/blocks/commerce/refund-status/refund-status.d.ts +3 -1
  223. package/dist/components/blocks/commerce/refund-status/types.d.ts +6 -3
  224. package/dist/components/blocks/commerce/seo-listing/seo-listing-card.d.ts +1 -1
  225. package/dist/components/blocks/commerce/seo-listing/types.d.ts +3 -1
  226. package/dist/components/blocks/commerce/shared/address-lines.d.ts +21 -0
  227. package/dist/components/blocks/commerce/shared/line-thumbnail.d.ts +9 -0
  228. package/dist/components/blocks/commerce/shared/order-status.d.ts +51 -0
  229. package/dist/components/blocks/commerce/shipment-tracking/shipment-tracking.d.ts +1 -1
  230. package/dist/components/blocks/commerce/shipment-tracking/types.d.ts +27 -6
  231. package/dist/components/blocks/commerce/summary-panel/amount-row.d.ts +2 -0
  232. package/dist/components/blocks/commerce/summary-panel/index.d.ts +3 -0
  233. package/dist/components/blocks/commerce/summary-panel/summary-panel.d.ts +2 -0
  234. package/dist/components/blocks/commerce/summary-panel/types.d.ts +26 -0
  235. package/dist/components/blocks/commerce/tax-breakdown/tax-breakdown.d.ts +1 -1
  236. package/dist/components/blocks/commerce/tax-breakdown/types.d.ts +2 -1
  237. package/dist/components/blocks/commerce/vendor-profile/types.d.ts +4 -1
  238. package/dist/components/blocks/data-display/dense-info-card/dense-info.strings.d.ts +4 -1
  239. package/dist/components/blocks/data-display/inline-stat/inline-stat.d.ts +4 -1
  240. package/dist/components/blocks/data-display/metadata/index.d.ts +30 -4
  241. package/dist/components/features/activities/partials/activity-row.d.ts +6 -2
  242. package/dist/components/features/activities/partials/tone-tokens.d.ts +0 -6
  243. package/dist/components/features/global-search/partials/global-search-group-heading.d.ts +15 -0
  244. package/dist/components/features/global-search/partials/global-search-idle-state.d.ts +1 -1
  245. package/dist/components/features/global-search/partials/tone-palettes.d.ts +0 -5
  246. package/dist/components/features/kanban/kanban.d.ts +1 -1
  247. package/dist/components/features/kanban/kanban.strings.d.ts +1 -1
  248. package/dist/components/features/kanban/kanban.types.d.ts +2 -2
  249. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  250. package/dist/components/features/media-library/index.d.ts +1 -1
  251. package/dist/components/features/media-library/media-library.d.ts +1 -1
  252. package/dist/components/features/media-library/media-library.strings.d.ts +4 -0
  253. package/dist/components/features/media-library/media-library.types.d.ts +74 -1
  254. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  255. package/dist/components/features/mentions/partials/mention-kind-toggles.d.ts +16 -0
  256. package/dist/components/features/overlays/alert-dialog.d.ts +1 -1
  257. package/dist/components/features/overlays/dialog.d.ts +1 -1
  258. package/dist/components/features/overlays/drawer.d.ts +1 -1
  259. package/dist/components/features/overlays/hooks/use-overlay-actions.d.ts +2 -2
  260. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +11 -4
  261. package/dist/components/features/overlays/index.d.ts +1 -1
  262. package/dist/components/features/overlays/overlay-tone-icon.d.ts +37 -0
  263. package/dist/components/features/overlays/overlays.types.d.ts +62 -19
  264. package/dist/components/features/products/components/product-contract-overview.d.ts +5 -0
  265. package/dist/components/features/products/components/product-details-card.d.ts +5 -0
  266. package/dist/components/features/products/components/product-operations-card.d.ts +5 -0
  267. package/dist/components/features/products/components/product-option-action-menu.d.ts +5 -0
  268. package/dist/components/features/products/components/product-options-summary.d.ts +5 -0
  269. package/dist/components/features/products/components/product-policies-card.d.ts +5 -0
  270. package/dist/components/features/products/components/product-quote-preview-card.d.ts +5 -0
  271. package/dist/components/features/products/components/product-readiness-card.d.ts +5 -0
  272. package/dist/components/features/products/components/product-structure-card.d.ts +5 -0
  273. package/dist/components/features/products/components/product-variant-action-menu.d.ts +23 -1
  274. package/dist/components/features/products/components/product-variants-manager.d.ts +1 -1
  275. package/dist/components/features/products/partials/index.d.ts +1 -1
  276. package/dist/components/features/products/partials/product-metric-tile.d.ts +6 -0
  277. package/dist/components/features/products/partials/product-tone.d.ts +11 -1
  278. package/dist/components/features/products/products.types.d.ts +11 -3
  279. package/dist/components/features/resource/index.d.ts +1 -1
  280. package/dist/components/features/resource/resource.d.ts +1 -1
  281. package/dist/components/features/resource/resource.types.d.ts +34 -6
  282. package/dist/components/features/rich-text-editor/index.d.ts +2 -1
  283. package/dist/components/features/rich-text-editor/partials/image-nodes.d.ts +13 -0
  284. package/dist/components/features/rich-text-editor/partials/image-uploads.d.ts +66 -0
  285. package/dist/components/features/rich-text-editor/partials/inline-reference-node.d.ts +19 -0
  286. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  287. package/dist/components/features/rich-text-editor/rich-text-editor.strings.d.ts +14 -0
  288. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +45 -0
  289. package/dist/components/features/rich-text-editor/use-rich-text-images.d.ts +18 -0
  290. package/dist/components/features/sync/index.d.ts +26 -3
  291. package/dist/components/features/table/data-table.d.ts +1 -1
  292. package/dist/components/features/table/partials/cell-renderers.d.ts +1 -1
  293. package/dist/components/features/table/table.types.d.ts +32 -7
  294. package/dist/components/layout/page/index.d.ts +1 -1
  295. package/dist/components/layout/page/page.types.d.ts +51 -4
  296. package/dist/components/layout/page/partials/page-actions.d.ts +1 -0
  297. package/dist/components/layout/page/partials/page-header.d.ts +1 -1
  298. package/dist/components/layout/settings/settings.d.ts +16 -2
  299. package/dist/components/layout/workspace/workspace.types.d.ts +21 -4
  300. package/dist/components/primitives/date.d.ts +16 -3
  301. package/dist/components/primitives/dimensions.d.ts +6 -0
  302. package/dist/components/primitives/duration.d.ts +6 -0
  303. package/dist/components/primitives/file-size.d.ts +6 -0
  304. package/dist/components/primitives/index.d.ts +1 -1
  305. package/dist/components/primitives/initials.d.ts +11 -2
  306. package/dist/components/primitives/link.d.ts +7 -0
  307. package/dist/components/primitives/money.d.ts +29 -7
  308. package/dist/components/primitives/number.d.ts +17 -0
  309. package/dist/components/primitives/value-typography.d.ts +54 -0
  310. package/dist/components/primitives/value.d.ts +31 -6
  311. package/dist/components/typography/heading.d.ts +9 -1
  312. package/dist/components/typography/label.d.ts +3 -0
  313. package/dist/components/typography/rich-text/index.d.ts +1 -1
  314. package/dist/components/typography/rich-text/rich-text-tree.d.ts +19 -0
  315. package/dist/components/typography/rich-text/rich-text.d.ts +16 -0
  316. package/dist/components/typography/running-text.d.ts +12 -0
  317. package/dist/components/typography/text-link.d.ts +24 -1
  318. package/dist/components/typography/text.d.ts +12 -0
  319. package/dist/components/typography/text.styles.d.ts +35 -13
  320. package/dist/components/ui/button.d.ts +1 -1
  321. package/dist/components/ui/checkbox.d.ts +6 -0
  322. package/dist/components/ui/overlay.recipes.d.ts +6 -2
  323. package/dist/components/ui/select.d.ts +3 -1
  324. package/dist/components/ui/switch.d.ts +5 -0
  325. package/dist/{containers-DqB-bSYE.js → containers-DmWiJa2I.js} +36 -35
  326. package/dist/containers-DmWiJa2I.js.map +1 -0
  327. package/dist/{copyable-BTSByfmq.js → copyable-B3Gwgdqc.js} +6 -6
  328. package/dist/{copyable-BTSByfmq.js.map → copyable-B3Gwgdqc.js.map} +1 -1
  329. package/dist/data-display-DafIvCl5.js +960 -0
  330. package/dist/data-display-DafIvCl5.js.map +1 -0
  331. package/dist/date-BgK3bTdo.js +144 -0
  332. package/dist/date-BgK3bTdo.js.map +1 -0
  333. package/dist/date-picker-CF-DtUpF.js +1529 -0
  334. package/dist/date-picker-CF-DtUpF.js.map +1 -0
  335. package/dist/date-pickers-BmzxJl5l.js +174 -0
  336. package/dist/date-pickers-BmzxJl5l.js.map +1 -0
  337. package/dist/{display-CS6Hbk18.js → display-DsQTVzMz.js} +88 -87
  338. package/dist/display-DsQTVzMz.js.map +1 -0
  339. package/dist/{dropdown-menu-D-boNgGO.js → dropdown-menu-E2qmdC7o.js} +23 -16
  340. package/dist/dropdown-menu-E2qmdC7o.js.map +1 -0
  341. package/dist/features/activities.js +437 -521
  342. package/dist/features/activities.js.map +1 -1
  343. package/dist/features/ai-chat.js +174 -172
  344. package/dist/features/ai-chat.js.map +1 -1
  345. package/dist/features/async-preview.js +8 -8
  346. package/dist/features/async-preview.js.map +1 -1
  347. package/dist/features/combobox.js +1 -1
  348. package/dist/features/comments.js +1 -1
  349. package/dist/features/data-view.js +139 -138
  350. package/dist/features/data-view.js.map +1 -1
  351. package/dist/features/email-composer/engine.js +1 -1
  352. package/dist/features/email-composer.js +353 -352
  353. package/dist/features/email-composer.js.map +1 -1
  354. package/dist/features/event-calendar.js +262 -269
  355. package/dist/features/event-calendar.js.map +1 -1
  356. package/dist/features/filters.js +1 -1
  357. package/dist/features/global-search.js +307 -310
  358. package/dist/features/global-search.js.map +1 -1
  359. package/dist/features/kanban.js +95 -97
  360. package/dist/features/kanban.js.map +1 -1
  361. package/dist/features/map.js +56 -57
  362. package/dist/features/map.js.map +1 -1
  363. package/dist/features/media-library.js +914 -824
  364. package/dist/features/media-library.js.map +1 -1
  365. package/dist/features/mentions.js +1 -1
  366. package/dist/features/overlays.js +1 -1
  367. package/dist/features/products.js +1272 -1311
  368. package/dist/features/products.js.map +1 -1
  369. package/dist/features/questionnaire.js +204 -194
  370. package/dist/features/questionnaire.js.map +1 -1
  371. package/dist/features/resource-assignment.js +103 -95
  372. package/dist/features/resource-assignment.js.map +1 -1
  373. package/dist/features/resource.js +77 -69
  374. package/dist/features/resource.js.map +1 -1
  375. package/dist/features/rich-text-editor.js +30 -11
  376. package/dist/features/rich-text-editor.js.map +1 -1
  377. package/dist/features/schema-form.js +193 -189
  378. package/dist/features/schema-form.js.map +1 -1
  379. package/dist/features/suggestions.js +3 -3
  380. package/dist/features/sync.js +7 -7
  381. package/dist/features/sync.js.map +1 -1
  382. package/dist/features/table.js +1 -1
  383. package/dist/features/theme-tweaker.js +455 -455
  384. package/dist/features/theme-tweaker.js.map +1 -1
  385. package/dist/feedback-qNuMBtRH.js +233 -0
  386. package/dist/feedback-qNuMBtRH.js.map +1 -0
  387. package/dist/field-affordance-recipes-qQeIf4lG.js +48 -0
  388. package/dist/field-affordance-recipes-qQeIf4lG.js.map +1 -0
  389. package/dist/field-state-recipes-BVA2CWHo.js +12 -0
  390. package/dist/field-state-recipes-BVA2CWHo.js.map +1 -0
  391. package/dist/{filters-D6FF8L6s.js → filters-BkHH53uv.js} +414 -412
  392. package/dist/filters-BkHH53uv.js.map +1 -0
  393. package/dist/focus-recipes-B653VaLq.js +12 -0
  394. package/dist/focus-recipes-B653VaLq.js.map +1 -0
  395. package/dist/{form-field-CZwrkP7m.js → form-field-DUt4UxSV.js} +7 -7
  396. package/dist/{form-field-CZwrkP7m.js.map → form-field-DUt4UxSV.js.map} +1 -1
  397. package/dist/form-sizing-By94KzXE.js +130 -0
  398. package/dist/form-sizing-By94KzXE.js.map +1 -0
  399. package/dist/{forms-B5NCbkSC.js → forms-Bzha-Y3B.js} +25 -25
  400. package/dist/forms-Bzha-Y3B.js.map +1 -0
  401. package/dist/forms-numeric-C0bvjRPZ.js +906 -0
  402. package/dist/forms-numeric-C0bvjRPZ.js.map +1 -0
  403. package/dist/{header-kxruN3RM.js → header-BOefOKd1.js} +38 -41
  404. package/dist/header-BOefOKd1.js.map +1 -0
  405. package/dist/{hooks-BrlnCwQd.js → hooks-9k_TtmKh.js} +2 -2
  406. package/dist/{hooks-BrlnCwQd.js.map → hooks-9k_TtmKh.js.map} +1 -1
  407. package/dist/{http-CdEIHyQf.js → http-D_6rOnzU.js} +2 -2
  408. package/dist/{http-CdEIHyQf.js.map → http-D_6rOnzU.js.map} +1 -1
  409. package/dist/icon-badge-CAuKupo9.js +55 -0
  410. package/dist/icon-badge-CAuKupo9.js.map +1 -0
  411. package/dist/index.js +7 -7
  412. package/dist/input-DWhBBBww.js +262 -0
  413. package/dist/input-DWhBBBww.js.map +1 -0
  414. package/dist/{input-vxcaNCYC.js → input-Ddi_LSYv.js} +3 -3
  415. package/dist/{input-vxcaNCYC.js.map → input-Ddi_LSYv.js.map} +1 -1
  416. package/dist/interaction-recipes-CHr0dJUs.js +24 -0
  417. package/dist/interaction-recipes-CHr0dJUs.js.map +1 -0
  418. package/dist/item-DEmDiTlD.js +265 -0
  419. package/dist/item-DEmDiTlD.js.map +1 -0
  420. package/dist/layer-recipes-CCpklYME.js +13 -0
  421. package/dist/layer-recipes-CCpklYME.js.map +1 -0
  422. package/dist/layout/app-shell.js +1 -1
  423. package/dist/layout/auth.js +1 -1
  424. package/dist/layout/containers.js +1 -1
  425. package/dist/layout/header.js +1 -1
  426. package/dist/layout/hooks.js +1 -1
  427. package/dist/layout/navigation.js +1 -1
  428. package/dist/layout/page.js +1 -1
  429. package/dist/layout/settings.js +1 -1
  430. package/dist/layout/sidebar.js +2 -2
  431. package/dist/layout/workspace.js +1 -1
  432. package/dist/layout.js +10 -10
  433. package/dist/lib/affordance-geometry.generated.d.ts +7 -1
  434. package/dist/lib/field-affordance-recipes.d.ts +41 -1
  435. package/dist/lib/field-state-recipes.d.ts +9 -6
  436. package/dist/lib/focus-recipes.d.ts +24 -0
  437. package/dist/lib/format.d.ts +9 -0
  438. package/dist/lib/interaction-recipes.d.ts +35 -0
  439. package/dist/lib/layer-recipes.d.ts +19 -0
  440. package/dist/lib/money-format.d.ts +30 -0
  441. package/dist/lib/motion-recipes.d.ts +1 -0
  442. package/dist/lib/overlay-anatomy-recipes.d.ts +2 -1
  443. package/dist/lib/safe-image-src.d.ts +10 -0
  444. package/dist/lib/sanitize-html.d.ts +15 -3
  445. package/dist/lib/surface-recipes.d.ts +48 -6
  446. package/dist/lib/token-merge.generated.d.ts +17 -14
  447. package/dist/lib/tone-recipes.d.ts +79 -0
  448. package/dist/lib/track-recipes.d.ts +1 -1
  449. package/dist/lib/ui-provider/hooks.d.ts +2 -1
  450. package/dist/lib/ui-provider/index.d.ts +2 -2
  451. package/dist/lib/ui-provider/provider.d.ts +7 -2
  452. package/dist/lib/ui-provider/store.d.ts +6 -2
  453. package/dist/lib/ui-provider/types.d.ts +14 -2
  454. package/dist/lib/utils.js +1 -1
  455. package/dist/media-gallery-DcTtAaeC.js +203 -0
  456. package/dist/media-gallery-DcTtAaeC.js.map +1 -0
  457. package/dist/mentions-D-uyCh01.js +568 -0
  458. package/dist/mentions-D-uyCh01.js.map +1 -0
  459. package/dist/{message-SZUNB1eX.js → message-CdHgIWKf.js} +5 -5
  460. package/dist/{message-SZUNB1eX.js.map → message-CdHgIWKf.js.map} +1 -1
  461. package/dist/metadata-list-X5rYAKSB.js +394 -0
  462. package/dist/metadata-list-X5rYAKSB.js.map +1 -0
  463. package/dist/{motion-recipes-B6jKXEcN.js → motion-recipes-ChBg4HBq.js} +3 -2
  464. package/dist/{motion-recipes-B6jKXEcN.js.map → motion-recipes-ChBg4HBq.js.map} +1 -1
  465. package/dist/navigation-D3KwXmaq.js +145 -0
  466. package/dist/navigation-D3KwXmaq.js.map +1 -0
  467. package/dist/navigation-HJf5zxlH.js +268 -0
  468. package/dist/navigation-HJf5zxlH.js.map +1 -0
  469. package/dist/{navigation-row-recipes-DQEXQcqY.js → navigation-row-recipes-BVowojQw.js} +2 -2
  470. package/dist/{navigation-row-recipes-DQEXQcqY.js.map → navigation-row-recipes-BVowojQw.js.map} +1 -1
  471. package/dist/number-DMhe-Vsk.js +352 -0
  472. package/dist/number-DMhe-Vsk.js.map +1 -0
  473. package/dist/overflow-tab-bar-sQHXLlwQ.js +280 -0
  474. package/dist/overflow-tab-bar-sQHXLlwQ.js.map +1 -0
  475. package/dist/overlay.recipes-8GHqmlb4.js +6 -0
  476. package/dist/overlay.recipes-8GHqmlb4.js.map +1 -0
  477. package/dist/overlays-I0axtYA6.js +999 -0
  478. package/dist/overlays-I0axtYA6.js.map +1 -0
  479. package/dist/{page-hGmT4nWK.js → page-B5dTH9gE.js} +79 -68
  480. package/dist/page-B5dTH9gE.js.map +1 -0
  481. package/dist/page-header-commands-DjzFEq3E.js +126 -0
  482. package/dist/page-header-commands-DjzFEq3E.js.map +1 -0
  483. package/dist/{pagination-NLGqRirf.js → pagination-3bPA_a6K.js} +19 -19
  484. package/dist/{pagination-NLGqRirf.js.map → pagination-3bPA_a6K.js.map} +1 -1
  485. package/dist/{popover-CghIYdQf.js → popover-Di55PyAI.js} +8 -8
  486. package/dist/popover-Di55PyAI.js.map +1 -0
  487. package/dist/{popover-menu-B4PoWhRl.js → popover-menu-B71Tn2Qz.js} +6 -6
  488. package/dist/{popover-menu-B4PoWhRl.js.map → popover-menu-B71Tn2Qz.js.map} +1 -1
  489. package/dist/{popover.recipes-QlD4JenO.js → popover.recipes-Bdyhj2db.js} +2 -2
  490. package/dist/{popover.recipes-QlD4JenO.js.map → popover.recipes-Bdyhj2db.js.map} +1 -1
  491. package/dist/primitives-B-CkiEMU.js +379 -0
  492. package/dist/primitives-B-CkiEMU.js.map +1 -0
  493. package/dist/primitives.js +5 -5
  494. package/dist/{progress-BroqrAyV.js → progress-rnS8-uAW.js} +11 -11
  495. package/dist/progress-rnS8-uAW.js.map +1 -0
  496. package/dist/{receipt-BuJynLgf.js → receipt-D0oswZ0p.js} +6 -6
  497. package/dist/{receipt-BuJynLgf.js.map → receipt-D0oswZ0p.js.map} +1 -1
  498. package/dist/rich-text-DvGulsNJ.js +78 -0
  499. package/dist/rich-text-DvGulsNJ.js.map +1 -0
  500. package/dist/rich-text-editor-sMU_Scqm.js +1204 -0
  501. package/dist/rich-text-editor-sMU_Scqm.js.map +1 -0
  502. package/dist/rich-text-editor.recipes-CadiF_Uu.js +88 -0
  503. package/dist/rich-text-editor.recipes-CadiF_Uu.js.map +1 -0
  504. package/dist/rich-text-editor.strings-CB59ekH2.js +38 -0
  505. package/dist/rich-text-editor.strings-CB59ekH2.js.map +1 -0
  506. package/dist/safe-image-src-C6kQSMBZ.js +17 -0
  507. package/dist/safe-image-src-C6kQSMBZ.js.map +1 -0
  508. package/dist/sanitize-html-DsQmI48u.js +92 -0
  509. package/dist/sanitize-html-DsQmI48u.js.map +1 -0
  510. package/dist/scroll-area-Bt_vXY2b.js +48 -0
  511. package/dist/scroll-area-Bt_vXY2b.js.map +1 -0
  512. package/dist/{separator-BNIgG3au.js → separator-C8DlRGwF.js} +4 -4
  513. package/dist/separator-C8DlRGwF.js.map +1 -0
  514. package/dist/{separator-BhtFyo4x.js → separator-CYHnjsAb.js} +2 -2
  515. package/dist/{separator-BhtFyo4x.js.map → separator-CYHnjsAb.js.map} +1 -1
  516. package/dist/services/actions/action-adapters.d.ts +22 -0
  517. package/dist/services/actions/index.d.ts +1 -1
  518. package/dist/services/actions.js +23 -6
  519. package/dist/services/actions.js.map +1 -1
  520. package/dist/settings-CQW3b-Cu.js +170 -0
  521. package/dist/settings-CQW3b-Cu.js.map +1 -0
  522. package/dist/sheet-4SEvVYzA.js +210 -0
  523. package/dist/sheet-4SEvVYzA.js.map +1 -0
  524. package/dist/{sidebar-CyR4XKwR.js → sidebar-C7WWR29L.js} +181 -180
  525. package/dist/sidebar-C7WWR29L.js.map +1 -0
  526. package/dist/sidebar-d7Dg80ln.js +511 -0
  527. package/dist/sidebar-d7Dg80ln.js.map +1 -0
  528. package/dist/{skeleton-3F0uhYn3.js → skeleton-Cz890JZF.js} +10 -10
  529. package/dist/skeleton-Cz890JZF.js.map +1 -0
  530. package/dist/smart-card-lFKxn5Hu.js +595 -0
  531. package/dist/smart-card-lFKxn5Hu.js.map +1 -0
  532. package/dist/{spinner-Cpf7oRkF.js → spinner-fa3h1Aif.js} +10 -8
  533. package/dist/spinner-fa3h1Aif.js.map +1 -0
  534. package/dist/{structure-CRdqVawd.js → structure-DC2dygdA.js} +3 -3
  535. package/dist/{structure-CRdqVawd.js.map → structure-DC2dygdA.js.map} +1 -1
  536. package/dist/{structure.recipes-Bqhf9oIh.js → structure.recipes-EPz60cU8.js} +37 -19
  537. package/dist/structure.recipes-EPz60cU8.js.map +1 -0
  538. package/dist/style.css +1 -1
  539. package/dist/surface-recipes-BKRVW8Os.js +43 -0
  540. package/dist/surface-recipes-BKRVW8Os.js.map +1 -0
  541. package/dist/table-CIKyLUsy.js +163 -0
  542. package/dist/table-CIKyLUsy.js.map +1 -0
  543. package/dist/{table-CcRDZiLP.js → table-CrcLN9Io.js} +544 -530
  544. package/dist/table-CrcLN9Io.js.map +1 -0
  545. package/dist/tabs-DwBJfjxX.js +190 -0
  546. package/dist/tabs-DwBJfjxX.js.map +1 -0
  547. package/dist/{text-inputs-DsR56TR-.js → text-inputs-aaK9wcDT.js} +151 -155
  548. package/dist/text-inputs-aaK9wcDT.js.map +1 -0
  549. package/dist/{text.styles-Q4sGAIgA.js → text.styles-g4He6UIW.js} +17 -14
  550. package/dist/text.styles-g4He6UIW.js.map +1 -0
  551. package/dist/theme.css +16 -12
  552. package/dist/themes/green.css +24 -0
  553. package/dist/{timelines-D1pkt3se.js → timelines-C_SBwHNP.js} +154 -164
  554. package/dist/timelines-C_SBwHNP.js.map +1 -0
  555. package/dist/tone-recipes-CPoExcTE.js +70 -0
  556. package/dist/tone-recipes-CPoExcTE.js.map +1 -0
  557. package/dist/tooltip-CsfgrfS7.js +111 -0
  558. package/dist/tooltip-CsfgrfS7.js.map +1 -0
  559. package/dist/track-recipes-CDcKmndW.js +10 -0
  560. package/dist/track-recipes-CDcKmndW.js.map +1 -0
  561. package/dist/{tree-BtmYyMZV.js → tree-BiKhg8AY.js} +72 -70
  562. package/dist/tree-BiKhg8AY.js.map +1 -0
  563. package/dist/typography/rich-text.js +1 -1
  564. package/dist/typography-DTRkE9zL.js +117 -0
  565. package/dist/typography-DTRkE9zL.js.map +1 -0
  566. package/dist/typography.js +2 -2
  567. package/dist/{ui-provider-DRPn3qNl.js → ui-provider-1D_NSYzO.js} +30 -23
  568. package/dist/ui-provider-1D_NSYzO.js.map +1 -0
  569. package/dist/ui-provider.js +3 -3
  570. package/dist/{upload-CDbYw1WN.js → upload-BO8-CLN6.js} +294 -293
  571. package/dist/upload-BO8-CLN6.js.map +1 -0
  572. package/dist/{upload-queue-CNd_hH_a.js → upload-queue-EOC8g1gf.js} +133 -138
  573. package/dist/upload-queue-EOC8g1gf.js.map +1 -0
  574. package/dist/upload.recipes-BbxTqrCT.js +61 -0
  575. package/dist/upload.recipes-BbxTqrCT.js.map +1 -0
  576. package/dist/{usage-card-VyJLUwRr.js → usage-card-obRaBskq.js} +42 -43
  577. package/dist/{usage-card-VyJLUwRr.js.map → usage-card-obRaBskq.js.map} +1 -1
  578. package/dist/{utils-BvH9PSmq.js → utils-l5LpDw2z.js} +264 -62
  579. package/dist/utils-l5LpDw2z.js.map +1 -0
  580. package/dist/value-inputs-TAYMX111.js +947 -0
  581. package/dist/value-inputs-TAYMX111.js.map +1 -0
  582. package/dist/value-typography-b8wpz1eX.js +116 -0
  583. package/dist/value-typography-b8wpz1eX.js.map +1 -0
  584. package/dist/workspace-DH0v0KcB.js +407 -0
  585. package/dist/workspace-DH0v0KcB.js.map +1 -0
  586. package/docs/consumer-skill/SKILL.md +62 -50
  587. package/docs/consumer-skill/examples/app-layout.tsx +3 -5
  588. package/docs/consumer-skill/examples/composition.tsx +3 -3
  589. package/docs/consumer-skill/examples/detail.tsx +59 -13
  590. package/docs/consumer-skill/examples/edit.tsx +2 -2
  591. package/docs/consumer-skill/examples/layout-blocks.tsx +20 -0
  592. package/docs/consumer-skill/examples/manifest.json +28 -6
  593. package/docs/consumer-skill/examples/receipt.tsx +2 -2
  594. package/docs/consumer-skill/examples/scoped-directory.tsx +3 -3
  595. package/docs/consumer-skill/examples/website.tsx +1 -1
  596. package/docs/consumer-skill/references/agents-md.md +33 -0
  597. package/docs/consumer-skill/references/analytics.md +1 -1
  598. package/docs/consumer-skill/references/composition.md +139 -24
  599. package/docs/consumer-skill/references/design-contract.md +12 -3
  600. package/docs/consumer-skill/references/discovery.md +4 -0
  601. package/docs/consumer-skill/references/installation.md +33 -1
  602. package/docs/consumer-skill/references/integration.md +32 -1
  603. package/docs/consumer-skill/references/public-api.json +1051 -610
  604. package/docs/consumer-skill/references/review.md +44 -8
  605. package/docs/consumer-skill/references/theming.md +14 -4
  606. package/docs/consumer-skill/references/tokens.json +5 -2
  607. package/docs/consumer-skill/references/workflows.md +30 -9
  608. package/docs/consumer-skill/scripts/composition-policy.mjs +127 -6
  609. package/docs/consumer-skill/scripts/discovery.mjs +11 -3
  610. package/docs/consumer-skill/scripts/pin-button-defaults.mjs +95 -0
  611. package/docs/consumer-skill/scripts/surface-policy.mjs +139 -5
  612. package/package.json +13 -3
  613. package/dist/accordion-BRTcsp8J.js +0 -205
  614. package/dist/accordion-BRTcsp8J.js.map +0 -1
  615. package/dist/action-menu-Drxw_vJk.js +0 -265
  616. package/dist/action-menu-Drxw_vJk.js.map +0 -1
  617. package/dist/affordance-geometry.generated-CL84ZN9A.js.map +0 -1
  618. package/dist/ai-artifact-DLVdK0Py.js.map +0 -1
  619. package/dist/attachment-DbjUWsP0.js +0 -244
  620. package/dist/attachment-DbjUWsP0.js.map +0 -1
  621. package/dist/auth-CAQcasMV.js.map +0 -1
  622. package/dist/avatar-Bu2HhitA.js.map +0 -1
  623. package/dist/badge-CzId1Wlm.js +0 -92
  624. package/dist/badge-CzId1Wlm.js.map +0 -1
  625. package/dist/breadcrumbs-BuYz5SDU.js +0 -128
  626. package/dist/breadcrumbs-BuYz5SDU.js.map +0 -1
  627. package/dist/button-BZDasD04.js +0 -651
  628. package/dist/button-BZDasD04.js.map +0 -1
  629. package/dist/button-BZyfTvwm.js.map +0 -1
  630. package/dist/buttons-D_6KJvEE.js +0 -99
  631. package/dist/buttons-D_6KJvEE.js.map +0 -1
  632. package/dist/cards-qGSErLw_.js.map +0 -1
  633. package/dist/chart-Bsc5BICK.js.map +0 -1
  634. package/dist/checkbox-BQNDjUCh.js +0 -34
  635. package/dist/checkbox-BQNDjUCh.js.map +0 -1
  636. package/dist/choice-inputs-Mk3iWbhr.js +0 -725
  637. package/dist/choice-inputs-Mk3iWbhr.js.map +0 -1
  638. package/dist/code-block-DzHKRybS.js +0 -183
  639. package/dist/code-block-DzHKRybS.js.map +0 -1
  640. package/dist/combobox-BFnbJJp3.js.map +0 -1
  641. package/dist/combobox-hozNwUcc.js +0 -847
  642. package/dist/combobox-hozNwUcc.js.map +0 -1
  643. package/dist/command-BnmSchli.js.map +0 -1
  644. package/dist/comments-u5L0OGip.js.map +0 -1
  645. package/dist/containers-DqB-bSYE.js.map +0 -1
  646. package/dist/data-display-Bihs9Ven.js +0 -1342
  647. package/dist/data-display-Bihs9Ven.js.map +0 -1
  648. package/dist/date-DOKhJPu7.js +0 -140
  649. package/dist/date-DOKhJPu7.js.map +0 -1
  650. package/dist/date-picker-DzP5HQq7.js +0 -1541
  651. package/dist/date-picker-DzP5HQq7.js.map +0 -1
  652. package/dist/date-pickers-BpgGz7S-.js +0 -196
  653. package/dist/date-pickers-BpgGz7S-.js.map +0 -1
  654. package/dist/display-CS6Hbk18.js.map +0 -1
  655. package/dist/dropdown-menu-D-boNgGO.js.map +0 -1
  656. package/dist/feedback-CJkUAapr.js +0 -233
  657. package/dist/feedback-CJkUAapr.js.map +0 -1
  658. package/dist/field-affordance-recipes-uKY4MsZ_.js +0 -25
  659. package/dist/field-affordance-recipes-uKY4MsZ_.js.map +0 -1
  660. package/dist/field-state-recipes-DQQpiLWC.js +0 -11
  661. package/dist/field-state-recipes-DQQpiLWC.js.map +0 -1
  662. package/dist/filters-D6FF8L6s.js.map +0 -1
  663. package/dist/form-sizing-QP8aIRaW.js +0 -103
  664. package/dist/form-sizing-QP8aIRaW.js.map +0 -1
  665. package/dist/format-iamDSqs2.js +0 -110
  666. package/dist/format-iamDSqs2.js.map +0 -1
  667. package/dist/forms-B5NCbkSC.js.map +0 -1
  668. package/dist/forms-numeric-Crrm80Lm.js +0 -867
  669. package/dist/forms-numeric-Crrm80Lm.js.map +0 -1
  670. package/dist/header-kxruN3RM.js.map +0 -1
  671. package/dist/icon-badge-Btc6pQrp.js +0 -53
  672. package/dist/icon-badge-Btc6pQrp.js.map +0 -1
  673. package/dist/input-SX9V0AL3.js +0 -255
  674. package/dist/input-SX9V0AL3.js.map +0 -1
  675. package/dist/item-DE4YnuJx.js +0 -258
  676. package/dist/item-DE4YnuJx.js.map +0 -1
  677. package/dist/media-gallery-DLp3HAz0.js +0 -201
  678. package/dist/media-gallery-DLp3HAz0.js.map +0 -1
  679. package/dist/mentions-Cl0Kt_Pd.js +0 -565
  680. package/dist/mentions-Cl0Kt_Pd.js.map +0 -1
  681. package/dist/navigation-DnQSNMT0.js +0 -276
  682. package/dist/navigation-DnQSNMT0.js.map +0 -1
  683. package/dist/navigation-DyytsLRB.js +0 -265
  684. package/dist/navigation-DyytsLRB.js.map +0 -1
  685. package/dist/number-DasMFWEG.js +0 -269
  686. package/dist/number-DasMFWEG.js.map +0 -1
  687. package/dist/overlay.recipes-BxW5FIfK.js +0 -6
  688. package/dist/overlay.recipes-BxW5FIfK.js.map +0 -1
  689. package/dist/overlays-DUbs1KEi.js +0 -1011
  690. package/dist/overlays-DUbs1KEi.js.map +0 -1
  691. package/dist/page-hGmT4nWK.js.map +0 -1
  692. package/dist/page-header-D8nERkn5.js +0 -112
  693. package/dist/page-header-D8nERkn5.js.map +0 -1
  694. package/dist/popover-CghIYdQf.js.map +0 -1
  695. package/dist/primitives-C7ff0QaI.js +0 -337
  696. package/dist/primitives-C7ff0QaI.js.map +0 -1
  697. package/dist/progress-BroqrAyV.js.map +0 -1
  698. package/dist/rich-text-DlxDOtf4.js +0 -32
  699. package/dist/rich-text-DlxDOtf4.js.map +0 -1
  700. package/dist/rich-text-editor-BKyG7rWz.js +0 -574
  701. package/dist/rich-text-editor-BKyG7rWz.js.map +0 -1
  702. package/dist/rich-text-editor.recipes-B72Nfuze.js +0 -81
  703. package/dist/rich-text-editor.recipes-B72Nfuze.js.map +0 -1
  704. package/dist/rich-text-editor.strings-BpnIQgMl.js +0 -25
  705. package/dist/rich-text-editor.strings-BpnIQgMl.js.map +0 -1
  706. package/dist/sanitize-html-BG9FGe-j.js +0 -64
  707. package/dist/sanitize-html-BG9FGe-j.js.map +0 -1
  708. package/dist/scroll-area-D-pIhEKl.js +0 -47
  709. package/dist/scroll-area-D-pIhEKl.js.map +0 -1
  710. package/dist/separator-BNIgG3au.js.map +0 -1
  711. package/dist/settings-DOTOzeZ2.js +0 -161
  712. package/dist/settings-DOTOzeZ2.js.map +0 -1
  713. package/dist/sheet-BFhrNehm.js +0 -205
  714. package/dist/sheet-BFhrNehm.js.map +0 -1
  715. package/dist/sidebar-CyR4XKwR.js.map +0 -1
  716. package/dist/sidebar-SvGJ0Zwi.js +0 -506
  717. package/dist/sidebar-SvGJ0Zwi.js.map +0 -1
  718. package/dist/skeleton-3F0uhYn3.js.map +0 -1
  719. package/dist/smart-card-DjGVV2xr.js +0 -584
  720. package/dist/smart-card-DjGVV2xr.js.map +0 -1
  721. package/dist/spinner-Cpf7oRkF.js.map +0 -1
  722. package/dist/structure.recipes-Bqhf9oIh.js.map +0 -1
  723. package/dist/surface-recipes-Dd__PD-w.js +0 -28
  724. package/dist/surface-recipes-Dd__PD-w.js.map +0 -1
  725. package/dist/table-CLtJTxoR.js +0 -147
  726. package/dist/table-CLtJTxoR.js.map +0 -1
  727. package/dist/table-CcRDZiLP.js.map +0 -1
  728. package/dist/tabs-BNgu7g0u.js +0 -188
  729. package/dist/tabs-BNgu7g0u.js.map +0 -1
  730. package/dist/text-inputs-DsR56TR-.js.map +0 -1
  731. package/dist/text.styles-Q4sGAIgA.js.map +0 -1
  732. package/dist/timelines-D1pkt3se.js.map +0 -1
  733. package/dist/track-recipes-LLPNVwFg.js +0 -10
  734. package/dist/track-recipes-LLPNVwFg.js.map +0 -1
  735. package/dist/tree-BtmYyMZV.js.map +0 -1
  736. package/dist/typography-BxQgiZyw.js +0 -96
  737. package/dist/typography-BxQgiZyw.js.map +0 -1
  738. package/dist/ui-provider-DRPn3qNl.js.map +0 -1
  739. package/dist/upload-CDbYw1WN.js.map +0 -1
  740. package/dist/upload-queue-CNd_hH_a.js.map +0 -1
  741. package/dist/use-file-drop-target-BX7GnhoQ.js +0 -39
  742. package/dist/use-file-drop-target-BX7GnhoQ.js.map +0 -1
  743. package/dist/utils-BvH9PSmq.js.map +0 -1
  744. package/dist/value-inputs-D0KCrfVC.js +0 -840
  745. package/dist/value-inputs-D0KCrfVC.js.map +0 -1
  746. package/dist/workspace-CcR8r-Nt.js +0 -395
  747. package/dist/workspace-CcR8r-Nt.js.map +0 -1
  748. /package/dist/components/{blocks/data-display/metadata → base/metadata-list}/metadata-list.strings.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"email-composer.js","names":["_Fragment","_Fragment","Text","Button","Stack","AlertDescription","Alert","Card","AlertTitle","LoadingState","ErrorState","ActionMenu","ActionButtons","ActionDrawer","ActionDialog","ConfirmDialog","editableContentClassName","SmartAccordion","Input","InputGroup","InputGroupInput","Textarea","InputGroupAddon","InputGroupButton","Select","ScrollArea","FormField","TabsTrigger","TabsContent","TabsList","Tabs","PopoverMenu","RichTextEditorToolbar","richTextEditorRecipes","defaultRichTextEditorStrings","renderEmail","bodyHtml","recipientLabel","emptyDocument","inspectDraft","resolveValues","parseRecipient","validate","createHttpSender","defaultEmailComposerStrings","Fragment$1","StarterKit","dataUnavailable","state","ComposerDataStatus","report","useComposer","strings","useStrings","props","baseline","useRef","local","setLocal","useState","draft","latest","localRef","editorRef","activity","busy","setBusy","error","setError","notice","setNotice","attempted","setAttempted","imported","setImported","mounted","definitions","useMemo","result","set","key","templates","registry","t","current","templateFor","value","evaluationCache","inspect","context","template","copy","cached","dataIssues","currentProps","issues","field","dataPending","issuesFor","snapshot","unresolved","err","cause","commit","internal","next","updater","operation","run","fromAction","token","kind","callback","parent","adapter","applyTemplate","mode","options","item","body","implementationRef","stableApiRef","subject","recipients","id","text","api","prepare","i","send","handlers","email","discard","original","d","useImperativeHandle","runAction","action","importTemplate","items","rendered","RecipientEntry","entry","setEntry","recipient","readOnly","disabled","canRemove","change","errorId","index","event","add","remove","X","Plus","RecipientField","adding","setAdding","useId","addition","canAdd","showAddition","unavailable","r","onChange","startAdding","actions","Variables","prefix","AdaptiveGrid","definition","overridden","common","values","control","editable","PlaceholderToken","Node","element","mergeAttributes","HTMLAttributes","node","extensions","BodyEditor","programmatic","linkOpen","setLinkOpen","url","setUrl","linkError","setLinkError","selection","toolbarStrings","editor","useEditor","useEffect","document","generateJSON","adapterRef","mutate","buttons","Bold","Italic","List","ListOrdered","Undo2","Redo2","cn","Link","EditorContent","HtmlPreview","html","EmailComposer","model","view","setView","variablesOpen","setVariablesOpen","cc","setCc","bcc","setBcc","convertOpen","setConvertOpen","preview","a","position","footer","Send","fieldError","issue","title","close","surface","rootClass","open","card"],"sources":["../../src/components/features/email-composer/partials/data-status.tsx","../../src/components/features/email-composer/use-composer.ts","../../src/components/features/email-composer/partials/recipients.tsx","../../src/components/features/email-composer/partials/variables.tsx","../../src/components/features/email-composer/partials/body-editor.tsx","../../src/components/features/email-composer/partials/html-preview.tsx","../../src/components/features/email-composer/email-composer.tsx"],"sourcesContent":["import { LoadingState, ErrorState } from '../../../base/feedback';\nimport type { ComposerDataState } from '../types';\n\nexport function dataUnavailable(state?: ComposerDataState) {\n\treturn !!(state?.loading || state?.error);\n}\n\nexport function ComposerDataStatus({ state, label, retryLabel, report }: {\n\tstate?: ComposerDataState;\n\tlabel: string;\n\tretryLabel: string;\n\treport: (cause: unknown) => void;\n}) {\n\tif (state?.loading) return <LoadingState label={label} />;\n\tif (!state?.error) return null;\n\treturn <ErrorState variant=\"inline\" description={state.error} retryLabel={retryLabel} onRetry={state.onRetry ? () => { void Promise.resolve().then(state.onRetry).catch(report); } : undefined} />;\n}\n","import { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useStrings } from '../../../lib/strings';\nimport { emptyDocument } from './document';\nimport { inspectDraft } from './engine';\nimport { defaultEmailComposerStrings } from './strings';\nimport type { ComposerIssue } from './types';\nimport { dataUnavailable } from './partials/data-status';\nimport type { ComposerApi, ComposerDraft, ComposerAction, EditSource, EmailBody, EmailComposerProps, EmailTemplate, PlaceholderDefinition, TemplateOptions } from './types';\nexport interface ComposerEditorAdapter {\n\tsynchronize(body: EmailBody): void;\n\tinsert(body: EmailBody, mode: 'append' | 'insert'): EmailBody;\n\tinsertText(text: string): EmailBody;\n\tinsertPlaceholder(key: string): EmailBody;\n\tfocus(): void;\n\tconvert(body: EmailBody): EmailBody;\n}\nexport function useComposer<C, K extends string>(props: EmailComposerProps<C, K>) {\n\tconst strings = useStrings(defaultEmailComposerStrings, props.strings);\n\tconst baseline = useRef<ComposerDraft<K>>(null!);\n\tif (!baseline.current)\n\t\tbaseline.current = structuredClone({ to: [], cc: [], bcc: [], subject: '', body: { kind: 'rich', document: emptyDocument }, placeholderOverrides: {}, ...(props.value ?? props.defaultValue) });\n\tconst [local, setLocal] = useState(baseline.current);\n\tconst draft = props.value ?? local;\n\tconst latest = useRef({ props, draft, strings });\n\tlatest.current = { props, draft, strings };\n\tconst localRef = useRef(draft);\n\tif (props.value !== undefined)\n\t\tlocalRef.current = props.value;\n\tconst editorRef = useRef<ComposerEditorAdapter | null>(null);\n\tconst activity = useRef<'send' | 'discard' | 'action' | 'import' | null>(null);\n\tconst [busy, setBusy] = useState(false);\n\tconst [error, setError] = useState('');\n\tconst [notice, setNotice] = useState('');\n\tconst [attempted, setAttempted] = useState(false);\n\tconst [imported, setImported] = useState<EmailTemplate<K>[]>([]);\n\tconst mounted = useRef(true);\n\tuseEffect(() => { mounted.current = true; return () => { mounted.current = false; }; }, []);\n\tconst definitions = useMemo(() => {\n\t\tconst result: Partial<Record<K, PlaceholderDefinition<C>>> = Object.create(null);\n\t\tfor (const set of props.placeholders?.sets ?? [])\n\t\t\tfor (const key of Object.keys(set.definitions) as K[]) {\n\t\t\t\tif (Object.hasOwn(result, key))\n\t\t\t\t\tthrow new Error(strings.duplicateVariable(key));\n\t\t\t\tif (set.definitions[key])\n\t\t\t\t\tresult[key] = set.definitions[key];\n\t\t\t}\n\t\treturn result;\n\t}, [props.placeholders?.sets, strings]);\n\tconst templates = useMemo(() => [...(props.templates?.items ?? []), ...imported], [props.templates?.items, imported]);\n\tconst registry = useRef(templates);\n\tregistry.current = templates;\n\tif (new Set(templates.map(t => t.id)).size !== templates.length)\n\t\tthrow new Error(strings.duplicateTemplate);\n\tconst current = () => latest.current.props.value ?? localRef.current;\n\tconst templateFor = (value: ComposerDraft<K>) => templates.find(t => t.id === value.templateId);\n\tconst evaluationCache = useRef<{\n\t\tdraft: ComposerDraft<K>;\n\t\tcontext: C;\n\t\tdefinitions: typeof definitions;\n\t\ttemplate: EmailTemplate<K> | undefined;\n\t\tstrings: typeof strings;\n\t\tresult: ReturnType<typeof inspectDraft<C, K>>;\n\t} | null>(null);\n\tconst inspect = (value = current()) => {\n\t\tconst context = latest.current.props.context;\n\t\tconst template = templateFor(value);\n\t\tconst copy = latest.current.strings;\n\t\tconst cached = evaluationCache.current;\n\t\tif (cached && cached.draft === value && cached.context === context && cached.definitions === definitions && cached.template === template && cached.strings === copy)\n\t\t\treturn cached.result;\n\t\tconst result = inspectDraft(value, context, definitions, template, copy);\n\t\tevaluationCache.current = { draft: value, context, definitions, template, strings: copy, result };\n\t\treturn result;\n\t};\n\tconst dataIssues = (): ComposerIssue[] => {\n\t\tconst { props: currentProps, strings: copy } = latest.current;\n\t\tconst issues: ComposerIssue[] = [];\n\t\tfor (const field of ['to', 'cc', 'bcc'] as const) if (dataUnavailable(currentProps.recipients?.[field])) issues.push({ field, message: copy.dataUnavailable });\n\t\tif (dataUnavailable(currentProps.placeholders)) issues.push({ field: 'placeholders', message: copy.dataUnavailable });\n\t\treturn issues;\n\t};\n\tconst dataPending = dataIssues().length > 0;\n\tconst issuesFor = (value = current()) => structuredClone([...dataIssues(), ...inspect(value).issues]);\n\tconst snapshot = () => {\n\t\tconst value = current();\n\t\tconst result = inspect(value);\n\t\tconst unresolved = [...(result.rendered?.unresolved ?? [])];\n\t\treturn { draft: structuredClone(value), dirty: JSON.stringify(value) !== JSON.stringify(baseline.current), busy: activity.current !== null, issues: issuesFor(value), unresolvedPlaceholders: unresolved };\n\t};\n\tconst report = (cause: unknown) => {\n\t\tconst err = cause instanceof Error ? cause : new Error(String(cause));\n\t\tif (mounted.current)\n\t\t\tsetError(err.message);\n\t\tlatest.current.props.onError?.(err);\n\t};\n\tconst commit = (updater: (value: ComposerDraft<K>) => ComposerDraft<K>, source: EditSource = 'api', internal = false) => {\n\t\tif (!mounted.current || (!internal && activity.current && activity.current !== 'action'))\n\t\t\treturn;\n\t\tconst next = structuredClone(updater(structuredClone(current())));\n\t\tif (latest.current.props.value === undefined) {\n\t\t\tlocalRef.current = next;\n\t\t\tsetLocal(next);\n\t\t}\n\t\tlatest.current.props.onChange?.(structuredClone(next));\n\t\tlatest.current.props.onEdit?.(structuredClone(next), { source });\n\t\tsetError('');\n\t\tsetNotice('');\n\t};\n\ttype Operation = { settled: boolean; parent: Operation | null; kind: NonNullable<typeof activity.current> };\n\tconst operation = useRef<Operation | null>(null);\n\tasync function run(kind: NonNullable<typeof activity.current>, callback: () => Promise<void>, fromAction = false) {\n\t\tif ((activity.current && !(fromAction && activity.current === 'action')) || !mounted.current)\n\t\t\treturn;\n\t\tconst token: Operation = { kind, settled: false, parent: fromAction ? operation.current : null };\n\t\toperation.current = token;\n\t\tactivity.current = kind;\n\t\tsetBusy(true);\n\t\tsetError('');\n\t\tsetNotice('');\n\t\ttry {\n\t\t\tawait callback();\n\t\t}\n\t\tcatch (cause) {\n\t\t\treport(cause);\n\t\t}\n\t\tfinally {\n\t\t\ttoken.settled = true;\n\t\t\tif (operation.current === token) {\n\t\t\t\tlet parent = token.parent;\n\t\t\t\twhile (parent?.settled) parent = parent.parent;\n\t\t\t\toperation.current = parent;\n\t\t\t\tactivity.current = parent?.kind ?? null;\n\t\t\t\tif (mounted.current) setBusy(parent !== null);\n\t\t\t}\n\t\t}\n\t}\n\tconst adapter = () => { if (!editorRef.current)\n\t\tthrow new Error(strings.editorNotReady); if (current().body.kind === 'html')\n\t\tthrow new Error(strings.editableRequired); editorRef.current.synchronize(current().body); return editorRef.current; };\n\tfunction applyTemplate(item: EmailTemplate<K>, options: TemplateOptions = {}, internal = false) {\n\t\tif (!internal && activity.current && activity.current !== 'action')\n\t\t\treturn;\n\t\tconst mode = options.body ?? 'replace';\n\t\tif (mode !== 'replace' && (item.body.kind === 'html' || current().body.kind === 'html'))\n\t\t\tthrow new Error(strings.editableRequired);\n\t\tconst body = mode === 'replace' ? item.body : adapter().insert(item.body, mode);\n\t\tcommit(value => ({ ...value, body, subject: options.subject === 'preserve' ? value.subject : item.subject ?? value.subject, templateId: item.id, placeholderOverrides: options.overrides === 'reset' ? {} : value.placeholderOverrides }), 'template', internal);\n\t}\n\tconst implementationRef = useRef<ComposerApi<K>>(null!);\n\tconst stableApiRef = useRef<ComposerApi<K>>(null!);\n\tif (!stableApiRef.current) stableApiRef.current = {\n\t\tgetState: () => implementationRef.current.getState(),\n\t\tupdate: (updater) => implementationRef.current.update(updater),\n\t\tsetSubject: (subject) => implementationRef.current.setSubject(subject),\n\t\tsetRecipients: (field, recipients) => implementationRef.current.setRecipients(field, recipients),\n\t\tsetBody: (body) => implementationRef.current.setBody(body),\n\t\timportBody: (body) => implementationRef.current.importBody(body),\n\t\tsetPlaceholder: (key, value) => implementationRef.current.setPlaceholder(key, value),\n\t\tclearPlaceholderOverride: (key) => implementationRef.current.clearPlaceholderOverride(key),\n\t\tinsertPlaceholder: (key) => implementationRef.current.insertPlaceholder(key),\n\t\tapplyTemplate: (id, options) => implementationRef.current.applyTemplate(id, options),\n\t\tinsertText: (text) => implementationRef.current.insertText(text),\n\t\tfocusBody: () => implementationRef.current.focusBody(),\n\t\tvalidate: () => implementationRef.current.validate(),\n\t\tprepare: () => implementationRef.current.prepare(),\n\t\tsend: () => implementationRef.current.send(),\n\t\tdiscard: () => implementationRef.current.discard(),\n\t};\n\tconst api = stableApiRef.current;\n\tconst prepare = async () => { if (dataIssues().length) throw new Error(latest.current.strings.dataUnavailable); const result = inspect(); if (result.issues.length || !result.rendered)\n\t\tthrow new Error(result.issues.map(i => i.message).join(' ')); return structuredClone(result.rendered.email); };\n\tconst send = (fromAction = false) => run('send', async () => {\n\t\tconst handlers = latest.current.props;\n\t\tsetAttempted(true);\n\t\tlet email = await prepare();\n\t\tif (handlers.onBeforeSend) {\n\t\t\tconst next = await handlers.onBeforeSend(email, api);\n\t\t\tif (next === false || !mounted.current)\n\t\t\t\treturn;\n\t\t\temail = next;\n\t\t}\n\t\tif (!mounted.current)\n\t\t\treturn;\n\t\t// Delivery adapters receive their own payload; success reports the reviewed snapshot.\n\t\temail = structuredClone(email);\n\t\tawait handlers.onSend(structuredClone(email));\n\t\tif (mounted.current) {\n\t\t\tsetNotice(strings.sent);\n\t\t\thandlers.onSent?.(email);\n\t\t}\n\t}, fromAction);\n\tconst discard = (fromAction = false) => run('discard', async () => {\n\t\tconst handlers = latest.current.props;\n\t\tconst original = current();\n\t\tawait handlers.onDiscard?.(api);\n\t\tif (!mounted.current || current() !== original)\n\t\t\treturn;\n\t\tcommit(() => baseline.current, 'api', true);\n\t\tsetAttempted(false);\n\t\tsetNotice(strings.discarded);\n\t\thandlers.onClose?.();\n\t}, fromAction);\n\tconst implementation: ComposerApi<K> = {\n\t\tgetState: snapshot,\n\t\tupdate: updater => commit(updater),\n\t\tsetSubject: subject => commit(value => ({ ...value, subject })),\n\t\tsetRecipients: (field, recipients) => commit(value => ({ ...value, [field]: recipients })),\n\t\tsetBody: body => commit(value => ({ ...value, body })),\n\t\timportBody: body => commit(value => ({ ...value, body })),\n\t\tsetPlaceholder: (key, value) => {\n\t\t\tif (!Object.hasOwn(definitions, key))\n\t\t\t\tthrow new Error(strings.unknownVariable(key));\n\t\t\tcommit(d => ({ ...d, placeholderOverrides: { ...d.placeholderOverrides, [key]: value } }), 'placeholder');\n\t\t},\n\t\tclearPlaceholderOverride: key => commit(d => { delete d.placeholderOverrides[key]; return d; }, 'placeholder'),\n\t\tinsertPlaceholder: key => {\n\t\t\tif (activity.current && activity.current !== 'action')\n\t\t\t\treturn;\n\t\t\tif (!Object.hasOwn(definitions, key))\n\t\t\t\tthrow new Error(strings.unknownVariable(key));\n\t\t\tconst body = adapter().insertPlaceholder(key);\n\t\t\tcommit(d => ({ ...d, body }));\n\t\t},\n\t\tinsertText: text => { if (activity.current && activity.current !== 'action')\n\t\t\treturn; const body = adapter().insertText(text); commit(d => ({ ...d, body })); },\n\t\tfocusBody: () => editorRef.current?.focus(),\n\t\tapplyTemplate: (id, options) => { if (dataUnavailable(latest.current.props.templates)) throw new Error(latest.current.strings.templatesUnavailable); const item = templates.find(t => t.id === id); if (!item)\n\t\t\tthrow new Error(strings.unknownTemplate(id)); applyTemplate(item, options); },\n\t\tvalidate: () => issuesFor(),\n\t\tprepare, send: () => send(), discard: () => discard(),\n\t};\n\timplementationRef.current = implementation;\n\tuseImperativeHandle(props.apiRef, () => api, [api]);\n\tconst runAction = (action: ComposerAction<K>) => run('action', async () => { await action.onSelect(Object.assign(Object.create(api) as ComposerApi<K>, { send: () => send(true), discard: () => discard(true) })); });\n\tconst importTemplate = () => run('import', async () => {\n\t\tconst original = current();\n\t\tconst item = await latest.current.props.templates?.onImport?.();\n\t\tif (!item || !mounted.current)\n\t\t\treturn;\n\t\tif (registry.current.some(t => t.id === item.id))\n\t\t\tthrow new Error(strings.duplicateTemplate);\n\t\tsetImported(items => [...items, structuredClone(item)]);\n\t\t// A controlled parent may replace the message while import is pending.\n\t\tif (current() === original)\n\t\t\tapplyTemplate(item, {}, true);\n\t});\n\tconst { rendered, renderError } = inspect(draft);\n\tconst values = rendered?.email.resolvedPlaceholders ?? {};\n\treturn { api, draft, strings, busy, dataPending, error, notice, attempted, rendered, renderError, definitions, templates, values, editorRef, state: snapshot(), report, runAction, importTemplate,\n\t\tchangeBody: (body: EmailBody) => commit(d => ({ ...d, body }), 'body'),\n\t\tchangeSubject: (subject: string) => commit(d => ({ ...d, subject }), 'subject'),\n\t\tchangeRecipients: (field: 'to' | 'cc' | 'bcc', recipients: ComposerDraft<K>['to']) => commit(d => ({ ...d, [field]: recipients }), 'recipient'),\n\t};\n}\n","import { useEffect, useId, useRef, useState, type ReactNode } from 'react';\nimport { Plus, X } from 'lucide-react';\nimport { FormField } from '../../../base/forms/form-field';\nimport { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton } from '../../../base/text-inputs';\nimport { Stack } from '../../../base/structure';\nimport { parseRecipient, recipientLabel } from '../engine';\nimport type { Recipient, RecipientOptions } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nimport { ComposerDataStatus, dataUnavailable } from './data-status';\nfunction RecipientEntry({ recipient, field, index, options, busy, strings, change, remove, add, id, errorId }: {\n\tid: string;\n\terrorId?: string;\n\trecipient: Recipient;\n\tfield: string;\n\tindex: number;\n\toptions: RecipientOptions;\n\tbusy: boolean;\n\tstrings: EmailComposerStrings;\n\tchange: (value: Recipient) => void;\n\tremove: () => void;\n\tadd?: () => void;\n}) {\n\tconst [entry, setEntry] = useState(recipientLabel(recipient));\n\tuseEffect(() => { setEntry(recipientLabel(recipient)); }, [recipient.name, recipient.email]);\n\tconst readOnly = options.mode === 'readonly';\n\tconst disabled = options.mode === 'disabled' || busy;\n\tconst canRemove = options.mode !== 'disabled' && options.allowRemove !== false && (!readOnly || options.allowRemove === true);\n\tconst commit = () => { if (!readOnly && !disabled && entry !== recipientLabel(recipient))\n\t\tchange({ id: recipient.id, ...parseRecipient(entry) }); };\n\treturn <InputGroup className=\"min-w-0 w-full\">\n <InputGroupInput id={id} aria-invalid={!!errorId} aria-describedby={errorId} aria-label={strings.recipientLabel(field, index)} value={entry} readOnly={readOnly} disabled={disabled} title={recipientLabel(recipient)} onChange={event => setEntry(event.target.value)} onBlur={commit} onKeyDown={event => {\n\t\t\tif (event.key === 'Enter') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcommit();\n\t\t\t}\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetEntry(recipientLabel(recipient));\n\t\t\t}\n\t\t}}/>\n {(canRemove || add) && <InputGroupAddon align=\"inline-end\">\n {canRemove && <InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.removeRecipient(recipient.email)} onClick={remove}><X className=\"size-icon\"/></InputGroupButton>}\n {add && <InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.addRecipient(field)} title={strings.addRecipient(field)} onClick={add}><Plus className=\"size-icon\"/></InputGroupButton>}\n </InputGroupAddon>}\n </InputGroup>;\n}\nexport function RecipientField({ field, value, options = {}, busy, strings, onChange, error, actions, report }: {\n\tfield: 'to' | 'cc' | 'bcc';\n\tvalue: Recipient[];\n\toptions?: RecipientOptions;\n\tbusy: boolean;\n\tstrings: EmailComposerStrings;\n\tonChange: (value: Recipient[]) => void;\n\terror?: string;\n\tactions?: ReactNode;\n\treport: (cause: unknown) => void;\n}) {\n\tconst [adding, setAdding] = useState(false);\n\tconst [entry, setEntry] = useState('');\n\tconst id = useId();\n\tconst errorId = error ? `${id}-error` : undefined;\n\tconst addition = useRef<HTMLInputElement>(null);\n\tconst canAdd = options.mode !== 'disabled' && options.allowAdd !== false && (options.mode !== 'readonly' || options.allowAdd === true);\n\tconst showAddition = adding || value.length === 0;\n\tconst unavailable = dataUnavailable(options);\n\tconst add = () => {\n\t\tif (busy || !canAdd || !showAddition || unavailable)\n\t\t\treturn;\n\t\tconst recipient = parseRecipient(entry);\n\t\tif (entry.trim() && !value.some(r => r.email.toLowerCase() === recipient.email.toLowerCase()))\n\t\t\tonChange([...value, recipient]);\n\t\tsetEntry('');\n\t\tsetAdding(false);\n\t};\n\tuseEffect(() => { if (adding) addition.current?.focus(); }, [adding]);\n\tconst startAdding = () => { if (showAddition) add(); setAdding(true); addition.current?.focus(); };\n\treturn <FormField label={strings[field]} required={field === 'to'} error={error} supportingTextId={errorId} htmlFor={value.length ? `${id}-0` : `${id}-new`}>\n <Stack id={`${id}-group`} gap=\"sm\">\n {unavailable ? <ComposerDataStatus state={options} label={strings.loadingRecipients(strings[field])} retryLabel={strings.retry} report={report} /> : <>\n {value.map((recipient, index) => <RecipientEntry key={recipient.id ?? index} id={`${id}-${index}`} errorId={errorId} recipient={recipient} field={strings[field]} index={index} options={options} busy={busy} strings={strings} change={next => onChange(value.map((r, i) => i === index ? next : r))} remove={() => onChange(value.filter((_, i) => i !== index))} add={canAdd && !showAddition && index === value.length - 1 ? startAdding : undefined} />)}\n {showAddition && <InputGroup className=\"min-w-0 w-full\">\n <InputGroupInput id={`${id}-new`} ref={addition} autoFocus={field !== 'to'} aria-invalid={!!error} aria-describedby={errorId} aria-label={strings.newRecipient(strings[field])} placeholder={strings.recipientPlaceholder} value={entry} disabled={busy || options.mode === 'disabled'} readOnly={!canAdd} onChange={e => setEntry(e.target.value)} onBlur={add} onKeyDown={e => {\n if (e.key === 'Enter') { e.preventDefault(); add(); }\n if (e.key === 'Escape') { e.preventDefault(); setEntry(''); setAdding(false); }\n }} />\n {canAdd && <InputGroupAddon align=\"inline-end\"><InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.addRecipient(strings[field])} title={strings.addRecipient(strings[field])} onMouseDown={e => e.preventDefault()} onClick={startAdding}><Plus className=\"size-icon\" /></InputGroupButton></InputGroupAddon>}\n </InputGroup>}\n </>}\n {actions && <Stack direction=\"horizontal\" gap=\"xs\" justify=\"end\">{actions}</Stack>}\n </Stack>\n </FormField>;\n}\n","import { Plus } from 'lucide-react';\nimport { useId } from 'react';\nimport { AdaptiveGrid, Stack } from '../../../base/structure';\nimport { FormField } from '../../../base/forms/form-field';\nimport { Input, Textarea } from '../../../base/text-inputs';\nimport { Select } from '../../../base/choice-inputs';\nimport { Button } from '../../../base/buttons';\nimport type { ComposerApi, ComposerDraft, PlaceholderDefinition, PlaceholderValue } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nexport function Variables<C, K extends string>({ definitions, values, draft, api, strings, busy, editable }: {\n\tdefinitions: Partial<Record<K, PlaceholderDefinition<C>>>;\n\tvalues: Partial<Record<K, PlaceholderValue>>;\n\tdraft: ComposerDraft<K>;\n\tapi: ComposerApi<K>;\n\tstrings: EmailComposerStrings;\n\tbusy: boolean;\n\teditable: boolean;\n}) {\n\tconst prefix = useId();\n\treturn <AdaptiveGrid minColumnWidth=\"sm\" gap=\"md\">\n {(Object.keys(definitions) as K[]).map(key => {\n\t\t\tconst definition = definitions[key]!;\n\t\t\tconst overridden = Object.hasOwn(draft.placeholderOverrides, key);\n\t\t\tconst id = `${prefix}-email-variable-${key}`;\n\t\t\tconst common = { id, value: String(values[key] ?? ''), disabled: busy, readOnly: !definition.editable };\n\t\t\tconst control = definition.input === 'textarea' ? <Textarea {...common} onChange={e => api.setPlaceholder(key, e.target.value)}/> : definition.input === 'select' ?\n\t\t\t\t<Select {...common} placeholder={strings.choose} options={[...(definition.options ?? [])]} onValueChange={value => api.setPlaceholder(key, value ?? '')}/> :\n\t\t\t\t<Input {...common} type={definition.input === 'number' ? 'number' : definition.input === 'date' ? 'date' : 'text'} onChange={e => api.setPlaceholder(key, definition.input === 'number' && e.target.value !== '' ? Number(e.target.value) : e.target.value)}/>;\n\t\t\treturn <FormField key={key} label={definition.group ? `${definition.group} · ${definition.label}` : definition.label} htmlFor={id} required={definition.required} helperText={`${overridden ? strings.overridden : strings.dynamic}${definition.description ? ` · ${definition.description}` : ''}`}>\n\t<Stack id={`${id}-group`} direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t <div className=\"min-w-0 flex-1\">{control}</div>\n\t <Button type=\"button\" iconOnly size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy || !editable} aria-label={strings.insertVariable(definition.label)} onClick={() => api.insertPlaceholder(key)}><Plus className=\"size-icon\"/></Button>\n\t {overridden && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => api.clearPlaceholderOverride(key)}>{strings.reset}</Button>}\n\t</Stack>\n </FormField>;\n\t\t})}\n </AdaptiveGrid>;\n}\n","import { useEffect, useImperativeHandle, useRef, useState, type Ref } from 'react';\nimport { EditorContent, Node, mergeAttributes, generateJSON, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { Bold, Italic, List, ListOrdered, Undo2, Redo2, Link } from 'lucide-react';\nimport { richTextEditorRecipes } from '../../rich-text-editor/rich-text-editor.recipes';\nimport { cn } from '../../../../lib/utils';\nimport { RichTextEditorToolbar } from '../../rich-text-editor/partials/rich-text-editor-toolbar';\nimport { defaultRichTextEditorStrings } from '../../rich-text-editor/rich-text-editor.strings';\nimport type { ToolbarButtonConfig } from '../../rich-text-editor/rich-text-editor.types';\nimport { editableContentClassName } from '../../../typography/content-typography';\nimport { FormField } from '../../../base/forms/form-field';\nimport { Input } from '../../../base/text-inputs';\nimport { ActionDialog } from '../../overlays';\nimport { Stack } from '../../../base/structure';\nimport { Alert, AlertDescription } from '../../../base/feedback';\nimport { useStrings } from '../../../../lib/strings';\nimport { bodyHtml } from '../document';\nimport type { ComposerEditorAdapter } from '../use-composer';\nimport type { EmailBody } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nconst PlaceholderToken = Node.create({\n\tname: 'placeholderToken', group: 'inline', inline: true, atom: true,\n\taddAttributes: () => ({ key: { default: '', parseHTML: element => element.getAttribute('data-placeholder') } }),\n\tparseHTML: () => [{ tag: 'span[data-placeholder]' }],\n\trenderHTML: ({ node, HTMLAttributes }) => ['span', mergeAttributes(HTMLAttributes, { 'data-placeholder': node.attrs.key, class: 'rounded-inner bg-accent text-accent-foreground', contenteditable: 'false' }), `{{${node.attrs.key}}}`],\n\trenderText: ({ node }) => `{{${node.attrs.key}}}`,\n});\nconst extensions = [StarterKit.configure({ link: { openOnClick: false } }), PlaceholderToken];\nexport function BodyEditor({ body, disabled, onChange, adapterRef, strings }: {\n\tbody: EmailBody;\n\tdisabled: boolean;\n\tonChange: (body: EmailBody) => void;\n\tadapterRef: Ref<ComposerEditorAdapter>;\n\tstrings: EmailComposerStrings;\n}) {\n\tconst latest = useRef(onChange);\n\tlatest.current = onChange;\n\tconst programmatic = useRef(false);\n\tconst [linkOpen, setLinkOpen] = useState(false);\n\tconst [url, setUrl] = useState('');\n\tconst [linkError, setLinkError] = useState('');\n\tconst selection = useRef({ from: 1, to: 1 });\n\tconst toolbarStrings = useStrings(defaultRichTextEditorStrings, { editorLabel: strings.body, toolbar: strings.toolbar });\n\tconst editor = useEditor({ extensions, immediatelyRender: false, shouldRerenderOnTransaction: true,\n\t\tcontent: body.kind === 'rich' ? body.document : bodyHtml(body), editable: !disabled,\n\t\teditorProps: { attributes: { role: 'textbox', 'aria-label': strings.body, 'aria-multiline': 'true', class: editableContentClassName } },\n\t\tonUpdate: ({ editor: current }) => { if (!programmatic.current)\n\t\t\tlatest.current({ kind: 'rich', document: current.getJSON() }); },\n\t});\n\tuseEffect(() => {\n\t\tif (!editor)\n\t\t\treturn;\n\t\ttry {\n\t\t\tconst document = body.kind === 'rich' ? editor.schema.nodeFromJSON(body.document).toJSON() : generateJSON(bodyHtml(body), extensions);\n\t\t\tif (JSON.stringify(editor.getJSON()) !== JSON.stringify(document)) editor.commands.setContent(document, { emitUpdate: false });\n\t\t} catch { /* The preparation engine reports unsupported imported document nodes. */ }\n\t});\n\tuseEffect(() => { editor?.setEditable(!disabled && body.kind !== 'html', false); }, [editor, disabled, body.kind]);\n\tuseEffect(() => { if (disabled || body.kind === 'html') setLinkOpen(false); }, [disabled, body.kind]);\n\tuseImperativeHandle(adapterRef, () => {\n\t\tconst mutate = (operation: () => void): EmailBody => {\n\t\t\tif (!editor)\n\t\t\t\tthrow new Error(strings.editorNotReady);\n\t\t\tprogrammatic.current = true;\n\t\t\ttry {\n\t\t\t\toperation();\n\t\t\t\treturn { kind: 'rich', document: editor.getJSON() };\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tprogrammatic.current = false;\n\t\t\t}\n\t\t};\n\t\treturn {\n\t\t\tsynchronize: value => {\n\t\t\t\tif (!editor) return;\n\t\t\t\tconst document = value.kind === 'rich' ? editor.schema.nodeFromJSON(value.document).toJSON() : generateJSON(bodyHtml(value), extensions);\n\t\t\t\tif (JSON.stringify(editor.getJSON()) !== JSON.stringify(document)) editor.commands.setContent(document, { emitUpdate: false });\n\t\t\t},\n\t\t\tfocus: () => { editor?.commands.focus(); },\n\t\t\tconvert: value => ({ kind: 'rich', document: value.kind === 'rich' ? value.document : generateJSON(bodyHtml(value), extensions) }),\n\t\t\tinsert: (value, mode) => mutate(() => { if (mode === 'append')\n\t\t\t\teditor!.commands.focus('end'); editor!.chain().focus().insertContent(value.kind === 'rich' ? value.document.content ?? [] : bodyHtml(value)).run(); }),\n\t\t\tinsertText: text => mutate(() => { if (text)\n\t\t\t\teditor!.chain().focus().insertContent({ type: 'text', text }).run(); }),\n\t\t\tinsertPlaceholder: key => mutate(() => { editor!.chain().focus().insertContent({ type: 'placeholderToken', attrs: { key } }).run(); }),\n\t\t};\n\t}, [editor, strings]);\n\tconst buttons: ToolbarButtonConfig[] = [\n\t\t{ id: 'bold', icon: Bold, label: toolbarStrings.toolbar.bold, isActive: () => !!editor?.isActive('bold'), run: () => { editor?.chain().focus().toggleBold().run(); } },\n\t\t{ id: 'italic', icon: Italic, label: toolbarStrings.toolbar.italic, isActive: () => !!editor?.isActive('italic'), run: () => { editor?.chain().focus().toggleItalic().run(); } },\n\t\t{ id: 'bullet', icon: List, label: toolbarStrings.toolbar.bulletList, isActive: () => !!editor?.isActive('bulletList'), run: () => { editor?.chain().focus().toggleBulletList().run(); } },\n\t\t{ id: 'ordered', icon: ListOrdered, label: toolbarStrings.toolbar.orderedList, isActive: () => !!editor?.isActive('orderedList'), run: () => { editor?.chain().focus().toggleOrderedList().run(); } },\n\t\t{ id: 'undo', icon: Undo2, label: toolbarStrings.toolbar.undo, isActive: () => false, run: () => { editor?.chain().focus().undo().run(); }, disabled: !editor?.can().undo() },\n\t\t{ id: 'redo', icon: Redo2, label: toolbarStrings.toolbar.redo, isActive: () => false, run: () => { editor?.chain().focus().redo().run(); }, disabled: !editor?.can().redo() },\n\t];\n\treturn <Stack gap=\"none\" className={cn(\"email-composer--editor\", richTextEditorRecipes.frame, disabled && richTextEditorRecipes.disabled)}>\n <RichTextEditorToolbar buttons={buttons} disabled={disabled} hasEditor={!!editor} sourceMode={false} hideSourceToggle toggleSourceMode={() => { }} strings={toolbarStrings} extraToolbarItems={[{ id: 'link', icon: Link, label: strings.link, onClick: () => { if (!editor)\n\t\t\t\treturn; selection.current = { from: editor.state.selection.from, to: editor.state.selection.to }; setUrl(String(editor.getAttributes('link').href ?? '')); setLinkError(''); setLinkOpen(true); } }]}/>\n <EditorContent editor={editor} className={cn(richTextEditorRecipes.content, \"min-h-64 w-full min-w-0 [&_.ProseMirror]:min-h-64\")}/>\n <ActionDialog open={linkOpen} onOpenChange={setLinkOpen} title={strings.linkTitle} strings={{ confirm: strings.apply, cancel: strings.cancel, close: strings.closeLink }} closeOnAsyncComplete={false} onAsyncConfirm={async () => {\n\t\t\tconst next = url.trim();\n\t\t\tif (next && !/^(https?:\\/\\/|mailto:)/i.test(next)) {\n\t\t\t\tsetLinkError(strings.invalidLink);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teditor?.commands.setTextSelection(selection.current);\n\t\t\tif (next)\n\t\t\t\teditor?.chain().focus().extendMarkRange('link').setLink({ href: next }).run();\n\t\t\telse\n\t\t\t\teditor?.chain().focus().extendMarkRange('link').unsetLink().run();\n\t\t\tsetLinkOpen(false);\n\t\t}}>\n <Stack gap=\"md\"><FormField label={strings.linkUrl}><Input value={url} onChange={e => setUrl(e.target.value)}/></FormField>{linkError && <Alert tone=\"destructive\"><AlertDescription>{linkError}</AlertDescription></Alert>}</Stack>\n </ActionDialog>\n </Stack>;\n}\n","import { Card } from '../../../base/cards';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport type { EmailComposerStrings } from '../strings';\nexport function HtmlPreview({ html, subject, strings }: {\n\thtml: string;\n\tsubject: string;\n\tstrings: EmailComposerStrings;\n}) {\n\treturn <Stack gap=\"normal\" className=\"min-w-0\">\n <Text type=\"secondary\">{strings.subject}: {subject}</Text>\n <Card surface=\"card\" padding=\"none\"><iframe title={strings.previewLabel} sandbox=\"\" referrerPolicy=\"no-referrer\" className=\"h-80 w-full border-0\" srcDoc={`<!doctype html><html><head><meta charset=\"utf-8\"><meta name=\"color-scheme\" content=\"only light\"><meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'none'; img-src https:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none';\"></head><body>${html}</body></html>`}/></Card>\n </Stack>;\n}\n","'use client';\nimport { useId, useState } from 'react';\nimport { Send, X } from 'lucide-react';\nimport { Card } from '../../base/cards';\nimport { Button } from '../../base/buttons';\nimport { ActionButtons, ActionMenu } from '../../base/action-menu';\nimport { Stack } from '../../base/structure';\nimport { FormField } from '../../base/forms/form-field';\nimport { Input } from '../../base/text-inputs';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../base/navigation';\nimport { ScrollArea } from '../../base/display';\nimport { SmartAccordion } from '../../base/accordion';\nimport { PopoverMenu } from '../../base/popover-menu';\nimport { Alert, AlertDescription, AlertTitle } from '../../base/feedback';\nimport { ActionDialog, ActionDrawer, ConfirmDialog } from '../overlays';\nimport { cn } from '../../../lib/utils';\nimport { useComposer } from './use-composer';\nimport { RecipientField } from './partials/recipients';\nimport { ComposerDataStatus, dataUnavailable } from './partials/data-status';\nimport { Variables } from './partials/variables';\nimport { BodyEditor } from './partials/body-editor';\nimport { HtmlPreview } from './partials/html-preview';\nimport type { EmailComposerProps, ComposerAction } from './types';\nexport function EmailComposer<C = Record<string, never>, K extends string = string>(props: EmailComposerProps<C, K>) {\n\tconst model = useComposer(props);\n\tconst { api, draft, strings, busy, state } = model;\n\tconst [view, setView] = useState('editor');\n\tconst [variablesOpen, setVariablesOpen] = useState(props.placeholders?.showEditor ?? false);\n\tconst [cc, setCc] = useState(false);\n\tconst [bcc, setBcc] = useState(false);\n\tconst [convertOpen, setConvertOpen] = useState(false);\n\tconst id = useId();\n\tconst preview = view === 'preview' || draft.body.kind === 'html';\n\tconst actions = (position: NonNullable<ComposerAction<K>['position']>) => (props.actions ?? []).filter(a => (a.position ?? 'toolbar') === position && (a.visible?.(state) ?? true)).map(action => ({ id: action.id, label: action.label, icon: action.icon, disabled: busy || action.disabled?.(state), onClick: () => { void model.runAction(action); }, buttonStyle: 'ghost' as const, tone: 'secondary' as const }));\n\tconst footer = <Stack direction={{ base: 'vertical', sm: 'horizontal' }} gap=\"sm\" align={{ base: 'stretch', sm: 'center' }} justify=\"between\" className=\"w-full\">\n <Stack direction=\"horizontal\" gap=\"sm\">\n {props.buttons?.discard !== false && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" disabled={busy} onClick={() => { void api.discard(); }}>{props.buttons?.discard?.label ?? strings.discard}</Button>}\n <ActionButtons actions={actions('footer-start')}/>\n </Stack>\n <Stack direction=\"horizontal\" gap=\"sm\" justify=\"end\">\n <ActionButtons actions={actions('footer-end')}/>\n {!!actions('overflow').length && <ActionMenu actions={actions('overflow')} srText={strings.more} buttonProps={{ disabled: busy }}/>}\n {props.buttons?.send !== false && <Button type=\"button\" tone=\"primary\" disabled={busy || model.dataPending} loading={busy} strings={{ loading: strings.working }} onClick={() => { void api.send(); }}><Send className=\"size-icon\"/>{busy ? strings.working : props.buttons?.send?.label ?? strings.send}</Button>}\n </Stack>\n </Stack>;\n\tconst fieldError = (field: string) => model.attempted ? state.issues.find(issue => issue.field === field)?.message : undefined;\n\tconst body = <Stack gap=\"lg\" className=\"email-composer--body min-w-0\">\n <Stack gap=\"md\" className=\"email-composer--details\">\n <Stack gap=\"md\">\n {(['to', 'cc', 'bcc'] as const).filter(field => field === 'to' || field === 'cc' && (cc || draft.cc.length || dataUnavailable(props.recipients?.cc)) || field === 'bcc' && (bcc || draft.bcc.length || dataUnavailable(props.recipients?.bcc))).map(field => <RecipientField key={field} field={field} value={draft[field]} options={props.recipients?.[field]} strings={strings} busy={busy} report={model.report} error={fieldError(field)} onChange={value => model.changeRecipients(field, value)} actions={field === 'to' ? <>\n {!cc && !draft.cc.length && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => setCc(true)}>{strings.cc}</Button>}\n {!bcc && !draft.bcc.length && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => setBcc(true)}>{strings.bcc}</Button>}\n </> : undefined}/>)}\n </Stack>\n <FormField label={strings.subject} required htmlFor={`${id}-subject`} error={fieldError('subject')} supportingTextId={`${id}-subject-error`}><Input id={`${id}-subject`} value={draft.subject} readOnly={props.subject?.readOnly} disabled={busy} invalid={!!fieldError('subject')} aria-describedby={fieldError('subject') ? `${id}-subject-error` : undefined} onChange={e => model.changeSubject(e.target.value)}/></FormField>\n </Stack>\n <Tabs value={preview ? 'preview' : 'editor'} onValueChange={value => { if (value) setView(value); }}>\n <Card surface=\"flat\" padding=\"none\" contentGap=\"md\" title={strings.body} headerAction={<TabsList><TabsTrigger value=\"editor\" disabled={draft.body.kind === 'html'}>{strings.editor}</TabsTrigger><TabsTrigger value=\"preview\">{strings.preview}</TabsTrigger></TabsList>}>\n {(!!props.templates || !!model.templates.length || actions('toolbar').length > 0) && <Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" className=\"email-composer--message-actions\">\n {(props.templates || !!model.templates.length) && <PopoverMenu trigger={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" size=\"sm\" disabled={busy}>{strings.templates}</Button>} items={model.templates.map(t => ({ value: t.id, label: t.name, description: t.description ?? t.category, data: t }))} onSelect={item => { try { api.applyTemplate(item.value); } catch (cause) { model.report(cause); } }} loading={props.templates?.loading} error={props.templates?.error} onRetry={props.templates?.onRetry ? () => { void Promise.resolve().then(props.templates!.onRetry).catch(model.report); } : undefined} onOpenChange={props.templates?.onOpenChange} strings={{ searchPlaceholder: strings.searchTemplates, empty: strings.noTemplates, loading: strings.loadingTemplates, retry: strings.retry }}/>}\n {props.templates?.allowImport && props.templates.onImport && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" disabled={busy} onClick={() => { void model.importTemplate(); }}>{strings.importTemplate}</Button>}\n <ActionButtons size=\"sm\" actions={actions('toolbar')}/>\n </Stack>}\n <TabsContent value=\"editor\" keepMounted><BodyEditor body={draft.body} disabled={busy || preview} onChange={model.changeBody} adapterRef={model.editorRef} strings={strings}/></TabsContent>\n <TabsContent value=\"preview\">{model.rendered && <HtmlPreview html={model.rendered.email.html} subject={model.rendered.email.subject} strings={strings}/>}</TabsContent>\n </Card>\n </Tabs>\n {(!!Object.keys(model.definitions).length || dataUnavailable(props.placeholders)) && <SmartAccordion value={variablesOpen ? ['variables'] : []} onValueChange={values => setVariablesOpen(values.includes('variables'))} items={[{ value: 'variables', title: strings.variables, description: strings.variablesDescription, content: dataUnavailable(props.placeholders) ? <ComposerDataStatus state={props.placeholders} label={strings.loadingVariables} retryLabel={strings.retry} report={model.report} /> : <Variables definitions={model.definitions} values={model.values} draft={draft} api={api} strings={strings} busy={busy} editable={!preview}/> }]}/>}\n {draft.body.kind === 'html' && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" disabled={busy} onClick={() => setConvertOpen(true)}>{strings.convert}</Button>}\n {(model.error || (!model.dataPending && model.renderError)) && <Alert tone=\"destructive\"><AlertTitle>{strings.errorTitle}</AlertTitle><AlertDescription>{model.error || model.renderError}</AlertDescription></Alert>}\n {model.notice && <Alert tone=\"success\" role=\"status\"><AlertDescription>{model.notice}</AlertDescription></Alert>}\n {props.children?.(api)}\n </Stack>;\n\tconst title = props.title ?? strings.title;\n\tconst close = props.onClose ? <Button type=\"button\" iconOnly tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" disabled={busy} aria-label={strings.close} onClick={props.onClose}><X className=\"size-icon\"/></Button> : undefined;\n\tlet surface;\n\tconst rootClass = cn('email-composer--component min-w-0', props.className);\n\tif (props.position === 'dialog' || props.position === 'sheet') {\n\t\tconst common = { open: true, title, description: props.description, onOpenChange: (open: boolean) => { if (!open && !busy)\n\t\t\t\tprops.onClose?.(); }, closeOnEscape: !busy && !!props.onClose, closeOnBackdropClick: false, loading: busy, strings: { close: strings.close }, showCancel: false, showConfirm: false, showCloseButton: !!props.onClose && !busy, footer, className: rootClass };\n\t\tsurface = props.position === 'dialog' ? <ActionDialog {...common} size=\"3xl\" showCloseButton={!!props.onClose && !busy}>{body}</ActionDialog> : <ActionDrawer {...common} width=\"3xl\">{body}</ActionDrawer>;\n\t}\n\telse {\n\t\tconst card = <Card className={rootClass} surface=\"card\" title={title} description={props.description} headerAction={close} headerClassName={props.position === 'floating' && close ? 'flex-nowrap [&>.card--header-start]:basis-0 [&>.card--header-end]:shrink-0' : undefined} headerDivider footerDivider footerSlot={footer}>{body}</Card>;\n\t\tsurface = props.position === 'floating' ? <div className=\"fixed bottom-space-md end-space-md z-40 w-[min(42rem,calc(100vw-2rem))]\"><ScrollArea className=\"max-h-[calc(100dvh-2rem)]\" viewportClassName=\"max-h-[calc(100dvh-2rem)]\">{card}</ScrollArea></div> : card;\n\t}\n\treturn <>{surface}<ConfirmDialog open={convertOpen} onOpenChange={setConvertOpen} title={strings.convertTitle} description={strings.convertDescription} strings={{ confirm: strings.convert, cancel: strings.cancel, close: strings.closeConversion }} onConfirm={() => { if (!busy && model.editorRef.current) {\n\t\tapi.setBody(model.editorRef.current.convert(draft.body));\n\t\tsetView('editor');\n\t} }}/></>;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"email-composer.js","names":["_Fragment","_Fragment","Text","Stack","AlertDescription","Alert","Card","AlertTitle","LoadingState","ErrorState","ActionMenu","ActionButtons","ActionDrawer","ActionDialog","ConfirmDialog","editableContentClassName","SmartAccordion","Input","FormField","InputGroup","InputGroupInput","Textarea","InputGroupAddon","InputGroupButton","Select","ScrollArea","TabsTrigger","TabsContent","TabsList","Tabs","PopoverMenu","RichTextEditorToolbar","richTextEditorRecipes","defaultRichTextEditorStrings","renderEmail","bodyHtml","recipientLabel","emptyDocument","inspectDraft","resolveValues","parseRecipient","validate","createHttpSender","defaultEmailComposerStrings","Fragment$1","StarterKit","dataUnavailable","state","ComposerDataStatus","report","useComposer","strings","useStrings","props","baseline","useRef","local","setLocal","useState","draft","latest","localRef","editorRef","activity","busy","setBusy","error","setError","notice","setNotice","attempted","setAttempted","imported","setImported","mounted","definitions","useMemo","result","set","key","templates","registry","t","current","templateFor","value","evaluationCache","inspect","context","template","copy","cached","dataIssues","currentProps","issues","field","dataPending","issuesFor","snapshot","unresolved","err","cause","commit","internal","next","updater","operation","run","fromAction","token","kind","callback","parent","adapter","applyTemplate","mode","options","item","body","implementationRef","stableApiRef","subject","recipients","id","text","api","prepare","i","send","handlers","email","discard","original","d","useImperativeHandle","runAction","action","importTemplate","items","rendered","RecipientEntry","entry","setEntry","recipient","readOnly","disabled","canRemove","change","errorId","index","event","add","remove","X","Plus","RecipientField","adding","setAdding","useId","addition","canAdd","showAddition","unavailable","r","onChange","startAdding","actions","Variables","prefix","AdaptiveGrid","definition","overridden","common","values","control","Button","editable","PlaceholderToken","Node","element","mergeAttributes","HTMLAttributes","node","extensions","BodyEditor","programmatic","linkOpen","setLinkOpen","url","setUrl","linkError","setLinkError","selection","toolbarStrings","editor","useEditor","useEffect","document","generateJSON","adapterRef","mutate","buttons","Bold","Italic","List","ListOrdered","Undo2","Redo2","cn","Link","EditorContent","HtmlPreview","html","EmailComposer","model","view","setView","variablesOpen","setVariablesOpen","cc","setCc","bcc","setBcc","convertOpen","setConvertOpen","preview","a","position","footer","fieldError","issue","title","close","surface","rootClass","open","card"],"sources":["../../src/components/features/email-composer/partials/data-status.tsx","../../src/components/features/email-composer/use-composer.ts","../../src/components/features/email-composer/partials/recipients.tsx","../../src/components/features/email-composer/partials/variables.tsx","../../src/components/features/email-composer/partials/body-editor.tsx","../../src/components/features/email-composer/partials/html-preview.tsx","../../src/components/features/email-composer/email-composer.tsx"],"sourcesContent":["import { LoadingState, ErrorState } from '../../../base/feedback';\nimport type { ComposerDataState } from '../types';\n\nexport function dataUnavailable(state?: ComposerDataState) {\n\treturn !!(state?.loading || state?.error);\n}\n\nexport function ComposerDataStatus({ state, label, retryLabel, report }: {\n\tstate?: ComposerDataState;\n\tlabel: string;\n\tretryLabel: string;\n\treport: (cause: unknown) => void;\n}) {\n\tif (state?.loading) return <LoadingState label={label} />;\n\tif (!state?.error) return null;\n\treturn <ErrorState variant=\"inline\" description={state.error} retryLabel={retryLabel} onRetry={state.onRetry ? () => { void Promise.resolve().then(state.onRetry).catch(report); } : undefined} />;\n}\n","import { useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { useStrings } from '../../../lib/strings';\nimport { emptyDocument } from './document';\nimport { inspectDraft } from './engine';\nimport { defaultEmailComposerStrings } from './strings';\nimport type { ComposerIssue } from './types';\nimport { dataUnavailable } from './partials/data-status';\nimport type { ComposerApi, ComposerDraft, ComposerAction, EditSource, EmailBody, EmailComposerProps, EmailTemplate, PlaceholderDefinition, TemplateOptions } from './types';\nexport interface ComposerEditorAdapter {\n\tsynchronize(body: EmailBody): void;\n\tinsert(body: EmailBody, mode: 'append' | 'insert'): EmailBody;\n\tinsertText(text: string): EmailBody;\n\tinsertPlaceholder(key: string): EmailBody;\n\tfocus(): void;\n\tconvert(body: EmailBody): EmailBody;\n}\nexport function useComposer<C, K extends string>(props: EmailComposerProps<C, K>) {\n\tconst strings = useStrings(defaultEmailComposerStrings, props.strings);\n\tconst baseline = useRef<ComposerDraft<K>>(null!);\n\tif (!baseline.current)\n\t\tbaseline.current = structuredClone({ to: [], cc: [], bcc: [], subject: '', body: { kind: 'rich', document: emptyDocument }, placeholderOverrides: {}, ...(props.value ?? props.defaultValue) });\n\tconst [local, setLocal] = useState(baseline.current);\n\tconst draft = props.value ?? local;\n\tconst latest = useRef({ props, draft, strings });\n\tlatest.current = { props, draft, strings };\n\tconst localRef = useRef(draft);\n\tif (props.value !== undefined)\n\t\tlocalRef.current = props.value;\n\tconst editorRef = useRef<ComposerEditorAdapter | null>(null);\n\tconst activity = useRef<'send' | 'discard' | 'action' | 'import' | null>(null);\n\tconst [busy, setBusy] = useState(false);\n\tconst [error, setError] = useState('');\n\tconst [notice, setNotice] = useState('');\n\tconst [attempted, setAttempted] = useState(false);\n\tconst [imported, setImported] = useState<EmailTemplate<K>[]>([]);\n\tconst mounted = useRef(true);\n\tuseEffect(() => { mounted.current = true; return () => { mounted.current = false; }; }, []);\n\tconst definitions = useMemo(() => {\n\t\tconst result: Partial<Record<K, PlaceholderDefinition<C>>> = Object.create(null);\n\t\tfor (const set of props.placeholders?.sets ?? [])\n\t\t\tfor (const key of Object.keys(set.definitions) as K[]) {\n\t\t\t\tif (Object.hasOwn(result, key))\n\t\t\t\t\tthrow new Error(strings.duplicateVariable(key));\n\t\t\t\tif (set.definitions[key])\n\t\t\t\t\tresult[key] = set.definitions[key];\n\t\t\t}\n\t\treturn result;\n\t}, [props.placeholders?.sets, strings]);\n\tconst templates = useMemo(() => [...(props.templates?.items ?? []), ...imported], [props.templates?.items, imported]);\n\tconst registry = useRef(templates);\n\tregistry.current = templates;\n\tif (new Set(templates.map(t => t.id)).size !== templates.length)\n\t\tthrow new Error(strings.duplicateTemplate);\n\tconst current = () => latest.current.props.value ?? localRef.current;\n\tconst templateFor = (value: ComposerDraft<K>) => templates.find(t => t.id === value.templateId);\n\tconst evaluationCache = useRef<{\n\t\tdraft: ComposerDraft<K>;\n\t\tcontext: C;\n\t\tdefinitions: typeof definitions;\n\t\ttemplate: EmailTemplate<K> | undefined;\n\t\tstrings: typeof strings;\n\t\tresult: ReturnType<typeof inspectDraft<C, K>>;\n\t} | null>(null);\n\tconst inspect = (value = current()) => {\n\t\tconst context = latest.current.props.context;\n\t\tconst template = templateFor(value);\n\t\tconst copy = latest.current.strings;\n\t\tconst cached = evaluationCache.current;\n\t\tif (cached && cached.draft === value && cached.context === context && cached.definitions === definitions && cached.template === template && cached.strings === copy)\n\t\t\treturn cached.result;\n\t\tconst result = inspectDraft(value, context, definitions, template, copy);\n\t\tevaluationCache.current = { draft: value, context, definitions, template, strings: copy, result };\n\t\treturn result;\n\t};\n\tconst dataIssues = (): ComposerIssue[] => {\n\t\tconst { props: currentProps, strings: copy } = latest.current;\n\t\tconst issues: ComposerIssue[] = [];\n\t\tfor (const field of ['to', 'cc', 'bcc'] as const) if (dataUnavailable(currentProps.recipients?.[field])) issues.push({ field, message: copy.dataUnavailable });\n\t\tif (dataUnavailable(currentProps.placeholders)) issues.push({ field: 'placeholders', message: copy.dataUnavailable });\n\t\treturn issues;\n\t};\n\tconst dataPending = dataIssues().length > 0;\n\tconst issuesFor = (value = current()) => structuredClone([...dataIssues(), ...inspect(value).issues]);\n\tconst snapshot = () => {\n\t\tconst value = current();\n\t\tconst result = inspect(value);\n\t\tconst unresolved = [...(result.rendered?.unresolved ?? [])];\n\t\treturn { draft: structuredClone(value), dirty: JSON.stringify(value) !== JSON.stringify(baseline.current), busy: activity.current !== null, issues: issuesFor(value), unresolvedPlaceholders: unresolved };\n\t};\n\tconst report = (cause: unknown) => {\n\t\tconst err = cause instanceof Error ? cause : new Error(String(cause));\n\t\tif (mounted.current)\n\t\t\tsetError(err.message);\n\t\tlatest.current.props.onError?.(err);\n\t};\n\tconst commit = (updater: (value: ComposerDraft<K>) => ComposerDraft<K>, source: EditSource = 'api', internal = false) => {\n\t\tif (!mounted.current || (!internal && activity.current && activity.current !== 'action'))\n\t\t\treturn;\n\t\tconst next = structuredClone(updater(structuredClone(current())));\n\t\tif (latest.current.props.value === undefined) {\n\t\t\tlocalRef.current = next;\n\t\t\tsetLocal(next);\n\t\t}\n\t\tlatest.current.props.onChange?.(structuredClone(next));\n\t\tlatest.current.props.onEdit?.(structuredClone(next), { source });\n\t\tsetError('');\n\t\tsetNotice('');\n\t};\n\ttype Operation = { settled: boolean; parent: Operation | null; kind: NonNullable<typeof activity.current> };\n\tconst operation = useRef<Operation | null>(null);\n\tasync function run(kind: NonNullable<typeof activity.current>, callback: () => Promise<void>, fromAction = false) {\n\t\tif ((activity.current && !(fromAction && activity.current === 'action')) || !mounted.current)\n\t\t\treturn;\n\t\tconst token: Operation = { kind, settled: false, parent: fromAction ? operation.current : null };\n\t\toperation.current = token;\n\t\tactivity.current = kind;\n\t\tsetBusy(true);\n\t\tsetError('');\n\t\tsetNotice('');\n\t\ttry {\n\t\t\tawait callback();\n\t\t}\n\t\tcatch (cause) {\n\t\t\treport(cause);\n\t\t}\n\t\tfinally {\n\t\t\ttoken.settled = true;\n\t\t\tif (operation.current === token) {\n\t\t\t\tlet parent = token.parent;\n\t\t\t\twhile (parent?.settled) parent = parent.parent;\n\t\t\t\toperation.current = parent;\n\t\t\t\tactivity.current = parent?.kind ?? null;\n\t\t\t\tif (mounted.current) setBusy(parent !== null);\n\t\t\t}\n\t\t}\n\t}\n\tconst adapter = () => { if (!editorRef.current)\n\t\tthrow new Error(strings.editorNotReady); if (current().body.kind === 'html')\n\t\tthrow new Error(strings.editableRequired); editorRef.current.synchronize(current().body); return editorRef.current; };\n\tfunction applyTemplate(item: EmailTemplate<K>, options: TemplateOptions = {}, internal = false) {\n\t\tif (!internal && activity.current && activity.current !== 'action')\n\t\t\treturn;\n\t\tconst mode = options.body ?? 'replace';\n\t\tif (mode !== 'replace' && (item.body.kind === 'html' || current().body.kind === 'html'))\n\t\t\tthrow new Error(strings.editableRequired);\n\t\tconst body = mode === 'replace' ? item.body : adapter().insert(item.body, mode);\n\t\tcommit(value => ({ ...value, body, subject: options.subject === 'preserve' ? value.subject : item.subject ?? value.subject, templateId: item.id, placeholderOverrides: options.overrides === 'reset' ? {} : value.placeholderOverrides }), 'template', internal);\n\t}\n\tconst implementationRef = useRef<ComposerApi<K>>(null!);\n\tconst stableApiRef = useRef<ComposerApi<K>>(null!);\n\tif (!stableApiRef.current) stableApiRef.current = {\n\t\tgetState: () => implementationRef.current.getState(),\n\t\tupdate: (updater) => implementationRef.current.update(updater),\n\t\tsetSubject: (subject) => implementationRef.current.setSubject(subject),\n\t\tsetRecipients: (field, recipients) => implementationRef.current.setRecipients(field, recipients),\n\t\tsetBody: (body) => implementationRef.current.setBody(body),\n\t\timportBody: (body) => implementationRef.current.importBody(body),\n\t\tsetPlaceholder: (key, value) => implementationRef.current.setPlaceholder(key, value),\n\t\tclearPlaceholderOverride: (key) => implementationRef.current.clearPlaceholderOverride(key),\n\t\tinsertPlaceholder: (key) => implementationRef.current.insertPlaceholder(key),\n\t\tapplyTemplate: (id, options) => implementationRef.current.applyTemplate(id, options),\n\t\tinsertText: (text) => implementationRef.current.insertText(text),\n\t\tfocusBody: () => implementationRef.current.focusBody(),\n\t\tvalidate: () => implementationRef.current.validate(),\n\t\tprepare: () => implementationRef.current.prepare(),\n\t\tsend: () => implementationRef.current.send(),\n\t\tdiscard: () => implementationRef.current.discard(),\n\t};\n\tconst api = stableApiRef.current;\n\tconst prepare = async () => { if (dataIssues().length) throw new Error(latest.current.strings.dataUnavailable); const result = inspect(); if (result.issues.length || !result.rendered)\n\t\tthrow new Error(result.issues.map(i => i.message).join(' ')); return structuredClone(result.rendered.email); };\n\tconst send = (fromAction = false) => run('send', async () => {\n\t\tconst handlers = latest.current.props;\n\t\tsetAttempted(true);\n\t\tlet email = await prepare();\n\t\tif (handlers.onBeforeSend) {\n\t\t\tconst next = await handlers.onBeforeSend(email, api);\n\t\t\tif (next === false || !mounted.current)\n\t\t\t\treturn;\n\t\t\temail = next;\n\t\t}\n\t\tif (!mounted.current)\n\t\t\treturn;\n\t\t// Delivery adapters receive their own payload; success reports the reviewed snapshot.\n\t\temail = structuredClone(email);\n\t\tawait handlers.onSend(structuredClone(email));\n\t\tif (mounted.current) {\n\t\t\tsetNotice(strings.sent);\n\t\t\thandlers.onSent?.(email);\n\t\t}\n\t}, fromAction);\n\tconst discard = (fromAction = false) => run('discard', async () => {\n\t\tconst handlers = latest.current.props;\n\t\tconst original = current();\n\t\tawait handlers.onDiscard?.(api);\n\t\tif (!mounted.current || current() !== original)\n\t\t\treturn;\n\t\tcommit(() => baseline.current, 'api', true);\n\t\tsetAttempted(false);\n\t\tsetNotice(strings.discarded);\n\t\thandlers.onClose?.();\n\t}, fromAction);\n\tconst implementation: ComposerApi<K> = {\n\t\tgetState: snapshot,\n\t\tupdate: updater => commit(updater),\n\t\tsetSubject: subject => commit(value => ({ ...value, subject })),\n\t\tsetRecipients: (field, recipients) => commit(value => ({ ...value, [field]: recipients })),\n\t\tsetBody: body => commit(value => ({ ...value, body })),\n\t\timportBody: body => commit(value => ({ ...value, body })),\n\t\tsetPlaceholder: (key, value) => {\n\t\t\tif (!Object.hasOwn(definitions, key))\n\t\t\t\tthrow new Error(strings.unknownVariable(key));\n\t\t\tcommit(d => ({ ...d, placeholderOverrides: { ...d.placeholderOverrides, [key]: value } }), 'placeholder');\n\t\t},\n\t\tclearPlaceholderOverride: key => commit(d => { delete d.placeholderOverrides[key]; return d; }, 'placeholder'),\n\t\tinsertPlaceholder: key => {\n\t\t\tif (activity.current && activity.current !== 'action')\n\t\t\t\treturn;\n\t\t\tif (!Object.hasOwn(definitions, key))\n\t\t\t\tthrow new Error(strings.unknownVariable(key));\n\t\t\tconst body = adapter().insertPlaceholder(key);\n\t\t\tcommit(d => ({ ...d, body }));\n\t\t},\n\t\tinsertText: text => { if (activity.current && activity.current !== 'action')\n\t\t\treturn; const body = adapter().insertText(text); commit(d => ({ ...d, body })); },\n\t\tfocusBody: () => editorRef.current?.focus(),\n\t\tapplyTemplate: (id, options) => { if (dataUnavailable(latest.current.props.templates)) throw new Error(latest.current.strings.templatesUnavailable); const item = templates.find(t => t.id === id); if (!item)\n\t\t\tthrow new Error(strings.unknownTemplate(id)); applyTemplate(item, options); },\n\t\tvalidate: () => issuesFor(),\n\t\tprepare, send: () => send(), discard: () => discard(),\n\t};\n\timplementationRef.current = implementation;\n\tuseImperativeHandle(props.apiRef, () => api, [api]);\n\tconst runAction = (action: ComposerAction<K>) => run('action', async () => { await action.onSelect(Object.assign(Object.create(api) as ComposerApi<K>, { send: () => send(true), discard: () => discard(true) })); });\n\tconst importTemplate = () => run('import', async () => {\n\t\tconst original = current();\n\t\tconst item = await latest.current.props.templates?.onImport?.();\n\t\tif (!item || !mounted.current)\n\t\t\treturn;\n\t\tif (registry.current.some(t => t.id === item.id))\n\t\t\tthrow new Error(strings.duplicateTemplate);\n\t\tsetImported(items => [...items, structuredClone(item)]);\n\t\t// A controlled parent may replace the message while import is pending.\n\t\tif (current() === original)\n\t\t\tapplyTemplate(item, {}, true);\n\t});\n\tconst { rendered, renderError } = inspect(draft);\n\tconst values = rendered?.email.resolvedPlaceholders ?? {};\n\treturn { api, draft, strings, busy, dataPending, error, notice, attempted, rendered, renderError, definitions, templates, values, editorRef, state: snapshot(), report, runAction, importTemplate,\n\t\tchangeBody: (body: EmailBody) => commit(d => ({ ...d, body }), 'body'),\n\t\tchangeSubject: (subject: string) => commit(d => ({ ...d, subject }), 'subject'),\n\t\tchangeRecipients: (field: 'to' | 'cc' | 'bcc', recipients: ComposerDraft<K>['to']) => commit(d => ({ ...d, [field]: recipients }), 'recipient'),\n\t};\n}\n","import { useEffect, useId, useRef, useState, type ReactNode } from 'react';\nimport { Plus, X } from 'lucide-react';\nimport { FormField } from '../../../base/forms/form-field';\nimport { InputGroup, InputGroupInput, InputGroupAddon, InputGroupButton } from '../../../base/text-inputs';\nimport { Stack } from '../../../base/structure';\nimport { parseRecipient, recipientLabel } from '../engine';\nimport type { Recipient, RecipientOptions } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nimport { ComposerDataStatus, dataUnavailable } from './data-status';\nfunction RecipientEntry({ recipient, field, index, options, busy, strings, change, remove, add, id, errorId }: {\n\tid: string;\n\terrorId?: string;\n\trecipient: Recipient;\n\tfield: string;\n\tindex: number;\n\toptions: RecipientOptions;\n\tbusy: boolean;\n\tstrings: EmailComposerStrings;\n\tchange: (value: Recipient) => void;\n\tremove: () => void;\n\tadd?: () => void;\n}) {\n\tconst [entry, setEntry] = useState(recipientLabel(recipient));\n\tuseEffect(() => { setEntry(recipientLabel(recipient)); }, [recipient.name, recipient.email]);\n\tconst readOnly = options.mode === 'readonly';\n\tconst disabled = options.mode === 'disabled' || busy;\n\tconst canRemove = options.mode !== 'disabled' && options.allowRemove !== false && (!readOnly || options.allowRemove === true);\n\tconst commit = () => { if (!readOnly && !disabled && entry !== recipientLabel(recipient))\n\t\tchange({ id: recipient.id, ...parseRecipient(entry) }); };\n\treturn <InputGroup className=\"min-w-0 w-full\">\n <InputGroupInput id={id} aria-invalid={!!errorId} aria-describedby={errorId} aria-label={strings.recipientLabel(field, index)} value={entry} readOnly={readOnly} disabled={disabled} title={recipientLabel(recipient)} onChange={event => setEntry(event.target.value)} onBlur={commit} onKeyDown={event => {\n\t\t\tif (event.key === 'Enter') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tcommit();\n\t\t\t}\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetEntry(recipientLabel(recipient));\n\t\t\t}\n\t\t}}/>\n {(canRemove || add) && <InputGroupAddon align=\"inline-end\">\n {canRemove && <InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.removeRecipient(recipient.email)} onClick={remove}><X className=\"size-icon\"/></InputGroupButton>}\n {add && <InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.addRecipient(field)} title={strings.addRecipient(field)} onClick={add}><Plus className=\"size-icon\"/></InputGroupButton>}\n </InputGroupAddon>}\n </InputGroup>;\n}\nexport function RecipientField({ field, value, options = {}, busy, strings, onChange, error, actions, report }: {\n\tfield: 'to' | 'cc' | 'bcc';\n\tvalue: Recipient[];\n\toptions?: RecipientOptions;\n\tbusy: boolean;\n\tstrings: EmailComposerStrings;\n\tonChange: (value: Recipient[]) => void;\n\terror?: string;\n\tactions?: ReactNode;\n\treport: (cause: unknown) => void;\n}) {\n\tconst [adding, setAdding] = useState(false);\n\tconst [entry, setEntry] = useState('');\n\tconst id = useId();\n\tconst errorId = error ? `${id}-error` : undefined;\n\tconst addition = useRef<HTMLInputElement>(null);\n\tconst canAdd = options.mode !== 'disabled' && options.allowAdd !== false && (options.mode !== 'readonly' || options.allowAdd === true);\n\tconst showAddition = adding || value.length === 0;\n\tconst unavailable = dataUnavailable(options);\n\tconst add = () => {\n\t\tif (busy || !canAdd || !showAddition || unavailable)\n\t\t\treturn;\n\t\tconst recipient = parseRecipient(entry);\n\t\tif (entry.trim() && !value.some(r => r.email.toLowerCase() === recipient.email.toLowerCase()))\n\t\t\tonChange([...value, recipient]);\n\t\tsetEntry('');\n\t\tsetAdding(false);\n\t};\n\tuseEffect(() => { if (adding) addition.current?.focus(); }, [adding]);\n\tconst startAdding = () => { if (showAddition) add(); setAdding(true); addition.current?.focus(); };\n\treturn <FormField label={strings[field]} required={field === 'to'} error={error} supportingTextId={errorId} htmlFor={value.length ? `${id}-0` : `${id}-new`}>\n <Stack id={`${id}-group`} gap=\"sm\">\n {unavailable ? <ComposerDataStatus state={options} label={strings.loadingRecipients(strings[field])} retryLabel={strings.retry} report={report} /> : <>\n {value.map((recipient, index) => <RecipientEntry key={recipient.id ?? index} id={`${id}-${index}`} errorId={errorId} recipient={recipient} field={strings[field]} index={index} options={options} busy={busy} strings={strings} change={next => onChange(value.map((r, i) => i === index ? next : r))} remove={() => onChange(value.filter((_, i) => i !== index))} add={canAdd && !showAddition && index === value.length - 1 ? startAdding : undefined} />)}\n {showAddition && <InputGroup className=\"min-w-0 w-full\">\n <InputGroupInput id={`${id}-new`} ref={addition} autoFocus={field !== 'to'} aria-invalid={!!error} aria-describedby={errorId} aria-label={strings.newRecipient(strings[field])} placeholder={strings.recipientPlaceholder} value={entry} disabled={busy || options.mode === 'disabled'} readOnly={!canAdd} onChange={e => setEntry(e.target.value)} onBlur={add} onKeyDown={e => {\n if (e.key === 'Enter') { e.preventDefault(); add(); }\n if (e.key === 'Escape') { e.preventDefault(); setEntry(''); setAdding(false); }\n }} />\n {canAdd && <InputGroupAddon align=\"inline-end\"><InputGroupButton type=\"button\" iconOnly size=\"sm\" disabled={busy} aria-label={strings.addRecipient(strings[field])} title={strings.addRecipient(strings[field])} onMouseDown={e => e.preventDefault()} onClick={startAdding}><Plus className=\"size-icon\" /></InputGroupButton></InputGroupAddon>}\n </InputGroup>}\n </>}\n {actions && <Stack direction=\"horizontal\" gap=\"xs\" justify=\"end\">{actions}</Stack>}\n </Stack>\n </FormField>;\n}\n","import { Plus } from 'lucide-react';\nimport { useId } from 'react';\nimport { AdaptiveGrid, Stack } from '../../../base/structure';\nimport { FormField } from '../../../base/forms/form-field';\nimport { Input, Textarea } from '../../../base/text-inputs';\nimport { Select } from '../../../base/choice-inputs';\nimport { Button } from '../../../base/buttons';\nimport type { ComposerApi, ComposerDraft, PlaceholderDefinition, PlaceholderValue } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nexport function Variables<C, K extends string>({ definitions, values, draft, api, strings, busy, editable }: {\n\tdefinitions: Partial<Record<K, PlaceholderDefinition<C>>>;\n\tvalues: Partial<Record<K, PlaceholderValue>>;\n\tdraft: ComposerDraft<K>;\n\tapi: ComposerApi<K>;\n\tstrings: EmailComposerStrings;\n\tbusy: boolean;\n\teditable: boolean;\n}) {\n\tconst prefix = useId();\n\treturn <AdaptiveGrid minColumnWidth=\"sm\" gap=\"md\">\n {(Object.keys(definitions) as K[]).map(key => {\n\t\t\tconst definition = definitions[key]!;\n\t\t\tconst overridden = Object.hasOwn(draft.placeholderOverrides, key);\n\t\t\tconst id = `${prefix}-email-variable-${key}`;\n\t\t\tconst common = { id, value: String(values[key] ?? ''), disabled: busy, readOnly: !definition.editable };\n\t\t\tconst control = definition.input === 'textarea' ? <Textarea {...common} onChange={e => api.setPlaceholder(key, e.target.value)}/> : definition.input === 'select' ?\n\t\t\t\t<Select {...common} placeholder={strings.choose} options={[...(definition.options ?? [])]} onValueChange={value => api.setPlaceholder(key, value ?? '')}/> :\n\t\t\t\t<Input {...common} type={definition.input === 'number' ? 'number' : definition.input === 'date' ? 'date' : 'text'} onChange={e => api.setPlaceholder(key, definition.input === 'number' && e.target.value !== '' ? Number(e.target.value) : e.target.value)}/>;\n\t\t\treturn <FormField key={key} label={definition.group ? `${definition.group} · ${definition.label}` : definition.label} htmlFor={id} required={definition.required} helperText={`${overridden ? strings.overridden : strings.dynamic}${definition.description ? ` · ${definition.description}` : ''}`}>\n\t<Stack id={`${id}-group`} direction=\"horizontal\" gap=\"sm\" align=\"start\" wrap={false}>\n\t <div className=\"min-w-0 flex-1\">{control}</div>\n\t <Button type=\"button\" iconOnly size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy || !editable} aria-label={strings.insertVariable(definition.label)} onClick={() => api.insertPlaceholder(key)}><Plus className=\"size-icon\"/></Button>\n\t {overridden && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => api.clearPlaceholderOverride(key)}>{strings.reset}</Button>}\n\t</Stack>\n </FormField>;\n\t\t})}\n </AdaptiveGrid>;\n}\n","import { useEffect, useImperativeHandle, useRef, useState, type Ref } from 'react';\nimport { EditorContent, Node, mergeAttributes, generateJSON, useEditor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport { Bold, Italic, List, ListOrdered, Undo2, Redo2, Link } from 'lucide-react';\nimport { richTextEditorRecipes } from '../../rich-text-editor/rich-text-editor.recipes';\nimport { cn } from '../../../../lib/utils';\nimport { RichTextEditorToolbar } from '../../rich-text-editor/partials/rich-text-editor-toolbar';\nimport { defaultRichTextEditorStrings } from '../../rich-text-editor/rich-text-editor.strings';\nimport type { ToolbarButtonConfig } from '../../rich-text-editor/rich-text-editor.types';\nimport { editableContentClassName } from '../../../typography/content-typography';\nimport { FormField } from '../../../base/forms/form-field';\nimport { Input } from '../../../base/text-inputs';\nimport { ActionDialog } from '../../overlays';\nimport { Stack } from '../../../base/structure';\nimport { Alert, AlertDescription } from '../../../base/feedback';\nimport { useStrings } from '../../../../lib/strings';\nimport { bodyHtml } from '../document';\nimport type { ComposerEditorAdapter } from '../use-composer';\nimport type { EmailBody } from '../types';\nimport type { EmailComposerStrings } from '../strings';\nconst PlaceholderToken = Node.create({\n\tname: 'placeholderToken', group: 'inline', inline: true, atom: true,\n\taddAttributes: () => ({ key: { default: '', parseHTML: element => element.getAttribute('data-placeholder') } }),\n\tparseHTML: () => [{ tag: 'span[data-placeholder]' }],\n\trenderHTML: ({ node, HTMLAttributes }) => ['span', mergeAttributes(HTMLAttributes, { 'data-placeholder': node.attrs.key, class: 'rounded-inner bg-accent text-accent-foreground', contenteditable: 'false' }), `{{${node.attrs.key}}}`],\n\trenderText: ({ node }) => `{{${node.attrs.key}}}`,\n});\nconst extensions = [StarterKit.configure({ link: { openOnClick: false } }), PlaceholderToken];\nexport function BodyEditor({ body, disabled, onChange, adapterRef, strings }: {\n\tbody: EmailBody;\n\tdisabled: boolean;\n\tonChange: (body: EmailBody) => void;\n\tadapterRef: Ref<ComposerEditorAdapter>;\n\tstrings: EmailComposerStrings;\n}) {\n\tconst latest = useRef(onChange);\n\tlatest.current = onChange;\n\tconst programmatic = useRef(false);\n\tconst [linkOpen, setLinkOpen] = useState(false);\n\tconst [url, setUrl] = useState('');\n\tconst [linkError, setLinkError] = useState('');\n\tconst selection = useRef({ from: 1, to: 1 });\n\tconst toolbarStrings = useStrings(defaultRichTextEditorStrings, { editorLabel: strings.body, toolbar: strings.toolbar });\n\tconst editor = useEditor({ extensions, immediatelyRender: false, shouldRerenderOnTransaction: true,\n\t\tcontent: body.kind === 'rich' ? body.document : bodyHtml(body), editable: !disabled,\n\t\teditorProps: { attributes: { role: 'textbox', 'aria-label': strings.body, 'aria-multiline': 'true', class: editableContentClassName } },\n\t\tonUpdate: ({ editor: current }) => { if (!programmatic.current)\n\t\t\tlatest.current({ kind: 'rich', document: current.getJSON() }); },\n\t});\n\tuseEffect(() => {\n\t\tif (!editor)\n\t\t\treturn;\n\t\ttry {\n\t\t\tconst document = body.kind === 'rich' ? editor.schema.nodeFromJSON(body.document).toJSON() : generateJSON(bodyHtml(body), extensions);\n\t\t\tif (JSON.stringify(editor.getJSON()) !== JSON.stringify(document)) editor.commands.setContent(document, { emitUpdate: false });\n\t\t} catch { /* The preparation engine reports unsupported imported document nodes. */ }\n\t});\n\tuseEffect(() => { editor?.setEditable(!disabled && body.kind !== 'html', false); }, [editor, disabled, body.kind]);\n\tuseEffect(() => { if (disabled || body.kind === 'html') setLinkOpen(false); }, [disabled, body.kind]);\n\tuseImperativeHandle(adapterRef, () => {\n\t\tconst mutate = (operation: () => void): EmailBody => {\n\t\t\tif (!editor)\n\t\t\t\tthrow new Error(strings.editorNotReady);\n\t\t\tprogrammatic.current = true;\n\t\t\ttry {\n\t\t\t\toperation();\n\t\t\t\treturn { kind: 'rich', document: editor.getJSON() };\n\t\t\t}\n\t\t\tfinally {\n\t\t\t\tprogrammatic.current = false;\n\t\t\t}\n\t\t};\n\t\treturn {\n\t\t\tsynchronize: value => {\n\t\t\t\tif (!editor) return;\n\t\t\t\tconst document = value.kind === 'rich' ? editor.schema.nodeFromJSON(value.document).toJSON() : generateJSON(bodyHtml(value), extensions);\n\t\t\t\tif (JSON.stringify(editor.getJSON()) !== JSON.stringify(document)) editor.commands.setContent(document, { emitUpdate: false });\n\t\t\t},\n\t\t\tfocus: () => { editor?.commands.focus(); },\n\t\t\tconvert: value => ({ kind: 'rich', document: value.kind === 'rich' ? value.document : generateJSON(bodyHtml(value), extensions) }),\n\t\t\tinsert: (value, mode) => mutate(() => { if (mode === 'append')\n\t\t\t\teditor!.commands.focus('end'); editor!.chain().focus().insertContent(value.kind === 'rich' ? value.document.content ?? [] : bodyHtml(value)).run(); }),\n\t\t\tinsertText: text => mutate(() => { if (text)\n\t\t\t\teditor!.chain().focus().insertContent({ type: 'text', text }).run(); }),\n\t\t\tinsertPlaceholder: key => mutate(() => { editor!.chain().focus().insertContent({ type: 'placeholderToken', attrs: { key } }).run(); }),\n\t\t};\n\t}, [editor, strings]);\n\tconst buttons: ToolbarButtonConfig[] = [\n\t\t{ id: 'bold', icon: Bold, label: toolbarStrings.toolbar.bold, isActive: () => !!editor?.isActive('bold'), run: () => { editor?.chain().focus().toggleBold().run(); } },\n\t\t{ id: 'italic', icon: Italic, label: toolbarStrings.toolbar.italic, isActive: () => !!editor?.isActive('italic'), run: () => { editor?.chain().focus().toggleItalic().run(); } },\n\t\t{ id: 'bullet', icon: List, label: toolbarStrings.toolbar.bulletList, isActive: () => !!editor?.isActive('bulletList'), run: () => { editor?.chain().focus().toggleBulletList().run(); } },\n\t\t{ id: 'ordered', icon: ListOrdered, label: toolbarStrings.toolbar.orderedList, isActive: () => !!editor?.isActive('orderedList'), run: () => { editor?.chain().focus().toggleOrderedList().run(); } },\n\t\t{ id: 'undo', icon: Undo2, label: toolbarStrings.toolbar.undo, isActive: () => false, run: () => { editor?.chain().focus().undo().run(); }, disabled: !editor?.can().undo() },\n\t\t{ id: 'redo', icon: Redo2, label: toolbarStrings.toolbar.redo, isActive: () => false, run: () => { editor?.chain().focus().redo().run(); }, disabled: !editor?.can().redo() },\n\t];\n\treturn <Stack gap=\"none\" className={cn(\"email-composer--editor\", richTextEditorRecipes.frame, disabled && richTextEditorRecipes.disabled)}>\n <RichTextEditorToolbar buttons={buttons} disabled={disabled} hasEditor={!!editor} sourceMode={false} hideSourceToggle toggleSourceMode={() => { }} strings={toolbarStrings} extraToolbarItems={[{ id: 'link', icon: Link, label: strings.link, onClick: () => { if (!editor)\n\t\t\t\treturn; selection.current = { from: editor.state.selection.from, to: editor.state.selection.to }; setUrl(String(editor.getAttributes('link').href ?? '')); setLinkError(''); setLinkOpen(true); } }]}/>\n <EditorContent editor={editor} className={cn(richTextEditorRecipes.content, \"min-h-64 w-full min-w-0 [&_.ProseMirror]:min-h-64\")}/>\n <ActionDialog open={linkOpen} onOpenChange={setLinkOpen} title={strings.linkTitle} strings={{ confirm: strings.apply, cancel: strings.cancel, close: strings.closeLink }} closeOnAsyncComplete={false} onAsyncConfirm={async () => {\n\t\t\tconst next = url.trim();\n\t\t\tif (next && !/^(https?:\\/\\/|mailto:)/i.test(next)) {\n\t\t\t\tsetLinkError(strings.invalidLink);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\teditor?.commands.setTextSelection(selection.current);\n\t\t\tif (next)\n\t\t\t\teditor?.chain().focus().extendMarkRange('link').setLink({ href: next }).run();\n\t\t\telse\n\t\t\t\teditor?.chain().focus().extendMarkRange('link').unsetLink().run();\n\t\t\tsetLinkOpen(false);\n\t\t}}>\n <Stack gap=\"md\"><FormField label={strings.linkUrl}><Input value={url} onChange={e => setUrl(e.target.value)}/></FormField>{linkError && <Alert tone=\"destructive\"><AlertDescription>{linkError}</AlertDescription></Alert>}</Stack>\n </ActionDialog>\n </Stack>;\n}\n","import { Card } from '../../../base/cards';\nimport { Text } from '../../../typography';\nimport { Stack } from '../../../base/structure';\nimport type { EmailComposerStrings } from '../strings';\nexport function HtmlPreview({ html, subject, strings }: {\n\thtml: string;\n\tsubject: string;\n\tstrings: EmailComposerStrings;\n}) {\n\treturn <Stack gap=\"normal\" className=\"min-w-0\">\n <Text type=\"secondary\">{strings.subject}: {subject}</Text>\n <Card surface=\"card\" padding=\"none\"><iframe title={strings.previewLabel} sandbox=\"\" referrerPolicy=\"no-referrer\" className=\"h-80 w-full border-0\" srcDoc={`<!doctype html><html><head><meta charset=\"utf-8\"><meta name=\"color-scheme\" content=\"only light\"><meta http-equiv=\"Content-Security-Policy\" content=\"default-src 'none'; img-src https:; style-src 'unsafe-inline'; base-uri 'none'; form-action 'none';\"></head><body>${html}</body></html>`}/></Card>\n </Stack>;\n}\n","'use client';\nimport { useId, useState } from 'react';\nimport { X } from 'lucide-react';\nimport { Card } from '../../base/cards';\nimport { Button } from '../../base/buttons';\nimport { ActionButtons, ActionMenu } from '../../base/action-menu';\nimport { Stack } from '../../base/structure';\nimport { FormField } from '../../base/forms/form-field';\nimport { Input } from '../../base/text-inputs';\nimport { Tabs, TabsList, TabsTrigger, TabsContent } from '../../base/navigation';\nimport { ScrollArea } from '../../base/display';\nimport { SmartAccordion } from '../../base/accordion';\nimport { PopoverMenu } from '../../base/popover-menu';\nimport { Alert, AlertDescription, AlertTitle } from '../../base/feedback';\nimport { ActionDialog, ActionDrawer, ConfirmDialog } from '../overlays';\nimport { cn } from '../../../lib/utils';\nimport { useComposer } from './use-composer';\nimport { RecipientField } from './partials/recipients';\nimport { ComposerDataStatus, dataUnavailable } from './partials/data-status';\nimport { Variables } from './partials/variables';\nimport { BodyEditor } from './partials/body-editor';\nimport { HtmlPreview } from './partials/html-preview';\nimport type { EmailComposerProps, ComposerAction } from './types';\nexport function EmailComposer<C = Record<string, never>, K extends string = string>(props: EmailComposerProps<C, K>) {\n\tconst model = useComposer(props);\n\tconst { api, draft, strings, busy, state } = model;\n\tconst [view, setView] = useState('editor');\n\tconst [variablesOpen, setVariablesOpen] = useState(props.placeholders?.showEditor ?? false);\n\tconst [cc, setCc] = useState(false);\n\tconst [bcc, setBcc] = useState(false);\n\tconst [convertOpen, setConvertOpen] = useState(false);\n\tconst id = useId();\n\tconst preview = view === 'preview' || draft.body.kind === 'html';\n\tconst actions = (position: NonNullable<ComposerAction<K>['position']>) => (props.actions ?? []).filter(a => (a.position ?? 'toolbar') === position && (a.visible?.(state) ?? true)).map(action => ({ id: action.id, label: action.label, icon: action.icon, disabled: busy || action.disabled?.(state), onClick: () => { void model.runAction(action); }, buttonStyle: 'ghost' as const, tone: 'secondary' as const }));\n\tconst footer = <Stack direction={{ base: 'vertical', sm: 'horizontal' }} gap=\"sm\" align={{ base: 'stretch', sm: 'center' }} justify=\"between\" className=\"w-full\">\n <Stack direction=\"horizontal\" gap=\"sm\">\n {props.buttons?.discard !== false && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" disabled={busy} onClick={() => { void api.discard(); }}>{props.buttons?.discard?.label ?? strings.discard}</Button>}\n <ActionButtons actions={actions('footer-start')}/>\n </Stack>\n <Stack direction=\"horizontal\" gap=\"sm\" justify=\"end\">\n <ActionButtons actions={actions('footer-end')}/>\n {/* Send, then the overflow menu that ends the row; the pair wraps as one so the menu never strands on its own line. */}\n {(props.buttons?.send !== false || !!actions('overflow').length) && <Stack direction=\"horizontal\" gap=\"sm\" wrap={false} className=\"email-composer--send-commands\">\n {props.buttons?.send !== false && <Button type=\"button\" tone=\"primary\" disabled={busy || model.dataPending} loading={busy} strings={{ loading: strings.working }} onClick={() => { void api.send(); }}>{busy ? strings.working : props.buttons?.send?.label ?? strings.send}</Button>}\n {!!actions('overflow').length && <ActionMenu actions={actions('overflow')} srText={strings.more} buttonProps={{ disabled: busy }}/>}\n </Stack>}\n </Stack>\n </Stack>;\n\tconst fieldError = (field: string) => model.attempted ? state.issues.find(issue => issue.field === field)?.message : undefined;\n\tconst body = <Stack gap=\"lg\" className=\"email-composer--body min-w-0\">\n <Stack gap=\"md\" className=\"email-composer--details\">\n <Stack gap=\"md\">\n {(['to', 'cc', 'bcc'] as const).filter(field => field === 'to' || field === 'cc' && (cc || draft.cc.length || dataUnavailable(props.recipients?.cc)) || field === 'bcc' && (bcc || draft.bcc.length || dataUnavailable(props.recipients?.bcc))).map(field => <RecipientField key={field} field={field} value={draft[field]} options={props.recipients?.[field]} strings={strings} busy={busy} report={model.report} error={fieldError(field)} onChange={value => model.changeRecipients(field, value)} actions={field === 'to' ? <>\n {!cc && !draft.cc.length && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => setCc(true)}>{strings.cc}</Button>}\n {!bcc && !draft.bcc.length && <Button type=\"button\" size=\"sm\" buttonStyle=\"ghost\" tone=\"secondary\" disabled={busy} onClick={() => setBcc(true)}>{strings.bcc}</Button>}\n </> : undefined}/>)}\n </Stack>\n <FormField label={strings.subject} required htmlFor={`${id}-subject`} error={fieldError('subject')} supportingTextId={`${id}-subject-error`}><Input id={`${id}-subject`} value={draft.subject} readOnly={props.subject?.readOnly} disabled={busy} invalid={!!fieldError('subject')} aria-describedby={fieldError('subject') ? `${id}-subject-error` : undefined} onChange={e => model.changeSubject(e.target.value)}/></FormField>\n </Stack>\n <Tabs value={preview ? 'preview' : 'editor'} onValueChange={value => { if (value) setView(value); }}>\n <Card surface=\"flat\" padding=\"none\" contentGap=\"md\" titleSize=\"sm\" title={strings.body} headerAction={<TabsList><TabsTrigger value=\"editor\" disabled={draft.body.kind === 'html'}>{strings.editor}</TabsTrigger><TabsTrigger value=\"preview\">{strings.preview}</TabsTrigger></TabsList>}>\n {(!!props.templates || !!model.templates.length || actions('toolbar').length > 0) && <Stack direction=\"horizontal\" gap=\"sm\" align=\"center\" className=\"email-composer--message-actions\">\n {(props.templates || !!model.templates.length) && <PopoverMenu trigger={<Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" size=\"sm\" disabled={busy}>{strings.templates}</Button>} items={model.templates.map(t => ({ value: t.id, label: t.name, description: t.description ?? t.category, data: t }))} onSelect={item => { try { api.applyTemplate(item.value); } catch (cause) { model.report(cause); } }} loading={props.templates?.loading} error={props.templates?.error} onRetry={props.templates?.onRetry ? () => { void Promise.resolve().then(props.templates!.onRetry).catch(model.report); } : undefined} onOpenChange={props.templates?.onOpenChange} strings={{ searchPlaceholder: strings.searchTemplates, empty: strings.noTemplates, loading: strings.loadingTemplates, retry: strings.retry }}/>}\n {props.templates?.allowImport && props.templates.onImport && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" disabled={busy} onClick={() => { void model.importTemplate(); }}>{strings.importTemplate}</Button>}\n <ActionButtons size=\"sm\" actions={actions('toolbar')}/>\n </Stack>}\n <TabsContent value=\"editor\" keepMounted><BodyEditor body={draft.body} disabled={busy || preview} onChange={model.changeBody} adapterRef={model.editorRef} strings={strings}/></TabsContent>\n <TabsContent value=\"preview\">{model.rendered && <HtmlPreview html={model.rendered.email.html} subject={model.rendered.email.subject} strings={strings}/>}</TabsContent>\n </Card>\n </Tabs>\n {(!!Object.keys(model.definitions).length || dataUnavailable(props.placeholders)) && <SmartAccordion value={variablesOpen ? ['variables'] : []} onValueChange={values => setVariablesOpen(values.includes('variables'))} items={[{ value: 'variables', title: strings.variables, description: strings.variablesDescription, content: dataUnavailable(props.placeholders) ? <ComposerDataStatus state={props.placeholders} label={strings.loadingVariables} retryLabel={strings.retry} report={model.report} /> : <Variables definitions={model.definitions} values={model.values} draft={draft} api={api} strings={strings} busy={busy} editable={!preview}/> }]}/>}\n {draft.body.kind === 'html' && <Button type=\"button\" tone=\"secondary\" buttonStyle=\"outline\" disabled={busy} onClick={() => setConvertOpen(true)}>{strings.convert}</Button>}\n {(model.error || (!model.dataPending && model.renderError)) && <Alert tone=\"destructive\"><AlertTitle>{strings.errorTitle}</AlertTitle><AlertDescription>{model.error || model.renderError}</AlertDescription></Alert>}\n {model.notice && <Alert tone=\"success\" role=\"status\"><AlertDescription>{model.notice}</AlertDescription></Alert>}\n {props.children?.(api)}\n </Stack>;\n\tconst title = props.title ?? strings.title;\n\tconst close = props.onClose ? <Button type=\"button\" iconOnly tone=\"secondary\" buttonStyle=\"ghost\" size=\"sm\" disabled={busy} aria-label={strings.close} onClick={props.onClose}><X className=\"size-icon\"/></Button> : undefined;\n\tlet surface;\n\tconst rootClass = cn('email-composer--component min-w-0', props.className);\n\tif (props.position === 'dialog' || props.position === 'sheet') {\n\t\tconst common = { open: true, title, description: props.description, onOpenChange: (open: boolean) => { if (!open && !busy)\n\t\t\t\tprops.onClose?.(); }, closeOnEscape: !busy && !!props.onClose, closeOnBackdropClick: false, loading: busy, strings: { close: strings.close }, showCancel: false, showConfirm: false, showCloseButton: !!props.onClose && !busy, footer, className: rootClass };\n\t\tsurface = props.position === 'dialog' ? <ActionDialog {...common} size=\"3xl\" showCloseButton={!!props.onClose && !busy}>{body}</ActionDialog> : <ActionDrawer {...common} width=\"3xl\">{body}</ActionDrawer>;\n\t}\n\telse {\n\t\tconst card = <Card className={rootClass} surface=\"card\" title={title} description={props.description} headerAction={close} headerClassName={props.position === 'floating' && close ? 'flex-nowrap [&>.card--header-start]:basis-0 [&>.card--header-end]:shrink-0' : undefined} footerSlot={footer}>{body}</Card>;\n\t\tsurface = props.position === 'floating' ? <div className=\"fixed bottom-space-md end-space-md z-40 w-[min(42rem,calc(100vw-2rem))]\"><ScrollArea className=\"max-h-[calc(100dvh-2rem)]\" viewportClassName=\"max-h-[calc(100dvh-2rem)]\">{card}</ScrollArea></div> : card;\n\t}\n\treturn <>{surface}<ConfirmDialog open={convertOpen} onOpenChange={setConvertOpen} title={strings.convertTitle} description={strings.convertDescription} strings={{ confirm: strings.convert, cancel: strings.cancel, close: strings.closeConversion }} onConfirm={() => { if (!busy && model.editorRef.current) {\n\t\tapi.setBody(model.editorRef.current.convert(draft.body));\n\t\tsetView('editor');\n\t} }}/></>;\n}\n"],"mappings":"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"}