@mhmo91/schmancy 0.10.42 → 0.10.44

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 (759) hide show
  1. package/custom-elements.json +264 -79
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4032 -3886
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +215 -58
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-DtCNCb8w.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-DdN76ikW.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-B924fI5N.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-UNOknYUz.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-BZah1Sf9.js → boat-DoZGgQ0P.js} +5 -5
  36. package/dist/{boat-BZah1Sf9.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-D3bEjxf8.cjs → boat-sg0cWO8a.cjs} +2 -2
  38. package/dist/{boat-D3bEjxf8.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-CTvS5YX4.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-DgoDfcJx.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-C6ijJZpF.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-7vEPZuGC.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-7vEPZuGC.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-DXKdxkXE.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-DXKdxkXE.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-9eG-96_D.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-DF7akwz7.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +53 -35
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +55 -37
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-B2VN7cl_.cjs +138 -0
  92. package/dist/date-range-B2VN7cl_.cjs.map +1 -0
  93. package/dist/date-range-CDF_5ju_.js +439 -0
  94. package/dist/date-range-CDF_5ju_.js.map +1 -0
  95. package/dist/{date-range-inline-DV2c_gWM.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-BnOD-ddB.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-ByF66CyY.js → details-Ct1_GwKr.js} +104 -93
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-B2-jECBh.cjs → details-D4fVOaj4.cjs} +109 -98
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-DCb_LA9R.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-BL7mzVsA.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-cZ8rfCWP.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-DkGyWSWy.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-DkGyWSWy.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-zn3DgXBT.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-zn3DgXBT.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DowzVsgI.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-tG7LwDm4.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-Dup5skuk.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-CDJjnNmo.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-Xc3EPMZT.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-cTyDxW9L.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-DnmC6J1T.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CYI17YOq.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-CNlZSJFU.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DDxw0EwL.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-CH-y3rYB.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-CvtqoInF.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-DrsawQ5R.js → list-NrOYDPBo.js} +42 -35
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-CsY5lMqY.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-BFRcTe3o.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-BoMURWag.cjs → mixins-Cjn20BQH.cjs} +42 -100
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-bCEXbwJV.js → mixins-q4KAL8Xr.js} +42 -100
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-DFKRMmSq.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-FBf3Mb2e.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-Ct0lGdH3.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-sRXiMkjn.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-Bh8Q_R01.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-CQihsR20.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-Jc1EuMGs.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-BXPgS7ay.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-9Dp3g7ot.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CYLshdo2.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-6kCgOgBL.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-bZtZHOj_.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU3X-PIa.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +38 -22
  302. package/dist/skills/surface.md +38 -22
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-B4ZmXpH9.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-DjlMvicQ.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-emCLYoVl.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-DGDTkOvC.js → src-Bo-vvN6m.js} +173 -175
  318. package/dist/src-Bo-vvN6m.js.map +1 -0
  319. package/dist/src-MdpH1zth.cjs +237 -0
  320. package/dist/src-MdpH1zth.cjs.map +1 -0
  321. package/dist/{state-CumAEPQH.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-DMd_FUeA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-DNiYigsX.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/{surface-DNiYigsX.js.map → surface-DXk1X1tL.js.map} +1 -1
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-4T_4kCf-.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Byxxt-AH.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-kkYNk1ET.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-BwYwH9fu.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-BG0EnzYP.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-BG0EnzYP.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-DwQBl6sr.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-DwQBl6sr.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-BD8anzsZ.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-BD8anzsZ.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DlrNoCMA.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DlrNoCMA.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-Dv_55nfE.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-pjkTM209.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-C76zstbV.js → window-CCmN4but.js} +24 -15
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +38 -22
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +15 -12
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +1 -1
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +90 -62
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +154 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +575 -121
  507. package/src/form/fields/date-range/date-range.ts +343 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +53 -104
  593. package/src/surface/surface.ts +10 -8
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +143 -108
  626. package/types/src/calendar/calendar.d.ts +108 -0
  627. package/types/src/calendar/calendar.test.d.ts +1 -0
  628. package/types/src/calendar/index.d.ts +2 -0
  629. package/types/src/directives/cursor-glow.d.ts +1 -1
  630. package/types/src/directives/hummingbird.d.ts +3 -3
  631. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  632. package/types/src/form/fields/date-range/date-range.d.ts +39 -66
  633. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  634. package/types/src/form/fields/date-range/index.d.ts +1 -1
  635. package/types/src/index.d.ts +1 -0
  636. package/types/src/surface/surface.styles.d.ts +13 -6
  637. package/types/src/types/surface.d.ts +17 -22
  638. package/types/src/utils/number.d.ts +1 -1
  639. package/dist/SchmancyElement-OG71FtNv.js +0 -286
  640. package/dist/SchmancyElement-OG71FtNv.js.map +0 -1
  641. package/dist/SchmancyElement-PS1u0j1B.cjs +0 -2
  642. package/dist/SchmancyElement-PS1u0j1B.cjs.map +0 -1
  643. package/dist/area-CaEI33G0.cjs +0 -21
  644. package/dist/area-CaEI33G0.cjs.map +0 -1
  645. package/dist/area-DtCNCb8w.js.map +0 -1
  646. package/dist/audio-B924fI5N.cjs.map +0 -1
  647. package/dist/audio-DdN76ikW.js.map +0 -1
  648. package/dist/autocomplete-Dq3BkitV.cjs +0 -115
  649. package/dist/autocomplete-Dq3BkitV.cjs.map +0 -1
  650. package/dist/autocomplete-UNOknYUz.js.map +0 -1
  651. package/dist/busy--WqiXKnl.cjs +0 -134
  652. package/dist/busy--WqiXKnl.cjs.map +0 -1
  653. package/dist/busy-DzXyO0z6.js +0 -173
  654. package/dist/busy-DzXyO0z6.js.map +0 -1
  655. package/dist/button-CTvS5YX4.cjs.map +0 -1
  656. package/dist/button-DgoDfcJx.js.map +0 -1
  657. package/dist/card-C6ijJZpF.js.map +0 -1
  658. package/dist/card-Ci3_9Dd4.cjs +0 -177
  659. package/dist/card-Ci3_9Dd4.cjs.map +0 -1
  660. package/dist/chips-9eG-96_D.cjs.map +0 -1
  661. package/dist/chips-DF7akwz7.js.map +0 -1
  662. package/dist/date-range-C13_R3OA.js +0 -966
  663. package/dist/date-range-C13_R3OA.js.map +0 -1
  664. package/dist/date-range-Q2xj5Syc.cjs +0 -142
  665. package/dist/date-range-Q2xj5Syc.cjs.map +0 -1
  666. package/dist/date-range-inline-BnOD-ddB.js.map +0 -1
  667. package/dist/date-range-inline-DV2c_gWM.cjs.map +0 -1
  668. package/dist/details-B2-jECBh.cjs.map +0 -1
  669. package/dist/details-ByF66CyY.js.map +0 -1
  670. package/dist/directives-BL7mzVsA.js.map +0 -1
  671. package/dist/directives-DCb_LA9R.cjs.map +0 -1
  672. package/dist/divider-Bv2QiOZL.cjs +0 -57
  673. package/dist/divider-Bv2QiOZL.cjs.map +0 -1
  674. package/dist/divider-gYuz0zDU.js +0 -89
  675. package/dist/divider-gYuz0zDU.js.map +0 -1
  676. package/dist/expand-B9IUGVtc.cjs +0 -141
  677. package/dist/expand-B9IUGVtc.cjs.map +0 -1
  678. package/dist/expand-cZ8rfCWP.js.map +0 -1
  679. package/dist/form-DowzVsgI.cjs.map +0 -1
  680. package/dist/form-tG7LwDm4.js.map +0 -1
  681. package/dist/icons-BZeCloP9.cjs +0 -24
  682. package/dist/icons-BZeCloP9.cjs.map +0 -1
  683. package/dist/icons-Dup5skuk.js.map +0 -1
  684. package/dist/iframe-CDJjnNmo.cjs.map +0 -1
  685. package/dist/iframe-Xc3EPMZT.js.map +0 -1
  686. package/dist/input-DnmC6J1T.cjs.map +0 -1
  687. package/dist/input-cTyDxW9L.js.map +0 -1
  688. package/dist/input-chip-CV91URyU.cjs +0 -146
  689. package/dist/input-chip-CV91URyU.cjs.map +0 -1
  690. package/dist/input-chip-CYI17YOq.js.map +0 -1
  691. package/dist/layout-CNlZSJFU.cjs.map +0 -1
  692. package/dist/layout-DDxw0EwL.js.map +0 -1
  693. package/dist/lightbox-CH-y3rYB.js.map +0 -1
  694. package/dist/lightbox-CvtqoInF.cjs.map +0 -1
  695. package/dist/list-Dl8KfxrF.cjs +0 -40
  696. package/dist/list-Dl8KfxrF.cjs.map +0 -1
  697. package/dist/list-DrsawQ5R.js.map +0 -1
  698. package/dist/menu-BFRcTe3o.cjs.map +0 -1
  699. package/dist/menu-CsY5lMqY.js.map +0 -1
  700. package/dist/mixins-BoMURWag.cjs.map +0 -1
  701. package/dist/mixins-bCEXbwJV.js.map +0 -1
  702. package/dist/notification-DFKRMmSq.js.map +0 -1
  703. package/dist/notification-FBf3Mb2e.cjs.map +0 -1
  704. package/dist/option-Ct0lGdH3.js.map +0 -1
  705. package/dist/option-Il1KpU8M.cjs +0 -43
  706. package/dist/option-Il1KpU8M.cjs.map +0 -1
  707. package/dist/overlay-Bh8Q_R01.js.map +0 -1
  708. package/dist/overlay-sRXiMkjn.cjs.map +0 -1
  709. package/dist/overlay.confirm-body-CQihsR20.js.map +0 -1
  710. package/dist/overlay.confirm-body-Jc1EuMGs.cjs.map +0 -1
  711. package/dist/overlay.service-9Dp3g7ot.cjs.map +0 -1
  712. package/dist/overlay.service-BXPgS7ay.js.map +0 -1
  713. package/dist/progress-CWC5XYZ_.cjs +0 -51
  714. package/dist/progress-CWC5XYZ_.cjs.map +0 -1
  715. package/dist/progress-CYLshdo2.js.map +0 -1
  716. package/dist/radio-group-6kCgOgBL.cjs.map +0 -1
  717. package/dist/radio-group-bZtZHOj_.js.map +0 -1
  718. package/dist/select-CU3X-PIa.js.map +0 -1
  719. package/dist/select-MXsF8KsU.cjs +0 -56
  720. package/dist/select-MXsF8KsU.cjs.map +0 -1
  721. package/dist/sound.service-B4ZmXpH9.js.map +0 -1
  722. package/dist/sound.service-DjlMvicQ.cjs.map +0 -1
  723. package/dist/splash-screen-CN9dZcqC.cjs +0 -41
  724. package/dist/splash-screen-CN9dZcqC.cjs.map +0 -1
  725. package/dist/splash-screen-emCLYoVl.js.map +0 -1
  726. package/dist/src-DGDTkOvC.js.map +0 -1
  727. package/dist/src-DK3111z_.cjs +0 -240
  728. package/dist/src-DK3111z_.cjs.map +0 -1
  729. package/dist/state-CumAEPQH.cjs.map +0 -1
  730. package/dist/state-DMd_FUeA.js.map +0 -1
  731. package/dist/surface-DGI-FBoi.cjs +0 -7
  732. package/dist/surface-DGI-FBoi.cjs.map +0 -1
  733. package/dist/tabs-4T_4kCf-.js.map +0 -1
  734. package/dist/tabs-Byxxt-AH.cjs.map +0 -1
  735. package/dist/textarea-BwYwH9fu.cjs.map +0 -1
  736. package/dist/textarea-kkYNk1ET.js.map +0 -1
  737. package/dist/theme.service-Dv_55nfE.js.map +0 -1
  738. package/dist/theme.service-pjkTM209.cjs.map +0 -1
  739. package/dist/typography-BVkU11_q.js +0 -358
  740. package/dist/typography-BVkU11_q.js.map +0 -1
  741. package/dist/typography-aaQaIcNc.cjs +0 -282
  742. package/dist/typography-aaQaIcNc.cjs.map +0 -1
  743. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  744. package/dist/utils-H8wNknWC.js.map +0 -1
  745. package/dist/window-C76zstbV.js.map +0 -1
  746. package/dist/window-CmB9XZzT.cjs +0 -58
  747. package/dist/window-CmB9XZzT.cjs.map +0 -1
  748. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  749. package/src/form/fields/date-range/date-utils.ts +0 -58
  750. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  751. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  752. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  753. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  754. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  755. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  756. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  757. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  758. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  759. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-COhUhUCr.js","names":["#playSound"],"sources":["../src/notification/notification.scss?inline","../src/notification/notification.ts","../src/notification/notification-service.ts","../src/notification/notify.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n}\n\n.notification {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: stretch;\n\tmax-width: 360px;\n\toverflow: hidden;\n\n\t/* Asymmetric radius: 4px left, 14px right */\n\tborder-radius: 4px 14px 14px 4px;\n\toutline: 1px solid color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 50%, transparent);\n\n\tbackground: linear-gradient(\n\t\t180deg,\n\t\tcolor-mix(in srgb, var(--schmancy-sys-color-surface-container) 100%, transparent),\n\t\tcolor-mix(in srgb, var(--schmancy-sys-color-surface-containerHigh) 100%, transparent)\n\t);\n\n\tcolor: var(--schmancy-sys-color-surface-on);\n\n\t/* Type-colored luminous glow — tightened */\n\t--notification-glow-color: var(--schmancy-sys-color-primary-default);\n\tbox-shadow:\n\t\t0 6px 28px -10px color-mix(in srgb, var(--notification-glow-color) 22%, transparent),\n\t\t0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);\n\n\ttransition:\n\t\tbox-shadow 300ms ease,\n\t\ttransform 300ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\n\t&.info {\n\t\t--notification-glow-color: var(--schmancy-sys-color-primary-default);\n\t\t--notification-accent: var(--schmancy-sys-color-primary-default);\n\t}\n\t&.success {\n\t\t--notification-glow-color: var(--schmancy-sys-color-success-default);\n\t\t--notification-accent: var(--schmancy-sys-color-success-default);\n\t}\n\t&.warning {\n\t\t--notification-glow-color: var(--schmancy-sys-color-tertiary-default);\n\t\t--notification-accent: var(--schmancy-sys-color-tertiary-default);\n\t}\n\t&.error {\n\t\t--notification-glow-color: var(--schmancy-sys-color-error-default);\n\t\t--notification-accent: var(--schmancy-sys-color-error-default);\n\t}\n\n\t&.hovered {\n\t\tbox-shadow:\n\t\t\t0 10px 36px -8px color-mix(in srgb, var(--notification-glow-color) 34%, transparent),\n\t\t\t0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);\n\t\ttransform: translateY(-2px);\n\n\t\t.accent-rail {\n\t\t\twidth: 4px;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: box-shadow 200ms ease;\n\n\t\t&.hovered {\n\t\t\ttransform: none;\n\t\t}\n\t}\n}\n\n/* Vertical accent rail — left edge */\n.accent-rail {\n\tflex-shrink: 0;\n\twidth: 3px;\n\tbackground: var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\tborder-radius: 4px 0 0 4px;\n\ttransition: width 200ms ease;\n\talign-self: stretch;\n}\n\n/* Card body */\n.content {\n\tflex: 1;\n\tmin-width: 0;\n\tpadding: 14px 36px 14px 18px;\n}\n\n/* Monospace uppercase type tag */\n.type-tag {\n\tdisplay: block;\n\tfont-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;\n\tfont-size: 10px;\n\tletter-spacing: 0.14em;\n\ttext-transform: uppercase;\n\topacity: 0.7;\n\tcolor: var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\tmargin-bottom: 4px;\n\tline-height: 1;\n}\n\n/* Serif display title */\n.title {\n\tfont-family: ui-serif, Georgia, Cambria, 'Times New Roman', serif;\n\tfont-weight: 500;\n\tfont-size: 15px;\n\tline-height: 1.3;\n\tmargin-bottom: 3px;\n\tcolor: var(--schmancy-sys-color-surface-on);\n}\n\n/* Body message */\n.message {\n\tfont-family:\n\t\tui-sans-serif,\n\t\tsystem-ui,\n\t\t-apple-system,\n\t\tsans-serif;\n\tfont-size: 13px;\n\tline-height: 1.45;\n\topacity: 0.72;\n}\n\n/* Close button — 28×28 hit target, × glyph */\n.close {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\twidth: 28px;\n\theight: 28px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: none;\n\tborder: none;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tcolor: var(--schmancy-sys-color-surface-onVariant);\n\tcursor: pointer;\n\tpadding: 0;\n\tline-height: 1;\n\topacity: 0.4;\n\tborder-radius: 50%;\n\ttransition: opacity 200ms ease;\n\n\t&:hover {\n\t\topacity: 0.85;\n\t}\n\n\t&:focus-visible {\n\t\toutline: none;\n\t\topacity: 1;\n\t\tbox-shadow: 0 0 0 2px var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\t}\n}\n\n/* Progress hairline — top edge */\n.progress {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: auto;\n\tleft: 0;\n\tright: 0;\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { html, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { BehaviorSubject, timer, interval, NEVER } from 'rxjs'\nimport { switchMap, takeUntil, map, tap, distinctUntilChanged } from 'rxjs/operators'\nimport '../progress/progress'\nimport style from './notification.scss?inline'\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error'\n\n/**\n * @fires close - When notification is closed\n */\n@customElement('sch-notification')\nexport default class SchmancyNotification extends SchmancyElement {\n\tstatic styles = [unsafeCSS(style)]\n\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) message = ''\n\t@property({ type: String }) type: NotificationType = 'info'\n\t@property({ type: Boolean }) closable = true\n\t@property({ type: Number }) duration = 5000\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\n\t@property({ type: Boolean }) showProgress = false\n\t// startPosition retained for API compatibility — not used in entrance animation\n\t@property({ type: Object }) startPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n\t@state() private visible = true\n\t@state() private progress = 100\n\t@state() private hovered = false\n\t@state() private closing = false\n\n\tprivate paused$ = new BehaviorSubject<boolean>(false)\n\tprivate startTime = 0\n\tprivate pausedAt = 0\n\tprivate elapsedBeforePause = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis.style.position = 'fixed'\n\t\tthis.style.top = '16px'\n\t\tthis.style.right = '16px'\n\t\tthis.style.zIndex = '10001'\n\t\tthis.style.opacity = '0'\n\n\t\tthis.updateComplete.then(() => {\n\t\t\tthis.animateIn()\n\t\t\treturn\n\t\t})\n\n\t\tif (this.duration > 0) {\n\t\t\tthis.setupAutoClose()\n\t\t\tthis.setupProgressUpdates()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis.#playSound()\n\t\t}\n\t}\n\n\tprivate async animateIn() {\n\t\tconst reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches\n\t\tawait this.animate(\n\t\t\treduced\n\t\t\t\t? [{ opacity: 0 }, { opacity: 1 }]\n\t\t\t\t: [\n\t\t\t\t\t\t{ transform: 'translateX(40px) scale(0.96)', opacity: 0 },\n\t\t\t\t\t\t{ transform: 'translateX(0) scale(1)', opacity: 1 },\n\t\t\t\t\t],\n\t\t\t{\n\t\t\t\tduration: reduced ? 200 : 360,\n\t\t\t\teasing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\t}\n\n\tprivate setupAutoClose() {\n\t\tif (this.duration <= 0) return\n\n\t\tthis.startTime = Date.now()\n\t\tthis.elapsedBeforePause = 0\n\n\t\tthis.paused$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(paused => {\n\t\t\t\t\tif (paused) {\n\t\t\t\t\t\tthis.pausedAt = Date.now()\n\t\t\t\t\t\tthis.elapsedBeforePause += this.pausedAt - this.startTime\n\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.startTime = Date.now()\n\t\t\t\t\t\tconst remaining = this.duration - this.elapsedBeforePause\n\t\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn timer(remaining)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.close())\n\t}\n\n\tprivate setupProgressUpdates() {\n\t\tif (this.duration <= 0) return\n\n\t\tinterval(16)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tthis.paused$.pipe(\n\t\t\t\t\t\tmap(paused => {\n\t\t\t\t\t\t\tif (paused) return this.progress\n\t\t\t\t\t\t\tconst elapsed = this.elapsedBeforePause + (Date.now() - this.startTime)\n\t\t\t\t\t\t\tconst remaining = Math.max(0, this.duration - elapsed)\n\t\t\t\t\t\t\treturn (remaining / this.duration) * 100\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(progress => {\n\t\t\t\t\tthis.progress = progress\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t#playSound() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('playsound', {\n\t\t\t\tdetail: { type: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handleMouseEnter() {\n\t\tthis.hovered = true\n\t\tthis.paused$.next(true)\n\t}\n\n\tprivate handleMouseLeave() {\n\t\tthis.hovered = false\n\t\tthis.paused$.next(false)\n\t}\n\n\tpublic async close() {\n\t\tif (this.closing) return\n\t\tthis.closing = true\n\t\tthis.visible = false\n\n\t\tawait this.animate(\n\t\t\t[\n\t\t\t\t{ transform: 'translateX(0) scale(1)', opacity: 1 },\n\t\t\t\t{ transform: 'translateX(20px) scale(0.98)', opacity: 0 },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 180,\n\t\t\t\teasing: 'cubic-bezier(0.4, 0, 1, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('close', {\n\t\t\t\tdetail: { id: this.id },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate getTypeLabel(): string {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn 'SUCCESS'\n\t\t\tcase 'warning':\n\t\t\t\treturn 'WARNING'\n\t\t\tcase 'error':\n\t\t\t\treturn 'ERROR'\n\t\t\tdefault:\n\t\t\t\treturn 'INFO'\n\t\t}\n\t}\n\n\trender() {\n\t\tif (!this.visible && this.closing) return html``\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"notification ${this.type} ${this.closing ? 'closing' : ''} ${this.hovered ? 'hovered' : ''}\"\n\t\t\t\trole=\"alert\"\n\t\t\t\t@mouseenter=${this.handleMouseEnter}\n\t\t\t\t@mouseleave=${this.handleMouseLeave}\n\t\t\t>\n\t\t\t\t${this.showProgress || this.duration > 0\n\t\t\t\t\t? html`<schmancy-progress\n\t\t\t\t\t\t\tclass=\"progress\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t.value=${this.progress}\n\t\t\t\t\t\t\t?indeterminate=${this.showProgress && this.duration === 0}\n\t\t\t\t\t\t></schmancy-progress>`\n\t\t\t\t\t: ''}\n\t\t\t\t<div class=\"accent-rail\"></div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<span class=\"type-tag\">${this.getTypeLabel()}</span>\n\t\t\t\t\t${this.title ? html`<div class=\"title\">${this.title}</div>` : ''}\n\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t</div>\n\t\t\t\t${this.closable\n\t\t\t\t\t? html` <button class=\"close\" aria-label=\"Close notification\" @click=${this.close}>&#215;</button> `\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","import { fromEvent } from 'rxjs'\nimport { $sounds, type Feeling } from '../audio'\nimport SchmancyNotification, { NotificationType } from './notification'\n\nexport interface NotificationOptions {\n\tid?: string\n\ttitle?: string\n\tmessage: string\n\ttype?: NotificationType\n\tduration?: number\n\tclosable?: boolean\n\tplaySound?: boolean\n\tshowProgress?: boolean\n}\n\nconst typeToFeeling: Record<NotificationType, Feeling> = {\n\tinfo: 'curious',\n\tsuccess: 'content',\n\twarning: 'anxious',\n\terror: 'disappointed',\n}\n\nconst typeDurations: Record<NotificationType, number> = {\n\tsuccess: 1500,\n\tinfo: 2000,\n\twarning: 2500,\n\terror: 2500,\n}\n\n$sounds.setVolume(0.1)\n\n// Track last mouse position via RxJS\nlet lastClickPosition = { x: window.innerWidth - 100, y: 50 }\nif (typeof window !== 'undefined') {\n\tfromEvent<MouseEvent>(window, 'mousedown', { capture: true, passive: true } as AddEventListenerOptions).subscribe(\n\t\te => {\n\t\t\tlastClickPosition = { x: e.clientX, y: e.clientY }\n\t\t},\n\t)\n}\n\nlet currentNotification: SchmancyNotification | null = null\nconst notificationStack: string[] = []\n\nfunction show(options: NotificationOptions): string {\n\tconst id = options.id ?? `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\tnotificationStack.push(id)\n\n\tif (currentNotification) {\n\t\tcurrentNotification.remove()\n\t\tcurrentNotification = null\n\t}\n\n\tconst notification = document.createElement('sch-notification') as SchmancyNotification\n\tnotification.id = id\n\tnotification.title = options.title ?? ''\n\tnotification.message = options.message\n\tnotification.type = options.type ?? 'info'\n\tnotification.duration = options.duration ?? 1000\n\tnotification.closable = options.closable !== false\n\tnotification.playSound = false\n\tnotification.showProgress = options.showProgress ?? false\n\tnotification.startPosition = { ...lastClickPosition }\n\n\tif (options.playSound !== false) {\n\t\t$sounds.play(typeToFeeling[notification.type])\n\t}\n\n\tfromEvent(notification, 'close').subscribe(() => {\n\t\tconst index = notificationStack.indexOf(id)\n\t\tif (index > -1) notificationStack.splice(index, 1)\n\t\tnotification.remove()\n\t\tif (currentNotification === notification) currentNotification = null\n\t})\n\n\tdocument.body.appendChild(notification)\n\tcurrentNotification = notification\n\treturn id\n}\n\n/**\n * Global notification (toast) utility. Fire-and-forget API for success,\n * error, info, and warning toasts, plus a low-level `show` for custom\n * notifications.\n *\n * @service\n * @summary Toast notifications — success, error, info, warning.\n * @method show(options: NotificationOptions) - Low-level; show any NotificationOptions.\n * @method success(message, options?) - Green success toast.\n * @method error(message, options?) - Red error toast.\n * @method info(message, options?) - Blue informational toast.\n * @method warning(message, options?) - Amber warning toast.\n */\nexport const $notify = {\n\tshow,\n\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? (options.duration ?? typeDurations.info) : 1,\n\t\t\t...options,\n\t\t}),\n\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? (options.duration ?? typeDurations.success) : 1,\n\t\t\t...options,\n\t\t}),\n\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? (options.duration ?? typeDurations.warning) : 1,\n\t\t\t...options,\n\t\t}),\n\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? (options.duration ?? typeDurations.error) : 1,\n\t\t\t...options,\n\t\t}),\n\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => show({ message, duration, ...options }),\n\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string =>\n\t\tshow({ message, duration: 0, ...options }),\n\n\tdismiss: (id?: string): void => {\n\t\tconst targetId = id ? notificationStack.splice(notificationStack.indexOf(id), 1)[0] : notificationStack.pop()\n\t\tif (targetId && currentNotification?.id === targetId) currentNotification.close()\n\t},\n\n\tupdate: (id: string, options: Partial<NotificationOptions>): void => {\n\t\tif (currentNotification?.id !== id) return\n\t\tif (options.title !== undefined) currentNotification.title = options.title\n\t\tif (options.message !== undefined) currentNotification.message = options.message\n\t\tif (options.type !== undefined) currentNotification.type = options.type\n\t},\n}\n","import { Observable, tap, finalize, catchError } from 'rxjs'\nimport { $notify, NotificationOptions } from './notification-service'\n\nexport interface NotifyOptions {\n\t/**\n\t * Message to show while the operation is in progress\n\t */\n\tloadingMessage?: string\n\t/**\n\t * Message to show when the operation completes successfully\n\t */\n\tsuccessMessage?: string\n\t/**\n\t * Message to show when the operation fails (can be a function to format error)\n\t */\n\terrorMessage?: string | ((error: any) => string)\n\t/**\n\t * Type of notification for loading state\n\t */\n\tloadingType?: NotificationOptions['type']\n\t/**\n\t * Type of notification for success state\n\t */\n\tsuccessType?: NotificationOptions['type']\n\t/**\n\t * Type of notification for error state\n\t */\n\terrorType?: NotificationOptions['type']\n\t/**\n\t * Whether to auto-dismiss the loading notification on complete/error\n\t */\n\tautoDismissLoading?: boolean\n\t/**\n\t * Duration for success notification (ms). Use 0 for persistent\n\t */\n\tsuccessDuration?: number\n\t/**\n\t * Duration for error notification (ms). Use 0 for persistent\n\t */\n\terrorDuration?: number\n}\n\n/**\n * Wraps an Observable with notification lifecycle management.\n * Shows a loading notification with progress indicator, then auto-dismisses and shows success/error notification.\n *\n * @example\n * ```typescript\n * // Basic usage with progress indicator\n * someApiCall().pipe(\n * notify({\n * loadingMessage: 'Loading data...',\n * successMessage: 'Data loaded successfully!',\n * errorMessage: 'Failed to load data'\n * })\n * ).subscribe()\n *\n * // With custom durations\n * saveData().pipe(\n * notify({\n * loadingMessage: 'Saving...',\n * successMessage: 'Saved!',\n * successDuration: 5000, // Success stays for 5 seconds\n * errorMessage: (err) => `Save failed: ${err.message}`,\n * errorDuration: 0 // Error is persistent until dismissed\n * })\n * ).subscribe()\n *\n * // Full configuration example\n * uploadFile().pipe(\n * notify({\n * loadingMessage: 'Uploading file...',\n * loadingType: 'info',\n * successMessage: 'Upload complete!',\n * successType: 'success',\n * successDuration: 3000,\n * errorMessage: (err) => `Upload failed: ${err.message}`,\n * errorType: 'error',\n * errorDuration: 10000,\n * autoDismissLoading: true\n * })\n * ).subscribe()\n * ```\n */\nexport function notify<T>(options: NotifyOptions) {\n\treturn (source: Observable<T>): Observable<T> => {\n\t\tlet loadingNotificationId: string | undefined\n\n\t\t// Show loading notification if message provided\n\t\tif (options.loadingMessage) {\n\t\t\tloadingNotificationId = $notify.show({\n\t\t\t\tmessage: options.loadingMessage,\n\t\t\t\ttype: options.loadingType || 'info',\n\t\t\t\tduration: 0, // Persistent until dismissed\n\t\t\t\tshowProgress: true, // Show indeterminate progress by default\n\t\t\t})\n\t\t}\n\n\t\treturn source.pipe(\n\t\t\ttap(value => {\n\t\t\t\t// Check if the emitted value contains progress information\n\t\t\t\t// Common patterns: { progress: number }, { loaded: number, total: number }, etc.\n\t\t\t\tif (loadingNotificationId && typeof value === 'object' && value !== null) {\n\t\t\t\t\tlet progress: number | undefined\n\n\t\t\t\t\t// Check for different progress patterns\n\t\t\t\t\tif ('progress' in value && typeof (value as any).progress === 'number') {\n\t\t\t\t\t\tprogress = (value as any).progress\n\t\t\t\t\t} else if ('loaded' in value && 'total' in value) {\n\t\t\t\t\t\tconst loaded = (value as any).loaded\n\t\t\t\t\t\tconst total = (value as any).total\n\t\t\t\t\t\tif (typeof loaded === 'number' && typeof total === 'number' && total > 0) {\n\t\t\t\t\t\t\tprogress = (loaded / total) * 100\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update notification with progress if available\n\t\t\t\t\tif (progress !== undefined) {\n\t\t\t\t\t\t// We need to update the progress of the notification\n\t\t\t\t\t\t// For now, we'll update the message to show progress percentage\n\t\t\t\t\t\t$notify.update?.(loadingNotificationId, {\n\t\t\t\t\t\t\tmessage: `${options.loadingMessage} (${Math.round(progress)}%)`,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if this is the final success emission (not a progress update)\n\t\t\t\t// Typically file uploads emit progress events then a final result\n\t\t\t\tconst isProgressUpdate =\n\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t('progress' in value || ('loaded' in value && 'total' in value))\n\n\t\t\t\tif (!isProgressUpdate) {\n\t\t\t\t\t// On successful final emission, dismiss loading and show success\n\t\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t\t\tloadingNotificationId = undefined\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.successMessage) {\n\t\t\t\t\t\t$notify.show({\n\t\t\t\t\t\t\tmessage: options.successMessage,\n\t\t\t\t\t\t\ttype: options.successType || 'success',\n\t\t\t\t\t\t\tduration: options.successDuration ?? 2000,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t\tcatchError(error => {\n\t\t\t\t// On error, dismiss loading and show error\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t\tloadingNotificationId = undefined\n\t\t\t\t}\n\n\t\t\t\tif (options.errorMessage) {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\ttypeof options.errorMessage === 'function' ? options.errorMessage(error) : options.errorMessage\n\n\t\t\t\t\t$notify.show({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\ttype: options.errorType || 'error',\n\t\t\t\t\t\tduration: options.errorDuration ?? 3000,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Re-throw the error to maintain the error flow\n\t\t\t\tthrow error\n\t\t\t}),\n\t\t\tfinalize(() => {\n\t\t\t\t// Clean up any remaining loading notification\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n}\n\n/**\n * Simplified version for API calls that just need loading and auto-dismiss.\n * Perfect for fire-and-forget operations where you want to show progress.\n *\n * @example\n * ```typescript\n * downloadData().pipe(\n * notifyProgress('Downloading...')\n * ).subscribe()\n *\n * // With custom messages\n * saveDocument().pipe(\n * notifyProgress('Saving document...', 'Document saved!', 'Save failed')\n * ).subscribe()\n * ```\n */\nexport function notifyProgress<T>(loadingMessage: string, successMessage?: string, errorMessage?: string) {\n\treturn notify<T>({\n\t\tloadingMessage,\n\t\tsuccessMessage: successMessage || undefined,\n\t\terrorMessage: errorMessage || undefined,\n\t\tautoDismissLoading: true,\n\t})\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);const t=require(`./audio-B924fI5N.cjs`);require(`./progress-CWC5XYZ_.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`);var o=class extends e.t{constructor(...e){super(...e),this.title=``,this.message=``,this.type=`info`,this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this.startPosition={x:0,y:0},this.visible=!0,this.progress=100,this.hovered=!1,this.closing=!1,this.paused$=new n.BehaviorSubject(!1),this.startTime=0,this.pausedAt=0,this.elapsedBeforePause=0}static{this.styles=[(0,a.unsafeCSS)(`:host{display:block}.notification{outline:1px solid color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 50%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--schmancy-sys-color-surface-container) 100%, transparent), color-mix(in srgb, var(--schmancy-sys-color-surface-containerHigh) 100%, transparent));max-width:360px;color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);box-shadow:0 6px 28px -10px color-mix(in srgb, var(--notification-glow-color) 22%, transparent), 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);border-radius:4px 14px 14px 4px;align-items:stretch;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default);--notification-accent:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default);--notification-accent:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-tertiary-default);--notification-accent:var(--schmancy-sys-color-tertiary-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default);--notification-accent:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 10px 36px -8px color-mix(in srgb, var(--notification-glow-color) 34%, transparent), 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);transform:translateY(-2px)}.notification.hovered .accent-rail{width:4px}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.accent-rail{background:var(--notification-accent,var(--schmancy-sys-color-primary-default));border-radius:4px 0 0 4px;flex-shrink:0;align-self:stretch;width:3px;transition:width .2s}.content{flex:1;min-width:0;padding:14px 36px 14px 18px}.type-tag{letter-spacing:.14em;text-transform:uppercase;opacity:.7;color:var(--notification-accent,var(--schmancy-sys-color-primary-default));margin-bottom:4px;font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;font-size:10px;line-height:1;display:block}.title{color:var(--schmancy-sys-color-surface-on);margin-bottom:3px;font-family:ui-serif,Georgia,Cambria,Times New Roman,serif;font-size:15px;font-weight:500;line-height:1.3}.message{opacity:.72;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.45}.close{width:28px;height:28px;color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:18px;font-weight:400;line-height:1;transition:opacity .2s;display:flex;position:absolute;top:6px;right:6px}.close:hover{opacity:.85}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--notification-accent,var(--schmancy-sys-color-primary-default));outline:none}.progress{position:absolute;inset:0 0 auto}`)]}connectedCallback(){super.connectedCallback(),this.style.position=`fixed`,this.style.top=`16px`,this.style.right=`16px`,this.style.zIndex=`10001`,this.style.opacity=`0`,this.updateComplete.then(()=>{this.animateIn()}),this.duration>0&&(this.setupAutoClose(),this.setupProgressUpdates()),this.playSound&&this.#e()}async animateIn(){let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;await this.animate(e?[{opacity:0},{opacity:1}]:[{transform:`translateX(40px) scale(0.96)`,opacity:0},{transform:`translateX(0) scale(1)`,opacity:1}],{duration:e?200:360,easing:`cubic-bezier(0.22, 1, 0.36, 1)`,fill:`forwards`}).finished}setupAutoClose(){this.duration<=0||(this.startTime=Date.now(),this.elapsedBeforePause=0,this.paused$.pipe((0,r.switchMap)(e=>{if(e)return this.pausedAt=Date.now(),this.elapsedBeforePause+=this.pausedAt-this.startTime,n.NEVER;{this.startTime=Date.now();let e=this.duration-this.elapsedBeforePause;return e<=0?(this.close(),n.NEVER):(0,n.timer)(e)}}),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>this.close()))}setupProgressUpdates(){this.duration<=0||(0,n.interval)(16).pipe((0,r.switchMap)(()=>this.paused$.pipe((0,r.map)(e=>{if(e)return this.progress;let t=this.elapsedBeforePause+(Date.now()-this.startTime);return Math.max(0,this.duration-t)/this.duration*100}))),(0,r.distinctUntilChanged)(),(0,r.tap)(e=>{this.progress=e}),(0,r.takeUntil)(this.disconnecting)).subscribe()}#e(){this.dispatchEvent(new CustomEvent(`playsound`,{detail:{type:this.type},bubbles:!0,composed:!0}))}handleMouseEnter(){this.hovered=!0,this.paused$.next(!0)}handleMouseLeave(){this.hovered=!1,this.paused$.next(!1)}async close(){this.closing||(this.closing=!0,this.visible=!1,await this.animate([{transform:`translateX(0) scale(1)`,opacity:1},{transform:`translateX(20px) scale(0.98)`,opacity:0}],{duration:180,easing:`cubic-bezier(0.4, 0, 1, 1)`,fill:`forwards`}).finished,this.dispatchEvent(new CustomEvent(`close`,{detail:{id:this.id},bubbles:!0,composed:!0})))}getTypeLabel(){switch(this.type){case`success`:return`SUCCESS`;case`warning`:return`WARNING`;case`error`:return`ERROR`;default:return`INFO`}}render(){return!this.visible&&this.closing?a.html``:a.html`
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);const t=require(`./audio-CpwrIaw-.cjs`);require(`./progress-DsCnFsH5.cjs`);let n=require(`rxjs`),r=require(`rxjs/operators`),i=require(`lit/decorators.js`),a=require(`lit`);var o=class extends e.t{constructor(...e){super(...e),this.title=``,this.message=``,this.type=`info`,this.closable=!0,this.duration=5e3,this.id=`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`,this.playSound=!0,this.showProgress=!1,this.startPosition={x:0,y:0},this.visible=!0,this.progress=100,this.hovered=!1,this.closing=!1,this.paused$=new n.BehaviorSubject(!1),this.startTime=0,this.pausedAt=0,this.elapsedBeforePause=0}static{this.styles=[(0,a.unsafeCSS)(`:host{display:block}.notification{outline:1px solid color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 50%, transparent);background:linear-gradient(180deg, color-mix(in srgb, var(--schmancy-sys-color-surface-container) 100%, transparent), color-mix(in srgb, var(--schmancy-sys-color-surface-containerHigh) 100%, transparent));max-width:360px;color:var(--schmancy-sys-color-surface-on);--notification-glow-color:var(--schmancy-sys-color-primary-default);box-shadow:0 6px 28px -10px color-mix(in srgb, var(--notification-glow-color) 22%, transparent), 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);border-radius:4px 14px 14px 4px;align-items:stretch;transition:box-shadow .3s,transform .3s cubic-bezier(.34,1.56,.64,1);display:flex;position:relative;overflow:hidden}.notification.info{--notification-glow-color:var(--schmancy-sys-color-primary-default);--notification-accent:var(--schmancy-sys-color-primary-default)}.notification.success{--notification-glow-color:var(--schmancy-sys-color-success-default);--notification-accent:var(--schmancy-sys-color-success-default)}.notification.warning{--notification-glow-color:var(--schmancy-sys-color-tertiary-default);--notification-accent:var(--schmancy-sys-color-tertiary-default)}.notification.error{--notification-glow-color:var(--schmancy-sys-color-error-default);--notification-accent:var(--schmancy-sys-color-error-default)}.notification.hovered{box-shadow:0 10px 36px -8px color-mix(in srgb, var(--notification-glow-color) 34%, transparent), 0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);transform:translateY(-2px)}.notification.hovered .accent-rail{width:4px}@media (prefers-reduced-motion:reduce){.notification{transition:box-shadow .2s}.notification.hovered{transform:none}}.accent-rail{background:var(--notification-accent,var(--schmancy-sys-color-primary-default));border-radius:4px 0 0 4px;flex-shrink:0;align-self:stretch;width:3px;transition:width .2s}.content{flex:1;min-width:0;padding:14px 36px 14px 18px}.type-tag{letter-spacing:.14em;text-transform:uppercase;opacity:.7;color:var(--notification-accent,var(--schmancy-sys-color-primary-default));margin-bottom:4px;font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;font-size:10px;line-height:1;display:block}.title{color:var(--schmancy-sys-color-surface-on);margin-bottom:3px;font-family:ui-serif,Georgia,Cambria,Times New Roman,serif;font-size:15px;font-weight:500;line-height:1.3}.message{opacity:.72;font-family:ui-sans-serif,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.45}.close{width:28px;height:28px;color:var(--schmancy-sys-color-surface-onVariant);cursor:pointer;opacity:.4;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:18px;font-weight:400;line-height:1;transition:opacity .2s;display:flex;position:absolute;top:6px;right:6px}.close:hover{opacity:.85}.close:focus-visible{opacity:1;box-shadow:0 0 0 2px var(--notification-accent,var(--schmancy-sys-color-primary-default));outline:none}.progress{position:absolute;inset:0 0 auto}`)]}connectedCallback(){super.connectedCallback(),this.style.position=`fixed`,this.style.top=`16px`,this.style.right=`16px`,this.style.zIndex=`10001`,this.style.opacity=`0`,this.updateComplete.then(()=>{this.animateIn()}),this.duration>0&&(this.setupAutoClose(),this.setupProgressUpdates()),this.playSound&&this.#e()}async animateIn(){let e=window.matchMedia(`(prefers-reduced-motion: reduce)`).matches;await this.animate(e?[{opacity:0},{opacity:1}]:[{transform:`translateX(40px) scale(0.96)`,opacity:0},{transform:`translateX(0) scale(1)`,opacity:1}],{duration:e?200:360,easing:`cubic-bezier(0.22, 1, 0.36, 1)`,fill:`forwards`}).finished}setupAutoClose(){this.duration<=0||(this.startTime=Date.now(),this.elapsedBeforePause=0,this.paused$.pipe((0,r.switchMap)(e=>{if(e)return this.pausedAt=Date.now(),this.elapsedBeforePause+=this.pausedAt-this.startTime,n.NEVER;{this.startTime=Date.now();let e=this.duration-this.elapsedBeforePause;return e<=0?(this.close(),n.NEVER):(0,n.timer)(e)}}),(0,r.takeUntil)(this.disconnecting)).subscribe(()=>this.close()))}setupProgressUpdates(){this.duration<=0||(0,n.interval)(16).pipe((0,r.switchMap)(()=>this.paused$.pipe((0,r.map)(e=>{if(e)return this.progress;let t=this.elapsedBeforePause+(Date.now()-this.startTime);return Math.max(0,this.duration-t)/this.duration*100}))),(0,r.distinctUntilChanged)(),(0,r.tap)(e=>{this.progress=e}),(0,r.takeUntil)(this.disconnecting)).subscribe()}#e(){this.dispatchEvent(new CustomEvent(`playsound`,{detail:{type:this.type},bubbles:!0,composed:!0}))}handleMouseEnter(){this.hovered=!0,this.paused$.next(!0)}handleMouseLeave(){this.hovered=!1,this.paused$.next(!1)}async close(){this.closing||(this.closing=!0,this.visible=!1,await this.animate([{transform:`translateX(0) scale(1)`,opacity:1},{transform:`translateX(20px) scale(0.98)`,opacity:0}],{duration:180,easing:`cubic-bezier(0.4, 0, 1, 1)`,fill:`forwards`}).finished,this.dispatchEvent(new CustomEvent(`close`,{detail:{id:this.id},bubbles:!0,composed:!0})))}getTypeLabel(){switch(this.type){case`success`:return`SUCCESS`;case`warning`:return`WARNING`;case`error`:return`ERROR`;default:return`INFO`}}render(){return!this.visible&&this.closing?a.html``:a.html`
2
2
  <div
3
3
  class="notification ${this.type} ${this.closing?`closing`:``} ${this.hovered?`hovered`:``}"
4
4
  role="alert"
@@ -17,8 +17,6 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`
17
17
  ${this.title?a.html`<div class="title">${this.title}</div>`:``}
18
18
  <div class="message">${this.message}</div>
19
19
  </div>
20
- ${this.closable?a.html`
21
- <button class="close" aria-label="Close notification" @click=${this.close}>&#215;</button>
22
- `:``}
20
+ ${this.closable?a.html` <button class="close" aria-label="Close notification" @click=${this.close}>&#215;</button> `:``}
23
21
  </div>
24
22
  `}};e.u([(0,i.property)({type:String})],o.prototype,`title`,void 0),e.u([(0,i.property)({type:String})],o.prototype,`message`,void 0),e.u([(0,i.property)({type:String})],o.prototype,`type`,void 0),e.u([(0,i.property)({type:Boolean})],o.prototype,`closable`,void 0),e.u([(0,i.property)({type:Number})],o.prototype,`duration`,void 0),e.u([(0,i.property)({type:String})],o.prototype,`id`,void 0),e.u([(0,i.property)({type:Boolean})],o.prototype,`playSound`,void 0),e.u([(0,i.property)({type:Boolean})],o.prototype,`showProgress`,void 0),e.u([(0,i.property)({type:Object})],o.prototype,`startPosition`,void 0),e.u([(0,i.state)()],o.prototype,`visible`,void 0),e.u([(0,i.state)()],o.prototype,`progress`,void 0),e.u([(0,i.state)()],o.prototype,`hovered`,void 0),e.u([(0,i.state)()],o.prototype,`closing`,void 0);var s=o=e.u([(0,i.customElement)(`sch-notification`)],o),c={info:`curious`,success:`content`,warning:`anxious`,error:`disappointed`},l=1500,u=2e3,d=2500,f=2500;t.t.setVolume(.1);var p={x:window.innerWidth-100,y:50};typeof window<`u`&&(0,n.fromEvent)(window,`mousedown`,{capture:!0,passive:!0}).subscribe(e=>{p={x:e.clientX,y:e.clientY}});var m=null,h=[];function g(e){let r=e.id??`notification-${Date.now()}-${Math.floor(1e4*Math.random())}`;h.push(r),m&&=(m.remove(),null);let i=document.createElement(`sch-notification`);return i.id=r,i.title=e.title??``,i.message=e.message,i.type=e.type??`info`,i.duration=e.duration??1e3,i.closable=!1!==e.closable,i.playSound=!1,i.showProgress=e.showProgress??!1,i.startPosition={...p},!1!==e.playSound&&t.t.play(c[i.type]),(0,n.fromEvent)(i,`close`).subscribe(()=>{let e=h.indexOf(r);e>-1&&h.splice(e,1),i.remove(),m===i&&(m=null)}),document.body.appendChild(i),m=i,r}var _={show:g,info:(e,t={})=>g({message:e??``,type:`info`,duration:e?t.duration??u:1,...t}),success:(e,t={})=>g({message:e??``,type:`success`,duration:e?t.duration??l:1,...t}),warning:(e,t={})=>g({message:e??``,type:`warning`,duration:e?t.duration??d:1,...t}),error:(e,t={})=>g({message:e??``,type:`error`,duration:e?t.duration??f:1,...t}),customDuration:(e,t,n={})=>g({message:e,duration:t,...n}),persistent:(e,t={})=>g({message:e,duration:0,...t}),dismiss:e=>{let t=e?h.splice(h.indexOf(e),1)[0]:h.pop();t&&m?.id===t&&m.close()},update:(e,t)=>{m?.id===e&&(t.title!==void 0&&(m.title=t.title),t.message!==void 0&&(m.message=t.message),t.type!==void 0&&(m.type=t.type))}};function v(e){return t=>{let r;return e.loadingMessage&&(r=_.show({message:e.loadingMessage,type:e.loadingType||`info`,duration:0,showProgress:!0})),t.pipe((0,n.tap)(t=>{if(r&&typeof t==`object`&&t){let n;if(`progress`in t&&typeof t.progress==`number`)n=t.progress;else if(`loaded`in t&&`total`in t){let e=t.loaded,r=t.total;typeof e==`number`&&typeof r==`number`&&r>0&&(n=e/r*100)}n!==void 0&&_.update?.(r,{message:`${e.loadingMessage} (${Math.round(n)}%)`})}typeof t==`object`&&t&&(`progress`in t||`loaded`in t&&`total`in t)||(r&&!1!==e.autoDismissLoading&&(_.dismiss(r),r=void 0),e.successMessage&&_.show({message:e.successMessage,type:e.successType||`success`,duration:e.successDuration??2e3}))}),(0,n.catchError)(t=>{if(r&&!1!==e.autoDismissLoading&&(_.dismiss(r),r=void 0),e.errorMessage){let n=typeof e.errorMessage==`function`?e.errorMessage(t):e.errorMessage;_.show({message:n,type:e.errorType||`error`,duration:e.errorDuration??3e3})}throw t}),(0,n.finalize)(()=>{r&&!1!==e.autoDismissLoading&&_.dismiss(r)}))}}function y(e,t,n){return v({loadingMessage:e,successMessage:t||void 0,errorMessage:n||void 0,autoDismissLoading:!0})}Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return v}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-DsdA_MJe.cjs","names":["#playSound"],"sources":["../src/notification/notification.scss?inline","../src/notification/notification.ts","../src/notification/notification-service.ts","../src/notification/notify.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n}\n\n.notification {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: stretch;\n\tmax-width: 360px;\n\toverflow: hidden;\n\n\t/* Asymmetric radius: 4px left, 14px right */\n\tborder-radius: 4px 14px 14px 4px;\n\toutline: 1px solid color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 50%, transparent);\n\n\tbackground: linear-gradient(\n\t\t180deg,\n\t\tcolor-mix(in srgb, var(--schmancy-sys-color-surface-container) 100%, transparent),\n\t\tcolor-mix(in srgb, var(--schmancy-sys-color-surface-containerHigh) 100%, transparent)\n\t);\n\n\tcolor: var(--schmancy-sys-color-surface-on);\n\n\t/* Type-colored luminous glow — tightened */\n\t--notification-glow-color: var(--schmancy-sys-color-primary-default);\n\tbox-shadow:\n\t\t0 6px 28px -10px color-mix(in srgb, var(--notification-glow-color) 22%, transparent),\n\t\t0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);\n\n\ttransition:\n\t\tbox-shadow 300ms ease,\n\t\ttransform 300ms cubic-bezier(0.34, 1.56, 0.64, 1);\n\n\t&.info {\n\t\t--notification-glow-color: var(--schmancy-sys-color-primary-default);\n\t\t--notification-accent: var(--schmancy-sys-color-primary-default);\n\t}\n\t&.success {\n\t\t--notification-glow-color: var(--schmancy-sys-color-success-default);\n\t\t--notification-accent: var(--schmancy-sys-color-success-default);\n\t}\n\t&.warning {\n\t\t--notification-glow-color: var(--schmancy-sys-color-tertiary-default);\n\t\t--notification-accent: var(--schmancy-sys-color-tertiary-default);\n\t}\n\t&.error {\n\t\t--notification-glow-color: var(--schmancy-sys-color-error-default);\n\t\t--notification-accent: var(--schmancy-sys-color-error-default);\n\t}\n\n\t&.hovered {\n\t\tbox-shadow:\n\t\t\t0 10px 36px -8px color-mix(in srgb, var(--notification-glow-color) 34%, transparent),\n\t\t\t0 1px 0 0 color-mix(in srgb, var(--schmancy-sys-color-outline-variant) 30%, transparent);\n\t\ttransform: translateY(-2px);\n\n\t\t.accent-rail {\n\t\t\twidth: 4px;\n\t\t}\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\ttransition: box-shadow 200ms ease;\n\n\t\t&.hovered {\n\t\t\ttransform: none;\n\t\t}\n\t}\n}\n\n/* Vertical accent rail — left edge */\n.accent-rail {\n\tflex-shrink: 0;\n\twidth: 3px;\n\tbackground: var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\tborder-radius: 4px 0 0 4px;\n\ttransition: width 200ms ease;\n\talign-self: stretch;\n}\n\n/* Card body */\n.content {\n\tflex: 1;\n\tmin-width: 0;\n\tpadding: 14px 36px 14px 18px;\n}\n\n/* Monospace uppercase type tag */\n.type-tag {\n\tdisplay: block;\n\tfont-family: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Consolas, monospace;\n\tfont-size: 10px;\n\tletter-spacing: 0.14em;\n\ttext-transform: uppercase;\n\topacity: 0.7;\n\tcolor: var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\tmargin-bottom: 4px;\n\tline-height: 1;\n}\n\n/* Serif display title */\n.title {\n\tfont-family: ui-serif, Georgia, Cambria, 'Times New Roman', serif;\n\tfont-weight: 500;\n\tfont-size: 15px;\n\tline-height: 1.3;\n\tmargin-bottom: 3px;\n\tcolor: var(--schmancy-sys-color-surface-on);\n}\n\n/* Body message */\n.message {\n\tfont-family:\n\t\tui-sans-serif,\n\t\tsystem-ui,\n\t\t-apple-system,\n\t\tsans-serif;\n\tfont-size: 13px;\n\tline-height: 1.45;\n\topacity: 0.72;\n}\n\n/* Close button — 28×28 hit target, × glyph */\n.close {\n\tposition: absolute;\n\ttop: 6px;\n\tright: 6px;\n\twidth: 28px;\n\theight: 28px;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: none;\n\tborder: none;\n\tfont-size: 18px;\n\tfont-weight: 400;\n\tcolor: var(--schmancy-sys-color-surface-onVariant);\n\tcursor: pointer;\n\tpadding: 0;\n\tline-height: 1;\n\topacity: 0.4;\n\tborder-radius: 50%;\n\ttransition: opacity 200ms ease;\n\n\t&:hover {\n\t\topacity: 0.85;\n\t}\n\n\t&:focus-visible {\n\t\toutline: none;\n\t\topacity: 1;\n\t\tbox-shadow: 0 0 0 2px var(--notification-accent, var(--schmancy-sys-color-primary-default));\n\t}\n}\n\n/* Progress hairline — top edge */\n.progress {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: auto;\n\tleft: 0;\n\tright: 0;\n}\n","import { SchmancyElement } from '@mixins/index'\nimport { html, unsafeCSS } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { BehaviorSubject, timer, interval, NEVER } from 'rxjs'\nimport { switchMap, takeUntil, map, tap, distinctUntilChanged } from 'rxjs/operators'\nimport '../progress/progress'\nimport style from './notification.scss?inline'\n\nexport type NotificationType = 'info' | 'success' | 'warning' | 'error'\n\n/**\n * @fires close - When notification is closed\n */\n@customElement('sch-notification')\nexport default class SchmancyNotification extends SchmancyElement {\n\tstatic styles = [unsafeCSS(style)]\n\n\t@property({ type: String }) title = ''\n\t@property({ type: String }) message = ''\n\t@property({ type: String }) type: NotificationType = 'info'\n\t@property({ type: Boolean }) closable = true\n\t@property({ type: Number }) duration = 5000\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\n\t@property({ type: Boolean }) showProgress = false\n\t// startPosition retained for API compatibility — not used in entrance animation\n\t@property({ type: Object }) startPosition: { x: number; y: number } = { x: 0, y: 0 }\n\n\t@state() private visible = true\n\t@state() private progress = 100\n\t@state() private hovered = false\n\t@state() private closing = false\n\n\tprivate paused$ = new BehaviorSubject<boolean>(false)\n\tprivate startTime = 0\n\tprivate pausedAt = 0\n\tprivate elapsedBeforePause = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tthis.style.position = 'fixed'\n\t\tthis.style.top = '16px'\n\t\tthis.style.right = '16px'\n\t\tthis.style.zIndex = '10001'\n\t\tthis.style.opacity = '0'\n\n\t\tthis.updateComplete.then(() => {\n\t\t\tthis.animateIn()\n\t\t\treturn\n\t\t})\n\n\t\tif (this.duration > 0) {\n\t\t\tthis.setupAutoClose()\n\t\t\tthis.setupProgressUpdates()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis.#playSound()\n\t\t}\n\t}\n\n\tprivate async animateIn() {\n\t\tconst reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches\n\t\tawait this.animate(\n\t\t\treduced\n\t\t\t\t? [{ opacity: 0 }, { opacity: 1 }]\n\t\t\t\t: [\n\t\t\t\t\t\t{ transform: 'translateX(40px) scale(0.96)', opacity: 0 },\n\t\t\t\t\t\t{ transform: 'translateX(0) scale(1)', opacity: 1 },\n\t\t\t\t\t],\n\t\t\t{\n\t\t\t\tduration: reduced ? 200 : 360,\n\t\t\t\teasing: 'cubic-bezier(0.22, 1, 0.36, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\t}\n\n\tprivate setupAutoClose() {\n\t\tif (this.duration <= 0) return\n\n\t\tthis.startTime = Date.now()\n\t\tthis.elapsedBeforePause = 0\n\n\t\tthis.paused$\n\t\t\t.pipe(\n\t\t\t\tswitchMap(paused => {\n\t\t\t\t\tif (paused) {\n\t\t\t\t\t\tthis.pausedAt = Date.now()\n\t\t\t\t\t\tthis.elapsedBeforePause += this.pausedAt - this.startTime\n\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.startTime = Date.now()\n\t\t\t\t\t\tconst remaining = this.duration - this.elapsedBeforePause\n\t\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\t\tthis.close()\n\t\t\t\t\t\t\treturn NEVER\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn timer(remaining)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe(() => this.close())\n\t}\n\n\tprivate setupProgressUpdates() {\n\t\tif (this.duration <= 0) return\n\n\t\tinterval(16)\n\t\t\t.pipe(\n\t\t\t\tswitchMap(() =>\n\t\t\t\t\tthis.paused$.pipe(\n\t\t\t\t\t\tmap(paused => {\n\t\t\t\t\t\t\tif (paused) return this.progress\n\t\t\t\t\t\t\tconst elapsed = this.elapsedBeforePause + (Date.now() - this.startTime)\n\t\t\t\t\t\t\tconst remaining = Math.max(0, this.duration - elapsed)\n\t\t\t\t\t\t\treturn (remaining / this.duration) * 100\n\t\t\t\t\t\t}),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\ttap(progress => {\n\t\t\t\t\tthis.progress = progress\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t#playSound() {\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('playsound', {\n\t\t\t\tdetail: { type: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handleMouseEnter() {\n\t\tthis.hovered = true\n\t\tthis.paused$.next(true)\n\t}\n\n\tprivate handleMouseLeave() {\n\t\tthis.hovered = false\n\t\tthis.paused$.next(false)\n\t}\n\n\tpublic async close() {\n\t\tif (this.closing) return\n\t\tthis.closing = true\n\t\tthis.visible = false\n\n\t\tawait this.animate(\n\t\t\t[\n\t\t\t\t{ transform: 'translateX(0) scale(1)', opacity: 1 },\n\t\t\t\t{ transform: 'translateX(20px) scale(0.98)', opacity: 0 },\n\t\t\t],\n\t\t\t{\n\t\t\t\tduration: 180,\n\t\t\t\teasing: 'cubic-bezier(0.4, 0, 1, 1)',\n\t\t\t\tfill: 'forwards',\n\t\t\t},\n\t\t).finished\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('close', {\n\t\t\t\tdetail: { id: this.id },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate getTypeLabel(): string {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn 'SUCCESS'\n\t\t\tcase 'warning':\n\t\t\t\treturn 'WARNING'\n\t\t\tcase 'error':\n\t\t\t\treturn 'ERROR'\n\t\t\tdefault:\n\t\t\t\treturn 'INFO'\n\t\t}\n\t}\n\n\trender() {\n\t\tif (!this.visible && this.closing) return html``\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=\"notification ${this.type} ${this.closing ? 'closing' : ''} ${this.hovered ? 'hovered' : ''}\"\n\t\t\t\trole=\"alert\"\n\t\t\t\t@mouseenter=${this.handleMouseEnter}\n\t\t\t\t@mouseleave=${this.handleMouseLeave}\n\t\t\t>\n\t\t\t\t${this.showProgress || this.duration > 0\n\t\t\t\t\t? html`<schmancy-progress\n\t\t\t\t\t\t\tclass=\"progress\"\n\t\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t\t.value=${this.progress}\n\t\t\t\t\t\t\t?indeterminate=${this.showProgress && this.duration === 0}\n\t\t\t\t\t\t></schmancy-progress>`\n\t\t\t\t\t: ''}\n\t\t\t\t<div class=\"accent-rail\"></div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<span class=\"type-tag\">${this.getTypeLabel()}</span>\n\t\t\t\t\t${this.title ? html`<div class=\"title\">${this.title}</div>` : ''}\n\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t</div>\n\t\t\t\t${this.closable\n\t\t\t\t\t? html` <button class=\"close\" aria-label=\"Close notification\" @click=${this.close}>&#215;</button> `\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","import { fromEvent } from 'rxjs'\nimport { $sounds, type Feeling } from '../audio'\nimport SchmancyNotification, { NotificationType } from './notification'\n\nexport interface NotificationOptions {\n\tid?: string\n\ttitle?: string\n\tmessage: string\n\ttype?: NotificationType\n\tduration?: number\n\tclosable?: boolean\n\tplaySound?: boolean\n\tshowProgress?: boolean\n}\n\nconst typeToFeeling: Record<NotificationType, Feeling> = {\n\tinfo: 'curious',\n\tsuccess: 'content',\n\twarning: 'anxious',\n\terror: 'disappointed',\n}\n\nconst typeDurations: Record<NotificationType, number> = {\n\tsuccess: 1500,\n\tinfo: 2000,\n\twarning: 2500,\n\terror: 2500,\n}\n\n$sounds.setVolume(0.1)\n\n// Track last mouse position via RxJS\nlet lastClickPosition = { x: window.innerWidth - 100, y: 50 }\nif (typeof window !== 'undefined') {\n\tfromEvent<MouseEvent>(window, 'mousedown', { capture: true, passive: true } as AddEventListenerOptions).subscribe(\n\t\te => {\n\t\t\tlastClickPosition = { x: e.clientX, y: e.clientY }\n\t\t},\n\t)\n}\n\nlet currentNotification: SchmancyNotification | null = null\nconst notificationStack: string[] = []\n\nfunction show(options: NotificationOptions): string {\n\tconst id = options.id ?? `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\tnotificationStack.push(id)\n\n\tif (currentNotification) {\n\t\tcurrentNotification.remove()\n\t\tcurrentNotification = null\n\t}\n\n\tconst notification = document.createElement('sch-notification') as SchmancyNotification\n\tnotification.id = id\n\tnotification.title = options.title ?? ''\n\tnotification.message = options.message\n\tnotification.type = options.type ?? 'info'\n\tnotification.duration = options.duration ?? 1000\n\tnotification.closable = options.closable !== false\n\tnotification.playSound = false\n\tnotification.showProgress = options.showProgress ?? false\n\tnotification.startPosition = { ...lastClickPosition }\n\n\tif (options.playSound !== false) {\n\t\t$sounds.play(typeToFeeling[notification.type])\n\t}\n\n\tfromEvent(notification, 'close').subscribe(() => {\n\t\tconst index = notificationStack.indexOf(id)\n\t\tif (index > -1) notificationStack.splice(index, 1)\n\t\tnotification.remove()\n\t\tif (currentNotification === notification) currentNotification = null\n\t})\n\n\tdocument.body.appendChild(notification)\n\tcurrentNotification = notification\n\treturn id\n}\n\n/**\n * Global notification (toast) utility. Fire-and-forget API for success,\n * error, info, and warning toasts, plus a low-level `show` for custom\n * notifications.\n *\n * @service\n * @summary Toast notifications — success, error, info, warning.\n * @method show(options: NotificationOptions) - Low-level; show any NotificationOptions.\n * @method success(message, options?) - Green success toast.\n * @method error(message, options?) - Red error toast.\n * @method info(message, options?) - Blue informational toast.\n * @method warning(message, options?) - Amber warning toast.\n */\nexport const $notify = {\n\tshow,\n\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? (options.duration ?? typeDurations.info) : 1,\n\t\t\t...options,\n\t\t}),\n\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? (options.duration ?? typeDurations.success) : 1,\n\t\t\t...options,\n\t\t}),\n\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? (options.duration ?? typeDurations.warning) : 1,\n\t\t\t...options,\n\t\t}),\n\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string =>\n\t\tshow({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? (options.duration ?? typeDurations.error) : 1,\n\t\t\t...options,\n\t\t}),\n\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => show({ message, duration, ...options }),\n\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string =>\n\t\tshow({ message, duration: 0, ...options }),\n\n\tdismiss: (id?: string): void => {\n\t\tconst targetId = id ? notificationStack.splice(notificationStack.indexOf(id), 1)[0] : notificationStack.pop()\n\t\tif (targetId && currentNotification?.id === targetId) currentNotification.close()\n\t},\n\n\tupdate: (id: string, options: Partial<NotificationOptions>): void => {\n\t\tif (currentNotification?.id !== id) return\n\t\tif (options.title !== undefined) currentNotification.title = options.title\n\t\tif (options.message !== undefined) currentNotification.message = options.message\n\t\tif (options.type !== undefined) currentNotification.type = options.type\n\t},\n}\n","import { Observable, tap, finalize, catchError } from 'rxjs'\nimport { $notify, NotificationOptions } from './notification-service'\n\nexport interface NotifyOptions {\n\t/**\n\t * Message to show while the operation is in progress\n\t */\n\tloadingMessage?: string\n\t/**\n\t * Message to show when the operation completes successfully\n\t */\n\tsuccessMessage?: string\n\t/**\n\t * Message to show when the operation fails (can be a function to format error)\n\t */\n\terrorMessage?: string | ((error: any) => string)\n\t/**\n\t * Type of notification for loading state\n\t */\n\tloadingType?: NotificationOptions['type']\n\t/**\n\t * Type of notification for success state\n\t */\n\tsuccessType?: NotificationOptions['type']\n\t/**\n\t * Type of notification for error state\n\t */\n\terrorType?: NotificationOptions['type']\n\t/**\n\t * Whether to auto-dismiss the loading notification on complete/error\n\t */\n\tautoDismissLoading?: boolean\n\t/**\n\t * Duration for success notification (ms). Use 0 for persistent\n\t */\n\tsuccessDuration?: number\n\t/**\n\t * Duration for error notification (ms). Use 0 for persistent\n\t */\n\terrorDuration?: number\n}\n\n/**\n * Wraps an Observable with notification lifecycle management.\n * Shows a loading notification with progress indicator, then auto-dismisses and shows success/error notification.\n *\n * @example\n * ```typescript\n * // Basic usage with progress indicator\n * someApiCall().pipe(\n * notify({\n * loadingMessage: 'Loading data...',\n * successMessage: 'Data loaded successfully!',\n * errorMessage: 'Failed to load data'\n * })\n * ).subscribe()\n *\n * // With custom durations\n * saveData().pipe(\n * notify({\n * loadingMessage: 'Saving...',\n * successMessage: 'Saved!',\n * successDuration: 5000, // Success stays for 5 seconds\n * errorMessage: (err) => `Save failed: ${err.message}`,\n * errorDuration: 0 // Error is persistent until dismissed\n * })\n * ).subscribe()\n *\n * // Full configuration example\n * uploadFile().pipe(\n * notify({\n * loadingMessage: 'Uploading file...',\n * loadingType: 'info',\n * successMessage: 'Upload complete!',\n * successType: 'success',\n * successDuration: 3000,\n * errorMessage: (err) => `Upload failed: ${err.message}`,\n * errorType: 'error',\n * errorDuration: 10000,\n * autoDismissLoading: true\n * })\n * ).subscribe()\n * ```\n */\nexport function notify<T>(options: NotifyOptions) {\n\treturn (source: Observable<T>): Observable<T> => {\n\t\tlet loadingNotificationId: string | undefined\n\n\t\t// Show loading notification if message provided\n\t\tif (options.loadingMessage) {\n\t\t\tloadingNotificationId = $notify.show({\n\t\t\t\tmessage: options.loadingMessage,\n\t\t\t\ttype: options.loadingType || 'info',\n\t\t\t\tduration: 0, // Persistent until dismissed\n\t\t\t\tshowProgress: true, // Show indeterminate progress by default\n\t\t\t})\n\t\t}\n\n\t\treturn source.pipe(\n\t\t\ttap(value => {\n\t\t\t\t// Check if the emitted value contains progress information\n\t\t\t\t// Common patterns: { progress: number }, { loaded: number, total: number }, etc.\n\t\t\t\tif (loadingNotificationId && typeof value === 'object' && value !== null) {\n\t\t\t\t\tlet progress: number | undefined\n\n\t\t\t\t\t// Check for different progress patterns\n\t\t\t\t\tif ('progress' in value && typeof (value as any).progress === 'number') {\n\t\t\t\t\t\tprogress = (value as any).progress\n\t\t\t\t\t} else if ('loaded' in value && 'total' in value) {\n\t\t\t\t\t\tconst loaded = (value as any).loaded\n\t\t\t\t\t\tconst total = (value as any).total\n\t\t\t\t\t\tif (typeof loaded === 'number' && typeof total === 'number' && total > 0) {\n\t\t\t\t\t\t\tprogress = (loaded / total) * 100\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Update notification with progress if available\n\t\t\t\t\tif (progress !== undefined) {\n\t\t\t\t\t\t// We need to update the progress of the notification\n\t\t\t\t\t\t// For now, we'll update the message to show progress percentage\n\t\t\t\t\t\t$notify.update?.(loadingNotificationId, {\n\t\t\t\t\t\t\tmessage: `${options.loadingMessage} (${Math.round(progress)}%)`,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Check if this is the final success emission (not a progress update)\n\t\t\t\t// Typically file uploads emit progress events then a final result\n\t\t\t\tconst isProgressUpdate =\n\t\t\t\t\ttypeof value === 'object' &&\n\t\t\t\t\tvalue !== null &&\n\t\t\t\t\t('progress' in value || ('loaded' in value && 'total' in value))\n\n\t\t\t\tif (!isProgressUpdate) {\n\t\t\t\t\t// On successful final emission, dismiss loading and show success\n\t\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t\t\tloadingNotificationId = undefined\n\t\t\t\t\t}\n\n\t\t\t\t\tif (options.successMessage) {\n\t\t\t\t\t\t$notify.show({\n\t\t\t\t\t\t\tmessage: options.successMessage,\n\t\t\t\t\t\t\ttype: options.successType || 'success',\n\t\t\t\t\t\t\tduration: options.successDuration ?? 2000,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}),\n\t\t\tcatchError(error => {\n\t\t\t\t// On error, dismiss loading and show error\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t\tloadingNotificationId = undefined\n\t\t\t\t}\n\n\t\t\t\tif (options.errorMessage) {\n\t\t\t\t\tconst message =\n\t\t\t\t\t\ttypeof options.errorMessage === 'function' ? options.errorMessage(error) : options.errorMessage\n\n\t\t\t\t\t$notify.show({\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\ttype: options.errorType || 'error',\n\t\t\t\t\t\tduration: options.errorDuration ?? 3000,\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\t// Re-throw the error to maintain the error flow\n\t\t\t\tthrow error\n\t\t\t}),\n\t\t\tfinalize(() => {\n\t\t\t\t// Clean up any remaining loading notification\n\t\t\t\tif (loadingNotificationId && options.autoDismissLoading !== false) {\n\t\t\t\t\t$notify.dismiss(loadingNotificationId)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\t}\n}\n\n/**\n * Simplified version for API calls that just need loading and auto-dismiss.\n * Perfect for fire-and-forget operations where you want to show progress.\n *\n * @example\n * ```typescript\n * downloadData().pipe(\n * notifyProgress('Downloading...')\n * ).subscribe()\n *\n * // With custom messages\n * saveDocument().pipe(\n * notifyProgress('Saving document...', 'Document saved!', 'Save failed')\n * ).subscribe()\n * ```\n */\nexport function notifyProgress<T>(loadingMessage: string, successMessage?: string, errorMessage?: string) {\n\treturn notify<T>({\n\t\tloadingMessage,\n\t\tsuccessMessage: successMessage || undefined,\n\t\terrorMessage: errorMessage || undefined,\n\t\tautoDismissLoading: true,\n\t})\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./notification-FBf3Mb2e.cjs`);exports.$notify=e.r,exports.SchmancyNotification=e.i,exports.notify=e.t,exports.notifyProgress=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./notification-DsdA_MJe.cjs`);exports.$notify=e.r,exports.SchmancyNotification=e.i,exports.notify=e.t,exports.notifyProgress=e.n;
@@ -1,2 +1,2 @@
1
- import { i as e, n as t, r as n, t as r } from "./notification-DFKRMmSq.js";
1
+ import { i as e, n as t, r as n, t as r } from "./notification-COhUhUCr.js";
2
2
  export { n as $notify, e as SchmancyNotification, r as notify, t as notifyProgress };
@@ -1,5 +1,5 @@
1
- import { t as e, u as t } from "./SchmancyElement-OG71FtNv.js";
2
- import "./mixins-bCEXbwJV.js";
1
+ import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import "./mixins-q4KAL8Xr.js";
3
3
  import { fromEvent as n, takeUntil as r } from "rxjs";
4
4
  import { customElement as i, property as a } from "lit/decorators.js";
5
5
  import { css as o, html as s } from "lit";
@@ -9,27 +9,27 @@ var c = class extends e {
9
9
  }
10
10
  static {
11
11
  this.styles = [o`
12
- :host {
13
- display: block;
14
- cursor: pointer;
15
- user-select: none;
16
- outline: none;
17
- }
12
+ :host {
13
+ display: block;
14
+ cursor: pointer;
15
+ user-select: none;
16
+ outline: none;
17
+ }
18
18
 
19
- :host(:focus-visible) {
20
- outline: 2px solid var(--schmancy-sys-color-primary-default);
21
- outline-offset: -2px;
22
- }
19
+ :host(:focus-visible) {
20
+ outline: 2px solid var(--schmancy-sys-color-primary-default);
21
+ outline-offset: -2px;
22
+ }
23
23
 
24
- :host([hidden]) {
25
- display: none;
26
- }
24
+ :host([hidden]) {
25
+ display: none;
26
+ }
27
27
 
28
- :host([disabled]) {
29
- opacity: 0.5;
30
- pointer-events: none;
31
- }
32
- `];
28
+ :host([disabled]) {
29
+ opacity: 0.5;
30
+ pointer-events: none;
31
+ }
32
+ `];
33
33
  }
34
34
  connectedCallback() {
35
35
  super.connectedCallback(), this.id ||= `schmancy-option-${Math.random().toString(36).substring(2, 9)}`, this.label ||= this.textContent?.trim() || this.value, !this.value && this.textContent && (this.value = this.textContent.trim()), n(this, "click").pipe(r(this.disconnecting)).subscribe((e) => {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-BIzgTbXz.js","names":[],"sources":["../src/option/option.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n/**\n * `schmancy-option` is an option element for schmancy-select and schmancy-autocomplete components.\n *\n * @fires click - When the option is clicked\n */\n@customElement('schmancy-option')\nexport default class SchmancyOption extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\tcursor: pointer;\n\t\t\t\tuser-select: none;\n\t\t\t\toutline: none;\n\t\t\t}\n\n\t\t\t:host(:focus-visible) {\n\t\t\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\n\t\t\t\toutline-offset: -2px;\n\t\t\t}\n\n\t\t\t:host([hidden]) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t:host([disabled]) {\n\t\t\t\topacity: 0.5;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t`,\n\t]\n\t/**\n\t * The value of the option, will be used when selected.\n\t */\n\t@property({ type: String })\n\tvalue: string = ''\n\n\t/**\n\t * The human-readable label for the option.\n\t */\n\t@property({ type: String })\n\tlabel: string = ''\n\n\t/**\n\t * Whether the option is currently selected.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tselected: boolean = false\n\n\t/**\n\t * Whether the option is disabled.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled: boolean = false\n\n\t/**\n\t * Optional group this option belongs to (for option grouping).\n\t */\n\t@property({ type: String })\n\tgroup: string = ''\n\n\t/**\n\t * Optional icon or image to display before the label.\n\t */\n\t@property({ type: String })\n\ticon: string = ''\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the option has an ID for accessibility\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-option-${Math.random().toString(36).substring(2, 9)}`\n\t\t}\n\n\t\t// If no label was provided, use the text content or value\n\t\tif (!this.label) {\n\t\t\tthis.label = this.textContent?.trim() || this.value\n\t\t}\n\n\t\t// If value wasn't set but there's text content, use that as the value\n\t\tif (!this.value && this.textContent) {\n\t\t\tthis.value = this.textContent.trim()\n\t\t}\n\n\t\t// Make the option clickable\n\t\tfromEvent<MouseEvent>(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tif (this.disabled) return\n\t\t\t\t// Dispatch a custom event with this option's value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('option-select', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tdetail: { value: this.value },\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\tfromEvent<KeyboardEvent>(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\t// Handle space and enter as clicks\n\t\t\t\tif (e.key === ' ' || e.key === 'Enter') {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tif (this.disabled) return\n\t\t\t\t\t// Dispatch a custom event with this option's value\n\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('option-select', {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\tdetail: { value: this.value },\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Event listeners are automatically cleaned up via takeUntil(this.disconnecting)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'py-2': true,\n\t\t\t'px-3': true,\n\t\t\trounded: true,\n\t\t\t'text-sm': true,\n\t\t\t'w-full': true,\n\t\t\tflex: true,\n\t\t\t'items-center': true,\n\t\t\t'gap-2': true,\n\t\t\t// Selected state\n\t\t\t'bg-primary-container': this.selected,\n\t\t\t'text-primary-onContainer': this.selected,\n\t\t\t// Hover state (when not selected)\n\t\t\t'hover:bg-surface-high': !this.selected,\n\t\t\t// Focus state\n\t\t\t'focus:outline-none': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(classes)} role=\"option\" aria-selected=${this.selected} aria-disabled=${this.disabled}>\n\t\t\t\t${this.icon ? html`<span class=\"icon\">${this.icon}</span>` : ''}\n\t\t\t\t<span class=\"flex-1\">${this.label || this.value}</span>\n\t\t\t\t${this.selected\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<span class=\"check\">\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"></polyline>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-option': SchmancyOption\n\t}\n}\n"],"mappings":";;;;;AAWe,IAAA,IAAA,cAA6B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,QA6B3B,IAAA,KAAA,QAMA,IAAA,KAAA,WAAA,CAMI,GAAA,KAAA,WAAA,CAMA,GAAA,KAAA,QAMJ,IAAA,KAAA,OAMD;CAAA;CAAA;EAAA,KAAA,SA1DC,CACf,CAAG;;;;;;;;;;;;;;;;;;;;;;;CA2DJ,oBAAA;EACC,MAAM,kBAAA,GAGD,AACJ,KAAK,OAAK,mBAAmB,KAAK,OAAA,EAAS,SAAS,EAAA,EAAI,UAAU,GAAG,CAAA,KAIjE,AACJ,KAAK,UAAQ,KAAK,aAAa,KAAA,KAAU,KAAK,OAAA,CAI1C,KAAK,SAAS,KAAK,gBACvB,KAAK,QAAQ,KAAK,YAAY,KAAA,IAI/B,EAAsB,MAAM,OAAA,EAC1B,KAAK,EAAU,KAAK,aAAA,CAAA,EACpB,WAAU,MAAA;GACV,EAAE,gBAAA,GACE,KAAK,YAET,KAAK,cACJ,IAAI,YAAY,iBAAiB;IAChC,SAAA,CAAS;IACT,UAAA,CAAU;IACV,QAAQ,EAAE,OAAO,KAAK,MAAA;GAAA,CAAA,CAAA;EAAA,CAAA,GAK1B,EAAyB,MAAM,SAAA,EAC7B,KAAK,EAAU,KAAK,aAAA,CAAA,EACpB,WAAU,MAAA;GAEV,IAAI,EAAE,QAAQ,OAAO,EAAE,QAAQ,SAAS;IAGvC,IAFA,EAAE,eAAA,GACF,EAAE,gBAAA,GACE,KAAK,UAAU;IAEnB,KAAK,cACJ,IAAI,YAAY,iBAAiB;KAChC,SAAA,CAAS;KACT,UAAA,CAAU;KACV,QAAQ,EAAE,OAAO,KAAK,MAAA;IAAA,CAAA,CAAA;GAGzB;EAAA,CAAA;CAEH;CAEA,uBAAA;EAEC,MAAM,qBAAA;CACP;CAEA,SAAA;EACC,IAAM,IAAU;GACf,QAAA,CAAQ;GACR,QAAA,CAAQ;GACR,SAAA,CAAS;GACT,WAAA,CAAW;GACX,UAAA,CAAU;GACV,MAAA,CAAM;GACN,gBAAA,CAAgB;GAChB,SAAA,CAAS;GAET,wBAAwB,KAAK;GAC7B,4BAA4B,KAAK;GAEjC,yBAAA,CAA0B,KAAK;GAE/B,sBAAA,CAAsB;EAAA;EAGvB,OAAO,CAAI;gBACG,KAAK,SAAS,CAAA,EAAA,+BAAwC,KAAK,SAAA,iBAA0B,KAAK,SAAA;MACpG,KAAK,OAAO,CAAI,sBAAsB,KAAK,KAAA,WAAgB,GAAA;2BACtC,KAAK,SAAS,KAAK,MAAA;MACxC,KAAK,WACJ,CAAI;;;;;;;;;;;;;;;UAgBJ,GAAA;;;CAGN;AAAA;AAAA,EAAA,CAvIC,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CAMzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CAMzB,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CAMzC,EAAS;CAAE,MAAM;CAAS,SAAA,CAAS;AAAA,CAAA,CAAA,GAAM,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CAMzC,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CAMzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,QAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CA3D1B,EAAc,iBAAA,CAAA,GAAiB,CAAA"}
@@ -0,0 +1,43 @@
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);let t=require(`rxjs`),n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t{constructor(...e){super(...e),this.value=``,this.label=``,this.selected=!1,this.disabled=!1,this.group=``,this.icon=``}static{this.styles=[r.css`
2
+ :host {
3
+ display: block;
4
+ cursor: pointer;
5
+ user-select: none;
6
+ outline: none;
7
+ }
8
+
9
+ :host(:focus-visible) {
10
+ outline: 2px solid var(--schmancy-sys-color-primary-default);
11
+ outline-offset: -2px;
12
+ }
13
+
14
+ :host([hidden]) {
15
+ display: none;
16
+ }
17
+
18
+ :host([disabled]) {
19
+ opacity: 0.5;
20
+ pointer-events: none;
21
+ }
22
+ `]}connectedCallback(){super.connectedCallback(),this.id||=`schmancy-option-${Math.random().toString(36).substring(2,9)}`,this.label||=this.textContent?.trim()||this.value,!this.value&&this.textContent&&(this.value=this.textContent.trim()),(0,t.fromEvent)(this,`click`).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(e=>{e.stopPropagation(),this.disabled||this.dispatchEvent(new CustomEvent(`option-select`,{bubbles:!0,composed:!0,detail:{value:this.value}}))}),(0,t.fromEvent)(this,`keydown`).pipe((0,t.takeUntil)(this.disconnecting)).subscribe(e=>{if(e.key===` `||e.key===`Enter`){if(e.preventDefault(),e.stopPropagation(),this.disabled)return;this.dispatchEvent(new CustomEvent(`option-select`,{bubbles:!0,composed:!0,detail:{value:this.value}}))}})}disconnectedCallback(){super.disconnectedCallback()}render(){let e={"py-2":!0,"px-3":!0,rounded:!0,"text-sm":!0,"w-full":!0,flex:!0,"items-center":!0,"gap-2":!0,"bg-primary-container":this.selected,"text-primary-onContainer":this.selected,"hover:bg-surface-high":!this.selected,"focus:outline-none":!0};return r.html`
23
+ <div class=${this.classMap(e)} role="option" aria-selected=${this.selected} aria-disabled=${this.disabled}>
24
+ ${this.icon?r.html`<span class="icon">${this.icon}</span>`:``}
25
+ <span class="flex-1">${this.label||this.value}</span>
26
+ ${this.selected?r.html`
27
+ <span class="check">
28
+ <svg
29
+ width="16"
30
+ height="16"
31
+ viewBox="0 0 24 24"
32
+ fill="none"
33
+ stroke="currentColor"
34
+ stroke-width="2"
35
+ stroke-linecap="round"
36
+ stroke-linejoin="round"
37
+ >
38
+ <polyline points="20 6 9 17 4 12"></polyline>
39
+ </svg>
40
+ </span>
41
+ `:``}
42
+ </div>
43
+ `}};e.u([(0,n.property)({type:String})],i.prototype,`value`,void 0),e.u([(0,n.property)({type:String})],i.prototype,`label`,void 0),e.u([(0,n.property)({type:Boolean,reflect:!0})],i.prototype,`selected`,void 0),e.u([(0,n.property)({type:Boolean,reflect:!0})],i.prototype,`disabled`,void 0),e.u([(0,n.property)({type:String})],i.prototype,`group`,void 0),e.u([(0,n.property)({type:String})],i.prototype,`icon`,void 0),i=e.u([(0,n.customElement)(`schmancy-option`)],i);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"option-C5hhqR2z.cjs","names":[],"sources":["../src/option/option.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { fromEvent, takeUntil } from 'rxjs'\n\n/**\n * `schmancy-option` is an option element for schmancy-select and schmancy-autocomplete components.\n *\n * @fires click - When the option is clicked\n */\n@customElement('schmancy-option')\nexport default class SchmancyOption extends SchmancyElement {\n\tstatic styles = [\n\t\tcss`\n\t\t\t:host {\n\t\t\t\tdisplay: block;\n\t\t\t\tcursor: pointer;\n\t\t\t\tuser-select: none;\n\t\t\t\toutline: none;\n\t\t\t}\n\n\t\t\t:host(:focus-visible) {\n\t\t\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\n\t\t\t\toutline-offset: -2px;\n\t\t\t}\n\n\t\t\t:host([hidden]) {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\n\t\t\t:host([disabled]) {\n\t\t\t\topacity: 0.5;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t`,\n\t]\n\t/**\n\t * The value of the option, will be used when selected.\n\t */\n\t@property({ type: String })\n\tvalue: string = ''\n\n\t/**\n\t * The human-readable label for the option.\n\t */\n\t@property({ type: String })\n\tlabel: string = ''\n\n\t/**\n\t * Whether the option is currently selected.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tselected: boolean = false\n\n\t/**\n\t * Whether the option is disabled.\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled: boolean = false\n\n\t/**\n\t * Optional group this option belongs to (for option grouping).\n\t */\n\t@property({ type: String })\n\tgroup: string = ''\n\n\t/**\n\t * Optional icon or image to display before the label.\n\t */\n\t@property({ type: String })\n\ticon: string = ''\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Ensure the option has an ID for accessibility\n\t\tif (!this.id) {\n\t\t\tthis.id = `schmancy-option-${Math.random().toString(36).substring(2, 9)}`\n\t\t}\n\n\t\t// If no label was provided, use the text content or value\n\t\tif (!this.label) {\n\t\t\tthis.label = this.textContent?.trim() || this.value\n\t\t}\n\n\t\t// If value wasn't set but there's text content, use that as the value\n\t\tif (!this.value && this.textContent) {\n\t\t\tthis.value = this.textContent.trim()\n\t\t}\n\n\t\t// Make the option clickable\n\t\tfromEvent<MouseEvent>(this, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\te.stopPropagation()\n\t\t\t\tif (this.disabled) return\n\t\t\t\t// Dispatch a custom event with this option's value\n\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\tnew CustomEvent('option-select', {\n\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\tdetail: { value: this.value },\n\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t})\n\n\t\tfromEvent<KeyboardEvent>(this, 'keydown')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\t// Handle space and enter as clicks\n\t\t\t\tif (e.key === ' ' || e.key === 'Enter') {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tif (this.disabled) return\n\t\t\t\t\t// Dispatch a custom event with this option's value\n\t\t\t\t\tthis.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('option-select', {\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\tdetail: { value: this.value },\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tdisconnectedCallback() {\n\t\t// Event listeners are automatically cleaned up via takeUntil(this.disconnecting)\n\t\tsuper.disconnectedCallback()\n\t}\n\n\trender() {\n\t\tconst classes = {\n\t\t\t'py-2': true,\n\t\t\t'px-3': true,\n\t\t\trounded: true,\n\t\t\t'text-sm': true,\n\t\t\t'w-full': true,\n\t\t\tflex: true,\n\t\t\t'items-center': true,\n\t\t\t'gap-2': true,\n\t\t\t// Selected state\n\t\t\t'bg-primary-container': this.selected,\n\t\t\t'text-primary-onContainer': this.selected,\n\t\t\t// Hover state (when not selected)\n\t\t\t'hover:bg-surface-high': !this.selected,\n\t\t\t// Focus state\n\t\t\t'focus:outline-none': true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=${this.classMap(classes)} role=\"option\" aria-selected=${this.selected} aria-disabled=${this.disabled}>\n\t\t\t\t${this.icon ? html`<span class=\"icon\">${this.icon}</span>` : ''}\n\t\t\t\t<span class=\"flex-1\">${this.label || this.value}</span>\n\t\t\t\t${this.selected\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<span class=\"check\">\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<polyline points=\"20 6 9 17 4 12\"></polyline>\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-option': SchmancyOption\n\t}\n}\n"],"mappings":"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"}
package/dist/option.cjs CHANGED
@@ -1 +1 @@
1
- require(`./option-Il1KpU8M.cjs`);
1
+ require(`./option-C5hhqR2z.cjs`);
package/dist/option.js CHANGED
@@ -1 +1 @@
1
- import "./option-Ct0lGdH3.js";
1
+ import "./option-BIzgTbXz.js";
@@ -1,48 +1,52 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`);require(`./mixins-BoMURWag.cjs`);const t=require(`./animation-CCOIW4wJ.cjs`),n=require(`./reduced-motion-Ds-HjMzn.cjs`),r=require(`./layout-CNlZSJFU.cjs`),i=require(`./overlay.service-9Dp3g7ot.cjs`);require(`./overlay.confirm-body-Jc1EuMGs.cjs`);let a=require(`rxjs`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`lit/directives/when.js`),l=require(`@floating-ui/dom`);var u=n.t.value;n.t.subscribe(e=>{u=e});var d=`--schmancy-overlay-origin-x`,f=`--schmancy-overlay-origin-y`,p=`var(${d}, 50%) var(${f}, 50%)`;function m(e){return Number.isNaN(e)||!Number.isFinite(e)?50:Math.max(0,Math.min(100,e))}function h(e){let{surface:t,dragHandle:n,until$:r}=e;return new a.Observable(e=>{let i=n??t,o=new a.Subject,s=!1,c=null,l=0,u=0,d=0;return(0,a.merge)((0,a.fromEvent)(i,`pointerdown`).pipe((0,a.filter)(e=>e.isPrimary&&(e.pointerType!==`mouse`||e.button===0)),(0,a.filter)(e=>{if(n)return!0;let r=t.getBoundingClientRect();return e.clientY-r.top<=40}),(0,a.tap)(e=>{s=!0,c=e.pointerId,l=e.clientY,u=performance.now(),d=0,t.style.transition=`none`,t.style.willChange=`transform`;try{i.setPointerCapture?.(e.pointerId)}catch{}})),(0,a.fromEvent)(i,`pointermove`).pipe((0,a.filter)(()=>s),(0,a.filter)(e=>e.pointerId===c),(0,a.tap)(e=>{d=function(e){if(e>=0)return e;let t=-e;return-Math.max(0,8*(Math.log(t+1)-2))}(e.clientY-l),t.style.transform=`translateY(${d}px)`,e.cancelable&&e.preventDefault()})),(0,a.merge)((0,a.fromEvent)(i,`pointerup`),(0,a.fromEvent)(i,`pointercancel`),(0,a.fromEvent)(i,`lostpointercapture`)).pipe((0,a.filter)(()=>s),(0,a.filter)(e=>e.pointerId===c),(0,a.tap)(()=>{s=!1;let n=c;c=null;try{n!==null&&i.releasePointerCapture?.(n)}catch{}let r=Math.max(1,performance.now()-u),a=d/r,o=t.getBoundingClientRect().height,l=Math.min(80,.25*o),f=d>l||d>20&&a>.4;t.style.willChange=``,f?(t.style.transition=`transform 300ms cubic-bezier(0.16, 1, 0.3, 1)`,t.style.transform=`translateY(100%)`,e.next(`dismiss`),e.complete()):(t.style.transition=`transform 300ms cubic-bezier(0.16, 1, 0.3, 1)`,t.style.transform=`translateY(0)`)}))).pipe((0,a.takeUntil)((0,a.merge)(o,r))).subscribe(),()=>{o.next(),o.complete(),t.style.transition=``,t.style.transform=``,t.style.willChange=``}}).pipe((0,a.take)(1))}function g(e){return e.anchor===void 0?`sheet`:`anchored`}function _(e,t){return{x:e,y:t,width:0,height:0,left:e,right:e,top:t,bottom:t,toJSON:()=>({x:e,y:t,width:0,height:0,left:e,right:e,top:t,bottom:t})}}var v=Object.freeze({popover:typeof HTMLElement<`u`&&`popover`in HTMLElement.prototype&&typeof HTMLElement.prototype.showPopover==`function`,cssAnchor:typeof CSS<`u`&&typeof CSS.supports==`function`&&CSS.supports(`anchor-name: --x`)});function y(e){if(!v.popover)throw Error(`positionPopoverAPI requires Popover API support`);e.setAttribute(`popover`,`manual`);try{e.showPopover()}catch{}return()=>{try{e.hidePopover?.()}catch{}e.removeAttribute(`popover`)}}function b(e,t,n={}){return new a.Observable(r=>{let i=t.el??t.virtual;if(!i)return void r.error(Error(`positionFloatingUI requires an element or virtual anchor`));let a=n.placement??`bottom-start`,o=n.padding??16,s=n.offsetPx??8,c=(0,l.autoUpdate)(i,e,async()=>{try{let{x:t,y:n}=await(0,l.computePosition)(i,e,{strategy:`fixed`,placement:a,middleware:[(0,l.offset)(s),(0,l.flip)({padding:o,fallbackPlacements:x(a)}),(0,l.shift)({padding:o}),(0,l.size)({padding:o,apply({availableWidth:e,availableHeight:t,elements:n}){n.floating.style.maxWidth=`${Math.max(0,e)}px`,n.floating.style.maxHeight=`${Math.max(0,t)}px`}})]});Object.assign(e.style,{position:`fixed`,left:`${Math.round(t)}px`,top:`${Math.round(n)}px`,transform:`none`}),r.next()}catch(e){r.error(e)}},{ancestorScroll:!0,ancestorResize:!0,elementResize:!1!==n.track});return()=>{c()}})}function x(e){switch(e){case`bottom-start`:return[`top-start`,`bottom-end`,`top-end`];case`bottom-end`:return[`top-end`,`bottom-start`,`top-start`];case`top-start`:return[`bottom-start`,`top-end`,`bottom-end`];case`top-end`:return[`bottom-end`,`top-start`,`bottom-start`];case`left-start`:return[`right-start`,`left-end`,`right-end`];case`left-end`:return[`right-end`,`left-start`,`right-start`];case`right-start`:return[`left-start`,`right-end`,`left-end`];case`right-end`:return[`left-end`,`right-start`,`left-start`];case`top`:return[`bottom`,`left`,`right`];case`bottom`:return[`top`,`left`,`right`];case`left`:return[`right`,`top`,`bottom`];case`right`:return[`left`,`top`,`bottom`];default:return[`top-start`,`bottom-end`]}}var S=`overlay-mount`,C=class extends e.t{constructor(...e){super(...e),this.layout=`sheet`,this.dismissable=!0,this.modal=!0,this.tier=`modal`,this.active=!1,this.full=!1,this.#e=new a.Subject,this.mounted=!1,this.closing=!1,this.lastFocusedElement=null,this.inertedSiblings=[],this.lastReResolveAt=0,this.onBackdropClick=()=>{this.dismissable&&this.close(`backdrop`)}}static{this.styles=[s.css`
2
- :host {
3
- position: fixed;
4
- inset: 0;
5
- z-index: 10000;
6
- display: none;
7
- pointer-events: none;
8
- }
9
- :host([active]) {
10
- display: block;
11
- }
12
- /* Vertical-gradient scrim — Tailwind's bg-gradient utilities cannot reach
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);const t=require(`./animation-CCOIW4wJ.cjs`),n=require(`./reduced-motion-Ds-HjMzn.cjs`),r=require(`./layout-CdyHy_oX.cjs`),i=require(`./overlay.service-MMTiW2T3.cjs`);require(`./overlay.confirm-body-DCneq73Z.cjs`);let a=require(`rxjs`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`lit/directives/when.js`),l=require(`@floating-ui/dom`);var u=n.t.value;n.t.subscribe(e=>{u=e});var d=`--schmancy-overlay-origin-x`,f=`--schmancy-overlay-origin-y`,p=`var(${d}, 50%) var(${f}, 50%)`;function m(e){return Number.isNaN(e)||!Number.isFinite(e)?50:Math.max(0,Math.min(100,e))}function h(e){let{surface:t,dragHandle:n,until$:r}=e;return new a.Observable(e=>{let i=n??t,o=new a.Subject,s=!1,c=null,l=0,u=0,d=0;return(0,a.merge)((0,a.fromEvent)(i,`pointerdown`).pipe((0,a.filter)(e=>e.isPrimary&&(e.pointerType!==`mouse`||e.button===0)),(0,a.filter)(e=>{if(n)return!0;let r=t.getBoundingClientRect();return e.clientY-r.top<=40}),(0,a.tap)(e=>{s=!0,c=e.pointerId,l=e.clientY,u=performance.now(),d=0,t.style.transition=`none`,t.style.willChange=`transform`;try{i.setPointerCapture?.(e.pointerId)}catch{}})),(0,a.fromEvent)(i,`pointermove`).pipe((0,a.filter)(()=>s),(0,a.filter)(e=>e.pointerId===c),(0,a.tap)(e=>{d=function(e){if(e>=0)return e;let t=-e;return-Math.max(0,8*(Math.log(t+1)-2))}(e.clientY-l),t.style.transform=`translateY(${d}px)`,e.cancelable&&e.preventDefault()})),(0,a.merge)((0,a.fromEvent)(i,`pointerup`),(0,a.fromEvent)(i,`pointercancel`),(0,a.fromEvent)(i,`lostpointercapture`)).pipe((0,a.filter)(()=>s),(0,a.filter)(e=>e.pointerId===c),(0,a.tap)(()=>{s=!1;let n=c;c=null;try{n!==null&&i.releasePointerCapture?.(n)}catch{}let r=Math.max(1,performance.now()-u),a=d/r,o=t.getBoundingClientRect().height,l=Math.min(80,.25*o),f=d>l||d>20&&a>.4;t.style.willChange=``,f?(t.style.transition=`transform 300ms cubic-bezier(0.16, 1, 0.3, 1)`,t.style.transform=`translateY(100%)`,e.next(`dismiss`),e.complete()):(t.style.transition=`transform 300ms cubic-bezier(0.16, 1, 0.3, 1)`,t.style.transform=`translateY(0)`)}))).pipe((0,a.takeUntil)((0,a.merge)(o,r))).subscribe(),()=>{o.next(),o.complete(),t.style.transition=``,t.style.transform=``,t.style.willChange=``}}).pipe((0,a.take)(1))}function g(e){return e.anchor===void 0?`sheet`:`anchored`}function _(e,t){return{x:e,y:t,width:0,height:0,left:e,right:e,top:t,bottom:t,toJSON:()=>({x:e,y:t,width:0,height:0,left:e,right:e,top:t,bottom:t})}}var v=Object.freeze({popover:typeof HTMLElement<`u`&&`popover`in HTMLElement.prototype&&typeof HTMLElement.prototype.showPopover==`function`,cssAnchor:typeof CSS<`u`&&typeof CSS.supports==`function`&&CSS.supports(`anchor-name: --x`)});function y(e){if(!v.popover)throw Error(`positionPopoverAPI requires Popover API support`);e.setAttribute(`popover`,`manual`);try{e.showPopover()}catch{}return()=>{try{e.hidePopover?.()}catch{}e.removeAttribute(`popover`)}}function b(e,t,n={}){return new a.Observable(r=>{let i=t.el??t.virtual;if(!i)return void r.error(Error(`positionFloatingUI requires an element or virtual anchor`));let a=n.placement??`bottom-start`,o=n.padding??16,s=n.offsetPx??8,c=(0,l.autoUpdate)(i,e,async()=>{try{let{x:t,y:n}=await(0,l.computePosition)(i,e,{strategy:`fixed`,placement:a,middleware:[(0,l.offset)(s),(0,l.flip)({padding:o,fallbackPlacements:x(a)}),(0,l.shift)({padding:o}),(0,l.size)({padding:o,apply({availableWidth:e,availableHeight:t,elements:n}){n.floating.style.maxWidth=`${Math.max(0,e)}px`,n.floating.style.maxHeight=`${Math.max(0,t)}px`}})]});Object.assign(e.style,{position:`fixed`,left:`${Math.round(t)}px`,top:`${Math.round(n)}px`,transform:`none`}),r.next()}catch(e){r.error(e)}},{ancestorScroll:!0,ancestorResize:!0,elementResize:!1!==n.track});return()=>{c()}})}function x(e){switch(e){case`bottom-start`:return[`top-start`,`bottom-end`,`top-end`];case`bottom-end`:return[`top-end`,`bottom-start`,`top-start`];case`top-start`:return[`bottom-start`,`top-end`,`bottom-end`];case`top-end`:return[`bottom-end`,`top-start`,`bottom-start`];case`left-start`:return[`right-start`,`left-end`,`right-end`];case`left-end`:return[`right-end`,`left-start`,`right-start`];case`right-start`:return[`left-start`,`right-end`,`left-end`];case`right-end`:return[`left-end`,`right-start`,`left-start`];case`top`:return[`bottom`,`left`,`right`];case`bottom`:return[`top`,`left`,`right`];case`left`:return[`right`,`top`,`bottom`];case`right`:return[`left`,`top`,`bottom`];default:return[`top-start`,`bottom-end`]}}var S=`overlay-mount`,C=class extends e.t{constructor(...e){super(...e),this.layout=`sheet`,this.dismissable=!0,this.modal=!0,this.tier=`modal`,this.active=!1,this.full=!1,this.#e=new a.Subject,this.mounted=!1,this.closing=!1,this.lastFocusedElement=null,this.inertedSiblings=[],this.lastReResolveAt=0,this.onBackdropClick=()=>{this.dismissable&&this.close(`backdrop`)}}static{this.styles=[s.css`
2
+ :host {
3
+ position: fixed;
4
+ inset: 0;
5
+ z-index: 10000;
6
+ display: none;
7
+ pointer-events: none;
8
+ }
9
+ :host([active]) {
10
+ display: block;
11
+ }
12
+ /* Vertical-gradient scrim — Tailwind's bg-gradient utilities cannot reach
13
13
  * these color-mix percentages with sufficient control. */
