@mhmo91/schmancy 0.4.70 → 0.4.71

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 (314) hide show
  1. package/dist/{animated-text-CMITbL1U.js → animated-text-CBOMltQE.js} +3 -3
  2. package/dist/{animated-text-CMITbL1U.js.map → animated-text-CBOMltQE.js.map} +1 -1
  3. package/dist/{animated-text-DefVTtAq.cjs → animated-text-rE-SkQgz.cjs} +2 -2
  4. package/dist/{animated-text-DefVTtAq.cjs.map → animated-text-rE-SkQgz.cjs.map} +1 -1
  5. package/dist/animated-text.cjs +1 -1
  6. package/dist/animated-text.js +1 -1
  7. package/dist/area.cjs +1 -1
  8. package/dist/{area.component-CVnJvyK0.js → area.component-C86pi_TT.js} +3 -3
  9. package/dist/{area.component-CVnJvyK0.js.map → area.component-C86pi_TT.js.map} +1 -1
  10. package/dist/{area.component-CxVp3gZp.cjs → area.component-nX_dCv4R.cjs} +2 -2
  11. package/dist/{area.component-CxVp3gZp.cjs.map → area.component-nX_dCv4R.cjs.map} +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/{autocomplete-DTm45vy3.js → autocomplete-BAcf_l63.js} +3 -3
  14. package/dist/{autocomplete-DTm45vy3.js.map → autocomplete-BAcf_l63.js.map} +1 -1
  15. package/dist/{autocomplete-DZgp2iwf.cjs → autocomplete-CuO8ztL4.cjs} +2 -2
  16. package/dist/{autocomplete-DZgp2iwf.cjs.map → autocomplete-CuO8ztL4.cjs.map} +1 -1
  17. package/dist/autocomplete.cjs +1 -1
  18. package/dist/autocomplete.js +1 -1
  19. package/dist/{avatar-Cp3pBHJ0.js → avatar-D3gNBale.js} +50 -50
  20. package/dist/{avatar-Cp3pBHJ0.js.map → avatar-D3gNBale.js.map} +1 -1
  21. package/dist/{avatar-Dexe_o7K.cjs → avatar-N3BODeY1.cjs} +2 -2
  22. package/dist/{avatar-Dexe_o7K.cjs.map → avatar-N3BODeY1.cjs.map} +1 -1
  23. package/dist/badge.cjs +1 -1
  24. package/dist/badge.js +1 -1
  25. package/dist/{boat-DiWtHOng.js → boat-BQoWbDxu.js} +2 -2
  26. package/dist/{boat-DiWtHOng.js.map → boat-BQoWbDxu.js.map} +1 -1
  27. package/dist/{boat-DTLpjckT.cjs → boat-CWXlAq65.cjs} +2 -2
  28. package/dist/{boat-DTLpjckT.cjs.map → boat-CWXlAq65.cjs.map} +1 -1
  29. package/dist/boat.cjs +1 -1
  30. package/dist/boat.js +1 -1
  31. package/dist/busy.cjs +1 -1
  32. package/dist/busy.js +1 -1
  33. package/dist/button.cjs +1 -1
  34. package/dist/button.js +1 -1
  35. package/dist/card.cjs +1 -1
  36. package/dist/card.js +1 -1
  37. package/dist/{checkbox-CatOf2np.js → checkbox-DBO-neG5.js} +2 -2
  38. package/dist/{checkbox-CatOf2np.js.map → checkbox-DBO-neG5.js.map} +1 -1
  39. package/dist/{checkbox-DIbnOfL2.cjs → checkbox-DIYmuPtk.cjs} +2 -2
  40. package/dist/{checkbox-DIbnOfL2.cjs.map → checkbox-DIYmuPtk.cjs.map} +1 -1
  41. package/dist/checkbox.cjs +1 -1
  42. package/dist/checkbox.js +1 -1
  43. package/dist/{chips-DtPe3B90.cjs → chips-BYE5hQQr.cjs} +2 -2
  44. package/dist/{chips-DtPe3B90.cjs.map → chips-BYE5hQQr.cjs.map} +1 -1
  45. package/dist/{chips-zrYIeivA.js → chips-C_7proIN.js} +3 -3
  46. package/dist/{chips-zrYIeivA.js.map → chips-C_7proIN.js.map} +1 -1
  47. package/dist/chips.cjs +1 -1
  48. package/dist/chips.js +1 -1
  49. package/dist/code-highlight.cjs +1 -1
  50. package/dist/code-highlight.js +1 -1
  51. package/dist/{code-preview-CnfzlCWq.js → code-preview-CQ-EAz9F.js} +2 -2
  52. package/dist/{code-preview-CnfzlCWq.js.map → code-preview-CQ-EAz9F.js.map} +1 -1
  53. package/dist/{code-preview-DMIT_oTX.cjs → code-preview-CzcyBpl-.cjs} +2 -2
  54. package/dist/{code-preview-DMIT_oTX.cjs.map → code-preview-CzcyBpl-.cjs.map} +1 -1
  55. package/dist/components.cjs +1 -1
  56. package/dist/components.js +1 -1
  57. package/dist/content-drawer.cjs +1 -1
  58. package/dist/content-drawer.js +1 -1
  59. package/dist/{date-range-CAAjykaN.cjs → date-range-DCghMsV8.cjs} +2 -2
  60. package/dist/{date-range-CAAjykaN.cjs.map → date-range-DCghMsV8.cjs.map} +1 -1
  61. package/dist/{date-range-alXAlxtp.js → date-range-WqwMEh16.js} +4 -4
  62. package/dist/{date-range-alXAlxtp.js.map → date-range-WqwMEh16.js.map} +1 -1
  63. package/dist/{date-range-inline-GGJ-b5Ji.js → date-range-inline-JgIiOHQM.js} +3 -3
  64. package/dist/{date-range-inline-GGJ-b5Ji.js.map → date-range-inline-JgIiOHQM.js.map} +1 -1
  65. package/dist/{date-range-inline-DCYLf0py.cjs → date-range-inline-Z0ASWN4I.cjs} +2 -2
  66. package/dist/{date-range-inline-DCYLf0py.cjs.map → date-range-inline-Z0ASWN4I.cjs.map} +1 -1
  67. package/dist/date-range-inline.cjs +1 -1
  68. package/dist/date-range-inline.js +1 -1
  69. package/dist/date-range.cjs +1 -1
  70. package/dist/date-range.js +1 -1
  71. package/dist/{delay-DnJcmVMd.cjs → delay-Ew4cphs1.cjs} +2 -2
  72. package/dist/{delay-DnJcmVMd.cjs.map → delay-Ew4cphs1.cjs.map} +1 -1
  73. package/dist/{delay-BX1HD8i5.js → delay-LnWlFwkK.js} +2 -2
  74. package/dist/{delay-BX1HD8i5.js.map → delay-LnWlFwkK.js.map} +1 -1
  75. package/dist/delay.cjs +1 -1
  76. package/dist/delay.js +1 -1
  77. package/dist/{details-DJdIO2Op.js → details-BVEV0hUx.js} +2 -2
  78. package/dist/{details-DJdIO2Op.js.map → details-BVEV0hUx.js.map} +1 -1
  79. package/dist/{details-B-SW_Fin.cjs → details-C01m-iWQ.cjs} +2 -2
  80. package/dist/{details-B-SW_Fin.cjs.map → details-C01m-iWQ.cjs.map} +1 -1
  81. package/dist/details.cjs +1 -1
  82. package/dist/details.js +1 -1
  83. package/dist/{dialog-content-DBlOSail.cjs → dialog-content-BFmy9Sbo.cjs} +2 -2
  84. package/dist/{dialog-content-DBlOSail.cjs.map → dialog-content-BFmy9Sbo.cjs.map} +1 -1
  85. package/dist/{dialog-content-CDfCvaaL.js → dialog-content-B_w_iJyW.js} +4 -4
  86. package/dist/{dialog-content-CDfCvaaL.js.map → dialog-content-B_w_iJyW.js.map} +1 -1
  87. package/dist/{dialog-service-C4ko20zk.cjs → dialog-service-DS-aEjlX.cjs} +2 -2
  88. package/dist/{dialog-service-C4ko20zk.cjs.map → dialog-service-DS-aEjlX.cjs.map} +1 -1
  89. package/dist/{dialog-service-DoKaWw88.js → dialog-service-DwJ_7FB3.js} +2 -2
  90. package/dist/{dialog-service-DoKaWw88.js.map → dialog-service-DwJ_7FB3.js.map} +1 -1
  91. package/dist/dialog.cjs +1 -1
  92. package/dist/dialog.js +2 -2
  93. package/dist/{divider-xwxPJtAX.cjs → divider-BWG6TAr2.cjs} +2 -2
  94. package/dist/{divider-xwxPJtAX.cjs.map → divider-BWG6TAr2.cjs.map} +1 -1
  95. package/dist/{divider-TH_rknPx.js → divider-FkKYlJY3.js} +3 -3
  96. package/dist/{divider-TH_rknPx.js.map → divider-FkKYlJY3.js.map} +1 -1
  97. package/dist/divider.cjs +1 -1
  98. package/dist/divider.js +1 -1
  99. package/dist/{dropdown-content-CSwcyUQ9.js → dropdown-content-BStJGihR.js} +3 -3
  100. package/dist/{dropdown-content-CSwcyUQ9.js.map → dropdown-content-BStJGihR.js.map} +1 -1
  101. package/dist/{dropdown-content-BdHciywm.cjs → dropdown-content-m1aSF-Oh.cjs} +2 -2
  102. package/dist/{dropdown-content-BdHciywm.cjs.map → dropdown-content-m1aSF-Oh.cjs.map} +1 -1
  103. package/dist/dropdown.cjs +1 -1
  104. package/dist/dropdown.js +1 -1
  105. package/dist/{email-recipients-B9F9tbTi.cjs → email-recipients-CbZNnzoj.cjs} +90 -231
  106. package/dist/email-recipients-CbZNnzoj.cjs.map +1 -0
  107. package/dist/{email-recipients-BH3-shuO.js → email-recipients-CpghUhQ1.js} +86 -234
  108. package/dist/email-recipients-CpghUhQ1.js.map +1 -0
  109. package/dist/extra.cjs +1 -1
  110. package/dist/extra.js +1 -1
  111. package/dist/{flex-DpTCuZUb.cjs → flex-BNVtJlgu.cjs} +2 -2
  112. package/dist/{flex-DpTCuZUb.cjs.map → flex-BNVtJlgu.cjs.map} +1 -1
  113. package/dist/{flex-D8gAI_hG.js → flex-C6yj5Sxi.js} +2 -2
  114. package/dist/{flex-D8gAI_hG.js.map → flex-C6yj5Sxi.js.map} +1 -1
  115. package/dist/{form-BZjCPbr9.js → form-C85Qev2L.js} +2 -2
  116. package/dist/{form-BZjCPbr9.js.map → form-C85Qev2L.js.map} +1 -1
  117. package/dist/{form-CVRfikGe.cjs → form-ns7c4fcj.cjs} +2 -2
  118. package/dist/{form-CVRfikGe.cjs.map → form-ns7c4fcj.cjs.map} +1 -1
  119. package/dist/form.cjs +1 -1
  120. package/dist/form.js +1 -1
  121. package/dist/{formField.mixin-OMhAnwUx.cjs → formField.mixin-B3CXBJKX.cjs} +2 -2
  122. package/dist/{formField.mixin-OMhAnwUx.cjs.map → formField.mixin-B3CXBJKX.cjs.map} +1 -1
  123. package/dist/{formField.mixin-Ljb1niLU.js → formField.mixin-CKb_MTS7.js} +2 -2
  124. package/dist/{formField.mixin-Ljb1niLU.js.map → formField.mixin-CKb_MTS7.js.map} +1 -1
  125. package/dist/{icon-P0BSH_XX.js → icon-DKPLcbdu.js} +2 -2
  126. package/dist/{icon-P0BSH_XX.js.map → icon-DKPLcbdu.js.map} +1 -1
  127. package/dist/{icon-DX0oxbGd.cjs → icon-DUstfLaC.cjs} +2 -2
  128. package/dist/{icon-DX0oxbGd.cjs.map → icon-DUstfLaC.cjs.map} +1 -1
  129. package/dist/{icon-button-CHc7Bgkr.js → icon-button-CIkRej0r.js} +3 -3
  130. package/dist/{icon-button-CHc7Bgkr.js.map → icon-button-CIkRej0r.js.map} +1 -1
  131. package/dist/{icon-button-GkluRkNE.cjs → icon-button-DiRex-eZ.cjs} +2 -2
  132. package/dist/{icon-button-GkluRkNE.cjs.map → icon-button-DiRex-eZ.cjs.map} +1 -1
  133. package/dist/icons.cjs +1 -1
  134. package/dist/icons.js +1 -1
  135. package/dist/index.cjs +1 -1
  136. package/dist/index.js +49 -49
  137. package/dist/{input-qI9CER23.cjs → input-B7MqsI2h.cjs} +2 -2
  138. package/dist/{input-qI9CER23.cjs.map → input-B7MqsI2h.cjs.map} +1 -1
  139. package/dist/{input-BxzFCM0j.js → input-DODcsAZu.js} +3 -3
  140. package/dist/{input-BxzFCM0j.js.map → input-DODcsAZu.js.map} +1 -1
  141. package/dist/input.cjs +1 -1
  142. package/dist/input.js +1 -1
  143. package/dist/layout.cjs +1 -1
  144. package/dist/layout.js +1 -1
  145. package/dist/{list-CD6Ue96E.js → list-Cx6tpiFE.js} +2 -2
  146. package/dist/{list-CD6Ue96E.js.map → list-Cx6tpiFE.js.map} +1 -1
  147. package/dist/{list-BBCV7EZh.cjs → list-DxduK4sb.cjs} +2 -2
  148. package/dist/{list-BBCV7EZh.cjs.map → list-DxduK4sb.cjs.map} +1 -1
  149. package/dist/list.cjs +1 -1
  150. package/dist/list.js +1 -1
  151. package/dist/{litElement.mixin-D8xYT3dQ.cjs → litElement.mixin-B12Y4mEr.cjs} +2 -2
  152. package/dist/{litElement.mixin-D8xYT3dQ.cjs.map → litElement.mixin-B12Y4mEr.cjs.map} +1 -1
  153. package/dist/{litElement.mixin-BSsJVIyj.js → litElement.mixin-BZ8iGvPl.js} +2 -2
  154. package/dist/{litElement.mixin-BSsJVIyj.js.map → litElement.mixin-BZ8iGvPl.js.map} +1 -1
  155. package/dist/mailbox.cjs +1 -1
  156. package/dist/mailbox.js +1 -1
  157. package/dist/{map-D637QcQS.js → map-dT8yp1iK.js} +2 -2
  158. package/dist/{map-D637QcQS.js.map → map-dT8yp1iK.js.map} +1 -1
  159. package/dist/{map-CVeIZTSC.cjs → map-sgCf8pYD.cjs} +2 -2
  160. package/dist/{map-CVeIZTSC.cjs.map → map-sgCf8pYD.cjs.map} +1 -1
  161. package/dist/map.cjs +1 -1
  162. package/dist/map.js +1 -1
  163. package/dist/{media-CXv34EUE.js → media-CgH0D5rY.js} +2 -2
  164. package/dist/{media-CXv34EUE.js.map → media-CgH0D5rY.js.map} +1 -1
  165. package/dist/{media-ng9D3LV4.cjs → media-CwjupDLj.cjs} +2 -2
  166. package/dist/{media-ng9D3LV4.cjs.map → media-CwjupDLj.cjs.map} +1 -1
  167. package/dist/{menu-BKqFx_Sg.cjs → menu-X25Q7tpY.cjs} +2 -2
  168. package/dist/{menu-BKqFx_Sg.cjs.map → menu-X25Q7tpY.cjs.map} +1 -1
  169. package/dist/{menu-B5aEANFb.js → menu-oZRtmhVd.js} +3 -3
  170. package/dist/{menu-B5aEANFb.js.map → menu-oZRtmhVd.js.map} +1 -1
  171. package/dist/menu.cjs +1 -1
  172. package/dist/menu.js +1 -1
  173. package/dist/nav-drawer.cjs +1 -1
  174. package/dist/nav-drawer.js +1 -1
  175. package/dist/{notification-service-BL_SA5r6.cjs → notification-service-kLTt3JtW.cjs} +2 -2
  176. package/dist/{notification-service-BL_SA5r6.cjs.map → notification-service-kLTt3JtW.cjs.map} +1 -1
  177. package/dist/{notification-service-BO0LiH62.js → notification-service-y0T4rXdS.js} +4 -4
  178. package/dist/{notification-service-BO0LiH62.js.map → notification-service-y0T4rXdS.js.map} +1 -1
  179. package/dist/notification.cjs +1 -1
  180. package/dist/notification.js +2 -2
  181. package/dist/{notify-sR_wpqSL.js → notify-BnjvURrc.js} +2 -2
  182. package/dist/{notify-sR_wpqSL.js.map → notify-BnjvURrc.js.map} +1 -1
  183. package/dist/{notify-DiIsT6_U.cjs → notify-EGStToeW.cjs} +2 -2
  184. package/dist/{notify-DiIsT6_U.cjs.map → notify-EGStToeW.cjs.map} +1 -1
  185. package/dist/{option-Wdzvm3xE.js → option-CD1NSUXu.js} +2 -2
  186. package/dist/{option-Wdzvm3xE.js.map → option-CD1NSUXu.js.map} +1 -1
  187. package/dist/{option-Bna3I9yk.cjs → option-D4_WBCWz.cjs} +2 -2
  188. package/dist/{option-Bna3I9yk.cjs.map → option-D4_WBCWz.cjs.map} +1 -1
  189. package/dist/option.cjs +1 -1
  190. package/dist/option.js +1 -1
  191. package/dist/{payment-card-form-D_F0Qk8m.cjs → payment-card-form-96Rw6cLf.cjs} +2 -2
  192. package/dist/{payment-card-form-D_F0Qk8m.cjs.map → payment-card-form-96Rw6cLf.cjs.map} +1 -1
  193. package/dist/{payment-card-form-BanESqh4.js → payment-card-form-lWlhuDb3.js} +3 -3
  194. package/dist/{payment-card-form-BanESqh4.js.map → payment-card-form-lWlhuDb3.js.map} +1 -1
  195. package/dist/{progress-DWUvgJRQ.cjs → progress-BkxGzGOm.cjs} +2 -2
  196. package/dist/{progress-DWUvgJRQ.cjs.map → progress-BkxGzGOm.cjs.map} +1 -1
  197. package/dist/{progress-lCHm-5Qd.js → progress-DGk9tC4y.js} +2 -2
  198. package/dist/{progress-lCHm-5Qd.js.map → progress-DGk9tC4y.js.map} +1 -1
  199. package/dist/progress.cjs +1 -1
  200. package/dist/progress.js +1 -1
  201. package/dist/{radio-button-CXX8rL5Z.js → radio-button-DHM38A7h.js} +3 -3
  202. package/dist/{radio-button-CXX8rL5Z.js.map → radio-button-DHM38A7h.js.map} +1 -1
  203. package/dist/{radio-button-BgvPoY5w.cjs → radio-button-w9ZxzEPa.cjs} +2 -2
  204. package/dist/{radio-button-BgvPoY5w.cjs.map → radio-button-w9ZxzEPa.cjs.map} +1 -1
  205. package/dist/radio-group.cjs +1 -1
  206. package/dist/radio-group.js +1 -1
  207. package/dist/{schmancy-steps-container-WmpbfnAv.cjs → schmancy-steps-container-CPSL_8H0.cjs} +2 -2
  208. package/dist/{schmancy-steps-container-WmpbfnAv.cjs.map → schmancy-steps-container-CPSL_8H0.cjs.map} +1 -1
  209. package/dist/{schmancy-steps-container-dAv2AQ1o.js → schmancy-steps-container-WYO4SOrb.js} +2 -2
  210. package/dist/{schmancy-steps-container-dAv2AQ1o.js.map → schmancy-steps-container-WYO4SOrb.js.map} +1 -1
  211. package/dist/{select-C4ysSiyb.cjs → select-CxCcgqW_.cjs} +2 -2
  212. package/dist/{select-C4ysSiyb.cjs.map → select-CxCcgqW_.cjs.map} +1 -1
  213. package/dist/{select-BFHRO7D1.js → select-bDAzyQOZ.js} +3 -3
  214. package/dist/{select-BFHRO7D1.js.map → select-bDAzyQOZ.js.map} +1 -1
  215. package/dist/select.cjs +1 -1
  216. package/dist/select.js +1 -1
  217. package/dist/{sheet-BrWQNETX.cjs → sheet-Bm0ukLXt.cjs} +2 -2
  218. package/dist/{sheet-BrWQNETX.cjs.map → sheet-Bm0ukLXt.cjs.map} +1 -1
  219. package/dist/{sheet-Bm7AdMAf.js → sheet-pO6PmiAf.js} +4 -4
  220. package/dist/{sheet-Bm7AdMAf.js.map → sheet-pO6PmiAf.js.map} +1 -1
  221. package/dist/sheet.cjs +1 -1
  222. package/dist/sheet.js +2 -2
  223. package/dist/{sheet.service-DGYkGKzX.cjs → sheet.service-DV9xNhS8.cjs} +2 -2
  224. package/dist/{sheet.service-DGYkGKzX.cjs.map → sheet.service-DV9xNhS8.cjs.map} +1 -1
  225. package/dist/{sheet.service-CgKnOzZN.js → sheet.service-ieSXeqCj.js} +2 -2
  226. package/dist/{sheet.service-CgKnOzZN.js.map → sheet.service-ieSXeqCj.js.map} +1 -1
  227. package/dist/{slider-zzIaOtVV.cjs → slider-BwXXp74f.cjs} +2 -2
  228. package/dist/{slider-zzIaOtVV.cjs.map → slider-BwXXp74f.cjs.map} +1 -1
  229. package/dist/{slider-DtMki7JS.js → slider-CxZGMYF-.js} +3 -3
  230. package/dist/{slider-DtMki7JS.js.map → slider-CxZGMYF-.js.map} +1 -1
  231. package/dist/slider.cjs +1 -1
  232. package/dist/slider.js +1 -1
  233. package/dist/{spinner-yQpcUe1F.js → spinner-b3VWC6It.js} +2 -2
  234. package/dist/{spinner-yQpcUe1F.js.map → spinner-b3VWC6It.js.map} +1 -1
  235. package/dist/{spinner-DpiguU2b.cjs → spinner-nN77H00p.cjs} +2 -2
  236. package/dist/{spinner-DpiguU2b.cjs.map → spinner-nN77H00p.cjs.map} +1 -1
  237. package/dist/steps.cjs +1 -1
  238. package/dist/steps.js +1 -1
  239. package/dist/{surface-uQy_g3S3.js → surface-C2WjztRc.js} +2 -2
  240. package/dist/{surface-uQy_g3S3.js.map → surface-C2WjztRc.js.map} +1 -1
  241. package/dist/{surface-BQkqeqQL.cjs → surface-Cm8zYK5d.cjs} +2 -2
  242. package/dist/{surface-BQkqeqQL.cjs.map → surface-Cm8zYK5d.cjs.map} +1 -1
  243. package/dist/surface.cjs +1 -1
  244. package/dist/surface.js +1 -1
  245. package/dist/{table-P5rTnqC_.cjs → table-BfhuaB9J.cjs} +2 -2
  246. package/dist/{table-P5rTnqC_.cjs.map → table-BfhuaB9J.cjs.map} +1 -1
  247. package/dist/{table-D_NfwO-r.js → table-Dp7npAuy.js} +2 -2
  248. package/dist/{table-D_NfwO-r.js.map → table-Dp7npAuy.js.map} +1 -1
  249. package/dist/table.cjs +1 -1
  250. package/dist/table.js +1 -1
  251. package/dist/{tabs-compatibility-BdJ2pRM4.cjs → tabs-compatibility-CA-wWRoe.cjs} +2 -2
  252. package/dist/{tabs-compatibility-BdJ2pRM4.cjs.map → tabs-compatibility-CA-wWRoe.cjs.map} +1 -1
  253. package/dist/{tabs-compatibility-8_k_UM2J.js → tabs-compatibility-U4cq8X3I.js} +2 -2
  254. package/dist/{tabs-compatibility-8_k_UM2J.js.map → tabs-compatibility-U4cq8X3I.js.map} +1 -1
  255. package/dist/tabs.cjs +1 -1
  256. package/dist/tabs.js +1 -1
  257. package/dist/tailwind.mixin-BlZIIaOE.cjs +2 -0
  258. package/dist/{tailwind.mixin-BFHdirqy.cjs.map → tailwind.mixin-BlZIIaOE.cjs.map} +1 -1
  259. package/dist/tailwind.mixin-D2DVHS9V.js +43 -0
  260. package/dist/{tailwind.mixin-C3MkWn0v.js.map → tailwind.mixin-D2DVHS9V.js.map} +1 -1
  261. package/dist/teleport.cjs +1 -1
  262. package/dist/teleport.js +1 -1
  263. package/dist/{textarea-BIa-VJgn.js → textarea-BRNj3tvi.js} +2 -2
  264. package/dist/{textarea-BIa-VJgn.js.map → textarea-BRNj3tvi.js.map} +1 -1
  265. package/dist/{textarea-d0QK9I_W.cjs → textarea-CxZKoXaU.cjs} +2 -2
  266. package/dist/{textarea-d0QK9I_W.cjs.map → textarea-CxZKoXaU.cjs.map} +1 -1
  267. package/dist/textarea.cjs +1 -1
  268. package/dist/textarea.js +1 -1
  269. package/dist/{theme-button-2R4gqt1Z.cjs → theme-button-MrIoOFEB.cjs} +2 -2
  270. package/dist/{theme-button-2R4gqt1Z.cjs.map → theme-button-MrIoOFEB.cjs.map} +1 -1
  271. package/dist/{theme-button-BXkmh4nn.js → theme-button-N_Wt3bos.js} +2 -2
  272. package/dist/{theme-button-BXkmh4nn.js.map → theme-button-N_Wt3bos.js.map} +1 -1
  273. package/dist/theme-button.cjs +1 -1
  274. package/dist/theme-button.js +1 -1
  275. package/dist/theme.cjs +1 -1
  276. package/dist/{theme.component-Cta_ZGr5.js → theme.component-6VfET_t-.js} +2 -2
  277. package/dist/{theme.component-Cta_ZGr5.js.map → theme.component-6VfET_t-.js.map} +1 -1
  278. package/dist/{theme.component-DHuNvHEP.cjs → theme.component-B_EubPsq.cjs} +2 -2
  279. package/dist/{theme.component-DHuNvHEP.cjs.map → theme.component-B_EubPsq.cjs.map} +1 -1
  280. package/dist/theme.js +1 -1
  281. package/dist/{timezone-DZMzss0f.cjs → timezone-BVd9UEba.cjs} +2 -2
  282. package/dist/{timezone-DZMzss0f.cjs.map → timezone-BVd9UEba.cjs.map} +1 -1
  283. package/dist/{timezone-DLuRf9_q.js → timezone-DR_4m9Cc.js} +3 -3
  284. package/dist/{timezone-DLuRf9_q.js.map → timezone-DR_4m9Cc.js.map} +1 -1
  285. package/dist/{tooltip-BbSE2kUb.js → tooltip-BpPHc8Wr.js} +2 -2
  286. package/dist/{tooltip-BbSE2kUb.js.map → tooltip-BpPHc8Wr.js.map} +1 -1
  287. package/dist/{tooltip-CK-XmbzO.cjs → tooltip-DOQVLRaH.cjs} +2 -2
  288. package/dist/{tooltip-CK-XmbzO.cjs.map → tooltip-DOQVLRaH.cjs.map} +1 -1
  289. package/dist/tooltip.cjs +1 -1
  290. package/dist/tooltip.js +1 -1
  291. package/dist/{tree-COFL10bn.cjs → tree-BANkyLn7.cjs} +2 -2
  292. package/dist/{tree-COFL10bn.cjs.map → tree-BANkyLn7.cjs.map} +1 -1
  293. package/dist/{tree-DQJIF5Zw.js → tree-C5zu8wXc.js} +2 -2
  294. package/dist/{tree-DQJIF5Zw.js.map → tree-C5zu8wXc.js.map} +1 -1
  295. package/dist/tree.cjs +1 -1
  296. package/dist/tree.js +1 -1
  297. package/dist/{typewriter-DWfh9dQx.js → typewriter-CdztqkoR.js} +4 -4
  298. package/dist/{typewriter-DWfh9dQx.js.map → typewriter-CdztqkoR.js.map} +1 -1
  299. package/dist/{typewriter-DTuH_jfH.cjs → typewriter-DS0D0UZM.cjs} +2 -2
  300. package/dist/{typewriter-DTuH_jfH.cjs.map → typewriter-DS0D0UZM.cjs.map} +1 -1
  301. package/dist/typewriter.cjs +1 -1
  302. package/dist/typewriter.js +1 -1
  303. package/dist/{typography-CVIqatrO.cjs → typography-C8vZfuLF.cjs} +2 -2
  304. package/dist/{typography-CVIqatrO.cjs.map → typography-C8vZfuLF.cjs.map} +1 -1
  305. package/dist/{typography-CbfOMwD6.js → typography-o9FJ6Lzo.js} +2 -2
  306. package/dist/{typography-CbfOMwD6.js.map → typography-o9FJ6Lzo.js.map} +1 -1
  307. package/dist/typography.cjs +1 -1
  308. package/dist/typography.js +1 -1
  309. package/package.json +1 -1
  310. package/types/src/mailbox/email-template-picker.d.ts +4 -14
  311. package/dist/email-recipients-B9F9tbTi.cjs.map +0 -1
  312. package/dist/email-recipients-BH3-shuO.js.map +0 -1
  313. package/dist/tailwind.mixin-BFHdirqy.cjs +0 -2
  314. package/dist/tailwind.mixin-C3MkWn0v.js +0 -43
