@mhmo91/schmancy 0.8.6 → 0.9.3

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 (1426) hide show
  1. package/README.md +54 -1
  2. package/ai/INDEX.md +321 -0
  3. package/ai/animation.md +64 -0
  4. package/ai/area.md +170 -237
  5. package/ai/audio.md +50 -222
  6. package/ai/autocomplete.md +44 -162
  7. package/ai/avatar.md +47 -178
  8. package/ai/badge.md +41 -108
  9. package/ai/boat.md +35 -41
  10. package/ai/busy.md +25 -184
  11. package/ai/button.md +52 -150
  12. package/ai/card.md +42 -215
  13. package/ai/charts.md +93 -0
  14. package/ai/checkbox.md +32 -135
  15. package/ai/chips.md +73 -383
  16. package/ai/code-highlight.md +33 -226
  17. package/ai/connectivity.md +36 -0
  18. package/ai/content-drawer.md +65 -232
  19. package/ai/date-range-inline.md +40 -258
  20. package/ai/date-range.md +43 -198
  21. package/ai/delay.md +31 -139
  22. package/ai/details.md +48 -453
  23. package/ai/dialog.md +55 -164
  24. package/ai/directives.md +258 -405
  25. package/ai/discovery.md +67 -0
  26. package/ai/divider.md +15 -137
  27. package/ai/dropdown.md +44 -235
  28. package/ai/expand.md +63 -0
  29. package/ai/extra.md +59 -0
  30. package/ai/float.md +14 -0
  31. package/ai/form.md +41 -137
  32. package/ai/icons.md +31 -235
  33. package/ai/iframe.md +44 -0
  34. package/ai/input.md +50 -210
  35. package/ai/json.md +33 -0
  36. package/ai/layout.md +45 -169
  37. package/ai/lightbox.md +25 -370
  38. package/ai/list.md +51 -130
  39. package/ai/mailbox.md +80 -508
  40. package/ai/map.md +47 -226
  41. package/ai/menu.md +25 -134
  42. package/ai/mixins.md +201 -0
  43. package/ai/nav-drawer.md +30 -184
  44. package/ai/navigation-bar.md +27 -184
  45. package/ai/navigation-rail.md +62 -630
  46. package/ai/notification.md +49 -183
  47. package/ai/option.md +30 -160
  48. package/ai/page.md +42 -0
  49. package/ai/progress.md +26 -65
  50. package/ai/qr-scanner.md +51 -0
  51. package/ai/radio-group.md +45 -189
  52. package/ai/range.md +47 -0
  53. package/ai/rxjs-utils.md +60 -0
  54. package/ai/select.md +49 -209
  55. package/ai/sheet.md +74 -506
  56. package/ai/slider.md +30 -214
  57. package/ai/steps.md +30 -392
  58. package/ai/store.md +173 -251
  59. package/ai/surface.md +58 -245
  60. package/ai/table.md +56 -330
  61. package/ai/tabs.md +31 -176
  62. package/ai/teleport.md +35 -177
  63. package/ai/textarea.md +48 -232
  64. package/ai/theme-button.md +16 -163
  65. package/ai/theme.md +40 -1089
  66. package/ai/tooltip.md +35 -146
  67. package/ai/tree.md +45 -271
  68. package/ai/typewriter.md +28 -317
  69. package/ai/typography.md +43 -296
  70. package/ai/utils.md +95 -0
  71. package/ai/window.md +67 -0
  72. package/custom-elements.json +10955 -0
  73. package/dist/ai/INDEX.md +321 -0
  74. package/dist/ai/animation.md +64 -0
  75. package/dist/ai/area.md +170 -237
  76. package/dist/ai/audio.md +50 -222
  77. package/dist/ai/autocomplete.md +44 -162
  78. package/dist/ai/avatar.md +47 -178
  79. package/dist/ai/badge.md +41 -108
  80. package/dist/ai/boat.md +35 -41
  81. package/dist/ai/busy.md +25 -184
  82. package/dist/ai/button.md +52 -150
  83. package/dist/ai/card.md +42 -215
  84. package/dist/ai/charts.md +93 -0
  85. package/dist/ai/checkbox.md +32 -135
  86. package/dist/ai/chips.md +73 -383
  87. package/dist/ai/code-highlight.md +33 -226
  88. package/dist/ai/connectivity.md +36 -0
  89. package/dist/ai/content-drawer.md +65 -232
  90. package/dist/ai/date-range-inline.md +40 -258
  91. package/dist/ai/date-range.md +43 -198
  92. package/dist/ai/delay.md +31 -139
  93. package/dist/ai/details.md +48 -453
  94. package/dist/ai/dialog.md +55 -164
  95. package/dist/ai/directives.md +258 -405
  96. package/dist/ai/discovery.md +67 -0
  97. package/dist/ai/divider.md +15 -137
  98. package/dist/ai/dropdown.md +44 -235
  99. package/dist/ai/expand.md +63 -0
  100. package/dist/ai/extra.md +59 -0
  101. package/dist/ai/float.md +14 -0
  102. package/dist/ai/form.md +41 -137
  103. package/dist/ai/icons.md +31 -235
  104. package/dist/ai/iframe.md +44 -0
  105. package/dist/ai/input.md +50 -210
  106. package/dist/ai/json.md +33 -0
  107. package/dist/ai/layout.md +45 -169
  108. package/dist/ai/lightbox.md +25 -370
  109. package/dist/ai/list.md +51 -130
  110. package/dist/ai/mailbox.md +80 -508
  111. package/dist/ai/map.md +47 -226
  112. package/dist/ai/menu.md +25 -134
  113. package/dist/ai/mixins.md +201 -0
  114. package/dist/ai/nav-drawer.md +30 -184
  115. package/dist/ai/navigation-bar.md +27 -184
  116. package/dist/ai/navigation-rail.md +62 -630
  117. package/dist/ai/notification.md +49 -183
  118. package/dist/ai/option.md +30 -160
  119. package/dist/ai/page.md +42 -0
  120. package/dist/ai/progress.md +26 -65
  121. package/dist/ai/qr-scanner.md +51 -0
  122. package/dist/ai/radio-group.md +45 -189
  123. package/dist/ai/range.md +47 -0
  124. package/dist/ai/rxjs-utils.md +60 -0
  125. package/dist/ai/select.md +49 -209
  126. package/dist/ai/sheet.md +74 -506
  127. package/dist/ai/slider.md +30 -214
  128. package/dist/ai/steps.md +30 -392
  129. package/dist/ai/store.md +173 -251
  130. package/dist/ai/surface.md +58 -245
  131. package/dist/ai/table.md +56 -330
  132. package/dist/ai/tabs.md +31 -176
  133. package/dist/ai/teleport.md +35 -177
  134. package/dist/ai/textarea.md +48 -232
  135. package/dist/ai/theme-button.md +16 -163
  136. package/dist/ai/theme.md +40 -1089
  137. package/dist/ai/tooltip.md +35 -146
  138. package/dist/ai/tree.md +45 -271
  139. package/dist/ai/typewriter.md +28 -317
  140. package/dist/ai/typography.md +43 -296
  141. package/dist/ai/utils.md +95 -0
  142. package/dist/ai/window.md +67 -0
  143. package/dist/animation-BK-8BwY8.js +173 -0
  144. package/dist/animation-BK-8BwY8.js.map +1 -0
  145. package/dist/animation-CO_Csq84.cjs +16 -0
  146. package/dist/animation-CO_Csq84.cjs.map +1 -0
  147. package/dist/area-CC8fUnra.js +590 -0
  148. package/dist/area-CC8fUnra.js.map +1 -0
  149. package/dist/area-wnWUAHEn.cjs +12 -0
  150. package/dist/area-wnWUAHEn.cjs.map +1 -0
  151. package/dist/area.cjs +1 -2
  152. package/dist/area.js +2 -29
  153. package/dist/audio-DtYYgzYD.cjs +1 -0
  154. package/dist/audio-DtYYgzYD.cjs.map +1 -0
  155. package/dist/audio-kz8UgPTO.js +335 -0
  156. package/dist/audio-kz8UgPTO.js.map +1 -0
  157. package/dist/audio.cjs +1 -2
  158. package/dist/audio.js +3 -9
  159. package/dist/autocomplete-B2Z3WK_7.cjs +111 -0
  160. package/dist/autocomplete-B2Z3WK_7.cjs.map +1 -0
  161. package/dist/autocomplete-CJ7YgtKN.js +378 -0
  162. package/dist/autocomplete-CJ7YgtKN.js.map +1 -0
  163. package/dist/autocomplete.cjs +1 -2
  164. package/dist/autocomplete.js +1 -2
  165. package/dist/badge.cjs +1 -2
  166. package/dist/badge.js +2 -6
  167. package/dist/boat-B57_4TzJ.cjs +80 -0
  168. package/dist/boat-B57_4TzJ.cjs.map +1 -0
  169. package/dist/boat-C9eU6NO-.js +347 -0
  170. package/dist/boat-C9eU6NO-.js.map +1 -0
  171. package/dist/boat.cjs +1 -2
  172. package/dist/boat.js +2 -5
  173. package/dist/busy--6oimtop.cjs +134 -0
  174. package/dist/busy--6oimtop.cjs.map +1 -0
  175. package/dist/busy-CGZXy0h-.js +167 -0
  176. package/dist/busy-CGZXy0h-.js.map +1 -0
  177. package/dist/busy.cjs +1 -2
  178. package/dist/busy.js +1 -2
  179. package/dist/button.cjs +113 -2
  180. package/dist/button.cjs.map +1 -1
  181. package/dist/button.js +398 -5
  182. package/dist/button.js.map +1 -1
  183. package/dist/card-BGJ0Hb1O.cjs +177 -0
  184. package/dist/card-BGJ0Hb1O.cjs.map +1 -0
  185. package/dist/card-C-ee-l5O.js +284 -0
  186. package/dist/card-C-ee-l5O.js.map +1 -0
  187. package/dist/card.cjs +1 -2
  188. package/dist/card.js +1 -2
  189. package/dist/charts.cjs +112 -2
  190. package/dist/charts.cjs.map +1 -1
  191. package/dist/charts.js +368 -8
  192. package/dist/charts.js.map +1 -1
  193. package/dist/checkbox-DuYaKoDZ.cjs +39 -0
  194. package/dist/checkbox-DuYaKoDZ.cjs.map +1 -0
  195. package/dist/checkbox-FRcorDrD.js +610 -0
  196. package/dist/checkbox-FRcorDrD.js.map +1 -0
  197. package/dist/checkbox.cjs +1 -2
  198. package/dist/checkbox.js +2 -5
  199. package/dist/chips-BpA0A-qr.cjs +253 -0
  200. package/dist/chips-BpA0A-qr.cjs.map +1 -0
  201. package/dist/chips-CyzNbKJD.js +645 -0
  202. package/dist/chips-CyzNbKJD.js.map +1 -0
  203. package/dist/chips.cjs +1 -2
  204. package/dist/chips.js +3 -10
  205. package/dist/chunk-BCfY8kxB.cjs +1 -0
  206. package/dist/chunk-C_1VqBVD.js +11 -0
  207. package/dist/code-highlight-C7O9ltXm.js +290 -0
  208. package/dist/code-highlight-C7O9ltXm.js.map +1 -0
  209. package/dist/code-highlight-DsBdSQBG.cjs +190 -0
  210. package/dist/code-highlight-DsBdSQBG.cjs.map +1 -0
  211. package/dist/code-highlight.cjs +1 -2
  212. package/dist/code-highlight.js +2 -7
  213. package/dist/components-CkMvOiTR.js +730 -0
  214. package/dist/components-CkMvOiTR.js.map +1 -0
  215. package/dist/components-dDI3xeIf.cjs +73 -0
  216. package/dist/components-dDI3xeIf.cjs.map +1 -0
  217. package/dist/components.cjs +1 -2
  218. package/dist/components.js +2 -5
  219. package/dist/connectivity.cjs +59 -0
  220. package/dist/connectivity.cjs.map +1 -0
  221. package/dist/connectivity.js +86 -0
  222. package/dist/connectivity.js.map +1 -0
  223. package/dist/content-drawer.cjs +1 -2
  224. package/dist/content-drawer.js +2 -13
  225. package/dist/cursor-glow-Ah7VXSj7.js +46 -0
  226. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -0
  227. package/dist/cursor-glow-DtSy_PJd.cjs +1 -0
  228. package/dist/cursor-glow-DtSy_PJd.cjs.map +1 -0
  229. package/dist/date-range-70zhLUKE.cjs +131 -0
  230. package/dist/date-range-70zhLUKE.cjs.map +1 -0
  231. package/dist/date-range-BrN_Bs6_.js +946 -0
  232. package/dist/date-range-BrN_Bs6_.js.map +1 -0
  233. package/dist/date-range-inline-CPzD-tIv.cjs +43 -0
  234. package/dist/date-range-inline-CPzD-tIv.cjs.map +1 -0
  235. package/dist/date-range-inline-Cp294DxR.js +267 -0
  236. package/dist/date-range-inline-Cp294DxR.js.map +1 -0
  237. package/dist/date-range-inline.cjs +1 -2
  238. package/dist/date-range-inline.js +2 -5
  239. package/dist/date-range.cjs +1 -2
  240. package/dist/date-range.js +2 -6
  241. package/dist/delay-COcAkBqB.cjs +9 -0
  242. package/dist/delay-COcAkBqB.cjs.map +1 -0
  243. package/dist/delay-IV0Swce2.js +346 -0
  244. package/dist/delay-IV0Swce2.js.map +1 -0
  245. package/dist/delay.cjs +1 -2
  246. package/dist/delay.js +2 -6
  247. package/dist/details-CuKmr3Qw.js +293 -0
  248. package/dist/details-CuKmr3Qw.js.map +1 -0
  249. package/dist/details-DgWkPqmt.cjs +168 -0
  250. package/dist/details-DgWkPqmt.cjs.map +1 -0
  251. package/dist/details.cjs +1 -2
  252. package/dist/details.js +2 -5
  253. package/dist/dialog-service-NZEvyEK-.js +193 -0
  254. package/dist/dialog-service-NZEvyEK-.js.map +1 -0
  255. package/dist/dialog-service-VnW4gkmE.cjs +1 -0
  256. package/dist/dialog-service-VnW4gkmE.cjs.map +1 -0
  257. package/dist/dialog.cjs +82 -2
  258. package/dist/dialog.cjs.map +1 -1
  259. package/dist/dialog.js +396 -9
  260. package/dist/dialog.js.map +1 -1
  261. package/dist/directives.cjs +108 -2
  262. package/dist/directives.cjs.map +1 -1
  263. package/dist/directives.js +1362 -14
  264. package/dist/directives.js.map +1 -1
  265. package/dist/discovery.cjs +1 -2
  266. package/dist/discovery.cjs.map +1 -1
  267. package/dist/discovery.js +61 -6
  268. package/dist/discovery.js.map +1 -1
  269. package/dist/divider-BWoUbfgZ.js +87 -0
  270. package/dist/divider-BWoUbfgZ.js.map +1 -0
  271. package/dist/divider-BghtrMbn.cjs +57 -0
  272. package/dist/divider-BghtrMbn.cjs.map +1 -0
  273. package/dist/divider.cjs +1 -2
  274. package/dist/divider.js +1 -2
  275. package/dist/dropdown.cjs +57 -2
  276. package/dist/dropdown.cjs.map +1 -1
  277. package/dist/dropdown.js +160 -5
  278. package/dist/dropdown.js.map +1 -1
  279. package/dist/expand-CJU9m4ga.js +336 -0
  280. package/dist/expand-CJU9m4ga.js.map +1 -0
  281. package/dist/expand-XyDE5SsO.cjs +141 -0
  282. package/dist/expand-XyDE5SsO.cjs.map +1 -0
  283. package/dist/expand.cjs +1 -0
  284. package/dist/expand.js +2 -0
  285. package/dist/extra-BxXFmW1w.js +3435 -0
  286. package/dist/extra-BxXFmW1w.js.map +1 -0
  287. package/dist/extra-CsrRKKqE.cjs +31 -0
  288. package/dist/extra-CsrRKKqE.cjs.map +1 -0
  289. package/dist/extra.cjs +1 -2
  290. package/dist/extra.js +2 -6
  291. package/dist/float-BD86t_NU.js +5 -0
  292. package/dist/float-BD86t_NU.js.map +1 -0
  293. package/dist/float-DBv1FINW.cjs +1 -0
  294. package/dist/float-DBv1FINW.cjs.map +1 -0
  295. package/dist/float.cjs +1 -0
  296. package/dist/float.js +2 -0
  297. package/dist/flow-Bbwn6dRN.cjs +1 -0
  298. package/dist/flow-Bbwn6dRN.cjs.map +1 -0
  299. package/dist/flow-CUj0fDT_.js +386 -0
  300. package/dist/flow-CUj0fDT_.js.map +1 -0
  301. package/dist/form-Cp5-I_ZV.js +270 -0
  302. package/dist/form-Cp5-I_ZV.js.map +1 -0
  303. package/dist/form-D0bIeDWT.cjs +1 -0
  304. package/dist/form-D0bIeDWT.cjs.map +1 -0
  305. package/dist/form.cjs +1 -2
  306. package/dist/form.js +1 -2
  307. package/dist/hashContent-DYM21p6t.js +6 -0
  308. package/dist/hashContent-DYM21p6t.js.map +1 -0
  309. package/dist/hashContent-DaeGmY-p.cjs +1 -0
  310. package/dist/hashContent-DaeGmY-p.cjs.map +1 -0
  311. package/dist/icons-BpU0_l92.js +161 -0
  312. package/dist/icons-BpU0_l92.js.map +1 -0
  313. package/dist/icons-D8w_20mO.cjs +52 -0
  314. package/dist/icons-D8w_20mO.cjs.map +1 -0
  315. package/dist/icons.cjs +1 -2
  316. package/dist/icons.js +1 -2
  317. package/dist/iframe-BjwxA2Pg.cjs +24 -0
  318. package/dist/iframe-BjwxA2Pg.cjs.map +1 -0
  319. package/dist/iframe-tY1GY5g1.js +44 -0
  320. package/dist/iframe-tY1GY5g1.js.map +1 -0
  321. package/dist/iframe.cjs +1 -0
  322. package/dist/iframe.js +2 -0
  323. package/dist/index.cjs +1 -2
  324. package/dist/index.js +69 -285
  325. package/dist/input-BnfTpRN9.js +364 -0
  326. package/dist/input-BnfTpRN9.js.map +1 -0
  327. package/dist/input-BwxwognS.cjs +51 -0
  328. package/dist/input-BwxwognS.cjs.map +1 -0
  329. package/dist/input-chip-CkM2aYmO.js +301 -0
  330. package/dist/input-chip-CkM2aYmO.js.map +1 -0
  331. package/dist/input-chip-MjOwX5EY.cjs +146 -0
  332. package/dist/input-chip-MjOwX5EY.cjs.map +1 -0
  333. package/dist/input.cjs +1 -2
  334. package/dist/input.js +2 -6
  335. package/dist/intersection-BPLpqYEd.js +12 -0
  336. package/dist/intersection-BPLpqYEd.js.map +1 -0
  337. package/dist/intersection-CZpaIHeT.cjs +1 -0
  338. package/dist/intersection-CZpaIHeT.cjs.map +1 -0
  339. package/dist/json.cjs +11 -2
  340. package/dist/json.cjs.map +1 -1
  341. package/dist/json.js +40 -4
  342. package/dist/json.js.map +1 -1
  343. package/dist/layout-4C-6_cre.cjs +1 -0
  344. package/dist/layout-4C-6_cre.cjs.map +1 -0
  345. package/dist/layout-BV0EeyUS.cjs +17 -0
  346. package/dist/layout-BV0EeyUS.cjs.map +1 -0
  347. package/dist/layout-CJSlZlFL.js +267 -0
  348. package/dist/layout-CJSlZlFL.js.map +1 -0
  349. package/dist/layout-yxSlLybo.js +94 -0
  350. package/dist/layout-yxSlLybo.js.map +1 -0
  351. package/dist/layout.cjs +1 -2
  352. package/dist/layout.js +3 -9
  353. package/dist/lightbox-CpNMZHZW.cjs +202 -0
  354. package/dist/lightbox-CpNMZHZW.cjs.map +1 -0
  355. package/dist/lightbox-groqGmJH.js +678 -0
  356. package/dist/lightbox-groqGmJH.js.map +1 -0
  357. package/dist/lightbox.cjs +1 -2
  358. package/dist/lightbox.js +2 -8
  359. package/dist/list-CyHd0Zc2.cjs +40 -0
  360. package/dist/list-CyHd0Zc2.cjs.map +1 -0
  361. package/dist/list-DzkqT_r-.js +105 -0
  362. package/dist/list-DzkqT_r-.js.map +1 -0
  363. package/dist/list.cjs +1 -2
  364. package/dist/list.js +2 -7
  365. package/dist/litElement.mixin-BG6_-nYX.cjs +1 -0
  366. package/dist/litElement.mixin-BG6_-nYX.cjs.map +1 -0
  367. package/dist/litElement.mixin-Dm-4L8zL.js +12 -0
  368. package/dist/litElement.mixin-Dm-4L8zL.js.map +1 -0
  369. package/dist/magnetic-BZGFxAWG.js +47 -0
  370. package/dist/magnetic-BZGFxAWG.js.map +1 -0
  371. package/dist/magnetic-Dux4QwO4.cjs +1 -0
  372. package/dist/magnetic-Dux4QwO4.cjs.map +1 -0
  373. package/dist/mailbox-BcqnXYVP.js +1584 -0
  374. package/dist/mailbox-BcqnXYVP.js.map +1 -0
  375. package/dist/mailbox-C5eYTd7p.cjs +1142 -0
  376. package/dist/mailbox-C5eYTd7p.cjs.map +1 -0
  377. package/dist/mailbox.cjs +1 -2
  378. package/dist/mailbox.js +2 -9
  379. package/dist/map-BncheFt5.cjs +80 -0
  380. package/dist/map-BncheFt5.cjs.map +1 -0
  381. package/dist/map-C0o1PgLE.js +205 -0
  382. package/dist/map-C0o1PgLE.js.map +1 -0
  383. package/dist/map.cjs +1 -2
  384. package/dist/map.js +2 -5
  385. package/dist/menu-uwqlQbLd.js +51 -0
  386. package/dist/menu-uwqlQbLd.js.map +1 -0
  387. package/dist/menu-yXzwJZFf.cjs +23 -0
  388. package/dist/menu-yXzwJZFf.cjs.map +1 -0
  389. package/dist/menu.cjs +1 -2
  390. package/dist/menu.js +1 -2
  391. package/dist/mixins.cjs +1 -2
  392. package/dist/mixins.cjs.map +1 -1
  393. package/dist/mixins.js +59 -12
  394. package/dist/mixins.js.map +1 -1
  395. package/dist/nav-drawer.cjs +1 -2
  396. package/dist/nav-drawer.js +2 -12
  397. package/dist/navigation-bar.cjs +1 -2
  398. package/dist/navigation-bar.js +2 -6
  399. package/dist/navigation-rail.cjs +71 -2
  400. package/dist/navigation-rail.cjs.map +1 -1
  401. package/dist/navigation-rail.js +363 -5
  402. package/dist/navigation-rail.js.map +1 -1
  403. package/dist/notification-BjwTfLAl.cjs +23 -0
  404. package/dist/notification-BjwTfLAl.cjs.map +1 -0
  405. package/dist/notification-DzYT4deA.js +304 -0
  406. package/dist/notification-DzYT4deA.js.map +1 -0
  407. package/dist/notification.cjs +1 -2
  408. package/dist/notification.js +2 -9
  409. package/dist/option-BJsD3u2D.cjs +43 -0
  410. package/dist/option-BJsD3u2D.cjs.map +1 -0
  411. package/dist/option-JFHxgiYl.js +97 -0
  412. package/dist/option-JFHxgiYl.js.map +1 -0
  413. package/dist/option.cjs +1 -2
  414. package/dist/option.js +1 -2
  415. package/dist/overlay-stack-DQey9Qph.cjs +1 -0
  416. package/dist/overlay-stack-DQey9Qph.cjs.map +1 -0
  417. package/dist/overlay-stack-DT1SdaGW.js +39 -0
  418. package/dist/overlay-stack-DT1SdaGW.js.map +1 -0
  419. package/dist/page.cjs +20 -2
  420. package/dist/page.cjs.map +1 -1
  421. package/dist/page.js +71 -4
  422. package/dist/page.js.map +1 -1
  423. package/dist/progress-BUh5WBqx.js +128 -0
  424. package/dist/progress-BUh5WBqx.js.map +1 -0
  425. package/dist/progress-BoRmyGAa.cjs +51 -0
  426. package/dist/progress-BoRmyGAa.cjs.map +1 -0
  427. package/dist/progress.cjs +1 -2
  428. package/dist/progress.js +1 -2
  429. package/dist/provide-8MrDz_qX.js +107 -0
  430. package/dist/provide-8MrDz_qX.js.map +1 -0
  431. package/dist/provide-CDkxgjHb.cjs +1 -0
  432. package/dist/provide-CDkxgjHb.cjs.map +1 -0
  433. package/dist/qr-scanner.cjs +35 -2
  434. package/dist/qr-scanner.cjs.map +1 -1
  435. package/dist/qr-scanner.js +119 -4
  436. package/dist/qr-scanner.js.map +1 -1
  437. package/dist/radio-group-DbOWUPhi.js +105 -0
  438. package/dist/radio-group-DbOWUPhi.js.map +1 -0
  439. package/dist/radio-group-rhrvhB5X.cjs +40 -0
  440. package/dist/radio-group-rhrvhB5X.cjs.map +1 -0
  441. package/dist/radio-group.cjs +1 -2
  442. package/dist/radio-group.js +2 -6
  443. package/dist/range.cjs +62 -0
  444. package/dist/range.cjs.map +1 -0
  445. package/dist/range.js +85 -0
  446. package/dist/range.js.map +1 -0
  447. package/dist/reduced-motion-D-L12p7G.js +7 -0
  448. package/dist/reduced-motion-D-L12p7G.js.map +1 -0
  449. package/dist/reduced-motion-Ds05GPyz.cjs +1 -0
  450. package/dist/reduced-motion-Ds05GPyz.cjs.map +1 -0
  451. package/dist/rxjs-utils-BSjmI9-Q.js +32 -0
  452. package/dist/rxjs-utils-BSjmI9-Q.js.map +1 -0
  453. package/dist/rxjs-utils-DCsfzeap.cjs +1 -0
  454. package/dist/rxjs-utils-DCsfzeap.cjs.map +1 -0
  455. package/dist/rxjs-utils.cjs +1 -2
  456. package/dist/rxjs-utils.js +2 -14
  457. package/dist/scroll-BE9W9PF2.cjs +26 -0
  458. package/dist/scroll-BE9W9PF2.cjs.map +1 -0
  459. package/dist/scroll-qGks1R0k.js +112 -0
  460. package/dist/scroll-qGks1R0k.js.map +1 -0
  461. package/dist/search-C4dFHYbX.js +91 -0
  462. package/dist/search-C4dFHYbX.js.map +1 -0
  463. package/dist/search-Ds8tt7Et.cjs +1 -0
  464. package/dist/search-Ds8tt7Et.cjs.map +1 -0
  465. package/dist/select-D9sgBRjU.js +305 -0
  466. package/dist/select-D9sgBRjU.js.map +1 -0
  467. package/dist/select-DXU2kzg4.cjs +56 -0
  468. package/dist/select-DXU2kzg4.cjs.map +1 -0
  469. package/dist/select.cjs +1 -2
  470. package/dist/select.js +2 -5
  471. package/dist/sheet-CIxCCJ3H.js +168 -0
  472. package/dist/sheet-CIxCCJ3H.js.map +1 -0
  473. package/dist/sheet-CeX6BbNp.cjs +35 -0
  474. package/dist/sheet-CeX6BbNp.cjs.map +1 -0
  475. package/dist/sheet.cjs +1 -2
  476. package/dist/sheet.js +3 -7
  477. package/dist/sheet.service-CAB7weBc.js +86 -0
  478. package/dist/sheet.service-CAB7weBc.js.map +1 -0
  479. package/dist/sheet.service-DPAp7E3x.cjs +1 -0
  480. package/dist/sheet.service-DPAp7E3x.cjs.map +1 -0
  481. package/dist/slider.cjs +82 -2
  482. package/dist/slider.cjs.map +1 -1
  483. package/dist/slider.js +143 -5
  484. package/dist/slider.js.map +1 -1
  485. package/dist/sound.service-Bu3EQLv2.cjs +1 -0
  486. package/dist/sound.service-Bu3EQLv2.cjs.map +1 -0
  487. package/dist/sound.service-m3BrSfuH.js +2353 -0
  488. package/dist/sound.service-m3BrSfuH.js.map +1 -0
  489. package/dist/src-CbO5kJ2O.js +1244 -0
  490. package/dist/src-CbO5kJ2O.js.map +1 -0
  491. package/dist/src-SraDxEeg.cjs +269 -0
  492. package/dist/src-SraDxEeg.cjs.map +1 -0
  493. package/dist/steps.cjs +70 -2
  494. package/dist/steps.cjs.map +1 -1
  495. package/dist/steps.js +178 -7
  496. package/dist/steps.js.map +1 -1
  497. package/dist/store-CorvD3bT.cjs +1 -0
  498. package/dist/store-CorvD3bT.cjs.map +1 -0
  499. package/dist/store-DYqDLAvT.js +1654 -0
  500. package/dist/store-DYqDLAvT.js.map +1 -0
  501. package/dist/store.cjs +1 -2
  502. package/dist/store.js +2 -47
  503. package/dist/surface-DuH0pm2v.cjs +7 -0
  504. package/dist/surface-DuH0pm2v.cjs.map +1 -0
  505. package/dist/surface-eN_Jy2MJ.js +21 -0
  506. package/dist/surface-eN_Jy2MJ.js.map +1 -0
  507. package/dist/surface.cjs +1 -2
  508. package/dist/surface.js +2 -6
  509. package/dist/surface.mixin-CIXgN6iw.cjs +297 -0
  510. package/dist/surface.mixin-CIXgN6iw.cjs.map +1 -0
  511. package/dist/surface.mixin-D9jv1sKG.js +320 -0
  512. package/dist/surface.mixin-D9jv1sKG.js.map +1 -0
  513. package/dist/table-C9rRQJEB.cjs +63 -0
  514. package/dist/table-C9rRQJEB.cjs.map +1 -0
  515. package/dist/table-Dg_tUGB_.js +631 -0
  516. package/dist/table-Dg_tUGB_.js.map +1 -0
  517. package/dist/table.cjs +1 -2
  518. package/dist/table.js +2 -6
  519. package/dist/tabs-BbFC9omR.js +125 -0
  520. package/dist/tabs-BbFC9omR.js.map +1 -0
  521. package/dist/tabs-soTL-x4G.cjs +31 -0
  522. package/dist/tabs-soTL-x4G.cjs.map +1 -0
  523. package/dist/tabs.cjs +1 -2
  524. package/dist/tabs.js +1 -2
  525. package/dist/tailwind.mixin-BIVhjNvD.js +225 -0
  526. package/dist/tailwind.mixin-BIVhjNvD.js.map +1 -0
  527. package/dist/tailwind.mixin-DSuEu-y3.cjs +2 -0
  528. package/dist/tailwind.mixin-DSuEu-y3.cjs.map +1 -0
  529. package/dist/teleport.cjs +1 -2
  530. package/dist/teleport.js +2 -8
  531. package/dist/textarea-DaRUJ0ri.cjs +35 -0
  532. package/dist/textarea-DaRUJ0ri.cjs.map +1 -0
  533. package/dist/textarea-hChvHbNM.js +195 -0
  534. package/dist/textarea-hChvHbNM.js.map +1 -0
  535. package/dist/textarea.cjs +1 -2
  536. package/dist/textarea.js +1 -2
  537. package/dist/theme-B0M8Hlyo.js +4121 -0
  538. package/dist/theme-B0M8Hlyo.js.map +1 -0
  539. package/dist/theme-ZYH2MqX9.cjs +181 -0
  540. package/dist/theme-ZYH2MqX9.cjs.map +1 -0
  541. package/dist/theme-button-BtlX_Zgd.js +19 -0
  542. package/dist/theme-button-BtlX_Zgd.js.map +1 -0
  543. package/dist/theme-button-Dvqg-rE_.cjs +8 -0
  544. package/dist/theme-button-Dvqg-rE_.cjs.map +1 -0
  545. package/dist/theme-button.cjs +1 -2
  546. package/dist/theme-button.js +1 -2
  547. package/dist/theme.cjs +1 -2
  548. package/dist/theme.events-Cv7N4Toe.js +2 -0
  549. package/dist/theme.events-Cv7N4Toe.js.map +1 -0
  550. package/dist/theme.events-DM4H5F2d.cjs +1 -0
  551. package/dist/theme.events-DM4H5F2d.cjs.map +1 -0
  552. package/dist/theme.interface-CXloMUCw.js +276 -0
  553. package/dist/theme.interface-CXloMUCw.js.map +1 -0
  554. package/dist/theme.interface-Da23QAYb.cjs +1 -0
  555. package/dist/theme.interface-Da23QAYb.cjs.map +1 -0
  556. package/dist/theme.js +6 -21
  557. package/dist/theme.service-C_tjlqgy.cjs +1 -0
  558. package/dist/theme.service-C_tjlqgy.cjs.map +1 -0
  559. package/dist/theme.service-D9lEas89.js +108 -0
  560. package/dist/theme.service-D9lEas89.js.map +1 -0
  561. package/dist/tooltip.cjs +6 -2
  562. package/dist/tooltip.cjs.map +1 -1
  563. package/dist/tooltip.js +200 -5
  564. package/dist/tooltip.js.map +1 -1
  565. package/dist/tree.cjs +26 -2
  566. package/dist/tree.cjs.map +1 -1
  567. package/dist/tree.js +64 -4
  568. package/dist/tree.js.map +1 -1
  569. package/dist/tslib.es6-D7BIeDVB.cjs +1 -0
  570. package/dist/tslib.es6-D7BIeDVB.cjs.map +1 -0
  571. package/dist/tslib.es6-ErZEp3OO.js +7 -0
  572. package/dist/tslib.es6-ErZEp3OO.js.map +1 -0
  573. package/dist/types.cjs +1 -2
  574. package/dist/types.cjs.map +1 -1
  575. package/dist/types.js +4 -5
  576. package/dist/types.js.map +1 -1
  577. package/dist/typewriter-CCel8Nta.js +700 -0
  578. package/dist/typewriter-CCel8Nta.js.map +1 -0
  579. package/dist/typewriter-Cf9f2bdx.cjs +123 -0
  580. package/dist/typewriter-Cf9f2bdx.cjs.map +1 -0
  581. package/dist/typewriter.cjs +1 -2
  582. package/dist/typewriter.js +2 -5
  583. package/dist/typography.cjs +282 -2
  584. package/dist/typography.cjs.map +1 -1
  585. package/dist/typography.js +353 -4
  586. package/dist/typography.js.map +1 -1
  587. package/dist/utils-BcaKtQuA.cjs +1 -0
  588. package/dist/utils-BcaKtQuA.cjs.map +1 -0
  589. package/dist/utils-CoU7M2YS.js +259 -0
  590. package/dist/utils-CoU7M2YS.js.map +1 -0
  591. package/dist/utils.cjs +1 -2
  592. package/dist/utils.js +6 -9
  593. package/dist/window-B9_14c12.cjs +59 -0
  594. package/dist/window-B9_14c12.cjs.map +1 -0
  595. package/dist/window-CbgdwOZD.js +548 -0
  596. package/dist/window-CbgdwOZD.js.map +1 -0
  597. package/dist/window.cjs +1 -0
  598. package/dist/window.js +2 -0
  599. package/mixins/baseElement.ts +118 -1
  600. package/mixins/discovery.service.ts +162 -1
  601. package/mixins/formField.mixin.ts +13 -8
  602. package/mixins/index.ts +2 -0
  603. package/mixins/surface.mixin.ts +93 -0
  604. package/mixins/tailwind.css +331 -14
  605. package/package.json +32 -28
  606. package/src/CLAUDE.md +428 -0
  607. package/src/area/.excalidraw +357 -0
  608. package/src/area/area.component.ts +449 -0
  609. package/src/area/area.service.test.ts +1007 -0
  610. package/src/area/area.service.ts +748 -0
  611. package/src/area/ecrypt.ts +7 -0
  612. package/src/area/index.ts +7 -0
  613. package/src/area/lazy.ts +83 -0
  614. package/src/area/readme.md +338 -0
  615. package/src/area/route.component.ts +79 -0
  616. package/src/area/router-guide.md +360 -0
  617. package/src/area/router.types.ts +101 -0
  618. package/src/area/utils.ts +354 -0
  619. package/src/audio/emotional-sounds.ts +940 -0
  620. package/src/audio/index.ts +53 -0
  621. package/src/audio/sound.service.ts +1079 -0
  622. package/src/autocomplete/README.md +485 -0
  623. package/src/autocomplete/autocomplete.scss +24 -0
  624. package/src/autocomplete/autocomplete.ts +733 -0
  625. package/src/autocomplete/index.ts +1 -0
  626. package/src/avatar.ts +164 -0
  627. package/src/badge/badge.ts +286 -0
  628. package/src/badge/index.ts +1 -0
  629. package/src/boat/boat.ts +664 -0
  630. package/src/boat/index.ts +1 -0
  631. package/src/busy/busy.ts +39 -0
  632. package/src/busy/index.ts +2 -0
  633. package/src/busy/spinner.ts +165 -0
  634. package/src/button/button.ts +382 -0
  635. package/src/button/icon-button.ts +287 -0
  636. package/src/button/index.ts +2 -0
  637. package/src/card/actions.ts +28 -0
  638. package/src/card/card.ts +319 -0
  639. package/src/card/content.ts +24 -0
  640. package/src/card/index.ts +4 -0
  641. package/src/card/media.ts +77 -0
  642. package/src/charts/area-chart.ts +495 -0
  643. package/src/charts/index.ts +4 -0
  644. package/src/charts/pills.ts +350 -0
  645. package/src/charts/types.ts +66 -0
  646. package/src/charts/utils.ts +65 -0
  647. package/src/checkbox/checkbox.ts +122 -0
  648. package/src/checkbox/index.ts +1 -0
  649. package/src/chips/assist-chip.ts +261 -0
  650. package/src/chips/chips.ts +259 -0
  651. package/src/chips/filter-chip.ts +255 -0
  652. package/src/chips/index.ts +5 -0
  653. package/src/chips/input-chip.ts +408 -0
  654. package/src/chips/suggestion-chip.ts +266 -0
  655. package/src/code-highlight/code-highlight.ts +344 -0
  656. package/src/code-highlight/code-preview.ts +123 -0
  657. package/src/code-highlight/index.ts +3 -0
  658. package/src/components/form-elements/index.ts +1 -0
  659. package/src/components/form-elements/payment-card-form.ts +331 -0
  660. package/src/components/index.ts +1 -0
  661. package/src/connectivity/connectivity-status.ts +153 -0
  662. package/src/connectivity/index.ts +1 -0
  663. package/src/content-drawer/context.ts +13 -0
  664. package/src/content-drawer/drawer.service.ts +148 -0
  665. package/src/content-drawer/drawer.ts +183 -0
  666. package/src/content-drawer/index.ts +5 -0
  667. package/src/content-drawer/main.ts +83 -0
  668. package/src/content-drawer/readme.md +709 -0
  669. package/src/content-drawer/sheet.ts +180 -0
  670. package/src/date-range/date-range-dialog.ts +230 -0
  671. package/src/date-range/date-range-helpers.ts +135 -0
  672. package/src/date-range/date-range-presets.ts +220 -0
  673. package/src/date-range/date-range.ts +530 -0
  674. package/src/date-range/date-utils.ts +58 -0
  675. package/src/date-range/index.ts +2 -0
  676. package/src/date-range-inline/date-range-inline.ts +522 -0
  677. package/src/date-range-inline/index.ts +2 -0
  678. package/src/delay/delay.ts +136 -0
  679. package/src/delay/index.ts +1 -0
  680. package/src/details/details.ts +429 -0
  681. package/src/details/index.ts +1 -0
  682. package/src/dialog/dialog-base.mixin.ts +565 -0
  683. package/src/dialog/dialog-events.ts +17 -0
  684. package/src/dialog/dialog-service.ts +482 -0
  685. package/src/dialog/dialog.component.ts +394 -0
  686. package/src/dialog/index.ts +3 -0
  687. package/src/directives/animate-text.ts +551 -0
  688. package/src/directives/color.ts +41 -0
  689. package/src/directives/confirm-click.ts +350 -0
  690. package/src/directives/cursor-glow.ts +142 -0
  691. package/src/directives/cycle-text.ts +496 -0
  692. package/src/directives/depth-of-field.ts +83 -0
  693. package/src/directives/drag.ts +370 -0
  694. package/src/directives/gravity.ts +117 -0
  695. package/src/directives/index.ts +19 -0
  696. package/src/directives/intersect.ts +204 -0
  697. package/src/directives/layout.ts +261 -0
  698. package/src/directives/liquid.ts +150 -0
  699. package/src/directives/living-border.ts +166 -0
  700. package/src/directives/long-press.ts +150 -0
  701. package/src/directives/magnetic.ts +133 -0
  702. package/src/directives/nebula.ts +773 -0
  703. package/src/directives/reduced-motion.ts +30 -0
  704. package/src/directives/reveal.ts +158 -0
  705. package/src/directives/ripple.ts +102 -0
  706. package/src/directives/typewriter.ts +349 -0
  707. package/src/discovery/discovery.service.ts +210 -0
  708. package/src/discovery/index.ts +1 -0
  709. package/src/divider/divider.ts +100 -0
  710. package/src/divider/index.ts +1 -0
  711. package/src/dropdown/dropdown-component.ts +264 -0
  712. package/src/dropdown/dropdown-content.ts +108 -0
  713. package/src/dropdown/index.ts +2 -0
  714. package/src/expand/expand-root.component.ts +278 -0
  715. package/src/expand/expand.component.ts +287 -0
  716. package/src/expand/index.ts +2 -0
  717. package/src/extra/countries/countries.data.ts +196 -0
  718. package/src/extra/countries/countries.ts +107 -0
  719. package/src/extra/countries/index.ts +2 -0
  720. package/src/extra/index.ts +2 -0
  721. package/src/extra/timezone/index.ts +2 -0
  722. package/src/extra/timezone/timezone.ts +116 -0
  723. package/src/extra/timezone/timezones.data.ts +2546 -0
  724. package/src/float/float.ts +18 -0
  725. package/src/float/index.ts +1 -0
  726. package/src/form/form-v2.ts +268 -0
  727. package/src/form/form.ts +194 -0
  728. package/src/form/index.ts +2 -0
  729. package/src/icons/icon.ts +293 -0
  730. package/src/icons/index.ts +1 -0
  731. package/src/icons/readme.md +37 -0
  732. package/src/iframe/iframe.ts +98 -0
  733. package/src/iframe/index.ts +1 -0
  734. package/src/index.ts +69 -0
  735. package/src/input/index.ts +8 -0
  736. package/src/input/input.scss +211 -0
  737. package/src/input/input.ts +951 -0
  738. package/src/json/index.ts +1 -0
  739. package/src/json/json.ts +55 -0
  740. package/src/layout/flex/flex.scss +4 -0
  741. package/src/layout/flex/flex.ts +74 -0
  742. package/src/layout/flex/index.ts +1 -0
  743. package/src/layout/grid/.readme +79 -0
  744. package/src/layout/grid/grid.scss +5 -0
  745. package/src/layout/grid/grid.ts +121 -0
  746. package/src/layout/grid/index.ts +1 -0
  747. package/src/layout/index.ts +5 -0
  748. package/src/layout/layout.ts +122 -0
  749. package/src/layout/scroll/index.ts +1 -0
  750. package/src/layout/scroll/scroll.ts +351 -0
  751. package/src/layout/v2/flex.ts +243 -0
  752. package/src/layout/v2/grid.ts +93 -0
  753. package/src/layout/v2/index.ts +1 -0
  754. package/src/lightbox/flip-directive.ts +270 -0
  755. package/src/lightbox/index.ts +4 -0
  756. package/src/lightbox/lightbox-service.ts +378 -0
  757. package/src/lightbox/lightbox.directive.ts +256 -0
  758. package/src/lightbox/lightbox.ts +417 -0
  759. package/src/list/context.ts +3 -0
  760. package/src/list/index.ts +3 -0
  761. package/src/list/list-item.ts +94 -0
  762. package/src/list/list.ts +87 -0
  763. package/src/list/readme.md +62 -0
  764. package/src/mailbox/README.md +131 -0
  765. package/src/mailbox/email-editor.ts +1071 -0
  766. package/src/mailbox/email-layout-selector.ts +58 -0
  767. package/src/mailbox/email-recipients.ts +594 -0
  768. package/src/mailbox/email-template-picker.ts +296 -0
  769. package/src/mailbox/email-viewer.ts +715 -0
  770. package/src/mailbox/index.ts +31 -0
  771. package/src/mailbox/mailbox.ts +363 -0
  772. package/src/mailbox/types.ts +181 -0
  773. package/src/map/index.ts +1 -0
  774. package/src/map/map.ts +483 -0
  775. package/src/menu/index.ts +2 -0
  776. package/src/menu/menu-item.ts +26 -0
  777. package/src/menu/menu.ts +83 -0
  778. package/src/nav-drawer/$navbar.ts +51 -0
  779. package/src/nav-drawer/appbar.ts +26 -0
  780. package/src/nav-drawer/content.ts +32 -0
  781. package/src/nav-drawer/context.ts +6 -0
  782. package/src/nav-drawer/drawer.ts +128 -0
  783. package/src/nav-drawer/index.ts +6 -0
  784. package/src/nav-drawer/navbar.ts +191 -0
  785. package/src/navigation-bar/index.ts +2 -0
  786. package/src/navigation-bar/navigation-bar-item.ts +417 -0
  787. package/src/navigation-bar/navigation-bar.ts +482 -0
  788. package/src/navigation-rail/index.ts +2 -0
  789. package/src/navigation-rail/navigation-rail-item.ts +443 -0
  790. package/src/navigation-rail/navigation-rail.ts +492 -0
  791. package/src/notification/index.ts +6 -0
  792. package/src/notification/notification-service.ts +324 -0
  793. package/src/notification/notification.scss +117 -0
  794. package/src/notification/notification.ts +263 -0
  795. package/src/notification/notify.ts +207 -0
  796. package/src/notification/outlet.ts +16 -0
  797. package/src/option/index.ts +1 -0
  798. package/src/option/option.ts +180 -0
  799. package/src/page/index.ts +1 -0
  800. package/src/page/page.ts +135 -0
  801. package/src/progress/index.ts +1 -0
  802. package/src/progress/progress.ts +143 -0
  803. package/src/qr-scanner/index.ts +1 -0
  804. package/src/qr-scanner/qr-scanner.ts +240 -0
  805. package/src/radio-group/index.ts +2 -0
  806. package/src/radio-group/radio-button.ts +81 -0
  807. package/src/radio-group/radio-group.scss +4 -0
  808. package/src/radio-group/radio-group.ts +110 -0
  809. package/src/radio-group/readme.md +315 -0
  810. package/src/range/index.ts +1 -0
  811. package/src/range/range.ts +102 -0
  812. package/src/rxjs-utils/index.ts +6 -0
  813. package/src/rxjs-utils/mutation-observer.ts +22 -0
  814. package/src/rxjs-utils/waitForElement.ts +33 -0
  815. package/src/rxjs-utils/waitForElementAll.ts +34 -0
  816. package/src/rxjs-utils/waitForElements.ts +40 -0
  817. package/src/rxjs-utils/waitForElementsAll.ts +42 -0
  818. package/src/rxjs-utils/waitUntil.ts +16 -0
  819. package/src/select/README.md +405 -0
  820. package/src/select/index.ts +2 -0
  821. package/src/select/select.ts +766 -0
  822. package/src/sheet/hook.ts +40 -0
  823. package/src/sheet/index.ts +2 -0
  824. package/src/sheet/sheet.service.ts +235 -0
  825. package/src/sheet/sheet.ts +236 -0
  826. package/src/slider/index.ts +2 -0
  827. package/src/slider/slide.ts +107 -0
  828. package/src/slider/slider.ts +164 -0
  829. package/src/steps/index.ts +3 -0
  830. package/src/steps/schmancy-step.ts +213 -0
  831. package/src/steps/schmancy-steps-container.ts +109 -0
  832. package/src/steps/steps.context.ts +23 -0
  833. package/src/store/context-array.ts +358 -0
  834. package/src/store/context-collection.ts +218 -0
  835. package/src/store/context-create.ts +284 -0
  836. package/src/store/context-object.ts +298 -0
  837. package/src/store/filter-directive.ts +614 -0
  838. package/src/store/immer-integration.ts +99 -0
  839. package/src/store/index.ts +10 -0
  840. package/src/store/selector-hook.ts +259 -0
  841. package/src/store/selectors.ts +289 -0
  842. package/src/store/storage-manager.ts +269 -0
  843. package/src/store/store.class.ts +239 -0
  844. package/src/store/types.ts +327 -0
  845. package/src/surface/context.ts +3 -0
  846. package/src/surface/index.ts +1 -0
  847. package/src/surface/surface.styles.ts +334 -0
  848. package/src/surface/surface.ts +59 -0
  849. package/src/table/index.ts +2 -0
  850. package/src/table/row.ts +60 -0
  851. package/src/table/table.ts +266 -0
  852. package/src/tabs/Readme.md +397 -0
  853. package/src/tabs/context.ts +5 -0
  854. package/src/tabs/index.ts +4 -0
  855. package/src/tabs/tab.ts +39 -0
  856. package/src/tabs/tabs-compatibility.ts +20 -0
  857. package/src/tabs/tabs-group.ts +184 -0
  858. package/src/teleport/.excalidraw +2511 -0
  859. package/src/teleport/index.ts +2 -0
  860. package/src/teleport/readme.md +91 -0
  861. package/src/teleport/teleport.component.ts +132 -0
  862. package/src/teleport/teleport.service.ts +139 -0
  863. package/src/teleport/watcher.ts +20 -0
  864. package/src/textarea/index.ts +1 -0
  865. package/src/textarea/textarea.scss +54 -0
  866. package/src/textarea/textarea.ts +432 -0
  867. package/src/theme/context.ts +28 -0
  868. package/src/theme/index.ts +17 -0
  869. package/src/theme/theme-audio-player.ts +470 -0
  870. package/src/theme/theme-controller-boat.ts +49 -0
  871. package/src/theme/theme-controller-example.md +152 -0
  872. package/src/theme/theme-controller.ts +205 -0
  873. package/src/theme/theme.component.ts +305 -0
  874. package/src/theme/theme.events.ts +59 -0
  875. package/src/theme/theme.format.ts +417 -0
  876. package/src/theme/theme.interface.ts +399 -0
  877. package/src/theme/theme.service.ts +520 -0
  878. package/src/theme/theme.style.css +619 -0
  879. package/src/theme-button/index.ts +1 -0
  880. package/src/theme-button/theme-button.ts +35 -0
  881. package/src/tooltip/index.ts +2 -0
  882. package/src/tooltip/tooltip.directive.ts +277 -0
  883. package/src/tooltip/tooltip.ts +216 -0
  884. package/src/tree/README.md +59 -0
  885. package/src/tree/index.ts +1 -0
  886. package/src/tree/tree.ts +132 -0
  887. package/src/types/events.ts +5 -0
  888. package/src/types/index.ts +3 -0
  889. package/src/types/mood-audio.types.ts +220 -0
  890. package/src/types/surface.ts +52 -0
  891. package/src/typewriter/IMPROVEMENTS.md +174 -0
  892. package/src/typewriter/QUICK_REFERENCE.md +166 -0
  893. package/src/typewriter/index.ts +1 -0
  894. package/src/typewriter/test-typewriter.html +97 -0
  895. package/src/typewriter/typewriter.ts +376 -0
  896. package/src/typography/index.ts +1 -0
  897. package/src/typography/typography.ts +448 -0
  898. package/src/utils/animation.ts +418 -0
  899. package/src/utils/hashContent.ts +12 -0
  900. package/src/utils/index.ts +6 -0
  901. package/src/utils/intersection.ts +22 -0
  902. package/src/utils/number.ts +529 -0
  903. package/src/utils/overlay-stack.ts +101 -0
  904. package/src/utils/search.ts +322 -0
  905. package/src/vite-env.d.ts +2 -0
  906. package/src/window/index.ts +10 -0
  907. package/src/window/window-manager.ts +204 -0
  908. package/src/window/window-position.ts +136 -0
  909. package/src/window/window-registry.ts +34 -0
  910. package/src/window/window.ts +724 -0
  911. package/types/mixins/baseElement.d.ts +12 -0
  912. package/types/mixins/discovery.service.d.ts +72 -0
  913. package/types/mixins/index.d.ts +2 -0
  914. package/types/mixins/surface.mixin.d.ts +39 -0
  915. package/types/src/area/area.service.d.ts +2 -0
  916. package/types/src/badge/badge.d.ts +1 -1
  917. package/types/src/boat/boat.d.ts +40 -33
  918. package/types/src/button/icon-button.d.ts +10 -0
  919. package/types/src/chips/filter-chip.d.ts +0 -12
  920. package/types/src/connectivity/connectivity-status.d.ts +25 -0
  921. package/types/src/connectivity/index.d.ts +1 -0
  922. package/types/src/content-drawer/drawer.service.d.ts +3 -0
  923. package/types/src/date-range/date-range.d.ts +2 -0
  924. package/types/src/details/details.d.ts +26 -2
  925. package/types/src/dialog/dialog-base.mixin.d.ts +7 -3
  926. package/types/src/dialog/dialog-service.d.ts +27 -1
  927. package/types/src/dialog/dialog.component.d.ts +35 -1
  928. package/types/src/directives/animate-text.d.ts +67 -0
  929. package/types/src/directives/color.d.ts +2 -3
  930. package/types/src/directives/confirm-click.d.ts +38 -0
  931. package/types/src/directives/cursor-glow.d.ts +38 -0
  932. package/types/src/directives/cycle-text.d.ts +44 -0
  933. package/types/src/directives/depth-of-field.d.ts +38 -0
  934. package/types/src/directives/drag.d.ts +8 -8
  935. package/types/src/directives/gravity.d.ts +40 -0
  936. package/types/src/directives/index.d.ts +16 -2
  937. package/types/src/directives/intersect.d.ts +60 -0
  938. package/types/src/directives/layout.d.ts +62 -0
  939. package/types/src/directives/liquid.d.ts +38 -0
  940. package/types/src/directives/living-border.d.ts +39 -0
  941. package/types/src/directives/long-press.d.ts +38 -0
  942. package/types/src/directives/magnetic.d.ts +35 -0
  943. package/types/src/directives/nebula.d.ts +80 -0
  944. package/types/src/directives/reduced-motion.d.ts +2 -0
  945. package/types/src/directives/reveal.d.ts +54 -0
  946. package/types/src/directives/ripple.d.ts +15 -5
  947. package/types/src/directives/typewriter.d.ts +50 -0
  948. package/types/src/discovery/discovery.service.d.ts +72 -0
  949. package/types/src/expand/expand-root.component.d.ts +30 -0
  950. package/types/src/expand/expand.component.d.ts +38 -0
  951. package/types/src/expand/index.d.ts +2 -0
  952. package/types/src/float/float.d.ts +14 -0
  953. package/types/src/float/index.d.ts +1 -0
  954. package/types/src/icons/icon.d.ts +14 -0
  955. package/types/src/iframe/iframe.d.ts +37 -0
  956. package/types/src/iframe/index.d.ts +1 -0
  957. package/types/src/index.d.ts +6 -1
  958. package/types/src/input/index.d.ts +1 -1
  959. package/types/src/layout/scroll/scroll.d.ts +11 -0
  960. package/types/src/lightbox/lightbox.d.ts +1 -0
  961. package/types/src/mailbox/email-recipients.d.ts +2 -2
  962. package/types/src/mailbox/types.d.ts +1 -1
  963. package/types/src/navigation-bar/navigation-bar.d.ts +17 -0
  964. package/types/src/notification/notification.d.ts +1 -0
  965. package/types/src/page/page.d.ts +6 -0
  966. package/types/src/range/index.d.ts +1 -0
  967. package/types/src/range/range.d.ts +25 -0
  968. package/types/src/sheet/sheet.d.ts +0 -1
  969. package/types/src/steps/schmancy-steps-container.d.ts +8 -6
  970. package/types/src/surface/surface.d.ts +4 -27
  971. package/types/src/surface/surface.styles.d.ts +31 -0
  972. package/types/src/tabs/tab.d.ts +1 -0
  973. package/types/src/textarea/textarea.d.ts +3 -2
  974. package/types/src/theme/context.d.ts +2 -282
  975. package/types/src/theme/theme.component.d.ts +9 -1
  976. package/types/src/theme/theme.format.d.ts +1 -1
  977. package/types/src/theme/theme.interface.d.ts +8 -1
  978. package/types/src/theme/theme.service.d.ts +20 -282
  979. package/types/src/types/surface.d.ts +27 -1
  980. package/types/src/typography/typography.d.ts +17 -3
  981. package/types/src/utils/animation.d.ts +254 -0
  982. package/types/src/utils/index.d.ts +2 -0
  983. package/types/src/utils/number.d.ts +18 -2
  984. package/types/src/utils/overlay-stack.d.ts +54 -0
  985. package/types/src/window/index.d.ts +3 -0
  986. package/types/src/window/window-manager.d.ts +49 -0
  987. package/types/src/window/window-position.d.ts +64 -0
  988. package/types/src/window/window-registry.d.ts +28 -0
  989. package/types/src/window/window.d.ts +67 -0
  990. package/ai/animated-text.md +0 -116
  991. package/ai/component-relationships.md +0 -93
  992. package/ai/context.md +0 -572
  993. package/ai/countries.md +0 -271
  994. package/ai/index.md +0 -112
  995. package/ai/navigation-bar-item.md +0 -259
  996. package/ai/payment-card-form.md +0 -242
  997. package/ai/spinner.md +0 -165
  998. package/ai/template.md +0 -144
  999. package/ai/timezone.md +0 -276
  1000. package/dist/_commonjsHelpers-Dw9sPFZy.js +0 -7
  1001. package/dist/_commonjsHelpers-Dw9sPFZy.js.map +0 -1
  1002. package/dist/_commonjsHelpers-k2hpEU-q.cjs +0 -2
  1003. package/dist/_commonjsHelpers-k2hpEU-q.cjs.map +0 -1
  1004. package/dist/ai/animated-text.md +0 -116
  1005. package/dist/ai/component-relationships.md +0 -93
  1006. package/dist/ai/context.md +0 -572
  1007. package/dist/ai/countries.md +0 -271
  1008. package/dist/ai/index.md +0 -112
  1009. package/dist/ai/navigation-bar-item.md +0 -259
  1010. package/dist/ai/payment-card-form.md +0 -242
  1011. package/dist/ai/spinner.md +0 -165
  1012. package/dist/ai/template.md +0 -144
  1013. package/dist/ai/timezone.md +0 -276
  1014. package/dist/animated-text-B3DQRJBy.cjs +0 -37
  1015. package/dist/animated-text-B3DQRJBy.cjs.map +0 -1
  1016. package/dist/animated-text-BAj4-6hE.js +0 -76
  1017. package/dist/animated-text-BAj4-6hE.js.map +0 -1
  1018. package/dist/animated-text.cjs +0 -2
  1019. package/dist/animated-text.cjs.map +0 -1
  1020. package/dist/animated-text.js +0 -2
  1021. package/dist/animated-text.js.map +0 -1
  1022. package/dist/area.cjs.map +0 -1
  1023. package/dist/area.component-CP4DZ0d8.js +0 -330
  1024. package/dist/area.component-CP4DZ0d8.js.map +0 -1
  1025. package/dist/area.component-ChxSLt16.cjs +0 -12
  1026. package/dist/area.component-ChxSLt16.cjs.map +0 -1
  1027. package/dist/area.js.map +0 -1
  1028. package/dist/audio.cjs.map +0 -1
  1029. package/dist/audio.js.map +0 -1
  1030. package/dist/autocomplete-CAaVSg4g.cjs +0 -112
  1031. package/dist/autocomplete-CAaVSg4g.cjs.map +0 -1
  1032. package/dist/autocomplete-CGbACUYd.js +0 -333
  1033. package/dist/autocomplete-CGbACUYd.js.map +0 -1
  1034. package/dist/autocomplete.cjs.map +0 -1
  1035. package/dist/autocomplete.js.map +0 -1
  1036. package/dist/avatar-nWOZXEsW.cjs +0 -273
  1037. package/dist/avatar-nWOZXEsW.cjs.map +0 -1
  1038. package/dist/avatar-rLCF6MSI.js +0 -895
  1039. package/dist/avatar-rLCF6MSI.js.map +0 -1
  1040. package/dist/badge.cjs.map +0 -1
  1041. package/dist/badge.js.map +0 -1
  1042. package/dist/boat-Ckt9v__d.js +0 -301
  1043. package/dist/boat-Ckt9v__d.js.map +0 -1
  1044. package/dist/boat-yNAZ2LLB.cjs +0 -97
  1045. package/dist/boat-yNAZ2LLB.cjs.map +0 -1
  1046. package/dist/boat.cjs.map +0 -1
  1047. package/dist/boat.js.map +0 -1
  1048. package/dist/busy.cjs.map +0 -1
  1049. package/dist/busy.js.map +0 -1
  1050. package/dist/card.cjs.map +0 -1
  1051. package/dist/card.js.map +0 -1
  1052. package/dist/checkbox-BnAlpsJN.cjs +0 -40
  1053. package/dist/checkbox-BnAlpsJN.cjs.map +0 -1
  1054. package/dist/checkbox-D22yfGe3.js +0 -526
  1055. package/dist/checkbox-D22yfGe3.js.map +0 -1
  1056. package/dist/checkbox.cjs.map +0 -1
  1057. package/dist/checkbox.js.map +0 -1
  1058. package/dist/chips.cjs.map +0 -1
  1059. package/dist/chips.js.map +0 -1
  1060. package/dist/code-highlight.cjs.map +0 -1
  1061. package/dist/code-highlight.js.map +0 -1
  1062. package/dist/code-preview-DPlQayFd.js +0 -967
  1063. package/dist/code-preview-DPlQayFd.js.map +0 -1
  1064. package/dist/code-preview-jPnX60FF.cjs +0 -193
  1065. package/dist/code-preview-jPnX60FF.cjs.map +0 -1
  1066. package/dist/components.cjs.map +0 -1
  1067. package/dist/components.js.map +0 -1
  1068. package/dist/consume-5D1qfVWM.js +0 -38
  1069. package/dist/consume-5D1qfVWM.js.map +0 -1
  1070. package/dist/consume-edta5ng5.cjs +0 -2
  1071. package/dist/consume-edta5ng5.cjs.map +0 -1
  1072. package/dist/content-drawer.cjs.map +0 -1
  1073. package/dist/content-drawer.js.map +0 -1
  1074. package/dist/context-create-B_S-sD5B.js +0 -1107
  1075. package/dist/context-create-B_S-sD5B.js.map +0 -1
  1076. package/dist/context-create-DTybDbZp.cjs +0 -2
  1077. package/dist/context-create-DTybDbZp.cjs.map +0 -1
  1078. package/dist/date-range-GFm5NG33.js +0 -639
  1079. package/dist/date-range-GFm5NG33.js.map +0 -1
  1080. package/dist/date-range-inline-CgX2o0FP.cjs +0 -44
  1081. package/dist/date-range-inline-CgX2o0FP.cjs.map +0 -1
  1082. package/dist/date-range-inline-DTQLESAZ.js +0 -197
  1083. package/dist/date-range-inline-DTQLESAZ.js.map +0 -1
  1084. package/dist/date-range-inline.cjs.map +0 -1
  1085. package/dist/date-range-inline.js.map +0 -1
  1086. package/dist/date-range-ug3B9CFT.cjs +0 -119
  1087. package/dist/date-range-ug3B9CFT.cjs.map +0 -1
  1088. package/dist/date-range.cjs.map +0 -1
  1089. package/dist/date-range.js.map +0 -1
  1090. package/dist/delay-CWtBL0VD.cjs +0 -10
  1091. package/dist/delay-CWtBL0VD.cjs.map +0 -1
  1092. package/dist/delay-DEe1CmHc.js +0 -288
  1093. package/dist/delay-DEe1CmHc.js.map +0 -1
  1094. package/dist/delay.cjs.map +0 -1
  1095. package/dist/delay.js.map +0 -1
  1096. package/dist/details-D-LXW23W.js +0 -100
  1097. package/dist/details-D-LXW23W.js.map +0 -1
  1098. package/dist/details-DVke77dU.cjs +0 -55
  1099. package/dist/details-DVke77dU.cjs.map +0 -1
  1100. package/dist/details.cjs.map +0 -1
  1101. package/dist/details.js.map +0 -1
  1102. package/dist/dialog-service-C86xTS8q.cjs +0 -2
  1103. package/dist/dialog-service-C86xTS8q.cjs.map +0 -1
  1104. package/dist/dialog-service-D9E3jLAR.js +0 -118
  1105. package/dist/dialog-service-D9E3jLAR.js.map +0 -1
  1106. package/dist/dialog.component-BM0D-hK9.cjs +0 -48
  1107. package/dist/dialog.component-BM0D-hK9.cjs.map +0 -1
  1108. package/dist/dialog.component-a7FlKhGD.js +0 -145
  1109. package/dist/dialog.component-a7FlKhGD.js.map +0 -1
  1110. package/dist/discovery.service-BbYjU5x8.js +0 -21
  1111. package/dist/discovery.service-BbYjU5x8.js.map +0 -1
  1112. package/dist/discovery.service-BpGCuXPd.cjs +0 -2
  1113. package/dist/discovery.service-BpGCuXPd.cjs.map +0 -1
  1114. package/dist/divider-CzTpxOqt.js +0 -84
  1115. package/dist/divider-CzTpxOqt.js.map +0 -1
  1116. package/dist/divider-D8KStUhN.cjs +0 -58
  1117. package/dist/divider-D8KStUhN.cjs.map +0 -1
  1118. package/dist/divider.cjs.map +0 -1
  1119. package/dist/divider.js.map +0 -1
  1120. package/dist/dropdown-content-CngZN3vv.cjs +0 -58
  1121. package/dist/dropdown-content-CngZN3vv.cjs.map +0 -1
  1122. package/dist/dropdown-content-DCn-g0-f.js +0 -147
  1123. package/dist/dropdown-content-DCn-g0-f.js.map +0 -1
  1124. package/dist/email-recipients-BhntMZMf.cjs +0 -1173
  1125. package/dist/email-recipients-BhntMZMf.cjs.map +0 -1
  1126. package/dist/email-recipients-BzjAKNJ0.js +0 -1733
  1127. package/dist/email-recipients-BzjAKNJ0.js.map +0 -1
  1128. package/dist/emotional-sounds-BRnFhww6.js +0 -234
  1129. package/dist/emotional-sounds-BRnFhww6.js.map +0 -1
  1130. package/dist/emotional-sounds-DVGhmoZf.cjs +0 -2
  1131. package/dist/emotional-sounds-DVGhmoZf.cjs.map +0 -1
  1132. package/dist/extra.cjs.map +0 -1
  1133. package/dist/extra.js.map +0 -1
  1134. package/dist/flex-5dR48zie.js +0 -183
  1135. package/dist/flex-5dR48zie.js.map +0 -1
  1136. package/dist/flex-oHl2EfYB.cjs +0 -18
  1137. package/dist/flex-oHl2EfYB.cjs.map +0 -1
  1138. package/dist/flow-D0e7hGXO.cjs +0 -2
  1139. package/dist/flow-D0e7hGXO.cjs.map +0 -1
  1140. package/dist/flow-DXYqC9OA.js +0 -340
  1141. package/dist/flow-DXYqC9OA.js.map +0 -1
  1142. package/dist/form-BlPiAPt7.cjs +0 -2
  1143. package/dist/form-BlPiAPt7.cjs.map +0 -1
  1144. package/dist/form-BxVM6JTn.js +0 -141
  1145. package/dist/form-BxVM6JTn.js.map +0 -1
  1146. package/dist/form.cjs.map +0 -1
  1147. package/dist/form.js.map +0 -1
  1148. package/dist/formField.mixin-BCGA7Ea3.js +0 -48
  1149. package/dist/formField.mixin-BCGA7Ea3.js.map +0 -1
  1150. package/dist/formField.mixin-BfJMifU9.cjs +0 -2
  1151. package/dist/formField.mixin-BfJMifU9.cjs.map +0 -1
  1152. package/dist/height-CfECBO2j.js +0 -44
  1153. package/dist/height-CfECBO2j.js.map +0 -1
  1154. package/dist/height-Z70qJYJK.cjs +0 -2
  1155. package/dist/height-Z70qJYJK.cjs.map +0 -1
  1156. package/dist/icon-DHEXr3c-.cjs +0 -49
  1157. package/dist/icon-DHEXr3c-.cjs.map +0 -1
  1158. package/dist/icon-DYpLoegR.js +0 -84
  1159. package/dist/icon-DYpLoegR.js.map +0 -1
  1160. package/dist/icon-button-CmZBLHWC.js +0 -164
  1161. package/dist/icon-button-CmZBLHWC.js.map +0 -1
  1162. package/dist/icon-button-IbSX8C98.cjs +0 -70
  1163. package/dist/icon-button-IbSX8C98.cjs.map +0 -1
  1164. package/dist/icons.cjs.map +0 -1
  1165. package/dist/icons.js.map +0 -1
  1166. package/dist/index-CCi1otmh.cjs +0 -2
  1167. package/dist/index-CCi1otmh.cjs.map +0 -1
  1168. package/dist/index-CW6PhEkx.js +0 -17
  1169. package/dist/index-CW6PhEkx.js.map +0 -1
  1170. package/dist/index.cjs.map +0 -1
  1171. package/dist/index.js.map +0 -1
  1172. package/dist/input-BByjYlgl.cjs +0 -51
  1173. package/dist/input-BByjYlgl.cjs.map +0 -1
  1174. package/dist/input-D0cQ9DOY.js +0 -237
  1175. package/dist/input-D0cQ9DOY.js.map +0 -1
  1176. package/dist/input-chip-B5ErXgCB.js +0 -206
  1177. package/dist/input-chip-B5ErXgCB.js.map +0 -1
  1178. package/dist/input-chip-DkWaTciP.cjs +0 -147
  1179. package/dist/input-chip-DkWaTciP.cjs.map +0 -1
  1180. package/dist/input.cjs.map +0 -1
  1181. package/dist/input.js.map +0 -1
  1182. package/dist/intersection-CJxzz8c-.js +0 -15
  1183. package/dist/intersection-CJxzz8c-.js.map +0 -1
  1184. package/dist/intersection-CVvaDv96.cjs +0 -2
  1185. package/dist/intersection-CVvaDv96.cjs.map +0 -1
  1186. package/dist/json-BZVe74np.cjs +0 -12
  1187. package/dist/json-BZVe74np.cjs.map +0 -1
  1188. package/dist/json-PKewOWuJ.js +0 -51
  1189. package/dist/json-PKewOWuJ.js.map +0 -1
  1190. package/dist/layout.cjs.map +0 -1
  1191. package/dist/layout.js.map +0 -1
  1192. package/dist/lightbox-service-D-0JtxB1.cjs +0 -202
  1193. package/dist/lightbox-service-D-0JtxB1.cjs.map +0 -1
  1194. package/dist/lightbox-service-DZMnb1eU.js +0 -458
  1195. package/dist/lightbox-service-DZMnb1eU.js.map +0 -1
  1196. package/dist/lightbox.cjs.map +0 -1
  1197. package/dist/lightbox.js.map +0 -1
  1198. package/dist/list-B_2m7l3g.cjs +0 -17
  1199. package/dist/list-B_2m7l3g.cjs.map +0 -1
  1200. package/dist/list-CW56LV-v.js +0 -69
  1201. package/dist/list-CW56LV-v.js.map +0 -1
  1202. package/dist/list.cjs.map +0 -1
  1203. package/dist/list.js.map +0 -1
  1204. package/dist/litElement.mixin-CrpeGpZ7.cjs +0 -2
  1205. package/dist/litElement.mixin-CrpeGpZ7.cjs.map +0 -1
  1206. package/dist/litElement.mixin-DHZXtvYq.js +0 -15
  1207. package/dist/litElement.mixin-DHZXtvYq.js.map +0 -1
  1208. package/dist/mailbox.cjs.map +0 -1
  1209. package/dist/mailbox.js.map +0 -1
  1210. package/dist/map-2Hl60a0A.js +0 -175
  1211. package/dist/map-2Hl60a0A.js.map +0 -1
  1212. package/dist/map-DyPS9G7M.cjs +0 -81
  1213. package/dist/map-DyPS9G7M.cjs.map +0 -1
  1214. package/dist/map.cjs.map +0 -1
  1215. package/dist/map.js.map +0 -1
  1216. package/dist/media-CS8HpKnK.cjs +0 -152
  1217. package/dist/media-CS8HpKnK.cjs.map +0 -1
  1218. package/dist/media-DtWbcRxL.js +0 -244
  1219. package/dist/media-DtWbcRxL.js.map +0 -1
  1220. package/dist/menu-Caju5-zd.js +0 -60
  1221. package/dist/menu-Caju5-zd.js.map +0 -1
  1222. package/dist/menu-rX5RPAI2.cjs +0 -24
  1223. package/dist/menu-rX5RPAI2.cjs.map +0 -1
  1224. package/dist/menu.cjs.map +0 -1
  1225. package/dist/menu.js.map +0 -1
  1226. package/dist/nav-drawer.cjs.map +0 -1
  1227. package/dist/nav-drawer.js.map +0 -1
  1228. package/dist/navigation-bar.cjs.map +0 -1
  1229. package/dist/navigation-bar.js.map +0 -1
  1230. package/dist/navigation-rail-Ctketq5a.js +0 -256
  1231. package/dist/navigation-rail-Ctketq5a.js.map +0 -1
  1232. package/dist/navigation-rail-DC9_oSIM.cjs +0 -79
  1233. package/dist/navigation-rail-DC9_oSIM.cjs.map +0 -1
  1234. package/dist/notification-service-CUlfXqmj.js +0 -155
  1235. package/dist/notification-service-CUlfXqmj.js.map +0 -1
  1236. package/dist/notification-service-DknbpqTt.cjs +0 -19
  1237. package/dist/notification-service-DknbpqTt.cjs.map +0 -1
  1238. package/dist/notification.cjs.map +0 -1
  1239. package/dist/notification.js.map +0 -1
  1240. package/dist/notify-DJSOWTxv.js +0 -35
  1241. package/dist/notify-DJSOWTxv.js.map +0 -1
  1242. package/dist/notify-DickIEHW.cjs +0 -2
  1243. package/dist/notify-DickIEHW.cjs.map +0 -1
  1244. package/dist/number-B7aCRYnH.cjs +0 -2
  1245. package/dist/number-B7aCRYnH.cjs.map +0 -1
  1246. package/dist/number-BhTiptLA.js +0 -99
  1247. package/dist/number-BhTiptLA.js.map +0 -1
  1248. package/dist/option-Bng41-rY.js +0 -77
  1249. package/dist/option-Bng41-rY.js.map +0 -1
  1250. package/dist/option-DYT5Rkgy.cjs +0 -44
  1251. package/dist/option-DYT5Rkgy.cjs.map +0 -1
  1252. package/dist/option.cjs.map +0 -1
  1253. package/dist/option.js.map +0 -1
  1254. package/dist/page-BLn9gtSd.cjs +0 -20
  1255. package/dist/page-BLn9gtSd.cjs.map +0 -1
  1256. package/dist/page-D-ROcQDd.js +0 -48
  1257. package/dist/page-D-ROcQDd.js.map +0 -1
  1258. package/dist/payment-card-form-5UtfWzoW.cjs +0 -74
  1259. package/dist/payment-card-form-5UtfWzoW.cjs.map +0 -1
  1260. package/dist/payment-card-form-BJa4RgF2.js +0 -515
  1261. package/dist/payment-card-form-BJa4RgF2.js.map +0 -1
  1262. package/dist/pills-BS5rZ6C3.js +0 -346
  1263. package/dist/pills-BS5rZ6C3.js.map +0 -1
  1264. package/dist/pills-Blf7IAeq.cjs +0 -113
  1265. package/dist/pills-Blf7IAeq.cjs.map +0 -1
  1266. package/dist/progress-DlhYniW_.cjs +0 -35
  1267. package/dist/progress-DlhYniW_.cjs.map +0 -1
  1268. package/dist/progress-yTIX6EqC.js +0 -56
  1269. package/dist/progress-yTIX6EqC.js.map +0 -1
  1270. package/dist/progress.cjs.map +0 -1
  1271. package/dist/progress.js.map +0 -1
  1272. package/dist/provide-BxZ2kn_p.cjs +0 -2
  1273. package/dist/provide-BxZ2kn_p.cjs.map +0 -1
  1274. package/dist/provide-tcktw8xB.js +0 -100
  1275. package/dist/provide-tcktw8xB.js.map +0 -1
  1276. package/dist/qr-scanner-DOs7uNS_.cjs +0 -29
  1277. package/dist/qr-scanner-DOs7uNS_.cjs.map +0 -1
  1278. package/dist/qr-scanner-DjZ8mgHV.js +0 -743
  1279. package/dist/qr-scanner-DjZ8mgHV.js.map +0 -1
  1280. package/dist/radio-button-N_PrrxKB.cjs +0 -41
  1281. package/dist/radio-button-N_PrrxKB.cjs.map +0 -1
  1282. package/dist/radio-button-me3SRHGu.js +0 -115
  1283. package/dist/radio-button-me3SRHGu.js.map +0 -1
  1284. package/dist/radio-group.cjs.map +0 -1
  1285. package/dist/radio-group.js.map +0 -1
  1286. package/dist/ripple-BgJXbNSP.js +0 -124
  1287. package/dist/ripple-BgJXbNSP.js.map +0 -1
  1288. package/dist/ripple-x6sTX02K.cjs +0 -16
  1289. package/dist/ripple-x6sTX02K.cjs.map +0 -1
  1290. package/dist/rxjs-utils.cjs.map +0 -1
  1291. package/dist/rxjs-utils.js.map +0 -1
  1292. package/dist/schmancy-steps-container-J6P-NNNj.js +0 -156
  1293. package/dist/schmancy-steps-container-J6P-NNNj.js.map +0 -1
  1294. package/dist/schmancy-steps-container-T57BKMzi.cjs +0 -70
  1295. package/dist/schmancy-steps-container-T57BKMzi.cjs.map +0 -1
  1296. package/dist/scroll-C_gfUgjn.js +0 -87
  1297. package/dist/scroll-C_gfUgjn.js.map +0 -1
  1298. package/dist/scroll-CecsowP7.cjs +0 -27
  1299. package/dist/scroll-CecsowP7.cjs.map +0 -1
  1300. package/dist/search-B1s7thB0.cjs +0 -2
  1301. package/dist/search-B1s7thB0.cjs.map +0 -1
  1302. package/dist/search-DxxnLa5u.js +0 -95
  1303. package/dist/search-DxxnLa5u.js.map +0 -1
  1304. package/dist/select-BBA0gBHf.js +0 -280
  1305. package/dist/select-BBA0gBHf.js.map +0 -1
  1306. package/dist/select-D9oCjv7N.cjs +0 -57
  1307. package/dist/select-D9oCjv7N.cjs.map +0 -1
  1308. package/dist/select.cjs.map +0 -1
  1309. package/dist/select.js.map +0 -1
  1310. package/dist/selector-hook-9w2auh2O.cjs +0 -2
  1311. package/dist/selector-hook-9w2auh2O.cjs.map +0 -1
  1312. package/dist/selector-hook-CHV4kDMd.js +0 -319
  1313. package/dist/selector-hook-CHV4kDMd.js.map +0 -1
  1314. package/dist/sheet-0oUfBmXX.cjs +0 -15
  1315. package/dist/sheet-0oUfBmXX.cjs.map +0 -1
  1316. package/dist/sheet-CNcDT3VP.js +0 -97
  1317. package/dist/sheet-CNcDT3VP.js.map +0 -1
  1318. package/dist/sheet.cjs.map +0 -1
  1319. package/dist/sheet.js.map +0 -1
  1320. package/dist/sheet.service-2MobB-9z.js +0 -68
  1321. package/dist/sheet.service-2MobB-9z.js.map +0 -1
  1322. package/dist/sheet.service-su_7yDQ-.cjs +0 -2
  1323. package/dist/sheet.service-su_7yDQ-.cjs.map +0 -1
  1324. package/dist/slider-CV-Ehp_5.cjs +0 -83
  1325. package/dist/slider-CV-Ehp_5.cjs.map +0 -1
  1326. package/dist/slider-CkE-iFUy.js +0 -161
  1327. package/dist/slider-CkE-iFUy.js.map +0 -1
  1328. package/dist/sound.service-Nza4c6wv.js +0 -102
  1329. package/dist/sound.service-Nza4c6wv.js.map +0 -1
  1330. package/dist/sound.service-eRirZw59.cjs +0 -2
  1331. package/dist/sound.service-eRirZw59.cjs.map +0 -1
  1332. package/dist/spinner-Bfn8KC-9.cjs +0 -135
  1333. package/dist/spinner-Bfn8KC-9.cjs.map +0 -1
  1334. package/dist/spinner-DiMbWXp9.js +0 -168
  1335. package/dist/spinner-DiMbWXp9.js.map +0 -1
  1336. package/dist/store.cjs.map +0 -1
  1337. package/dist/store.js.map +0 -1
  1338. package/dist/suggestion-chip-CEDqUNoS.js +0 -481
  1339. package/dist/suggestion-chip-CEDqUNoS.js.map +0 -1
  1340. package/dist/suggestion-chip-HhsLtZXR.cjs +0 -271
  1341. package/dist/suggestion-chip-HhsLtZXR.cjs.map +0 -1
  1342. package/dist/surface-CW3H23Va.cjs +0 -199
  1343. package/dist/surface-CW3H23Va.cjs.map +0 -1
  1344. package/dist/surface-eBfnSwQS.js +0 -220
  1345. package/dist/surface-eBfnSwQS.js.map +0 -1
  1346. package/dist/surface.cjs.map +0 -1
  1347. package/dist/surface.js.map +0 -1
  1348. package/dist/table-D0tiSL_u.cjs +0 -64
  1349. package/dist/table-D0tiSL_u.cjs.map +0 -1
  1350. package/dist/table-Dmo4TvTx.js +0 -561
  1351. package/dist/table-Dmo4TvTx.js.map +0 -1
  1352. package/dist/table.cjs.map +0 -1
  1353. package/dist/table.js.map +0 -1
  1354. package/dist/tabs-compatibility-Bit6y6en.js +0 -104
  1355. package/dist/tabs-compatibility-Bit6y6en.js.map +0 -1
  1356. package/dist/tabs-compatibility-Vq_2-ekz.cjs +0 -35
  1357. package/dist/tabs-compatibility-Vq_2-ekz.cjs.map +0 -1
  1358. package/dist/tabs.cjs.map +0 -1
  1359. package/dist/tabs.js.map +0 -1
  1360. package/dist/tailwind.mixin-Bp_PR6yc.js +0 -67
  1361. package/dist/tailwind.mixin-Bp_PR6yc.js.map +0 -1
  1362. package/dist/tailwind.mixin-Cp4PyXok.cjs +0 -2
  1363. package/dist/tailwind.mixin-Cp4PyXok.cjs.map +0 -1
  1364. package/dist/teleport.cjs.map +0 -1
  1365. package/dist/teleport.js.map +0 -1
  1366. package/dist/textarea-B1d1QCqT.js +0 -134
  1367. package/dist/textarea-B1d1QCqT.js.map +0 -1
  1368. package/dist/textarea-DG8CHhZA.cjs +0 -44
  1369. package/dist/textarea-DG8CHhZA.cjs.map +0 -1
  1370. package/dist/textarea.cjs.map +0 -1
  1371. package/dist/textarea.js.map +0 -1
  1372. package/dist/theme-button-CPL6Eaqd.cjs +0 -9
  1373. package/dist/theme-button-CPL6Eaqd.cjs.map +0 -1
  1374. package/dist/theme-button-CrLuMQNe.js +0 -27
  1375. package/dist/theme-button-CrLuMQNe.js.map +0 -1
  1376. package/dist/theme-button.cjs.map +0 -1
  1377. package/dist/theme-button.js.map +0 -1
  1378. package/dist/theme-controller-boat-CXbNJSI3.cjs +0 -178
  1379. package/dist/theme-controller-boat-CXbNJSI3.cjs.map +0 -1
  1380. package/dist/theme-controller-boat-CzSmjyKq.js +0 -1159
  1381. package/dist/theme-controller-boat-CzSmjyKq.js.map +0 -1
  1382. package/dist/theme.cjs.map +0 -1
  1383. package/dist/theme.events-CPSLaOlR.js +0 -6
  1384. package/dist/theme.events-CPSLaOlR.js.map +0 -1
  1385. package/dist/theme.events-Car6U_SQ.cjs +0 -2
  1386. package/dist/theme.events-Car6U_SQ.cjs.map +0 -1
  1387. package/dist/theme.interface-BLfE5J_1.js +0 -5
  1388. package/dist/theme.interface-BLfE5J_1.js.map +0 -1
  1389. package/dist/theme.interface-BMeNadVb.cjs +0 -2
  1390. package/dist/theme.interface-BMeNadVb.cjs.map +0 -1
  1391. package/dist/theme.js.map +0 -1
  1392. package/dist/timezone-4vwX0BgA.js +0 -112
  1393. package/dist/timezone-4vwX0BgA.js.map +0 -1
  1394. package/dist/timezone-BxvQcqe1.cjs +0 -32
  1395. package/dist/timezone-BxvQcqe1.cjs.map +0 -1
  1396. package/dist/tooltip-CjdvBf4X.js +0 -119
  1397. package/dist/tooltip-CjdvBf4X.js.map +0 -1
  1398. package/dist/tooltip-ZtnGjoJd.cjs +0 -7
  1399. package/dist/tooltip-ZtnGjoJd.cjs.map +0 -1
  1400. package/dist/tree-CBEjV7jP.js +0 -65
  1401. package/dist/tree-CBEjV7jP.js.map +0 -1
  1402. package/dist/tree-DP5U00NA.cjs +0 -27
  1403. package/dist/tree-DP5U00NA.cjs.map +0 -1
  1404. package/dist/tslib.es6-DgOcxv4s.cjs +0 -2
  1405. package/dist/tslib.es6-DgOcxv4s.cjs.map +0 -1
  1406. package/dist/tslib.es6-ujVQHAQ4.js +0 -10
  1407. package/dist/tslib.es6-ujVQHAQ4.js.map +0 -1
  1408. package/dist/typewriter-C6kFjLcX.cjs +0 -124
  1409. package/dist/typewriter-C6kFjLcX.cjs.map +0 -1
  1410. package/dist/typewriter-Eo5qXoGC.js +0 -555
  1411. package/dist/typewriter-Eo5qXoGC.js.map +0 -1
  1412. package/dist/typewriter.cjs.map +0 -1
  1413. package/dist/typewriter.js.map +0 -1
  1414. package/dist/typography-C_1gdM2I.js +0 -264
  1415. package/dist/typography-C_1gdM2I.js.map +0 -1
  1416. package/dist/typography-DGyjlLCE.cjs +0 -243
  1417. package/dist/typography-DGyjlLCE.cjs.map +0 -1
  1418. package/dist/utils-C38P63L6.cjs +0 -2
  1419. package/dist/utils-C38P63L6.cjs.map +0 -1
  1420. package/dist/utils-CYOVFxSx.js +0 -150
  1421. package/dist/utils-CYOVFxSx.js.map +0 -1
  1422. package/dist/utils.cjs.map +0 -1
  1423. package/dist/utils.js.map +0 -1
  1424. package/types/src/animated-text/animated-text.d.ts +0 -30
  1425. package/types/src/animated-text/index.d.ts +0 -1
  1426. package/types/src/directives/height.d.ts +0 -20