14
- .backdrop {
15
- background: linear-gradient(
16
- to bottom,
17
- color-mix(in srgb, var(--schmancy-sys-color-scrim) 18%, transparent) 0%,
18
- color-mix(in srgb, var(--schmancy-sys-color-scrim) 56%, transparent) 100%
19
- );
20
- -webkit-backdrop-filter: blur(16px) saturate(160%);
21
- backdrop-filter: blur(16px) saturate(160%);
22
- }
23
- /* Popover top-layer surfaces — UA defaults push surface off-screen. */
24
- .surface:popover-open {
25
- margin: 0;
26
- border: 0;
27
- }
28
- /* Modal tier promotes the whole shell (scrim + surface) into the top
14
+ .backdrop {
15
+ background: linear-gradient(
16
+ to bottom,
17
+ color-mix(in srgb, var(--schmancy-sys-color-scrim) 18%, transparent) 0%,
18
+ color-mix(in srgb, var(--schmancy-sys-color-scrim) 56%, transparent) 100%
19
+ );
20
+ -webkit-backdrop-filter: blur(16px) saturate(160%);
21
+ backdrop-filter: blur(16px) saturate(160%);
22
+ }
23
+ /* Popover top-layer surfaces — UA defaults push surface off-screen. */
24
+ .surface:popover-open {
25
+ margin: 0;
26
+ border: 0;
27
+ }
28
+ /* Modal tier promotes the whole shell (scrim + surface) into the top
29
29
  * layer so every overlay — anchored or modal — shares ONE stacking
30
30
  * domain ordered strictly by show() time. Neutralize the UA popover
31
31
  * box so the shell stays full-viewport. */