@@ -1,9 +1,9 @@
1
- "use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const S=require("./litElement.mixin-D8xYT3dQ.cjs"),R=require("./tailwind.mixin-BFHdirqy.cjs"),r=require("lit/decorators.js"),c=require("lit"),d=require("lit/directives/when.js"),g=require("lit/directives/ref.js"),$=require("lit/directives/repeat.js"),u=require("./notification-service-BL_SA5r6.cjs");require("./dialog-content-DBlOSail.cjs");const E=require("./dialog-service-C4ko20zk.cjs"),k=require("./sheet.service-DGYkGKzX.cjs");var C=Object.defineProperty,T=Object.getOwnPropertyDescriptor,m=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?T(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&C(t,i,n),n};exports.SchmancyMailbox=class extends S.$LitElement(c.css`
1
+ "use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const $=require("./litElement.mixin-B12Y4mEr.cjs"),R=require("./tailwind.mixin-BlZIIaOE.cjs"),c=require("lit/decorators.js"),o=require("lit"),d=require("lit/directives/when.js"),g=require("lit/directives/ref.js"),S=require("lit/directives/repeat.js"),u=require("./notification-service-kLTt3JtW.cjs");require("./dialog-content-BFmy9Sbo.cjs");const k=require("./dialog-service-DS-aEjlX.cjs"),E=require("./sheet.service-DV9xNhS8.cjs");var C=Object.defineProperty,T=Object.getOwnPropertyDescriptor,m=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?T(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&C(t,i,n),n};exports.SchmancyMailbox=class extends $.$LitElement(o.css`
2
2
  :host {
3
3
  display: block;
4
4
  height: 100%;
5
5
  }
