@mhmo91/schmancy 0.9.4 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1037) hide show
  1. package/.claude-plugin/plugin.json +13 -0
  2. package/README.md +14 -4
  3. package/custom-elements.json +493 -718
  4. package/dist/.claude-plugin/plugin.json +13 -0
  5. package/dist/animation-Bcwh107v.cjs.map +1 -0
  6. package/dist/animation-CXKSuUoE.js.map +1 -0
  7. package/dist/area-BARjKpE9.js +590 -0
  8. package/dist/area-BARjKpE9.js.map +1 -0
  9. package/dist/area-D9b9dHQr.cjs +12 -0
  10. package/dist/area-D9b9dHQr.cjs.map +1 -0
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/audio-C7TzWI8M.js +335 -0
  14. package/dist/audio-C7TzWI8M.js.map +1 -0
  15. package/dist/audio-DUVz7Ars.cjs +1 -0
  16. package/dist/audio-DUVz7Ars.cjs.map +1 -0
  17. package/dist/audio.cjs +1 -1
  18. package/dist/audio.js +2 -2
  19. package/dist/autocomplete-AI2CCJmK.cjs +115 -0
  20. package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
  21. package/dist/autocomplete-DOimwVMP.js +404 -0
  22. package/dist/autocomplete-DOimwVMP.js.map +1 -0
  23. package/dist/autocomplete.cjs +1 -1
  24. package/dist/autocomplete.js +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/boat-Bk4u-LzT.cjs +80 -0
  28. package/dist/boat-Bk4u-LzT.cjs.map +1 -0
  29. package/dist/boat-DrghVeWK.js +347 -0
  30. package/dist/boat-DrghVeWK.js.map +1 -0
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/breadcrumb.cjs +34 -0
  34. package/dist/breadcrumb.cjs.map +1 -0
  35. package/dist/breadcrumb.js +73 -0
  36. package/dist/breadcrumb.js.map +1 -0
  37. package/dist/busy-BmFfwyz_.js +168 -0
  38. package/dist/busy-BmFfwyz_.js.map +1 -0
  39. package/dist/busy-c_q_F8O0.cjs +134 -0
  40. package/dist/busy-c_q_F8O0.cjs.map +1 -0
  41. package/dist/busy.cjs +1 -1
  42. package/dist/busy.js +1 -1
  43. package/dist/button.cjs +4 -4
  44. package/dist/button.cjs.map +1 -1
  45. package/dist/button.js +25 -6
  46. package/dist/button.js.map +1 -1
  47. package/dist/card-BADJHUMA.js +285 -0
  48. package/dist/card-BADJHUMA.js.map +1 -0
  49. package/dist/card-C_E944_Z.cjs +177 -0
  50. package/dist/card-C_E944_Z.cjs.map +1 -0
  51. package/dist/card.cjs +1 -1
  52. package/dist/card.js +1 -1
  53. package/dist/charts.cjs +3 -3
  54. package/dist/charts.cjs.map +1 -1
  55. package/dist/charts.js +2 -2
  56. package/dist/checkbox-D7rvCrGk.js +629 -0
  57. package/dist/checkbox-D7rvCrGk.js.map +1 -0
  58. package/dist/checkbox-ZqDoCagB.cjs +39 -0
  59. package/dist/checkbox-ZqDoCagB.cjs.map +1 -0
  60. package/dist/checkbox.cjs +1 -1
  61. package/dist/checkbox.js +1 -1
  62. package/dist/chips-Cux635Qs.cjs +253 -0
  63. package/dist/chips-Cux635Qs.cjs.map +1 -0
  64. package/dist/chips-vdzIsesI.js +655 -0
  65. package/dist/chips-vdzIsesI.js.map +1 -0
  66. package/dist/chips.cjs +1 -1
  67. package/dist/chips.js +2 -2
  68. package/dist/code-highlight-C9lKek2p.cjs +190 -0
  69. package/dist/code-highlight-C9lKek2p.cjs.map +1 -0
  70. package/dist/code-highlight-D6yruol6.js +291 -0
  71. package/dist/code-highlight-D6yruol6.js.map +1 -0
  72. package/dist/code-highlight.cjs +1 -1
  73. package/dist/code-highlight.js +1 -1
  74. package/dist/components-ByRyEzz5.cjs +73 -0
  75. package/dist/components-ByRyEzz5.cjs.map +1 -0
  76. package/dist/components-DSvPKR9Q.js +730 -0
  77. package/dist/components-DSvPKR9Q.js.map +1 -0
  78. package/dist/components.cjs +1 -1
  79. package/dist/components.js +1 -1
  80. package/dist/connectivity.cjs +7 -7
  81. package/dist/connectivity.cjs.map +1 -1
  82. package/dist/connectivity.js +5 -4
  83. package/dist/connectivity.js.map +1 -1
  84. package/dist/content-drawer.cjs +1 -1
  85. package/dist/content-drawer.js +1 -1
  86. package/dist/cursor-glow-82y5h3E4.cjs +1 -0
  87. package/dist/cursor-glow-82y5h3E4.cjs.map +1 -0
  88. package/dist/cursor-glow-C2YRrB8Z.js +46 -0
  89. package/dist/cursor-glow-C2YRrB8Z.js.map +1 -0
  90. package/dist/date-range-DJsavigf.cjs +131 -0
  91. package/dist/date-range-DJsavigf.cjs.map +1 -0
  92. package/dist/date-range-inline-B87TDYI6.js +267 -0
  93. package/dist/date-range-inline-B87TDYI6.js.map +1 -0
  94. package/dist/date-range-inline-De-M0VmL.cjs +43 -0
  95. package/dist/date-range-inline-De-M0VmL.cjs.map +1 -0
  96. package/dist/date-range-inline.cjs +1 -1
  97. package/dist/date-range-inline.js +1 -1
  98. package/dist/date-range-tEX2Jx2j.js +946 -0
  99. package/dist/date-range-tEX2Jx2j.js.map +1 -0
  100. package/dist/date-range.cjs +1 -1
  101. package/dist/date-range.js +1 -1
  102. package/dist/delay-BvVdfhAR.cjs +9 -0
  103. package/dist/delay-BvVdfhAR.cjs.map +1 -0
  104. package/dist/delay-CZw37zps.js +347 -0
  105. package/dist/delay-CZw37zps.js.map +1 -0
  106. package/dist/delay.cjs +1 -1
  107. package/dist/delay.js +1 -1
  108. package/dist/details-Bhz8_whd.cjs +168 -0
  109. package/dist/details-Bhz8_whd.cjs.map +1 -0
  110. package/dist/details-D7VTnLOh.js +294 -0
  111. package/dist/details-D7VTnLOh.js.map +1 -0
  112. package/dist/details.cjs +1 -1
  113. package/dist/details.js +1 -1
  114. package/dist/dialog-service-ClFrOWf4.js +193 -0
  115. package/dist/dialog-service-ClFrOWf4.js.map +1 -0
  116. package/dist/dialog-service-DcuAavp2.cjs +1 -0
  117. package/dist/dialog-service-DcuAavp2.cjs.map +1 -0
  118. package/dist/dialog.cjs +18 -11
  119. package/dist/dialog.cjs.map +1 -1
  120. package/dist/dialog.js +66 -43
  121. package/dist/dialog.js.map +1 -1
  122. package/dist/directives.cjs +1 -1
  123. package/dist/directives.js +5 -5
  124. package/dist/divider-S0bHwCCS.cjs +57 -0
  125. package/dist/divider-S0bHwCCS.cjs.map +1 -0
  126. package/dist/divider-zS232JDr.js +87 -0
  127. package/dist/divider-zS232JDr.js.map +1 -0
  128. package/dist/divider.cjs +1 -1
  129. package/dist/divider.js +1 -1
  130. package/dist/dropdown.cjs +4 -4
  131. package/dist/dropdown.cjs.map +1 -1
  132. package/dist/dropdown.js +8 -7
  133. package/dist/dropdown.js.map +1 -1
  134. package/dist/expand-BXt9SqAF.js +337 -0
  135. package/dist/expand-BXt9SqAF.js.map +1 -0
  136. package/dist/expand-Dr7TFXpl.cjs +141 -0
  137. package/dist/expand-Dr7TFXpl.cjs.map +1 -0
  138. package/dist/expand.cjs +1 -1
  139. package/dist/expand.js +1 -1
  140. package/dist/extra-BmZTXAp0.cjs +31 -0
  141. package/dist/extra-BmZTXAp0.cjs.map +1 -0
  142. package/dist/extra-COYhsOyZ.js +3435 -0
  143. package/dist/extra-COYhsOyZ.js.map +1 -0
  144. package/dist/extra.cjs +1 -1
  145. package/dist/extra.js +1 -1
  146. package/dist/float-CSRW-Rrd.cjs +1 -0
  147. package/dist/float-CSRW-Rrd.cjs.map +1 -0
  148. package/dist/float-DCXafWh6.js +5 -0
  149. package/dist/float-DCXafWh6.js.map +1 -0
  150. package/dist/float.cjs +1 -1
  151. package/dist/float.js +1 -1
  152. package/dist/flow-CqgDEIqK.js.map +1 -0
  153. package/dist/flow-DSu4PLt1.cjs.map +1 -0
  154. package/dist/form-CAY9GSCd.cjs +1 -0
  155. package/dist/form-CAY9GSCd.cjs.map +1 -0
  156. package/dist/form-D2cJ58TB.js +68 -0
  157. package/dist/form-D2cJ58TB.js.map +1 -0
  158. package/dist/form.cjs +1 -1
  159. package/dist/form.js +2 -1
  160. package/dist/hashContent-kKvXKFa9.cjs.map +1 -0
  161. package/dist/hashContent-nD2uWwi2.js.map +1 -0
  162. package/dist/icons-BbaI9Zf-.js +162 -0
  163. package/dist/icons-BbaI9Zf-.js.map +1 -0
  164. package/dist/icons-DPUeLS_Y.cjs +52 -0
  165. package/dist/icons-DPUeLS_Y.cjs.map +1 -0
  166. package/dist/icons.cjs +1 -1
  167. package/dist/icons.js +1 -1
  168. package/dist/iframe-CEDOvkql.js +45 -0
  169. package/dist/iframe-CEDOvkql.js.map +1 -0
  170. package/dist/iframe-Ct50FYXq.cjs +24 -0
  171. package/dist/iframe-Ct50FYXq.cjs.map +1 -0
  172. package/dist/iframe.cjs +1 -1
  173. package/dist/iframe.js +1 -1
  174. package/dist/index.cjs +1 -1
  175. package/dist/index.js +65 -59
  176. package/dist/input-DMjpf6V8.cjs +51 -0
  177. package/dist/input-DMjpf6V8.cjs.map +1 -0
  178. package/dist/input-Ri72dn5t.js +364 -0
  179. package/dist/input-Ri72dn5t.js.map +1 -0
  180. package/dist/input-chip-BhjGVpc3.cjs +146 -0
  181. package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
  182. package/dist/input-chip-CI4__N8w.js +305 -0
  183. package/dist/input-chip-CI4__N8w.js.map +1 -0
  184. package/dist/input.cjs +1 -1
  185. package/dist/input.js +1 -1
  186. package/dist/intersection-D1v1UCVv.cjs.map +1 -0
  187. package/dist/intersection-LfEsy29T.js.map +1 -0
  188. package/dist/json.cjs +3 -3
  189. package/dist/json.cjs.map +1 -1
  190. package/dist/json.js +5 -4
  191. package/dist/json.js.map +1 -1
  192. package/dist/kbd.cjs +28 -0
  193. package/dist/kbd.cjs.map +1 -0
  194. package/dist/kbd.js +45 -0
  195. package/dist/kbd.js.map +1 -0
  196. package/dist/layout-BE2ld1IY.js +94 -0
  197. package/dist/layout-BE2ld1IY.js.map +1 -0
  198. package/dist/layout-D7xOqMkJ.cjs +17 -0
  199. package/dist/layout-D7xOqMkJ.cjs.map +1 -0
  200. package/dist/layout-PZCF3kwl.cjs +1 -0
  201. package/dist/layout-PZCF3kwl.cjs.map +1 -0
  202. package/dist/layout-uAQpJN31.js +268 -0
  203. package/dist/layout-uAQpJN31.js.map +1 -0
  204. package/dist/layout.cjs +1 -1
  205. package/dist/layout.js +2 -2
  206. package/dist/lightbox-C0OEHns9.js +679 -0
  207. package/dist/lightbox-C0OEHns9.js.map +1 -0
  208. package/dist/lightbox-cXRnvHMN.cjs +202 -0
  209. package/dist/lightbox-cXRnvHMN.cjs.map +1 -0
  210. package/dist/lightbox.cjs +1 -1
  211. package/dist/lightbox.js +1 -1
  212. package/dist/list-CmJ5h35b.cjs +40 -0
  213. package/dist/list-CmJ5h35b.cjs.map +1 -0
  214. package/dist/list-d1mHar5p.js +106 -0
  215. package/dist/list-d1mHar5p.js.map +1 -0
  216. package/dist/list.cjs +1 -1
  217. package/dist/list.js +1 -1
  218. package/dist/litElement.mixin-Bj2q1yPw.cjs +1 -0
  219. package/dist/litElement.mixin-Bj2q1yPw.cjs.map +1 -0
  220. package/dist/litElement.mixin-CncaUoxz.js +12 -0
  221. package/dist/litElement.mixin-CncaUoxz.js.map +1 -0
  222. package/dist/magnetic-Dj52WplI.js +47 -0
  223. package/dist/magnetic-Dj52WplI.js.map +1 -0
  224. package/dist/magnetic-aBBnj_vk.cjs +1 -0
  225. package/dist/magnetic-aBBnj_vk.cjs.map +1 -0
  226. package/dist/mailbox-BmChskZc.cjs +1142 -0
  227. package/dist/mailbox-BmChskZc.cjs.map +1 -0
  228. package/dist/mailbox-C4-E93be.js +1585 -0
  229. package/dist/mailbox-C4-E93be.js.map +1 -0
  230. package/dist/mailbox.cjs +1 -1
  231. package/dist/mailbox.js +1 -1
  232. package/dist/map-DHyYLhvy.js +206 -0
  233. package/dist/map-DHyYLhvy.js.map +1 -0
  234. package/dist/map-DYEvlNl0.cjs +80 -0
  235. package/dist/map-DYEvlNl0.cjs.map +1 -0
  236. package/dist/map.cjs +1 -1
  237. package/dist/map.js +1 -1
  238. package/dist/menu-BlPTI6H9.cjs +23 -0
  239. package/dist/menu-BlPTI6H9.cjs.map +1 -0
  240. package/dist/menu-DFDBADp4.js +51 -0
  241. package/dist/menu-DFDBADp4.js.map +1 -0
  242. package/dist/menu.cjs +1 -1
  243. package/dist/menu.js +1 -1
  244. package/dist/mixins.cjs +1 -1
  245. package/dist/mixins.cjs.map +1 -1
  246. package/dist/mixins.js +43 -15
  247. package/dist/mixins.js.map +1 -1
  248. package/dist/nav-drawer.cjs +1 -1
  249. package/dist/nav-drawer.js +1 -1
  250. package/dist/navigation-bar.cjs +1 -1
  251. package/dist/navigation-bar.js +1 -1
  252. package/dist/navigation-rail.cjs +3 -3
  253. package/dist/navigation-rail.cjs.map +1 -1
  254. package/dist/navigation-rail.js +2 -2
  255. package/dist/notification-DGpv8g2H.js +304 -0
  256. package/dist/notification-DGpv8g2H.js.map +1 -0
  257. package/dist/notification-DKVWYhqs.cjs +23 -0
  258. package/dist/notification-DKVWYhqs.cjs.map +1 -0
  259. package/dist/notification.cjs +1 -1
  260. package/dist/notification.js +1 -1
  261. package/dist/option-BD2eh458.js +98 -0
  262. package/dist/option-BD2eh458.js.map +1 -0
  263. package/dist/option-LtSDy2xf.cjs +43 -0
  264. package/dist/option-LtSDy2xf.cjs.map +1 -0
  265. package/dist/option.cjs +1 -1
  266. package/dist/option.js +1 -1
  267. package/dist/overlay-stack-CEYGD9T1.cjs.map +1 -0
  268. package/dist/overlay-stack-Ca4EK2Mu.js.map +1 -0
  269. package/dist/page.cjs +2 -2
  270. package/dist/page.cjs.map +1 -1
  271. package/dist/page.js +5 -5
  272. package/dist/progress-B5ChDPbB.cjs +51 -0
  273. package/dist/progress-B5ChDPbB.cjs.map +1 -0
  274. package/dist/progress-CE1Pk2hi.js +128 -0
  275. package/dist/progress-CE1Pk2hi.js.map +1 -0
  276. package/dist/progress.cjs +1 -1
  277. package/dist/progress.js +1 -1
  278. package/dist/provide-BZ9lq_Be.cjs +1 -0
  279. package/dist/provide-BZ9lq_Be.cjs.map +1 -0
  280. package/dist/provide-jn1Fj1vv.js +107 -0
  281. package/dist/provide-jn1Fj1vv.js.map +1 -0
  282. package/dist/qr-scanner.cjs +2 -2
  283. package/dist/qr-scanner.cjs.map +1 -1
  284. package/dist/qr-scanner.js +2 -2
  285. package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
  286. package/dist/radio-group-Cd9pZ2MR.cjs.map +1 -0
  287. package/dist/radio-group-CyRHgIF3.js +106 -0
  288. package/dist/radio-group-CyRHgIF3.js.map +1 -0
  289. package/dist/radio-group.cjs +1 -1
  290. package/dist/radio-group.js +1 -1
  291. package/dist/range.cjs +4 -4
  292. package/dist/range.cjs.map +1 -1
  293. package/dist/range.js +4 -3
  294. package/dist/range.js.map +1 -1
  295. package/dist/reduced-motion-B83yZbcO.js.map +1 -0
  296. package/dist/reduced-motion-DR32yKEO.cjs.map +1 -0
  297. package/dist/rxjs-utils-Bldch1RO.js.map +1 -0
  298. package/dist/rxjs-utils-hAgKC7vk.cjs.map +1 -0
  299. package/dist/rxjs-utils.cjs +1 -1
  300. package/dist/rxjs-utils.js +1 -1
  301. package/dist/scroll-C_iNOi7E.cjs +26 -0
  302. package/dist/scroll-C_iNOi7E.cjs.map +1 -0
  303. package/dist/scroll-DoliwpRu.js +113 -0
  304. package/dist/scroll-DoliwpRu.js.map +1 -0
  305. package/dist/search-BlGJ6uJv.js.map +1 -0
  306. package/dist/search-C8eAOzBm.cjs.map +1 -0
  307. package/dist/select-CWWuZ2iJ.cjs +56 -0
  308. package/dist/select-CWWuZ2iJ.cjs.map +1 -0
  309. package/dist/select-_vHPXi30.js +305 -0
  310. package/dist/select-_vHPXi30.js.map +1 -0
  311. package/dist/select.cjs +1 -1
  312. package/dist/select.js +1 -1
  313. package/dist/sheet-i1KtxGIj.js +168 -0
  314. package/dist/sheet-i1KtxGIj.js.map +1 -0
  315. package/dist/sheet-r0oEYIdi.cjs +35 -0
  316. package/dist/sheet-r0oEYIdi.cjs.map +1 -0
  317. package/dist/sheet.cjs +1 -1
  318. package/dist/sheet.js +2 -2
  319. package/dist/sheet.service-Cr13Oo6G.cjs +1 -0
  320. package/dist/sheet.service-Cr13Oo6G.cjs.map +1 -0
  321. package/dist/sheet.service-DUO5_kmI.js +86 -0
  322. package/dist/sheet.service-DUO5_kmI.js.map +1 -0
  323. package/dist/skeleton.cjs +33 -0
  324. package/dist/skeleton.cjs.map +1 -0
  325. package/dist/skeleton.js +58 -0
  326. package/dist/skeleton.js.map +1 -0
  327. package/dist/skills/INDEX.md +73 -0
  328. package/dist/skills/SKILL.md +120 -0
  329. package/dist/skills/breadcrumb.md +53 -0
  330. package/dist/skills/kbd.md +40 -0
  331. package/dist/skills/schmancy/INDEX.md +73 -0
  332. package/dist/skills/schmancy/SKILL.md +120 -0
  333. package/dist/skills/schmancy/breadcrumb.md +53 -0
  334. package/dist/skills/schmancy/kbd.md +40 -0
  335. package/dist/skills/schmancy/skeleton.md +40 -0
  336. package/dist/skills/schmancy/splash-screen.md +60 -0
  337. package/dist/skills/schmancy/switch.md +58 -0
  338. package/dist/skills/schmancy/tooltip.md +38 -0
  339. package/dist/skills/schmancy/visually-hidden.md +41 -0
  340. package/dist/skills/skeleton.md +40 -0
  341. package/dist/skills/splash-screen.md +60 -0
  342. package/dist/skills/switch.md +58 -0
  343. package/dist/skills/tooltip.md +38 -0
  344. package/dist/skills/visually-hidden.md +41 -0
  345. package/dist/slider.cjs +3 -3
  346. package/dist/slider.cjs.map +1 -1
  347. package/dist/slider.js +2 -2
  348. package/dist/sound.service-BjSoGjmT.cjs +1 -0
  349. package/dist/sound.service-BjSoGjmT.cjs.map +1 -0
  350. package/dist/sound.service-cdkw3Wkv.js +2353 -0
  351. package/dist/sound.service-cdkw3Wkv.js.map +1 -0
  352. package/dist/splash-screen-CquyPP1C.cjs +41 -0
  353. package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
  354. package/dist/splash-screen-CvucPkpD.js +83 -0
  355. package/dist/splash-screen-CvucPkpD.js.map +1 -0
  356. package/dist/splash-screen.cjs +1 -0
  357. package/dist/splash-screen.js +1 -0
  358. package/dist/src-Bemk2C2P.cjs +269 -0
  359. package/dist/src-Bemk2C2P.cjs.map +1 -0
  360. package/dist/src-f5a3W9Mj.js +1251 -0
  361. package/dist/src-f5a3W9Mj.js.map +1 -0
  362. package/dist/steps.cjs +10 -10
  363. package/dist/steps.cjs.map +1 -1
  364. package/dist/steps.js +10 -9
  365. package/dist/steps.js.map +1 -1
  366. package/dist/store-Bmj6rvZY.js.map +1 -0
  367. package/dist/store-CO4nJyGj.cjs.map +1 -0
  368. package/dist/store.cjs +1 -1
  369. package/dist/store.js +1 -1
  370. package/dist/surface-CDufon40.cjs +7 -0
  371. package/dist/surface-CDufon40.cjs.map +1 -0
  372. package/dist/surface-CkEYJCae.js +22 -0
  373. package/dist/surface-CkEYJCae.js.map +1 -0
  374. package/dist/surface.cjs +1 -1
  375. package/dist/surface.js +1 -1
  376. package/dist/surface.mixin-CSKqQH-0.cjs +297 -0
  377. package/dist/surface.mixin-CSKqQH-0.cjs.map +1 -0
  378. package/dist/surface.mixin-DqMwoddO.js +320 -0
  379. package/dist/surface.mixin-DqMwoddO.js.map +1 -0
  380. package/dist/switch.cjs +69 -0
  381. package/dist/switch.cjs.map +1 -0
  382. package/dist/switch.js +132 -0
  383. package/dist/switch.js.map +1 -0
  384. package/dist/table-DWc1mkpj.cjs +63 -0
  385. package/dist/table-DWc1mkpj.cjs.map +1 -0
  386. package/dist/table-P6VGG7NK.js +631 -0
  387. package/dist/table-P6VGG7NK.js.map +1 -0
  388. package/dist/table.cjs +1 -1
  389. package/dist/table.js +1 -1
  390. package/dist/tabs-CjGjGrqY.js +126 -0
  391. package/dist/tabs-CjGjGrqY.js.map +1 -0
  392. package/dist/tabs-DGJEKuhC.cjs +31 -0
  393. package/dist/tabs-DGJEKuhC.cjs.map +1 -0
  394. package/dist/tabs.cjs +1 -1
  395. package/dist/tabs.js +1 -1
  396. package/dist/tailwind.mixin-Cpa-VnnX.cjs +2 -0
  397. package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
  398. package/dist/tailwind.mixin-DufHBjmb.js +219 -0
  399. package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
  400. package/dist/teleport.cjs +1 -1
  401. package/dist/teleport.js +1 -1
  402. package/dist/textarea-DZT_Ofp5.js +209 -0
  403. package/dist/textarea-DZT_Ofp5.js.map +1 -0
  404. package/dist/textarea-jmTOXrzl.cjs +39 -0
  405. package/dist/textarea-jmTOXrzl.cjs.map +1 -0
  406. package/dist/textarea.cjs +1 -1
  407. package/dist/textarea.js +1 -1
  408. package/dist/theme-CCKqaksQ.cjs +181 -0
  409. package/dist/theme-CCKqaksQ.cjs.map +1 -0
  410. package/dist/theme-CEc32pAv.js +4122 -0
  411. package/dist/theme-CEc32pAv.js.map +1 -0
  412. package/dist/theme-button-BsJcv-Zv.cjs +8 -0
  413. package/dist/theme-button-BsJcv-Zv.cjs.map +1 -0
  414. package/dist/theme-button-dOiAvdKU.js +20 -0
  415. package/dist/theme-button-dOiAvdKU.js.map +1 -0
  416. package/dist/theme-button.cjs +1 -1
  417. package/dist/theme-button.js +1 -1
  418. package/dist/theme.cjs +1 -1
  419. package/dist/theme.events-Bw3mYjUA.js.map +1 -0
  420. package/dist/theme.events-EznKK2Y0.cjs.map +1 -0
  421. package/dist/theme.interface-CM26m9te.cjs.map +1 -0
  422. package/dist/theme.interface-FAUIgbIq.js.map +1 -0
  423. package/dist/theme.js +5 -5
  424. package/dist/theme.service-ETiKUwVy.cjs +1 -0
  425. package/dist/theme.service-ETiKUwVy.cjs.map +1 -0
  426. package/dist/theme.service-_qP5WvB9.js +108 -0
  427. package/dist/theme.service-_qP5WvB9.js.map +1 -0
  428. package/dist/tooltip.cjs +1 -6
  429. package/dist/tooltip.cjs.map +1 -1
  430. package/dist/tooltip.js +51 -135
  431. package/dist/tooltip.js.map +1 -1
  432. package/dist/tree.cjs +14 -5
  433. package/dist/tree.cjs.map +1 -1
  434. package/dist/tree.js +28 -6
  435. package/dist/tree.js.map +1 -1
  436. package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
  437. package/dist/tslib.es6-Bd-92OW3.cjs.map +1 -0
  438. package/dist/tslib.es6-CI1onEZb.js +7 -0
  439. package/dist/tslib.es6-CI1onEZb.js.map +1 -0
  440. package/dist/typewriter-ByIL2Mh-.cjs +123 -0
  441. package/dist/typewriter-ByIL2Mh-.cjs.map +1 -0
  442. package/dist/typewriter-vOQ3bDLb.js +701 -0
  443. package/dist/typewriter-vOQ3bDLb.js.map +1 -0
  444. package/dist/typewriter.cjs +1 -1
  445. package/dist/typewriter.js +1 -1
  446. package/dist/typography.cjs +4 -4
  447. package/dist/typography.cjs.map +1 -1
  448. package/dist/typography.js +10 -9
  449. package/dist/typography.js.map +1 -1
  450. package/dist/utils-Cq0m3LYo.js +259 -0
  451. package/dist/utils-Cq0m3LYo.js.map +1 -0
  452. package/dist/utils-D2kE-6zc.cjs +1 -0
  453. package/dist/utils-D2kE-6zc.cjs.map +1 -0
  454. package/dist/utils.cjs +1 -1
  455. package/dist/utils.js +5 -5
  456. package/dist/visually-hidden.cjs +13 -0
  457. package/dist/visually-hidden.cjs.map +1 -0
  458. package/dist/visually-hidden.js +24 -0
  459. package/dist/visually-hidden.js.map +1 -0
  460. package/dist/window-BS7ZQjgH.cjs +59 -0
  461. package/dist/window-BS7ZQjgH.cjs.map +1 -0
  462. package/dist/window-WnAihpsA.js +548 -0
  463. package/dist/window-WnAihpsA.js.map +1 -0
  464. package/dist/window.cjs +1 -1
  465. package/dist/window.js +1 -1
  466. package/mixins/formField.mixin.ts +96 -69
  467. package/mixins/tailwind.css +11 -0
  468. package/package.json +19 -28
  469. package/skills/schmancy/INDEX.md +73 -0
  470. package/skills/schmancy/SKILL.md +120 -0
  471. package/skills/schmancy/animation.md +64 -0
  472. package/skills/schmancy/area.md +141 -0
  473. package/skills/schmancy/audio.md +69 -0
  474. package/skills/schmancy/autocomplete.md +53 -0
  475. package/skills/schmancy/avatar.md +47 -0
  476. package/skills/schmancy/badge.md +41 -0
  477. package/skills/schmancy/boat.md +47 -0
  478. package/skills/schmancy/breadcrumb.md +53 -0
  479. package/skills/schmancy/busy.md +36 -0
  480. package/skills/schmancy/button.md +59 -0
  481. package/skills/schmancy/card.md +53 -0
  482. package/skills/schmancy/charts.md +93 -0
  483. package/skills/schmancy/checkbox.md +36 -0
  484. package/skills/schmancy/chips.md +87 -0
  485. package/skills/schmancy/code-highlight.md +47 -0
  486. package/skills/schmancy/connectivity.md +36 -0
  487. package/skills/schmancy/content-drawer.md +65 -0
  488. package/skills/schmancy/date-range-inline.md +44 -0
  489. package/skills/schmancy/date-range.md +50 -0
  490. package/skills/schmancy/delay.md +50 -0
  491. package/skills/schmancy/details.md +66 -0
  492. package/skills/schmancy/dialog.md +69 -0
  493. package/skills/schmancy/directives.md +298 -0
  494. package/skills/schmancy/discovery.md +67 -0
  495. package/skills/schmancy/divider.md +31 -0
  496. package/skills/schmancy/dropdown.md +47 -0
  497. package/skills/schmancy/expand.md +63 -0
  498. package/skills/schmancy/extra.md +59 -0
  499. package/skills/schmancy/float.md +14 -0
  500. package/skills/schmancy/form.md +49 -0
  501. package/skills/schmancy/icons.md +44 -0
  502. package/skills/schmancy/iframe.md +44 -0
  503. package/skills/schmancy/input.md +56 -0
  504. package/skills/schmancy/json.md +33 -0
  505. package/skills/schmancy/kbd.md +40 -0
  506. package/skills/schmancy/layout.md +63 -0
  507. package/skills/schmancy/lightbox.md +36 -0
  508. package/skills/schmancy/list.md +67 -0
  509. package/skills/schmancy/mailbox.md +102 -0
  510. package/skills/schmancy/map.md +55 -0
  511. package/skills/schmancy/menu.md +39 -0
  512. package/skills/schmancy/mixins.md +99 -0
  513. package/skills/schmancy/nav-drawer.md +52 -0
  514. package/skills/schmancy/navigation-bar.md +48 -0
  515. package/skills/schmancy/navigation-rail.md +62 -0
  516. package/skills/schmancy/notification.md +60 -0
  517. package/skills/schmancy/option.md +43 -0
  518. package/skills/schmancy/page.md +42 -0
  519. package/skills/schmancy/progress.md +30 -0
  520. package/skills/schmancy/qr-scanner.md +51 -0
  521. package/skills/schmancy/radio-group.md +50 -0
  522. package/skills/schmancy/range.md +47 -0
  523. package/skills/schmancy/rxjs-utils.md +60 -0
  524. package/skills/schmancy/select.md +49 -0
  525. package/skills/schmancy/sheet.md +76 -0
  526. package/skills/schmancy/skeleton.md +40 -0
  527. package/skills/schmancy/slider.md +43 -0
  528. package/skills/schmancy/splash-screen.md +60 -0
  529. package/skills/schmancy/steps.md +53 -0
  530. package/skills/schmancy/store.md +126 -0
  531. package/skills/schmancy/surface.md +86 -0
  532. package/skills/schmancy/switch.md +58 -0
  533. package/skills/schmancy/table.md +60 -0
  534. package/skills/schmancy/tabs.md +49 -0
  535. package/skills/schmancy/teleport.md +55 -0
  536. package/skills/schmancy/textarea.md +48 -0
  537. package/skills/schmancy/theme-button.md +26 -0
  538. package/skills/schmancy/theme.md +58 -0
  539. package/skills/schmancy/tooltip.md +38 -0
  540. package/skills/schmancy/tree.md +53 -0
  541. package/skills/schmancy/typewriter.md +46 -0
  542. package/skills/schmancy/typography.md +53 -0
  543. package/skills/schmancy/utils.md +95 -0
  544. package/skills/schmancy/visually-hidden.md +41 -0
  545. package/skills/schmancy/window.md +67 -0
  546. package/src/audio/emotional-sounds.ts +2 -4
  547. package/src/autocomplete/autocomplete.ts +52 -2
  548. package/src/breadcrumb/breadcrumb.ts +109 -0
  549. package/src/breadcrumb/index.ts +1 -0
  550. package/src/button/button.ts +40 -0
  551. package/src/button/icon-button.ts +2 -1
  552. package/src/checkbox/checkbox.test.ts +113 -0
  553. package/src/checkbox/checkbox.ts +41 -1
  554. package/src/chips/filter-chip.ts +15 -0
  555. package/src/chips/input-chip.ts +7 -0
  556. package/src/date-range/date-range-helpers.ts +0 -71
  557. package/src/dialog/dialog-base.mixin.ts +11 -0
  558. package/src/dialog/dialog.component.ts +28 -8
  559. package/src/dropdown/dropdown-content.ts +3 -1
  560. package/src/form/form.test.ts +137 -0
  561. package/src/form/form.ts +142 -158
  562. package/src/form/index.ts +2 -2
  563. package/src/icons/icon.ts +1 -0
  564. package/src/index.ts +6 -0
  565. package/src/kbd/index.ts +1 -0
  566. package/src/kbd/kbd.ts +59 -0
  567. package/src/skeleton/index.ts +1 -0
  568. package/src/skeleton/skeleton.ts +78 -0
  569. package/src/splash-screen/index.ts +1 -0
  570. package/src/splash-screen/splash-screen.ts +154 -0
  571. package/src/switch/index.ts +1 -0
  572. package/src/switch/switch.test.ts +93 -0
  573. package/src/switch/switch.ts +180 -0
  574. package/src/test-utils/a11y.ts +35 -0
  575. package/src/textarea/textarea.ts +32 -2
  576. package/src/tooltip/index.ts +1 -2
  577. package/src/tree/tree.ts +27 -2
  578. package/src/visually-hidden/index.ts +1 -0
  579. package/src/visually-hidden/visually-hidden.ts +39 -0
  580. package/src/window/window-position.ts +1 -74
  581. package/types/mixins/formField.mixin.d.ts +15 -8
  582. package/types/src/audio/emotional-sounds.d.ts +0 -2
  583. package/types/src/autocomplete/autocomplete.d.ts +7 -0
  584. package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
  585. package/types/src/breadcrumb/index.d.ts +1 -0
  586. package/types/src/button/button.d.ts +7 -0
  587. package/types/src/button/icon-button.d.ts +2 -1
  588. package/types/src/checkbox/checkbox.d.ts +6 -0
  589. package/types/src/checkbox/checkbox.test.d.ts +1 -0
  590. package/types/src/chips/filter-chip.d.ts +3 -0
  591. package/types/src/chips/input-chip.d.ts +1 -0
  592. package/types/src/date-range/date-range-helpers.d.ts +0 -12
  593. package/types/src/dialog/dialog.component.d.ts +6 -0
  594. package/types/src/dropdown/dropdown-content.d.ts +3 -1
  595. package/types/src/form/form-v2.d.ts +12 -63
  596. package/types/src/form/form.d.ts +58 -40
  597. package/types/src/form/form.test.d.ts +4 -0
  598. package/types/src/form/index.d.ts +1 -1
  599. package/types/src/icons/icon.d.ts +1 -0
  600. package/types/src/index.d.ts +6 -0
  601. package/types/src/kbd/index.d.ts +1 -0
  602. package/types/src/kbd/kbd.d.ts +25 -0
  603. package/types/src/skeleton/index.d.ts +1 -0
  604. package/types/src/skeleton/skeleton.d.ts +27 -0
  605. package/types/src/splash-screen/index.d.ts +1 -0
  606. package/types/src/splash-screen/splash-screen.d.ts +60 -0
  607. package/types/src/switch/index.d.ts +1 -0
  608. package/types/src/switch/switch.d.ts +54 -0
  609. package/types/src/switch/switch.test.d.ts +1 -0
  610. package/types/src/test-utils/a11y.d.ts +11 -0
  611. package/types/src/textarea/textarea.d.ts +5 -1
  612. package/types/src/tooltip/index.d.ts +0 -1
  613. package/types/src/tree/tree.d.ts +5 -0
  614. package/types/src/visually-hidden/index.d.ts +1 -0
  615. package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
  616. package/types/src/window/window-position.d.ts +1 -35
  617. package/ai/INDEX.md +0 -72
  618. package/ai/tooltip.md +0 -38
  619. package/dist/ai/INDEX.md +0 -72
  620. package/dist/ai/tooltip.md +0 -38
  621. package/dist/animation-BK-8BwY8.js.map +0 -1
  622. package/dist/animation-CO_Csq84.cjs.map +0 -1
  623. package/dist/area-CRoGqD_u.js +0 -590
  624. package/dist/area-CRoGqD_u.js.map +0 -1
  625. package/dist/area-JPykB7A9.cjs +0 -12
  626. package/dist/area-JPykB7A9.cjs.map +0 -1
  627. package/dist/audio-DtYYgzYD.cjs +0 -1
  628. package/dist/audio-DtYYgzYD.cjs.map +0 -1
  629. package/dist/audio-kz8UgPTO.js +0 -335
  630. package/dist/audio-kz8UgPTO.js.map +0 -1
  631. package/dist/autocomplete-5rVhbieU.cjs +0 -111
  632. package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
  633. package/dist/autocomplete-BllPQwr8.js +0 -378
  634. package/dist/autocomplete-BllPQwr8.js.map +0 -1
  635. package/dist/boat-BDTQ-du9.js +0 -347
  636. package/dist/boat-BDTQ-du9.js.map +0 -1
  637. package/dist/boat-DYEAZ8Qj.cjs +0 -80
  638. package/dist/boat-DYEAZ8Qj.cjs.map +0 -1
  639. package/dist/busy-ChDAeaKF.js +0 -167
  640. package/dist/busy-ChDAeaKF.js.map +0 -1
  641. package/dist/busy-Dj7Xn0Z0.cjs +0 -134
  642. package/dist/busy-Dj7Xn0Z0.cjs.map +0 -1
  643. package/dist/card-BvPWVEJX.cjs +0 -177
  644. package/dist/card-BvPWVEJX.cjs.map +0 -1
  645. package/dist/card-DZFPRPqs.js +0 -284
  646. package/dist/card-DZFPRPqs.js.map +0 -1
  647. package/dist/checkbox-BC_37rsG.cjs +0 -39
  648. package/dist/checkbox-BC_37rsG.cjs.map +0 -1
  649. package/dist/checkbox-GSSjqo6w.js +0 -610
  650. package/dist/checkbox-GSSjqo6w.js.map +0 -1
  651. package/dist/chips-B19XS8Xc.cjs +0 -253
  652. package/dist/chips-B19XS8Xc.cjs.map +0 -1
  653. package/dist/chips-B9oAEfE_.js +0 -645
  654. package/dist/chips-B9oAEfE_.js.map +0 -1
  655. package/dist/code-highlight-DCk5lJY-.js +0 -290
  656. package/dist/code-highlight-DCk5lJY-.js.map +0 -1
  657. package/dist/code-highlight-fSLrlgOb.cjs +0 -190
  658. package/dist/code-highlight-fSLrlgOb.cjs.map +0 -1
  659. package/dist/components-COsM6sJZ.js +0 -730
  660. package/dist/components-COsM6sJZ.js.map +0 -1
  661. package/dist/components-CyD6a7gQ.cjs +0 -73
  662. package/dist/components-CyD6a7gQ.cjs.map +0 -1
  663. package/dist/cursor-glow-Ah7VXSj7.js +0 -46
  664. package/dist/cursor-glow-Ah7VXSj7.js.map +0 -1
  665. package/dist/cursor-glow-DtSy_PJd.cjs +0 -1
  666. package/dist/cursor-glow-DtSy_PJd.cjs.map +0 -1
  667. package/dist/date-range-Sfyco9-n.js +0 -946
  668. package/dist/date-range-Sfyco9-n.js.map +0 -1
  669. package/dist/date-range-ZAaQB22I.cjs +0 -131
  670. package/dist/date-range-ZAaQB22I.cjs.map +0 -1
  671. package/dist/date-range-inline-Bl8qbiQF.js +0 -267
  672. package/dist/date-range-inline-Bl8qbiQF.js.map +0 -1
  673. package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
  674. package/dist/date-range-inline-m7nLjOMI.cjs.map +0 -1
  675. package/dist/delay-7boauN6N.cjs +0 -9
  676. package/dist/delay-7boauN6N.cjs.map +0 -1
  677. package/dist/delay-CgX6m0HN.js +0 -346
  678. package/dist/delay-CgX6m0HN.js.map +0 -1
  679. package/dist/details-BHnk8l4q.cjs +0 -168
  680. package/dist/details-BHnk8l4q.cjs.map +0 -1
  681. package/dist/details-BPkUg8Cq.js +0 -293
  682. package/dist/details-BPkUg8Cq.js.map +0 -1
  683. package/dist/dialog-service-NZEvyEK-.js +0 -193
  684. package/dist/dialog-service-NZEvyEK-.js.map +0 -1
  685. package/dist/dialog-service-VnW4gkmE.cjs +0 -1
  686. package/dist/dialog-service-VnW4gkmE.cjs.map +0 -1
  687. package/dist/divider-CW9a7MMj.js +0 -87
  688. package/dist/divider-CW9a7MMj.js.map +0 -1
  689. package/dist/divider-_khrhrZo.cjs +0 -57
  690. package/dist/divider-_khrhrZo.cjs.map +0 -1
  691. package/dist/expand-Cp7-PH8b.cjs +0 -141
  692. package/dist/expand-Cp7-PH8b.cjs.map +0 -1
  693. package/dist/expand-iQ7EOMP7.js +0 -336
  694. package/dist/expand-iQ7EOMP7.js.map +0 -1
  695. package/dist/extra-IKAiJJhv.cjs +0 -31
  696. package/dist/extra-IKAiJJhv.cjs.map +0 -1
  697. package/dist/extra-wEpvEFbK.js +0 -3435
  698. package/dist/extra-wEpvEFbK.js.map +0 -1
  699. package/dist/float-BQ_urmMs.js +0 -5
  700. package/dist/float-BQ_urmMs.js.map +0 -1
  701. package/dist/float-D5rNC82i.cjs +0 -1
  702. package/dist/float-D5rNC82i.cjs.map +0 -1
  703. package/dist/flow-Bbwn6dRN.cjs.map +0 -1
  704. package/dist/flow-CUj0fDT_.js.map +0 -1
  705. package/dist/form-BqN1AGFj.cjs +0 -1
  706. package/dist/form-BqN1AGFj.cjs.map +0 -1
  707. package/dist/form-CajC5HnO.js +0 -270
  708. package/dist/form-CajC5HnO.js.map +0 -1
  709. package/dist/hashContent-DYM21p6t.js.map +0 -1
  710. package/dist/hashContent-DaeGmY-p.cjs.map +0 -1
  711. package/dist/icons-B57_93VV.cjs +0 -52
  712. package/dist/icons-B57_93VV.cjs.map +0 -1
  713. package/dist/icons-BDqiGXrO.js +0 -161
  714. package/dist/icons-BDqiGXrO.js.map +0 -1
  715. package/dist/iframe-DNHL3GIk.cjs +0 -24
  716. package/dist/iframe-DNHL3GIk.cjs.map +0 -1
  717. package/dist/iframe-WnWPIrBG.js +0 -44
  718. package/dist/iframe-WnWPIrBG.js.map +0 -1
  719. package/dist/input-BiSrTcrR.cjs +0 -51
  720. package/dist/input-BiSrTcrR.cjs.map +0 -1
  721. package/dist/input-VaXHFrRn.js +0 -364
  722. package/dist/input-VaXHFrRn.js.map +0 -1
  723. package/dist/input-chip-Dy-AiP55.cjs +0 -146
  724. package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
  725. package/dist/input-chip-QejNcRnS.js +0 -301
  726. package/dist/input-chip-QejNcRnS.js.map +0 -1
  727. package/dist/intersection-BPLpqYEd.js.map +0 -1
  728. package/dist/intersection-CZpaIHeT.cjs.map +0 -1
  729. package/dist/layout-4C-6_cre.cjs +0 -1
  730. package/dist/layout-4C-6_cre.cjs.map +0 -1
  731. package/dist/layout-CnsXeCAy.js +0 -267
  732. package/dist/layout-CnsXeCAy.js.map +0 -1
  733. package/dist/layout-DNYG3phx.cjs +0 -17
  734. package/dist/layout-DNYG3phx.cjs.map +0 -1
  735. package/dist/layout-yxSlLybo.js +0 -94
  736. package/dist/layout-yxSlLybo.js.map +0 -1
  737. package/dist/lightbox-BrI1Z31s.js +0 -678
  738. package/dist/lightbox-BrI1Z31s.js.map +0 -1
  739. package/dist/lightbox-CmACf0t5.cjs +0 -202
  740. package/dist/lightbox-CmACf0t5.cjs.map +0 -1
  741. package/dist/list-Cm-jjXxM.js +0 -105
  742. package/dist/list-Cm-jjXxM.js.map +0 -1
  743. package/dist/list-swIL9VDv.cjs +0 -40
  744. package/dist/list-swIL9VDv.cjs.map +0 -1
  745. package/dist/litElement.mixin-3llHwB-8.cjs +0 -1
  746. package/dist/litElement.mixin-3llHwB-8.cjs.map +0 -1
  747. package/dist/litElement.mixin-6jJYHCrZ.js +0 -12
  748. package/dist/litElement.mixin-6jJYHCrZ.js.map +0 -1
  749. package/dist/magnetic-BZGFxAWG.js +0 -47
  750. package/dist/magnetic-BZGFxAWG.js.map +0 -1
  751. package/dist/magnetic-Dux4QwO4.cjs +0 -1
  752. package/dist/magnetic-Dux4QwO4.cjs.map +0 -1
  753. package/dist/mailbox-BuvsVaAQ.js +0 -1584
  754. package/dist/mailbox-BuvsVaAQ.js.map +0 -1
  755. package/dist/mailbox-D6LkQcN5.cjs +0 -1142
  756. package/dist/mailbox-D6LkQcN5.cjs.map +0 -1
  757. package/dist/map-CQiKAxC3.js +0 -205
  758. package/dist/map-CQiKAxC3.js.map +0 -1
  759. package/dist/map-D5NN4VET.cjs +0 -80
  760. package/dist/map-D5NN4VET.cjs.map +0 -1
  761. package/dist/menu-C1x04YZw.js +0 -51
  762. package/dist/menu-C1x04YZw.js.map +0 -1
  763. package/dist/menu-CkgMO9K5.cjs +0 -23
  764. package/dist/menu-CkgMO9K5.cjs.map +0 -1
  765. package/dist/notification-BnBgxjF-.js +0 -304
  766. package/dist/notification-BnBgxjF-.js.map +0 -1
  767. package/dist/notification-CZFEhWxc.cjs +0 -23
  768. package/dist/notification-CZFEhWxc.cjs.map +0 -1
  769. package/dist/option-BrxCVwSx.cjs +0 -43
  770. package/dist/option-BrxCVwSx.cjs.map +0 -1
  771. package/dist/option-DBO8xZwd.js +0 -97
  772. package/dist/option-DBO8xZwd.js.map +0 -1
  773. package/dist/overlay-stack-DQey9Qph.cjs.map +0 -1
  774. package/dist/overlay-stack-DT1SdaGW.js.map +0 -1
  775. package/dist/progress-Db2e4_Zd.cjs +0 -51
  776. package/dist/progress-Db2e4_Zd.cjs.map +0 -1
  777. package/dist/progress-DeiHxXo7.js +0 -128
  778. package/dist/progress-DeiHxXo7.js.map +0 -1
  779. package/dist/provide-C1aQhxYo.js +0 -107
  780. package/dist/provide-C1aQhxYo.js.map +0 -1
  781. package/dist/provide-DHnhQtCH.cjs +0 -1
  782. package/dist/provide-DHnhQtCH.cjs.map +0 -1
  783. package/dist/radio-group-Cspwd-Vw.cjs +0 -40
  784. package/dist/radio-group-Cspwd-Vw.cjs.map +0 -1
  785. package/dist/radio-group-zSO0AkJf.js +0 -105
  786. package/dist/radio-group-zSO0AkJf.js.map +0 -1
  787. package/dist/reduced-motion-D-L12p7G.js.map +0 -1
  788. package/dist/reduced-motion-Ds05GPyz.cjs.map +0 -1
  789. package/dist/rxjs-utils-BSjmI9-Q.js.map +0 -1
  790. package/dist/rxjs-utils-DCsfzeap.cjs.map +0 -1
  791. package/dist/scroll-QMCmbbDv.cjs +0 -26
  792. package/dist/scroll-QMCmbbDv.cjs.map +0 -1
  793. package/dist/scroll-cBDzye64.js +0 -112
  794. package/dist/scroll-cBDzye64.js.map +0 -1
  795. package/dist/search-C4dFHYbX.js.map +0 -1
  796. package/dist/search-Ds8tt7Et.cjs.map +0 -1
  797. package/dist/select-Ct37l3lg.cjs +0 -56
  798. package/dist/select-Ct37l3lg.cjs.map +0 -1
  799. package/dist/select-c6HbWvKP.js +0 -305
  800. package/dist/select-c6HbWvKP.js.map +0 -1
  801. package/dist/sheet-BMXcUiIm.js +0 -168
  802. package/dist/sheet-BMXcUiIm.js.map +0 -1
  803. package/dist/sheet-CQec-bCV.cjs +0 -35
  804. package/dist/sheet-CQec-bCV.cjs.map +0 -1
  805. package/dist/sheet.service-BcPV3Du4.js +0 -86
  806. package/dist/sheet.service-BcPV3Du4.js.map +0 -1
  807. package/dist/sheet.service-Dumvr1HT.cjs +0 -1
  808. package/dist/sheet.service-Dumvr1HT.cjs.map +0 -1
  809. package/dist/sound.service-Bu3EQLv2.cjs +0 -1
  810. package/dist/sound.service-Bu3EQLv2.cjs.map +0 -1
  811. package/dist/sound.service-m3BrSfuH.js +0 -2353
  812. package/dist/sound.service-m3BrSfuH.js.map +0 -1
  813. package/dist/src-BLngW2bl.js +0 -1244
  814. package/dist/src-BLngW2bl.js.map +0 -1
  815. package/dist/src-BtQVyqMy.cjs +0 -269
  816. package/dist/src-BtQVyqMy.cjs.map +0 -1
  817. package/dist/store-CorvD3bT.cjs.map +0 -1
  818. package/dist/store-DYqDLAvT.js.map +0 -1
  819. package/dist/surface-BjKZoJxK.cjs +0 -7
  820. package/dist/surface-BjKZoJxK.cjs.map +0 -1
  821. package/dist/surface-pK8hME5c.js +0 -21
  822. package/dist/surface-pK8hME5c.js.map +0 -1
  823. package/dist/surface.mixin-C5sDI1-_.cjs +0 -297
  824. package/dist/surface.mixin-C5sDI1-_.cjs.map +0 -1
  825. package/dist/surface.mixin-CBNRpJum.js +0 -320
  826. package/dist/surface.mixin-CBNRpJum.js.map +0 -1
  827. package/dist/table-BXIHX9h4.js +0 -631
  828. package/dist/table-BXIHX9h4.js.map +0 -1
  829. package/dist/table-CiqgZzSd.cjs +0 -63
  830. package/dist/table-CiqgZzSd.cjs.map +0 -1
  831. package/dist/tabs-CKa-W4qA.cjs +0 -31
  832. package/dist/tabs-CKa-W4qA.cjs.map +0 -1
  833. package/dist/tabs-nbV5eblZ.js +0 -125
  834. package/dist/tabs-nbV5eblZ.js.map +0 -1
  835. package/dist/tailwind.mixin-BCJOOX1_.js +0 -225
  836. package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
  837. package/dist/tailwind.mixin-BF1Huas7.cjs +0 -2
  838. package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
  839. package/dist/textarea-Cp1ZE60O.cjs +0 -35
  840. package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
  841. package/dist/textarea-D7q8exMg.js +0 -195
  842. package/dist/textarea-D7q8exMg.js.map +0 -1
  843. package/dist/theme-Da4SPq9X.cjs +0 -181
  844. package/dist/theme-Da4SPq9X.cjs.map +0 -1
  845. package/dist/theme-_VPV6Bxh.js +0 -4121
  846. package/dist/theme-_VPV6Bxh.js.map +0 -1
  847. package/dist/theme-button--sX8A-m1.js +0 -19
  848. package/dist/theme-button--sX8A-m1.js.map +0 -1
  849. package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
  850. package/dist/theme-button-Ci8VQ7KW.cjs.map +0 -1
  851. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  852. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  853. package/dist/theme.interface-CXloMUCw.js.map +0 -1
  854. package/dist/theme.interface-Da23QAYb.cjs.map +0 -1
  855. package/dist/theme.service-C_tjlqgy.cjs +0 -1
  856. package/dist/theme.service-C_tjlqgy.cjs.map +0 -1
  857. package/dist/theme.service-D9lEas89.js +0 -108
  858. package/dist/theme.service-D9lEas89.js.map +0 -1
  859. package/dist/tslib.es6-D7BIeDVB.cjs.map +0 -1
  860. package/dist/tslib.es6-ErZEp3OO.js.map +0 -1
  861. package/dist/typewriter-B2TnHPjw.cjs +0 -123
  862. package/dist/typewriter-B2TnHPjw.cjs.map +0 -1
  863. package/dist/typewriter-BrZNa8T-.js +0 -700
  864. package/dist/typewriter-BrZNa8T-.js.map +0 -1
  865. package/dist/utils-BcaKtQuA.cjs +0 -1
  866. package/dist/utils-BcaKtQuA.cjs.map +0 -1
  867. package/dist/utils-CoU7M2YS.js +0 -259
  868. package/dist/utils-CoU7M2YS.js.map +0 -1
  869. package/dist/window-CM1ycigo.js +0 -548
  870. package/dist/window-CM1ycigo.js.map +0 -1
  871. package/dist/window-Uii13x_r.cjs +0 -59
  872. package/dist/window-Uii13x_r.cjs.map +0 -1
  873. package/src/form/form-v2.ts +0 -268
  874. package/src/layout/v2/grid.ts +0 -93
  875. package/src/notification/outlet.ts +0 -16
  876. package/src/store/immer-integration.ts +0 -99
  877. package/src/tooltip/tooltip.ts +0 -216
  878. /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
  879. /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
  880. /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
  881. /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
  882. /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
  883. /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
  884. /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
  885. /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
  886. /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
  887. /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
  888. /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
  889. /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
  890. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
  891. /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
  892. /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
  893. /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
  894. /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
  895. /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
  896. /package/{ai → dist/skills}/animation.md +0 -0
  897. /package/{ai → dist/skills}/area.md +0 -0
  898. /package/{ai → dist/skills}/audio.md +0 -0
  899. /package/{ai → dist/skills}/autocomplete.md +0 -0
  900. /package/{ai → dist/skills}/avatar.md +0 -0
  901. /package/{ai → dist/skills}/badge.md +0 -0
  902. /package/{ai → dist/skills}/boat.md +0 -0
  903. /package/{ai → dist/skills}/busy.md +0 -0
  904. /package/{ai → dist/skills}/button.md +0 -0
  905. /package/{ai → dist/skills}/card.md +0 -0
  906. /package/{ai → dist/skills}/charts.md +0 -0
  907. /package/{ai → dist/skills}/checkbox.md +0 -0
  908. /package/{ai → dist/skills}/chips.md +0 -0
  909. /package/{ai → dist/skills}/code-highlight.md +0 -0
  910. /package/{ai → dist/skills}/connectivity.md +0 -0
  911. /package/{ai → dist/skills}/content-drawer.md +0 -0
  912. /package/{ai → dist/skills}/date-range-inline.md +0 -0
  913. /package/{ai → dist/skills}/date-range.md +0 -0
  914. /package/{ai → dist/skills}/delay.md +0 -0
  915. /package/{ai → dist/skills}/details.md +0 -0
  916. /package/{ai → dist/skills}/dialog.md +0 -0
  917. /package/{ai → dist/skills}/directives.md +0 -0
  918. /package/{ai → dist/skills}/discovery.md +0 -0
  919. /package/{ai → dist/skills}/divider.md +0 -0
  920. /package/{ai → dist/skills}/dropdown.md +0 -0
  921. /package/{ai → dist/skills}/expand.md +0 -0
  922. /package/{ai → dist/skills}/extra.md +0 -0
  923. /package/{ai → dist/skills}/float.md +0 -0
  924. /package/{ai → dist/skills}/form.md +0 -0
  925. /package/{ai → dist/skills}/icons.md +0 -0
  926. /package/{ai → dist/skills}/iframe.md +0 -0
  927. /package/{ai → dist/skills}/input.md +0 -0
  928. /package/{ai → dist/skills}/json.md +0 -0
  929. /package/{ai → dist/skills}/layout.md +0 -0
  930. /package/{ai → dist/skills}/lightbox.md +0 -0
  931. /package/{ai → dist/skills}/list.md +0 -0
  932. /package/{ai → dist/skills}/mailbox.md +0 -0
  933. /package/{ai → dist/skills}/map.md +0 -0
  934. /package/{ai → dist/skills}/menu.md +0 -0
  935. /package/{ai → dist/skills}/mixins.md +0 -0
  936. /package/{ai → dist/skills}/nav-drawer.md +0 -0
  937. /package/{ai → dist/skills}/navigation-bar.md +0 -0
  938. /package/{ai → dist/skills}/navigation-rail.md +0 -0
  939. /package/{ai → dist/skills}/notification.md +0 -0
  940. /package/{ai → dist/skills}/option.md +0 -0
  941. /package/{ai → dist/skills}/page.md +0 -0
  942. /package/{ai → dist/skills}/progress.md +0 -0
  943. /package/{ai → dist/skills}/qr-scanner.md +0 -0
  944. /package/{ai → dist/skills}/radio-group.md +0 -0
  945. /package/{ai → dist/skills}/range.md +0 -0
  946. /package/{ai → dist/skills}/rxjs-utils.md +0 -0
  947. /package/dist/{ai → skills/schmancy}/animation.md +0 -0
  948. /package/dist/{ai → skills/schmancy}/area.md +0 -0
  949. /package/dist/{ai → skills/schmancy}/audio.md +0 -0
  950. /package/dist/{ai → skills/schmancy}/autocomplete.md +0 -0
  951. /package/dist/{ai → skills/schmancy}/avatar.md +0 -0
  952. /package/dist/{ai → skills/schmancy}/badge.md +0 -0
  953. /package/dist/{ai → skills/schmancy}/boat.md +0 -0
  954. /package/dist/{ai → skills/schmancy}/busy.md +0 -0
  955. /package/dist/{ai → skills/schmancy}/button.md +0 -0
  956. /package/dist/{ai → skills/schmancy}/card.md +0 -0
  957. /package/dist/{ai → skills/schmancy}/charts.md +0 -0
  958. /package/dist/{ai → skills/schmancy}/checkbox.md +0 -0
  959. /package/dist/{ai → skills/schmancy}/chips.md +0 -0
  960. /package/dist/{ai → skills/schmancy}/code-highlight.md +0 -0
  961. /package/dist/{ai → skills/schmancy}/connectivity.md +0 -0
  962. /package/dist/{ai → skills/schmancy}/content-drawer.md +0 -0
  963. /package/dist/{ai → skills/schmancy}/date-range-inline.md +0 -0
  964. /package/dist/{ai → skills/schmancy}/date-range.md +0 -0
  965. /package/dist/{ai → skills/schmancy}/delay.md +0 -0
  966. /package/dist/{ai → skills/schmancy}/details.md +0 -0
  967. /package/dist/{ai → skills/schmancy}/dialog.md +0 -0
  968. /package/dist/{ai → skills/schmancy}/directives.md +0 -0
  969. /package/dist/{ai → skills/schmancy}/discovery.md +0 -0
  970. /package/dist/{ai → skills/schmancy}/divider.md +0 -0
  971. /package/dist/{ai → skills/schmancy}/dropdown.md +0 -0
  972. /package/dist/{ai → skills/schmancy}/expand.md +0 -0
  973. /package/dist/{ai → skills/schmancy}/extra.md +0 -0
  974. /package/dist/{ai → skills/schmancy}/float.md +0 -0
  975. /package/dist/{ai → skills/schmancy}/form.md +0 -0
  976. /package/dist/{ai → skills/schmancy}/icons.md +0 -0
  977. /package/dist/{ai → skills/schmancy}/iframe.md +0 -0
  978. /package/dist/{ai → skills/schmancy}/input.md +0 -0
  979. /package/dist/{ai → skills/schmancy}/json.md +0 -0
  980. /package/dist/{ai → skills/schmancy}/layout.md +0 -0
  981. /package/dist/{ai → skills/schmancy}/lightbox.md +0 -0
  982. /package/dist/{ai → skills/schmancy}/list.md +0 -0
  983. /package/dist/{ai → skills/schmancy}/mailbox.md +0 -0
  984. /package/dist/{ai → skills/schmancy}/map.md +0 -0
  985. /package/dist/{ai → skills/schmancy}/menu.md +0 -0
  986. /package/dist/{ai → skills/schmancy}/mixins.md +0 -0
  987. /package/dist/{ai → skills/schmancy}/nav-drawer.md +0 -0
  988. /package/dist/{ai → skills/schmancy}/navigation-bar.md +0 -0
  989. /package/dist/{ai → skills/schmancy}/navigation-rail.md +0 -0
  990. /package/dist/{ai → skills/schmancy}/notification.md +0 -0
  991. /package/dist/{ai → skills/schmancy}/option.md +0 -0
  992. /package/dist/{ai → skills/schmancy}/page.md +0 -0
  993. /package/dist/{ai → skills/schmancy}/progress.md +0 -0
  994. /package/dist/{ai → skills/schmancy}/qr-scanner.md +0 -0
  995. /package/dist/{ai → skills/schmancy}/radio-group.md +0 -0
  996. /package/dist/{ai → skills/schmancy}/range.md +0 -0
  997. /package/dist/{ai → skills/schmancy}/rxjs-utils.md +0 -0
  998. /package/{ai → dist/skills/schmancy}/select.md +0 -0
  999. /package/{ai → dist/skills/schmancy}/sheet.md +0 -0
  1000. /package/{ai → dist/skills/schmancy}/slider.md +0 -0
  1001. /package/{ai → dist/skills/schmancy}/steps.md +0 -0
  1002. /package/{ai → dist/skills/schmancy}/store.md +0 -0
  1003. /package/{ai → dist/skills/schmancy}/surface.md +0 -0
  1004. /package/{ai → dist/skills/schmancy}/table.md +0 -0
  1005. /package/{ai → dist/skills/schmancy}/tabs.md +0 -0
  1006. /package/{ai → dist/skills/schmancy}/teleport.md +0 -0
  1007. /package/{ai → dist/skills/schmancy}/textarea.md +0 -0
  1008. /package/{ai → dist/skills/schmancy}/theme-button.md +0 -0
  1009. /package/{ai → dist/skills/schmancy}/theme.md +0 -0
  1010. /package/{ai → dist/skills/schmancy}/tree.md +0 -0
  1011. /package/{ai → dist/skills/schmancy}/typewriter.md +0 -0
  1012. /package/{ai → dist/skills/schmancy}/typography.md +0 -0
  1013. /package/{ai → dist/skills/schmancy}/utils.md +0 -0
  1014. /package/{ai → dist/skills/schmancy}/window.md +0 -0
  1015. /package/dist/{ai → skills}/select.md +0 -0
  1016. /package/dist/{ai → skills}/sheet.md +0 -0
  1017. /package/dist/{ai → skills}/slider.md +0 -0
  1018. /package/dist/{ai → skills}/steps.md +0 -0
  1019. /package/dist/{ai → skills}/store.md +0 -0
  1020. /package/dist/{ai → skills}/surface.md +0 -0
  1021. /package/dist/{ai → skills}/table.md +0 -0
  1022. /package/dist/{ai → skills}/tabs.md +0 -0
  1023. /package/dist/{ai → skills}/teleport.md +0 -0
  1024. /package/dist/{ai → skills}/textarea.md +0 -0
  1025. /package/dist/{ai → skills}/theme-button.md +0 -0
  1026. /package/dist/{ai → skills}/theme.md +0 -0
  1027. /package/dist/{ai → skills}/tree.md +0 -0
  1028. /package/dist/{ai → skills}/typewriter.md +0 -0
  1029. /package/dist/{ai → skills}/typography.md +0 -0
  1030. /package/dist/{ai → skills}/utils.md +0 -0
  1031. /package/dist/{ai → skills}/window.md +0 -0
  1032. /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
  1033. /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
  1034. /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
  1035. /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
  1036. /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
  1037. /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