32
- .shell:popover-open {
33
- inset: 0;
34
- margin: 0;
35
- border: 0;
36
- width: 100%;
37
- height: 100%;
38
- max-width: none;
39
- max-height: none;
40
- background: transparent;
41
- overflow: visible;
42
- }
43
- `]}#e;get closed$(){return this.#e.asObservable()}async open(e,t){if(this.mounted)throw Error(`schmancy-overlay: open() called twice on the same element`);this.mounted=!0,this.dismissable=!1!==t.dismissable,this.full=t.full??!1,this.rawAnchor=t.anchor,this.anchorOriginAnchor=t.anchor,this.resolvedAnchor=function(e){if(!e)return;if(typeof HTMLElement<`u`&&e instanceof HTMLElement)return{el:e};if(typeof e.getBoundingClientRect==`function`)return{virtual:{getBoundingClientRect:()=>e.getBoundingClientRect()}};if(typeof e.width==`number`&&typeof e.height==`number`&&typeof e.left==`number`&&typeof e.top==`number`){let t=e;return{virtual:{getBoundingClientRect:()=>t}}}if(typeof e.clientX==`number`&&typeof e.clientY==`number`){let t=e,n=_(t.clientX,t.clientY);return{virtual:{getBoundingClientRect:()=>n}}}if(e.touches!==void 0&&e.touches.length>0){let t=e.touches[0],n=_(t.clientX,t.clientY);return{virtual:{getBoundingClientRect:()=>n}}}let t=e,n=_(t.x,t.y);return{virtual:{getBoundingClientRect:()=>n}}}(t.anchor),this.active=!0,this.setAttribute(`active`,``),await this.updateComplete;let n=this.renderRoot.querySelector(`#${S}`);if(!n)throw Error(`schmancy-overlay: mount point missing`);var r;if(T(e)?this.factoryEffectDispose=this.updateEffect(()=>(0,s.render)(e(),n),{manualDispose:!0}):await w(e,n,t.props),this.layout=t.as??g({anchor:t.anchor}),this.modal=this.layout===`sheet`,this.tier=this.modal?`modal`:this.resolvedAnchor?(r=this.resolvedAnchor,v.popover&&v.cssAnchor&&r.el?`css-anchor`:v.popover?`popover-fui`:`fui-only`):`modal`,await this.updateComplete,this.tier===`css-anchor`&&this.resolvedAnchor?.el&&this.shadowRoot){this.positionerTeardown=function(e,t,n,r={id:``}){if(!t.el)throw Error(`positionCSSAnchor requires an element anchor`);let i=t.el,a=`--ov-${r.id||Math.random().toString(36).slice(2,10)}`,o=r.placement??`bottom-start`,s=i.style.getPropertyValue(`anchor-name`);i.style.setProperty(`anchor-name`,a);let c=new CSSStyleSheet;return c.replaceSync(`\n\t\t${e.localName}[data-overlay-ref="${r.id}"] {\n\t\t\tposition-anchor: ${a};\n\t\t\t${function(e){switch(e){case`top`:case`top-start`:return`bottom: anchor(top); left: anchor(start);`;case`top-end`:return`bottom: anchor(top); right: anchor(end);`;case`bottom`:case`bottom-start`:return`top: anchor(bottom); left: anchor(start);`;case`bottom-end`:return`top: anchor(bottom); right: anchor(end);`;case`left`:case`left-start`:return`right: anchor(left); top: anchor(start);`;case`left-end`:return`right: anchor(left); bottom: anchor(end);`;case`right`:case`right-start`:return`left: anchor(right); top: anchor(start);`;case`right-end`:return`left: anchor(right); bottom: anchor(end);`}}(o)}\n\t\t\tmargin: 8px;\n\t\t\tposition-try-fallbacks:\n\t\t\t\tflip-block,\n\t\t\t\tflip-inline,\n\t\t\t\tflip-block flip-inline;\n\t\t}\n\t`),e.dataset.overlayRef=r.id,n.adoptedStyleSheets=[...n.adoptedStyleSheets,c],()=>{s?i.style.setProperty(`anchor-name`,s):i.style.removeProperty(`anchor-name`),n.adoptedStyleSheets=n.adoptedStyleSheets.filter(e=>e!==c),delete e.dataset.overlayRef}}(this.surface,this.resolvedAnchor,this.shadowRoot,{id:`ov-${Math.random().toString(36).slice(2,10)}`,placement:t.preferredPlacement??`bottom-start`});let e=y(this.surface),n=this.positionerTeardown;this.positionerTeardown=()=>{e(),n?.()}}else if(this.tier===`popover-fui`&&this.resolvedAnchor){let e=y(this.surface),n=b(this.surface,this.resolvedAnchor,{placement:t.preferredPlacement??`bottom-start`,offsetPx:8,track:!1!==t.track}).pipe((0,a.takeUntil)(this.disconnecting)).subscribe();this.positionerTeardown=()=>{e(),n.unsubscribe()}}else if(this.tier===`fui-only`&&this.resolvedAnchor){let e=b(this.surface,this.resolvedAnchor,{placement:t.preferredPlacement??`bottom-start`,offsetPx:8,track:!1!==t.track}).pipe((0,a.takeUntil)(this.disconnecting)).subscribe();this.positionerTeardown=()=>e.unsubscribe()}else if(this.tier===`modal`&&this.shell)try{this.positionerTeardown=y(this.shell)}catch{}this.setAnchorOriginVars(),this.wireFocusTrap(),this.wireCloseTriggers(t.signal),this.wireResizeObserver(n),await this.playAnimations(`in`)}async close(e,t){if(!this.closing&&this.mounted){this.closing=!0;try{await this.playAnimations(`out`)}catch{}if(this.releaseFocusTrap(),this.factoryEffectDispose){try{this.factoryEffectDispose()}catch{}this.factoryEffectDispose=void 0}if(this.positionerTeardown){try{this.positionerTeardown()}catch{}this.positionerTeardown=void 0}this.active=!1,this.removeAttribute(`active`),this.#e.next({reason:e,result:t}),this.#e.complete()}}render(){if(!this.active)return s.html``;let e=this.layout===`sheet`?this.full?`left-0 right-0 bottom-0 w-full h-[90dvh] rounded-t-[28px] shadow-overlay flex flex-col overflow-hidden`:`left-0 right-0 bottom-0 w-full max-h-[90dvh] rounded-t-[28px] shadow-overlay overflow-auto`:`max-w-[min(480px,calc(100vw-2rem))] max-h-[90dvh] rounded-3xl shadow-overlay-anchored overflow-auto`;return s.html`
32
+ .shell:popover-open {
33
+ inset: 0;
34
+ margin: 0;
35
+ border: 0;
36
+ width: 100%;
37
+ height: 100%;
38
+ max-width: none;
39
+ max-height: none;
40
+ background: transparent;
41
+ overflow: visible;
42
+ }
43
+ `]}#e;get closed$(){return this.#e.asObservable()}async open(e,t){if(this.mounted)throw Error(`schmancy-overlay: open() called twice on the same element`);this.mounted=!0,this.dismissable=!1!==t.dismissable,this.full=t.full??!1,this.rawAnchor=t.anchor,this.anchorOriginAnchor=t.anchor,this.resolvedAnchor=function(e){if(!e)return;if(typeof HTMLElement<`u`&&e instanceof HTMLElement)return{el:e};if(typeof e.getBoundingClientRect==`function`)return{virtual:{getBoundingClientRect:()=>e.getBoundingClientRect()}};if(typeof e.width==`number`&&typeof e.height==`number`&&typeof e.left==`number`&&typeof e.top==`number`){let t=e;return{virtual:{getBoundingClientRect:()=>t}}}if(typeof e.clientX==`number`&&typeof e.clientY==`number`){let t=e,n=_(t.clientX,t.clientY);return{virtual:{getBoundingClientRect:()=>n}}}if(e.touches!==void 0&&e.touches.length>0){let t=e.touches[0],n=_(t.clientX,t.clientY);return{virtual:{getBoundingClientRect:()=>n}}}let t=e,n=_(t.x,t.y);return{virtual:{getBoundingClientRect:()=>n}}}(t.anchor),this.active=!0,this.setAttribute(`active`,``),await this.updateComplete;let n=this.renderRoot.querySelector(`#${S}`);if(!n)throw Error(`schmancy-overlay: mount point missing`);var r;if(T(e)?this.factoryEffectDispose=this.updateEffect(()=>(0,s.render)(e(),n),{manualDispose:!0}):await w(e,n,t.props),this.layout=t.as??g({anchor:t.anchor}),this.modal=this.layout===`sheet`,this.tier=this.modal?`modal`:this.resolvedAnchor?(r=this.resolvedAnchor,v.popover&&v.cssAnchor&&r.el?`css-anchor`:v.popover?`popover-fui`:`fui-only`):`modal`,await this.updateComplete,this.tier===`css-anchor`&&this.resolvedAnchor?.el&&this.shadowRoot){this.positionerTeardown=function(e,t,n,r={id:``}){if(!t.el)throw Error(`positionCSSAnchor requires an element anchor`);let i=t.el,a=`--ov-${r.id||Math.random().toString(36).slice(2,10)}`,o=r.placement??`bottom-start`,s=i.style.getPropertyValue(`anchor-name`);i.style.setProperty(`anchor-name`,a);let c=new CSSStyleSheet;return c.replaceSync(`\n\t\t${e.localName}[data-overlay-ref="${r.id}"] {\n\t\t\tposition-anchor: ${a};\n\t\t\t${function(e){switch(e){case`top`:case`top-start`:return`bottom: anchor(top); left: anchor(start);`;case`top-end`:return`bottom: anchor(top); right: anchor(end);`;case`bottom`:case`bottom-start`:return`top: anchor(bottom); left: anchor(start);`;case`bottom-end`:return`top: anchor(bottom); right: anchor(end);`;case`left`:case`left-start`:return`right: anchor(left); top: anchor(start);`;case`left-end`:return`right: anchor(left); bottom: anchor(end);`;case`right`:case`right-start`:return`left: anchor(right); top: anchor(start);`;case`right-end`:return`left: anchor(right); bottom: anchor(end);`}}(o)}\n\t\t\tmargin: 8px;\n\t\t\tposition-try-fallbacks:\n\t\t\t\tflip-block,\n\t\t\t\tflip-inline,\n\t\t\t\tflip-block flip-inline;\n\t\t}\n\t`),e.dataset.overlayRef=r.id,n.adoptedStyleSheets=[...n.adoptedStyleSheets,c],()=>{s?i.style.setProperty(`anchor-name`,s):i.style.removeProperty(`anchor-name`),n.adoptedStyleSheets=n.adoptedStyleSheets.filter(e=>e!==c),delete e.dataset.overlayRef}}(this.surface,this.resolvedAnchor,this.shadowRoot,{id:`ov-${Math.random().toString(36).slice(2,10)}`,placement:t.preferredPlacement??`bottom-start`});let e=y(this.surface),n=this.positionerTeardown;this.positionerTeardown=()=>{e(),n?.()}}else if(this.tier===`popover-fui`&&this.resolvedAnchor){let e=y(this.surface),n=b(this.surface,this.resolvedAnchor,{placement:t.preferredPlacement??`bottom-start`,offsetPx:8,track:!1!==t.track}).pipe((0,a.takeUntil)(this.disconnecting)).subscribe();this.positionerTeardown=()=>{e(),n.unsubscribe()}}else if(this.tier===`fui-only`&&this.resolvedAnchor){let e=b(this.surface,this.resolvedAnchor,{placement:t.preferredPlacement??`bottom-start`,offsetPx:8,track:!1!==t.track}).pipe((0,a.takeUntil)(this.disconnecting)).subscribe();this.positionerTeardown=()=>e.unsubscribe()}else if(this.tier===`modal`&&this.shell)try{this.positionerTeardown=y(this.shell)}catch{}this.setAnchorOriginVars(),this.wireFocusTrap(),this.wireCloseTriggers(t.signal),this.wireResizeObserver(n),await this.playAnimations(`in`)}async close(e,t){if(!this.closing&&this.mounted){this.closing=!0;try{await this.playAnimations(`out`)}catch{}if(this.releaseFocusTrap(),this.factoryEffectDispose){try{this.factoryEffectDispose()}catch{}this.factoryEffectDispose=void 0}if(this.positionerTeardown){try{this.positionerTeardown()}catch{}this.positionerTeardown=void 0}this.active=!1,this.removeAttribute(`active`),this.#e.next({reason:e,result:t}),this.#e.complete()}}render(){if(!this.active)return s.html``;let e=this.layout===`sheet`?this.full?`left-0 right-0 bottom-0 w-full h-[90dvh] rounded-t-[28px] shadow-overlay flex flex-col overflow-hidden`:`left-0 right-0 bottom-0 w-full max-h-[90dvh] rounded-t-[28px] shadow-overlay overflow-auto`:`max-w-[min(480px,calc(100vw-2rem))] max-h-[90dvh] rounded-3xl shadow-overlay-anchored overflow-auto`;return s.html`
44
44
  <div class="shell fixed inset-0 pointer-events-none" part="shell">