6
- `){constructor(){super(...arguments),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=>{const{emails:t}=e.detail,i=[...new Set([...this.recipients,...t])],s=t.filter(a=>!this.recipients.includes(a));this.recipients=i,this.selectedRecipients=[...new Set([...this.selectedRecipients,...s])],this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:s,source:e.detail.source},bubbles:!0,composed:!0}))},this.handleRecipientRemoved=e=>{const{email:t}=e.detail;this.recipients=this.recipients.filter(i=>i!==t),this.selectedRecipients=this.selectedRecipients.filter(i=>i!==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=>{const{selectedEmails:t}=e.detail;this.selectedRecipients=t,this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:t},bubbles:!0,composed:!0}))},this.handleEditorChange=e=>{const{subject:t,body:i,templateId:s,attachments:a}=e.detail;this.subject=t,this.body=i,this.templateId=s,this.attachments=a,this.dispatchEvent(new CustomEvent("compose-changed",{detail:{subject:t,body:i,templateId:s,attachments:a},bubbles:!0,composed:!0}))},this.handleSend=async()=>{if(this.selectedRecipients.length!==0)if(this.subject.trim())if(this.body.trim()){this.isSending=!0;try{const 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){const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])]}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(){const e=this.selectedRecipients.length>0&&this.subject.trim()&&this.body.trim()&&!this.isSending&&!this.disabled;return c.html`
6
+ `){constructor(){super(...arguments),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=>{const{emails:t}=e.detail,i=[...new Set([...this.recipients,...t])],s=t.filter(a=>!this.recipients.includes(a));this.recipients=i,this.selectedRecipients=[...new Set([...this.selectedRecipients,...s])],this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:s,source:e.detail.source},bubbles:!0,composed:!0}))},this.handleRecipientRemoved=e=>{const{email:t}=e.detail;this.recipients=this.recipients.filter(i=>i!==t),this.selectedRecipients=this.selectedRecipients.filter(i=>i!==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=>{const{selectedEmails:t}=e.detail;this.selectedRecipients=t,this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:t},bubbles:!0,composed:!0}))},this.handleEditorChange=e=>{const{subject:t,body:i,templateId:s,attachments:a}=e.detail;this.subject=t,this.body=i,this.templateId=s,this.attachments=a,this.dispatchEvent(new CustomEvent("compose-changed",{detail:{subject:t,body:i,templateId:s,attachments:a},bubbles:!0,composed:!0}))},this.handleSend=async()=>{if(this.selectedRecipients.length!==0)if(this.subject.trim())if(this.body.trim()){this.isSending=!0;try{const 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){const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])]}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(){const e=this.selectedRecipients.length>0&&this.subject.trim()&&this.body.trim()&&!this.isSending&&!this.disabled;return o.html`
7
7
  <!-- Main Layout Container -->
8
8
  <div class="flex flex-col h-full gap-6 p-6">
9
9
 
@@ -50,7 +50,7 @@
50
50
  <schmancy-typography type="body" token="sm" class="font-medium">
51
51
  ${this.selectedRecipients.length} recipient${this.selectedRecipients.length===1?"":"s"} selected
52
52
  </schmancy-typography>