@@ -0,0 +1,1142 @@
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`),n=require(`./litElement.mixin-Bj2q1yPw.cjs`);require(`./mixins.cjs`);const r=require(`./dialog-service-DcuAavp2.cjs`),i=require(`./sheet.service-Cr13Oo6G.cjs`);require(`./dialog.cjs`);const a=require(`./notification-DKVWYhqs.cjs`);let o=require(`rxjs`),s=require(`lit/decorators.js`),c=require(`lit`),l=require(`lit/directives/ref.js`),u=require(`lit/directives/repeat.js`),d=require(`lit/directives/when.js`);var f=class extends n.t(c.css`
2
+ :host {
3
+ display: block;
4
+ height: 100%;
5
+ }
6
+ `){constructor(...e){super(...e),this.config={},this.templates=[],this.importSources=[],this.disabled=!1,this.recipientsTitle=`Recipients`,this.recipientsEmptyTitle=`No recipients yet`,this.recipientsEmptyMessage=`Import from sources or upload a CSV`,this.enableCsvImport=!0,this.enableDragDrop=!0,this.recipients=[],this.selectedRecipients=[],this.subject=``,this.body=``,this.templateId=null,this.attachments=[],this.isSending=!1,this.handleEmailsImported=e=>{let{emails:t}=e.detail,n=[...new Set([...this.recipients,...t])],r=t.filter(e=>!this.recipients.includes(e));this.recipients=n,this.selectedRecipients=[...new Set([...this.selectedRecipients,...r])],this.dispatchEvent(new CustomEvent(`emails-imported`,{detail:{emails:r,source:e.detail.source},bubbles:!0,composed:!0}))},this.handleRecipientRemoved=e=>{let{email:t}=e.detail;this.recipients=this.recipients.filter(e=>e!==t),this.selectedRecipients=this.selectedRecipients.filter(e=>e!==t),this.dispatchEvent(new CustomEvent(`recipient-removed`,{detail:{email:t},bubbles:!0,composed:!0}))},this.handleRecipientsCleared=()=>{this.recipients=[],this.selectedRecipients=[],this.dispatchEvent(new CustomEvent(`recipients-cleared`,{bubbles:!0,composed:!0}))},this.handleSelectionChanged=e=>{let{selectedEmails:t}=e.detail;this.selectedRecipients=t,this.dispatchEvent(new CustomEvent(`selection-changed`,{detail:{selectedEmails:t},bubbles:!0,composed:!0}))},this.handleEditorChange=e=>{let{subject:t,body:n,templateId:r,attachments:i}=e.detail;this.subject=t,this.body=n,this.templateId=r,this.attachments=i,this.dispatchEvent(new CustomEvent(`compose-changed`,{detail:{subject:t,body:n,templateId:r,attachments:i},bubbles:!0,composed:!0}))},this.handleSend=async()=>{if(this.selectedRecipients.length!==0)if(this.subject.trim())if(this.body.trim()){this.isSending=!0;try{let e={recipients:this.selectedRecipients,subject:this.subject,body:this.body,attachments:this.attachments,templateId:this.templateId};this.dispatchEvent(new CustomEvent(`send-email`,{detail:{request:e},bubbles:!0,composed:!0}))}catch(e){this.dispatchEvent(new CustomEvent(`send-error`,{detail:{error:e instanceof Error?e.message:`Failed to send email`},bubbles:!0,composed:!0}))}finally{this.isSending=!1}}else this.dispatchEvent(new CustomEvent(`send-error`,{detail:{error:`Please enter a message body`},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent(`send-error`,{detail:{error:`Please enter a subject`},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent(`send-error`,{detail:{error:`Please select at least one recipient`},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.setSending(this.disabled)}updated(e){super.updated(e),e.has(`disabled`)&&this.setSending(this.disabled)}addRecipients(e){let t=[...new Set([...this.recipients,...e])],n=e.filter(e=>!this.recipients.includes(e));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...n])]}setSubject(e){this.subject=e}setBody(e){this.body=e}setTemplate(e){this.templateId=e}clearCompose(){this.recipients=[],this.selectedRecipients=[],this.subject=``,this.body=``,this.templateId=null,this.attachments=[]}setSending(e){this.isSending=e}render(){let e=this.selectedRecipients.length>0&&this.subject.trim()&&this.body.trim()&&!this.isSending&&!this.disabled;return c.html`
7
+ <!-- Main Layout Container -->
8
+ <div class="flex flex-col h-full gap-6 p-6">
9
+
10
+ <!-- Main Content Section: Composer and Preview -->
11
+ <div class="flex flex-col xl:flex-row gap-6 flex-1 min-h-0">
12
+
13
+ <!-- Composer Section - Full width on mobile/tablet, half on large screens -->
14
+ <div class="w-full xl:w-1/2 min-h-0 flex flex-col">
15
+ <schmancy-email-editor
16
+ .subject=${this.subject}
17
+ .body=${this.body}
18
+ .templates=${this.templates}
19
+ .attachments=${this.attachments}
20
+ .disabled=${this.disabled}
21
+ .config=${this.config}
22
+ @editor-change=${this.handleEditorChange}
23
+ class="h-full"
24
+ ></schmancy-email-editor>
25
+ </div>
26
+
27
+ <!-- Preview Section - Full width on mobile/tablet, half on large screens -->
28
+ <div class="w-full xl:w-1/2 min-h-0 flex flex-col">
29
+ <schmancy-email-viewer
30
+ .subject=${this.subject}
31
+ .body=${this.body}
32
+ .recipients=${this.selectedRecipients}
33
+ .attachments=${this.attachments}
34
+ class="h-full"
35
+ ></schmancy-email-viewer>
36
+ </div>
37
+
38
+ </div>
39
+
40
+ <!-- Send Section - Sticky bottom bar -->
41
+ <div class="shrink-0">
42
+ <schmancy-surface
43
+ type="subtle"
44
+ rounded="all"
45
+ class="p-4"
46
+ >
47
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
48
+ <!-- Send Info -->
49
+ <div class="flex flex-col gap-1">
50
+ <schmancy-typography type="body" token="sm" class="font-medium">
51
+ ${this.selectedRecipients.length} recipient${this.selectedRecipients.length===1?``:`s`} selected
52
+ </schmancy-typography>
53
+ ${(0,d.when)(this.attachments.length>0,()=>c.html`
54
+ <schmancy-typography type="body" token="xs">
55
+ ${this.attachments.length} attachment${this.attachments.length===1?``:`s`}
56
+ </schmancy-typography>
57
+ `)}
58
+ </div>
59
+
60
+ <!-- Send Button -->
61
+ <schmancy-button
62
+ variant="filled"
63
+ ?disabled=${!e}
64
+ ?loading=${this.isSending}
65
+ @click=${this.handleSend}
66
+ class="w-full sm:w-auto"
67
+ >
68
+ <schmancy-icon slot="prefix" size="18px">send</schmancy-icon>
69
+ ${this.isSending?`Sending...`:`Send Email`}
70
+ </schmancy-button>
71
+ </div>
72
+ </schmancy-surface>
73
+ </div>
74
+
75
+ </div>
76
+
77
+ <!-- Recipients Panel as Floating Boat -->
78
+ <schmancy-email-recipients
79
+ .recipients=${this.recipients}
80
+ .selectedRecipients=${this.selectedRecipients}
81
+ .importSources=${this.importSources}
82
+ .disabled=${this.disabled}
83
+ .enableCsvImport=${this.enableCsvImport}
84
+ .enableDragDrop=${this.enableDragDrop}
85
+ .title=${this.recipientsTitle}
86
+ .emptyStateTitle=${this.recipientsEmptyTitle}
87
+ .emptyStateMessage=${this.recipientsEmptyMessage}
88
+ @emails-imported=${this.handleEmailsImported}
89
+ @recipient-removed=${this.handleRecipientRemoved}
90
+ @recipients-cleared=${this.handleRecipientsCleared}
91
+ @selection-changed=${this.handleSelectionChanged}
92
+ ></schmancy-email-recipients>
93
+ `}};t.t([(0,s.property)({type:Object})],f.prototype,`config`,void 0),t.t([(0,s.property)({type:Array})],f.prototype,`templates`,void 0),t.t([(0,s.property)({type:Array})],f.prototype,`importSources`,void 0),t.t([(0,s.property)({type:Boolean})],f.prototype,`disabled`,void 0),t.t([(0,s.property)({type:String})],f.prototype,`recipientsTitle`,void 0),t.t([(0,s.property)({type:String})],f.prototype,`recipientsEmptyTitle`,void 0),t.t([(0,s.property)({type:String})],f.prototype,`recipientsEmptyMessage`,void 0),t.t([(0,s.property)({type:Boolean})],f.prototype,`enableCsvImport`,void 0),t.t([(0,s.property)({type:Boolean})],f.prototype,`enableDragDrop`,void 0),t.t([(0,s.state)()],f.prototype,`recipients`,void 0),t.t([(0,s.state)()],f.prototype,`selectedRecipients`,void 0),t.t([(0,s.state)()],f.prototype,`subject`,void 0),t.t([(0,s.state)()],f.prototype,`body`,void 0),t.t([(0,s.state)()],f.prototype,`templateId`,void 0),t.t([(0,s.state)()],f.prototype,`attachments`,void 0),t.t([(0,s.state)()],f.prototype,`isSending`,void 0),f=t.t([(0,s.customElement)(`schmancy-mailbox`)],f);var p=class extends e.t(){constructor(...e){super(...e),this.layouts=[{id:`columns-2`,icon:`view_week`,label:`2 Col`},{id:`columns-3`,icon:`view_column`,label:`3 Col`},{id:`sidebar-left`,icon:`view_sidebar`,label:`Left`},{id:`sidebar-right`,icon:`view_sidebar`,label:`Right`,flipped:!0},{id:`image-row`,icon:`collections`,label:`Images`}]}selectLayout(e){this.dispatchEvent(new CustomEvent(`layout-select`,{detail:{layout:e},bubbles:!0,composed:!0}))}render(){return c.html`
94
+ <div class="grid p-3 gap-2">
95
+ ${this.layouts.map(e=>c.html`
96
+ <schmancy-button
97
+ variant="outlined"
98
+ @click=${()=>this.selectLayout(e.id)}
99
+ >
100
+ <schmancy-icon
101
+ slot="prefix"
102
+ size="20px"
103
+ class=${e.flipped?`scale-x-[-1]`:``}
104
+ >
105
+ ${e.icon}
106
+ </schmancy-icon>
107
+ ${e.label}
108
+ </schmancy-button>
109
+ `)}
110
+ </div>
111
+ `}};p=t.t([(0,s.customElement)(`schmancy-email-layout-selector`)],p);var m=class extends n.t(c.css`
112
+ :host {
113
+ display: block;
114
+ }
115
+ `){constructor(...e){super(...e),this.templates=[],this.searchQuery=``,this.filteredTemplates=[],this.selectedCategory=`all`,this.handleSearch=e=>{let t=e.target;this.searchQuery=t.value},this.handleCategorySelect=e=>{this.selectedCategory=e,this.updateFilteredTemplates()},this.selectTemplate=e=>{this.dispatchEvent(new CustomEvent(`template-selected`,{detail:e,bubbles:!0,composed:!0})),i.n.dismiss()},this.close=()=>{i.n.dismiss()}}connectedCallback(){super.connectedCallback(),this.updateFilteredTemplates()}updated(e){(e.has(`templates`)||e.has(`searchQuery`)||e.has(`selectedCategory`))&&this.updateFilteredTemplates()}get categories(){let e=new Set;return this.templates.forEach(t=>{t.category&&e.add(t.category)}),[`all`,...Array.from(e)]}updateFilteredTemplates(){let e=[...this.templates];if(this.selectedCategory!==`all`&&(e=e.filter(e=>e.category===this.selectedCategory)),this.searchQuery.trim()){let t=this.searchQuery.toLowerCase();e=e.filter(e=>e.name.toLowerCase().includes(t)||e.category?.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t))}this.filteredTemplates=e}render(){return c.html`
116
+ <div class="flex flex-col h-full overflow-hidden">
117
+ <!-- Header -->
118
+ <div class="flex items-center justify-between px-6 py-4 border-b border-outline-variant">
119
+ <div class="flex items-center gap-3">
120
+ <schmancy-icon size="24px" class="text-primary">mail</schmancy-icon>
121
+ <schmancy-typography type="headline" token="md">
122
+ Choose Email Template
123
+ </schmancy-typography>
124
+ </div>
125
+ <schmancy-button
126
+ variant="text"
127
+ @click=${this.close}
128
+ class="hover:bg-surface-container rounded-full w-10 h-10 p-0"
129
+ >
130
+ <schmancy-icon>close</schmancy-icon>
131
+ </schmancy-button>
132
+ </div>
133
+
134
+ <!-- Body -->
135
+ <div class="flex-1 flex flex-col overflow-hidden">
136
+ ${this.renderTemplateList()}
137
+ </div>
138
+ </div>
139
+ `}renderTemplateList(){return c.html`
140
+ <!-- Search and Filter Bar -->
141
+ <div class="px-6 py-4 border-b border-outline-variant bg-surface-containerLow">
142
+ <div class="flex flex-col gap-4">
143
+ <!-- Search Input -->
144
+ <schmancy-input
145
+ type="search"
146
+ placeholder="Search templates..."
147
+ .value=${this.searchQuery}
148
+ @input=${this.handleSearch}
149
+ class="w-full"
150
+ >
151
+ <schmancy-icon slot="prefix" size="20px" class="text-surface-onVariant">search</schmancy-icon>
152
+ ${(0,d.when)(this.searchQuery,()=>c.html`
153
+ <schmancy-button
154
+ slot="suffix"
155
+ variant="text"
156
+ @click=${()=>{this.searchQuery=``}}
157
+ class="rounded-full w-8 h-8 p-0"
158
+ >
159
+ <schmancy-icon size="16px">close</schmancy-icon>
160
+ </schmancy-button>
161
+ `)}
162
+ </schmancy-input>
163
+
164
+ <!-- Category Filter -->
165
+ ${(0,d.when)(this.categories.length>1,()=>c.html`
166
+ <div class="flex gap-2 flex-wrap">
167
+ ${(0,u.repeat)(this.categories,e=>e,e=>c.html`
168
+ <schmancy-chip
169
+ class="cursor-pointer transition-all hover:shadow-sm ${this.selectedCategory===e?`bg-primary text-primary-on`:`border border-outline`}"
170
+ @click=${()=>this.handleCategorySelect(e)}
171
+ >
172
+ ${e===`all`?`All Templates`:e}
173
+ </schmancy-chip>
174
+ `)}
175
+ </div>
176
+ `)}
177
+ </div>
178
+ </div>
179
+
180
+ <!-- Template List with Previews -->
181
+ <div class="flex-1 overflow-y-auto px-6 py-6">
182
+ ${(0,d.when)(this.filteredTemplates.length>0,()=>c.html`
183
+ <div class="space-y-6">
184
+ ${(0,u.repeat)(this.filteredTemplates,e=>e.id,e=>c.html`
185
+ <schmancy-surface
186
+ type="subtle"
187
+ elevation="1"
188
+ rounded="all"
189
+ class="group cursor-pointer hover:elevation-3 transition-all duration-200 overflow-hidden"
190
+ @click=${()=>this.selectTemplate(e)}
191
+ >
192
+ <!-- Template Header -->
193
+ <div class="p-4 border-b border-outline-variant">
194
+ <div class="flex items-start justify-between">
195
+ <div class="flex-1">
196
+ <schmancy-typography type="title" token="md" class="font-semibold leading-tight mb-1">
197
+ ${e.name}
198
+ </schmancy-typography>
199
+ ${(0,d.when)(e.category,()=>c.html`
200
+ <schmancy-chip class="text-xs border border-outline">
201
+ ${e.category}
202
+ </schmancy-chip>
203
+ `)}
204
+ </div>
205
+ <schmancy-button
206
+ variant="filled"
207
+ size="sm"
208
+ class="opacity-0 group-hover:opacity-100 transition-opacity"
209
+ >
210
+ Use This
211
+ </schmancy-button>
212
+ </div>
213
+ </div>
214
+
215
+ <!-- Email Preview -->
216
+ <div class="p-4 bg-surface">
217
+ <schmancy-email-viewer
218
+ subject=${e.subject}
219
+ body=${e.body}
220
+ mode="desktop"
221
+ class="max-h-96 overflow-y-auto"
222
+ ></schmancy-email-viewer>
223
+ </div>
224
+ </schmancy-surface>
225
+ `)}
226
+ </div>
227
+ `,()=>c.html`
228
+ <div class="flex flex-col items-center justify-center h-96 text-center">
229
+ <div class="mb-6">
230
+ <schmancy-icon size="64px" class="text-surface-onVariant opacity-20">mail_outline</schmancy-icon>
231
+ </div>
232
+ <schmancy-typography type="headline" token="sm" class="mb-2">
233
+ ${this.searchQuery||this.selectedCategory!==`all`?`No templates found`:`No templates available`}
234
+ </schmancy-typography>
235
+ <schmancy-typography type="body" token="md" class="text-surface-onVariant mb-6 max-w-md">
236
+ ${this.searchQuery?`No templates match your search for "${this.searchQuery}"`:this.selectedCategory===`all`?`Start by creating your first email template`:`No templates found in the "${this.selectedCategory}" category`}
237
+ </schmancy-typography>
238
+ ${(0,d.when)(this.searchQuery||this.selectedCategory!==`all`,()=>c.html`
239
+ <div class="flex gap-3">
240
+ ${(0,d.when)(this.searchQuery,()=>c.html`
241
+ <schmancy-button
242
+ variant="outlined"
243
+ @click=${()=>{this.searchQuery=``}}
244
+ >
245
+ <schmancy-icon slot="prefix">clear</schmancy-icon>
246
+ Clear Search
247
+ </schmancy-button>
248
+ `)}
249
+ ${(0,d.when)(this.selectedCategory!==`all`,()=>c.html`
250
+ <schmancy-button
251
+ variant="filled"
252
+ @click=${()=>this.handleCategorySelect(`all`)}
253
+ >
254
+ <schmancy-icon slot="prefix">view_list</schmancy-icon>
255
+ Show All Templates
256
+ </schmancy-button>
257
+ `)}
258
+ </div>
259
+ `)}
260
+ </div>
261
+ `)}
262
+ </div>
263
+ `}};t.t([(0,s.property)({type:Array})],m.prototype,`templates`,void 0),t.t([(0,s.state)()],m.prototype,`searchQuery`,void 0),t.t([(0,s.state)()],m.prototype,`filteredTemplates`,void 0),t.t([(0,s.state)()],m.prototype,`selectedCategory`,void 0),m=t.t([(0,s.customElement)(`schmancy-email-template-picker`)],m);var h=class extends n.t(c.css`
264
+ :host {
265
+ display: block;
266
+ height: 100%;
267
+ }
268
+ `){constructor(...e){super(...e),this.subject=``,this.body=``,this.disabled=!1,this.attachments=[],this.config={},this.templates=this.getDefaultTemplates(),this.dragOver=!1,this.isUploading=!1,this.subjectInputRef=(0,l.createRef)(),this.bodyTextAreaRef=(0,l.createRef)(),this.fileInputRef=(0,l.createRef)(),this.imageInputRef=(0,l.createRef)(),this.handleKeyDown=e=>{if(this.disabled)return;let t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);e.key===`Tab`&&e.target===t&&(e.preventDefault(),this.insertAtCursor(` `))},this.handlePaste=e=>{let t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);if(this.disabled||document.activeElement!==t)return;let n=e.clipboardData?.items;if(n)for(let t=0;t<n.length;t++){let r=n[t];if(r.type.indexOf(`image`)!==-1){e.preventDefault();let t=r.getAsFile();t&&this.uploadImage(t);break}}},this.handleSubjectChange=e=>{let t=e.target;this.subject=t.value,this.dispatchChange()},this.handleBodyChange=e=>{this.body=e.detail.value,this.dispatchChange()},this.dispatchChange=()=>{this.dispatchEvent(new CustomEvent(`editor-change`,{detail:{subject:this.subject,body:this.body,attachments:this.attachments},bubbles:!0,composed:!0}))},this.openLayoutDialog=()=>{r.t.component(c.html`
269
+ <schmancy-email-layout-selector
270
+ @layout-select=${e=>{this.applyLayout(e.detail.layout),r.t.close()}}
271
+ ></schmancy-email-layout-selector>
272
+ `)},this.openTemplatePicker=()=>{let e=new m;e.templates=this.templates,(0,o.fromEvent)(e,`template-selected`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleTemplateSelected),i.n.open({component:e})},this.handleTemplateSelected=e=>{let t=e.detail;this.subject=t.subject,this.body=t.body,this.dispatchChange(),a.r.success(`Template "${t.name}" applied successfully`)},this.applyLayout=e=>{let t={"columns-2":`
273
+ :::layout columns-2
274
+ <div class="column">
275
+ ![Left Photo](https://via.placeholder.com/400x300?text=Replace+with+your+photo){height=300px}
276
+
277
+ **Photo Title**
278
+
279
+ Replace the placeholder image above with your own photo. The height=300px ensures both images have equal height while width adjusts automatically.
280
+ </div>
281
+
282
+ <div class="column">
283
+ ![Right Photo](https://via.placeholder.com/400x300?text=Replace+with+your+photo){height=300px}
284
+
285
+ **Photo Title**
286
+
287
+ Use the same height value (300px) for both images to keep them aligned perfectly side by side.
288
+ </div>
289
+ :::
290
+ `,"columns-3":`
291
+ :::layout columns-3
292
+ <div class="column">
293
+ ![Photo 1](https://via.placeholder.com/300x200?text=Photo+1){height=200px}
294
+
295
+ **Item Title**
296
+
297
+ Brief description or caption for this item.
298
+ </div>
299
+
300
+ <div class="column">
301
+ ![Photo 2](https://via.placeholder.com/300x200?text=Photo+2){height=200px}
302
+
303
+ **Item Title**
304
+
305
+ Brief description or caption for this item.
306
+ </div>
307
+
308
+ <div class="column">
309
+ ![Photo 3](https://via.placeholder.com/300x200?text=Photo+3){height=200px}
310
+
311
+ **Item Title**
312
+
313
+ Brief description or caption for this item.
314
+ </div>
315
+ :::
316
+ `,"sidebar-left":`
317
+ :::layout sidebar-left
318
+ <div class="sidebar">
319
+ **Sidebar Content**
320
+
321
+ * Navigation item 1
322
+ * Navigation item 2
323
+ * Navigation item 3
324
+ </div>
325
+
326
+ <div class="main">
327
+ **Main Content Area**
328
+
329
+ Your primary content goes here. This area takes up most of the width while the sidebar provides supplementary information or navigation.
330
+ </div>
331
+ :::
332
+ `,"sidebar-right":`
333
+ :::layout sidebar-right
334
+ <div class="main">
335
+ **Main Content Area**
336
+
337
+ Your primary content goes here. This area takes up most of the width while the sidebar provides supplementary information or navigation.
338
+ </div>
339
+
340
+ <div class="sidebar">
341
+ **Sidebar Content**
342
+
343
+ * Quick links
344
+ * Related info
345
+ * Contact details
346
+ </div>
347
+ :::
348
+ `,"image-row":`
349
+ :::layout image-row
350
+ <div class="image">
351
+ ![Gallery Image 1](https://via.placeholder.com/400x250?text=Gallery+Image+1){height=250px}
352
+ </div>
353
+
354
+ <div class="image">
355
+ ![Gallery Image 2](https://via.placeholder.com/400x250?text=Gallery+Image+2){height=250px}
356
+ </div>
357
+
358
+ <div class="image">
359
+ ![Gallery Image 3](https://via.placeholder.com/400x250?text=Gallery+Image+3){height=250px}
360
+ </div>
361
+ :::
362
+ `}[e];t&&this.insertAtCursor(t)},this.uploadImage=async e=>{if(e.type.startsWith(`image/`))if(e.size>10485760)a.r.error(`Image "${e.name}" is too large. Maximum size is 10MB.`);else{this.isUploading=!0;try{let t;this.config.imageUploadHandler?t=await this.config.imageUploadHandler(e):this.config.uploadHandler?t=await this.config.uploadHandler(e):(t=await this.createDataUrl(e),a.r.warning(`No upload handler configured. Using local preview.`));let n=await this.getImageDimensions(e);this.insertImageMarkdown(t,e.name,n.width,n.height),a.r.success(`Image uploaded successfully`)}catch{a.r.error(`Failed to upload image`)}finally{this.isUploading=!1}}else a.r.error(`File "${e.name}" is not an image`)},this.createDataUrl=e=>new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(r.result),r.onerror=n,r.readAsDataURL(e)}),this.getImageDimensions=e=>new Promise(t=>{let n=new Image;n.onload=()=>{t({width:n.width,height:n.height}),URL.revokeObjectURL(n.src)},n.onerror=()=>{t({width:400,height:300}),URL.revokeObjectURL(n.src)},n.src=URL.createObjectURL(e)}),this.insertImageMarkdown=(e,t,n,r)=>{let i=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);if(!i)return;let a=`![${t}](${e}){width=${Math.min(n,600)}px height=auto}`,o=i.selectionStart,s=i.selectionEnd,c=this.body.substring(0,o)+a+this.body.substring(s);this.body=c,this.dispatchChange(),this.updateComplete.then(()=>{let e=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);if(e){let t=o+a.length;e.setSelectionRange(t,t),e.focus()}})},this.handleFileChange=e=>{let t=e.target,n=t.files;if(n)for(let e=0;e<n.length;e++){let t=n[e];t.type.startsWith(`image/`)?this.uploadImage(t):this.addFile(t)}t.value=``},this.handleImageSelect=e=>{let t=e.target,n=t.files?.[0];n&&n.type.startsWith(`image/`)&&this.uploadImage(n),t.value=``},this.handleDrop=e=>{e.preventDefault(),this.dragOver=!1;let t=e.dataTransfer?.files;if(t)for(let e=0;e<t.length;e++){let n=t[e];n.type.startsWith(`image/`)?this.uploadImage(n):this.addFile(n)}},this.handleDragEnter=e=>{e.preventDefault(),this.dragOver=!0},this.handleDocumentDragLeave=e=>{e.preventDefault(),this.dragOver=!1},this.handleDocumentDrop=e=>{e.preventDefault(),this.dragOver=!1},this.handleDragOver=e=>{e.preventDefault()},this.handleDragLeave=e=>{e.preventDefault()},this.addFile=e=>{if(e.size>10485760)return void a.r.error(`File "${e.name}" is too large. Maximum size is 10MB.`);if(this.attachments.some(t=>t.name===e.name&&t.size===e.size))return void a.r.warning(`File "${e.name}" is already attached.`);let t={id:crypto.randomUUID(),file:e,name:e.name,size:e.size,type:e.type||`application/octet-stream`};this.attachments=[...this.attachments,t],this.dispatchChange()},this.removeAttachment=e=>{this.attachments=this.attachments.filter(t=>t.id!==e),this.dispatchChange()}}connectedCallback(){super.connectedCallback(),this.addEventListeners()}disconnectedCallback(){super.disconnectedCallback()}getDefaultTemplates(){return[{id:`welcome`,name:`Welcome Email`,subject:`Welcome to Our Community! 🌟`,description:`A warm welcome message for new users`,category:`onboarding`,body:`# Welcome to Our Community!
363
+
364
+ We're thrilled to have you on board. Thank you for joining us on this journey.
365
+
366
+ ## What's Next?
367
+
368
+ * **Explore** your dashboard and discover all the features
369
+ * **Connect** with other community members
370
+ * **Get support** whenever you need it - we're here to help
371
+
372
+ ---
373
+
374
+ *Need assistance? Simply reply to this email and we'll get back to you within 24 hours.*
375
+
376
+ Best regards,
377
+ The Team`},{id:`newsletter`,name:`Newsletter`,subject:`Weekly Insights & Updates`,description:`Regular newsletter template with updates and insights`,category:`communication`,body:`# This Week's Highlights
378
+
379
+ ## Featured Story
380
+
381
+ **[Article Title]**
382
+ Brief description of the main story or update that you want to highlight this week.
383
+
384
+ [Read More](https://example.com)
385
+
386
+ ## Quick Updates
387
+
388
+ * **Update 1**: Brief description of an important update
389
+ * **Update 2**: Another noteworthy development
390
+ * **Update 3**: Additional news worth sharing
391
+
392
+ ## Upcoming Events
393
+
394
+ **[Event Name]** - *Date*
395
+ Short description of the upcoming event.
396
+
397
+ ---
398
+
399
+ *Thanks for reading! Forward this to a friend who might enjoy it.*
400
+
401
+ Until next week,
402
+ The Team`},{id:`product-launch`,name:`Product Launch`,subject:`Introducing Our Latest Innovation 🚀`,description:`Announce new products or features`,category:`marketing`,body:`# Something Amazing is Here
403
+
404
+ We've been working hard behind the scenes, and today we're excited to introduce our latest creation.
405
+
406
+ ## Key Features
407
+
408
+ * **Feature 1**: Benefit that matters to your users
409
+ * **Feature 2**: Another compelling capability
410
+ * **Feature 3**: The feature that sets you apart
411
+
412
+ ## Early Access
413
+
414
+ As a valued member, you get **exclusive early access** starting today.
415
+
416
+ [Get Started Now](https://example.com)
417
+
418
+ ---
419
+
420
+ *Questions? We'd love to hear from you. Just hit reply!*
421
+
422
+ Best,
423
+ The Product Team`},{id:`event-invitation`,name:`Event Invitation`,subject:`You're Invited: [Event Name]`,description:`Professional event invitation template`,category:`events`,body:`# You're Invited!
424
+
425
+ ## [Event Name]
426
+
427
+ **When**: [Date & Time]
428
+ **Where**: [Location or Virtual Link]
429
+ **Duration**: [Duration]
430
+
431
+ Join us for an exclusive gathering where we'll explore [brief event description].
432
+
433
+ ## What to Expect
434
+
435
+ * **Networking** with industry professionals
436
+ * **Insights** from leading experts
437
+ * **Interactive** sessions and discussions
438
+
439
+ ## RSVP Required
440
+
441
+ Space is limited, so please confirm your attendance by [RSVP Date].
442
+
443
+ [Confirm Attendance](https://example.com)
444
+
445
+ ---
446
+
447
+ *Can't make it? Let us know and we'll share the key highlights with you.*
448
+
449
+ Looking forward to seeing you there,
450
+ The Events Team`},{id:`thank-you`,name:`Thank You`,subject:`Thank You - It Means Everything`,description:`Express gratitude to customers or supporters`,category:`appreciation`,body:`# Thank You
451
+
452
+ Your support means the world to us.
453
+
454
+ Whether you've been with us from the beginning or just joined our community, we want you to know how much we appreciate you.
455
+
456
+ ## Because of You
457
+
458
+ * We've been able to improve our service
459
+ * Our community has grown stronger
460
+ * We've achieved milestones we never thought possible
461
+
462
+ ## What's Next
463
+
464
+ We're committed to continuing to earn your trust and providing even more value in the coming months.
465
+
466
+ ---
467
+
468
+ *Your feedback shapes everything we do. Reply anytime with thoughts or suggestions.*
469
+
470
+ With genuine gratitude,
471
+ The Team`},{id:`feedback-request`,name:`Feedback Request`,subject:`Your Opinion Matters - 2 Minutes?`,description:`Request feedback or reviews from users`,category:`feedback`,body:`# We'd Love Your Feedback
472
+
473
+ Your experience matters to us, and we're always looking for ways to improve.
474
+
475
+ ## Quick Favor?
476
+
477
+ Could you spare **2 minutes** to share your thoughts? Your honest feedback helps us serve you better.
478
+
479
+ [Share Your Feedback](https://example.com)
480
+
481
+ ## What We're Asking
482
+
483
+ * How has your experience been so far?
484
+ * What's working well for you?
485
+ * What could we improve?
486
+
487
+ ## Thank You Gift
488
+
489
+ As a small token of appreciation, everyone who completes our feedback form receives [incentive].
490
+
491
+ ---
492
+
493
+ *Every response is read personally by our team. We take your input seriously.*
494
+
495
+ Thanks in advance,
496
+ The Team`},{id:`password-reset`,name:`Password Reset`,subject:`Reset Your Password - Action Required`,description:`Secure password reset instructions`,category:`security`,body:`# Password Reset Request
497
+
498
+ We received a request to reset the password for your account.
499
+
500
+ ## Reset Your Password
501
+
502
+ Click the button below to create a new password. This link will expire in **24 hours** for your security.
503
+
504
+ [Reset Password](https://example.com/reset)
505
+
506
+ ## Didn't Request This?
507
+
508
+ If you didn't request a password reset, please ignore this email. Your account remains secure.
509
+
510
+ ## Need Help?
511
+
512
+ If you're having trouble with the reset process, contact our support team and we'll assist you right away.
513
+
514
+ ---
515
+
516
+ *For security reasons, this link can only be used once and expires in 24 hours.*
517
+
518
+ Best regards,
519
+ Security Team`},{id:`order-confirmation`,name:`Order Confirmation`,subject:`Order Confirmed - #[ORDER-NUMBER]`,description:`Professional order confirmation template`,category:`commerce`,body:`# Order Confirmation
520
+
521
+ Thanks for your order! We've received your payment and are preparing your items for shipment.
522
+
523
+ ## Order Details
524
+
525
+ **Order Number**: #[ORDER-NUMBER]
526
+ **Order Date**: [DATE]
527
+ **Total**: $[AMOUNT]
528
+
529
+ ## Items Ordered
530
+
531
+ * **[Item 1]** - Quantity: [QTY] - $[PRICE]
532
+ * **[Item 2]** - Quantity: [QTY] - $[PRICE]
533
+
534
+ ## Shipping Information
535
+
536
+ **Address**: [SHIPPING ADDRESS]
537
+ **Method**: [SHIPPING METHOD]
538
+ **Estimated Delivery**: [DELIVERY DATE]
539
+
540
+ ## Next Steps
541
+
542
+ You'll receive a tracking number via email once your order ships (usually within 1-2 business days).
543
+
544
+ [Track Your Order](https://example.com/track)
545
+
546
+ ---
547
+
548
+ *Questions about your order? Reply to this email or contact our support team.*
549
+
550
+ Thank you for your business,
551
+ The Fulfillment Team`}]}addEventListeners(){(0,o.fromEvent)(this,`keydown`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleKeyDown),(0,o.fromEvent)(document,`paste`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handlePaste),(0,o.fromEvent)(document,`dragenter`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleDragEnter),(0,o.fromEvent)(document,`dragleave`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleDocumentDragLeave),(0,o.fromEvent)(document,`drop`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleDocumentDrop)}insertAtCursor(e,t){if(!this.bodyTextAreaRef.value)return;let n=this.bodyTextAreaRef.value.shadowRoot?.querySelector(`textarea`);if(!n)return;let r=n.selectionStart,i=n.selectionEnd,a=n.value.substring(0,r)+e+n.value.substring(i);this.body=a,this.dispatchChange(),this.updateComplete.then(()=>{let n=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);if(n)if(n.focus(),t){let i=r+e.indexOf(t),a=i+t.length;n.setSelectionRange(i,a)}else n.setSelectionRange(r+e.length,r+e.length)})}wrapSelection(e,t,n){if(!this.bodyTextAreaRef.value)return;let r=this.bodyTextAreaRef.value.shadowRoot?.querySelector(`textarea`);if(!r)return;let i=r.selectionStart,a=r.selectionEnd,o=r.value.substring(i,a),s=e+(o||n)+t,c=r.value.substring(0,i)+s+r.value.substring(a);this.body=c,this.dispatchChange(),this.updateComplete.then(()=>{let t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector(`textarea`);t&&(t.focus(),o?t.setSelectionRange(i+s.length,i+s.length):t.setSelectionRange(i+e.length,i+e.length+n.length))})}render(){return c.html`
552
+ <schmancy-surface
553
+ type="solid"
554
+ rounded="all"
555
+ class=${this.classMap({"border-2 border-dashed border-primary":this.dragOver,"h-full flex flex-col":!0})}
556
+ @drop=${this.handleDrop}
557
+ @dragover=${this.handleDragOver}
558
+ @dragleave=${this.handleDragLeave}
559
+ >
560
+ <div class="flex flex-col h-full gap-4">
561
+
562
+ <!-- Header Section with Subject -->
563
+ <div class="shrink-0 p-4 pb-0 space-y-4">
564
+ <!-- Subject Field -->
565
+ <div class="space-y-2">
566
+ <schmancy-typography type="label" token="md">
567
+ Subject *
568
+ </schmancy-typography>
569
+ <schmancy-input
570
+ ${(0,l.ref)(this.subjectInputRef)}
571
+ .value=${this.subject}
572
+ @input=${this.handleSubjectChange}
573
+ placeholder="Enter email subject..."
574
+ .disabled=${this.disabled}
575
+ class="w-full"
576
+ ></schmancy-input>
577
+ </div>
578
+ </div>
579
+
580
+ <!-- Formatting Toolbar -->
581
+ <div class="shrink-0 px-4">
582
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
583
+ <div class="flex flex-wrap gap-2 items-center">
584
+ <!-- Text Formatting Group -->
585
+ <div class="flex gap-1">
586
+ <schmancy-icon-button
587
+ size="sm"
588
+ variant="text"
589
+ title="Bold"
590
+ ?disabled=${this.disabled}
591
+ @click=${()=>this.wrapSelection(`**`,`**`,`bold text`)}
592
+ >
593
+ <schmancy-icon>format_bold</schmancy-icon>
594
+ </schmancy-icon-button>
595
+ <schmancy-icon-button
596
+ size="sm"
597
+ variant="text"
598
+ title="Italic"
599
+ ?disabled=${this.disabled}
600
+ @click=${()=>this.wrapSelection(`*`,`*`,`italic text`)}
601
+ >
602
+ <schmancy-icon>format_italic</schmancy-icon>
603
+ </schmancy-icon-button>
604
+ <schmancy-icon-button
605
+ size="sm"
606
+ variant="text"
607
+ title="Link"
608
+ ?disabled=${this.disabled}
609
+ @click=${()=>this.insertAtCursor(`[link text](https://example.com)`,`link text`)}
610
+ >
611
+ <schmancy-icon>link</schmancy-icon>
612
+ </schmancy-icon-button>
613
+ </div>
614
+
615
+ <!-- Divider -->
616
+ <div class="h-6 w-px bg-outline-variant"></div>
617
+
618
+ <!-- Structure Formatting Group -->
619
+ <div class="flex gap-1">
620
+ <schmancy-icon-button
621
+ size="sm"
622
+ variant="text"
623
+ title="Heading"
624
+ ?disabled=${this.disabled}
625
+ @click=${()=>this.insertAtCursor(`
626
+ # Heading
627
+ `,`Heading`)}
628
+ >
629
+ <schmancy-icon>title</schmancy-icon>
630
+ </schmancy-icon-button>
631
+ <schmancy-icon-button
632
+ size="sm"
633
+ variant="text"
634
+ title="Bullet List"
635
+ ?disabled=${this.disabled}
636
+ @click=${()=>this.insertAtCursor(`
637
+ * List item
638
+ `,`List item`)}
639
+ >
640
+ <schmancy-icon>format_list_bulleted</schmancy-icon>
641
+ </schmancy-icon-button>
642
+ </div>
643
+
644
+ <!-- Divider -->
645
+ <div class="h-6 w-px bg-outline-variant"></div>
646
+
647
+ <!-- Media and Layout Group -->
648
+ <div class="flex gap-1">
649
+ <schmancy-icon-button
650
+ size="sm"
651
+ variant="text"
652
+ title="Insert Image"
653
+ ?disabled=${this.disabled||this.isUploading}
654
+ @click=${()=>this.imageInputRef.value?.click()}
655
+ >
656
+ ${(0,d.when)(this.isUploading,()=>c.html`<schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>`,()=>c.html`<schmancy-icon>image</schmancy-icon>`)}
657
+ </schmancy-icon-button>
658
+ <schmancy-icon-button
659
+ size="sm"
660
+ variant="text"
661
+ title="Insert Layout"
662
+ ?disabled=${this.disabled}
663
+ @click=${this.openLayoutDialog}
664
+ >
665
+ <schmancy-icon>mobile_layout</schmancy-icon>
666
+ </schmancy-icon-button>
667
+ <schmancy-icon-button
668
+ size="sm"
669
+ variant="text"
670
+ title="Use Template"
671
+ ?disabled=${this.disabled||this.templates.length===0}
672
+ @click=${this.openTemplatePicker}
673
+ >
674
+ <schmancy-icon>description</schmancy-icon>
675
+ </schmancy-icon-button>
676
+ </div>
677
+ </div>
678
+ </schmancy-surface>
679
+ </div>
680
+
681
+ <!-- Textarea Container - Takes remaining space -->
682
+ <div class="flex-1 px-4 relative min-h-0">
683
+ <schmancy-textarea
684
+ ${(0,l.ref)(this.bodyTextAreaRef)}
685
+ .value=${this.body}
686
+ @change=${this.handleBodyChange}
687
+ placeholder="Enter your email message here...
688
+
689
+ Use the toolbar buttons above for formatting, or type markdown directly:
690
+ **bold**, *italic*, [link](url), ![image](url)
691
+
692
+ Drag & drop images or press Ctrl+V to paste from clipboard.
693
+ Tab key inserts 2 spaces for better formatting."
694
+ .disabled=${this.disabled}
695
+ .required=${!0}
696
+ .rows=${4}
697
+ class="w-full font-mono text-sm"
698
+ ></schmancy-textarea>
699
+
700
+ <!-- Upload Progress Overlay -->
701
+ ${(0,d.when)(this.isUploading,()=>c.html`
702
+ <div class="absolute top-3 right-3 z-10">
703
+ <schmancy-surface type="subtle" rounded="all" class="p-2">
704
+ <div class="flex items-center gap-2">
705
+ <schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>
706
+ <schmancy-typography type="body" token="xs">Uploading...</schmancy-typography>
707
+ </div>
708
+ </schmancy-surface>
709
+ </div>
710
+ `)}
711
+ </div>
712
+
713
+ <!-- Footer Section -->
714
+ <div class="shrink-0 p-4 pt-0 space-y-2">
715
+ <!-- Character/Word Counter -->
716
+ <div class="text-center">
717
+ <schmancy-typography type="body" token="xs">
718
+ ${this.body.length} characters • ${this.body.trim()?this.body.trim().split(/\s+/).length:0} words
719
+ </schmancy-typography>
720
+ </div>
721
+
722
+ <!-- Attachments Display (if any) -->
723
+ ${(0,d.when)(this.attachments.length>0,()=>c.html`
724
+ <div class="space-y-2">
725
+ <schmancy-typography type="label" token="sm" class="flex items-center gap-2">
726
+ <schmancy-icon size="16px">attach_file</schmancy-icon>
727
+ Attachments (${this.attachments.length})
728
+ </schmancy-typography>
729
+ <div class="flex flex-wrap gap-2">
730
+ ${(0,u.repeat)(this.attachments,e=>e.id,e=>c.html`
731
+ <schmancy-chip class="text-xs">
732
+ <span class="truncate max-w-32">${e.name}</span>
733
+ <button
734
+ @click=${()=>this.removeAttachment(e.id)}
735
+ class="ml-2 text-error hover:text-error-container"
736
+ title="Remove attachment"
737
+ >
738
+ <schmancy-icon size="14px">close</schmancy-icon>
739
+ </button>
740
+ </schmancy-chip>
741
+ `)}
742
+ </div>
743
+ </div>
744
+ `)}
745
+ </div>
746
+
747
+ <!-- Hidden File Inputs -->
748
+ <div class="hidden">
749
+ <input
750
+ ${(0,l.ref)(this.fileInputRef)}
751
+ type="file"
752
+ multiple
753
+ @change=${this.handleFileChange}
754
+ >
755
+ <input
756
+ ${(0,l.ref)(this.imageInputRef)}
757
+ type="file"
758
+ accept="image/*"
759
+ @change=${this.handleImageSelect}
760
+ >
761
+ </div>
762
+
763
+ </div>
764
+ </schmancy-surface>
765
+
766
+ `}};t.t([(0,s.property)({type:String})],h.prototype,`subject`,void 0),t.t([(0,s.property)({type:String})],h.prototype,`body`,void 0),t.t([(0,s.property)({type:Boolean})],h.prototype,`disabled`,void 0),t.t([(0,s.property)({type:Array})],h.prototype,`attachments`,void 0),t.t([(0,s.property)({type:Object})],h.prototype,`config`,void 0),t.t([(0,s.property)({type:Array})],h.prototype,`templates`,void 0),t.t([(0,s.state)()],h.prototype,`dragOver`,void 0),t.t([(0,s.state)()],h.prototype,`isUploading`,void 0),h=t.t([(0,s.customElement)(`schmancy-email-editor`)],h);var g=class extends n.t(c.css`
767
+ :host {
768
+ display: block;
769
+ }
770
+ `){constructor(...e){super(...e),this.subject=``,this.body=``,this.attachments=[],this.recipients=[],this.fromAddress=`sender@example.com`,this.toAddress=`recipient@example.com`,this.viewMode=`html`}parseLayoutBlocks(e){return e.replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g,(e,t,n)=>{switch(t){case`columns-2`:return this.parseColumnsLayout(n,2);case`columns-3`:return this.parseColumnsLayout(n,3);case`sidebar-left`:return this.parseSidebarLayout(n,`left`);case`sidebar-right`:return this.parseSidebarLayout(n,`right`);case`image-row`:return this.parseImageRowLayout(n);default:return n}})}parseColumnsLayout(e,t){let n=/<div class="column">([\s\S]*?)<\/div>/g,r=[],i;for(;(i=n.exec(e))!==null;)r.push(i[1].trim());if(r.length===0)return e;let a=Math.floor(100/t),o=`0 10px 0 0`,s=`<tr>`;for(let e=0;e<t&&e<r.length;e++)s+=`\n\t\t\t\t<td width="${a}%" style="padding: ${e===t-1?`0`:o}; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t\t${this.parseBasicMarkdown(r[e])}\n\t\t\t\t</td>`;for(let e=r.length;e<t;e++)s+=`\n\t\t\t\t<td width="${a}%" style="padding: ${e===t-1?`0`:o}; vertical-align: top;">\n\t\t\t\t\t&nbsp;\n\t\t\t\t</td>`;return s+=`</tr>`,`\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${s}\n\t\t\t</table>`}parseSidebarLayout(e,t){let n=e.match(/<div class="sidebar">([\s\S]*?)<\/div>/),r=e.match(/<div class="main">([\s\S]*?)<\/div>/);if(!n||!r)return e;let i=`\n\t\t\t<td width="30%" style="padding: 0 16px 0 0; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t${this.parseBasicMarkdown(n[1].trim())}\n\t\t\t</td>`,a=`\n\t\t\t<td width="70%" style="padding: 0; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t${this.parseBasicMarkdown(r[1].trim())}\n\t\t\t</td>`;return`\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${t===`left`?`<tr>${i}${a}</tr>`:`<tr>${a}${i.replace(`0 16px 0 0`,`0 0 0 16px`)}</tr>`}\n\t\t\t</table>`}parseImageRowLayout(e){let t=/<div class="image">([\s\S]*?)<\/div>/g,n=[],r;for(;(r=t.exec(e))!==null;){let e=r[1].trim().match(/!\[([^\]]*)\]\(([^)]+)\)/);if(e){let[,t,r]=e;n.push(`<img src="${r}" alt="${t||`Image`}" style="display: block; max-width: 100%; height: auto;" border="0">`)}}if(n.length===0)return e;let i=Math.floor(100/n.length),a=`<tr>`;return n.forEach((e,t)=>{let r=t===n.length-1?`0`:`0 8px 0 0`;a+=`\n\t\t\t\t<td width="${i}%" style="padding: ${r}; vertical-align: top; text-align: center;">\n\t\t\t\t\t${e}\n\t\t\t\t</td>`}),a+=`</tr>`,`\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${a}\n\t\t\t</table>`}parseImageAttributes(e){let t={};if(!e)return t;let n=e.match(/width=([^\s}]+)/);n&&(t.width=n[1]);let r=e.match(/height=([^\s}]+)/);return r&&(t.height=r[1]),e.includes(`cover`)&&(t.cover=!0),e.includes(`contain`)&&(t.contain=!0),t}generateImageStyles(e,t=!1){let n,r,i=`display: block; margin: 8px 0; border: 0;`;return e.width?e.width===`auto`?i+=t?` max-width: 100%; height: auto;`:` height: auto;`:e.width.endsWith(`%`)?(i+=` width: ${e.width}; max-width: 100%;`,e.height||(i+=` height: auto;`)):e.width.endsWith(`px`)&&(n=e.width.replace(`px`,``),i+=` max-width: 100%;`,e.height||(i+=` height: auto;`)):i+=t?` width: 100%; max-width: 100%; height: auto;`:` max-width: 100%; height: auto;`,e.height&&(e.height===`auto`?i+=` height: auto;`:e.height.endsWith(`px`)&&(r=e.height.replace(`px`,``),e.width||(i+=` max-width: 100%;`))),(e.cover||e.contain)&&(e.width||e.height||(i+=` width: 100%;`)),{imgStyle:i,imgWidth:n,imgHeight:r}}parseBasicMarkdown(e){return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(e,t,n,r)=>{let i=this.parseImageAttributes(r),{imgStyle:a,imgWidth:o,imgHeight:s}=this.generateImageStyles(i,!0),c=`<img src="${n}" alt="${t||`Image`}" style="${a}" border="0"`;return o&&(c+=` width="${o}"`),s&&(c+=` height="${s}"`),c+=`>`,c}).replace(/\n\n/g,`</p><p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">`).replace(/\n/g,`<br>`).replace(/\*\*(.*?)\*\*/g,`<strong style="font-weight: bold;">$1</strong>`).replace(/\*(.*?)\*/g,`<em style="font-style: italic;">$1</em>`).replace(/\[([^\]]+)\]\(([^)]+)\)/g,`<a href="$2" style="color: #0066cc; text-decoration: underline;">$1</a>`).replace(/^# (.*$)/gim,`<h2 style="margin: 16px 0 8px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-weight: bold; color: #1a1a1a;">$1</h2>`).replace(/^\* (.*$)/gim,`<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>`).replace(/^\d+\. (.*$)/gim,`<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>`).replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs,e=>{let t=/^\d+\./.test(e.replace(/<[^>]*>/g,``))?`ol`:`ul`;return`<${t} style="margin: 8px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${e}</${t}>`}).replace(/^(?!<[h\d]|<p|<ul|<ol|<li|<img)(.+)$/gim,`<p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">$1</p>`)}parseExtendedMarkdown(e){let t=e;return t=this.parseLayoutBlocks(t),t=t.replace(/:::images\s+(row|grid(?:=\d+)?)\n((?:!\[.*?\]\(.*?\)(?:\{.*?\})?\s*\n?)*?):::/g,`[Multiple Images - View in web browser]`),t=t.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(e,t,n,r)=>{let i=this.parseImageAttributes(r),{imgStyle:a,imgWidth:o,imgHeight:s}=this.generateImageStyles(i,!1),c=`<img src="${n}" alt="${t||`Image`}" style="${a}" border="0"`;return o&&(c+=` width="${o}"`),s&&(c+=` height="${s}"`),c+=`>`,`<table cellpadding="0" cellspacing="0" border="0" style="margin: 16px 0;"><tr><td>${c}</td></tr></table>`}),t=t.replace(/\n\n/g,`</p><p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">`).replace(/\n/g,`<br>`).replace(/\*\*(.*?)\*\*/g,`<strong style="font-weight: bold;">$1</strong>`).replace(/\*(.*?)\*/g,`<em style="font-style: italic;">$1</em>`).replace(/\[([^\]]+)\]\(([^)]+)\)/g,`<a href="$2" style="color: #0066cc; text-decoration: underline;">$1</a>`).replace(/^# (.*$)/gim,`<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 24px 0 16px 0;"><tr><td><h1 style="margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold; color: #1a1a1a;">$1</h1></td></tr></table>`).replace(/^\* (.*$)/gim,`<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>`).replace(/^\d+\. (.*$)/gim,`<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>`).replace(/^---$/gim,`<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 24px 0;"><tr><td style="border-top: 1px solid #e0e0e0; height: 1px; line-height: 1px;">&nbsp;</td></tr></table>`),t=t.replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs,e=>{let t=/^\d+\./.test(e.replace(/<[^>]*>/g,``))?`ol`:`ul`;return`<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><${t} style="margin: 16px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${e}</${t}></td></tr></table>`}),t.includes(`<table>`)||t.includes(`<h1>`)||(t=`<p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">${t}</p>`),t=`<table cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width: 600px; margin: 0 auto;">\n\t\t\t<tr>\n\t\t\t\t<td style="padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t\t${t}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>`,t}convertToPlainText(e){return e.trim().replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g,(e,t,n)=>n.replace(/<div class="(?:column|sidebar|main|image)">/g,`
771
+ `).replace(/<\/div>/g,`
772
+ `).replace(/\n{3,}/g,`
773
+
774
+ `).trim()).replace(/:::images\s+(row|grid(?:=\d+)?)\n((?:!\[.*?\]\(.*?\)(?:\{.*?\})?\s*\n?)*?):::/g,`[Images]`).replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,`[Image: $1]`).replace(/\*\*(.*?)\*\*/g,`$1`).replace(/\*(.*?)\*/g,`$1`).replace(/__(.*?)__/g,`$1`).replace(/~~(.*?)~~/g,`$1`).replace(/`(.*?)`/g,`$1`).replace(/^#{1,3} (.*$)/gim,`$1`).replace(/^> (.*$)/gim,`$1`).replace(/^\* (.*$)/gim,`• $1`).replace(/^\d+\. (.*$)/gim,`$1`).replace(/\[([^\]]+)\]\(([^)]+)\)/g,`$1 ($2)`).replace(/^---$/gim,`---`).replace(/\n\n+/g,`
775
+
776
+ `)}formatFileSize(e){if(e===0)return`0 Bytes`;let t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/1024**t).toFixed(2))+` `+[`Bytes`,`KB`,`MB`,`GB`][t]}render(){let e=this.parseExtendedMarkdown(this.body),t=this.convertToPlainText(this.body),n=this.recipients[0]||this.toAddress;return c.html`
777
+ <schmancy-surface type="solid" rounded="all" class="h-full flex flex-col">
778
+
779
+ <!-- Header Section -->
780
+ <div class="shrink-0 p-4 border-b border-outline-variant">
781
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
782
+ <schmancy-typography type="title" token="md" class="flex items-center gap-2">
783
+ <schmancy-icon size="20px">preview</schmancy-icon>
784
+ Email Preview
785
+ </schmancy-typography>
786
+
787
+ <!-- View Mode Toggle -->
788
+ <div class="flex gap-1 bg-surface-container rounded-full p-1">
789
+ <schmancy-chip
790
+ ?selected=${this.viewMode===`html`}
791
+ @click=${()=>{this.viewMode=`html`}}
792
+ class="text-xs h-8"
793
+ data-variant=${this.viewMode===`html`?`filled`:`outlined`}
794
+ >
795
+ <schmancy-icon slot="prefix" size="14px">code</schmancy-icon>
796
+ HTML
797
+ </schmancy-chip>
798
+ <schmancy-chip
799
+ ?selected=${this.viewMode===`plaintext`}
800
+ @click=${()=>{this.viewMode=`plaintext`}}
801
+ class="text-xs h-8"
802
+ data-variant=${this.viewMode===`plaintext`?`filled`:`outlined`}
803
+ >
804
+ <schmancy-icon slot="prefix" size="14px">text_fields</schmancy-icon>
805
+ Text
806
+ </schmancy-chip>
807
+ </div>
808
+ </div>
809
+ </div>
810
+
811
+ <!-- Preview Content Container -->
812
+ <div class="flex-1 flex flex-col min-h-0 p-4 gap-4">
813
+
814
+ <!-- Email Mock Container -->
815
+ <div class="flex-1 flex flex-col min-h-0">
816
+ <schmancy-surface
817
+ type="subtle"
818
+ rounded="all"
819
+ class="flex-1 flex flex-col overflow-hidden shadow-sm"
820
+ >
821
+ <!-- Email Header -->
822
+ <div class="shrink-0 p-4 bg-surface-containerLow border-b border-outline-variant">
823
+ <div class="space-y-3">
824
+ <!-- From Field -->
825
+ <div class="flex items-start gap-3">
826
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
827
+ <schmancy-icon size="16px">account_circle</schmancy-icon>
828
+ <schmancy-typography type="body" token="sm" class="font-medium">
829
+ From
830
+ </schmancy-typography>
831
+ </div>
832
+ <schmancy-typography type="body" token="sm" class="break-all flex-1">
833
+ ${this.fromAddress}
834
+ </schmancy-typography>
835
+ </div>
836
+
837
+ <!-- To Field -->
838
+ <div class="flex items-start gap-3">
839
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
840
+ <schmancy-icon size="16px">person</schmancy-icon>
841
+ <schmancy-typography type="body" token="sm" class="font-medium">
842
+ To
843
+ </schmancy-typography>
844
+ </div>
845
+ <schmancy-typography type="body" token="sm" class="break-all flex-1">
846
+ ${n}
847
+ </schmancy-typography>
848
+ </div>
849
+
850
+ <!-- Subject Field -->
851
+ <div class="flex items-start gap-3">
852
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
853
+ <schmancy-icon size="16px">subject</schmancy-icon>
854
+ <schmancy-typography type="body" token="sm" class="font-medium">
855
+ Subject
856
+ </schmancy-typography>
857
+ </div>
858
+ <schmancy-typography type="body" token="sm" class="font-medium flex-1">
859
+ ${this.subject||c.html`<span class="italic text-surface-onVariant">(No subject)</span>`}
860
+ </schmancy-typography>
861
+ </div>
862
+ </div>
863
+ </div>
864
+
865
+ <!-- Email Body Content -->
866
+ <div class="flex-1 overflow-y-auto min-h-0">
867
+ ${(0,d.when)(this.body,()=>c.html`
868
+ ${(0,d.when)(this.viewMode===`html`,()=>c.html`
869
+ <div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: system-ui, -apple-system, sans-serif; font-size: 14px;">
870
+ <div .innerHTML=${e}></div>
871
+ </div>
872
+ `,()=>c.html`
873
+ <div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: 'Courier New', monospace; font-size: 13px; white-space: pre-wrap;">
874
+ ${t}
875
+ </div>
876
+ `)}
877
+ `,()=>c.html`
878
+ <!-- Empty State -->
879
+ <div class="flex-1 flex items-center justify-center p-8">
880
+ <div class="text-center space-y-3">
881
+ <schmancy-icon size="48px" class="text-surface-onVariant opacity-50">mail_outline</schmancy-icon>
882
+ <schmancy-typography type="body" token="md">
883
+ No message content to preview
884
+ </schmancy-typography>
885
+ <schmancy-typography type="body" token="sm" class="text-surface-onVariant">
886
+ Start typing in the composer to see a preview
887
+ </schmancy-typography>
888
+ </div>
889
+ </div>
890
+ `)}
891
+ </div>
892
+
893
+ <!-- Attachments Section -->
894
+ ${(0,d.when)(this.attachments.length>0,()=>c.html`
895
+ <div class="shrink-0 p-4 border-t border-outline-variant bg-surface-containerLowest">
896
+ <div class="space-y-3">
897
+ <!-- Attachments Header -->
898
+ <div class="flex items-center gap-2">
899
+ <schmancy-icon size="18px">attach_file</schmancy-icon>
900
+ <schmancy-typography type="label" token="md" class="font-medium">
901
+ Attachments (${this.attachments.length})
902
+ </schmancy-typography>
903
+ </div>
904
+
905
+ <!-- Attachments List -->
906
+ <div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2">
907
+ ${(0,u.repeat)(this.attachments,e=>e.id,e=>c.html`
908
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
909
+ <div class="flex items-center gap-3">
910
+ <!-- File Icon -->
911
+ <schmancy-icon size="20px" class="text-surface-onVariant shrink-0">
912
+ ${e.type.startsWith(`image/`)?`image`:e.type.includes(`pdf`)?`picture_as_pdf`:e.type.includes(`text`)?`description`:`attach_file`}
913
+ </schmancy-icon>
914
+
915
+ <!-- File Info -->
916
+ <div class="flex-1 min-w-0">
917
+ <schmancy-typography type="body" token="sm" class="font-medium truncate">
918
+ ${e.name}
919
+ </schmancy-typography>
920
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
921
+ ${this.formatFileSize(e.size)} • ${e.type}
922
+ </schmancy-typography>
923
+ </div>
924
+ </div>
925
+ </schmancy-surface>
926
+ `)}
927
+ </div>
928
+ </div>
929
+ </div>
930
+ `)}
931
+ </schmancy-surface>
932
+ </div>
933
+
934
+ <!-- Preview Stats -->
935
+ ${(0,d.when)(this.body,()=>c.html`
936
+ <div class="shrink-0">
937
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
938
+ <div class="flex items-center justify-center gap-6 text-center">
939
+ <div>
940
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
941
+ Characters
942
+ </schmancy-typography>
943
+ <schmancy-typography type="body" token="sm" class="font-medium">
944
+ ${this.body.length}
945
+ </schmancy-typography>
946
+ </div>
947
+ <div class="w-px h-8 bg-outline-variant"></div>
948
+ <div>
949
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
950
+ Words
951
+ </schmancy-typography>
952
+ <schmancy-typography type="body" token="sm" class="font-medium">
953
+ ${this.body.trim()?this.body.trim().split(/\s+/).length:0}
954
+ </schmancy-typography>
955
+ </div>
956
+ ${(0,d.when)(this.attachments.length>0,()=>c.html`
957
+ <div class="w-px h-8 bg-outline-variant"></div>
958
+ <div>
959
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
960
+ Attachments
961
+ </schmancy-typography>
962
+ <schmancy-typography type="body" token="sm" class="font-medium">
963
+ ${this.attachments.length}
964
+ </schmancy-typography>
965
+ </div>
966
+ `)}
967
+ </div>
968
+ </schmancy-surface>
969
+ </div>
970
+ `)}
971
+
972
+ </div>
973
+ </schmancy-surface>
974
+ `}};t.t([(0,s.property)({type:String})],g.prototype,`subject`,void 0),t.t([(0,s.property)({type:String})],g.prototype,`body`,void 0),t.t([(0,s.property)({type:Array})],g.prototype,`attachments`,void 0),t.t([(0,s.property)({type:Array})],g.prototype,`recipients`,void 0),t.t([(0,s.property)({type:String})],g.prototype,`fromAddress`,void 0),t.t([(0,s.property)({type:String})],g.prototype,`toAddress`,void 0),t.t([(0,s.state)()],g.prototype,`viewMode`,void 0),g=t.t([(0,s.customElement)(`schmancy-email-viewer`)],g);var _=class extends n.t(c.css`
975
+ :host {
976
+ display: block;
977
+ height: 100%;
978
+ }
979
+ `){constructor(...e){super(...e),this.disabled=!1,this.recipients=[],this.selectedRecipients=[],this.enableCsvImport=!0,this.enableDragDrop=!0,this.title=`Recipients`,this.emptyStateTitle=`No recipients yet`,this.emptyStateMessage=`Import from sources or upload a CSV`,this.dragOver=!1,this.localSelectedRecipients=new Set,this.searchQuery=``,this.filteredRecipients=[],this.boatState=`collapsed`,this.fileInputRef=(0,l.createRef)(),this.handleEmailsImported=()=>{this.updateFilteredRecipients(),this.requestUpdate()},this.handleImportFromCSV=()=>{this.enableCsvImport&&this.fileInputRef.value?.click()},this.handleFileSelect=e=>{let t=e.target.files?.[0];t&&this.processCSVFile(t)},this.handleDrop=e=>{if(!this.enableDragDrop)return;e.preventDefault(),this.dragOver=!1;let t=e.dataTransfer?.files[0];t&&this.processCSVFile(t)},this.processCSVFile=e=>{if(!e.name.endsWith(`.csv`))return void a.r.error(`Please select a CSV file`);let t=new FileReader;t.onload=e=>{let t=e.target?.result;try{let e=this.parseCSV(t);if(e.length===0)return void a.r.error(`No valid email addresses found in CSV`);this.dispatchEvent(new CustomEvent(`emails-imported`,{detail:{emails:e,source:`csv`},bubbles:!0,composed:!0})),a.r.success(`Imported ${e.length} emails from CSV file`)}catch{a.r.error(`Failed to parse CSV file`)}},t.readAsText(e)},this.toggleRecipientSelection=e=>{this.localSelectedRecipients.has(e)?this.localSelectedRecipients.delete(e):this.localSelectedRecipients.add(e),this.localSelectedRecipients=new Set(this.localSelectedRecipients),this.dispatchSelectionChange()},this.selectAll=()=>{this.localSelectedRecipients=new Set(this.filteredRecipients),this.dispatchSelectionChange()},this.selectNone=()=>{this.localSelectedRecipients.clear(),this.localSelectedRecipients=new Set,this.dispatchSelectionChange()},this.removeRecipient=e=>{this.dispatchEvent(new CustomEvent(`recipient-removed`,{detail:{email:e},bubbles:!0,composed:!0}))},this.clearAll=()=>{this.dispatchEvent(new CustomEvent(`recipients-cleared`,{bubbles:!0,composed:!0}))},this.updateFilteredRecipients=()=>{let e=Array.isArray(this.recipients)?this.recipients:[];if(this.searchQuery.trim()){let t=this.searchQuery.toLowerCase();this.filteredRecipients=e.filter(e=>e.toLowerCase().includes(t))}else this.filteredRecipients=[...e]},this.handleSearchInput=e=>{let t=e.target;this.searchQuery=t.value},this.clearSearch=()=>{this.searchQuery=``},this.dispatchSelectionChange=()=>{this.dispatchEvent(new CustomEvent(`selection-changed`,{detail:{selectedEmails:Array.from(this.localSelectedRecipients)},bubbles:!0,composed:!0}))},this.handleBoatStateChange=e=>{this.boatState=e.detail}}connectedCallback(){super.connectedCallback(),this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),(0,o.fromEvent)(this,`emails-imported`).pipe((0,o.takeUntil)(this.disconnecting)).subscribe(this.handleEmailsImported)}updated(e){super.updated(e),e.has(`selectedRecipients`)&&(this.localSelectedRecipients=new Set(this.selectedRecipients)),(e.has(`recipients`)||e.has(`searchQuery`))&&this.updateFilteredRecipients(),e.has(`recipients`)&&this.requestUpdate()}parseCSV(e){let t=[],n;n=this.csvParser?this.csvParser.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,delimiter:``,transformHeader:e=>e.trim()}):this.simpleCSVParse(e);let r=n.data,i=n.meta.fields||[],a=i.find(e=>e.toLowerCase().includes(`email`));if(!a)for(let e of i){let t=r[0]?.[e]?.toString();if(t&&this.isValidEmail(t)){a=e;break}}if(!a)throw Error(`No email column found in CSV`);let o=new Set;for(let e of r){let n=e[a]?.toString();if(!n)continue;let r=n.toLowerCase().trim();this.isValidEmail(r)&&!o.has(r)&&(o.add(r),t.push(r))}return t}simpleCSVParse(e){let t=e.split(`
980
+ `).filter(e=>e.trim());if(t.length===0)return{data:[],meta:{}};let n=t[0].split(`,`).map(e=>e.trim().replace(/"/g,``)),r=[];for(let e=1;e<t.length;e++){let i=t[e].split(`,`).map(e=>e.trim().replace(/"/g,``)),a={};n.forEach((e,t)=>{a[e]=i[t]||``}),r.push(a)}return{data:r,meta:{fields:n}}}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())}addRecipients(e){if(!e.length)return;let t=[...new Set([...this.recipients,...e])],n=e.filter(e=>!this.recipients.includes(e));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...n])],this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.requestUpdate()}showBoat(){this.boatState=`collapsed`}hideBoat(){this.boatState=`collapsed`}expandBoat(){this.boatState=`expanded`}toggleBoat(){this.boatState=this.boatState===`collapsed`?`expanded`:`collapsed`}render(){return this.renderBoatLayout()}renderBoatLayout(){return c.html`
981
+ <!-- Hidden file input for CSV import -->
982
+ ${(0,d.when)(this.enableCsvImport,()=>c.html`
983
+ <input
984
+ type="file"
985
+ accept=".csv"
986
+ ${(0,l.ref)(this.fileInputRef)}
987
+ @change=${this.handleFileSelect}
988
+ class="hidden"
989
+ />
990
+ `)}
991
+
992
+ <schmancy-boat
993
+ .state=${this.boatState}
994
+ @change=${this.handleBoatStateChange}
995
+ >
996
+ <!-- Boat Header -->
997
+ <div slot="header" class="flex items-center justify-between w-full px-4 py-2">
998
+ <div class="flex items-center gap-3">
999
+ <schmancy-icon size="20px">group</schmancy-icon>
1000
+ <schmancy-typography type="title" token="md" class="font-semibold">
1001
+ ${this.title}
1002
+ </schmancy-typography>
1003
+ ${(0,d.when)(this.recipients.length>0,()=>c.html`
1004
+ <schmancy-badge>
1005
+ ${this.localSelectedRecipients.size}/${this.recipients.length}
1006
+ </schmancy-badge>
1007
+ `)}
1008
+ </div>
1009
+ </div>
1010
+
1011
+ <!-- Boat Content -->
1012
+ <div class="h-full flex flex-col max-h-[70vh]">
1013
+ ${this.renderBoatContent()}
1014
+ </div>
1015
+ </schmancy-boat>
1016
+ `}renderBoatContent(){return c.html`
1017
+ <!-- Search Bar and CSV Import on one line -->
1018
+ <div class="p-4 flex gap-3">
1019
+ <schmancy-input
1020
+ type="text"
1021
+ placeholder="Search recipients"
1022
+ .value=${this.searchQuery}
1023
+ @input=${this.handleSearchInput}
1024
+ class="flex-1"
1025
+ >
1026
+ ${(0,d.when)(this.searchQuery,()=>c.html`
1027
+ <schmancy-button
1028
+ slot="suffix"
1029
+ variant="text"
1030
+ @click=${this.clearSearch}
1031
+ >
1032
+ <schmancy-icon size="16px">close</schmancy-icon>
1033
+ </schmancy-button>
1034
+ `)}
1035
+ </schmancy-input>
1036
+
1037
+ ${(0,d.when)(this.enableCsvImport,()=>c.html`
1038
+ <schmancy-button
1039
+ variant="outlined"
1040
+ @click=${this.handleImportFromCSV}
1041
+ ?disabled=${this.disabled}
1042
+ >
1043
+ <schmancy-icon slot="prefix" size="16px">upload_file</schmancy-icon>
1044
+ Import
1045
+ </schmancy-button>
1046
+ `)}
1047
+ </div>
1048
+
1049
+ ${(0,d.when)(this.recipients.length>0,()=>c.html`
1050
+ <!-- Bulk Actions -->
1051
+ <div class="px-4 pb-4">
1052
+ <div class="flex items-center gap-3">
1053
+ <schmancy-button
1054
+ variant="outlined"
1055
+ @click=${this.selectAll}
1056
+ ?disabled=${this.localSelectedRecipients.size===this.filteredRecipients.length}
1057
+ >
1058
+ <schmancy-icon slot="prefix" size="14px">select_all</schmancy-icon>
1059
+ Select All
1060
+ </schmancy-button>
1061
+
1062
+ <schmancy-button
1063
+ variant="outlined"
1064
+ @click=${this.selectNone}
1065
+ ?disabled=${this.localSelectedRecipients.size===0}
1066
+ >
1067
+ <schmancy-icon slot="prefix" size="14px">deselect</schmancy-icon>
1068
+ Clear Selection
1069
+ </schmancy-button>
1070
+
1071
+ <div class="flex-1"></div>
1072
+
1073
+ <schmancy-button variant="text" @click=${this.clearAll}>
1074
+ <schmancy-icon slot="prefix" size="14px">delete_forever</schmancy-icon>
1075
+ Clear All
1076
+ </schmancy-button>
1077
+ </div>
1078
+ </div>
1079
+
1080
+ <!-- Recipients List -->
1081
+ <div class="flex-1 overflow-y-auto px-4 pb-4">
1082
+ ${(0,d.when)(this.filteredRecipients.length>0,()=>c.html`
1083
+ <div class="flex flex-wrap gap-3">
1084
+ ${(0,u.repeat)(this.filteredRecipients,e=>e,e=>c.html`
1085
+ <schmancy-button
1086
+ variant=${this.localSelectedRecipients.has(e)?`filled`:`outlined`}
1087
+ @click=${t=>{t.stopPropagation(),t.preventDefault(),this.toggleRecipientSelection(e)}}
1088
+ class="cursor-pointer flex items-center gap-2"
1089
+ >
1090
+ <span class="truncate flex-1 text-left">${e}</span>
1091
+ <schmancy-icon
1092
+ @click=${t=>{t.stopPropagation(),this.removeRecipient(e)}}
1093
+ size="16px"
1094
+ class="ml-2"
1095
+ >close</schmancy-icon>
1096
+ </schmancy-button>
1097
+ `)}
1098
+ </div>
1099
+ `,()=>c.html`
1100
+ <div class="text-center py-8">
1101
+ <schmancy-icon size="32px" class="opacity-50 mb-2">search_off</schmancy-icon>
1102
+ <schmancy-typography type="body" token="sm" class="mb-2">
1103
+ No recipients match "${this.searchQuery}"
1104
+ </schmancy-typography>
1105
+ <schmancy-button variant="outlined" @click=${this.clearSearch}>
1106
+ Clear Search
1107
+ </schmancy-button>
1108
+ </div>
1109
+ `)}
1110
+ </div>
1111
+ `,()=>c.html`
1112
+ <!-- Empty State -->
1113
+ <div class="flex-1 flex items-center justify-center p-8">
1114
+ <div class="text-center space-y-4">
1115
+ <schmancy-icon size="48px" class="opacity-30">mail_outline</schmancy-icon>
1116
+ <schmancy-typography type="title" token="md" class="mb-2">
1117
+ ${this.emptyStateTitle}
1118
+ </schmancy-typography>
1119
+ <schmancy-typography type="body" token="sm">
1120
+ ${this.emptyStateMessage}
1121
+ </schmancy-typography>
1122
+ </div>
1123
+ </div>
1124
+ `)}
1125
+
1126
+ <!-- Drag Overlay -->
1127
+ ${(0,d.when)(this.dragOver&&this.enableDragDrop,()=>c.html`
1128
+ <div
1129
+ class="absolute inset-4 flex items-center justify-center border-2 border-dashed border-primary rounded-lg z-10"
1130
+ @dragover=${e=>{e.preventDefault(),this.dragOver=!0}}
1131
+ @dragleave=${()=>this.dragOver=!1}
1132
+ @drop=${this.handleDrop}
1133
+ >
1134
+ <schmancy-surface type="solid" rounded="all" class="p-6 text-center">
1135
+ <schmancy-icon size="48px" class="mb-2">upload</schmancy-icon>
1136
+ <schmancy-typography type="body" token="md">
1137
+ Drop CSV file here
1138
+ </schmancy-typography>
1139
+ </schmancy-surface>
1140
+ </div>
1141
+ `)}
1142
+ `}};t.t([(0,s.property)({type:Boolean})],_.prototype,`disabled`,void 0),t.t([(0,s.property)({type:Array})],_.prototype,`recipients`,void 0),t.t([(0,s.property)({type:Array})],_.prototype,`selectedRecipients`,void 0),t.t([(0,s.property)({type:Boolean})],_.prototype,`enableCsvImport`,void 0),t.t([(0,s.property)({type:Boolean})],_.prototype,`enableDragDrop`,void 0),t.t([(0,s.property)({type:String})],_.prototype,`title`,void 0),t.t([(0,s.property)({type:String})],_.prototype,`emptyStateTitle`,void 0),t.t([(0,s.property)({type:String})],_.prototype,`emptyStateMessage`,void 0),t.t([(0,s.property)({type:Object})],_.prototype,`csvParser`,void 0),t.t([(0,s.state)()],_.prototype,`dragOver`,void 0),t.t([(0,s.state)()],_.prototype,`localSelectedRecipients`,void 0),t.t([(0,s.state)()],_.prototype,`searchQuery`,void 0),t.t([(0,s.state)()],_.prototype,`filteredRecipients`,void 0),t.t([(0,s.state)()],_.prototype,`boatState`,void 0),_=t.t([(0,s.customElement)(`schmancy-email-recipients`)],_),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return _}});