45
- ${(0,c.when)(this.modal,()=>s.html`<div class="backdrop fixed inset-0 pointer-events-auto" part="backdrop" @click=${this.onBackdropClick}></div>`)}
45
+ ${(0,c.when)(this.modal,()=>s.html`<div
46
+ class="backdrop fixed inset-0 pointer-events-auto"
47
+ part="backdrop"
48
+ @click=${this.onBackdropClick}
49
+ ></div>`)}
46
50
  <section
47
51
  class="${`surface fixed pointer-events-auto bg-surface-container/85 text-surface-on backdrop-blur-md border border-surface-on/8`} ${e}"
48
52
  part="surface"
@@ -52,7 +56,10 @@ require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-PS1u0j1B.cjs`
52
56
  aria-modal=${this.modal?`true`:`false`}
53
57
  tabindex="-1"
54
58
  >
55
- <div id=${S} class=${this.layout===`sheet`&&this.full?`flex-1 min-h-0 overflow-hidden`:``}></div>
59
+ <div
60
+ id=${S}
61
+ class=${this.layout===`sheet`&&this.full?`flex-1 min-h-0 overflow-hidden`:``}
62
+ ></div>
56
63
  </section>
57
64
  </div>
58
65
  `}setAnchorOriginVars(){let e=this.surface;if(!e)return;let t=e.getBoundingClientRect(),n=this.layout!==`sheet`||this.anchorOriginAnchor?function(e,t){if(!e)return{[d]:`50%`,[f]:`50%`};let{x:n,y:r}=function(e){if(typeof e.getBoundingClientRect==`function`){let t=e.getBoundingClientRect();return{x:t.left+t.width/2,y:t.top+t.height/2}}if(typeof e.width==`number`&&typeof e.height==`number`&&typeof e.left==`number`&&typeof e.top==`number`){let t=e;return{x:t.left+t.width/2,y:t.top+t.height/2}}if(typeof e.clientX==`number`&&typeof e.clientY==`number`){let t=e;return{x:t.clientX,y:t.clientY}}if(e.touches!==void 0&&e.touches.length>0){let t=e.touches[0];return{x:t.clientX,y:t.clientY}}let t=e;return{x:t.x,y:t.y}}(e);if(!t.width||!t.height)return{[d]:`50%`,[f]:`50%`};let i=m((n-t.left)/t.width*100),a=m((r-t.top)/t.height*100);return{[d]:`${i}%`,[f]:`${a}%`}}(this.anchorOriginAnchor,t):{"--schmancy-overlay-origin-x":`50%`,"--schmancy-overlay-origin-y":`100%`};for(let[t,r]of Object.entries(n))e.style.setProperty(t,r)}wireFocusTrap(){if(!this.modal)return;this.lastFocusedElement=document.activeElement??null;let e=this.parentElement;if(e){this.inertedSiblings=[];for(let t of Array.from(e.children))t!==this&&t instanceof HTMLElement&&!t.inert&&(t.inert=!0,this.inertedSiblings.push(t))}queueMicrotask(()=>{(this.surface?.querySelector(`[autofocus]`)??this.surface)?.focus()})}releaseFocusTrap(){for(let e of this.inertedSiblings)e.inert=!1;this.inertedSiblings=[];try{this.lastFocusedElement?.focus?.()}catch{}this.lastFocusedElement=null}wireCloseTriggers(e){let t=this.disconnecting;if(e?.aborted)return void queueMicrotask(()=>{this.close(`abort`)});let n=(0,a.fromEvent)(this,`close`).pipe((0,a.filter)(e=>e instanceof CustomEvent),(0,a.tap)(e=>e.stopPropagation()),(0,a.map)(e=>({reason:`structured`,result:e.detail}))),r=(0,a.fromEvent)(this,`submit`).pipe((0,a.filter)(e=>{let t=e.target;return!!t&&t.method===`dialog`}),(0,a.tap)(e=>e.preventDefault()),(0,a.map)(e=>({reason:`native-submit`,result:e.submitter?.value??``}))),o=(0,a.fromEvent)(document,`keydown`).pipe((0,a.filter)(e=>e.key===`Escape`),(0,a.tap)(e=>e.preventDefault()),(0,a.filter)(()=>this.dismissable),(0,a.map)(()=>({reason:`escape`})),(0,a.take)(1)),s=this.tier===`modal`?null:(0,a.fromEvent)(document,`pointerdown`,{capture:!0}).pipe((0,a.filter)(e=>{if(!this.dismissable)return!1;let t=e.composedPath();if(this.surface&&t.includes(this.surface)||this.resolvedAnchor?.el&&t.includes(this.resolvedAnchor.el))return!1;let n=i.s(),r=n.findIndex(e=>e.element===this);if(r!==-1)for(let e=r+1;e<n.length;e++){if(t.includes(n[e].element))return!1;let r=n[e].element.shadowRoot?.querySelector(`.surface`);if(r&&t.includes(r))return!1}return!0}),(0,a.map)(()=>({reason:`backdrop`})),(0,a.take)(1)),c=this.layout===`sheet`&&this.dismissable?h({surface:this.surface,until$:(0,a.merge)(t,this.#e)}).pipe((0,a.take)(1),(0,a.map)(()=>({reason:`swipe`}))):null,l=e?(0,a.fromEvent)(e,`abort`).pipe((0,a.take)(1),(0,a.map)(()=>({reason:`abort`}))):null;(0,a.merge)(n,r,o,s??a.EMPTY,c??a.EMPTY,l??a.EMPTY).pipe((0,a.takeUntil)(t)).subscribe(({reason:e,result:t})=>{this.close(e,t)})}wireResizeObserver(e){r.t(e).pipe((0,a.map)(e=>{let t=e[0];if(!t)return null;let n=t.contentRect;return{w:n.width,h:n.height}}),(0,a.filter)(e=>e!==null),(0,a.distinctUntilChanged)((e,t)=>e.w===t.w&&e.h===t.h),(0,a.debounceTime)(80),(0,a.takeUntil)((0,a.merge)(this.disconnecting,this.#e))).subscribe(()=>this.maybeReResolve())}async maybeReResolve(){if(this.closing)return;let e=g({anchor:this.rawAnchor});if(e===this.layout||performance.now()-this.lastReResolveAt<600||(n=this.layout,r=e,n!==`anchored`||r!==`sheet`))return;var n,r;let i=this.surface,a=i.getBoundingClientRect();this.layout=e,await this.updateComplete;let o=function(e,n){return u?{keyframes:[{transform:`none`},{transform:`none`}],options:{duration:1,easing:`linear`,fill:`forwards`}}:{keyframes:[{transform:`translate(${e.left-n.left}px, ${e.top-n.top}px) scale(${n.width>0?e.width/n.width:1}, ${n.height>0?e.height/n.height:1})`,transformOrigin:`top left`},{transform:`none`,transformOrigin:`top left`}],options:{duration:t.d.duration,easing:t._(t.d),fill:`forwards`}}}(a,i.getBoundingClientRect());try{await i.animate(o.keyframes,o.options).finished}catch{}this.lastReResolveAt=performance.now()}async playAnimations(e){let n=this.surface;if(!n)return;let r=function(e,n){if(u)return n===`in`?{keyframes:[{opacity:0,transform:`none`},{opacity:1,transform:`none`}],options:{duration:1,easing:`linear`,fill:`forwards`}}:{keyframes:[{opacity:1,transform:`none`},{opacity:0,transform:`none`}],options:{duration:1,easing:`linear`,fill:`forwards`}};switch(e){case`sheet`:return n===`in`?{keyframes:[{opacity:0,transform:`translateY(100%)`},{opacity:1,transform:`translateY(0)`}],options:{duration:t.f.duration,easing:t._(t.f),fill:`forwards`}}:{keyframes:[{opacity:1,transform:`translateY(0)`},{opacity:0,transform:`translateY(100%)`}],options:{duration:150,easing:t._(t.d),fill:`forwards`}};case`anchored`:return n===`in`?{keyframes:[{opacity:0,transform:`scale(0.85)`,transformOrigin:p},{opacity:1,transform:`scale(1)`,transformOrigin:p}],options:{duration:t.f.duration,easing:t._(t.f),fill:`forwards`}}:{keyframes:[{opacity:1,transform:`scale(1)`,transformOrigin:p},{opacity:0,transform:`scale(0.92)`,transformOrigin:p}],options:{duration:150,easing:t._(t.d),fill:`forwards`}}}}(this.layout,e),i=[n.animate(r.keyframes,r.options).finished.catch(()=>{})],a=this.backdrop;this.modal&&a&&i.push(a.animate(e===`in`?[{opacity:0},{opacity:1}]:[{opacity:1},{opacity:0}],{duration:r.options.duration,easing:e===`in`?`ease-out`:`ease-in`,fill:`forwards`}).finished.catch(()=>{})),await Promise.all(i)}};async function w(e,t,n){if(typeof(r=e)==`object`&&r!==null&&`_$litType$`in r)return(0,s.render)(e,t),t;var r;if(e instanceof HTMLElement)return n&&Object.assign(e,n),t.appendChild(e),e;if(function(e){return typeof e==`function`&&`preload`in e}(e))return w((await e()).default,t,n);if(T(e))return w(e(),t,n);if(typeof e==`function`){let r=new e;return n&&Object.assign(r,n),t.appendChild(r),r}if(typeof e==`string`){let r=document.createElement(e);return n&&Object.assign(r,n),t.appendChild(r),r}throw Error(`schmancy-overlay: unsupported content type`)}function T(e){return typeof e==`function`&&!e.prototype}e.u([(0,o.property)({type:String,reflect:!0})],C.prototype,`layout`,void 0),e.u([(0,o.property)({type:Boolean,reflect:!0})],C.prototype,`dismissable`,void 0),e.u([(0,o.property)({type:Boolean,reflect:!0})],C.prototype,`modal`,void 0),e.u([(0,o.property)({type:String,reflect:!0})],C.prototype,`tier`,void 0),e.u([(0,o.state)()],C.prototype,`active`,void 0),e.u([(0,o.state)()],C.prototype,`full`,void 0),e.u([(0,o.query)(`.backdrop`)],C.prototype,`backdrop`,void 0),e.u([(0,o.query)(`.surface`)],C.prototype,`surface`,void 0),e.u([(0,o.query)(`.shell`)],C.prototype,`shell`,void 0),C=e.u([(0,o.customElement)(`schmancy-overlay`)],C),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return C}});