53
- ${d.when(this.attachments.length>0,()=>c.html`
53
+ ${d.when(this.attachments.length>0,()=>o.html`
54
54
  <schmancy-typography type="body" token="xs">
55
55
  ${this.attachments.length} attachment${this.attachments.length===1?"":"s"}
56
56
  </schmancy-typography>
@@ -90,9 +90,9 @@
90
90
  @recipients-cleared=${this.handleRecipientsCleared}
91
91
  @selection-changed=${this.handleSelectionChanged}
92
92
  ></schmancy-email-recipients>
93
- `}},m([r.property({type:Object})],exports.SchmancyMailbox.prototype,"config",2),m([r.property({type:Array})],exports.SchmancyMailbox.prototype,"templates",2),m([r.property({type:Array})],exports.SchmancyMailbox.prototype,"importSources",2),m([r.property({type:Boolean})],exports.SchmancyMailbox.prototype,"disabled",2),m([r.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsTitle",2),m([r.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyTitle",2),m([r.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyMessage",2),m([r.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableCsvImport",2),m([r.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableDragDrop",2),m([r.state()],exports.SchmancyMailbox.prototype,"recipients",2),m([r.state()],exports.SchmancyMailbox.prototype,"selectedRecipients",2),m([r.state()],exports.SchmancyMailbox.prototype,"subject",2),m([r.state()],exports.SchmancyMailbox.prototype,"body",2),m([r.state()],exports.SchmancyMailbox.prototype,"templateId",2),m([r.state()],exports.SchmancyMailbox.prototype,"attachments",2),m([r.state()],exports.SchmancyMailbox.prototype,"isSending",2),exports.SchmancyMailbox=m([r.customElement("schmancy-mailbox")],exports.SchmancyMailbox);var I=Object.getOwnPropertyDescriptor;exports.SchmancyEmailLayoutSelector=class extends R.TailwindElement(){constructor(){super(...arguments),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`
93
+ `}},m([c.property({type:Object})],exports.SchmancyMailbox.prototype,"config",2),m([c.property({type:Array})],exports.SchmancyMailbox.prototype,"templates",2),m([c.property({type:Array})],exports.SchmancyMailbox.prototype,"importSources",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"disabled",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsTitle",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyTitle",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyMessage",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableCsvImport",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableDragDrop",2),m([c.state()],exports.SchmancyMailbox.prototype,"recipients",2),m([c.state()],exports.SchmancyMailbox.prototype,"selectedRecipients",2),m([c.state()],exports.SchmancyMailbox.prototype,"subject",2),m([c.state()],exports.SchmancyMailbox.prototype,"body",2),m([c.state()],exports.SchmancyMailbox.prototype,"templateId",2),m([c.state()],exports.SchmancyMailbox.prototype,"attachments",2),m([c.state()],exports.SchmancyMailbox.prototype,"isSending",2),exports.SchmancyMailbox=m([c.customElement("schmancy-mailbox")],exports.SchmancyMailbox);var I=Object.getOwnPropertyDescriptor;exports.SchmancyEmailLayoutSelector=class extends R.TailwindElement(){constructor(){super(...arguments),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 o.html`
94
94
  <div class="grid p-3 gap-2">
95
- ${this.layouts.map(e=>c.html`
95
+ ${this.layouts.map(e=>o.html`
96
96
  <schmancy-button
97
97
  variant="outlined"
98
98
  @click=${()=>this.selectLayout(e.id)}
@@ -108,20 +108,18 @@
108
108
  </schmancy-button>
109
109
  `)}
110
110
  </div>
111
- `}},exports.SchmancyEmailLayoutSelector=((e,t,i,s)=>{for(var a,n=s>1?void 0:s?I(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=a(n)||n);return n})([r.customElement("schmancy-email-layout-selector")],exports.SchmancyEmailLayoutSelector);var D=Object.defineProperty,A=Object.getOwnPropertyDescriptor,w=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?A(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&D(t,i,n),n};let v=class extends S.$LitElement(c.css`
111
+ `}},exports.SchmancyEmailLayoutSelector=((e,t,i,s)=>{for(var a,n=s>1?void 0:s?I(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=a(n)||n);return n})([c.customElement("schmancy-email-layout-selector")],exports.SchmancyEmailLayoutSelector);var A=Object.defineProperty,D=Object.getOwnPropertyDescriptor,w=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?D(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&A(t,i,n),n};let x=class extends $.$LitElement(o.css`
112
112
  :host {
113
113
  display: block;
114
114
  }
115
- `){constructor(){super(...arguments),this.templates=[],this.searchQuery="",this.selectedTemplate=null,this.filteredTemplates=[],this.showPreview=!1,this.selectedCategory="all",this.handleSearch=e=>{const t=e.target;this.searchQuery=t.value},this.handleCategorySelect=e=>{this.selectedCategory=e,this.updateFilteredTemplates()},this.selectTemplate=e=>{this.selectedTemplate=e,this.showPreview=!0},this.confirmSelection=()=>{this.selectedTemplate&&(this.dispatchEvent(new CustomEvent("template-selected",{detail:this.selectedTemplate,bubbles:!0,composed:!0})),k.sheet.dismiss())},this.close=()=>{k.sheet.dismiss()},this.backToList=()=>{this.showPreview=!1,this.selectedTemplate=null}}connectedCallback(){super.connectedCallback(),this.updateFilteredTemplates()}updated(e){(e.has("templates")||e.has("searchQuery")||e.has("selectedCategory"))&&this.updateFilteredTemplates()}get categories(){const 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(t=>t.category===this.selectedCategory)),this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();e=e.filter(i=>i.name.toLowerCase().includes(t)||i.category?.toLowerCase().includes(t)||i.description?.toLowerCase().includes(t))}this.filteredTemplates=e}render(){return c.html`
115
+ `){constructor(){super(...arguments),this.templates=[],this.searchQuery="",this.filteredTemplates=[],this.selectedCategory="all",this.handleSearch=e=>{const 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})),E.sheet.dismiss()},this.close=()=>{E.sheet.dismiss()}}connectedCallback(){super.connectedCallback(),this.updateFilteredTemplates()}updated(e){(e.has("templates")||e.has("searchQuery")||e.has("selectedCategory"))&&this.updateFilteredTemplates()}get categories(){const 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(t=>t.category===this.selectedCategory)),this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();e=e.filter(i=>i.name.toLowerCase().includes(t)||i.category?.toLowerCase().includes(t)||i.description?.toLowerCase().includes(t))}this.filteredTemplates=e}render(){return o.html`
116
116
  <div class="flex flex-col h-full overflow-hidden">
117
117
  <!-- Header -->
118
118
  <div class="flex items-center justify-between px-6 py-4 border-b border-outline-variant">
119
119
  <div class="flex items-center gap-3">
120
- <schmancy-icon size="24px" class="text-primary">
121
- ${this.showPreview?"preview":"mail"}
122
- </schmancy-icon>
120
+ <schmancy-icon size="24px" class="text-primary">mail</schmancy-icon>
123
121
  <schmancy-typography type="headline" token="md">
124
- ${this.showPreview?"Template Preview":"Choose Email Template"}
122
+ Choose Email Template
125
123
  </schmancy-typography>
126
124
  </div>
127
125
  <schmancy-button
@@ -135,55 +133,23 @@
135
133
 
136
134
  <!-- Body -->
137
135
  <div class="flex-1 flex flex-col overflow-hidden">
138
- ${d.when(this.showPreview&&this.selectedTemplate,()=>this.renderPreview(),()=>this.renderTemplateList())}
139
- </div>
140
-
141
- <!-- Footer -->
142
- <div class="flex justify-between px-6 py-4 border-t border-outline-variant bg-surface-containerLow">
143
- ${d.when(this.showPreview,()=>c.html`
144
- <schmancy-button
145
- variant="outlined"
146
- @click=${this.backToList}
147
- class="px-6 py-3"
148
- >
149
- <schmancy-icon slot="prefix">arrow_back</schmancy-icon>
150
- Back to Templates
151
- </schmancy-button>
152
- <schmancy-button
153
- variant="filled"
154
- @click=${this.confirmSelection}
155
- class="px-8 py-3 bg-primary text-primary-on shadow-md hover:shadow-lg transition-shadow"
156
- >
157
- <schmancy-icon slot="prefix">check_circle</schmancy-icon>
158
- Use This Template
159
- </schmancy-button>
160
- `,()=>c.html`
161
- <div class="flex gap-3">
162
- <schmancy-button
163
- variant="text"
164
- @click=${this.close}
165
- class="px-6 py-3"
166
- >
167
- Cancel
168
- </schmancy-button>
169
- </div>
170
- `)}
136
+ ${this.renderTemplateList()}
171
137
  </div>
172
138
  </div>
173
- `}renderTemplateList(){return c.html`
139
+ `}renderTemplateList(){return o.html`
174
140
  <!-- Search and Filter Bar -->
175
141
  <div class="px-6 py-4 border-b border-outline-variant bg-surface-containerLow">
176
142
  <div class="flex flex-col gap-4">
177
143
  <!-- Search Input -->
178
144
  <schmancy-input
179
145
  type="search"
180
- placeholder="Search templates by name, category, or description..."
146
+ placeholder="Search templates..."
181
147
  .value=${this.searchQuery}
182
148
  @input=${this.handleSearch}
183
149
  class="w-full"
184
150
  >
185
151
  <schmancy-icon slot="prefix" size="20px" class="text-surface-onVariant">search</schmancy-icon>
186
- ${d.when(this.searchQuery,()=>c.html`
152
+ ${d.when(this.searchQuery,()=>o.html`
187
153
  <schmancy-button
188
154
  slot="suffix"
189
155
  variant="text"
@@ -196,9 +162,9 @@
196
162
  </schmancy-input>
197
163
 
198
164
  <!-- Category Filter -->
199
- ${d.when(this.categories.length>1,()=>c.html`
165
+ ${d.when(this.categories.length>1,()=>o.html`
200
166
  <div class="flex gap-2 flex-wrap">
201
- ${$.repeat(this.categories,e=>e,e=>c.html`
167
+ ${S.repeat(this.categories,e=>e,e=>o.html`
202
168
  <schmancy-chip
203
169
  class="cursor-pointer transition-all hover:shadow-sm ${this.selectedCategory===e?"bg-primary text-primary-on":"border border-outline"}"
204
170
  @click=${()=>this.handleCategorySelect(e)}
@@ -211,66 +177,54 @@
211
177
  </div>
212
178
  </div>
213
179
 
214
- <!-- Template List -->
180
+ <!-- Template List with Previews -->
215
181
  <div class="flex-1 overflow-y-auto px-6 py-6">
216
- ${d.when(this.filteredTemplates.length>0,()=>c.html`
217
- <div class="space-y-4">
218
- ${$.repeat(this.filteredTemplates,e=>e.id,e=>c.html`
182
+ ${d.when(this.filteredTemplates.length>0,()=>o.html`
183
+ <div class="space-y-6">
184
+ ${S.repeat(this.filteredTemplates,e=>e.id,e=>o.html`
219
185
  <schmancy-surface
220
186
  type="containerLow"
221
187
  elevation="1"
222
188
  rounded="all"
223
- class="group cursor-pointer hover:elevation-3 transition-all duration-200 p-4"
189
+ class="group cursor-pointer hover:elevation-3 transition-all duration-200 overflow-hidden"
224
190
  @click=${()=>this.selectTemplate(e)}
225
191
  >
226
- <div class="flex items-start justify-between gap-4">
227
- <div class="flex-1">
228
- <!-- Template Header -->
229
- <div class="flex items-start justify-between mb-2">
230
- <schmancy-typography type="title" token="md" class="font-semibold leading-tight">
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">
231
197
  ${e.name}
232
198
  </schmancy-typography>
233
- ${d.when(e.isDefault,()=>c.html`
234
- <schmancy-chip class="bg-primary text-primary-on text-xs">
235
- <schmancy-icon slot="prefix" size="12px">star</schmancy-icon>
236
- Default
237
- </schmancy-chip>
238
- `)}
239
- </div>
240
-
241
- <!-- Category Badge -->
242
- ${d.when(e.category,()=>c.html`
243
- <div class="mb-2">
199
+ ${d.when(e.category,()=>o.html`
244
200
  <schmancy-chip class="text-xs border border-outline">
245
201
  ${e.category}
246
202
  </schmancy-chip>
247
- </div>
248
- `)}
249
-
250
- <!-- Description -->
251
- ${d.when(e.description,()=>c.html`
252
- <schmancy-typography type="body" token="sm" class="text-surface-onVariant leading-relaxed">
253
- ${e.description}
254
- </schmancy-typography>
255
- `,()=>c.html`
256
- <schmancy-typography type="body" token="sm" class="text-surface-onVariant opacity-60 italic">
257
- No description available
258
- </schmancy-typography>
259
203
  `)}
260
- </div>
261
-
262
- <!-- Preview Button -->
263
- <div class="flex-shrink-0">
264
- <schmancy-button variant="outlined" size="sm">
265
- <schmancy-icon slot="prefix">preview</schmancy-icon>
266
- Preview
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
267
211
  </schmancy-button>
268
212
  </div>
269
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>
270
224
  </schmancy-surface>
271
225
  `)}
272
226
  </div>
273
- `,()=>c.html`
227
+ `,()=>o.html`
274
228
  <div class="flex flex-col items-center justify-center h-96 text-center">
275
229
  <div class="mb-6">
276
230
  <schmancy-icon size="64px" class="text-surface-onVariant opacity-20">mail_outline</schmancy-icon>
@@ -281,9 +235,9 @@
281
235
  <schmancy-typography type="body" token="md" class="text-surface-onVariant mb-6 max-w-md">
282
236
  ${this.searchQuery?`No templates match your search for "${this.searchQuery}"`:this.selectedCategory!=="all"?`No templates found in the "${this.selectedCategory}" category`:"Start by creating your first email template"}
283
237
  </schmancy-typography>
284
- ${d.when(this.searchQuery||this.selectedCategory!=="all",()=>c.html`
238
+ ${d.when(this.searchQuery||this.selectedCategory!=="all",()=>o.html`
285
239
  <div class="flex gap-3">
286
- ${d.when(this.searchQuery,()=>c.html`
240
+ ${d.when(this.searchQuery,()=>o.html`
287
241
  <schmancy-button
288
242
  variant="outlined"
289
243
  @click=${()=>{this.searchQuery=""}}
@@ -292,7 +246,7 @@
292
246
  Clear Search
293
247
  </schmancy-button>
294
248
  `)}
295
- ${d.when(this.selectedCategory!=="all",()=>c.html`
249
+ ${d.when(this.selectedCategory!=="all",()=>o.html`
296
250
  <schmancy-button
297
251
  variant="filled"
298
252
  @click=${()=>this.handleCategorySelect("all")}
@@ -306,111 +260,16 @@
306
260
  </div>
307
261
  `)}
308
262
  </div>
309
- `}renderPreview(){return this.selectedTemplate?c.html`
310
- <div class="flex-1 overflow-y-auto">
311
- <!-- Template Header Section -->
312
- <div class="px-6 py-6 border-b border-outline-variant bg-surface-containerLow">
313
- <div class="flex items-start gap-6">
314
- <!-- Template Thumbnail -->
315
- ${d.when(this.selectedTemplate.thumbnail,()=>c.html`
316
- <div class="flex-shrink-0">
317
- <schmancy-surface elevation="2" rounded="all" class="overflow-hidden w-32 h-24">
318
- <img
319
- src=${this.selectedTemplate.thumbnail}
320
- alt=${this.selectedTemplate.name}
321
- class="w-full h-full object-cover"
322
- />
323
- </schmancy-surface>
324
- </div>
325
- `,()=>c.html`
326
- <div class="flex-shrink-0">
327
- <schmancy-surface elevation="1" rounded="all" class="w-32 h-24 bg-gradient-to-br from-surface-container to-surface-containerLow flex items-center justify-center">
328
- <schmancy-icon size="32px" class="text-surface-onVariant opacity-40">mail</schmancy-icon>
329
- </schmancy-surface>
330
- </div>
331
- `)}
332
-
333
- <!-- Template Info -->
334
- <div class="flex-1">
335
- <div class="flex items-start justify-between mb-3">
336
- <schmancy-typography type="headline" token="lg" class="font-semibold">
337
- ${this.selectedTemplate.name}
338
- </schmancy-typography>
339
- ${d.when(this.selectedTemplate.isDefault,()=>c.html`
340
- <schmancy-chip class="bg-primary text-primary-on">
341
- <schmancy-icon slot="prefix" size="12px">star</schmancy-icon>
342
- Default
343
- </schmancy-chip>
344
- `)}
345
- </div>
346
-
347
- <div class="flex flex-wrap gap-2 mb-3">
348
- ${d.when(this.selectedTemplate.category,()=>c.html`
349
- <schmancy-chip class="border border-outline">
350
- <schmancy-icon slot="prefix" size="12px">category</schmancy-icon>
351
- ${this.selectedTemplate.category}
352
- </schmancy-chip>
353
- `)}
354
- ${d.when(this.selectedTemplate.createdAt,()=>c.html`
355
- <schmancy-chip class="border border-outline">
356
- <schmancy-icon slot="prefix" size="12px">schedule</schmancy-icon>
357
- Created ${new Date(this.selectedTemplate.createdAt).toLocaleDateString()}
358
- </schmancy-chip>
359
- `)}
360
- </div>
361
-
362
- ${d.when(this.selectedTemplate.description,()=>c.html`
363
- <schmancy-typography type="body" token="md" class="text-surface-onVariant leading-relaxed">
364
- ${this.selectedTemplate.description}
365
- </schmancy-typography>
366
- `)}
367
- </div>
368
- </div>
369
- </div>
370
-
371
- <!-- Template Content -->
372
- <div class="px-6 py-6 space-y-8">
373
- <!-- Subject Preview -->
374
- <div>
375
- <div class="flex items-center gap-2 mb-4">
376
- <schmancy-icon size="20px" class="text-primary">subject</schmancy-icon>
377
- <schmancy-typography type="title" token="md" class="text-primary">
378
- Subject Line
379
- </schmancy-typography>
380
- </div>
381
- <schmancy-surface elevation="1" type="surface" class="p-4 border-l-4 border-primary">
382
- <schmancy-typography type="body" token="md" class="font-medium">
383
- ${this.selectedTemplate.subject}
384
- </schmancy-typography>
385
- </schmancy-surface>
386
- </div>
387
-
388
- <!-- Body Preview -->
389
- <div>
390
- <div class="flex items-center gap-2 mb-4">
391
- <schmancy-icon size="20px" class="text-primary">article</schmancy-icon>
392
- <schmancy-typography type="title" token="md" class="text-primary">
393
- Email Preview
394
- </schmancy-typography>
395
- </div>
396
- <schmancy-email-viewer
397
- subject=${this.selectedTemplate.subject}
398
- body=${this.selectedTemplate.body}
399
- mode="desktop"
400
- ></schmancy-email-viewer>
401
- </div>
402
- </div>
403
- </div>
404
- `:null}};w([r.property({type:Array})],v.prototype,"templates",2),w([r.state()],v.prototype,"searchQuery",2),w([r.state()],v.prototype,"selectedTemplate",2),w([r.state()],v.prototype,"filteredTemplates",2),w([r.state()],v.prototype,"showPreview",2),w([r.state()],v.prototype,"selectedCategory",2),v=w([r.customElement("schmancy-email-template-picker")],v);var L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,f=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?j(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&L(t,i,n),n};exports.SchmancyEmailEditor=class extends S.$LitElement(c.css`
263
+ `}};w([c.property({type:Array})],x.prototype,"templates",2),w([c.state()],x.prototype,"searchQuery",2),w([c.state()],x.prototype,"filteredTemplates",2),w([c.state()],x.prototype,"selectedCategory",2),x=w([c.customElement("schmancy-email-template-picker")],x);var L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,f=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?j(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&L(t,i,n),n};exports.SchmancyEmailEditor=class extends $.$LitElement(o.css`
405
264
  :host {
406
265
  display: block;
407
266
  height: 100%;
408
267
  }
409
- `){constructor(){super(...arguments),this.subject="",this.body="",this.disabled=!1,this.attachments=[],this.config={},this.templates=this.getDefaultTemplates(),this.dragOver=!1,this.isUploading=!1,this.subjectInputRef=g.createRef(),this.bodyTextAreaRef=g.createRef(),this.fileInputRef=g.createRef(),this.imageInputRef=g.createRef(),this.handleKeyDown=e=>{if(this.disabled)return;const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");e.key==="Tab"&&e.target===t&&(e.preventDefault(),this.insertAtCursor(" "))},this.handlePaste=e=>{const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(this.disabled||document.activeElement!==t)return;const i=e.clipboardData?.items;if(i)for(let s=0;s<i.length;s++){const a=i[s];if(a.type.indexOf("image")!==-1){e.preventDefault();const n=a.getAsFile();n&&this.uploadImage(n);break}}},this.handleSubjectChange=e=>{const 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=()=>{E.$dialog.component(c.html`
268
+ `){constructor(){super(...arguments),this.subject="",this.body="",this.disabled=!1,this.attachments=[],this.config={},this.templates=this.getDefaultTemplates(),this.dragOver=!1,this.isUploading=!1,this.subjectInputRef=g.createRef(),this.bodyTextAreaRef=g.createRef(),this.fileInputRef=g.createRef(),this.imageInputRef=g.createRef(),this.handleKeyDown=e=>{if(this.disabled)return;const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");e.key==="Tab"&&e.target===t&&(e.preventDefault(),this.insertAtCursor(" "))},this.handlePaste=e=>{const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(this.disabled||document.activeElement!==t)return;const i=e.clipboardData?.items;if(i)for(let s=0;s<i.length;s++){const a=i[s];if(a.type.indexOf("image")!==-1){e.preventDefault();const n=a.getAsFile();n&&this.uploadImage(n);break}}},this.handleSubjectChange=e=>{const 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=()=>{k.$dialog.component(o.html`
410
269
  <schmancy-email-layout-selector
411
- @layout-select=${e=>{this.applyLayout(e.detail.layout),E.$dialog.close()}}
270
+ @layout-select=${e=>{this.applyLayout(e.detail.layout),k.$dialog.close()}}
412
271
  ></schmancy-email-layout-selector>
413
- `)},this.openTemplatePicker=()=>{const e=new v;e.templates=this.templates,e.addEventListener("template-selected",this.handleTemplateSelected),k.sheet.open({component:e,title:"Choose Email Template"})},this.handleTemplateSelected=e=>{const t=e.detail;this.subject=t.subject,this.body=t.body,this.dispatchChange(),u.$notify.success(`Template "${t.name}" applied successfully`)},this.applyLayout=e=>{const t={"columns-2":`
272
+ `)},this.openTemplatePicker=()=>{const e=new x;e.templates=this.templates,e.addEventListener("template-selected",this.handleTemplateSelected),E.sheet.open({component:e,title:"Choose Email Template"})},this.handleTemplateSelected=e=>{const t=e.detail;this.subject=t.subject,this.body=t.body,this.dispatchChange(),u.$notify.success(`Template "${t.name}" applied successfully`)},this.applyLayout=e=>{const t={"columns-2":`
414
273
  :::layout columns-2
415
274
  <div class="column">
416
275
  ![Left Photo](https://via.placeholder.com/400x300?text=Replace+with+your+photo){height=300px}
@@ -500,7 +359,7 @@ Your primary content goes here. This area takes up most of the width while the s
500
359
  ![Gallery Image 3](https://via.placeholder.com/400x250?text=Gallery+Image+3){height=250px}
501
360
  </div>
502
361
  :::
503
- `}[e];t&&this.insertAtCursor(t)},this.uploadImage=async e=>{if(!e.type.startsWith("image/"))return void u.$notify.error(`File "${e.name}" is not an image`);if(e.size>10485760)u.$notify.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),u.$notify.warning("No upload handler configured. Using local preview."));const i=await this.getImageDimensions(e);this.insertImageMarkdown(t,e.name,i.width,i.height),u.$notify.success("Image uploaded successfully")}catch{u.$notify.error("Failed to upload image")}finally{this.isUploading=!1}}},this.createDataUrl=e=>new Promise((t,i)=>{const s=new FileReader;s.onload=()=>t(s.result),s.onerror=i,s.readAsDataURL(e)}),this.getImageDimensions=e=>new Promise(t=>{const i=new Image;i.onload=()=>{t({width:i.width,height:i.height}),URL.revokeObjectURL(i.src)},i.onerror=()=>{t({width:400,height:300}),URL.revokeObjectURL(i.src)},i.src=URL.createObjectURL(e)}),this.insertImageMarkdown=(e,t,i,s)=>{const a=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(!a)return;const n=`![${t}](${e}){width=${Math.min(i,600)}px height=auto}`,o=a.selectionStart,l=a.selectionEnd,h=this.body.substring(0,o)+n+this.body.substring(l);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(p){const x=o+n.length;p.setSelectionRange(x,x),p.focus()}})},this.handleFileChange=e=>{const t=e.target,i=t.files;if(i)for(let s=0;s<i.length;s++){const a=i[s];a.type.startsWith("image/")?this.uploadImage(a):this.addFile(a)}t.value=""},this.handleImageSelect=e=>{const t=e.target,i=t.files?.[0];i&&i.type.startsWith("image/")&&this.uploadImage(i),t.value=""},this.handleDrop=e=>{e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files;if(t)for(let i=0;i<t.length;i++){const s=t[i];s.type.startsWith("image/")?this.uploadImage(s):this.addFile(s)}},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 u.$notify.error(`File "${e.name}" is too large. Maximum size is 10MB.`);if(this.attachments.some(i=>i.name===e.name&&i.size===e.size))return void u.$notify.warning(`File "${e.name}" is already attached.`);const 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.addKeyboardListeners(),this.addDragListeners()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("paste",this.handlePaste),document.removeEventListener("dragenter",this.handleDragEnter),document.removeEventListener("dragleave",this.handleDocumentDragLeave),document.removeEventListener("drop",this.handleDocumentDrop)}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!
362
+ `}[e];t&&this.insertAtCursor(t)},this.uploadImage=async e=>{if(!e.type.startsWith("image/"))return void u.$notify.error(`File "${e.name}" is not an image`);if(e.size>10485760)u.$notify.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),u.$notify.warning("No upload handler configured. Using local preview."));const i=await this.getImageDimensions(e);this.insertImageMarkdown(t,e.name,i.width,i.height),u.$notify.success("Image uploaded successfully")}catch{u.$notify.error("Failed to upload image")}finally{this.isUploading=!1}}},this.createDataUrl=e=>new Promise((t,i)=>{const s=new FileReader;s.onload=()=>t(s.result),s.onerror=i,s.readAsDataURL(e)}),this.getImageDimensions=e=>new Promise(t=>{const i=new Image;i.onload=()=>{t({width:i.width,height:i.height}),URL.revokeObjectURL(i.src)},i.onerror=()=>{t({width:400,height:300}),URL.revokeObjectURL(i.src)},i.src=URL.createObjectURL(e)}),this.insertImageMarkdown=(e,t,i,s)=>{const a=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(!a)return;const n=`![${t}](${e}){width=${Math.min(i,600)}px height=auto}`,r=a.selectionStart,l=a.selectionEnd,h=this.body.substring(0,r)+n+this.body.substring(l);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(p){const v=r+n.length;p.setSelectionRange(v,v),p.focus()}})},this.handleFileChange=e=>{const t=e.target,i=t.files;if(i)for(let s=0;s<i.length;s++){const a=i[s];a.type.startsWith("image/")?this.uploadImage(a):this.addFile(a)}t.value=""},this.handleImageSelect=e=>{const t=e.target,i=t.files?.[0];i&&i.type.startsWith("image/")&&this.uploadImage(i),t.value=""},this.handleDrop=e=>{e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files;if(t)for(let i=0;i<t.length;i++){const s=t[i];s.type.startsWith("image/")?this.uploadImage(s):this.addFile(s)}},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 u.$notify.error(`File "${e.name}" is too large. Maximum size is 10MB.`);if(this.attachments.some(i=>i.name===e.name&&i.size===e.size))return void u.$notify.warning(`File "${e.name}" is already attached.`);const 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.addKeyboardListeners(),this.addDragListeners()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("paste",this.handlePaste),document.removeEventListener("dragenter",this.handleDragEnter),document.removeEventListener("dragleave",this.handleDocumentDragLeave),document.removeEventListener("drop",this.handleDocumentDrop)}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!
504
363
 
505
364
  We're thrilled to have you on board. Thank you for joining us on this journey.
506
365
 
@@ -689,7 +548,7 @@ You'll receive a tracking number via email once your order ships (usually within
689
548
  *Questions about your order? Reply to this email or contact our support team.*
690
549
 
691
550
  Thank you for your business,
692
- The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("paste",this.handlePaste)}addDragListeners(){document.addEventListener("dragenter",this.handleDragEnter),document.addEventListener("dragleave",this.handleDocumentDragLeave),document.addEventListener("drop",this.handleDocumentDrop)}insertAtCursor(e,t){if(!this.bodyTextAreaRef.value)return;const i=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!i)return;const s=i.selectionStart,a=i.selectionEnd,n=i.value.substring(0,s)+e+i.value.substring(a);this.body=n,this.dispatchChange(),this.updateComplete.then(()=>{const o=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(o)if(o.focus(),t){const l=s+e.indexOf(t),h=l+t.length;o.setSelectionRange(l,h)}else o.setSelectionRange(s+e.length,s+e.length)})}wrapSelection(e,t,i){if(!this.bodyTextAreaRef.value)return;const s=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!s)return;const a=s.selectionStart,n=s.selectionEnd,o=s.value.substring(a,n),l=e+(o||i)+t,h=s.value.substring(0,a)+l+s.value.substring(n);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");p&&(p.focus(),o?p.setSelectionRange(a+l.length,a+l.length):p.setSelectionRange(a+e.length,a+e.length+i.length))})}render(){return c.html`
551
+ The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("paste",this.handlePaste)}addDragListeners(){document.addEventListener("dragenter",this.handleDragEnter),document.addEventListener("dragleave",this.handleDocumentDragLeave),document.addEventListener("drop",this.handleDocumentDrop)}insertAtCursor(e,t){if(!this.bodyTextAreaRef.value)return;const i=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!i)return;const s=i.selectionStart,a=i.selectionEnd,n=i.value.substring(0,s)+e+i.value.substring(a);this.body=n,this.dispatchChange(),this.updateComplete.then(()=>{const r=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(r)if(r.focus(),t){const l=s+e.indexOf(t),h=l+t.length;r.setSelectionRange(l,h)}else r.setSelectionRange(s+e.length,s+e.length)})}wrapSelection(e,t,i){if(!this.bodyTextAreaRef.value)return;const s=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!s)return;const a=s.selectionStart,n=s.selectionEnd,r=s.value.substring(a,n),l=e+(r||i)+t,h=s.value.substring(0,a)+l+s.value.substring(n);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");p&&(p.focus(),r?p.setSelectionRange(a+l.length,a+l.length):p.setSelectionRange(a+e.length,a+e.length+i.length))})}render(){return o.html`
693
552
  <schmancy-surface
694
553
  type="surface"
695
554
  rounded="all"
@@ -794,7 +653,7 @@ The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",t
794
653
  ?disabled=${this.disabled||this.isUploading}
795
654
  @click=${()=>this.imageInputRef.value?.click()}
796
655
  >
797
- ${d.when(this.isUploading,()=>c.html`<schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>`,()=>c.html`<schmancy-icon>image</schmancy-icon>`)}
656
+ ${d.when(this.isUploading,()=>o.html`<schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>`,()=>o.html`<schmancy-icon>image</schmancy-icon>`)}
798
657
  </schmancy-icon-button>
799
658
  <schmancy-icon-button
800
659
  size="sm"
@@ -839,7 +698,7 @@ Tab key inserts 2 spaces for better formatting."
839
698
  ></schmancy-textarea>
840
699
 
841
700
  <!-- Upload Progress Overlay -->
842
- ${d.when(this.isUploading,()=>c.html`
701
+ ${d.when(this.isUploading,()=>o.html`
843
702
  <div class="absolute top-3 right-3 z-10">
844
703
  <schmancy-surface type="container" rounded="all" class="p-2">
845
704
  <div class="flex items-center gap-2">
@@ -861,14 +720,14 @@ Tab key inserts 2 spaces for better formatting."
861
720
  </div>
862
721
 
863
722
  <!-- Attachments Display (if any) -->
864
- ${d.when(this.attachments.length>0,()=>c.html`
723
+ ${d.when(this.attachments.length>0,()=>o.html`
865
724
  <div class="space-y-2">
866
725
  <schmancy-typography type="label" token="sm" class="flex items-center gap-2">
867
726
  <schmancy-icon size="16px">attach_file</schmancy-icon>
868
727
  Attachments (${this.attachments.length})
869
728
  </schmancy-typography>
870
729
  <div class="flex flex-wrap gap-2">
871
- ${$.repeat(this.attachments,e=>e.id,e=>c.html`
730
+ ${S.repeat(this.attachments,e=>e.id,e=>o.html`
872
731
  <schmancy-chip class="text-xs">
873
732
  <span class="truncate max-w-32">${e.name}</span>
874
733
  <button
@@ -904,15 +763,15 @@ Tab key inserts 2 spaces for better formatting."
904
763
  </div>
905
764
  </schmancy-surface>
906
765
 
907
- `}},f([r.property({type:String})],exports.SchmancyEmailEditor.prototype,"subject",2),f([r.property({type:String})],exports.SchmancyEmailEditor.prototype,"body",2),f([r.property({type:Boolean})],exports.SchmancyEmailEditor.prototype,"disabled",2),f([r.property({type:Array})],exports.SchmancyEmailEditor.prototype,"attachments",2),f([r.property({type:Object})],exports.SchmancyEmailEditor.prototype,"config",2),f([r.property({type:Array})],exports.SchmancyEmailEditor.prototype,"templates",2),f([r.state()],exports.SchmancyEmailEditor.prototype,"dragOver",2),f([r.state()],exports.SchmancyEmailEditor.prototype,"isUploading",2),exports.SchmancyEmailEditor=f([r.customElement("schmancy-email-editor")],exports.SchmancyEmailEditor);var z=Object.defineProperty,P=Object.getOwnPropertyDescriptor,b=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?P(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&z(t,i,n),n};exports.SchmancyEmailViewer=class extends S.$LitElement(c.css`
766
+ `}},f([c.property({type:String})],exports.SchmancyEmailEditor.prototype,"subject",2),f([c.property({type:String})],exports.SchmancyEmailEditor.prototype,"body",2),f([c.property({type:Boolean})],exports.SchmancyEmailEditor.prototype,"disabled",2),f([c.property({type:Array})],exports.SchmancyEmailEditor.prototype,"attachments",2),f([c.property({type:Object})],exports.SchmancyEmailEditor.prototype,"config",2),f([c.property({type:Array})],exports.SchmancyEmailEditor.prototype,"templates",2),f([c.state()],exports.SchmancyEmailEditor.prototype,"dragOver",2),f([c.state()],exports.SchmancyEmailEditor.prototype,"isUploading",2),exports.SchmancyEmailEditor=f([c.customElement("schmancy-email-editor")],exports.SchmancyEmailEditor);var z=Object.defineProperty,M=Object.getOwnPropertyDescriptor,b=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?M(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&z(t,i,n),n};exports.SchmancyEmailViewer=class extends $.$LitElement(o.css`
908
767
  :host {
909
768
  display: block;
910
769
  }
911
- `){constructor(){super(...arguments),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,(t,i,s)=>{switch(i){case"columns-2":return this.parseColumnsLayout(s,2);case"columns-3":return this.parseColumnsLayout(s,3);case"sidebar-left":return this.parseSidebarLayout(s,"left");case"sidebar-right":return this.parseSidebarLayout(s,"right");case"image-row":return this.parseImageRowLayout(s);default:return s}})}parseColumnsLayout(e,t){const i=/<div class="column">([\s\S]*?)<\/div>/g,s=[];let a;for(;(a=i.exec(e))!==null;)s.push(a[1].trim());if(s.length===0)return e;const n=Math.floor(100/t),o="0 10px 0 0";let l="<tr>";for(let h=0;h<t&&h<s.length;h++)l+=`
912
- <td width="${n}%" style="padding: ${h===t-1?"0":o}; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">
770
+ `){constructor(){super(...arguments),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,(t,i,s)=>{switch(i){case"columns-2":return this.parseColumnsLayout(s,2);case"columns-3":return this.parseColumnsLayout(s,3);case"sidebar-left":return this.parseSidebarLayout(s,"left");case"sidebar-right":return this.parseSidebarLayout(s,"right");case"image-row":return this.parseImageRowLayout(s);default:return s}})}parseColumnsLayout(e,t){const i=/<div class="column">([\s\S]*?)<\/div>/g,s=[];let a;for(;(a=i.exec(e))!==null;)s.push(a[1].trim());if(s.length===0)return e;const n=Math.floor(100/t),r="0 10px 0 0";let l="<tr>";for(let h=0;h<t&&h<s.length;h++)l+=`
771
+ <td width="${n}%" style="padding: ${h===t-1?"0":r}; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">
913
772
  ${this.parseBasicMarkdown(s[h])}
914
773
  </td>`;for(let h=s.length;h<t;h++)l+=`
915
- <td width="${n}%" style="padding: ${h===t-1?"0":o}; vertical-align: top;">
774
+ <td width="${n}%" style="padding: ${h===t-1?"0":r}; vertical-align: top;">
916
775
  &nbsp;
917
776
  </td>`;return l+="</tr>",`
918
777
  <table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
@@ -926,13 +785,13 @@ Tab key inserts 2 spaces for better formatting."
926
785
  </td>`;return`
927
786
  <table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
928
787
  ${t==="left"?`<tr>${a}${n}</tr>`:`<tr>${n}${a.replace("0 16px 0 0","0 0 0 16px")}</tr>`}
929
- </table>`}parseImageRowLayout(e){const t=/<div class="image">([\s\S]*?)<\/div>/g,i=[];let s;for(;(s=t.exec(e))!==null;){const o=s[1].trim().match(/!\[([^\]]*)\]\(([^)]+)\)/);if(o){const[,l,h]=o;i.push(`<img src="${h}" alt="${l||"Image"}" style="display: block; max-width: 100%; height: auto;" border="0">`)}}if(i.length===0)return e;const a=Math.floor(100/i.length);let n="<tr>";return i.forEach((o,l)=>{const h=l===i.length-1;n+=`
788
+ </table>`}parseImageRowLayout(e){const t=/<div class="image">([\s\S]*?)<\/div>/g,i=[];let s;for(;(s=t.exec(e))!==null;){const r=s[1].trim().match(/!\[([^\]]*)\]\(([^)]+)\)/);if(r){const[,l,h]=r;i.push(`<img src="${h}" alt="${l||"Image"}" style="display: block; max-width: 100%; height: auto;" border="0">`)}}if(i.length===0)return e;const a=Math.floor(100/i.length);let n="<tr>";return i.forEach((r,l)=>{const h=l===i.length-1;n+=`
930
789
  <td width="${a}%" style="padding: ${h?"0":"0 8px 0 0"}; vertical-align: top; text-align: center;">
931
- ${o}
790
+ ${r}
932
791
  </td>`}),n+="</tr>",`
933
792
  <table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
934
793
  ${n}
935
- </table>`}parseImageAttributes(e){const t={};if(!e)return t;const i=e.match(/width=([^\s}]+)/);i&&(t.width=i[1]);const s=e.match(/height=([^\s}]+)/);return s&&(t.height=s[1]),e.includes("cover")&&(t.cover=!0),e.includes("contain")&&(t.contain=!0),t}generateImageStyles(e,t=!1){let i,s,a="display: block; margin: 8px 0; border: 0;";return e.width?e.width==="auto"?a+=t?" max-width: 100%; height: auto;":" height: auto;":e.width.endsWith("%")?(a+=` width: ${e.width}; max-width: 100%;`,e.height||(a+=" height: auto;")):e.width.endsWith("px")&&(i=e.width.replace("px",""),a+=" max-width: 100%;",e.height||(a+=" height: auto;")):a+=t?" width: 100%; max-width: 100%; height: auto;":" max-width: 100%; height: auto;",e.height&&(e.height==="auto"?a+=" height: auto;":e.height.endsWith("px")&&(s=e.height.replace("px",""),e.width||(a+=" max-width: 100%;"))),(e.cover||e.contain)&&(e.width||e.height||(a+=" width: 100%;")),{imgStyle:a,imgWidth:i,imgHeight:s}}parseBasicMarkdown(e){return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(t,i,s,a)=>{const n=this.parseImageAttributes(a),{imgStyle:o,imgWidth:l,imgHeight:h}=this.generateImageStyles(n,!0);let p=`<img src="${s}" alt="${i||"Image"}" style="${o}" border="0"`;return l&&(p+=` width="${l}"`),h&&(p+=` height="${h}"`),p+=">",p}).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,t=>{const i=/^\d+\./.test(t.replace(/<[^>]*>/g,""))?"ol":"ul";return`<${i} style="margin: 8px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${t}</${i}>`}).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,(i,s,a,n)=>{const o=this.parseImageAttributes(n),{imgStyle:l,imgWidth:h,imgHeight:p}=this.generateImageStyles(o,!1);let x=`<img src="${a}" alt="${s||"Image"}" style="${l}" border="0"`;return h&&(x+=` width="${h}"`),p&&(x+=` height="${p}"`),x+=">",`<table cellpadding="0" cellspacing="0" border="0" style="margin: 16px 0;"><tr><td>${x}</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,i=>{const s=/^\d+\./.test(i.replace(/<[^>]*>/g,"")),a=s?"ol":"ul";return`<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><${a} style="margin: 16px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${i}</${a}></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;">
794
+ </table>`}parseImageAttributes(e){const t={};if(!e)return t;const i=e.match(/width=([^\s}]+)/);i&&(t.width=i[1]);const s=e.match(/height=([^\s}]+)/);return s&&(t.height=s[1]),e.includes("cover")&&(t.cover=!0),e.includes("contain")&&(t.contain=!0),t}generateImageStyles(e,t=!1){let i,s,a="display: block; margin: 8px 0; border: 0;";return e.width?e.width==="auto"?a+=t?" max-width: 100%; height: auto;":" height: auto;":e.width.endsWith("%")?(a+=` width: ${e.width}; max-width: 100%;`,e.height||(a+=" height: auto;")):e.width.endsWith("px")&&(i=e.width.replace("px",""),a+=" max-width: 100%;",e.height||(a+=" height: auto;")):a+=t?" width: 100%; max-width: 100%; height: auto;":" max-width: 100%; height: auto;",e.height&&(e.height==="auto"?a+=" height: auto;":e.height.endsWith("px")&&(s=e.height.replace("px",""),e.width||(a+=" max-width: 100%;"))),(e.cover||e.contain)&&(e.width||e.height||(a+=" width: 100%;")),{imgStyle:a,imgWidth:i,imgHeight:s}}parseBasicMarkdown(e){return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(t,i,s,a)=>{const n=this.parseImageAttributes(a),{imgStyle:r,imgWidth:l,imgHeight:h}=this.generateImageStyles(n,!0);let p=`<img src="${s}" alt="${i||"Image"}" style="${r}" border="0"`;return l&&(p+=` width="${l}"`),h&&(p+=` height="${h}"`),p+=">",p}).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,t=>{const i=/^\d+\./.test(t.replace(/<[^>]*>/g,""))?"ol":"ul";return`<${i} style="margin: 8px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${t}</${i}>`}).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,(i,s,a,n)=>{const r=this.parseImageAttributes(n),{imgStyle:l,imgWidth:h,imgHeight:p}=this.generateImageStyles(r,!1);let v=`<img src="${a}" alt="${s||"Image"}" style="${l}" border="0"`;return h&&(v+=` width="${h}"`),p&&(v+=` height="${p}"`),v+=">",`<table cellpadding="0" cellspacing="0" border="0" style="margin: 16px 0;"><tr><td>${v}</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,i=>{const s=/^\d+\./.test(i.replace(/<[^>]*>/g,"")),a=s?"ol":"ul";return`<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><${a} style="margin: 16px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${i}</${a}></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;">
936
795
  <tr>
937
796
  <td style="padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">
938
797
  ${t}
@@ -944,7 +803,7 @@ Tab key inserts 2 spaces for better formatting."
944
803
 
945
804
  `).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,`
946
805
 
947
- `)}formatFileSize(e){if(e===0)return"0 Bytes";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["Bytes","KB","MB","GB"][t]}render(){const e=this.parseExtendedMarkdown(this.body),t=this.convertToPlainText(this.body),i=this.recipients[0]||this.toAddress;return c.html`
806
+ `)}formatFileSize(e){if(e===0)return"0 Bytes";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["Bytes","KB","MB","GB"][t]}render(){const e=this.parseExtendedMarkdown(this.body),t=this.convertToPlainText(this.body),i=this.recipients[0]||this.toAddress;return o.html`
948
807
  <schmancy-surface type="surface" rounded="all" class="h-full flex flex-col">
949
808
 
950
809
  <!-- Header Section -->
@@ -1027,7 +886,7 @@ Tab key inserts 2 spaces for better formatting."
1027
886
  </schmancy-typography>
1028
887
  </div>
1029
888
  <schmancy-typography type="body" token="sm" class="font-medium flex-1">
1030
- ${this.subject||c.html`<span class="italic text-surface-onVariant">(No subject)</span>`}
889
+ ${this.subject||o.html`<span class="italic text-surface-onVariant">(No subject)</span>`}
1031
890
  </schmancy-typography>
1032
891
  </div>
1033
892
  </div>
@@ -1035,17 +894,17 @@ Tab key inserts 2 spaces for better formatting."
1035
894
 
1036
895
  <!-- Email Body Content -->
1037
896
  <div class="flex-1 overflow-y-auto min-h-0">
1038
- ${d.when(this.body,()=>c.html`
1039
- ${d.when(this.viewMode==="html",()=>c.html`
897
+ ${d.when(this.body,()=>o.html`
898
+ ${d.when(this.viewMode==="html",()=>o.html`
1040
899
  <div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: system-ui, -apple-system, sans-serif; font-size: 14px;">
1041
900
  <div .innerHTML=${e}></div>
1042
901
  </div>
1043
- `,()=>c.html`
902
+ `,()=>o.html`
1044
903
  <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;">
1045
904
  ${t}
1046
905
  </div>
1047
906
  `)}
1048
- `,()=>c.html`
907
+ `,()=>o.html`
1049
908
  <!-- Empty State -->
1050
909
  <div class="flex-1 flex items-center justify-center p-8">
1051
910
  <div class="text-center space-y-3">
@@ -1062,7 +921,7 @@ Tab key inserts 2 spaces for better formatting."
1062
921
  </div>
1063
922
 
1064
923
  <!-- Attachments Section -->
1065
- ${d.when(this.attachments.length>0,()=>c.html`
924
+ ${d.when(this.attachments.length>0,()=>o.html`
1066
925
  <div class="flex-shrink-0 p-4 border-t border-outline-variant bg-surface-containerLowest">
1067
926
  <div class="space-y-3">
1068
927
  <!-- Attachments Header -->
@@ -1075,7 +934,7 @@ Tab key inserts 2 spaces for better formatting."
1075
934
 
1076
935
  <!-- Attachments List -->
1077
936
  <div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2">
1078
- ${$.repeat(this.attachments,s=>s.id,s=>c.html`
937
+ ${S.repeat(this.attachments,s=>s.id,s=>o.html`
1079
938
  <schmancy-surface type="container" rounded="all" class="p-3">
1080
939
  <div class="flex items-center gap-3">
1081
940
  <!-- File Icon -->
@@ -1103,7 +962,7 @@ Tab key inserts 2 spaces for better formatting."
1103
962
  </div>
1104
963
 
1105
964
  <!-- Preview Stats -->
1106
- ${d.when(this.body,()=>c.html`
965
+ ${d.when(this.body,()=>o.html`
1107
966
  <div class="flex-shrink-0">
1108
967
  <schmancy-surface type="container" rounded="all" class="p-3">
1109
968
  <div class="flex items-center justify-center gap-6 text-center">
@@ -1124,7 +983,7 @@ Tab key inserts 2 spaces for better formatting."
1124
983
  ${this.body.trim()?this.body.trim().split(/\s+/).length:0}
1125
984
  </schmancy-typography>
1126
985
  </div>
1127
- ${d.when(this.attachments.length>0,()=>c.html`
986
+ ${d.when(this.attachments.length>0,()=>o.html`
1128
987
  <div class="w-px h-8 bg-outline-variant"></div>
1129
988
  <div>
1130
989
  <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
@@ -1142,15 +1001,15 @@ Tab key inserts 2 spaces for better formatting."
1142
1001
 
1143
1002
  </div>
1144
1003
  </schmancy-surface>
1145
- `}},b([r.property({type:String})],exports.SchmancyEmailViewer.prototype,"subject",2),b([r.property({type:String})],exports.SchmancyEmailViewer.prototype,"body",2),b([r.property({type:Array})],exports.SchmancyEmailViewer.prototype,"attachments",2),b([r.property({type:Array})],exports.SchmancyEmailViewer.prototype,"recipients",2),b([r.property({type:String})],exports.SchmancyEmailViewer.prototype,"fromAddress",2),b([r.property({type:String})],exports.SchmancyEmailViewer.prototype,"toAddress",2),b([r.state()],exports.SchmancyEmailViewer.prototype,"viewMode",2),exports.SchmancyEmailViewer=b([r.customElement("schmancy-email-viewer")],exports.SchmancyEmailViewer);var M=Object.defineProperty,F=Object.getOwnPropertyDescriptor,y=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?F(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&M(t,i,n),n};exports.SchmancyEmailRecipients=class extends S.$LitElement(c.css`
1004
+ `}},b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"subject",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"body",2),b([c.property({type:Array})],exports.SchmancyEmailViewer.prototype,"attachments",2),b([c.property({type:Array})],exports.SchmancyEmailViewer.prototype,"recipients",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"fromAddress",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"toAddress",2),b([c.state()],exports.SchmancyEmailViewer.prototype,"viewMode",2),exports.SchmancyEmailViewer=b([c.customElement("schmancy-email-viewer")],exports.SchmancyEmailViewer);var P=Object.defineProperty,F=Object.getOwnPropertyDescriptor,y=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?F(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&P(t,i,n),n};exports.SchmancyEmailRecipients=class extends $.$LitElement(o.css`
1146
1005
  :host {
1147
1006
  display: block;
1148
1007
  height: 100%;
1149
1008
  }
1150
- `){constructor(){super(...arguments),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="minimized",this.fileInputRef=g.createRef(),this.handleEmailsImported=()=>{this.updateFilteredRecipients(),this.requestUpdate()},this.handleImportFromCSV=()=>{this.enableCsvImport&&this.fileInputRef.value?.click()},this.handleFileSelect=e=>{const t=e.target,i=t.files?.[0];i&&this.processCSVFile(i)},this.handleDrop=e=>{if(!this.enableDragDrop)return;e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files[0];t&&this.processCSVFile(t)},this.processCSVFile=e=>{if(!e.name.endsWith(".csv"))return void u.$notify.error("Please select a CSV file");const t=new FileReader;t.onload=i=>{const s=i.target?.result;try{const a=this.parseCSV(s);if(a.length===0)return void u.$notify.error("No valid email addresses found in CSV");this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:a,source:"csv"},bubbles:!0,composed:!0})),u.$notify.success(`Imported ${a.length} emails from CSV file`)}catch{u.$notify.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=()=>{const e=Array.isArray(this.recipients)?this.recipients:[];if(this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();this.filteredRecipients=e.filter(i=>i.toLowerCase().includes(t))}else this.filteredRecipients=[...e]},this.handleSearchInput=e=>{const 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(),this.addEventListener("emails-imported",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){const t=[];let i;i=this.csvParser?this.csvParser.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,delimiter:"",transformHeader:l=>l.trim()}):this.simpleCSVParse(e);const s=i.data,a=i.meta.fields||[];let n=a.find(l=>l.toLowerCase().includes("email"));if(!n)for(const l of a){const h=s[0]?.[l]?.toString();if(h&&this.isValidEmail(h)){n=l;break}}if(!n)throw new Error("No email column found in CSV");const o=new Set;for(const l of s){const h=l[n]?.toString();if(!h)continue;const p=h.toLowerCase().trim();this.isValidEmail(p)&&!o.has(p)&&(o.add(p),t.push(p))}return t}simpleCSVParse(e){const t=e.split(`
1151
- `).filter(a=>a.trim());if(t.length===0)return{data:[],meta:{}};const i=t[0].split(",").map(a=>a.trim().replace(/"/g,"")),s=[];for(let a=1;a<t.length;a++){const n=t[a].split(",").map(l=>l.trim().replace(/"/g,"")),o={};i.forEach((l,h)=>{o[l]=n[h]||""}),s.push(o)}return{data:s,meta:{fields:i}}}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())}addRecipients(e){if(!e.length)return;const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])],this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.requestUpdate()}showBoat(){this.boatState="minimized"}hideBoat(){this.boatState="hidden"}expandBoat(){this.boatState="expanded"}toggleBoat(){this.boatState=this.boatState==="hidden"?"minimized":this.boatState==="minimized"?"expanded":"hidden"}render(){return this.renderBoatLayout()}renderBoatLayout(){return c.html`
1009
+ `){constructor(){super(...arguments),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="minimized",this.fileInputRef=g.createRef(),this.handleEmailsImported=()=>{this.updateFilteredRecipients(),this.requestUpdate()},this.handleImportFromCSV=()=>{this.enableCsvImport&&this.fileInputRef.value?.click()},this.handleFileSelect=e=>{const t=e.target,i=t.files?.[0];i&&this.processCSVFile(i)},this.handleDrop=e=>{if(!this.enableDragDrop)return;e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files[0];t&&this.processCSVFile(t)},this.processCSVFile=e=>{if(!e.name.endsWith(".csv"))return void u.$notify.error("Please select a CSV file");const t=new FileReader;t.onload=i=>{const s=i.target?.result;try{const a=this.parseCSV(s);if(a.length===0)return void u.$notify.error("No valid email addresses found in CSV");this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:a,source:"csv"},bubbles:!0,composed:!0})),u.$notify.success(`Imported ${a.length} emails from CSV file`)}catch{u.$notify.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=()=>{const e=Array.isArray(this.recipients)?this.recipients:[];if(this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();this.filteredRecipients=e.filter(i=>i.toLowerCase().includes(t))}else this.filteredRecipients=[...e]},this.handleSearchInput=e=>{const 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(),this.addEventListener("emails-imported",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){const t=[];let i;i=this.csvParser?this.csvParser.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,delimiter:"",transformHeader:l=>l.trim()}):this.simpleCSVParse(e);const s=i.data,a=i.meta.fields||[];let n=a.find(l=>l.toLowerCase().includes("email"));if(!n)for(const l of a){const h=s[0]?.[l]?.toString();if(h&&this.isValidEmail(h)){n=l;break}}if(!n)throw new Error("No email column found in CSV");const r=new Set;for(const l of s){const h=l[n]?.toString();if(!h)continue;const p=h.toLowerCase().trim();this.isValidEmail(p)&&!r.has(p)&&(r.add(p),t.push(p))}return t}simpleCSVParse(e){const t=e.split(`
1010
+ `).filter(a=>a.trim());if(t.length===0)return{data:[],meta:{}};const i=t[0].split(",").map(a=>a.trim().replace(/"/g,"")),s=[];for(let a=1;a<t.length;a++){const n=t[a].split(",").map(l=>l.trim().replace(/"/g,"")),r={};i.forEach((l,h)=>{r[l]=n[h]||""}),s.push(r)}return{data:s,meta:{fields:i}}}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())}addRecipients(e){if(!e.length)return;const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])],this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.requestUpdate()}showBoat(){this.boatState="minimized"}hideBoat(){this.boatState="hidden"}expandBoat(){this.boatState="expanded"}toggleBoat(){this.boatState=this.boatState==="hidden"?"minimized":this.boatState==="minimized"?"expanded":"hidden"}render(){return this.renderBoatLayout()}renderBoatLayout(){return o.html`
1152
1011
  <!-- Hidden file input for CSV import -->
1153
- ${d.when(this.enableCsvImport,()=>c.html`
1012
+ ${d.when(this.enableCsvImport,()=>o.html`
1154
1013
  <input
1155
1014
  type="file"
1156
1015
  accept=".csv"
@@ -1171,7 +1030,7 @@ Tab key inserts 2 spaces for better formatting."
1171
1030
  <schmancy-typography type="title" token="md" class="font-semibold">
1172
1031
  ${this.title}
1173
1032
  </schmancy-typography>
1174
- ${d.when(this.recipients.length>0,()=>c.html`
1033
+ ${d.when(this.recipients.length>0,()=>o.html`
1175
1034
  <schmancy-badge>
1176
1035
  ${this.localSelectedRecipients.size}/${this.recipients.length}
1177
1036
  </schmancy-badge>
@@ -1184,7 +1043,7 @@ Tab key inserts 2 spaces for better formatting."
1184
1043
  ${this.renderBoatContent()}
1185
1044
  </div>
1186
1045
  </schmancy-boat>
1187
- `}renderBoatContent(){return c.html`
1046
+ `}renderBoatContent(){return o.html`
1188
1047
  <!-- Search Bar and CSV Import on one line -->
1189
1048
  <div class="p-4 flex gap-3">
1190
1049
  <schmancy-input
@@ -1194,7 +1053,7 @@ Tab key inserts 2 spaces for better formatting."
1194
1053
  @input=${this.handleSearchInput}
1195
1054
  class="flex-1"
1196
1055
  >
1197
- ${d.when(this.searchQuery,()=>c.html`
1056
+ ${d.when(this.searchQuery,()=>o.html`
1198
1057
  <schmancy-button
1199
1058
  slot="suffix"
1200
1059
  variant="text"
@@ -1205,7 +1064,7 @@ Tab key inserts 2 spaces for better formatting."
1205
1064
  `)}
1206
1065
  </schmancy-input>
1207
1066
 
1208
- ${d.when(this.enableCsvImport,()=>c.html`
1067
+ ${d.when(this.enableCsvImport,()=>o.html`
1209
1068
  <schmancy-button
1210
1069
  variant="outlined"
1211
1070
  @click=${this.handleImportFromCSV}
@@ -1217,7 +1076,7 @@ Tab key inserts 2 spaces for better formatting."
1217
1076
  `)}
1218
1077
  </div>
1219
1078
 
1220
- ${d.when(this.recipients.length>0,()=>c.html`
1079
+ ${d.when(this.recipients.length>0,()=>o.html`
1221
1080
  <!-- Bulk Actions -->
1222
1081
  <div class="px-4 pb-4">
1223
1082
  <div class="flex items-center gap-3">
@@ -1250,9 +1109,9 @@ Tab key inserts 2 spaces for better formatting."
1250
1109
 
1251
1110
  <!-- Recipients List -->
1252
1111
  <div class="flex-1 overflow-y-auto px-4 pb-4">
1253
- ${d.when(this.filteredRecipients.length>0,()=>c.html`
1112
+ ${d.when(this.filteredRecipients.length>0,()=>o.html`
1254
1113
  <div class="flex flex-wrap gap-3">
1255
- ${$.repeat(this.filteredRecipients,e=>e,e=>c.html`
1114
+ ${S.repeat(this.filteredRecipients,e=>e,e=>o.html`
1256
1115
  <schmancy-button
1257
1116
  variant=${this.localSelectedRecipients.has(e)?"filled":"outlined"}
1258
1117
  @click=${t=>{t.stopPropagation(),t.preventDefault(),this.toggleRecipientSelection(e)}}
@@ -1267,7 +1126,7 @@ Tab key inserts 2 spaces for better formatting."
1267
1126
  </schmancy-button>
1268
1127
  `)}
1269
1128
  </div>
1270
- `,()=>c.html`
1129
+ `,()=>o.html`
1271
1130
  <div class="text-center py-8">
1272
1131
  <schmancy-icon size="32px" class="opacity-50 mb-2">search_off</schmancy-icon>
1273
1132
  <schmancy-typography type="body" token="sm" class="mb-2">
@@ -1279,7 +1138,7 @@ Tab key inserts 2 spaces for better formatting."
1279
1138
  </div>
1280
1139
  `)}
1281
1140
  </div>
1282
- `,()=>c.html`
1141
+ `,()=>o.html`
1283
1142
  <!-- Empty State -->
1284
1143
  <div class="flex-1 flex items-center justify-center p-8">
1285
1144
  <div class="text-center space-y-4">
@@ -1295,7 +1154,7 @@ Tab key inserts 2 spaces for better formatting."
1295
1154
  `)}
1296
1155
 
1297
1156
  <!-- Drag Overlay -->
1298
- ${d.when(this.dragOver&&this.enableDragDrop,()=>c.html`
1157
+ ${d.when(this.dragOver&&this.enableDragDrop,()=>o.html`
1299
1158
  <div
1300
1159
  class="absolute inset-4 flex items-center justify-center border-2 border-dashed border-primary rounded-lg z-10"
1301
1160
  @dragover=${e=>{e.preventDefault(),this.dragOver=!0}}
@@ -1310,5 +1169,5 @@ Tab key inserts 2 spaces for better formatting."
1310
1169
  </schmancy-surface>
1311
1170
  </div>
1312
1171
  `)}
1313
- `}},y([r.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"disabled",2),y([r.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"recipients",2),y([r.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"selectedRecipients",2),y([r.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableCsvImport",2),y([r.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableDragDrop",2),y([r.property({type:String})],exports.SchmancyEmailRecipients.prototype,"title",2),y([r.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateTitle",2),y([r.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateMessage",2),y([r.property({type:Object})],exports.SchmancyEmailRecipients.prototype,"csvParser",2),y([r.state()],exports.SchmancyEmailRecipients.prototype,"dragOver",2),y([r.state()],exports.SchmancyEmailRecipients.prototype,"localSelectedRecipients",2),y([r.state()],exports.SchmancyEmailRecipients.prototype,"searchQuery",2),y([r.state()],exports.SchmancyEmailRecipients.prototype,"filteredRecipients",2),y([r.state()],exports.SchmancyEmailRecipients.prototype,"boatState",2),exports.SchmancyEmailRecipients=y([r.customElement("schmancy-email-recipients")],exports.SchmancyEmailRecipients);
1314
- //# sourceMappingURL=email-recipients-B9F9tbTi.cjs.map
1172
+ `}},y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"disabled",2),y([c.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"recipients",2),y([c.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"selectedRecipients",2),y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableCsvImport",2),y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableDragDrop",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"title",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateTitle",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateMessage",2),y([c.property({type:Object})],exports.SchmancyEmailRecipients.prototype,"csvParser",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"dragOver",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"localSelectedRecipients",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"searchQuery",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"filteredRecipients",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"boatState",2),exports.SchmancyEmailRecipients=y([c.customElement("schmancy-email-recipients")],exports.SchmancyEmailRecipients);
1173
+ //# sourceMappingURL=email-recipients-CbZNnzoj.cjs.map