@@ -0,0 +1,1584 @@
1
+ import { i as e, t } from "./tailwind.mixin-BIVhjNvD.js";
2
+ import { t as n } from "./litElement.mixin-Dm-4L8zL.js";
3
+ import "./mixins.js";
4
+ import { t as r } from "./dialog-service-NZEvyEK-.js";
5
+ import { n as i } from "./sheet.service-CAB7weBc.js";
6
+ import "./dialog.js";
7
+ import { r as a } from "./notification-DzYT4deA.js";
8
+ import { fromEvent as o, takeUntil as s } from "rxjs";
9
+ import { customElement as c, property as l, state as u } from "lit/decorators.js";
10
+ import { css as d, html as f } from "lit";
11
+ import { createRef as p, ref as m } from "lit/directives/ref.js";
12
+ import { repeat as h } from "lit/directives/repeat.js";
13
+ import { when as g } from "lit/directives/when.js";
14
+ var _ = class extends n(d`
15
+ :host {
16
+ display: block;
17
+ height: 100%;
18
+ }
19
+ `) {
20
+ constructor(...e) {
21
+ super(...e), this.config = {}, this.templates = [], this.importSources = [], this.disabled = !1, this.recipientsTitle = "Recipients", this.recipientsEmptyTitle = "No recipients yet", this.recipientsEmptyMessage = "Import from sources or upload a CSV", this.enableCsvImport = !0, this.enableDragDrop = !0, this.recipients = [], this.selectedRecipients = [], this.subject = "", this.body = "", this.templateId = null, this.attachments = [], this.isSending = !1, this.handleEmailsImported = (e) => {
22
+ let { emails: t } = e.detail, n = [...new Set([...this.recipients, ...t])], r = t.filter((e) => !this.recipients.includes(e));
23
+ this.recipients = n, this.selectedRecipients = [...new Set([...this.selectedRecipients, ...r])], this.dispatchEvent(new CustomEvent("emails-imported", {
24
+ detail: {
25
+ emails: r,
26
+ source: e.detail.source
27
+ },
28
+ bubbles: !0,
29
+ composed: !0
30
+ }));
31
+ }, this.handleRecipientRemoved = (e) => {
32
+ let { email: t } = e.detail;
33
+ this.recipients = this.recipients.filter((e) => e !== t), this.selectedRecipients = this.selectedRecipients.filter((e) => e !== t), this.dispatchEvent(new CustomEvent("recipient-removed", {
34
+ detail: { email: t },
35
+ bubbles: !0,
36
+ composed: !0
37
+ }));
38
+ }, this.handleRecipientsCleared = () => {
39
+ this.recipients = [], this.selectedRecipients = [], this.dispatchEvent(new CustomEvent("recipients-cleared", {
40
+ bubbles: !0,
41
+ composed: !0
42
+ }));
43
+ }, this.handleSelectionChanged = (e) => {
44
+ let { selectedEmails: t } = e.detail;
45
+ this.selectedRecipients = t, this.dispatchEvent(new CustomEvent("selection-changed", {
46
+ detail: { selectedEmails: t },
47
+ bubbles: !0,
48
+ composed: !0
49
+ }));
50
+ }, this.handleEditorChange = (e) => {
51
+ let { subject: t, body: n, templateId: r, attachments: i } = e.detail;
52
+ this.subject = t, this.body = n, this.templateId = r, this.attachments = i, this.dispatchEvent(new CustomEvent("compose-changed", {
53
+ detail: {
54
+ subject: t,
55
+ body: n,
56
+ templateId: r,
57
+ attachments: i
58
+ },
59
+ bubbles: !0,
60
+ composed: !0
61
+ }));
62
+ }, this.handleSend = async () => {
63
+ if (this.selectedRecipients.length !== 0) if (this.subject.trim()) if (this.body.trim()) {
64
+ this.isSending = !0;
65
+ try {
66
+ let e = {
67
+ recipients: this.selectedRecipients,
68
+ subject: this.subject,
69
+ body: this.body,
70
+ attachments: this.attachments,
71
+ templateId: this.templateId
72
+ };
73
+ this.dispatchEvent(new CustomEvent("send-email", {
74
+ detail: { request: e },
75
+ bubbles: !0,
76
+ composed: !0
77
+ }));
78
+ } catch (e) {
79
+ this.dispatchEvent(new CustomEvent("send-error", {
80
+ detail: { error: e instanceof Error ? e.message : "Failed to send email" },
81
+ bubbles: !0,
82
+ composed: !0
83
+ }));
84
+ } finally {
85
+ this.isSending = !1;
86
+ }
87
+ } else this.dispatchEvent(new CustomEvent("send-error", {
88
+ detail: { error: "Please enter a message body" },
89
+ bubbles: !0,
90
+ composed: !0
91
+ }));
92
+ else this.dispatchEvent(new CustomEvent("send-error", {
93
+ detail: { error: "Please enter a subject" },
94
+ bubbles: !0,
95
+ composed: !0
96
+ }));
97
+ else this.dispatchEvent(new CustomEvent("send-error", {
98
+ detail: { error: "Please select at least one recipient" },
99
+ bubbles: !0,
100
+ composed: !0
101
+ }));
102
+ };
103
+ }
104
+ connectedCallback() {
105
+ super.connectedCallback(), this.setSending(this.disabled);
106
+ }
107
+ updated(e) {
108
+ super.updated(e), e.has("disabled") && this.setSending(this.disabled);
109
+ }
110
+ addRecipients(e) {
111
+ let t = [...new Set([...this.recipients, ...e])], n = e.filter((e) => !this.recipients.includes(e));
112
+ this.recipients = t, this.selectedRecipients = [...new Set([...this.selectedRecipients, ...n])];
113
+ }
114
+ setSubject(e) {
115
+ this.subject = e;
116
+ }
117
+ setBody(e) {
118
+ this.body = e;
119
+ }
120
+ setTemplate(e) {
121
+ this.templateId = e;
122
+ }
123
+ clearCompose() {
124
+ this.recipients = [], this.selectedRecipients = [], this.subject = "", this.body = "", this.templateId = null, this.attachments = [];
125
+ }
126
+ setSending(e) {
127
+ this.isSending = e;
128
+ }
129
+ render() {
130
+ let e = this.selectedRecipients.length > 0 && this.subject.trim() && this.body.trim() && !this.isSending && !this.disabled;
131
+ return f`
132
+ <!-- Main Layout Container -->
133
+ <div class="flex flex-col h-full gap-6 p-6">
134
+
135
+ <!-- Main Content Section: Composer and Preview -->
136
+ <div class="flex flex-col xl:flex-row gap-6 flex-1 min-h-0">
137
+
138
+ <!-- Composer Section - Full width on mobile/tablet, half on large screens -->
139
+ <div class="w-full xl:w-1/2 min-h-0 flex flex-col">
140
+ <schmancy-email-editor
141
+ .subject=${this.subject}
142
+ .body=${this.body}
143
+ .templates=${this.templates}
144
+ .attachments=${this.attachments}
145
+ .disabled=${this.disabled}
146
+ .config=${this.config}
147
+ @editor-change=${this.handleEditorChange}
148
+ class="h-full"
149
+ ></schmancy-email-editor>
150
+ </div>
151
+
152
+ <!-- Preview Section - Full width on mobile/tablet, half on large screens -->
153
+ <div class="w-full xl:w-1/2 min-h-0 flex flex-col">
154
+ <schmancy-email-viewer
155
+ .subject=${this.subject}
156
+ .body=${this.body}
157
+ .recipients=${this.selectedRecipients}
158
+ .attachments=${this.attachments}
159
+ class="h-full"
160
+ ></schmancy-email-viewer>
161
+ </div>
162
+
163
+ </div>
164
+
165
+ <!-- Send Section - Sticky bottom bar -->
166
+ <div class="shrink-0">
167
+ <schmancy-surface
168
+ type="subtle"
169
+ rounded="all"
170
+ class="p-4"
171
+ >
172
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
173
+ <!-- Send Info -->
174
+ <div class="flex flex-col gap-1">
175
+ <schmancy-typography type="body" token="sm" class="font-medium">
176
+ ${this.selectedRecipients.length} recipient${this.selectedRecipients.length === 1 ? "" : "s"} selected
177
+ </schmancy-typography>
178
+ ${g(this.attachments.length > 0, () => f`
179
+ <schmancy-typography type="body" token="xs">
180
+ ${this.attachments.length} attachment${this.attachments.length === 1 ? "" : "s"}
181
+ </schmancy-typography>
182
+ `)}
183
+ </div>
184
+
185
+ <!-- Send Button -->
186
+ <schmancy-button
187
+ variant="filled"
188
+ ?disabled=${!e}
189
+ ?loading=${this.isSending}
190
+ @click=${this.handleSend}
191
+ class="w-full sm:w-auto"
192
+ >
193
+ <schmancy-icon slot="prefix" size="18px">send</schmancy-icon>
194
+ ${this.isSending ? "Sending..." : "Send Email"}
195
+ </schmancy-button>
196
+ </div>
197
+ </schmancy-surface>
198
+ </div>
199
+
200
+ </div>
201
+
202
+ <!-- Recipients Panel as Floating Boat -->
203
+ <schmancy-email-recipients
204
+ .recipients=${this.recipients}
205
+ .selectedRecipients=${this.selectedRecipients}
206
+ .importSources=${this.importSources}
207
+ .disabled=${this.disabled}
208
+ .enableCsvImport=${this.enableCsvImport}
209
+ .enableDragDrop=${this.enableDragDrop}
210
+ .title=${this.recipientsTitle}
211
+ .emptyStateTitle=${this.recipientsEmptyTitle}
212
+ .emptyStateMessage=${this.recipientsEmptyMessage}
213
+ @emails-imported=${this.handleEmailsImported}
214
+ @recipient-removed=${this.handleRecipientRemoved}
215
+ @recipients-cleared=${this.handleRecipientsCleared}
216
+ @selection-changed=${this.handleSelectionChanged}
217
+ ></schmancy-email-recipients>
218
+ `;
219
+ }
220
+ };
221
+ e([l({ type: Object })], _.prototype, "config", void 0), e([l({ type: Array })], _.prototype, "templates", void 0), e([l({ type: Array })], _.prototype, "importSources", void 0), e([l({ type: Boolean })], _.prototype, "disabled", void 0), e([l({ type: String })], _.prototype, "recipientsTitle", void 0), e([l({ type: String })], _.prototype, "recipientsEmptyTitle", void 0), e([l({ type: String })], _.prototype, "recipientsEmptyMessage", void 0), e([l({ type: Boolean })], _.prototype, "enableCsvImport", void 0), e([l({ type: Boolean })], _.prototype, "enableDragDrop", void 0), e([u()], _.prototype, "recipients", void 0), e([u()], _.prototype, "selectedRecipients", void 0), e([u()], _.prototype, "subject", void 0), e([u()], _.prototype, "body", void 0), e([u()], _.prototype, "templateId", void 0), e([u()], _.prototype, "attachments", void 0), e([u()], _.prototype, "isSending", void 0), _ = e([c("schmancy-mailbox")], _);
222
+ var v = class extends t() {
223
+ constructor(...e) {
224
+ super(...e), this.layouts = [
225
+ {
226
+ id: "columns-2",
227
+ icon: "view_week",
228
+ label: "2 Col"
229
+ },
230
+ {
231
+ id: "columns-3",
232
+ icon: "view_column",
233
+ label: "3 Col"
234
+ },
235
+ {
236
+ id: "sidebar-left",
237
+ icon: "view_sidebar",
238
+ label: "Left"
239
+ },
240
+ {
241
+ id: "sidebar-right",
242
+ icon: "view_sidebar",
243
+ label: "Right",
244
+ flipped: !0
245
+ },
246
+ {
247
+ id: "image-row",
248
+ icon: "collections",
249
+ label: "Images"
250
+ }
251
+ ];
252
+ }
253
+ selectLayout(e) {
254
+ this.dispatchEvent(new CustomEvent("layout-select", {
255
+ detail: { layout: e },
256
+ bubbles: !0,
257
+ composed: !0
258
+ }));
259
+ }
260
+ render() {
261
+ return f`
262
+ <div class="grid p-3 gap-2">
263
+ ${this.layouts.map((e) => f`
264
+ <schmancy-button
265
+ variant="outlined"
266
+ @click=${() => this.selectLayout(e.id)}
267
+ >
268
+ <schmancy-icon
269
+ slot="prefix"
270
+ size="20px"
271
+ class=${e.flipped ? "scale-x-[-1]" : ""}
272
+ >
273
+ ${e.icon}
274
+ </schmancy-icon>
275
+ ${e.label}
276
+ </schmancy-button>
277
+ `)}
278
+ </div>
279
+ `;
280
+ }
281
+ };
282
+ v = e([c("schmancy-email-layout-selector")], v);
283
+ var y = class extends n(d`
284
+ :host {
285
+ display: block;
286
+ }
287
+ `) {
288
+ constructor(...e) {
289
+ super(...e), this.templates = [], this.searchQuery = "", this.filteredTemplates = [], this.selectedCategory = "all", this.handleSearch = (e) => {
290
+ let t = e.target;
291
+ this.searchQuery = t.value;
292
+ }, this.handleCategorySelect = (e) => {
293
+ this.selectedCategory = e, this.updateFilteredTemplates();
294
+ }, this.selectTemplate = (e) => {
295
+ this.dispatchEvent(new CustomEvent("template-selected", {
296
+ detail: e,
297
+ bubbles: !0,
298
+ composed: !0
299
+ })), i.dismiss();
300
+ }, this.close = () => {
301
+ i.dismiss();
302
+ };
303
+ }
304
+ connectedCallback() {
305
+ super.connectedCallback(), this.updateFilteredTemplates();
306
+ }
307
+ updated(e) {
308
+ (e.has("templates") || e.has("searchQuery") || e.has("selectedCategory")) && this.updateFilteredTemplates();
309
+ }
310
+ get categories() {
311
+ let e = /* @__PURE__ */ new Set();
312
+ return this.templates.forEach((t) => {
313
+ t.category && e.add(t.category);
314
+ }), ["all", ...Array.from(e)];
315
+ }
316
+ updateFilteredTemplates() {
317
+ let e = [...this.templates];
318
+ if (this.selectedCategory !== "all" && (e = e.filter((e) => e.category === this.selectedCategory)), this.searchQuery.trim()) {
319
+ let t = this.searchQuery.toLowerCase();
320
+ e = e.filter((e) => e.name.toLowerCase().includes(t) || e.category?.toLowerCase().includes(t) || e.description?.toLowerCase().includes(t));
321
+ }
322
+ this.filteredTemplates = e;
323
+ }
324
+ render() {
325
+ return f`
326
+ <div class="flex flex-col h-full overflow-hidden">
327
+ <!-- Header -->
328
+ <div class="flex items-center justify-between px-6 py-4 border-b border-outline-variant">
329
+ <div class="flex items-center gap-3">
330
+ <schmancy-icon size="24px" class="text-primary">mail</schmancy-icon>
331
+ <schmancy-typography type="headline" token="md">
332
+ Choose Email Template
333
+ </schmancy-typography>
334
+ </div>
335
+ <schmancy-button
336
+ variant="text"
337
+ @click=${this.close}
338
+ class="hover:bg-surface-container rounded-full w-10 h-10 p-0"
339
+ >
340
+ <schmancy-icon>close</schmancy-icon>
341
+ </schmancy-button>
342
+ </div>
343
+
344
+ <!-- Body -->
345
+ <div class="flex-1 flex flex-col overflow-hidden">
346
+ ${this.renderTemplateList()}
347
+ </div>
348
+ </div>
349
+ `;
350
+ }
351
+ renderTemplateList() {
352
+ return f`
353
+ <!-- Search and Filter Bar -->
354
+ <div class="px-6 py-4 border-b border-outline-variant bg-surface-containerLow">
355
+ <div class="flex flex-col gap-4">
356
+ <!-- Search Input -->
357
+ <schmancy-input
358
+ type="search"
359
+ placeholder="Search templates..."
360
+ .value=${this.searchQuery}
361
+ @input=${this.handleSearch}
362
+ class="w-full"
363
+ >
364
+ <schmancy-icon slot="prefix" size="20px" class="text-surface-onVariant">search</schmancy-icon>
365
+ ${g(this.searchQuery, () => f`
366
+ <schmancy-button
367
+ slot="suffix"
368
+ variant="text"
369
+ @click=${() => {
370
+ this.searchQuery = "";
371
+ }}
372
+ class="rounded-full w-8 h-8 p-0"
373
+ >
374
+ <schmancy-icon size="16px">close</schmancy-icon>
375
+ </schmancy-button>
376
+ `)}
377
+ </schmancy-input>
378
+
379
+ <!-- Category Filter -->
380
+ ${g(this.categories.length > 1, () => f`
381
+ <div class="flex gap-2 flex-wrap">
382
+ ${h(this.categories, (e) => e, (e) => f`
383
+ <schmancy-chip
384
+ class="cursor-pointer transition-all hover:shadow-sm ${this.selectedCategory === e ? "bg-primary text-primary-on" : "border border-outline"}"
385
+ @click=${() => this.handleCategorySelect(e)}
386
+ >
387
+ ${e === "all" ? "All Templates" : e}
388
+ </schmancy-chip>
389
+ `)}
390
+ </div>
391
+ `)}
392
+ </div>
393
+ </div>
394
+
395
+ <!-- Template List with Previews -->
396
+ <div class="flex-1 overflow-y-auto px-6 py-6">
397
+ ${g(this.filteredTemplates.length > 0, () => f`
398
+ <div class="space-y-6">
399
+ ${h(this.filteredTemplates, (e) => e.id, (e) => f`
400
+ <schmancy-surface
401
+ type="subtle"
402
+ elevation="1"
403
+ rounded="all"
404
+ class="group cursor-pointer hover:elevation-3 transition-all duration-200 overflow-hidden"
405
+ @click=${() => this.selectTemplate(e)}
406
+ >
407
+ <!-- Template Header -->
408
+ <div class="p-4 border-b border-outline-variant">
409
+ <div class="flex items-start justify-between">
410
+ <div class="flex-1">
411
+ <schmancy-typography type="title" token="md" class="font-semibold leading-tight mb-1">
412
+ ${e.name}
413
+ </schmancy-typography>
414
+ ${g(e.category, () => f`
415
+ <schmancy-chip class="text-xs border border-outline">
416
+ ${e.category}
417
+ </schmancy-chip>
418
+ `)}
419
+ </div>
420
+ <schmancy-button
421
+ variant="filled"
422
+ size="sm"
423
+ class="opacity-0 group-hover:opacity-100 transition-opacity"
424
+ >
425
+ Use This
426
+ </schmancy-button>
427
+ </div>
428
+ </div>
429
+
430
+ <!-- Email Preview -->
431
+ <div class="p-4 bg-surface">
432
+ <schmancy-email-viewer
433
+ subject=${e.subject}
434
+ body=${e.body}
435
+ mode="desktop"
436
+ class="max-h-96 overflow-y-auto"
437
+ ></schmancy-email-viewer>
438
+ </div>
439
+ </schmancy-surface>
440
+ `)}
441
+ </div>
442
+ `, () => f`
443
+ <div class="flex flex-col items-center justify-center h-96 text-center">
444
+ <div class="mb-6">
445
+ <schmancy-icon size="64px" class="text-surface-onVariant opacity-20">mail_outline</schmancy-icon>
446
+ </div>
447
+ <schmancy-typography type="headline" token="sm" class="mb-2">
448
+ ${this.searchQuery || this.selectedCategory !== "all" ? "No templates found" : "No templates available"}
449
+ </schmancy-typography>
450
+ <schmancy-typography type="body" token="md" class="text-surface-onVariant mb-6 max-w-md">
451
+ ${this.searchQuery ? `No templates match your search for "${this.searchQuery}"` : this.selectedCategory === "all" ? "Start by creating your first email template" : `No templates found in the "${this.selectedCategory}" category`}
452
+ </schmancy-typography>
453
+ ${g(this.searchQuery || this.selectedCategory !== "all", () => f`
454
+ <div class="flex gap-3">
455
+ ${g(this.searchQuery, () => f`
456
+ <schmancy-button
457
+ variant="outlined"
458
+ @click=${() => {
459
+ this.searchQuery = "";
460
+ }}
461
+ >
462
+ <schmancy-icon slot="prefix">clear</schmancy-icon>
463
+ Clear Search
464
+ </schmancy-button>
465
+ `)}
466
+ ${g(this.selectedCategory !== "all", () => f`
467
+ <schmancy-button
468
+ variant="filled"
469
+ @click=${() => this.handleCategorySelect("all")}
470
+ >
471
+ <schmancy-icon slot="prefix">view_list</schmancy-icon>
472
+ Show All Templates
473
+ </schmancy-button>
474
+ `)}
475
+ </div>
476
+ `)}
477
+ </div>
478
+ `)}
479
+ </div>
480
+ `;
481
+ }
482
+ };
483
+ e([l({ type: Array })], y.prototype, "templates", void 0), e([u()], y.prototype, "searchQuery", void 0), e([u()], y.prototype, "filteredTemplates", void 0), e([u()], y.prototype, "selectedCategory", void 0), y = e([c("schmancy-email-template-picker")], y);
484
+ var b = class extends n(d`
485
+ :host {
486
+ display: block;
487
+ height: 100%;
488
+ }
489
+ `) {
490
+ constructor(...e) {
491
+ super(...e), this.subject = "", this.body = "", this.disabled = !1, this.attachments = [], this.config = {}, this.templates = this.getDefaultTemplates(), this.dragOver = !1, this.isUploading = !1, this.subjectInputRef = p(), this.bodyTextAreaRef = p(), this.fileInputRef = p(), this.imageInputRef = p(), this.handleKeyDown = (e) => {
492
+ if (this.disabled) return;
493
+ let t = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
494
+ e.key === "Tab" && e.target === t && (e.preventDefault(), this.insertAtCursor(" "));
495
+ }, this.handlePaste = (e) => {
496
+ let t = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
497
+ if (this.disabled || document.activeElement !== t) return;
498
+ let n = e.clipboardData?.items;
499
+ if (n) for (let t = 0; t < n.length; t++) {
500
+ let r = n[t];
501
+ if (r.type.indexOf("image") !== -1) {
502
+ e.preventDefault();
503
+ let t = r.getAsFile();
504
+ t && this.uploadImage(t);
505
+ break;
506
+ }
507
+ }
508
+ }, this.handleSubjectChange = (e) => {
509
+ let t = e.target;
510
+ this.subject = t.value, this.dispatchChange();
511
+ }, this.handleBodyChange = (e) => {
512
+ this.body = e.detail.value, this.dispatchChange();
513
+ }, this.dispatchChange = () => {
514
+ this.dispatchEvent(new CustomEvent("editor-change", {
515
+ detail: {
516
+ subject: this.subject,
517
+ body: this.body,
518
+ attachments: this.attachments
519
+ },
520
+ bubbles: !0,
521
+ composed: !0
522
+ }));
523
+ }, this.openLayoutDialog = () => {
524
+ r.component(f`
525
+ <schmancy-email-layout-selector
526
+ @layout-select=${(e) => {
527
+ this.applyLayout(e.detail.layout), r.close();
528
+ }}
529
+ ></schmancy-email-layout-selector>
530
+ `);
531
+ }, this.openTemplatePicker = () => {
532
+ let e = new y();
533
+ e.templates = this.templates, o(e, "template-selected").pipe(s(this.disconnecting)).subscribe(this.handleTemplateSelected), i.open({ component: e });
534
+ }, this.handleTemplateSelected = (e) => {
535
+ let t = e.detail;
536
+ this.subject = t.subject, this.body = t.body, this.dispatchChange(), a.success(`Template "${t.name}" applied successfully`);
537
+ }, this.applyLayout = (e) => {
538
+ let t = {
539
+ "columns-2": "\n:::layout columns-2\n<div class=\"column\">\n![Left Photo](https://via.placeholder.com/400x300?text=Replace+with+your+photo){height=300px}\n\n**Photo Title**\n\nReplace the placeholder image above with your own photo. The height=300px ensures both images have equal height while width adjusts automatically.\n</div>\n\n<div class=\"column\">\n![Right Photo](https://via.placeholder.com/400x300?text=Replace+with+your+photo){height=300px}\n\n**Photo Title**\n\nUse the same height value (300px) for both images to keep them aligned perfectly side by side.\n</div>\n:::\n",
540
+ "columns-3": "\n:::layout columns-3\n<div class=\"column\">\n![Photo 1](https://via.placeholder.com/300x200?text=Photo+1){height=200px}\n\n**Item Title**\n\nBrief description or caption for this item.\n</div>\n\n<div class=\"column\">\n![Photo 2](https://via.placeholder.com/300x200?text=Photo+2){height=200px}\n\n**Item Title**\n\nBrief description or caption for this item.\n</div>\n\n<div class=\"column\">\n![Photo 3](https://via.placeholder.com/300x200?text=Photo+3){height=200px}\n\n**Item Title**\n\nBrief description or caption for this item.\n</div>\n:::\n",
541
+ "sidebar-left": "\n:::layout sidebar-left\n<div class=\"sidebar\">\n**Sidebar Content**\n\n* Navigation item 1\n* Navigation item 2\n* Navigation item 3\n</div>\n\n<div class=\"main\">\n**Main Content Area**\n\nYour primary content goes here. This area takes up most of the width while the sidebar provides supplementary information or navigation.\n</div>\n:::\n",
542
+ "sidebar-right": "\n:::layout sidebar-right\n<div class=\"main\">\n**Main Content Area**\n\nYour primary content goes here. This area takes up most of the width while the sidebar provides supplementary information or navigation.\n</div>\n\n<div class=\"sidebar\">\n**Sidebar Content**\n\n* Quick links\n* Related info\n* Contact details\n</div>\n:::\n",
543
+ "image-row": "\n:::layout image-row\n<div class=\"image\">\n![Gallery Image 1](https://via.placeholder.com/400x250?text=Gallery+Image+1){height=250px}\n</div>\n\n<div class=\"image\">\n![Gallery Image 2](https://via.placeholder.com/400x250?text=Gallery+Image+2){height=250px}\n</div>\n\n<div class=\"image\">\n![Gallery Image 3](https://via.placeholder.com/400x250?text=Gallery+Image+3){height=250px}\n</div>\n:::\n"
544
+ }[e];
545
+ t && this.insertAtCursor(t);
546
+ }, this.uploadImage = async (e) => {
547
+ if (e.type.startsWith("image/")) if (e.size > 10485760) a.error(`Image "${e.name}" is too large. Maximum size is 10MB.`);
548
+ else {
549
+ this.isUploading = !0;
550
+ try {
551
+ let t;
552
+ this.config.imageUploadHandler ? t = await this.config.imageUploadHandler(e) : this.config.uploadHandler ? t = await this.config.uploadHandler(e) : (t = await this.createDataUrl(e), a.warning("No upload handler configured. Using local preview."));
553
+ let n = await this.getImageDimensions(e);
554
+ this.insertImageMarkdown(t, e.name, n.width, n.height), a.success("Image uploaded successfully");
555
+ } catch {
556
+ a.error("Failed to upload image");
557
+ } finally {
558
+ this.isUploading = !1;
559
+ }
560
+ }
561
+ else a.error(`File "${e.name}" is not an image`);
562
+ }, this.createDataUrl = (e) => new Promise((t, n) => {
563
+ let r = new FileReader();
564
+ r.onload = () => t(r.result), r.onerror = n, r.readAsDataURL(e);
565
+ }), this.getImageDimensions = (e) => new Promise((t) => {
566
+ let n = new Image();
567
+ n.onload = () => {
568
+ t({
569
+ width: n.width,
570
+ height: n.height
571
+ }), URL.revokeObjectURL(n.src);
572
+ }, n.onerror = () => {
573
+ t({
574
+ width: 400,
575
+ height: 300
576
+ }), URL.revokeObjectURL(n.src);
577
+ }, n.src = URL.createObjectURL(e);
578
+ }), this.insertImageMarkdown = (e, t, n, r) => {
579
+ let i = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
580
+ if (!i) return;
581
+ let a = `![${t}](${e}){width=${Math.min(n, 600)}px height=auto}`, o = i.selectionStart, s = i.selectionEnd, c = this.body.substring(0, o) + a + this.body.substring(s);
582
+ this.body = c, this.dispatchChange(), this.updateComplete.then(() => {
583
+ let e = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
584
+ if (e) {
585
+ let t = o + a.length;
586
+ e.setSelectionRange(t, t), e.focus();
587
+ }
588
+ });
589
+ }, this.handleFileChange = (e) => {
590
+ let t = e.target, n = t.files;
591
+ if (n) for (let e = 0; e < n.length; e++) {
592
+ let t = n[e];
593
+ t.type.startsWith("image/") ? this.uploadImage(t) : this.addFile(t);
594
+ }
595
+ t.value = "";
596
+ }, this.handleImageSelect = (e) => {
597
+ let t = e.target, n = t.files?.[0];
598
+ n && n.type.startsWith("image/") && this.uploadImage(n), t.value = "";
599
+ }, this.handleDrop = (e) => {
600
+ e.preventDefault(), this.dragOver = !1;
601
+ let t = e.dataTransfer?.files;
602
+ if (t) for (let e = 0; e < t.length; e++) {
603
+ let n = t[e];
604
+ n.type.startsWith("image/") ? this.uploadImage(n) : this.addFile(n);
605
+ }
606
+ }, this.handleDragEnter = (e) => {
607
+ e.preventDefault(), this.dragOver = !0;
608
+ }, this.handleDocumentDragLeave = (e) => {
609
+ e.preventDefault(), this.dragOver = !1;
610
+ }, this.handleDocumentDrop = (e) => {
611
+ e.preventDefault(), this.dragOver = !1;
612
+ }, this.handleDragOver = (e) => {
613
+ e.preventDefault();
614
+ }, this.handleDragLeave = (e) => {
615
+ e.preventDefault();
616
+ }, this.addFile = (e) => {
617
+ if (e.size > 10485760) return void a.error(`File "${e.name}" is too large. Maximum size is 10MB.`);
618
+ if (this.attachments.some((t) => t.name === e.name && t.size === e.size)) return void a.warning(`File "${e.name}" is already attached.`);
619
+ let t = {
620
+ id: crypto.randomUUID(),
621
+ file: e,
622
+ name: e.name,
623
+ size: e.size,
624
+ type: e.type || "application/octet-stream"
625
+ };
626
+ this.attachments = [...this.attachments, t], this.dispatchChange();
627
+ }, this.removeAttachment = (e) => {
628
+ this.attachments = this.attachments.filter((t) => t.id !== e), this.dispatchChange();
629
+ };
630
+ }
631
+ connectedCallback() {
632
+ super.connectedCallback(), this.addEventListeners();
633
+ }
634
+ disconnectedCallback() {
635
+ super.disconnectedCallback();
636
+ }
637
+ getDefaultTemplates() {
638
+ return [
639
+ {
640
+ id: "welcome",
641
+ name: "Welcome Email",
642
+ subject: "Welcome to Our Community! 🌟",
643
+ description: "A warm welcome message for new users",
644
+ category: "onboarding",
645
+ body: "# Welcome to Our Community!\n\nWe're thrilled to have you on board. Thank you for joining us on this journey.\n\n## What's Next?\n\n* **Explore** your dashboard and discover all the features\n* **Connect** with other community members\n* **Get support** whenever you need it - we're here to help\n\n---\n\n*Need assistance? Simply reply to this email and we'll get back to you within 24 hours.*\n\nBest regards, \nThe Team"
646
+ },
647
+ {
648
+ id: "newsletter",
649
+ name: "Newsletter",
650
+ subject: "Weekly Insights & Updates",
651
+ description: "Regular newsletter template with updates and insights",
652
+ category: "communication",
653
+ body: "# This Week's Highlights\n\n## Featured Story\n\n**[Article Title]** \nBrief description of the main story or update that you want to highlight this week.\n\n[Read More](https://example.com)\n\n## Quick Updates\n\n* **Update 1**: Brief description of an important update\n* **Update 2**: Another noteworthy development\n* **Update 3**: Additional news worth sharing\n\n## Upcoming Events\n\n**[Event Name]** - *Date* \nShort description of the upcoming event.\n\n---\n\n*Thanks for reading! Forward this to a friend who might enjoy it.*\n\nUntil next week, \nThe Team"
654
+ },
655
+ {
656
+ id: "product-launch",
657
+ name: "Product Launch",
658
+ subject: "Introducing Our Latest Innovation 🚀",
659
+ description: "Announce new products or features",
660
+ category: "marketing",
661
+ body: "# Something Amazing is Here\n\nWe've been working hard behind the scenes, and today we're excited to introduce our latest creation.\n\n## Key Features\n\n* **Feature 1**: Benefit that matters to your users\n* **Feature 2**: Another compelling capability\n* **Feature 3**: The feature that sets you apart\n\n## Early Access\n\nAs a valued member, you get **exclusive early access** starting today.\n\n[Get Started Now](https://example.com)\n\n---\n\n*Questions? We'd love to hear from you. Just hit reply!*\n\nBest, \nThe Product Team"
662
+ },
663
+ {
664
+ id: "event-invitation",
665
+ name: "Event Invitation",
666
+ subject: "You're Invited: [Event Name]",
667
+ description: "Professional event invitation template",
668
+ category: "events",
669
+ body: "# You're Invited!\n\n## [Event Name]\n\n**When**: [Date & Time] \n**Where**: [Location or Virtual Link] \n**Duration**: [Duration]\n\nJoin us for an exclusive gathering where we'll explore [brief event description].\n\n## What to Expect\n\n* **Networking** with industry professionals\n* **Insights** from leading experts\n* **Interactive** sessions and discussions\n\n## RSVP Required\n\nSpace is limited, so please confirm your attendance by [RSVP Date].\n\n[Confirm Attendance](https://example.com)\n\n---\n\n*Can't make it? Let us know and we'll share the key highlights with you.*\n\nLooking forward to seeing you there, \nThe Events Team"
670
+ },
671
+ {
672
+ id: "thank-you",
673
+ name: "Thank You",
674
+ subject: "Thank You - It Means Everything",
675
+ description: "Express gratitude to customers or supporters",
676
+ category: "appreciation",
677
+ body: "# Thank You\n\nYour support means the world to us.\n\nWhether you've been with us from the beginning or just joined our community, we want you to know how much we appreciate you.\n\n## Because of You\n\n* We've been able to improve our service\n* Our community has grown stronger\n* We've achieved milestones we never thought possible\n\n## What's Next\n\nWe're committed to continuing to earn your trust and providing even more value in the coming months.\n\n---\n\n*Your feedback shapes everything we do. Reply anytime with thoughts or suggestions.*\n\nWith genuine gratitude, \nThe Team"
678
+ },
679
+ {
680
+ id: "feedback-request",
681
+ name: "Feedback Request",
682
+ subject: "Your Opinion Matters - 2 Minutes?",
683
+ description: "Request feedback or reviews from users",
684
+ category: "feedback",
685
+ body: "# We'd Love Your Feedback\n\nYour experience matters to us, and we're always looking for ways to improve.\n\n## Quick Favor?\n\nCould you spare **2 minutes** to share your thoughts? Your honest feedback helps us serve you better.\n\n[Share Your Feedback](https://example.com)\n\n## What We're Asking\n\n* How has your experience been so far?\n* What's working well for you?\n* What could we improve?\n\n## Thank You Gift\n\nAs a small token of appreciation, everyone who completes our feedback form receives [incentive].\n\n---\n\n*Every response is read personally by our team. We take your input seriously.*\n\nThanks in advance, \nThe Team"
686
+ },
687
+ {
688
+ id: "password-reset",
689
+ name: "Password Reset",
690
+ subject: "Reset Your Password - Action Required",
691
+ description: "Secure password reset instructions",
692
+ category: "security",
693
+ body: "# Password Reset Request\n\nWe received a request to reset the password for your account.\n\n## Reset Your Password\n\nClick the button below to create a new password. This link will expire in **24 hours** for your security.\n\n[Reset Password](https://example.com/reset)\n\n## Didn't Request This?\n\nIf you didn't request a password reset, please ignore this email. Your account remains secure.\n\n## Need Help?\n\nIf you're having trouble with the reset process, contact our support team and we'll assist you right away.\n\n---\n\n*For security reasons, this link can only be used once and expires in 24 hours.*\n\nBest regards, \nSecurity Team"
694
+ },
695
+ {
696
+ id: "order-confirmation",
697
+ name: "Order Confirmation",
698
+ subject: "Order Confirmed - #[ORDER-NUMBER]",
699
+ description: "Professional order confirmation template",
700
+ category: "commerce",
701
+ body: "# Order Confirmation\n\nThanks for your order! We've received your payment and are preparing your items for shipment.\n\n## Order Details\n\n**Order Number**: #[ORDER-NUMBER] \n**Order Date**: [DATE] \n**Total**: $[AMOUNT]\n\n## Items Ordered\n\n* **[Item 1]** - Quantity: [QTY] - $[PRICE]\n* **[Item 2]** - Quantity: [QTY] - $[PRICE]\n\n## Shipping Information\n\n**Address**: [SHIPPING ADDRESS] \n**Method**: [SHIPPING METHOD] \n**Estimated Delivery**: [DELIVERY DATE]\n\n## Next Steps\n\nYou'll receive a tracking number via email once your order ships (usually within 1-2 business days).\n\n[Track Your Order](https://example.com/track)\n\n---\n\n*Questions about your order? Reply to this email or contact our support team.*\n\nThank you for your business, \nThe Fulfillment Team"
702
+ }
703
+ ];
704
+ }
705
+ addEventListeners() {
706
+ o(this, "keydown").pipe(s(this.disconnecting)).subscribe(this.handleKeyDown), o(document, "paste").pipe(s(this.disconnecting)).subscribe(this.handlePaste), o(document, "dragenter").pipe(s(this.disconnecting)).subscribe(this.handleDragEnter), o(document, "dragleave").pipe(s(this.disconnecting)).subscribe(this.handleDocumentDragLeave), o(document, "drop").pipe(s(this.disconnecting)).subscribe(this.handleDocumentDrop);
707
+ }
708
+ insertAtCursor(e, t) {
709
+ if (!this.bodyTextAreaRef.value) return;
710
+ let n = this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");
711
+ if (!n) return;
712
+ let r = n.selectionStart, i = n.selectionEnd, a = n.value.substring(0, r) + e + n.value.substring(i);
713
+ this.body = a, this.dispatchChange(), this.updateComplete.then(() => {
714
+ let n = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
715
+ if (n) if (n.focus(), t) {
716
+ let i = r + e.indexOf(t), a = i + t.length;
717
+ n.setSelectionRange(i, a);
718
+ } else n.setSelectionRange(r + e.length, r + e.length);
719
+ });
720
+ }
721
+ wrapSelection(e, t, n) {
722
+ if (!this.bodyTextAreaRef.value) return;
723
+ let r = this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");
724
+ if (!r) return;
725
+ let i = r.selectionStart, a = r.selectionEnd, o = r.value.substring(i, a), s = e + (o || n) + t, c = r.value.substring(0, i) + s + r.value.substring(a);
726
+ this.body = c, this.dispatchChange(), this.updateComplete.then(() => {
727
+ let t = this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");
728
+ t && (t.focus(), o ? t.setSelectionRange(i + s.length, i + s.length) : t.setSelectionRange(i + e.length, i + e.length + n.length));
729
+ });
730
+ }
731
+ render() {
732
+ return f`
733
+ <schmancy-surface
734
+ type="solid"
735
+ rounded="all"
736
+ class=${this.classMap({
737
+ "border-2 border-dashed border-primary": this.dragOver,
738
+ "h-full flex flex-col": !0
739
+ })}
740
+ @drop=${this.handleDrop}
741
+ @dragover=${this.handleDragOver}
742
+ @dragleave=${this.handleDragLeave}
743
+ >
744
+ <div class="flex flex-col h-full gap-4">
745
+
746
+ <!-- Header Section with Subject -->
747
+ <div class="shrink-0 p-4 pb-0 space-y-4">
748
+ <!-- Subject Field -->
749
+ <div class="space-y-2">
750
+ <schmancy-typography type="label" token="md">
751
+ Subject *
752
+ </schmancy-typography>
753
+ <schmancy-input
754
+ ${m(this.subjectInputRef)}
755
+ .value=${this.subject}
756
+ @input=${this.handleSubjectChange}
757
+ placeholder="Enter email subject..."
758
+ .disabled=${this.disabled}
759
+ class="w-full"
760
+ ></schmancy-input>
761
+ </div>
762
+ </div>
763
+
764
+ <!-- Formatting Toolbar -->
765
+ <div class="shrink-0 px-4">
766
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
767
+ <div class="flex flex-wrap gap-2 items-center">
768
+ <!-- Text Formatting Group -->
769
+ <div class="flex gap-1">
770
+ <schmancy-icon-button
771
+ size="sm"
772
+ variant="text"
773
+ title="Bold"
774
+ ?disabled=${this.disabled}
775
+ @click=${() => this.wrapSelection("**", "**", "bold text")}
776
+ >
777
+ <schmancy-icon>format_bold</schmancy-icon>
778
+ </schmancy-icon-button>
779
+ <schmancy-icon-button
780
+ size="sm"
781
+ variant="text"
782
+ title="Italic"
783
+ ?disabled=${this.disabled}
784
+ @click=${() => this.wrapSelection("*", "*", "italic text")}
785
+ >
786
+ <schmancy-icon>format_italic</schmancy-icon>
787
+ </schmancy-icon-button>
788
+ <schmancy-icon-button
789
+ size="sm"
790
+ variant="text"
791
+ title="Link"
792
+ ?disabled=${this.disabled}
793
+ @click=${() => this.insertAtCursor("[link text](https://example.com)", "link text")}
794
+ >
795
+ <schmancy-icon>link</schmancy-icon>
796
+ </schmancy-icon-button>
797
+ </div>
798
+
799
+ <!-- Divider -->
800
+ <div class="h-6 w-px bg-outline-variant"></div>
801
+
802
+ <!-- Structure Formatting Group -->
803
+ <div class="flex gap-1">
804
+ <schmancy-icon-button
805
+ size="sm"
806
+ variant="text"
807
+ title="Heading"
808
+ ?disabled=${this.disabled}
809
+ @click=${() => this.insertAtCursor("\n# Heading\n", "Heading")}
810
+ >
811
+ <schmancy-icon>title</schmancy-icon>
812
+ </schmancy-icon-button>
813
+ <schmancy-icon-button
814
+ size="sm"
815
+ variant="text"
816
+ title="Bullet List"
817
+ ?disabled=${this.disabled}
818
+ @click=${() => this.insertAtCursor("\n* List item\n", "List item")}
819
+ >
820
+ <schmancy-icon>format_list_bulleted</schmancy-icon>
821
+ </schmancy-icon-button>
822
+ </div>
823
+
824
+ <!-- Divider -->
825
+ <div class="h-6 w-px bg-outline-variant"></div>
826
+
827
+ <!-- Media and Layout Group -->
828
+ <div class="flex gap-1">
829
+ <schmancy-icon-button
830
+ size="sm"
831
+ variant="text"
832
+ title="Insert Image"
833
+ ?disabled=${this.disabled || this.isUploading}
834
+ @click=${() => this.imageInputRef.value?.click()}
835
+ >
836
+ ${g(this.isUploading, () => f`<schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>`, () => f`<schmancy-icon>image</schmancy-icon>`)}
837
+ </schmancy-icon-button>
838
+ <schmancy-icon-button
839
+ size="sm"
840
+ variant="text"
841
+ title="Insert Layout"
842
+ ?disabled=${this.disabled}
843
+ @click=${this.openLayoutDialog}
844
+ >
845
+ <schmancy-icon>mobile_layout</schmancy-icon>
846
+ </schmancy-icon-button>
847
+ <schmancy-icon-button
848
+ size="sm"
849
+ variant="text"
850
+ title="Use Template"
851
+ ?disabled=${this.disabled || this.templates.length === 0}
852
+ @click=${this.openTemplatePicker}
853
+ >
854
+ <schmancy-icon>description</schmancy-icon>
855
+ </schmancy-icon-button>
856
+ </div>
857
+ </div>
858
+ </schmancy-surface>
859
+ </div>
860
+
861
+ <!-- Textarea Container - Takes remaining space -->
862
+ <div class="flex-1 px-4 relative min-h-0">
863
+ <schmancy-textarea
864
+ ${m(this.bodyTextAreaRef)}
865
+ .value=${this.body}
866
+ @change=${this.handleBodyChange}
867
+ placeholder="Enter your email message here...
868
+
869
+ Use the toolbar buttons above for formatting, or type markdown directly:
870
+ **bold**, *italic*, [link](url), ![image](url)
871
+
872
+ Drag & drop images or press Ctrl+V to paste from clipboard.
873
+ Tab key inserts 2 spaces for better formatting."
874
+ .disabled=${this.disabled}
875
+ .required=${!0}
876
+ .rows=${4}
877
+ class="w-full font-mono text-sm"
878
+ ></schmancy-textarea>
879
+
880
+ <!-- Upload Progress Overlay -->
881
+ ${g(this.isUploading, () => f`
882
+ <div class="absolute top-3 right-3 z-10">
883
+ <schmancy-surface type="subtle" rounded="all" class="p-2">
884
+ <div class="flex items-center gap-2">
885
+ <schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>
886
+ <schmancy-typography type="body" token="xs">Uploading...</schmancy-typography>
887
+ </div>
888
+ </schmancy-surface>
889
+ </div>
890
+ `)}
891
+ </div>
892
+
893
+ <!-- Footer Section -->
894
+ <div class="shrink-0 p-4 pt-0 space-y-2">
895
+ <!-- Character/Word Counter -->
896
+ <div class="text-center">
897
+ <schmancy-typography type="body" token="xs">
898
+ ${this.body.length} characters • ${this.body.trim() ? this.body.trim().split(/\s+/).length : 0} words
899
+ </schmancy-typography>
900
+ </div>
901
+
902
+ <!-- Attachments Display (if any) -->
903
+ ${g(this.attachments.length > 0, () => f`
904
+ <div class="space-y-2">
905
+ <schmancy-typography type="label" token="sm" class="flex items-center gap-2">
906
+ <schmancy-icon size="16px">attach_file</schmancy-icon>
907
+ Attachments (${this.attachments.length})
908
+ </schmancy-typography>
909
+ <div class="flex flex-wrap gap-2">
910
+ ${h(this.attachments, (e) => e.id, (e) => f`
911
+ <schmancy-chip class="text-xs">
912
+ <span class="truncate max-w-32">${e.name}</span>
913
+ <button
914
+ @click=${() => this.removeAttachment(e.id)}
915
+ class="ml-2 text-error hover:text-error-container"
916
+ title="Remove attachment"
917
+ >
918
+ <schmancy-icon size="14px">close</schmancy-icon>
919
+ </button>
920
+ </schmancy-chip>
921
+ `)}
922
+ </div>
923
+ </div>
924
+ `)}
925
+ </div>
926
+
927
+ <!-- Hidden File Inputs -->
928
+ <div class="hidden">
929
+ <input
930
+ ${m(this.fileInputRef)}
931
+ type="file"
932
+ multiple
933
+ @change=${this.handleFileChange}
934
+ >
935
+ <input
936
+ ${m(this.imageInputRef)}
937
+ type="file"
938
+ accept="image/*"
939
+ @change=${this.handleImageSelect}
940
+ >
941
+ </div>
942
+
943
+ </div>
944
+ </schmancy-surface>
945
+
946
+ `;
947
+ }
948
+ };
949
+ e([l({ type: String })], b.prototype, "subject", void 0), e([l({ type: String })], b.prototype, "body", void 0), e([l({ type: Boolean })], b.prototype, "disabled", void 0), e([l({ type: Array })], b.prototype, "attachments", void 0), e([l({ type: Object })], b.prototype, "config", void 0), e([l({ type: Array })], b.prototype, "templates", void 0), e([u()], b.prototype, "dragOver", void 0), e([u()], b.prototype, "isUploading", void 0), b = e([c("schmancy-email-editor")], b);
950
+ var x = class extends n(d`
951
+ :host {
952
+ display: block;
953
+ }
954
+ `) {
955
+ constructor(...e) {
956
+ super(...e), this.subject = "", this.body = "", this.attachments = [], this.recipients = [], this.fromAddress = "sender@example.com", this.toAddress = "recipient@example.com", this.viewMode = "html";
957
+ }
958
+ parseLayoutBlocks(e) {
959
+ return e.replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g, (e, t, n) => {
960
+ switch (t) {
961
+ case "columns-2": return this.parseColumnsLayout(n, 2);
962
+ case "columns-3": return this.parseColumnsLayout(n, 3);
963
+ case "sidebar-left": return this.parseSidebarLayout(n, "left");
964
+ case "sidebar-right": return this.parseSidebarLayout(n, "right");
965
+ case "image-row": return this.parseImageRowLayout(n);
966
+ default: return n;
967
+ }
968
+ });
969
+ }
970
+ parseColumnsLayout(e, t) {
971
+ let n = /<div class="column">([\s\S]*?)<\/div>/g, r = [], i;
972
+ for (; (i = n.exec(e)) !== null;) r.push(i[1].trim());
973
+ if (r.length === 0) return e;
974
+ let a = Math.floor(100 / t), o = "0 10px 0 0", s = "<tr>";
975
+ for (let e = 0; e < t && e < r.length; e++) s += `\n\t\t\t\t<td width="${a}%" style="padding: ${e === t - 1 ? "0" : o}; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t\t${this.parseBasicMarkdown(r[e])}\n\t\t\t\t</td>`;
976
+ for (let e = r.length; e < t; e++) s += `\n\t\t\t\t<td width="${a}%" style="padding: ${e === t - 1 ? "0" : o}; vertical-align: top;">\n\t\t\t\t\t&nbsp;\n\t\t\t\t</td>`;
977
+ return s += "</tr>", `\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${s}\n\t\t\t</table>`;
978
+ }
979
+ parseSidebarLayout(e, t) {
980
+ let n = e.match(/<div class="sidebar">([\s\S]*?)<\/div>/), r = e.match(/<div class="main">([\s\S]*?)<\/div>/);
981
+ if (!n || !r) return e;
982
+ let i = `\n\t\t\t<td width="30%" style="padding: 0 16px 0 0; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t${this.parseBasicMarkdown(n[1].trim())}\n\t\t\t</td>`, a = `\n\t\t\t<td width="70%" style="padding: 0; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t${this.parseBasicMarkdown(r[1].trim())}\n\t\t\t</td>`;
983
+ return `\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${t === "left" ? `<tr>${i}${a}</tr>` : `<tr>${a}${i.replace("0 16px 0 0", "0 0 0 16px")}</tr>`}\n\t\t\t</table>`;
984
+ }
985
+ parseImageRowLayout(e) {
986
+ let t = /<div class="image">([\s\S]*?)<\/div>/g, n = [], r;
987
+ for (; (r = t.exec(e)) !== null;) {
988
+ let e = r[1].trim().match(/!\[([^\]]*)\]\(([^)]+)\)/);
989
+ if (e) {
990
+ let [, t, r] = e;
991
+ n.push(`<img src="${r}" alt="${t || "Image"}" style="display: block; max-width: 100%; height: auto;" border="0">`);
992
+ }
993
+ }
994
+ if (n.length === 0) return e;
995
+ let i = Math.floor(100 / n.length), a = "<tr>";
996
+ return n.forEach((e, t) => {
997
+ let r = t === n.length - 1 ? "0" : "0 8px 0 0";
998
+ a += `\n\t\t\t\t<td width="${i}%" style="padding: ${r}; vertical-align: top; text-align: center;">\n\t\t\t\t\t${e}\n\t\t\t\t</td>`;
999
+ }), a += "</tr>", `\n\t\t\t<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">\n\t\t\t\t${a}\n\t\t\t</table>`;
1000
+ }
1001
+ parseImageAttributes(e) {
1002
+ let t = {};
1003
+ if (!e) return t;
1004
+ let n = e.match(/width=([^\s}]+)/);
1005
+ n && (t.width = n[1]);
1006
+ let r = e.match(/height=([^\s}]+)/);
1007
+ return r && (t.height = r[1]), e.includes("cover") && (t.cover = !0), e.includes("contain") && (t.contain = !0), t;
1008
+ }
1009
+ generateImageStyles(e, t = !1) {
1010
+ let n, r, i = "display: block; margin: 8px 0; border: 0;";
1011
+ return e.width ? e.width === "auto" ? i += t ? " max-width: 100%; height: auto;" : " height: auto;" : e.width.endsWith("%") ? (i += ` width: ${e.width}; max-width: 100%;`, e.height || (i += " height: auto;")) : e.width.endsWith("px") && (n = e.width.replace("px", ""), i += " max-width: 100%;", e.height || (i += " height: auto;")) : i += t ? " width: 100%; max-width: 100%; height: auto;" : " max-width: 100%; height: auto;", e.height && (e.height === "auto" ? i += " height: auto;" : e.height.endsWith("px") && (r = e.height.replace("px", ""), e.width || (i += " max-width: 100%;"))), (e.cover || e.contain) && (e.width || e.height || (i += " width: 100%;")), {
1012
+ imgStyle: i,
1013
+ imgWidth: n,
1014
+ imgHeight: r
1015
+ };
1016
+ }
1017
+ parseBasicMarkdown(e) {
1018
+ return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g, (e, t, n, r) => {
1019
+ let i = this.parseImageAttributes(r), { imgStyle: a, imgWidth: o, imgHeight: s } = this.generateImageStyles(i, !0), c = `<img src="${n}" alt="${t || "Image"}" style="${a}" border="0"`;
1020
+ return o && (c += ` width="${o}"`), s && (c += ` height="${s}"`), c += ">", c;
1021
+ }).replace(/\n\n/g, "</p><p style=\"margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;\">").replace(/\n/g, "<br>").replace(/\*\*(.*?)\*\*/g, "<strong style=\"font-weight: bold;\">$1</strong>").replace(/\*(.*?)\*/g, "<em style=\"font-style: italic;\">$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g, "<a href=\"$2\" style=\"color: #0066cc; text-decoration: underline;\">$1</a>").replace(/^# (.*$)/gim, "<h2 style=\"margin: 16px 0 8px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-weight: bold; color: #1a1a1a;\">$1</h2>").replace(/^\* (.*$)/gim, "<li style=\"margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;\">$1</li>").replace(/^\d+\. (.*$)/gim, "<li style=\"margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;\">$1</li>").replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs, (e) => {
1022
+ let t = /^\d+\./.test(e.replace(/<[^>]*>/g, "")) ? "ol" : "ul";
1023
+ return `<${t} style="margin: 8px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${e}</${t}>`;
1024
+ }).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>");
1025
+ }
1026
+ parseExtendedMarkdown(e) {
1027
+ let t = e;
1028
+ return t = this.parseLayoutBlocks(t), t = t.replace(/:::images\s+(row|grid(?:=\d+)?)\n((?:!\[.*?\]\(.*?\)(?:\{.*?\})?\s*\n?)*?):::/g, "[Multiple Images - View in web browser]"), t = t.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g, (e, t, n, r) => {
1029
+ let i = this.parseImageAttributes(r), { imgStyle: a, imgWidth: o, imgHeight: s } = this.generateImageStyles(i, !1), c = `<img src="${n}" alt="${t || "Image"}" style="${a}" border="0"`;
1030
+ return o && (c += ` width="${o}"`), s && (c += ` height="${s}"`), c += ">", `<table cellpadding="0" cellspacing="0" border="0" style="margin: 16px 0;"><tr><td>${c}</td></tr></table>`;
1031
+ }), t = t.replace(/\n\n/g, "</p><p style=\"margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;\">").replace(/\n/g, "<br>").replace(/\*\*(.*?)\*\*/g, "<strong style=\"font-weight: bold;\">$1</strong>").replace(/\*(.*?)\*/g, "<em style=\"font-style: italic;\">$1</em>").replace(/\[([^\]]+)\]\(([^)]+)\)/g, "<a href=\"$2\" style=\"color: #0066cc; text-decoration: underline;\">$1</a>").replace(/^# (.*$)/gim, "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" style=\"margin: 24px 0 16px 0;\"><tr><td><h1 style=\"margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold; color: #1a1a1a;\">$1</h1></td></tr></table>").replace(/^\* (.*$)/gim, "<li style=\"margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;\">$1</li>").replace(/^\d+\. (.*$)/gim, "<li style=\"margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;\">$1</li>").replace(/^---$/gim, "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"100%\" style=\"margin: 24px 0;\"><tr><td style=\"border-top: 1px solid #e0e0e0; height: 1px; line-height: 1px;\">&nbsp;</td></tr></table>"), t = t.replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs, (e) => {
1032
+ let t = /^\d+\./.test(e.replace(/<[^>]*>/g, "")) ? "ol" : "ul";
1033
+ return `<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><${t} style="margin: 16px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${e}</${t}></td></tr></table>`;
1034
+ }), t.includes("<table>") || t.includes("<h1>") || (t = `<p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">${t}</p>`), t = `<table cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width: 600px; margin: 0 auto;">\n\t\t\t<tr>\n\t\t\t\t<td style="padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">\n\t\t\t\t\t${t}\n\t\t\t\t</td>\n\t\t\t</tr>\n\t\t</table>`, t;
1035
+ }
1036
+ convertToPlainText(e) {
1037
+ return e.trim().replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g, (e, t, n) => n.replace(/<div class="(?:column|sidebar|main|image)">/g, "\n").replace(/<\/div>/g, "\n").replace(/\n{3,}/g, "\n\n").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, "\n\n");
1038
+ }
1039
+ formatFileSize(e) {
1040
+ if (e === 0) return "0 Bytes";
1041
+ let t = Math.floor(Math.log(e) / Math.log(1024));
1042
+ return parseFloat((e / 1024 ** t).toFixed(2)) + " " + [
1043
+ "Bytes",
1044
+ "KB",
1045
+ "MB",
1046
+ "GB"
1047
+ ][t];
1048
+ }
1049
+ render() {
1050
+ let e = this.parseExtendedMarkdown(this.body), t = this.convertToPlainText(this.body), n = this.recipients[0] || this.toAddress;
1051
+ return f`
1052
+ <schmancy-surface type="solid" rounded="all" class="h-full flex flex-col">
1053
+
1054
+ <!-- Header Section -->
1055
+ <div class="shrink-0 p-4 border-b border-outline-variant">
1056
+ <div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
1057
+ <schmancy-typography type="title" token="md" class="flex items-center gap-2">
1058
+ <schmancy-icon size="20px">preview</schmancy-icon>
1059
+ Email Preview
1060
+ </schmancy-typography>
1061
+
1062
+ <!-- View Mode Toggle -->
1063
+ <div class="flex gap-1 bg-surface-container rounded-full p-1">
1064
+ <schmancy-chip
1065
+ ?selected=${this.viewMode === "html"}
1066
+ @click=${() => {
1067
+ this.viewMode = "html";
1068
+ }}
1069
+ class="text-xs h-8"
1070
+ data-variant=${this.viewMode === "html" ? "filled" : "outlined"}
1071
+ >
1072
+ <schmancy-icon slot="prefix" size="14px">code</schmancy-icon>
1073
+ HTML
1074
+ </schmancy-chip>
1075
+ <schmancy-chip
1076
+ ?selected=${this.viewMode === "plaintext"}
1077
+ @click=${() => {
1078
+ this.viewMode = "plaintext";
1079
+ }}
1080
+ class="text-xs h-8"
1081
+ data-variant=${this.viewMode === "plaintext" ? "filled" : "outlined"}
1082
+ >
1083
+ <schmancy-icon slot="prefix" size="14px">text_fields</schmancy-icon>
1084
+ Text
1085
+ </schmancy-chip>
1086
+ </div>
1087
+ </div>
1088
+ </div>
1089
+
1090
+ <!-- Preview Content Container -->
1091
+ <div class="flex-1 flex flex-col min-h-0 p-4 gap-4">
1092
+
1093
+ <!-- Email Mock Container -->
1094
+ <div class="flex-1 flex flex-col min-h-0">
1095
+ <schmancy-surface
1096
+ type="subtle"
1097
+ rounded="all"
1098
+ class="flex-1 flex flex-col overflow-hidden shadow-sm"
1099
+ >
1100
+ <!-- Email Header -->
1101
+ <div class="shrink-0 p-4 bg-surface-containerLow border-b border-outline-variant">
1102
+ <div class="space-y-3">
1103
+ <!-- From Field -->
1104
+ <div class="flex items-start gap-3">
1105
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
1106
+ <schmancy-icon size="16px">account_circle</schmancy-icon>
1107
+ <schmancy-typography type="body" token="sm" class="font-medium">
1108
+ From
1109
+ </schmancy-typography>
1110
+ </div>
1111
+ <schmancy-typography type="body" token="sm" class="break-all flex-1">
1112
+ ${this.fromAddress}
1113
+ </schmancy-typography>
1114
+ </div>
1115
+
1116
+ <!-- To Field -->
1117
+ <div class="flex items-start gap-3">
1118
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
1119
+ <schmancy-icon size="16px">person</schmancy-icon>
1120
+ <schmancy-typography type="body" token="sm" class="font-medium">
1121
+ To
1122
+ </schmancy-typography>
1123
+ </div>
1124
+ <schmancy-typography type="body" token="sm" class="break-all flex-1">
1125
+ ${n}
1126
+ </schmancy-typography>
1127
+ </div>
1128
+
1129
+ <!-- Subject Field -->
1130
+ <div class="flex items-start gap-3">
1131
+ <div class="flex items-center gap-2 min-w-0 shrink-0 w-16">
1132
+ <schmancy-icon size="16px">subject</schmancy-icon>
1133
+ <schmancy-typography type="body" token="sm" class="font-medium">
1134
+ Subject
1135
+ </schmancy-typography>
1136
+ </div>
1137
+ <schmancy-typography type="body" token="sm" class="font-medium flex-1">
1138
+ ${this.subject || f`<span class="italic text-surface-onVariant">(No subject)</span>`}
1139
+ </schmancy-typography>
1140
+ </div>
1141
+ </div>
1142
+ </div>
1143
+
1144
+ <!-- Email Body Content -->
1145
+ <div class="flex-1 overflow-y-auto min-h-0">
1146
+ ${g(this.body, () => f`
1147
+ ${g(this.viewMode === "html", () => f`
1148
+ <div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: system-ui, -apple-system, sans-serif; font-size: 14px;">
1149
+ <div .innerHTML=${e}></div>
1150
+ </div>
1151
+ `, () => f`
1152
+ <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;">
1153
+ ${t}
1154
+ </div>
1155
+ `)}
1156
+ `, () => f`
1157
+ <!-- Empty State -->
1158
+ <div class="flex-1 flex items-center justify-center p-8">
1159
+ <div class="text-center space-y-3">
1160
+ <schmancy-icon size="48px" class="text-surface-onVariant opacity-50">mail_outline</schmancy-icon>
1161
+ <schmancy-typography type="body" token="md">
1162
+ No message content to preview
1163
+ </schmancy-typography>
1164
+ <schmancy-typography type="body" token="sm" class="text-surface-onVariant">
1165
+ Start typing in the composer to see a preview
1166
+ </schmancy-typography>
1167
+ </div>
1168
+ </div>
1169
+ `)}
1170
+ </div>
1171
+
1172
+ <!-- Attachments Section -->
1173
+ ${g(this.attachments.length > 0, () => f`
1174
+ <div class="shrink-0 p-4 border-t border-outline-variant bg-surface-containerLowest">
1175
+ <div class="space-y-3">
1176
+ <!-- Attachments Header -->
1177
+ <div class="flex items-center gap-2">
1178
+ <schmancy-icon size="18px">attach_file</schmancy-icon>
1179
+ <schmancy-typography type="label" token="md" class="font-medium">
1180
+ Attachments (${this.attachments.length})
1181
+ </schmancy-typography>
1182
+ </div>
1183
+
1184
+ <!-- Attachments List -->
1185
+ <div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2">
1186
+ ${h(this.attachments, (e) => e.id, (e) => f`
1187
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
1188
+ <div class="flex items-center gap-3">
1189
+ <!-- File Icon -->
1190
+ <schmancy-icon size="20px" class="text-surface-onVariant shrink-0">
1191
+ ${e.type.startsWith("image/") ? "image" : e.type.includes("pdf") ? "picture_as_pdf" : e.type.includes("text") ? "description" : "attach_file"}
1192
+ </schmancy-icon>
1193
+
1194
+ <!-- File Info -->
1195
+ <div class="flex-1 min-w-0">
1196
+ <schmancy-typography type="body" token="sm" class="font-medium truncate">
1197
+ ${e.name}
1198
+ </schmancy-typography>
1199
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
1200
+ ${this.formatFileSize(e.size)} • ${e.type}
1201
+ </schmancy-typography>
1202
+ </div>
1203
+ </div>
1204
+ </schmancy-surface>
1205
+ `)}
1206
+ </div>
1207
+ </div>
1208
+ </div>
1209
+ `)}
1210
+ </schmancy-surface>
1211
+ </div>
1212
+
1213
+ <!-- Preview Stats -->
1214
+ ${g(this.body, () => f`
1215
+ <div class="shrink-0">
1216
+ <schmancy-surface type="subtle" rounded="all" class="p-3">
1217
+ <div class="flex items-center justify-center gap-6 text-center">
1218
+ <div>
1219
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
1220
+ Characters
1221
+ </schmancy-typography>
1222
+ <schmancy-typography type="body" token="sm" class="font-medium">
1223
+ ${this.body.length}
1224
+ </schmancy-typography>
1225
+ </div>
1226
+ <div class="w-px h-8 bg-outline-variant"></div>
1227
+ <div>
1228
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
1229
+ Words
1230
+ </schmancy-typography>
1231
+ <schmancy-typography type="body" token="sm" class="font-medium">
1232
+ ${this.body.trim() ? this.body.trim().split(/\s+/).length : 0}
1233
+ </schmancy-typography>
1234
+ </div>
1235
+ ${g(this.attachments.length > 0, () => f`
1236
+ <div class="w-px h-8 bg-outline-variant"></div>
1237
+ <div>
1238
+ <schmancy-typography type="body" token="xs" class="text-surface-onVariant">
1239
+ Attachments
1240
+ </schmancy-typography>
1241
+ <schmancy-typography type="body" token="sm" class="font-medium">
1242
+ ${this.attachments.length}
1243
+ </schmancy-typography>
1244
+ </div>
1245
+ `)}
1246
+ </div>
1247
+ </schmancy-surface>
1248
+ </div>
1249
+ `)}
1250
+
1251
+ </div>
1252
+ </schmancy-surface>
1253
+ `;
1254
+ }
1255
+ };
1256
+ e([l({ type: String })], x.prototype, "subject", void 0), e([l({ type: String })], x.prototype, "body", void 0), e([l({ type: Array })], x.prototype, "attachments", void 0), e([l({ type: Array })], x.prototype, "recipients", void 0), e([l({ type: String })], x.prototype, "fromAddress", void 0), e([l({ type: String })], x.prototype, "toAddress", void 0), e([u()], x.prototype, "viewMode", void 0), x = e([c("schmancy-email-viewer")], x);
1257
+ var S = class extends n(d`
1258
+ :host {
1259
+ display: block;
1260
+ height: 100%;
1261
+ }
1262
+ `) {
1263
+ constructor(...e) {
1264
+ super(...e), this.disabled = !1, this.recipients = [], this.selectedRecipients = [], this.enableCsvImport = !0, this.enableDragDrop = !0, this.title = "Recipients", this.emptyStateTitle = "No recipients yet", this.emptyStateMessage = "Import from sources or upload a CSV", this.dragOver = !1, this.localSelectedRecipients = /* @__PURE__ */ new Set(), this.searchQuery = "", this.filteredRecipients = [], this.boatState = "collapsed", this.fileInputRef = p(), this.handleEmailsImported = () => {
1265
+ this.updateFilteredRecipients(), this.requestUpdate();
1266
+ }, this.handleImportFromCSV = () => {
1267
+ this.enableCsvImport && this.fileInputRef.value?.click();
1268
+ }, this.handleFileSelect = (e) => {
1269
+ let t = e.target.files?.[0];
1270
+ t && this.processCSVFile(t);
1271
+ }, this.handleDrop = (e) => {
1272
+ if (!this.enableDragDrop) return;
1273
+ e.preventDefault(), this.dragOver = !1;
1274
+ let t = e.dataTransfer?.files[0];
1275
+ t && this.processCSVFile(t);
1276
+ }, this.processCSVFile = (e) => {
1277
+ if (!e.name.endsWith(".csv")) return void a.error("Please select a CSV file");
1278
+ let t = new FileReader();
1279
+ t.onload = (e) => {
1280
+ let t = e.target?.result;
1281
+ try {
1282
+ let e = this.parseCSV(t);
1283
+ if (e.length === 0) return void a.error("No valid email addresses found in CSV");
1284
+ this.dispatchEvent(new CustomEvent("emails-imported", {
1285
+ detail: {
1286
+ emails: e,
1287
+ source: "csv"
1288
+ },
1289
+ bubbles: !0,
1290
+ composed: !0
1291
+ })), a.success(`Imported ${e.length} emails from CSV file`);
1292
+ } catch {
1293
+ a.error("Failed to parse CSV file");
1294
+ }
1295
+ }, t.readAsText(e);
1296
+ }, this.toggleRecipientSelection = (e) => {
1297
+ this.localSelectedRecipients.has(e) ? this.localSelectedRecipients.delete(e) : this.localSelectedRecipients.add(e), this.localSelectedRecipients = new Set(this.localSelectedRecipients), this.dispatchSelectionChange();
1298
+ }, this.selectAll = () => {
1299
+ this.localSelectedRecipients = new Set(this.filteredRecipients), this.dispatchSelectionChange();
1300
+ }, this.selectNone = () => {
1301
+ this.localSelectedRecipients.clear(), this.localSelectedRecipients = /* @__PURE__ */ new Set(), this.dispatchSelectionChange();
1302
+ }, this.removeRecipient = (e) => {
1303
+ this.dispatchEvent(new CustomEvent("recipient-removed", {
1304
+ detail: { email: e },
1305
+ bubbles: !0,
1306
+ composed: !0
1307
+ }));
1308
+ }, this.clearAll = () => {
1309
+ this.dispatchEvent(new CustomEvent("recipients-cleared", {
1310
+ bubbles: !0,
1311
+ composed: !0
1312
+ }));
1313
+ }, this.updateFilteredRecipients = () => {
1314
+ let e = Array.isArray(this.recipients) ? this.recipients : [];
1315
+ if (this.searchQuery.trim()) {
1316
+ let t = this.searchQuery.toLowerCase();
1317
+ this.filteredRecipients = e.filter((e) => e.toLowerCase().includes(t));
1318
+ } else this.filteredRecipients = [...e];
1319
+ }, this.handleSearchInput = (e) => {
1320
+ let t = e.target;
1321
+ this.searchQuery = t.value;
1322
+ }, this.clearSearch = () => {
1323
+ this.searchQuery = "";
1324
+ }, this.dispatchSelectionChange = () => {
1325
+ this.dispatchEvent(new CustomEvent("selection-changed", {
1326
+ detail: { selectedEmails: Array.from(this.localSelectedRecipients) },
1327
+ bubbles: !0,
1328
+ composed: !0
1329
+ }));
1330
+ }, this.handleBoatStateChange = (e) => {
1331
+ this.boatState = e.detail;
1332
+ };
1333
+ }
1334
+ connectedCallback() {
1335
+ super.connectedCallback(), this.localSelectedRecipients = new Set(this.selectedRecipients), this.updateFilteredRecipients(), o(this, "emails-imported").pipe(s(this.disconnecting)).subscribe(this.handleEmailsImported);
1336
+ }
1337
+ updated(e) {
1338
+ 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();
1339
+ }
1340
+ parseCSV(e) {
1341
+ let t = [], n;
1342
+ n = this.csvParser ? this.csvParser.parse(e, {
1343
+ header: !0,
1344
+ skipEmptyLines: !0,
1345
+ dynamicTyping: !0,
1346
+ delimiter: "",
1347
+ transformHeader: (e) => e.trim()
1348
+ }) : this.simpleCSVParse(e);
1349
+ let r = n.data, i = n.meta.fields || [], a = i.find((e) => e.toLowerCase().includes("email"));
1350
+ if (!a) for (let e of i) {
1351
+ let t = r[0]?.[e]?.toString();
1352
+ if (t && this.isValidEmail(t)) {
1353
+ a = e;
1354
+ break;
1355
+ }
1356
+ }
1357
+ if (!a) throw Error("No email column found in CSV");
1358
+ let o = /* @__PURE__ */ new Set();
1359
+ for (let e of r) {
1360
+ let n = e[a]?.toString();
1361
+ if (!n) continue;
1362
+ let r = n.toLowerCase().trim();
1363
+ this.isValidEmail(r) && !o.has(r) && (o.add(r), t.push(r));
1364
+ }
1365
+ return t;
1366
+ }
1367
+ simpleCSVParse(e) {
1368
+ let t = e.split("\n").filter((e) => e.trim());
1369
+ if (t.length === 0) return {
1370
+ data: [],
1371
+ meta: {}
1372
+ };
1373
+ let n = t[0].split(",").map((e) => e.trim().replace(/"/g, "")), r = [];
1374
+ for (let e = 1; e < t.length; e++) {
1375
+ let i = t[e].split(",").map((e) => e.trim().replace(/"/g, "")), a = {};
1376
+ n.forEach((e, t) => {
1377
+ a[e] = i[t] || "";
1378
+ }), r.push(a);
1379
+ }
1380
+ return {
1381
+ data: r,
1382
+ meta: { fields: n }
1383
+ };
1384
+ }
1385
+ isValidEmail(e) {
1386
+ return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim());
1387
+ }
1388
+ addRecipients(e) {
1389
+ if (!e.length) return;
1390
+ let t = [...new Set([...this.recipients, ...e])], n = e.filter((e) => !this.recipients.includes(e));
1391
+ this.recipients = t, this.selectedRecipients = [...new Set([...this.selectedRecipients, ...n])], this.localSelectedRecipients = new Set(this.selectedRecipients), this.updateFilteredRecipients(), this.requestUpdate();
1392
+ }
1393
+ showBoat() {
1394
+ this.boatState = "collapsed";
1395
+ }
1396
+ hideBoat() {
1397
+ this.boatState = "collapsed";
1398
+ }
1399
+ expandBoat() {
1400
+ this.boatState = "expanded";
1401
+ }
1402
+ toggleBoat() {
1403
+ this.boatState = this.boatState === "collapsed" ? "expanded" : "collapsed";
1404
+ }
1405
+ render() {
1406
+ return this.renderBoatLayout();
1407
+ }
1408
+ renderBoatLayout() {
1409
+ return f`
1410
+ <!-- Hidden file input for CSV import -->
1411
+ ${g(this.enableCsvImport, () => f`
1412
+ <input
1413
+ type="file"
1414
+ accept=".csv"
1415
+ ${m(this.fileInputRef)}
1416
+ @change=${this.handleFileSelect}
1417
+ class="hidden"
1418
+ />
1419
+ `)}
1420
+
1421
+ <schmancy-boat
1422
+ .state=${this.boatState}
1423
+ @change=${this.handleBoatStateChange}
1424
+ >
1425
+ <!-- Boat Header -->
1426
+ <div slot="header" class="flex items-center justify-between w-full px-4 py-2">
1427
+ <div class="flex items-center gap-3">
1428
+ <schmancy-icon size="20px">group</schmancy-icon>
1429
+ <schmancy-typography type="title" token="md" class="font-semibold">
1430
+ ${this.title}
1431
+ </schmancy-typography>
1432
+ ${g(this.recipients.length > 0, () => f`
1433
+ <schmancy-badge>
1434
+ ${this.localSelectedRecipients.size}/${this.recipients.length}
1435
+ </schmancy-badge>
1436
+ `)}
1437
+ </div>
1438
+ </div>
1439
+
1440
+ <!-- Boat Content -->
1441
+ <div class="h-full flex flex-col max-h-[70vh]">
1442
+ ${this.renderBoatContent()}
1443
+ </div>
1444
+ </schmancy-boat>
1445
+ `;
1446
+ }
1447
+ renderBoatContent() {
1448
+ return f`
1449
+ <!-- Search Bar and CSV Import on one line -->
1450
+ <div class="p-4 flex gap-3">
1451
+ <schmancy-input
1452
+ type="text"
1453
+ placeholder="Search recipients"
1454
+ .value=${this.searchQuery}
1455
+ @input=${this.handleSearchInput}
1456
+ class="flex-1"
1457
+ >
1458
+ ${g(this.searchQuery, () => f`
1459
+ <schmancy-button
1460
+ slot="suffix"
1461
+ variant="text"
1462
+ @click=${this.clearSearch}
1463
+ >
1464
+ <schmancy-icon size="16px">close</schmancy-icon>
1465
+ </schmancy-button>
1466
+ `)}
1467
+ </schmancy-input>
1468
+
1469
+ ${g(this.enableCsvImport, () => f`
1470
+ <schmancy-button
1471
+ variant="outlined"
1472
+ @click=${this.handleImportFromCSV}
1473
+ ?disabled=${this.disabled}
1474
+ >
1475
+ <schmancy-icon slot="prefix" size="16px">upload_file</schmancy-icon>
1476
+ Import
1477
+ </schmancy-button>
1478
+ `)}
1479
+ </div>
1480
+
1481
+ ${g(this.recipients.length > 0, () => f`
1482
+ <!-- Bulk Actions -->
1483
+ <div class="px-4 pb-4">
1484
+ <div class="flex items-center gap-3">
1485
+ <schmancy-button
1486
+ variant="outlined"
1487
+ @click=${this.selectAll}
1488
+ ?disabled=${this.localSelectedRecipients.size === this.filteredRecipients.length}
1489
+ >
1490
+ <schmancy-icon slot="prefix" size="14px">select_all</schmancy-icon>
1491
+ Select All
1492
+ </schmancy-button>
1493
+
1494
+ <schmancy-button
1495
+ variant="outlined"
1496
+ @click=${this.selectNone}
1497
+ ?disabled=${this.localSelectedRecipients.size === 0}
1498
+ >
1499
+ <schmancy-icon slot="prefix" size="14px">deselect</schmancy-icon>
1500
+ Clear Selection
1501
+ </schmancy-button>
1502
+
1503
+ <div class="flex-1"></div>
1504
+
1505
+ <schmancy-button variant="text" @click=${this.clearAll}>
1506
+ <schmancy-icon slot="prefix" size="14px">delete_forever</schmancy-icon>
1507
+ Clear All
1508
+ </schmancy-button>
1509
+ </div>
1510
+ </div>
1511
+
1512
+ <!-- Recipients List -->
1513
+ <div class="flex-1 overflow-y-auto px-4 pb-4">
1514
+ ${g(this.filteredRecipients.length > 0, () => f`
1515
+ <div class="flex flex-wrap gap-3">
1516
+ ${h(this.filteredRecipients, (e) => e, (e) => f`
1517
+ <schmancy-button
1518
+ variant=${this.localSelectedRecipients.has(e) ? "filled" : "outlined"}
1519
+ @click=${(t) => {
1520
+ t.stopPropagation(), t.preventDefault(), this.toggleRecipientSelection(e);
1521
+ }}
1522
+ class="cursor-pointer flex items-center gap-2"
1523
+ >
1524
+ <span class="truncate flex-1 text-left">${e}</span>
1525
+ <schmancy-icon
1526
+ @click=${(t) => {
1527
+ t.stopPropagation(), this.removeRecipient(e);
1528
+ }}
1529
+ size="16px"
1530
+ class="ml-2"
1531
+ >close</schmancy-icon>
1532
+ </schmancy-button>
1533
+ `)}
1534
+ </div>
1535
+ `, () => f`
1536
+ <div class="text-center py-8">
1537
+ <schmancy-icon size="32px" class="opacity-50 mb-2">search_off</schmancy-icon>
1538
+ <schmancy-typography type="body" token="sm" class="mb-2">
1539
+ No recipients match "${this.searchQuery}"
1540
+ </schmancy-typography>
1541
+ <schmancy-button variant="outlined" @click=${this.clearSearch}>
1542
+ Clear Search
1543
+ </schmancy-button>
1544
+ </div>
1545
+ `)}
1546
+ </div>
1547
+ `, () => f`
1548
+ <!-- Empty State -->
1549
+ <div class="flex-1 flex items-center justify-center p-8">
1550
+ <div class="text-center space-y-4">
1551
+ <schmancy-icon size="48px" class="opacity-30">mail_outline</schmancy-icon>
1552
+ <schmancy-typography type="title" token="md" class="mb-2">
1553
+ ${this.emptyStateTitle}
1554
+ </schmancy-typography>
1555
+ <schmancy-typography type="body" token="sm">
1556
+ ${this.emptyStateMessage}
1557
+ </schmancy-typography>
1558
+ </div>
1559
+ </div>
1560
+ `)}
1561
+
1562
+ <!-- Drag Overlay -->
1563
+ ${g(this.dragOver && this.enableDragDrop, () => f`
1564
+ <div
1565
+ class="absolute inset-4 flex items-center justify-center border-2 border-dashed border-primary rounded-lg z-10"
1566
+ @dragover=${(e) => {
1567
+ e.preventDefault(), this.dragOver = !0;
1568
+ }}
1569
+ @dragleave=${() => this.dragOver = !1}
1570
+ @drop=${this.handleDrop}
1571
+ >
1572
+ <schmancy-surface type="solid" rounded="all" class="p-6 text-center">
1573
+ <schmancy-icon size="48px" class="mb-2">upload</schmancy-icon>
1574
+ <schmancy-typography type="body" token="md">
1575
+ Drop CSV file here
1576
+ </schmancy-typography>
1577
+ </schmancy-surface>
1578
+ </div>
1579
+ `)}
1580
+ `;
1581
+ }
1582
+ };
1583
+ e([l({ type: Boolean })], S.prototype, "disabled", void 0), e([l({ type: Array })], S.prototype, "recipients", void 0), e([l({ type: Array })], S.prototype, "selectedRecipients", void 0), e([l({ type: Boolean })], S.prototype, "enableCsvImport", void 0), e([l({ type: Boolean })], S.prototype, "enableDragDrop", void 0), e([l({ type: String })], S.prototype, "title", void 0), e([l({ type: String })], S.prototype, "emptyStateTitle", void 0), e([l({ type: String })], S.prototype, "emptyStateMessage", void 0), e([l({ type: Object })], S.prototype, "csvParser", void 0), e([u()], S.prototype, "dragOver", void 0), e([u()], S.prototype, "localSelectedRecipients", void 0), e([u()], S.prototype, "searchQuery", void 0), e([u()], S.prototype, "filteredRecipients", void 0), e([u()], S.prototype, "boatState", void 0), S = e([c("schmancy-email-recipients")], S);
1584
+ export { _ as a, v as i, x as n, b as r, S as t };