@mhmo91/schmancy 0.4.53 → 0.4.55

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 (333) hide show
  1. package/ai/map.md +232 -0
  2. package/ai/notification.md +158 -45
  3. package/dist/ai/map.md +232 -0
  4. package/dist/ai/notification.md +158 -45
  5. package/dist/{animated-text-D26Fv13t.js → animated-text-Bns9oiIU.js} +3 -3
  6. package/dist/{animated-text-D26Fv13t.js.map → animated-text-Bns9oiIU.js.map} +1 -1
  7. package/dist/{animated-text-CtXY3MHV.cjs → animated-text-CHUcj2G2.cjs} +2 -2
  8. package/dist/{animated-text-CtXY3MHV.cjs.map → animated-text-CHUcj2G2.cjs.map} +1 -1
  9. package/dist/animated-text.cjs +1 -1
  10. package/dist/animated-text.js +1 -1
  11. package/dist/area.cjs +1 -1
  12. package/dist/{area.component-BCcq9Nb7.js → area.component-Aur5h5TN.js} +10 -10
  13. package/dist/{area.component-BCcq9Nb7.js.map → area.component-Aur5h5TN.js.map} +1 -1
  14. package/dist/{area.component-DQ_erV9e.cjs → area.component-BTZcyqR5.cjs} +2 -2
  15. package/dist/{area.component-DQ_erV9e.cjs.map → area.component-BTZcyqR5.cjs.map} +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{autocomplete-CkycjWy4.js → autocomplete-BhjrqWor.js} +3 -3
  18. package/dist/{autocomplete-CkycjWy4.js.map → autocomplete-BhjrqWor.js.map} +1 -1
  19. package/dist/{autocomplete-CrhgxhFI.cjs → autocomplete-CleoNM85.cjs} +2 -2
  20. package/dist/{autocomplete-CrhgxhFI.cjs.map → autocomplete-CleoNM85.cjs.map} +1 -1
  21. package/dist/autocomplete.cjs +1 -1
  22. package/dist/autocomplete.js +1 -1
  23. package/dist/{avatar-nwqyt3uc.cjs → avatar-DoUVCqad.cjs} +2 -2
  24. package/dist/{avatar-nwqyt3uc.cjs.map → avatar-DoUVCqad.cjs.map} +1 -1
  25. package/dist/{avatar-BXx1oJMG.js → avatar-j733KoCV.js} +53 -51
  26. package/dist/{avatar-BXx1oJMG.js.map → avatar-j733KoCV.js.map} +1 -1
  27. package/dist/badge.cjs +1 -1
  28. package/dist/badge.js +1 -1
  29. package/dist/{boat-C_BvtlNQ.js → boat-CIA-nk8V.js} +2 -2
  30. package/dist/{boat-C_BvtlNQ.js.map → boat-CIA-nk8V.js.map} +1 -1
  31. package/dist/{boat-B_xZilsk.cjs → boat-DU_GhEJ2.cjs} +2 -2
  32. package/dist/{boat-B_xZilsk.cjs.map → boat-DU_GhEJ2.cjs.map} +1 -1
  33. package/dist/boat.cjs +1 -1
  34. package/dist/boat.js +1 -1
  35. package/dist/busy.cjs +1 -1
  36. package/dist/busy.js +1 -1
  37. package/dist/button.cjs +1 -1
  38. package/dist/button.js +1 -1
  39. package/dist/card.cjs +1 -1
  40. package/dist/card.js +1 -1
  41. package/dist/{checkbox-c3DzDvWH.js → checkbox-BCTABF4s.js} +6 -6
  42. package/dist/{checkbox-c3DzDvWH.js.map → checkbox-BCTABF4s.js.map} +1 -1
  43. package/dist/{checkbox-BAuVXvYL.cjs → checkbox-DblOhLz_.cjs} +2 -2
  44. package/dist/{checkbox-BAuVXvYL.cjs.map → checkbox-DblOhLz_.cjs.map} +1 -1
  45. package/dist/checkbox.cjs +1 -1
  46. package/dist/checkbox.js +1 -1
  47. package/dist/{chips-Dn8RpKCE.js → chips-BbMM2s8r.js} +3 -3
  48. package/dist/{chips-Dn8RpKCE.js.map → chips-BbMM2s8r.js.map} +1 -1
  49. package/dist/{chips-Dg2otqDI.cjs → chips-LAtr3to0.cjs} +2 -2
  50. package/dist/{chips-Dg2otqDI.cjs.map → chips-LAtr3to0.cjs.map} +1 -1
  51. package/dist/chips.cjs +1 -1
  52. package/dist/chips.js +1 -1
  53. package/dist/{circular-progress-DZUJU-z3.cjs → circular-progress-BKwcIgEZ.cjs} +2 -2
  54. package/dist/{circular-progress-DZUJU-z3.cjs.map → circular-progress-BKwcIgEZ.cjs.map} +1 -1
  55. package/dist/{circular-progress-B1RjFzcp.js → circular-progress-DtAG2JJn.js} +3 -3
  56. package/dist/{circular-progress-B1RjFzcp.js.map → circular-progress-DtAG2JJn.js.map} +1 -1
  57. package/dist/circular-progress.cjs +1 -1
  58. package/dist/circular-progress.js +1 -1
  59. package/dist/code-highlight.cjs +1 -1
  60. package/dist/code-highlight.js +1 -1
  61. package/dist/{code-preview-JlSLKkKg.js → code-preview-BgwAlMc_.js} +2 -2
  62. package/dist/{code-preview-JlSLKkKg.js.map → code-preview-BgwAlMc_.js.map} +1 -1
  63. package/dist/{code-preview-CYHNaPek.cjs → code-preview-Bn6-jpNm.cjs} +2 -2
  64. package/dist/{code-preview-CYHNaPek.cjs.map → code-preview-Bn6-jpNm.cjs.map} +1 -1
  65. package/dist/components.cjs +1 -1
  66. package/dist/components.js +1 -1
  67. package/dist/content-drawer.cjs +1 -1
  68. package/dist/content-drawer.js +1 -1
  69. package/dist/{date-range-8o_f5N7V.js → date-range-CBfV-vU_.js} +4 -4
  70. package/dist/{date-range-8o_f5N7V.js.map → date-range-CBfV-vU_.js.map} +1 -1
  71. package/dist/{date-range-9NUFmKqd.cjs → date-range-CNsf8eFb.cjs} +2 -2
  72. package/dist/{date-range-9NUFmKqd.cjs.map → date-range-CNsf8eFb.cjs.map} +1 -1
  73. package/dist/{date-range-inline-Czq1wHs1.cjs → date-range-inline-ECHd558D.cjs} +2 -2
  74. package/dist/{date-range-inline-Czq1wHs1.cjs.map → date-range-inline-ECHd558D.cjs.map} +1 -1
  75. package/dist/{date-range-inline-B_K4YPtB.js → date-range-inline-VA3xdfyl.js} +3 -3
  76. package/dist/{date-range-inline-B_K4YPtB.js.map → date-range-inline-VA3xdfyl.js.map} +1 -1
  77. package/dist/date-range-inline.cjs +1 -1
  78. package/dist/date-range-inline.js +1 -1
  79. package/dist/date-range.cjs +1 -1
  80. package/dist/date-range.js +1 -1
  81. package/dist/{delay-DtVBjjLV.js → delay-B_3yscDy.js} +2 -2
  82. package/dist/{delay-DtVBjjLV.js.map → delay-B_3yscDy.js.map} +1 -1
  83. package/dist/{delay-FgtrEHdo.cjs → delay-DtUJwLKe.cjs} +2 -2
  84. package/dist/{delay-FgtrEHdo.cjs.map → delay-DtUJwLKe.cjs.map} +1 -1
  85. package/dist/delay.cjs +1 -1
  86. package/dist/delay.js +1 -1
  87. package/dist/details-Bkt6fV0b.js +134 -0
  88. package/dist/details-Bkt6fV0b.js.map +1 -0
  89. package/dist/details-X-ciBYba.cjs +109 -0
  90. package/dist/details-X-ciBYba.cjs.map +1 -0
  91. package/dist/details.cjs +2 -0
  92. package/dist/details.cjs.map +1 -0
  93. package/dist/details.js +5 -0
  94. package/dist/details.js.map +1 -0
  95. package/dist/{dialog-content-C_paCOeM.js → dialog-content-Y4RvMloi.js} +4 -4
  96. package/dist/{dialog-content-C_paCOeM.js.map → dialog-content-Y4RvMloi.js.map} +1 -1
  97. package/dist/{dialog-content-tGl9B67L.cjs → dialog-content-puP-JDoT.cjs} +2 -2
  98. package/dist/{dialog-content-tGl9B67L.cjs.map → dialog-content-puP-JDoT.cjs.map} +1 -1
  99. package/dist/{dialog-service-JNWTLfAy.cjs → dialog-service-BCfRtG2U.cjs} +2 -2
  100. package/dist/{dialog-service-JNWTLfAy.cjs.map → dialog-service-BCfRtG2U.cjs.map} +1 -1
  101. package/dist/{dialog-service-DZv4KB89.js → dialog-service-CY9yBEhe.js} +2 -2
  102. package/dist/{dialog-service-DZv4KB89.js.map → dialog-service-CY9yBEhe.js.map} +1 -1
  103. package/dist/dialog.cjs +1 -1
  104. package/dist/dialog.js +2 -2
  105. package/dist/{divider-Dn26vIou.js → divider-BZq3k_da.js} +3 -3
  106. package/dist/{divider-Dn26vIou.js.map → divider-BZq3k_da.js.map} +1 -1
  107. package/dist/{divider-2yg9r1tF.cjs → divider-t1KWAOnw.cjs} +2 -2
  108. package/dist/{divider-2yg9r1tF.cjs.map → divider-t1KWAOnw.cjs.map} +1 -1
  109. package/dist/divider.cjs +1 -1
  110. package/dist/divider.js +1 -1
  111. package/dist/{dropdown-content-DJ4CA3ug.cjs → dropdown-content-D834SoZi.cjs} +2 -2
  112. package/dist/{dropdown-content-DJ4CA3ug.cjs.map → dropdown-content-D834SoZi.cjs.map} +1 -1
  113. package/dist/{dropdown-content-DNJhJCdV.js → dropdown-content-JvpnX2RS.js} +3 -3
  114. package/dist/{dropdown-content-DNJhJCdV.js.map → dropdown-content-JvpnX2RS.js.map} +1 -1
  115. package/dist/dropdown.cjs +1 -1
  116. package/dist/dropdown.js +1 -1
  117. package/dist/extra.cjs +1 -1
  118. package/dist/extra.js +1 -1
  119. package/dist/{flex-DV2W2Zgu.js → flex-CAsda_Fe.js} +2 -2
  120. package/dist/{flex-DV2W2Zgu.js.map → flex-CAsda_Fe.js.map} +1 -1
  121. package/dist/{flex-DWnX0ZPR.cjs → flex-LjqLwPhI.cjs} +2 -2
  122. package/dist/{flex-DWnX0ZPR.cjs.map → flex-LjqLwPhI.cjs.map} +1 -1
  123. package/dist/{form-Dpokur4M.cjs → form-CpIQ4L1j.cjs} +2 -2
  124. package/dist/{form-Dpokur4M.cjs.map → form-CpIQ4L1j.cjs.map} +1 -1
  125. package/dist/{form-Cots2cbN.js → form-czxHWLos.js} +2 -2
  126. package/dist/{form-Cots2cbN.js.map → form-czxHWLos.js.map} +1 -1
  127. package/dist/form.cjs +1 -1
  128. package/dist/form.js +1 -1
  129. package/dist/{formField.mixin-ySoLTrgX.cjs → formField.mixin-BD-_Rnyy.cjs} +2 -2
  130. package/dist/{formField.mixin-ySoLTrgX.cjs.map → formField.mixin-BD-_Rnyy.cjs.map} +1 -1
  131. package/dist/{formField.mixin-DdTDdv9g.js → formField.mixin-bSNupTkm.js} +2 -2
  132. package/dist/{formField.mixin-DdTDdv9g.js.map → formField.mixin-bSNupTkm.js.map} +1 -1
  133. package/dist/{icon-BZxC9aoA.js → icon-B8LhF-rS.js} +2 -2
  134. package/dist/{icon-BZxC9aoA.js.map → icon-B8LhF-rS.js.map} +1 -1
  135. package/dist/{icon-mhchC8Qw.cjs → icon-DgnS9IuB.cjs} +2 -2
  136. package/dist/{icon-mhchC8Qw.cjs.map → icon-DgnS9IuB.cjs.map} +1 -1
  137. package/dist/{icon-button-DbvjV5zJ.cjs → icon-button-CK0UyXcE.cjs} +2 -2
  138. package/dist/{icon-button-DbvjV5zJ.cjs.map → icon-button-CK0UyXcE.cjs.map} +1 -1
  139. package/dist/{icon-button-BGvSPuE-.js → icon-button-DdvdiQga.js} +3 -3
  140. package/dist/{icon-button-BGvSPuE-.js.map → icon-button-DdvdiQga.js.map} +1 -1
  141. package/dist/icons.cjs +1 -1
  142. package/dist/icons.js +1 -1
  143. package/dist/index.cjs +1 -1
  144. package/dist/index.js +166 -159
  145. package/dist/index.js.map +1 -1
  146. package/dist/{input-DzNoI9qU.cjs → input-DJKVCqiL.cjs} +2 -2
  147. package/dist/{input-DzNoI9qU.cjs.map → input-DJKVCqiL.cjs.map} +1 -1
  148. package/dist/{input-Cpo-ws8k.js → input-rNxC53BQ.js} +3 -3
  149. package/dist/{input-Cpo-ws8k.js.map → input-rNxC53BQ.js.map} +1 -1
  150. package/dist/input.cjs +1 -1
  151. package/dist/input.js +1 -1
  152. package/dist/layout.cjs +1 -1
  153. package/dist/layout.js +1 -1
  154. package/dist/{list-BTyoQ42F.js → list-ccMISKKN.js} +2 -2
  155. package/dist/{list-BTyoQ42F.js.map → list-ccMISKKN.js.map} +1 -1
  156. package/dist/{list-DRbkWHho.cjs → list-e54Aokyk.cjs} +2 -2
  157. package/dist/{list-DRbkWHho.cjs.map → list-e54Aokyk.cjs.map} +1 -1
  158. package/dist/list.cjs +1 -1
  159. package/dist/list.js +1 -1
  160. package/dist/{litElement.mixin-BH9PTyUD.js → litElement.mixin-BMewYv9c.js} +2 -2
  161. package/dist/{litElement.mixin-BH9PTyUD.js.map → litElement.mixin-BMewYv9c.js.map} +1 -1
  162. package/dist/{litElement.mixin-B01R2oT7.cjs → litElement.mixin-Brn_lsa3.cjs} +2 -2
  163. package/dist/{litElement.mixin-B01R2oT7.cjs.map → litElement.mixin-Brn_lsa3.cjs.map} +1 -1
  164. package/dist/map-CsuRRLbB.js +175 -0
  165. package/dist/map-CsuRRLbB.js.map +1 -0
  166. package/dist/map-D3nhiTCn.cjs +81 -0
  167. package/dist/map-D3nhiTCn.cjs.map +1 -0
  168. package/dist/map.cjs +2 -0
  169. package/dist/map.cjs.map +1 -0
  170. package/dist/map.js +5 -0
  171. package/dist/map.js.map +1 -0
  172. package/dist/{media-BO-aZBTp.js → media-BtAS-xyw.js} +2 -2
  173. package/dist/{media-BO-aZBTp.js.map → media-BtAS-xyw.js.map} +1 -1
  174. package/dist/{media-CIuTybvD.cjs → media-Dd0PTrZ3.cjs} +2 -2
  175. package/dist/{media-CIuTybvD.cjs.map → media-Dd0PTrZ3.cjs.map} +1 -1
  176. package/dist/{menu-DWCDQvGY.js → menu-CAhuu8Ei.js} +3 -3
  177. package/dist/{menu-DWCDQvGY.js.map → menu-CAhuu8Ei.js.map} +1 -1
  178. package/dist/{menu-DEbZxoXr.cjs → menu-CFqp1aH7.cjs} +2 -2
  179. package/dist/{menu-DEbZxoXr.cjs.map → menu-CFqp1aH7.cjs.map} +1 -1
  180. package/dist/menu.cjs +1 -1
  181. package/dist/menu.js +1 -1
  182. package/dist/nav-drawer.cjs +1 -1
  183. package/dist/nav-drawer.js +1 -1
  184. package/dist/{notification-service-L_h9_d4v.js → notification-service-Byz67oln.js} +142 -113
  185. package/dist/notification-service-Byz67oln.js.map +1 -0
  186. package/dist/notification-service-KWQfnc6d.cjs +143 -0
  187. package/dist/notification-service-KWQfnc6d.cjs.map +1 -0
  188. package/dist/notification.cjs +1 -1
  189. package/dist/notification.js +7 -4
  190. package/dist/notification.js.map +1 -1
  191. package/dist/notify-BIdXyvMf.js +35 -0
  192. package/dist/notify-BIdXyvMf.js.map +1 -0
  193. package/dist/notify-DDzsX0lt.cjs +2 -0
  194. package/dist/notify-DDzsX0lt.cjs.map +1 -0
  195. package/dist/number-B7aCRYnH.cjs.map +1 -1
  196. package/dist/number-BhTiptLA.js.map +1 -1
  197. package/dist/{option-vRGeXw_u.js → option-BCg6S7Jj.js} +2 -2
  198. package/dist/{option-vRGeXw_u.js.map → option-BCg6S7Jj.js.map} +1 -1
  199. package/dist/{option-BPmOG_Hw.cjs → option-DarGe_f3.cjs} +2 -2
  200. package/dist/{option-BPmOG_Hw.cjs.map → option-DarGe_f3.cjs.map} +1 -1
  201. package/dist/option.cjs +1 -1
  202. package/dist/option.js +1 -1
  203. package/dist/{payment-card-form-Cs5bP5Di.js → payment-card-form-C1W2DPu4.js} +3 -3
  204. package/dist/{payment-card-form-Cs5bP5Di.js.map → payment-card-form-C1W2DPu4.js.map} +1 -1
  205. package/dist/{payment-card-form-ccF9dfGC.cjs → payment-card-form-CW3KC9QK.cjs} +2 -2
  206. package/dist/{payment-card-form-ccF9dfGC.cjs.map → payment-card-form-CW3KC9QK.cjs.map} +1 -1
  207. package/dist/{progress-BqZ7yHQe.cjs → progress-B-ZZ40CK.cjs} +2 -2
  208. package/dist/{progress-BqZ7yHQe.cjs.map → progress-B-ZZ40CK.cjs.map} +1 -1
  209. package/dist/{progress-DM_jha7D.js → progress-BSJSsYj7.js} +2 -2
  210. package/dist/{progress-DM_jha7D.js.map → progress-BSJSsYj7.js.map} +1 -1
  211. package/dist/progress.cjs +1 -1
  212. package/dist/progress.js +1 -1
  213. package/dist/{radio-button-WmbuT_YW.cjs → radio-button-CsIIrM_C.cjs} +2 -2
  214. package/dist/{radio-button-WmbuT_YW.cjs.map → radio-button-CsIIrM_C.cjs.map} +1 -1
  215. package/dist/{radio-button-YDzqdRA-.js → radio-button-DX4XSjAy.js} +3 -3
  216. package/dist/{radio-button-YDzqdRA-.js.map → radio-button-DX4XSjAy.js.map} +1 -1
  217. package/dist/radio-group.cjs +1 -1
  218. package/dist/radio-group.js +1 -1
  219. package/dist/{schmancy-steps-container-CoARMXfB.js → schmancy-steps-container-8RdoKtdK.js} +2 -2
  220. package/dist/{schmancy-steps-container-CoARMXfB.js.map → schmancy-steps-container-8RdoKtdK.js.map} +1 -1
  221. package/dist/{schmancy-steps-container-CjAsrjKf.cjs → schmancy-steps-container-DADzK9o0.cjs} +2 -2
  222. package/dist/{schmancy-steps-container-CjAsrjKf.cjs.map → schmancy-steps-container-DADzK9o0.cjs.map} +1 -1
  223. package/dist/{select-rwocpGs2.js → select-C-KLPYEJ.js} +3 -3
  224. package/dist/{select-rwocpGs2.js.map → select-C-KLPYEJ.js.map} +1 -1
  225. package/dist/{select-CPnSionr.cjs → select-CF9aojhZ.cjs} +2 -2
  226. package/dist/{select-CPnSionr.cjs.map → select-CF9aojhZ.cjs.map} +1 -1
  227. package/dist/select.cjs +1 -1
  228. package/dist/select.js +1 -1
  229. package/dist/{sheet-Cw2qLdzN.js → sheet-BQ2PhU-0.js} +4 -4
  230. package/dist/{sheet-Cw2qLdzN.js.map → sheet-BQ2PhU-0.js.map} +1 -1
  231. package/dist/{sheet-eCDoMdHF.cjs → sheet-CzCiJ3yC.cjs} +2 -2
  232. package/dist/{sheet-eCDoMdHF.cjs.map → sheet-CzCiJ3yC.cjs.map} +1 -1
  233. package/dist/sheet.cjs +1 -1
  234. package/dist/sheet.js +1 -1
  235. package/dist/{slider-C7Z1bPq7.js → slider-Bo0_X0Xt.js} +3 -3
  236. package/dist/{slider-C7Z1bPq7.js.map → slider-Bo0_X0Xt.js.map} +1 -1
  237. package/dist/{slider-DBNoXRWS.cjs → slider-C4fwo5P3.cjs} +2 -2
  238. package/dist/{slider-DBNoXRWS.cjs.map → slider-C4fwo5P3.cjs.map} +1 -1
  239. package/dist/slider.cjs +1 -1
  240. package/dist/slider.js +1 -1
  241. package/dist/{spinner-CbA-FXRK.js → spinner-CKnK4QHu.js} +2 -2
  242. package/dist/{spinner-CbA-FXRK.js.map → spinner-CKnK4QHu.js.map} +1 -1
  243. package/dist/{spinner-CV62BBoF.cjs → spinner-DMoZTIMe.cjs} +2 -2
  244. package/dist/{spinner-CV62BBoF.cjs.map → spinner-DMoZTIMe.cjs.map} +1 -1
  245. package/dist/steps.cjs +1 -1
  246. package/dist/steps.js +1 -1
  247. package/dist/{surface-By8o7nWa.js → surface-BEaRxAZt.js} +2 -2
  248. package/dist/{surface-By8o7nWa.js.map → surface-BEaRxAZt.js.map} +1 -1
  249. package/dist/{surface-ClfeUI6q.cjs → surface-Bcy2LzAX.cjs} +2 -2
  250. package/dist/{surface-ClfeUI6q.cjs.map → surface-Bcy2LzAX.cjs.map} +1 -1
  251. package/dist/surface.cjs +1 -1
  252. package/dist/surface.js +1 -1
  253. package/dist/{table-Rqnb4AJl.cjs → table-9AyLMNRe.cjs} +2 -2
  254. package/dist/{table-Rqnb4AJl.cjs.map → table-9AyLMNRe.cjs.map} +1 -1
  255. package/dist/{table-CvMo5lOi.js → table-MzCzXjAC.js} +2 -2
  256. package/dist/{table-CvMo5lOi.js.map → table-MzCzXjAC.js.map} +1 -1
  257. package/dist/table.cjs +1 -1
  258. package/dist/table.js +1 -1
  259. package/dist/{tabs-compatibility-BEXurIiZ.js → tabs-compatibility-D5xv33oo.js} +2 -2
  260. package/dist/{tabs-compatibility-BEXurIiZ.js.map → tabs-compatibility-D5xv33oo.js.map} +1 -1
  261. package/dist/{tabs-compatibility-B1bE7hSG.cjs → tabs-compatibility-N1qxOCYJ.cjs} +2 -2
  262. package/dist/{tabs-compatibility-B1bE7hSG.cjs.map → tabs-compatibility-N1qxOCYJ.cjs.map} +1 -1
  263. package/dist/tabs.cjs +1 -1
  264. package/dist/tabs.js +1 -1
  265. package/dist/tailwind.mixin-BTGoGfEI.js +43 -0
  266. package/dist/{tailwind.mixin-CaIkmP6j.js.map → tailwind.mixin-BTGoGfEI.js.map} +1 -1
  267. package/dist/tailwind.mixin-KC3Nl9kj.cjs +2 -0
  268. package/dist/{tailwind.mixin-DVKI3qb9.cjs.map → tailwind.mixin-KC3Nl9kj.cjs.map} +1 -1
  269. package/dist/teleport.cjs +1 -1
  270. package/dist/teleport.js +1 -1
  271. package/dist/{textarea-DM3lgEUp.js → textarea-BHGIbEBY.js} +2 -2
  272. package/dist/{textarea-DM3lgEUp.js.map → textarea-BHGIbEBY.js.map} +1 -1
  273. package/dist/{textarea-Dlnyyrbq.cjs → textarea-DUBjaAfu.cjs} +2 -2
  274. package/dist/{textarea-Dlnyyrbq.cjs.map → textarea-DUBjaAfu.cjs.map} +1 -1
  275. package/dist/textarea.cjs +1 -1
  276. package/dist/textarea.js +1 -1
  277. package/dist/{theme-button-Cao8AH8r.cjs → theme-button-C2-L23sJ.cjs} +2 -2
  278. package/dist/{theme-button-Cao8AH8r.cjs.map → theme-button-C2-L23sJ.cjs.map} +1 -1
  279. package/dist/{theme-button-C4JWRMiC.js → theme-button-FU1OUOBA.js} +2 -2
  280. package/dist/{theme-button-C4JWRMiC.js.map → theme-button-FU1OUOBA.js.map} +1 -1
  281. package/dist/theme-button.cjs +1 -1
  282. package/dist/theme-button.js +1 -1
  283. package/dist/theme.cjs +1 -1
  284. package/dist/{theme.component-RtV3l-Ns.cjs → theme.component-BQr3n0fE.cjs} +3 -3
  285. package/dist/{theme.component-RtV3l-Ns.cjs.map → theme.component-BQr3n0fE.cjs.map} +1 -1
  286. package/dist/{theme.component-ColRTbY5.js → theme.component-BYGB9dTb.js} +2 -2
  287. package/dist/{theme.component-ColRTbY5.js.map → theme.component-BYGB9dTb.js.map} +1 -1
  288. package/dist/theme.js +1 -1
  289. package/dist/{timezone-Cvsd--fr.js → timezone-BgX3qSF-.js} +3 -3
  290. package/dist/{timezone-Cvsd--fr.js.map → timezone-BgX3qSF-.js.map} +1 -1
  291. package/dist/{timezone-UBBApQoU.cjs → timezone-DexhNs9f.cjs} +2 -2
  292. package/dist/{timezone-UBBApQoU.cjs.map → timezone-DexhNs9f.cjs.map} +1 -1
  293. package/dist/{tooltip-nwQwCEgl.js → tooltip-CkGy17kd.js} +2 -2
  294. package/dist/{tooltip-nwQwCEgl.js.map → tooltip-CkGy17kd.js.map} +1 -1
  295. package/dist/{tooltip-WpE4e-fO.cjs → tooltip-xj7RGLlB.cjs} +2 -2
  296. package/dist/{tooltip-WpE4e-fO.cjs.map → tooltip-xj7RGLlB.cjs.map} +1 -1
  297. package/dist/tooltip.cjs +1 -1
  298. package/dist/tooltip.js +1 -1
  299. package/dist/{tree-BDmB7KmQ.js → tree-BeU8nzGP.js} +2 -2
  300. package/dist/{tree-BDmB7KmQ.js.map → tree-BeU8nzGP.js.map} +1 -1
  301. package/dist/{tree-Dn0t7MUR.cjs → tree-DSpkwuOO.cjs} +2 -2
  302. package/dist/{tree-Dn0t7MUR.cjs.map → tree-DSpkwuOO.cjs.map} +1 -1
  303. package/dist/tree.cjs +1 -1
  304. package/dist/tree.js +1 -1
  305. package/dist/{typewriter-Fq4uV6Gm.cjs → typewriter-Bn7fe4nG.cjs} +2 -2
  306. package/dist/{typewriter-Fq4uV6Gm.cjs.map → typewriter-Bn7fe4nG.cjs.map} +1 -1
  307. package/dist/{typewriter-CXadCi-4.js → typewriter-CbONIeGA.js} +7 -7
  308. package/dist/{typewriter-CXadCi-4.js.map → typewriter-CbONIeGA.js.map} +1 -1
  309. package/dist/typewriter.cjs +1 -1
  310. package/dist/typewriter.js +1 -1
  311. package/dist/{typography-BhCrqK_b.cjs → typography-CJ5-RiNW.cjs} +2 -2
  312. package/dist/{typography-BhCrqK_b.cjs.map → typography-CJ5-RiNW.cjs.map} +1 -1
  313. package/dist/{typography-DYCOngD7.js → typography-D1m-mdd7.js} +2 -2
  314. package/dist/{typography-DYCOngD7.js.map → typography-D1m-mdd7.js.map} +1 -1
  315. package/dist/typography.cjs +1 -1
  316. package/dist/typography.js +1 -1
  317. package/package.json +1 -1
  318. package/types/src/details/details.d.ts +14 -0
  319. package/types/src/details/index.d.ts +1 -0
  320. package/types/src/index.d.ts +2 -0
  321. package/types/src/map/index.d.ts +1 -0
  322. package/types/src/map/map.d.ts +129 -0
  323. package/types/src/notification/index.d.ts +2 -0
  324. package/types/src/notification/notification-container.d.ts +3 -0
  325. package/types/src/notification/notification-service.d.ts +19 -0
  326. package/types/src/notification/notification.d.ts +2 -0
  327. package/types/src/notification/notify.d.ts +100 -0
  328. package/types/src/utils/number.d.ts +2 -0
  329. package/dist/notification-service-B6nHqzq5.cjs +0 -141
  330. package/dist/notification-service-B6nHqzq5.cjs.map +0 -1
  331. package/dist/notification-service-L_h9_d4v.js.map +0 -1
  332. package/dist/tailwind.mixin-CaIkmP6j.js +0 -43
  333. package/dist/tailwind.mixin-DVKI3qb9.cjs +0 -2
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-service-B6nHqzq5.cjs","sources":["../src/notification/notification.ts","../src/notification/notification-audio-generator.ts","../src/notification/notification-audio.ts","../src/notification/notification-container.ts","../src/notification/notification-service.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\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 $LitElement(style) {\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 // 0 means no auto-close\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\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\t@state() private _autoCloseTimer?: number\n\t@state() private _progressTimer?: number\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.duration > 0) {\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis._playSound()\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis._clearTimers()\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('duration') && this.duration > 0) {\n\t\t\tthis._clearTimers()\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\t}\n\n\tprivate _startAutoCloseTimer() {\n\t\tif (this.duration <= 0) return\n\n\t\tconst startTime = Date.now()\n\t\tconst endTime = startTime + this.duration\n\n\t\t// Setup the auto-close timer\n\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\tthis.close()\n\t\t}, this.duration)\n\n\t\t// Setup the progress timer to update every 16ms (60fps)\n\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\tif (this._hovered) return\n\n\t\t\tconst now = Date.now()\n\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\tthis._progress = (remaining / this.duration) * 100\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tthis._clearTimers()\n\t\t\t}\n\t\t}, 16)\n\t}\n\n\tprivate _clearTimers() {\n\t\tif (this._autoCloseTimer) {\n\t\t\tclearTimeout(this._autoCloseTimer)\n\t\t\tthis._autoCloseTimer = undefined\n\t\t}\n\n\t\tif (this._progressTimer) {\n\t\t\tclearInterval(this._progressTimer)\n\t\t\tthis._progressTimer = undefined\n\t\t}\n\t}\n\n\tprivate _pauseTimers() {\n\t\tthis._clearTimers()\n\t}\n\n\tprivate _resumeTimers() {\n\t\tif (this.duration > 0) {\n\t\t\t// Calculate remaining time based on progress\n\t\t\tconst remainingTime = (this._progress / 100) * this.duration\n\n\t\t\tif (remainingTime > 0) {\n\t\t\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\t\t\tthis.close()\n\t\t\t\t}, remainingTime)\n\n\t\t\t\tconst startTime = Date.now()\n\t\t\t\tconst endTime = startTime + remainingTime\n\n\t\t\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\t\t\tif (this._hovered) return\n\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\t\t\tthis._progress = (remaining / remainingTime) * 100\n\n\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\tthis._clearTimers()\n\t\t\t\t\t}\n\t\t\t\t}, 16)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _playSound() {\n\t\t// Dispatch event to play sound through audio service\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._pauseTimers()\n\t}\n\n\tprivate _handleMouseLeave() {\n\t\tthis._hovered = false\n\t\tthis._resumeTimers()\n\t}\n\n\tpublic close() {\n\t\tif (this._closing) return\n\n\t\tthis._closing = true\n\t\tthis._clearTimers()\n\n\t\t// Add closing animation\n\t\tthis._visible = false\n\n\t\t// Dispatch close event\n\t\tsetTimeout(() => {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('close', {\n\t\t\t\t\tdetail: { id: this.id },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}, 300) // Match animation duration\n\t}\n\n\trender() {\n\t\tif (!this._visible && this._closing) return html``\n\n\t\tconst typeStyles = this._getTypeStyles()\n\n\t\t// Calculate elevation based on hover state\n\t\tconst elevationLevel = this._hovered ? '3' : '2'\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\tnotification: true,\n\t\t\t\t\tclosing: this._closing,\n\t\t\t\t\t[this.type]: true,\n\t\t\t\t})}\n\t\t\t\trole=\"alert\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\ttransform: this._closing ? 'translateX(120%)' : 'translateX(0)',\n\t\t\t\t\topacity: this._closing ? '0' : '1',\n\t\t\t\t\tboxShadow: `var(--schmancy-sys-elevation-${elevationLevel})`,\n\t\t\t\t\ttransition:\n\t\t\t\t\t\t'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease',\n\t\t\t\t})}\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<div class=\"notification-content\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"icon-container\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: typeStyles.iconColor,\n\t\t\t\t\t\t\tbgColor: `color-mix(in srgb, ${typeStyles.iconColor} 10%, transparent)`,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t${typeStyles.icon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"content\">\n\t\t\t\t\t\t${this.title\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclass=\"title\"\n\t\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'success'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'warning'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.title}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t${this.closable\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"close-button\"\n\t\t\t\t\t\t\t\t\taria-label=\"Close notification\"\n\t\t\t\t\t\t\t\t\t@click=${this.close}\n\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t? SchmancyTheme.sys.color.surface.onVariant\n\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${typeStyles.iconColor} 80%, ${SchmancyTheme.sys.color.surface.onVariant} 20%)`,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\twidth=\"18\"\n\t\t\t\t\t\t\t\t\t\theight=\"18\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\n\t\t\t\t${this.duration > 0\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"progress-bar-container\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"progress-bar\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: ${this._progress}%\"\n\t\t\t\t\t\t\t\t\t${color({ color: typeStyles.progressColor })}\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\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\tprivate _getTypeStyles() {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path>\n\t\t\t\t\t\t\t<polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.success.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 95%, ${SchmancyTheme.sys.color.success.container} 5%)`,\n\t\t\t\t}\n\t\t\tcase 'warning':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.tertiary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.tertiary.container} 10%)`,\n\t\t\t\t}\n\t\t\tcase 'error':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\n\t\t\t\t\t\t\t<line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.error.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 92%, ${SchmancyTheme.sys.color.error.container} 8%)`,\n\t\t\t\t}\n\t\t\tcase 'info':\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 94%, ${SchmancyTheme.sys.color.primary.container} 6%)`,\n\t\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","/**\n * Programmatic sound generator for Schmancy notifications\n * Uses Web Audio API to generate gentle, subtle and soft sounds for each notification type\n */\nexport class NotificationSoundGenerator {\n\tprivate audioContext: AudioContext | null = null\n\n\t/**\n\t * Get or create AudioContext\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\t\treturn this.audioContext\n\t}\n\n\tpublic playInfoSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst oscillator = ctx.createOscillator()\n\t\tconst gainNode = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\toscillator.type = 'sine'\n\t\toscillator.frequency.setValueAtTime(392, now) // G4\n\t\toscillator.frequency.exponentialRampToValueAtTime(523.25, now + 0.25) // C5\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1500\n\n\t\tgainNode.gain.setValueAtTime(0.0001, now)\n\t\tgainNode.gain.exponentialRampToValueAtTime(volume, now + 0.15)\n\t\tgainNode.gain.exponentialRampToValueAtTime(0.0001, now + 0.4)\n\n\t\toscillator.connect(filter).connect(gainNode).connect(ctx.destination)\n\t\toscillator.start(now)\n\t\toscillator.stop(now + 0.45)\n\t}\n\n\tpublic playSuccessSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst createBell = (freq: number, start: number, duration: number) => {\n\t\t\tconst osc = ctx.createOscillator()\n\t\t\tconst gain = ctx.createGain()\n\t\t\tconst filter = ctx.createBiquadFilter()\n\n\t\t\tosc.type = 'sine'\n\t\t\tosc.frequency.setValueAtTime(freq, now)\n\t\t\tfilter.type = 'lowpass'\n\t\t\tfilter.frequency.value = freq * 4\n\n\t\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.1)\n\t\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + duration)\n\n\t\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\t\tosc.start(now + start)\n\t\t\tosc.stop(now + duration)\n\t\t}\n\n\t\tcreateBell(659.25, 0, 0.6) // E5\n\t\tcreateBell(523.25, 0.05, 0.55) // C5\n\t}\n\n\tpublic playWarningSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc1 = ctx.createOscillator()\n\t\tconst osc2 = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc1.type = 'sine'\n\t\tosc2.type = 'sine'\n\t\tosc1.frequency.setValueAtTime(349.23, now) // F4\n\t\tosc2.frequency.setValueAtTime(440, now) // A4\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1000\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.08)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.5)\n\n\t\tosc1.connect(filter)\n\t\tosc2.connect(filter)\n\t\tfilter.connect(gain).connect(ctx.destination)\n\n\t\tosc1.start(now)\n\t\tosc2.start(now)\n\t\tosc1.stop(now + 0.55)\n\t\tosc2.stop(now + 0.55)\n\t}\n\n\tpublic playErrorSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc.type = 'triangle'\n\t\tosc.frequency.setValueAtTime(220, now) // A3\n\t\tosc.frequency.exponentialRampToValueAtTime(1760, now + 0.3) // A6\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 800\n\t\tfilter.Q.value = 0.5\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume * 0.8, now + 0.1)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.7)\n\n\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\tosc.start(now)\n\t\tosc.stop(now + 0.75)\n\t}\n\n\t/**\n\t * Generate audio blob files for all notification sounds\n\t * Returns a Promise that resolves with URLs to the generated audio files\n\t */\n\tpublic async generateAudioFiles(volume = 0.25): Promise<Record<string, string>> {\n\t\t// Create offline audio context for rendering\n\t\tconst sampleRate = 44100\n\t\tconst duration = 1 // 1 second duration to capture the full sound\n\n\t\tconst audioUrls: Record<string, string> = {}\n\n\t\t// Generate info sound\n\t\taudioUrls.info = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillator for main tone\n\t\t\t\tconst oscillator = ctx.createOscillator()\n\t\t\t\toscillator.type = 'sine'\n\t\t\t\toscillator.frequency.setValueAtTime(320, 0)\n\t\t\t\toscillator.frequency.exponentialRampToValueAtTime(520, 0.3)\n\n\t\t\t\t// Create gain node for volume control with softer attack/release\n\t\t\t\tconst gainNode = ctx.createGain()\n\t\t\t\tgainNode.gain.setValueAtTime(0, 0)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\t// Connect and play\n\t\t\t\toscillator.connect(gainNode)\n\t\t\t\tgainNode.connect(ctx.destination)\n\t\t\t\toscillator.start()\n\t\t\t\toscillator.stop(0.5)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate success sound\n\t\taudioUrls.success = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator (higher note)\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(660, 0)\n\n\t\t\t\t// Create secondary oscillator (lower note)\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(440, 0)\n\n\t\t\t\t// Create gain nodes with softer envelope\n\t\t\t\tconst gain1 = ctx.createGain()\n\t\t\t\tgain1.gain.setValueAtTime(0, 0)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\tconst gain2 = ctx.createGain()\n\t\t\t\tgain2.gain.setValueAtTime(0, 0)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(volume * 0.6, 0.15)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain1)\n\t\t\t\tgain1.connect(ctx.destination)\n\n\t\t\t\tosc2.connect(gain2)\n\t\t\t\tgain2.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start(0.15)\n\n\t\t\t\tosc1.stop(0.5)\n\t\t\t\tosc2.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate warning sound\n\t\taudioUrls.warning = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillators for a two-tone warning\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(293.66, 0)\n\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(349.23, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.8, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.6)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain)\n\t\t\t\tosc2.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start()\n\n\t\t\t\tosc1.stop(0.6)\n\t\t\t\tosc2.stop(0.6)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate error sound\n\t\taudioUrls.error = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator\n\t\t\t\tconst osc = ctx.createOscillator()\n\t\t\t\tosc.type = 'sine'\n\t\t\t\tosc.frequency.setValueAtTime(196, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.4, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Additional filter to make it even softer\n\t\t\t\tconst filter = ctx.createBiquadFilter()\n\t\t\t\tfilter.type = 'lowpass'\n\t\t\t\tfilter.frequency.value = 600\n\t\t\t\tfilter.Q.value = 0.7\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc.connect(filter)\n\t\t\t\tfilter.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc.start()\n\t\t\t\tosc.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\treturn audioUrls\n\t}\n\n\t/**\n\t * Generate an audio file from a sound generation function\n\t * @param renderFunction Function that creates the sound in the provided context\n\t * @param sampleRate Sample rate for the audio\n\t * @param duration Duration in seconds\n\t * @returns Promise that resolves with the URL to the generated audio file\n\t */\n\tprivate async generateAudioFile(\n\t\trenderFunction: (ctx: OfflineAudioContext) => Promise<void>,\n\t\tsampleRate = 44100,\n\t\tduration = 1,\n\t): Promise<string> {\n\t\t// Create offline context\n\t\tconst offlineCtx = new OfflineAudioContext(2, sampleRate * duration, sampleRate)\n\n\t\t// Render the sound\n\t\tawait renderFunction(offlineCtx)\n\n\t\t// Render the audio\n\t\tconst audioBuffer = await offlineCtx.startRendering()\n\n\t\t// Convert to WAV format\n\t\tconst wavBlob = this.audioBufferToWav(audioBuffer)\n\n\t\t// Create URL\n\t\treturn URL.createObjectURL(wavBlob)\n\t}\n\n\t/**\n\t * Convert AudioBuffer to WAV format\n\t * Based on https://github.com/Jam3/audiobuffer-to-wav\n\t */\n\tprivate audioBufferToWav(buffer: AudioBuffer): Blob {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst sampleRate = buffer.sampleRate\n\t\tconst format = 1 // PCM\n\t\tconst bitDepth = 16\n\n\t\tconst bytesPerSample = bitDepth / 8\n\t\tconst blockAlign = numChannels * bytesPerSample\n\n\t\tconst samples = this.getAudioSamples(buffer, bitDepth)\n\t\tconst dataLength = samples.length * bytesPerSample\n\n\t\t// Create WAV header\n\t\tconst headerLength = 44\n\t\tconst wavBuffer = new ArrayBuffer(headerLength + dataLength)\n\t\tconst view = new DataView(wavBuffer)\n\n\t\t// RIFF identifier\n\t\tthis.writeString(view, 0, 'RIFF')\n\t\t// File length minus RIFF identifier and file size\n\t\tview.setUint32(4, 36 + dataLength, true)\n\t\t// RIFF type\n\t\tthis.writeString(view, 8, 'WAVE')\n\t\t// Format chunk identifier\n\t\tthis.writeString(view, 12, 'fmt ')\n\t\t// Format chunk length\n\t\tview.setUint32(16, 16, true)\n\t\t// Sample format (PCM)\n\t\tview.setUint16(20, format, true)\n\t\t// Channel count\n\t\tview.setUint16(22, numChannels, true)\n\t\t// Sample rate\n\t\tview.setUint32(24, sampleRate, true)\n\t\t// Byte rate (sample rate * block align)\n\t\tview.setUint32(28, sampleRate * blockAlign, true)\n\t\t// Block align (channel count * bytes per sample)\n\t\tview.setUint16(32, blockAlign, true)\n\t\t// Bits per sample\n\t\tview.setUint16(34, bitDepth, true)\n\t\t// Data chunk identifier\n\t\tthis.writeString(view, 36, 'data')\n\t\t// Data chunk length\n\t\tview.setUint32(40, dataLength, true)\n\n\t\t// Write the audio data\n\t\tif (bitDepth === 16) {\n\t\t\tthis.writeInt16Samples(view, headerLength, samples)\n\t\t} else {\n\t\t\tthrow new Error('Only 16-bit audio is supported')\n\t\t}\n\n\t\treturn new Blob([wavBuffer], { type: 'audio/wav' })\n\t}\n\n\t/**\n\t * Get audio samples from an AudioBuffer\n\t */\n\tprivate getAudioSamples(buffer: AudioBuffer, bitDepth: number): number[] {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst length = buffer.length\n\t\tconst samples: number[] = []\n\t\tconst scale = bitDepth === 16 ? 32768 : 128\n\n\t\t// Get samples from all channels\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst sample = buffer.getChannelData(channel)[i]\n\t\t\t\t// Convert float32 to int16 or int8\n\t\t\t\tconst intSample = Math.max(-1, Math.min(1, sample))\n\t\t\t\tsamples.push(intSample * scale)\n\t\t\t}\n\t\t}\n\n\t\treturn samples\n\t}\n\n\t/**\n\t * Write 16-bit samples to a DataView\n\t */\n\tprivate writeInt16Samples(view: DataView, offset: number, samples: number[]): void {\n\t\tfor (let i = 0; i < samples.length; i++) {\n\t\t\tview.setInt16(offset + i * 2, samples[i], true)\n\t\t}\n\t}\n\n\t/**\n\t * Write a string to a DataView\n\t */\n\tprivate writeString(view: DataView, offset: number, string: string): void {\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tview.setUint8(offset + i, string.charCodeAt(i))\n\t\t}\n\t}\n}\n","import { NotificationType } from './notification'\nimport { NotificationSoundGenerator } from './notification-audio-generator'\n\n/**\n * Audio service for playing notification sounds.\n * Uses Web Audio API with fallback to HTML5 Audio.\n */\nexport class NotificationAudioService {\n\tprivate audioContext: AudioContext | null = null\n\tprivate soundBuffers: Map<NotificationType, AudioBuffer> = new Map()\n\tprivate volume: number = 0.5\n\tprivate muted: boolean = false\n\tprivate soundGenerator = new NotificationSoundGenerator()\n\n\t// Default sound URLs (will be generated programmatically as fallback)\n\tprivate soundUrls: Record<NotificationType, string> = {\n\t\tinfo: '/assets/sounds/notification-info.mp3',\n\t\tsuccess: '/assets/sounds/notification-success.mp3',\n\t\twarning: '/assets/sounds/notification-warning.mp3',\n\t\terror: '/assets/sounds/notification-error.mp3',\n\t}\n\n\tconstructor() {\n\t\t// Initialize audio context when first needed\n\t\tthis.initializeAudioFiles()\n\t}\n\n\t/**\n\t * Initialize audio files - generate programmatically if needed\n\t */\n\tprivate async initializeAudioFiles(): Promise<void> {\n\t\ttry {\n\t\t\t// Try to load from default URLs\n\t\t\tawait this.preloadSounds()\n\t\t} catch (err) {\n\t\t\tconsole.log('Generating programmatic notification sounds')\n\n\t\t\t// If loading fails, generate programmatically\n\t\t\ttry {\n\t\t\t\tconst generatedUrls = await this.soundGenerator.generateAudioFiles(this.volume)\n\t\t\t\tthis.soundUrls = generatedUrls\n\t\t\t} catch (genErr) {\n\t\t\t\tconsole.warn('Failed to generate notification sounds:', genErr)\n\t\t\t\t// Will fall back to direct playback when needed\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Lazy-initialize the audio context\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\t// Use AudioContext with webkit prefix fallback for Safari\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\n\t\treturn this.audioContext\n\t}\n\n\t/**\n\t * Preload all notification sounds\n\t */\n\tprivate async preloadSounds(): Promise<void> {\n\t\tconst types: NotificationType[] = ['info', 'success', 'warning', 'error']\n\n\t\tfor (const type of types) {\n\t\t\ttry {\n\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(`Failed to preload ${type} sound:`, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load a sound file and decode it\n\t */\n\tprivate async loadSound(type: NotificationType): Promise<AudioBuffer> {\n\t\tconst url = this.soundUrls[type]\n\t\tconst response = await fetch(url)\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to load sound from ${url}: ${response.statusText}`)\n\t\t}\n\n\t\tconst arrayBuffer = await response.arrayBuffer()\n\t\treturn await this.getAudioContext().decodeAudioData(arrayBuffer)\n\t}\n\n\t/**\n\t * Play a notification sound\n\t */\n\tpublic async playSound(type: NotificationType): Promise<void> {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\t// Try to use Web Audio API first\n\t\t\tconst context = this.getAudioContext()\n\n\t\t\t// Ensure audio context is resumed (needed due to autoplay policy)\n\t\t\tif (context.state === 'suspended') {\n\t\t\t\tawait context.resume()\n\t\t\t}\n\n\t\t\t// Try to use programmatically generated sound first\n\t\t\tif (this.soundUrls[type].startsWith('blob:')) {\n\t\t\t\tthis.playFallbackSound(type)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Load sound if not already cached\n\t\t\tif (!this.soundBuffers.has(type)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Fall back to direct generator\n\t\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst buffer = this.soundBuffers.get(type)\n\t\t\tif (!buffer) {\n\t\t\t\tthrow new Error(`Sound buffer for ${type} not available`)\n\t\t\t}\n\n\t\t\t// Create source and gain nodes\n\t\t\tconst source = context.createBufferSource()\n\t\t\tsource.buffer = buffer\n\n\t\t\tconst gainNode = context.createGain()\n\t\t\tgainNode.gain.value = this.volume\n\n\t\t\t// Connect and play\n\t\t\tsource.connect(gainNode)\n\t\t\tgainNode.connect(context.destination)\n\t\t\tsource.start(0)\n\t\t} catch (err) {\n\t\t\tconsole.warn(`Web Audio API buffer playback failed, trying direct generation:`, err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Play a directly generated sound when other methods fail\n\t */\n\tprivate playDirectGeneratedSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'info':\n\t\t\t\t\tthis.soundGenerator.playInfoSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'success':\n\t\t\t\t\tthis.soundGenerator.playSuccessSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'warning':\n\t\t\t\t\tthis.soundGenerator.playWarningSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'error':\n\t\t\t\t\tthis.soundGenerator.playErrorSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to play generated sound for ${type}:`, err)\n\t\t}\n\t}\n\n\t/**\n\t * Play sound using HTML5 Audio as a fallback\n\t */\n\tprivate playFallbackSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tconst audio = new Audio(this.soundUrls[type])\n\t\t\taudio.volume = this.volume\n\n\t\t\t// Add event listener to clean up after playback\n\t\t\taudio.addEventListener('ended', () => {\n\t\t\t\taudio.remove()\n\t\t\t})\n\n\t\t\taudio.play().catch(err => {\n\t\t\t\tconsole.error(`Failed to play fallback sound for ${type}:`, err)\n\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error('HTML5 Audio fallback failed:', err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Set volume for notification sounds (0.0 to 1.0)\n\t */\n\tpublic setVolume(volume: number): void {\n\t\tthis.volume = Math.max(0, Math.min(1, volume))\n\t}\n\n\t/**\n\t * Get current volume level\n\t */\n\tpublic getVolume(): number {\n\t\treturn this.volume\n\t}\n\n\t/**\n\t * Mute notification sounds\n\t */\n\tpublic mute(): void {\n\t\tthis.muted = true\n\t}\n\n\t/**\n\t * Unmute notification sounds\n\t */\n\tpublic unmute(): void {\n\t\tthis.muted = false\n\t}\n\n\t/**\n\t * Check if notification sounds are muted\n\t */\n\tpublic isMuted(): boolean {\n\t\treturn this.muted\n\t}\n\n\t/**\n\t * Set custom sound URL for a notification type\n\t */\n\tpublic setSoundUrl(type: NotificationType, url: string): void {\n\t\tthis.soundUrls[type] = url\n\n\t\t// Clear cached buffer to force reload\n\t\tthis.soundBuffers.delete(type)\n\t}\n\n\t/**\n\t * Get the current sound URL for a notification type\n\t */\n\tpublic getSoundUrl(type: NotificationType): string {\n\t\treturn this.soundUrls[type]\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { fromEvent, takeUntil } from 'rxjs'\nimport { NotificationType } from './notification'\nimport { NotificationAudioService } from './notification-audio'\nimport style from './notification-container.scss?inline'\n\nexport interface NotificationItem {\n\tid: string\n\ttitle: string\n\tmessage: string\n\ttype: NotificationType\n\tduration: number\n\tclosable: boolean\n\tplaySound: boolean\n}\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}\n\n/**\n * Container component for displaying stacked notifications.\n *\n * @element sch-notification-container\n */\n@customElement('sch-notification-container')\nexport default class SchmancyNotificationContainer extends $LitElement(style) {\n\t@property({ type: String }) position:\n\t\t| 'top-right'\n\t\t| 'top-left'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'top-center'\n\t\t| 'bottom-center' = 'top-right'\n\t@property({ type: Number }) maxVisibleNotifications = 2\n\t@property({ type: Boolean }) playSound = false\n\t@property({ type: Number }) audioVolume = 0.1\n\n\t@state() private _notifications: NotificationItem[] = []\n\n\t// Audio service\n\tprivate _audioService = new NotificationAudioService()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set audio volume\n\t\tthis._audioService.setVolume(this.audioVolume)\n\n\t\t// Listen for notification events\n\t\tfromEvent<CustomEvent<NotificationOptions>>(window, 'schmancy-notification')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.addNotification(event.detail)\n\t\t\t})\n\n\t\t// Listen for play sound events from child notifications\n\t\tthis.addEventListener('playsound', ((event: CustomEvent) => {\n\t\t\tif (this.playSound) {\n\t\t\t\tthis._audioService.playSound(event.detail.type)\n\t\t\t}\n\t\t}) as EventListener)\n\t}\n\n\t// Public API to add notifications\n\tpublic addNotification(options: NotificationOptions): string {\n\t\tconst id = options.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\tconst notification: NotificationItem = {\n\t\t\tid,\n\t\t\ttitle: options.title || '',\n\t\t\tmessage: options.message,\n\t\t\ttype: options.type || 'info',\n\t\t\tduration: options.duration !== undefined ? options.duration : 750,\n\t\t\tclosable: options.closable !== undefined ? options.closable : true,\n\t\t\tplaySound: options.playSound !== undefined ? options.playSound : this.playSound,\n\t\t}\n\n\t\t// Add new notification (top for top-* positions, bottom for bottom-* positions)\n\t\tif (this.position.startsWith('top')) {\n\t\t\tthis._notifications = [...this._notifications, notification]\n\t\t} else {\n\t\t\tthis._notifications = [notification, ...this._notifications]\n\t\t}\n\n\t\t// Enforce max visible notifications\n\t\tif (this._notifications.length > this.maxVisibleNotifications) {\n\t\t\tthis._notifications = this._notifications.slice(-this.maxVisibleNotifications)\n\t\t}\n\n\t\t// Play sound if enabled\n\t\tif (notification.playSound) {\n\t\t\tthis._audioService.playSound(notification.type)\n\t\t}\n\n\t\treturn id\n\t}\n\n\tpublic removeNotification(id: string) {\n\t\tthis._notifications = this._notifications.filter(n => n.id !== id)\n\t}\n\n\tprivate _handleClose(e: CustomEvent) {\n\t\tconst id = e.detail.id\n\t\tthis.removeNotification(id)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\t'notification-container': true,\n\t\t\t\t\t[this.position]: true,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t${repeat(\n\t\t\t\t\tthis._notifications,\n\t\t\t\t\tnotification => notification.id,\n\t\t\t\t\tnotification => html`\n <sch-notification\n .id=${notification.id}\n .title=${notification.title}\n .message=${notification.message}\n .type=${notification.type}\n .duration=${notification.duration}\n ?closable=${notification.closable}\n ?playSound=${false} /* We already played the sound on add */\n @close=${this._handleClose}\n ></sch-notification>\n `,\n\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-container': SchmancyNotificationContainer\n\t}\n}\n","import { NotificationOptions } from './notification-container'\n\n/**\n * Notification service for centralized notification management.\n * Provides a simple API for showing notifications.\n */\nexport class NotificationService {\n\tprivate static instance: NotificationService\n\n\t// Default notification options\n\tprivate static DEFAULT_OPTIONS: Partial<NotificationOptions> = {\n\t\tduration: 1000, // 1 seconds - long enough to be readable\n\t\tclosable: true,\n\t\tplaySound: true,\n\t}\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): NotificationService {\n\t\tif (!NotificationService.instance) {\n\t\t\tNotificationService.instance = new NotificationService()\n\t\t}\n\t\treturn NotificationService.instance\n\t}\n\n\t/**\n\t * Show a notification\n\t * @returns The ID of the created notification\n\t */\n\tpublic notify(options: NotificationOptions): string {\n\t\t// Apply default options\n\t\tconst completeOptions = {\n\t\t\t...NotificationService.DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t// Override with duraton from options if provided, otherwise use default\n\t\t\tduration: options.duration ?? NotificationService.DEFAULT_OPTIONS.duration,\n\t\t}\n\n\t\tconst id = completeOptions.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\t// Create and dispatch event\n\t\tconst event = new CustomEvent('schmancy-notification', {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tdetail: {\n\t\t\t\t...completeOptions,\n\t\t\t\tid,\n\t\t\t},\n\t\t})\n\n\t\twindow.dispatchEvent(event)\n\t\treturn id\n\t}\n\n\t/**\n\t * Show an info notification\n\t */\n\tpublic info(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a success notification\n\t */\n\tpublic success(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a warning notification\n\t */\n\tpublic warning(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show an error notification\n\t */\n\tpublic error(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a notification with a custom duration\n\t */\n\tpublic customDuration(\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a persistent notification (won't auto-dismiss)\n\t */\n\tpublic persistent(message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration: 0, // Zero duration means no auto-close\n\t\t\t...options,\n\t\t})\n\t}\n}\n\n/**\n * Global notification utility - provides a quick way to show notifications\n */\nexport const $notify = {\n\t/**\n\t * Show a notification\n\t */\n\tshow: (options: NotificationOptions): string => {\n\t\treturn NotificationService.getInstance().notify(options)\n\t},\n\n\t/**\n\t * Show an info notification\n\t */\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().info(message, options)\n\t},\n\n\t/**\n\t * Show a success notification\n\t */\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().success(message, options)\n\t},\n\n\t/**\n\t * Show a warning notification\n\t */\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().warning(message, options)\n\t},\n\n\t/**\n\t * Show an error notification\n\t */\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().error(message, options)\n\t},\n\n\t/**\n\t * Show a notification with a custom duration\n\t * @param message The notification message\n\t * @param duration Duration in milliseconds before auto-dismissing (0 for no auto-dismiss)\n\t * @param options Additional notification options\n\t */\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => {\n\t\treturn NotificationService.getInstance().customDuration(message, duration, options)\n\t},\n\n\t/**\n\t * Show a persistent notification that won't auto-dismiss\n\t */\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string => {\n\t\treturn NotificationService.getInstance().persistent(message, options)\n\t},\n}\n\nexport default NotificationService\n"],"names":["SchmancyNotification","$LitElement","constructor","super","arguments","this","title","message","type","closable","duration","id","Date","now","Math","floor","random","playSound","_visible","_progress","_hovered","_closing","connectedCallback","_startAutoCloseTimer","_playSound","disconnectedCallback","_clearTimers","changedProps","updated","has","endTime","_autoCloseTimer","window","setTimeout","close","_progressTimer","setInterval","remaining","max","clearTimeout","clearInterval","_pauseTimers","_resumeTimers","remainingTime","dispatchEvent","CustomEvent","detail","bubbles","composed","_handleMouseLeave","html","typeStyles","_getTypeStyles","elevationLevel","classMap","notification","closing","styleMap","transform","opacity","boxShadow","transition","_handleMouseEnter","color","iconColor","bgColor","icon","SchmancyTheme","sys","primary","default","surface","on","success","tertiary","error","onVariant","progressColor","container","__decorateClass","property","String","prototype","Boolean","Number","state","customElement","NotificationSoundGenerator","audioContext","getAudioContext","AudioContextClass","AudioContext","webkitAudioContext","volume","ctx","currentTime","oscillator","createOscillator","gainNode","createGain","filter","createBiquadFilter","frequency","setValueAtTime","exponentialRampToValueAtTime","value","gain","connect","destination","start","stop","createBell","freq","osc","osc1","osc2","Q","audioUrls","info","generateAudioFile","async","linearRampToValueAtTime","sampleRate","gain1","gain2","warning","renderFunction","offlineCtx","OfflineAudioContext","audioBuffer","startRendering","wavBlob","audioBufferToWav","URL","createObjectURL","buffer","numChannels","numberOfChannels","blockAlign","bitDepth","samples","getAudioSamples","dataLength","length","wavBuffer","ArrayBuffer","view","DataView","writeString","setUint32","setUint16","writeInt16Samples","Blob","scale","i","channel","sample","getChannelData","intSample","min","push","offset","setInt16","string","setUint8","charCodeAt","NotificationAudioService","soundBuffers","Map","muted","soundGenerator","soundUrls","initializeAudioFiles","preloadSounds","err","generatedUrls","generateAudioFiles","genErr","types","loadSound","set","url","response","fetch","ok","Error","statusText","arrayBuffer","decodeAudioData","context","resume","startsWith","playFallbackSound","playDirectGeneratedSound","get","source","createBufferSource","playInfoSound","playSuccessSound","playWarningSound","playErrorSound","audio","Audio","addEventListener","remove","play","catch","getVolume","unmute","isMuted","delete","SchmancyNotificationContainer","position","maxVisibleNotifications","audioVolume","_notifications","_audioService","setVolume","fromEvent","pipe","takeUntil","disconnecting","subscribe","event","addNotification","options","slice","n","e","removeNotification","render","repeat","_handleClose","NotificationService","getInstance","instance","completeOptions","DEFAULT_OPTIONS","notify","_x","$notify","show","customDuration","persistent"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"notification-service-L_h9_d4v.js","sources":["../src/notification/notification.ts","../src/notification/notification-audio-generator.ts","../src/notification/notification-audio.ts","../src/notification/notification-container.ts","../src/notification/notification-service.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\nimport { html, PropertyValues } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { styleMap } from 'lit/directives/style-map.js'\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 $LitElement(style) {\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 // 0 means no auto-close\n\t@property({ type: String }) id = `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\t@property({ type: Boolean }) playSound = true\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\t@state() private _autoCloseTimer?: number\n\t@state() private _progressTimer?: number\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\tif (this.duration > 0) {\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\n\t\tif (this.playSound) {\n\t\t\tthis._playSound()\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis._clearTimers()\n\t\tsuper.disconnectedCallback()\n\t}\n\n\tupdated(changedProps: PropertyValues) {\n\t\tsuper.updated(changedProps)\n\n\t\tif (changedProps.has('duration') && this.duration > 0) {\n\t\t\tthis._clearTimers()\n\t\t\tthis._startAutoCloseTimer()\n\t\t}\n\t}\n\n\tprivate _startAutoCloseTimer() {\n\t\tif (this.duration <= 0) return\n\n\t\tconst startTime = Date.now()\n\t\tconst endTime = startTime + this.duration\n\n\t\t// Setup the auto-close timer\n\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\tthis.close()\n\t\t}, this.duration)\n\n\t\t// Setup the progress timer to update every 16ms (60fps)\n\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\tif (this._hovered) return\n\n\t\t\tconst now = Date.now()\n\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\tthis._progress = (remaining / this.duration) * 100\n\n\t\t\tif (remaining <= 0) {\n\t\t\t\tthis._clearTimers()\n\t\t\t}\n\t\t}, 16)\n\t}\n\n\tprivate _clearTimers() {\n\t\tif (this._autoCloseTimer) {\n\t\t\tclearTimeout(this._autoCloseTimer)\n\t\t\tthis._autoCloseTimer = undefined\n\t\t}\n\n\t\tif (this._progressTimer) {\n\t\t\tclearInterval(this._progressTimer)\n\t\t\tthis._progressTimer = undefined\n\t\t}\n\t}\n\n\tprivate _pauseTimers() {\n\t\tthis._clearTimers()\n\t}\n\n\tprivate _resumeTimers() {\n\t\tif (this.duration > 0) {\n\t\t\t// Calculate remaining time based on progress\n\t\t\tconst remainingTime = (this._progress / 100) * this.duration\n\n\t\t\tif (remainingTime > 0) {\n\t\t\t\tthis._autoCloseTimer = window.setTimeout(() => {\n\t\t\t\t\tthis.close()\n\t\t\t\t}, remainingTime)\n\n\t\t\t\tconst startTime = Date.now()\n\t\t\t\tconst endTime = startTime + remainingTime\n\n\t\t\t\tthis._progressTimer = window.setInterval(() => {\n\t\t\t\t\tif (this._hovered) return\n\n\t\t\t\t\tconst now = Date.now()\n\t\t\t\t\tconst remaining = Math.max(0, endTime - now)\n\t\t\t\t\tthis._progress = (remaining / remainingTime) * 100\n\n\t\t\t\t\tif (remaining <= 0) {\n\t\t\t\t\t\tthis._clearTimers()\n\t\t\t\t\t}\n\t\t\t\t}, 16)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _playSound() {\n\t\t// Dispatch event to play sound through audio service\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._pauseTimers()\n\t}\n\n\tprivate _handleMouseLeave() {\n\t\tthis._hovered = false\n\t\tthis._resumeTimers()\n\t}\n\n\tpublic close() {\n\t\tif (this._closing) return\n\n\t\tthis._closing = true\n\t\tthis._clearTimers()\n\n\t\t// Add closing animation\n\t\tthis._visible = false\n\n\t\t// Dispatch close event\n\t\tsetTimeout(() => {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('close', {\n\t\t\t\t\tdetail: { id: this.id },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}, 300) // Match animation duration\n\t}\n\n\trender() {\n\t\tif (!this._visible && this._closing) return html``\n\n\t\tconst typeStyles = this._getTypeStyles()\n\n\t\t// Calculate elevation based on hover state\n\t\tconst elevationLevel = this._hovered ? '3' : '2'\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\tnotification: true,\n\t\t\t\t\tclosing: this._closing,\n\t\t\t\t\t[this.type]: true,\n\t\t\t\t})}\n\t\t\t\trole=\"alert\"\n\t\t\t\tstyle=${styleMap({\n\t\t\t\t\ttransform: this._closing ? 'translateX(120%)' : 'translateX(0)',\n\t\t\t\t\topacity: this._closing ? '0' : '1',\n\t\t\t\t\tboxShadow: `var(--schmancy-sys-elevation-${elevationLevel})`,\n\t\t\t\t\ttransition:\n\t\t\t\t\t\t'transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), opacity 0.3s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease',\n\t\t\t\t})}\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<div class=\"notification-content\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"icon-container\"\n\t\t\t\t\t\t${color({\n\t\t\t\t\t\t\tcolor: typeStyles.iconColor,\n\t\t\t\t\t\t\tbgColor: `color-mix(in srgb, ${typeStyles.iconColor} 10%, transparent)`,\n\t\t\t\t\t\t})}\n\t\t\t\t\t>\n\t\t\t\t\t\t${typeStyles.icon}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"content\">\n\t\t\t\t\t\t${this.title\n\t\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclass=\"title\"\n\t\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'success'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t: this.type === 'warning'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 90%, ${SchmancyTheme.sys.color.surface.on} 10%)`,\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t${this.title}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t`\n\t\t\t\t\t\t\t: ''}\n\n\t\t\t\t\t\t<div class=\"message\">${this.message}</div>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t${this.closable\n\t\t\t\t\t\t? html`\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tclass=\"close-button\"\n\t\t\t\t\t\t\t\t\taria-label=\"Close notification\"\n\t\t\t\t\t\t\t\t\t@click=${this.close}\n\t\t\t\t\t\t\t\t\tstyle=${styleMap({\n\t\t\t\t\t\t\t\t\t\tcolor:\n\t\t\t\t\t\t\t\t\t\t\tthis.type === 'info'\n\t\t\t\t\t\t\t\t\t\t\t\t? SchmancyTheme.sys.color.surface.onVariant\n\t\t\t\t\t\t\t\t\t\t\t\t: `color-mix(in srgb, ${typeStyles.iconColor} 80%, ${SchmancyTheme.sys.color.surface.onVariant} 20%)`,\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\twidth=\"18\"\n\t\t\t\t\t\t\t\t\t\theight=\"18\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t\t<line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t`\n\t\t\t\t\t\t: ''}\n\t\t\t\t</div>\n\n\t\t\t\t${this.duration > 0\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"progress-bar-container\">\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"progress-bar\"\n\t\t\t\t\t\t\t\t\tstyle=\"width: ${this._progress}%\"\n\t\t\t\t\t\t\t\t\t${color({ color: typeStyles.progressColor })}\n\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t</div>\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\tprivate _getTypeStyles() {\n\t\tswitch (this.type) {\n\t\t\tcase 'success':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"></path>\n\t\t\t\t\t\t\t<polyline points=\"22 4 12 14.01 9 11.01\"></polyline>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.success.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.success.default} 95%, ${SchmancyTheme.sys.color.success.container} 5%)`,\n\t\t\t\t}\n\t\t\tcase 'warning':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"></path>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.tertiary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.tertiary.default} 90%, ${SchmancyTheme.sys.color.tertiary.container} 10%)`,\n\t\t\t\t}\n\t\t\tcase 'error':\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"></line>\n\t\t\t\t\t\t\t<line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.error.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.error.default} 92%, ${SchmancyTheme.sys.color.error.container} 8%)`,\n\t\t\t\t}\n\t\t\tcase 'info':\n\t\t\tdefault:\n\t\t\t\treturn {\n\t\t\t\t\ticon: html`\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\twidth=\"20\"\n\t\t\t\t\t\t\theight=\"20\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"10\"></circle>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"></line>\n\t\t\t\t\t\t\t<line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"></line>\n\t\t\t\t\t\t</svg>\n\t\t\t\t\t`,\n\t\t\t\t\ticonColor: SchmancyTheme.sys.color.primary.default,\n\t\t\t\t\tprogressColor: `color-mix(in srgb, ${SchmancyTheme.sys.color.primary.default} 94%, ${SchmancyTheme.sys.color.primary.container} 6%)`,\n\t\t\t\t}\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'sch-notification': SchmancyNotification\n\t}\n}\n","/**\n * Programmatic sound generator for Schmancy notifications\n * Uses Web Audio API to generate gentle, subtle and soft sounds for each notification type\n */\nexport class NotificationSoundGenerator {\n\tprivate audioContext: AudioContext | null = null\n\n\t/**\n\t * Get or create AudioContext\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\t\treturn this.audioContext\n\t}\n\n\tpublic playInfoSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst oscillator = ctx.createOscillator()\n\t\tconst gainNode = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\toscillator.type = 'sine'\n\t\toscillator.frequency.setValueAtTime(392, now) // G4\n\t\toscillator.frequency.exponentialRampToValueAtTime(523.25, now + 0.25) // C5\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1500\n\n\t\tgainNode.gain.setValueAtTime(0.0001, now)\n\t\tgainNode.gain.exponentialRampToValueAtTime(volume, now + 0.15)\n\t\tgainNode.gain.exponentialRampToValueAtTime(0.0001, now + 0.4)\n\n\t\toscillator.connect(filter).connect(gainNode).connect(ctx.destination)\n\t\toscillator.start(now)\n\t\toscillator.stop(now + 0.45)\n\t}\n\n\tpublic playSuccessSound(volume = 0.2): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst createBell = (freq: number, start: number, duration: number) => {\n\t\t\tconst osc = ctx.createOscillator()\n\t\t\tconst gain = ctx.createGain()\n\t\t\tconst filter = ctx.createBiquadFilter()\n\n\t\t\tosc.type = 'sine'\n\t\t\tosc.frequency.setValueAtTime(freq, now)\n\t\t\tfilter.type = 'lowpass'\n\t\t\tfilter.frequency.value = freq * 4\n\n\t\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.1)\n\t\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + duration)\n\n\t\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\t\tosc.start(now + start)\n\t\t\tosc.stop(now + duration)\n\t\t}\n\n\t\tcreateBell(659.25, 0, 0.6) // E5\n\t\tcreateBell(523.25, 0.05, 0.55) // C5\n\t}\n\n\tpublic playWarningSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc1 = ctx.createOscillator()\n\t\tconst osc2 = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc1.type = 'sine'\n\t\tosc2.type = 'sine'\n\t\tosc1.frequency.setValueAtTime(349.23, now) // F4\n\t\tosc2.frequency.setValueAtTime(440, now) // A4\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 1000\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume, now + 0.08)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.5)\n\n\t\tosc1.connect(filter)\n\t\tosc2.connect(filter)\n\t\tfilter.connect(gain).connect(ctx.destination)\n\n\t\tosc1.start(now)\n\t\tosc2.start(now)\n\t\tosc1.stop(now + 0.55)\n\t\tosc2.stop(now + 0.55)\n\t}\n\n\tpublic playErrorSound(volume = 0.25): void {\n\t\tconst ctx = this.getAudioContext()\n\t\tconst now = ctx.currentTime\n\n\t\tconst osc = ctx.createOscillator()\n\t\tconst gain = ctx.createGain()\n\t\tconst filter = ctx.createBiquadFilter()\n\n\t\tosc.type = 'triangle'\n\t\tosc.frequency.setValueAtTime(220, now) // A3\n\t\tosc.frequency.exponentialRampToValueAtTime(1760, now + 0.3) // A6\n\n\t\tfilter.type = 'lowpass'\n\t\tfilter.frequency.value = 800\n\t\tfilter.Q.value = 0.5\n\n\t\tgain.gain.setValueAtTime(0.0001, now)\n\t\tgain.gain.exponentialRampToValueAtTime(volume * 0.8, now + 0.1)\n\t\tgain.gain.exponentialRampToValueAtTime(0.0001, now + 0.7)\n\n\t\tosc.connect(filter).connect(gain).connect(ctx.destination)\n\t\tosc.start(now)\n\t\tosc.stop(now + 0.75)\n\t}\n\n\t/**\n\t * Generate audio blob files for all notification sounds\n\t * Returns a Promise that resolves with URLs to the generated audio files\n\t */\n\tpublic async generateAudioFiles(volume = 0.25): Promise<Record<string, string>> {\n\t\t// Create offline audio context for rendering\n\t\tconst sampleRate = 44100\n\t\tconst duration = 1 // 1 second duration to capture the full sound\n\n\t\tconst audioUrls: Record<string, string> = {}\n\n\t\t// Generate info sound\n\t\taudioUrls.info = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillator for main tone\n\t\t\t\tconst oscillator = ctx.createOscillator()\n\t\t\t\toscillator.type = 'sine'\n\t\t\t\toscillator.frequency.setValueAtTime(320, 0)\n\t\t\t\toscillator.frequency.exponentialRampToValueAtTime(520, 0.3)\n\n\t\t\t\t// Create gain node for volume control with softer attack/release\n\t\t\t\tconst gainNode = ctx.createGain()\n\t\t\t\tgainNode.gain.setValueAtTime(0, 0)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgainNode.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\t// Connect and play\n\t\t\t\toscillator.connect(gainNode)\n\t\t\t\tgainNode.connect(ctx.destination)\n\t\t\t\toscillator.start()\n\t\t\t\toscillator.stop(0.5)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate success sound\n\t\taudioUrls.success = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator (higher note)\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(660, 0)\n\n\t\t\t\t// Create secondary oscillator (lower note)\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(440, 0)\n\n\t\t\t\t// Create gain nodes with softer envelope\n\t\t\t\tconst gain1 = ctx.createGain()\n\t\t\t\tgain1.gain.setValueAtTime(0, 0)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain1.gain.linearRampToValueAtTime(0, 0.5)\n\n\t\t\t\tconst gain2 = ctx.createGain()\n\t\t\t\tgain2.gain.setValueAtTime(0, 0)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(volume * 0.6, 0.15)\n\t\t\t\tgain2.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain1)\n\t\t\t\tgain1.connect(ctx.destination)\n\n\t\t\t\tosc2.connect(gain2)\n\t\t\t\tgain2.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start(0.15)\n\n\t\t\t\tosc1.stop(0.5)\n\t\t\t\tosc2.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate warning sound\n\t\taudioUrls.warning = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create oscillators for a two-tone warning\n\t\t\t\tconst osc1 = ctx.createOscillator()\n\t\t\t\tosc1.type = 'sine'\n\t\t\t\tosc1.frequency.setValueAtTime(293.66, 0)\n\n\t\t\t\tconst osc2 = ctx.createOscillator()\n\t\t\t\tosc2.type = 'sine'\n\t\t\t\tosc2.frequency.setValueAtTime(349.23, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.8, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.6)\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc1.connect(gain)\n\t\t\t\tosc2.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc1.start()\n\t\t\t\tosc2.start()\n\n\t\t\t\tosc1.stop(0.6)\n\t\t\t\tosc2.stop(0.6)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\t// Generate error sound\n\t\taudioUrls.error = await this.generateAudioFile(\n\t\t\tasync ctx => {\n\t\t\t\t// Create main oscillator\n\t\t\t\tconst osc = ctx.createOscillator()\n\t\t\t\tosc.type = 'sine'\n\t\t\t\tosc.frequency.setValueAtTime(196, 0)\n\n\t\t\t\t// Create gain node with softer envelope\n\t\t\t\tconst gain = ctx.createGain()\n\t\t\t\tgain.gain.setValueAtTime(0, 0)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume, 0.1)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.4, 0.2)\n\t\t\t\tgain.gain.linearRampToValueAtTime(volume * 0.6, 0.3)\n\t\t\t\tgain.gain.linearRampToValueAtTime(0, 0.7)\n\n\t\t\t\t// Additional filter to make it even softer\n\t\t\t\tconst filter = ctx.createBiquadFilter()\n\t\t\t\tfilter.type = 'lowpass'\n\t\t\t\tfilter.frequency.value = 600\n\t\t\t\tfilter.Q.value = 0.7\n\n\t\t\t\t// Connect and play\n\t\t\t\tosc.connect(filter)\n\t\t\t\tfilter.connect(gain)\n\t\t\t\tgain.connect(ctx.destination)\n\n\t\t\t\tosc.start()\n\t\t\t\tosc.stop(0.7)\n\t\t\t},\n\t\t\tsampleRate,\n\t\t\tduration,\n\t\t)\n\n\t\treturn audioUrls\n\t}\n\n\t/**\n\t * Generate an audio file from a sound generation function\n\t * @param renderFunction Function that creates the sound in the provided context\n\t * @param sampleRate Sample rate for the audio\n\t * @param duration Duration in seconds\n\t * @returns Promise that resolves with the URL to the generated audio file\n\t */\n\tprivate async generateAudioFile(\n\t\trenderFunction: (ctx: OfflineAudioContext) => Promise<void>,\n\t\tsampleRate = 44100,\n\t\tduration = 1,\n\t): Promise<string> {\n\t\t// Create offline context\n\t\tconst offlineCtx = new OfflineAudioContext(2, sampleRate * duration, sampleRate)\n\n\t\t// Render the sound\n\t\tawait renderFunction(offlineCtx)\n\n\t\t// Render the audio\n\t\tconst audioBuffer = await offlineCtx.startRendering()\n\n\t\t// Convert to WAV format\n\t\tconst wavBlob = this.audioBufferToWav(audioBuffer)\n\n\t\t// Create URL\n\t\treturn URL.createObjectURL(wavBlob)\n\t}\n\n\t/**\n\t * Convert AudioBuffer to WAV format\n\t * Based on https://github.com/Jam3/audiobuffer-to-wav\n\t */\n\tprivate audioBufferToWav(buffer: AudioBuffer): Blob {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst sampleRate = buffer.sampleRate\n\t\tconst format = 1 // PCM\n\t\tconst bitDepth = 16\n\n\t\tconst bytesPerSample = bitDepth / 8\n\t\tconst blockAlign = numChannels * bytesPerSample\n\n\t\tconst samples = this.getAudioSamples(buffer, bitDepth)\n\t\tconst dataLength = samples.length * bytesPerSample\n\n\t\t// Create WAV header\n\t\tconst headerLength = 44\n\t\tconst wavBuffer = new ArrayBuffer(headerLength + dataLength)\n\t\tconst view = new DataView(wavBuffer)\n\n\t\t// RIFF identifier\n\t\tthis.writeString(view, 0, 'RIFF')\n\t\t// File length minus RIFF identifier and file size\n\t\tview.setUint32(4, 36 + dataLength, true)\n\t\t// RIFF type\n\t\tthis.writeString(view, 8, 'WAVE')\n\t\t// Format chunk identifier\n\t\tthis.writeString(view, 12, 'fmt ')\n\t\t// Format chunk length\n\t\tview.setUint32(16, 16, true)\n\t\t// Sample format (PCM)\n\t\tview.setUint16(20, format, true)\n\t\t// Channel count\n\t\tview.setUint16(22, numChannels, true)\n\t\t// Sample rate\n\t\tview.setUint32(24, sampleRate, true)\n\t\t// Byte rate (sample rate * block align)\n\t\tview.setUint32(28, sampleRate * blockAlign, true)\n\t\t// Block align (channel count * bytes per sample)\n\t\tview.setUint16(32, blockAlign, true)\n\t\t// Bits per sample\n\t\tview.setUint16(34, bitDepth, true)\n\t\t// Data chunk identifier\n\t\tthis.writeString(view, 36, 'data')\n\t\t// Data chunk length\n\t\tview.setUint32(40, dataLength, true)\n\n\t\t// Write the audio data\n\t\tif (bitDepth === 16) {\n\t\t\tthis.writeInt16Samples(view, headerLength, samples)\n\t\t} else {\n\t\t\tthrow new Error('Only 16-bit audio is supported')\n\t\t}\n\n\t\treturn new Blob([wavBuffer], { type: 'audio/wav' })\n\t}\n\n\t/**\n\t * Get audio samples from an AudioBuffer\n\t */\n\tprivate getAudioSamples(buffer: AudioBuffer, bitDepth: number): number[] {\n\t\tconst numChannels = buffer.numberOfChannels\n\t\tconst length = buffer.length\n\t\tconst samples: number[] = []\n\t\tconst scale = bitDepth === 16 ? 32768 : 128\n\n\t\t// Get samples from all channels\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tfor (let channel = 0; channel < numChannels; channel++) {\n\t\t\t\tconst sample = buffer.getChannelData(channel)[i]\n\t\t\t\t// Convert float32 to int16 or int8\n\t\t\t\tconst intSample = Math.max(-1, Math.min(1, sample))\n\t\t\t\tsamples.push(intSample * scale)\n\t\t\t}\n\t\t}\n\n\t\treturn samples\n\t}\n\n\t/**\n\t * Write 16-bit samples to a DataView\n\t */\n\tprivate writeInt16Samples(view: DataView, offset: number, samples: number[]): void {\n\t\tfor (let i = 0; i < samples.length; i++) {\n\t\t\tview.setInt16(offset + i * 2, samples[i], true)\n\t\t}\n\t}\n\n\t/**\n\t * Write a string to a DataView\n\t */\n\tprivate writeString(view: DataView, offset: number, string: string): void {\n\t\tfor (let i = 0; i < string.length; i++) {\n\t\t\tview.setUint8(offset + i, string.charCodeAt(i))\n\t\t}\n\t}\n}\n","import { NotificationType } from './notification'\nimport { NotificationSoundGenerator } from './notification-audio-generator'\n\n/**\n * Audio service for playing notification sounds.\n * Uses Web Audio API with fallback to HTML5 Audio.\n */\nexport class NotificationAudioService {\n\tprivate audioContext: AudioContext | null = null\n\tprivate soundBuffers: Map<NotificationType, AudioBuffer> = new Map()\n\tprivate volume: number = 0.5\n\tprivate muted: boolean = false\n\tprivate soundGenerator = new NotificationSoundGenerator()\n\n\t// Default sound URLs (will be generated programmatically as fallback)\n\tprivate soundUrls: Record<NotificationType, string> = {\n\t\tinfo: '/assets/sounds/notification-info.mp3',\n\t\tsuccess: '/assets/sounds/notification-success.mp3',\n\t\twarning: '/assets/sounds/notification-warning.mp3',\n\t\terror: '/assets/sounds/notification-error.mp3',\n\t}\n\n\tconstructor() {\n\t\t// Initialize audio context when first needed\n\t\tthis.initializeAudioFiles()\n\t}\n\n\t/**\n\t * Initialize audio files - generate programmatically if needed\n\t */\n\tprivate async initializeAudioFiles(): Promise<void> {\n\t\ttry {\n\t\t\t// Try to load from default URLs\n\t\t\tawait this.preloadSounds()\n\t\t} catch (err) {\n\t\t\tconsole.log('Generating programmatic notification sounds')\n\n\t\t\t// If loading fails, generate programmatically\n\t\t\ttry {\n\t\t\t\tconst generatedUrls = await this.soundGenerator.generateAudioFiles(this.volume)\n\t\t\t\tthis.soundUrls = generatedUrls\n\t\t\t} catch (genErr) {\n\t\t\t\tconsole.warn('Failed to generate notification sounds:', genErr)\n\t\t\t\t// Will fall back to direct playback when needed\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Lazy-initialize the audio context\n\t */\n\tprivate getAudioContext(): AudioContext {\n\t\tif (!this.audioContext) {\n\t\t\t// Use AudioContext with webkit prefix fallback for Safari\n\t\t\tconst AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n\t\t\tthis.audioContext = new AudioContextClass()\n\t\t}\n\n\t\treturn this.audioContext\n\t}\n\n\t/**\n\t * Preload all notification sounds\n\t */\n\tprivate async preloadSounds(): Promise<void> {\n\t\tconst types: NotificationType[] = ['info', 'success', 'warning', 'error']\n\n\t\tfor (const type of types) {\n\t\t\ttry {\n\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t} catch (err) {\n\t\t\t\tconsole.warn(`Failed to preload ${type} sound:`, err)\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Load a sound file and decode it\n\t */\n\tprivate async loadSound(type: NotificationType): Promise<AudioBuffer> {\n\t\tconst url = this.soundUrls[type]\n\t\tconst response = await fetch(url)\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to load sound from ${url}: ${response.statusText}`)\n\t\t}\n\n\t\tconst arrayBuffer = await response.arrayBuffer()\n\t\treturn await this.getAudioContext().decodeAudioData(arrayBuffer)\n\t}\n\n\t/**\n\t * Play a notification sound\n\t */\n\tpublic async playSound(type: NotificationType): Promise<void> {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\t// Try to use Web Audio API first\n\t\t\tconst context = this.getAudioContext()\n\n\t\t\t// Ensure audio context is resumed (needed due to autoplay policy)\n\t\t\tif (context.state === 'suspended') {\n\t\t\t\tawait context.resume()\n\t\t\t}\n\n\t\t\t// Try to use programmatically generated sound first\n\t\t\tif (this.soundUrls[type].startsWith('blob:')) {\n\t\t\t\tthis.playFallbackSound(type)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Load sound if not already cached\n\t\t\tif (!this.soundBuffers.has(type)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst buffer = await this.loadSound(type)\n\t\t\t\t\tthis.soundBuffers.set(type, buffer)\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Fall back to direct generator\n\t\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst buffer = this.soundBuffers.get(type)\n\t\t\tif (!buffer) {\n\t\t\t\tthrow new Error(`Sound buffer for ${type} not available`)\n\t\t\t}\n\n\t\t\t// Create source and gain nodes\n\t\t\tconst source = context.createBufferSource()\n\t\t\tsource.buffer = buffer\n\n\t\t\tconst gainNode = context.createGain()\n\t\t\tgainNode.gain.value = this.volume\n\n\t\t\t// Connect and play\n\t\t\tsource.connect(gainNode)\n\t\t\tgainNode.connect(context.destination)\n\t\t\tsource.start(0)\n\t\t} catch (err) {\n\t\t\tconsole.warn(`Web Audio API buffer playback failed, trying direct generation:`, err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Play a directly generated sound when other methods fail\n\t */\n\tprivate playDirectGeneratedSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tswitch (type) {\n\t\t\t\tcase 'info':\n\t\t\t\t\tthis.soundGenerator.playInfoSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'success':\n\t\t\t\t\tthis.soundGenerator.playSuccessSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'warning':\n\t\t\t\t\tthis.soundGenerator.playWarningSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t\tcase 'error':\n\t\t\t\t\tthis.soundGenerator.playErrorSound(this.volume)\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tconsole.error(`Failed to play generated sound for ${type}:`, err)\n\t\t}\n\t}\n\n\t/**\n\t * Play sound using HTML5 Audio as a fallback\n\t */\n\tprivate playFallbackSound(type: NotificationType): void {\n\t\tif (this.muted) return\n\n\t\ttry {\n\t\t\tconst audio = new Audio(this.soundUrls[type])\n\t\t\taudio.volume = this.volume\n\n\t\t\t// Add event listener to clean up after playback\n\t\t\taudio.addEventListener('ended', () => {\n\t\t\t\taudio.remove()\n\t\t\t})\n\n\t\t\taudio.play().catch(err => {\n\t\t\t\tconsole.error(`Failed to play fallback sound for ${type}:`, err)\n\t\t\t\tthis.playDirectGeneratedSound(type)\n\t\t\t})\n\t\t} catch (err) {\n\t\t\tconsole.error('HTML5 Audio fallback failed:', err)\n\t\t\tthis.playDirectGeneratedSound(type)\n\t\t}\n\t}\n\n\t/**\n\t * Set volume for notification sounds (0.0 to 1.0)\n\t */\n\tpublic setVolume(volume: number): void {\n\t\tthis.volume = Math.max(0, Math.min(1, volume))\n\t}\n\n\t/**\n\t * Get current volume level\n\t */\n\tpublic getVolume(): number {\n\t\treturn this.volume\n\t}\n\n\t/**\n\t * Mute notification sounds\n\t */\n\tpublic mute(): void {\n\t\tthis.muted = true\n\t}\n\n\t/**\n\t * Unmute notification sounds\n\t */\n\tpublic unmute(): void {\n\t\tthis.muted = false\n\t}\n\n\t/**\n\t * Check if notification sounds are muted\n\t */\n\tpublic isMuted(): boolean {\n\t\treturn this.muted\n\t}\n\n\t/**\n\t * Set custom sound URL for a notification type\n\t */\n\tpublic setSoundUrl(type: NotificationType, url: string): void {\n\t\tthis.soundUrls[type] = url\n\n\t\t// Clear cached buffer to force reload\n\t\tthis.soundBuffers.delete(type)\n\t}\n\n\t/**\n\t * Get the current sound URL for a notification type\n\t */\n\tpublic getSoundUrl(type: NotificationType): string {\n\t\treturn this.soundUrls[type]\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { fromEvent, takeUntil } from 'rxjs'\nimport { NotificationType } from './notification'\nimport { NotificationAudioService } from './notification-audio'\nimport style from './notification-container.scss?inline'\n\nexport interface NotificationItem {\n\tid: string\n\ttitle: string\n\tmessage: string\n\ttype: NotificationType\n\tduration: number\n\tclosable: boolean\n\tplaySound: boolean\n}\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}\n\n/**\n * Container component for displaying stacked notifications.\n *\n * @element sch-notification-container\n */\n@customElement('sch-notification-container')\nexport default class SchmancyNotificationContainer extends $LitElement(style) {\n\t@property({ type: String }) position:\n\t\t| 'top-right'\n\t\t| 'top-left'\n\t\t| 'bottom-right'\n\t\t| 'bottom-left'\n\t\t| 'top-center'\n\t\t| 'bottom-center' = 'top-right'\n\t@property({ type: Number }) maxVisibleNotifications = 2\n\t@property({ type: Boolean }) playSound = false\n\t@property({ type: Number }) audioVolume = 0.1\n\n\t@state() private _notifications: NotificationItem[] = []\n\n\t// Audio service\n\tprivate _audioService = new NotificationAudioService()\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set audio volume\n\t\tthis._audioService.setVolume(this.audioVolume)\n\n\t\t// Listen for notification events\n\t\tfromEvent<CustomEvent<NotificationOptions>>(window, 'schmancy-notification')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(event => {\n\t\t\t\tthis.addNotification(event.detail)\n\t\t\t})\n\n\t\t// Listen for play sound events from child notifications\n\t\tthis.addEventListener('playsound', ((event: CustomEvent) => {\n\t\t\tif (this.playSound) {\n\t\t\t\tthis._audioService.playSound(event.detail.type)\n\t\t\t}\n\t\t}) as EventListener)\n\t}\n\n\t// Public API to add notifications\n\tpublic addNotification(options: NotificationOptions): string {\n\t\tconst id = options.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\tconst notification: NotificationItem = {\n\t\t\tid,\n\t\t\ttitle: options.title || '',\n\t\t\tmessage: options.message,\n\t\t\ttype: options.type || 'info',\n\t\t\tduration: options.duration !== undefined ? options.duration : 750,\n\t\t\tclosable: options.closable !== undefined ? options.closable : true,\n\t\t\tplaySound: options.playSound !== undefined ? options.playSound : this.playSound,\n\t\t}\n\n\t\t// Add new notification (top for top-* positions, bottom for bottom-* positions)\n\t\tif (this.position.startsWith('top')) {\n\t\t\tthis._notifications = [...this._notifications, notification]\n\t\t} else {\n\t\t\tthis._notifications = [notification, ...this._notifications]\n\t\t}\n\n\t\t// Enforce max visible notifications\n\t\tif (this._notifications.length > this.maxVisibleNotifications) {\n\t\t\tthis._notifications = this._notifications.slice(-this.maxVisibleNotifications)\n\t\t}\n\n\t\t// Play sound if enabled\n\t\tif (notification.playSound) {\n\t\t\tthis._audioService.playSound(notification.type)\n\t\t}\n\n\t\treturn id\n\t}\n\n\tpublic removeNotification(id: string) {\n\t\tthis._notifications = this._notifications.filter(n => n.id !== id)\n\t}\n\n\tprivate _handleClose(e: CustomEvent) {\n\t\tconst id = e.detail.id\n\t\tthis.removeNotification(id)\n\t}\n\n\trender() {\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${classMap({\n\t\t\t\t\t'notification-container': true,\n\t\t\t\t\t[this.position]: true,\n\t\t\t\t})}\n\t\t\t>\n\t\t\t\t${repeat(\n\t\t\t\t\tthis._notifications,\n\t\t\t\t\tnotification => notification.id,\n\t\t\t\t\tnotification => html`\n <sch-notification\n .id=${notification.id}\n .title=${notification.title}\n .message=${notification.message}\n .type=${notification.type}\n .duration=${notification.duration}\n ?closable=${notification.closable}\n ?playSound=${false} /* We already played the sound on add */\n @close=${this._handleClose}\n ></sch-notification>\n `,\n\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-container': SchmancyNotificationContainer\n\t}\n}\n","import { NotificationOptions } from './notification-container'\n\n/**\n * Notification service for centralized notification management.\n * Provides a simple API for showing notifications.\n */\nexport class NotificationService {\n\tprivate static instance: NotificationService\n\n\t// Default notification options\n\tprivate static DEFAULT_OPTIONS: Partial<NotificationOptions> = {\n\t\tduration: 1000, // 1 seconds - long enough to be readable\n\t\tclosable: true,\n\t\tplaySound: true,\n\t}\n\n\t// Private constructor for singleton pattern\n\tprivate constructor() {}\n\n\t/**\n\t * Get the singleton instance\n\t */\n\tpublic static getInstance(): NotificationService {\n\t\tif (!NotificationService.instance) {\n\t\t\tNotificationService.instance = new NotificationService()\n\t\t}\n\t\treturn NotificationService.instance\n\t}\n\n\t/**\n\t * Show a notification\n\t * @returns The ID of the created notification\n\t */\n\tpublic notify(options: NotificationOptions): string {\n\t\t// Apply default options\n\t\tconst completeOptions = {\n\t\t\t...NotificationService.DEFAULT_OPTIONS,\n\t\t\t...options,\n\t\t\t// Override with duraton from options if provided, otherwise use default\n\t\t\tduration: options.duration ?? NotificationService.DEFAULT_OPTIONS.duration,\n\t\t}\n\n\t\tconst id = completeOptions.id || `notification-${Date.now()}-${Math.floor(Math.random() * 10000)}`\n\n\t\t// Create and dispatch event\n\t\tconst event = new CustomEvent('schmancy-notification', {\n\t\t\tbubbles: true,\n\t\t\tcomposed: true,\n\t\t\tdetail: {\n\t\t\t\t...completeOptions,\n\t\t\t\tid,\n\t\t\t},\n\t\t})\n\n\t\twindow.dispatchEvent(event)\n\t\treturn id\n\t}\n\n\t/**\n\t * Show an info notification\n\t */\n\tpublic info(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'info',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a success notification\n\t */\n\tpublic success(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'success',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a warning notification\n\t */\n\tpublic warning(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'warning',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show an error notification\n\t */\n\tpublic error(message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage: message ?? '',\n\t\t\ttype: 'error',\n\t\t\tduration: message ? options.duration : 1,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a notification with a custom duration\n\t */\n\tpublic customDuration(\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration,\n\t\t\t...options,\n\t\t})\n\t}\n\n\t/**\n\t * Show a persistent notification (won't auto-dismiss)\n\t */\n\tpublic persistent(message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string {\n\t\treturn this.notify({\n\t\t\tmessage,\n\t\t\tduration: 0, // Zero duration means no auto-close\n\t\t\t...options,\n\t\t})\n\t}\n}\n\n/**\n * Global notification utility - provides a quick way to show notifications\n */\nexport const $notify = {\n\t/**\n\t * Show a notification\n\t */\n\tshow: (options: NotificationOptions): string => {\n\t\treturn NotificationService.getInstance().notify(options)\n\t},\n\n\t/**\n\t * Show an info notification\n\t */\n\tinfo: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().info(message, options)\n\t},\n\n\t/**\n\t * Show a success notification\n\t */\n\tsuccess: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().success(message, options)\n\t},\n\n\t/**\n\t * Show a warning notification\n\t */\n\twarning: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().warning(message, options)\n\t},\n\n\t/**\n\t * Show an error notification\n\t */\n\terror: (message?: string, options: Partial<Omit<NotificationOptions, 'message' | 'type'>> = {}): string => {\n\t\treturn NotificationService.getInstance().error(message, options)\n\t},\n\n\t/**\n\t * Show a notification with a custom duration\n\t * @param message The notification message\n\t * @param duration Duration in milliseconds before auto-dismissing (0 for no auto-dismiss)\n\t * @param options Additional notification options\n\t */\n\tcustomDuration: (\n\t\tmessage: string,\n\t\tduration: number,\n\t\toptions: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {},\n\t): string => {\n\t\treturn NotificationService.getInstance().customDuration(message, duration, options)\n\t},\n\n\t/**\n\t * Show a persistent notification that won't auto-dismiss\n\t */\n\tpersistent: (message: string, options: Partial<Omit<NotificationOptions, 'message' | 'duration'>> = {}): string => {\n\t\treturn NotificationService.getInstance().persistent(message, options)\n\t},\n}\n\nexport default NotificationService\n"],"names":["SchmancyNotification","$LitElement","super","arguments","this","title","message","type","closable","duration","id","Date","now","Math","floor","random","playSound","_visible","_progress","_hovered","_closing","connectedCallback","_startAutoCloseTimer","_playSound","disconnectedCallback","_clearTimers","changedProps","updated","has","endTime","_autoCloseTimer","window","setTimeout","close","_progressTimer","setInterval","remaining","max","clearTimeout","clearInterval","_pauseTimers","_resumeTimers","remainingTime","dispatchEvent","CustomEvent","detail","bubbles","composed","_handleMouseLeave","render","html","typeStyles","_getTypeStyles","elevationLevel","classMap","notification","closing","styleMap","transform","opacity","boxShadow","transition","_handleMouseEnter","color","iconColor","bgColor","icon","SchmancyTheme","sys","primary","default","surface","on","success","tertiary","error","onVariant","progressColor","container","__decorateClass","property","String","prototype","Boolean","Number","state","customElement","NotificationSoundGenerator","constructor","audioContext","getAudioContext","AudioContextClass","AudioContext","webkitAudioContext","volume","ctx","currentTime","oscillator","createOscillator","gainNode","createGain","filter","createBiquadFilter","frequency","setValueAtTime","exponentialRampToValueAtTime","value","gain","connect","destination","start","stop","createBell","freq","osc","osc1","osc2","Q","audioUrls","info","generateAudioFile","async","linearRampToValueAtTime","sampleRate","gain1","gain2","warning","renderFunction","offlineCtx","OfflineAudioContext","audioBuffer","startRendering","wavBlob","audioBufferToWav","URL","createObjectURL","buffer","numChannels","numberOfChannels","blockAlign","bitDepth","samples","getAudioSamples","dataLength","length","wavBuffer","ArrayBuffer","view","DataView","writeString","setUint32","setUint16","writeInt16Samples","Blob","scale","i","channel","sample","getChannelData","intSample","min","push","offset","setInt16","string","setUint8","charCodeAt","NotificationAudioService","soundBuffers","Map","muted","soundGenerator","soundUrls","initializeAudioFiles","preloadSounds","generatedUrls","generateAudioFiles","genErr","types","loadSound","set","err","url","response","fetch","ok","Error","statusText","arrayBuffer","decodeAudioData","context","resume","startsWith","playFallbackSound","playDirectGeneratedSound","get","source","createBufferSource","playInfoSound","playSuccessSound","playWarningSound","playErrorSound","audio","Audio","addEventListener","remove","play","catch","getVolume","mute","unmute","delete","SchmancyNotificationContainer","position","maxVisibleNotifications","audioVolume","_notifications","_audioService","setVolume","fromEvent","pipe","takeUntil","disconnecting","subscribe","event","addNotification","options","slice","n","e","removeNotification","repeat","_handleClose","NotificationService","getInstance","instance","completeOptions","DEFAULT_OPTIONS","notify","_$","$notify","show","customDuration","persistent"],"mappings":"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"}
@@ -1,43 +0,0 @@
1
- import { unsafeCSS as o, LitElement as n } from "lit";
2
- import { Subject as s } from "rxjs";
3
- import { classMap as l } from "lit/directives/class-map.js";
4
- import { styleMap as c } from "lit/directives/style-map.js";
5
- const d = (e) => class extends e {
6
- constructor() {
7
- super(...arguments), this.disconnecting = new s();
8
- }
9
- classMap(r) {
10
- const t = {};
11
- return Object.keys(r).forEach((a) => {
12
- a.trim().split(" ").filter(Boolean).forEach((i) => {
13
- t[i] = r[a];
14
- });
15
- }), l(t);
16
- }
17
- styleMap(r) {
18
- return c(r);
19
- }
20
- disconnectedCallback() {
21
- this.disconnecting.next(!0), this.disconnecting.complete(), super.disconnectedCallback();
22
- }
23
- }, p = o('/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme;@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-6{inset-inline:1.5rem}.top-0{top:0}.top-1\\/2{top:50%}.top-6{top:1.5rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-2\\.5{left:.625rem}.left-3{left:.75rem}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-49{z-index:49}.z-50{z-index:50}.z-\\[100\\]{z-index:100}.z-\\[1000\\]{z-index:1000}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-4{margin-block:1rem}.my-6{margin-block:1.5rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-12{margin-bottom:3rem}.mb-\\[4px\\]{margin-bottom:4px}.-ml-px{margin-left:-1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.table{display:table}.size-2\\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-5{width:1.25rem;height:1.25rem}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-32{height:8rem}.h-64{height:16rem}.h-80{height:20rem}.h-96{height:24rem}.h-\\[24px\\]{height:24px}.h-\\[500px\\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-\\[24px\\]{max-height:24px}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[200px\\]{max-height:200px}.max-h-\\[calc\\(100vh-40px\\)\\]{max-height:calc(100vh - 40px)}.min-h-0{min-height:0}.min-h-\\[56px\\]{min-height:56px}.min-h-\\[100px\\]{min-height:100px}.min-h-\\[150px\\]{min-height:150px}.min-h-\\[200px\\]{min-height:200px}.min-h-\\[400px\\]{min-height:400px}.min-h-screen{min-height:100vh}.w-0\\.5{width:.125rem}.w-1\\.5{width:.375rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-48{width:12rem}.w-64{width:16rem}.w-\\[24px\\]{width:24px}.w-\\[30\\%\\]{width:30%}.w-\\[100vw\\]{width:100vw}.w-\\[var\\(--dialog-width\\)\\]{width:var(--dialog-width)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\\[24px\\]{max-width:24px}.max-w-\\[320px\\]{max-width:320px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.min-w-0{min-width:0}.min-w-\\[60px\\]{min-width:60px}.min-w-\\[160px\\]{min-width:160px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/4{--tw-translate-y: -25% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-\\[55\\%\\]{--tw-translate-y: -55% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y: 0rem ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.transform-gpu{transform:translateZ(0)var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.animate-spin{animation:1s linear infinite spin}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row{grid-auto-flow:row}.grid-flow-row-dense{grid-auto-flow:dense}.auto-rows-max{grid-auto-rows:max-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[250px_1fr\\]{grid-template-columns:250px 1fr}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.grid-rows-\\[auto_1fr_auto\\]{grid-template-rows:auto 1fr auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.content-around{align-content:space-around}.content-between{align-content:space-between}.content-center{align-content:center}.content-end{align-content:flex-end}.content-evenly{align-content:space-evenly}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-baseline{justify-content:baseline}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.justify-items-stretch{justify-items:stretch}.gap-0{gap:0}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\\[8px\\]{gap:8px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem *var(--tw-space-y-reverse));margin-block-end:calc(.25rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.5rem *var(--tw-space-y-reverse));margin-block-end:calc(.5rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.75rem *var(--tw-space-y-reverse));margin-block-end:calc(.75rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1rem *var(--tw-space-y-reverse));margin-block-end:calc(1rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1.5rem *var(--tw-space-y-reverse));margin-block-end:calc(1.5rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(.5rem *var(--tw-space-x-reverse));margin-inline-end:calc(.5rem *calc(1 - var(--tw-space-x-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-outline>:not(:last-child)){border-color:var(--schmancy-sys-color-outline)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.scroll-smooth{scroll-behavior:smooth}.rounded-\\[8px\\]{border-radius:8px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:.75rem}.rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d1d5dc}.border-outline,.border-outline\\/12{border-color:var(--schmancy-sys-color-outline)}@supports (color:color-mix(in lab,red,red)){.border-outline\\/12{border-color:color-mix(in oklab,var(--schmancy-sys-color-outline)12%,transparent)}}.border-outlineVariant{border-color:var(--schmancy-sys-color-outlineVariant)}.border-primary-container{border-color:var(--schmancy-sys-color-primary-container)}.border-primary-default{border-color:var(--schmancy-sys-color-primary-default)}.border-primary-on{border-color:var(--schmancy-sys-color-primary-on)}.border-primary-onContainer{border-color:var(--schmancy-sys-color-primary-onContainer)}.border-red-500{border-color:#fb2c36}.border-scrim{border-color:var(--schmancy-sys-color-scrim)}.border-success-on{border-color:var(--schmancy-sys-color-success-on)}.border-surface-container{border-color:var(--schmancy-sys-color-surface-container)}.border-surface-default{border-color:var(--schmancy-sys-color-surface-default)}.border-surface-dim{border-color:var(--schmancy-sys-color-surface-dim)}.border-tertiary-default{border-color:var(--schmancy-sys-color-tertiary-default)}.border-transparent{border-color:#0000}.border-white\\/20{border-color:#fff3}.border-white\\/30{border-color:#ffffff4d}.bg-\\[color\\]{background-color:color}.bg-black\\/40{background-color:oklab(0% none none/.4)}.bg-blue-500{background-color:#3280ff;background-color:oklch(62.3% .214 259.815)}.bg-error-container{background-color:var(--schmancy-sys-color-error-container)}.bg-error-default,.bg-error-default\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab,red,red)){.bg-error-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-error-default)70%,transparent)}}.bg-gray-50{background-color:#f9fafb}.bg-gray-300{background-color:#d1d5dc}.bg-green-500{background-color:#00c65a;background-color:oklch(72.3% .219 149.579)}.bg-green-600{background-color:#00a447;background-color:oklch(62.7% .194 149.214)}.bg-indigo-500{background-color:#6260ff;background-color:oklch(58.5% .233 277.117)}.bg-orange-600{background-color:#ec5600;background-color:oklch(64.6% .222 41.116)}.bg-pink-500{background-color:#f6339a}.bg-primary-container{background-color:var(--schmancy-sys-color-primary-container)}.bg-primary-default,.bg-primary-default\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab,red,red)){.bg-primary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-primary-default)70%,transparent)}}.bg-primary-on{background-color:var(--schmancy-sys-color-primary-on)}.bg-primary-onContainer{background-color:var(--schmancy-sys-color-primary-onContainer)}.bg-purple-500{background-color:#ab4eff;background-color:oklch(62.7% .265 303.9)}.bg-red-500{background-color:#fb2c36}.bg-red-600{background-color:#e40014;background-color:oklch(57.7% .245 27.325)}.bg-scrim{background-color:var(--schmancy-sys-color-scrim)}.bg-secondary-container{background-color:var(--schmancy-sys-color-secondary-container)}.bg-secondary-default,.bg-secondary-default\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab,red,red)){.bg-secondary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-secondary-default)70%,transparent)}}.bg-success-default,.bg-success-default\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab,red,red)){.bg-success-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-success-default)70%,transparent)}}.bg-surface-bright{background-color:var(--schmancy-sys-color-surface-bright)}.bg-surface-container,.bg-surface-container\\/10{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab,red,red)){.bg-surface-container\\/10{background-color:color-mix(in oklab,var(--schmancy-sys-color-surface-container)10%,transparent)}}.bg-surface-default{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-dim{background-color:var(--schmancy-sys-color-surface-dim)}.bg-surface-high{background-color:var(--schmancy-sys-color-surface-high)}.bg-surface-highest{background-color:var(--schmancy-sys-color-surface-highest)}.bg-surface-low{background-color:var(--schmancy-sys-color-surface-low)}.bg-surface-lowest{background-color:var(--schmancy-sys-color-surface-lowest)}.bg-teal-500{background-color:#00b9a6;background-color:oklch(70.4% .14 182.503)}.bg-tertiary-default,.bg-tertiary-default\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab,red,red)){.bg-tertiary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-tertiary-default)70%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.bg-white\\/20{background-color:#fff3}.bg-yellow-500{background-color:#eab300;background-color:oklch(79.5% .184 86.047)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:oklch(62.3% .214 259.815);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:oklch(51.1% .262 276.966);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-container{--tw-gradient-from:var(--schmancy-sys-color-primary-container);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-500{--tw-gradient-from:oklch(62.7% .265 303.9);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\\/20{--tw-gradient-from:oklab(100% 0 5.96046e-8/.2);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-purple-600{--tw-gradient-via:oklch(55.8% .288 302.321);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-pink-500{--tw-gradient-to:oklch(65.6% .241 354.308);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-pink-600{--tw-gradient-to:oklch(59.2% .249 .584);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-secondary-container{--tw-gradient-to:var(--schmancy-sys-color-secondary-container);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:oklch(70.4% .14 182.503);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\\[16px\\]{padding:16px}.px-1{padding-inline:.25rem}.px-1\\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.px-\\[6px\\]{padding-inline:6px}.px-\\[8px\\]{padding-inline:8px}.px-\\[12px\\]{padding-inline:12px}.px-\\[16px\\]{padding-inline:16px}.py-0\\.75{padding-block:.1875rem}.py-1{padding-block:.25rem}.py-1\\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-8{padding-block:2rem}.py-\\[6px\\]{padding-block:6px}.py-\\[8px\\]{padding-block:8px}.py-\\[12px\\]{padding-block:12px}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pt-\\[4px\\]{padding-top:4px}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pb-12{padding-bottom:3rem}.pb-\\[300px\\]{padding-bottom:300px}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--schmancy-font-family),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2/1.5))}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5/2.25))}.text-base{font-size:1rem;line-height:var(--tw-leading, 1.5 )}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75/1.125))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25/.875))}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,calc(1.75/1.25))}.text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1/.75))}.text-\\[24px\\]{font-size:24px}.leading-6{--tw-leading: 1.5rem ;line-height:1.5rem}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:700;font-weight:700}.font-medium{--tw-font-weight:500;font-weight:500}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.text-ellipsis{text-overflow:ellipsis}.text-error-container{color:var(--schmancy-sys-color-error-container)}.text-error-default{color:var(--schmancy-sys-color-error-default)}.text-error-onContainer{color:var(--schmancy-sys-color-error-onContainer)}.text-gray-500{color:#6a7282}.text-gray-600{color:#4a5565}.text-gray-900{color:#101828}.text-indigo-600{color:#4f39f6}.text-outline{color:var(--schmancy-sys-color-outline)}.text-outlineVariant{color:var(--schmancy-sys-color-outlineVariant)}.text-primary-container{color:var(--schmancy-sys-color-primary-container)}.text-primary-default{color:var(--schmancy-sys-color-primary-default)}.text-primary-on{color:var(--schmancy-sys-color-primary-on)}.text-primary-onContainer{color:var(--schmancy-sys-color-primary-onContainer)}.text-red-500{color:#fb2c36}.text-scrim{color:var(--schmancy-sys-color-scrim)}.text-secondary-onContainer{color:var(--schmancy-sys-color-secondary-onContainer)}.text-success-default{color:var(--schmancy-sys-color-success-default)}.text-surface-bright{color:var(--schmancy-sys-color-surface-bright)}.text-surface-dim{color:var(--schmancy-sys-color-surface-dim)}.text-surface-on{color:var(--schmancy-sys-color-surface-on)}.text-surface-onVariant{color:var(--schmancy-sys-color-surface-onVariant)}.text-tertiary-default{color:var(--schmancy-sys-color-tertiary-default)}.text-white{color:#fff}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-1{opacity:.01}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\\[0\\.08\\]{opacity:.08}.opacity-\\[0\\.38\\]{opacity:.38}.shadow-1{--tw-shadow:var(--schmancy-sys-elevation-1);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[inset_0_1px_1px_0_rgba\\(255\\,255\\,255\\,0\\.2\\)\\]{--tw-shadow:inset 0 1px 1px 0 var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[inset_0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:inset 0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-error-default{--tw-ring-color:var(--schmancy-sys-color-error-default)}.ring-outline{--tw-ring-color:var(--schmancy-sys-color-outline)}.ring-primary-default{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.ring-secondary-default{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-secondary-default{outline-color:var(--schmancy-sys-color-secondary-default)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{--tw-ease:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.select-none{-webkit-user-select:none;user-select:none}.\\[--schmancy-sys-color-primary-default\\:rgb\\(0\\,0\\,255\\)\\]{--schmancy-sys-color-primary-default:#00f}.\\[--schmancy-sys-color-primary-default\\:rgb\\(0\\,255\\,0\\)\\]{--schmancy-sys-color-primary-default:#0f0}.\\[--schmancy-sys-color-primary-default\\:rgb\\(255\\,0\\,0\\)\\]{--schmancy-sys-color-primary-default:red}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\\:border-gray-400:is(:where(.group):hover *){border-color:#99a1af}.group-hover\\:bg-gray-300:is(:where(.group):hover *){background-color:#d1d5dc}.group-hover\\:bg-tertiary-onContainer:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-tertiary-onContainer)}}.first\\:mt-0:first-child{margin-top:0}@media (hover:hover){.hover\\:border-gray-300:hover{border-color:#d1d5dc}.hover\\:bg-green-700:hover{background-color:#00813a;background-color:oklch(52.7% .154 150.069)}.hover\\:bg-orange-700:hover{background-color:#c43e00;background-color:oklch(55.3% .195 38.402)}.hover\\:bg-primary-default:hover{background-color:var(--schmancy-sys-color-primary-default)}.hover\\:bg-primary-on:hover{background-color:var(--schmancy-sys-color-primary-on)}.hover\\:bg-red-700:hover{background-color:#bf000f;background-color:oklch(50.5% .213 27.518)}.hover\\:bg-secondary-container:hover{background-color:var(--schmancy-sys-color-secondary-container)}.hover\\:bg-surface-container:hover{background-color:var(--schmancy-sys-color-surface-container)}.hover\\:bg-surface-high:hover{background-color:var(--schmancy-sys-color-surface-high)}.hover\\:bg-surface-on:hover{background-color:var(--schmancy-sys-color-surface-on)}.hover\\:text-gray-700:hover{color:#364153}.hover\\:text-primary-default:hover{color:var(--schmancy-sys-color-primary-default)}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-\\[0\\.08\\]:hover{opacity:.08}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-error-default:focus{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus\\:ring-indigo-600:focus{--tw-ring-color:oklch(51.1% .262 276.966)}.focus\\:ring-primary-default:focus{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.focus\\:ring-secondary-default:focus{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\\:w-auto{width:auto}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:px-\\[12px\\]{padding-inline:12px}}@media (min-width:48rem){.md\\:right-0{right:0}.md\\:left-\\[unset\\]{left:unset}.md\\:block{display:block}.md\\:hidden{display:none}.md\\:w-64{width:16rem}.md\\:w-\\[70vw\\]{width:70vw}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:justify-between{justify-content:space-between}.md\\:px-\\[16px\\]{padding-inline:16px}}@media (min-width:64rem){.lg\\:w-\\[60vw\\]{width:60vw}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:80rem){.xl\\:w-\\[40vw\\]{width:40vw}}@media (prefers-color-scheme:dark){.dark\\:border-white\\/10{border-color:#ffffff1a}.dark\\:border-white\\/20{border-color:#fff3}.dark\\:bg-black\\/20{background-color:oklab(0% none none/.2)}}}:host,:root{font-family:var(--schmancy-font-family)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}'), w = (e) => {
24
- const t = class t extends n {
25
- };
26
- t.styles = [o(e), p];
27
- let r = t;
28
- return r;
29
- }, v = (e) => {
30
- class r extends d(w(e)) {
31
- constructor() {
32
- super(...arguments), this.disconnectedCallback = () => {
33
- super.disconnectedCallback();
34
- };
35
- }
36
- }
37
- return r;
38
- };
39
- export {
40
- d as B,
41
- v as T
42
- };
43
- //# sourceMappingURL=tailwind.mixin-CaIkmP6j.js.map
@@ -1,2 +0,0 @@
1
- "use strict";const a=require("lit"),s=require("rxjs"),l=require("lit/directives/class-map.js"),c=require("lit/directives/style-map.js"),i=e=>class extends e{constructor(){super(...arguments),this.disconnecting=new s.Subject}classMap(r){const t={};return Object.keys(r).forEach(o=>{o.trim().split(" ").filter(Boolean).forEach(n=>{t[n]=r[o]})}),l.classMap(t)}styleMap(r){return c.styleMap(r)}disconnectedCallback(){this.disconnecting.next(!0),this.disconnecting.complete(),super.disconnectedCallback()}},d=a.unsafeCSS('/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-divide-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme;@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-6{inset-inline:1.5rem}.top-0{top:0}.top-1\\/2{top:50%}.top-6{top:1.5rem}.right-0{right:0}.right-2{right:.5rem}.right-3{right:.75rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.left-0{left:0}.left-1\\/2{left:50%}.left-2{left:.5rem}.left-2\\.5{left:.625rem}.left-3{left:.75rem}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-49{z-index:49}.z-50{z-index:50}.z-\\[100\\]{z-index:100}.z-\\[1000\\]{z-index:1000}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.mx-auto{margin-inline:auto}.my-1{margin-block:.25rem}.my-2{margin-block:.5rem}.my-4{margin-block:1rem}.my-6{margin-block:1.5rem}.mt-0\\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-12{margin-bottom:3rem}.mb-\\[4px\\]{margin-bottom:4px}.-ml-px{margin-left:-1px}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.block{display:block}.contents{display:contents}.flex{display:flex}.flow-root{display:flow-root}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.inline-grid{display:inline-grid}.inline-table{display:inline-table}.table{display:table}.size-2\\.5{width:.625rem;height:.625rem}.size-3{width:.75rem;height:.75rem}.size-5{width:1.25rem;height:1.25rem}.h-0\\.5{height:.125rem}.h-1{height:.25rem}.h-1\\.5{height:.375rem}.h-2{height:.5rem}.h-2\\.5{height:.625rem}.h-3{height:.75rem}.h-4{height:1rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-32{height:8rem}.h-64{height:16rem}.h-80{height:20rem}.h-96{height:24rem}.h-\\[24px\\]{height:24px}.h-\\[500px\\]{height:500px}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-\\[24px\\]{max-height:24px}.max-h-\\[80vh\\]{max-height:80vh}.max-h-\\[90vh\\]{max-height:90vh}.max-h-\\[200px\\]{max-height:200px}.max-h-\\[calc\\(100vh-40px\\)\\]{max-height:calc(100vh - 40px)}.min-h-0{min-height:0}.min-h-\\[56px\\]{min-height:56px}.min-h-\\[100px\\]{min-height:100px}.min-h-\\[150px\\]{min-height:150px}.min-h-\\[200px\\]{min-height:200px}.min-h-\\[400px\\]{min-height:400px}.min-h-screen{min-height:100vh}.w-0\\.5{width:.125rem}.w-1\\.5{width:.375rem}.w-2{width:.5rem}.w-2\\.5{width:.625rem}.w-3{width:.75rem}.w-4{width:1rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-48{width:12rem}.w-64{width:16rem}.w-\\[24px\\]{width:24px}.w-\\[30\\%\\]{width:30%}.w-\\[100vw\\]{width:100vw}.w-\\[var\\(--dialog-width\\)\\]{width:var(--dialog-width)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\\[24px\\]{max-width:24px}.max-w-\\[320px\\]{max-width:320px}.max-w-\\[360px\\]{max-width:360px}.max-w-\\[calc\\(100vw-2rem\\)\\]{max-width:calc(100vw - 2rem)}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.min-w-0{min-width:0}.min-w-\\[60px\\]{min-width:60px}.min-w-\\[160px\\]{min-width:160px}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/4{--tw-translate-y: -25% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-\\[55\\%\\]{--tw-translate-y: -55% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0{--tw-translate-y: 0rem ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.transform-gpu{transform:translateZ(0)var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.animate-spin{animation:1s linear infinite spin}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-disc{list-style-type:disc}.auto-cols-max{grid-auto-columns:max-content}.grid-flow-col{grid-auto-flow:column}.grid-flow-col-dense{grid-auto-flow:column dense}.grid-flow-dense{grid-auto-flow:dense}.grid-flow-row{grid-auto-flow:row}.grid-flow-row-dense{grid-auto-flow:dense}.auto-rows-max{grid-auto-rows:max-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\\[250px_1fr\\]{grid-template-columns:250px 1fr}.grid-cols-\\[auto_1fr\\]{grid-template-columns:auto 1fr}.grid-rows-\\[auto_1fr\\]{grid-template-rows:auto 1fr}.grid-rows-\\[auto_1fr_auto\\]{grid-template-rows:auto 1fr auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-nowrap{flex-wrap:nowrap}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.content-around{align-content:space-around}.content-between{align-content:space-between}.content-center{align-content:center}.content-end{align-content:flex-end}.content-evenly{align-content:space-evenly}.content-start{align-content:flex-start}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.items-stretch{align-items:stretch}.justify-around{justify-content:space-around}.justify-baseline{justify-content:baseline}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-evenly{justify-content:space-evenly}.justify-start{justify-content:flex-start}.justify-stretch{justify-content:stretch}.justify-items-center{justify-items:center}.justify-items-end{justify-items:end}.justify-items-start{justify-items:start}.justify-items-stretch{justify-items:stretch}.gap-0{gap:0}.gap-0\\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\\[8px\\]{gap:8px}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.25rem *var(--tw-space-y-reverse));margin-block-end:calc(.25rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.5rem *var(--tw-space-y-reverse));margin-block-end:calc(.5rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(.75rem *var(--tw-space-y-reverse));margin-block-end:calc(.75rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1rem *var(--tw-space-y-reverse));margin-block-end:calc(1rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(1.5rem *var(--tw-space-y-reverse));margin-block-end:calc(1.5rem *calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(.5rem *var(--tw-space-x-reverse));margin-inline-end:calc(.5rem *calc(1 - var(--tw-space-x-reverse)))}:where(.divide-x>:not(:last-child)){--tw-divide-x-reverse:0;border-inline-style:var(--tw-border-style);border-inline-start-width:calc(1px*var(--tw-divide-x-reverse));border-inline-end-width:calc(1px*calc(1 - var(--tw-divide-x-reverse)))}:where(.divide-outline>:not(:last-child)){border-color:var(--schmancy-sys-color-outline)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-none{overscroll-behavior:none}.scroll-smooth{scroll-behavior:smooth}.rounded-\\[8px\\]{border-radius:8px}.rounded-\\[inherit\\]{border-radius:inherit}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.25rem}.rounded-xl{border-radius:.75rem}.rounded-t-full{border-top-left-radius:3.40282e38px;border-top-right-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-solid{--tw-border-style:solid;border-style:solid}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d1d5dc}.border-outline,.border-outline\\/12{border-color:var(--schmancy-sys-color-outline)}@supports (color:color-mix(in lab,red,red)){.border-outline\\/12{border-color:color-mix(in oklab,var(--schmancy-sys-color-outline)12%,transparent)}}.border-outlineVariant{border-color:var(--schmancy-sys-color-outlineVariant)}.border-primary-container{border-color:var(--schmancy-sys-color-primary-container)}.border-primary-default{border-color:var(--schmancy-sys-color-primary-default)}.border-primary-on{border-color:var(--schmancy-sys-color-primary-on)}.border-primary-onContainer{border-color:var(--schmancy-sys-color-primary-onContainer)}.border-red-500{border-color:#fb2c36}.border-scrim{border-color:var(--schmancy-sys-color-scrim)}.border-success-on{border-color:var(--schmancy-sys-color-success-on)}.border-surface-container{border-color:var(--schmancy-sys-color-surface-container)}.border-surface-default{border-color:var(--schmancy-sys-color-surface-default)}.border-surface-dim{border-color:var(--schmancy-sys-color-surface-dim)}.border-tertiary-default{border-color:var(--schmancy-sys-color-tertiary-default)}.border-transparent{border-color:#0000}.border-white\\/20{border-color:#fff3}.border-white\\/30{border-color:#ffffff4d}.bg-\\[color\\]{background-color:color}.bg-black\\/40{background-color:oklab(0% none none/.4)}.bg-blue-500{background-color:#3280ff;background-color:oklch(62.3% .214 259.815)}.bg-error-container{background-color:var(--schmancy-sys-color-error-container)}.bg-error-default,.bg-error-default\\/70{background-color:var(--schmancy-sys-color-error-default)}@supports (color:color-mix(in lab,red,red)){.bg-error-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-error-default)70%,transparent)}}.bg-gray-50{background-color:#f9fafb}.bg-gray-300{background-color:#d1d5dc}.bg-green-500{background-color:#00c65a;background-color:oklch(72.3% .219 149.579)}.bg-green-600{background-color:#00a447;background-color:oklch(62.7% .194 149.214)}.bg-indigo-500{background-color:#6260ff;background-color:oklch(58.5% .233 277.117)}.bg-orange-600{background-color:#ec5600;background-color:oklch(64.6% .222 41.116)}.bg-pink-500{background-color:#f6339a}.bg-primary-container{background-color:var(--schmancy-sys-color-primary-container)}.bg-primary-default,.bg-primary-default\\/70{background-color:var(--schmancy-sys-color-primary-default)}@supports (color:color-mix(in lab,red,red)){.bg-primary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-primary-default)70%,transparent)}}.bg-primary-on{background-color:var(--schmancy-sys-color-primary-on)}.bg-primary-onContainer{background-color:var(--schmancy-sys-color-primary-onContainer)}.bg-purple-500{background-color:#ab4eff;background-color:oklch(62.7% .265 303.9)}.bg-red-500{background-color:#fb2c36}.bg-red-600{background-color:#e40014;background-color:oklch(57.7% .245 27.325)}.bg-scrim{background-color:var(--schmancy-sys-color-scrim)}.bg-secondary-container{background-color:var(--schmancy-sys-color-secondary-container)}.bg-secondary-default,.bg-secondary-default\\/70{background-color:var(--schmancy-sys-color-secondary-default)}@supports (color:color-mix(in lab,red,red)){.bg-secondary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-secondary-default)70%,transparent)}}.bg-success-default,.bg-success-default\\/70{background-color:var(--schmancy-sys-color-success-default)}@supports (color:color-mix(in lab,red,red)){.bg-success-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-success-default)70%,transparent)}}.bg-surface-bright{background-color:var(--schmancy-sys-color-surface-bright)}.bg-surface-container,.bg-surface-container\\/10{background-color:var(--schmancy-sys-color-surface-container)}@supports (color:color-mix(in lab,red,red)){.bg-surface-container\\/10{background-color:color-mix(in oklab,var(--schmancy-sys-color-surface-container)10%,transparent)}}.bg-surface-default{background-color:var(--schmancy-sys-color-surface-default)}.bg-surface-dim{background-color:var(--schmancy-sys-color-surface-dim)}.bg-surface-high{background-color:var(--schmancy-sys-color-surface-high)}.bg-surface-highest{background-color:var(--schmancy-sys-color-surface-highest)}.bg-surface-low{background-color:var(--schmancy-sys-color-surface-low)}.bg-surface-lowest{background-color:var(--schmancy-sys-color-surface-lowest)}.bg-teal-500{background-color:#00b9a6;background-color:oklch(70.4% .14 182.503)}.bg-tertiary-default,.bg-tertiary-default\\/70{background-color:var(--schmancy-sys-color-tertiary-default)}@supports (color:color-mix(in lab,red,red)){.bg-tertiary-default\\/70{background-color:color-mix(in oklab,var(--schmancy-sys-color-tertiary-default)70%,transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:#fff}.bg-white\\/20{background-color:#fff3}.bg-yellow-500{background-color:#eab300;background-color:oklch(79.5% .184 86.047)}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-blue-500{--tw-gradient-from:oklch(62.3% .214 259.815);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-indigo-600{--tw-gradient-from:oklch(51.1% .262 276.966);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary-container{--tw-gradient-from:var(--schmancy-sys-color-primary-container);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-purple-500{--tw-gradient-from:oklch(62.7% .265 303.9);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-white\\/20{--tw-gradient-from:oklab(100% 0 5.96046e-8/.2);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.via-purple-600{--tw-gradient-via:oklch(55.8% .288 302.321);--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-via)var(--tw-gradient-via-position),var(--tw-gradient-to)var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-pink-500{--tw-gradient-to:oklch(65.6% .241 354.308);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-pink-600{--tw-gradient-to:oklch(59.2% .249 .584);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-secondary-container{--tw-gradient-to:var(--schmancy-sys-color-secondary-container);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-teal-500{--tw-gradient-to:oklch(70.4% .14 182.503);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\\[16px\\]{padding:16px}.px-1{padding-inline:.25rem}.px-1\\.5{padding-inline:.375rem}.px-2{padding-inline:.5rem}.px-2\\.5{padding-inline:.625rem}.px-3{padding-inline:.75rem}.px-4{padding-inline:1rem}.px-6{padding-inline:1.5rem}.px-\\[6px\\]{padding-inline:6px}.px-\\[8px\\]{padding-inline:8px}.px-\\[12px\\]{padding-inline:12px}.px-\\[16px\\]{padding-inline:16px}.py-0\\.75{padding-block:.1875rem}.py-1{padding-block:.25rem}.py-1\\.5{padding-block:.375rem}.py-2{padding-block:.5rem}.py-3{padding-block:.75rem}.py-8{padding-block:2rem}.py-\\[6px\\]{padding-block:6px}.py-\\[8px\\]{padding-block:8px}.py-\\[12px\\]{padding-block:12px}.pt-4{padding-top:1rem}.pt-8{padding-top:2rem}.pt-10{padding-top:2.5rem}.pt-\\[4px\\]{padding-top:4px}.pr-1{padding-right:.25rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pb-12{padding-bottom:3rem}.pb-\\[300px\\]{padding-bottom:300px}.pl-2{padding-left:.5rem}.pl-6{padding-left:1.5rem}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--schmancy-font-family),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-2xl{font-size:1.5rem;line-height:var(--tw-leading,calc(2/1.5))}.text-4xl{font-size:2.25rem;line-height:var(--tw-leading,calc(2.5/2.25))}.text-base{font-size:1rem;line-height:var(--tw-leading, 1.5 )}.text-lg{font-size:1.125rem;line-height:var(--tw-leading,calc(1.75/1.125))}.text-sm{font-size:.875rem;line-height:var(--tw-leading,calc(1.25/.875))}.text-xl{font-size:1.25rem;line-height:var(--tw-leading,calc(1.75/1.25))}.text-xs{font-size:.75rem;line-height:var(--tw-leading,calc(1/.75))}.text-\\[24px\\]{font-size:24px}.leading-6{--tw-leading: 1.5rem ;line-height:1.5rem}.leading-none{--tw-leading:1;line-height:1}.font-bold{--tw-font-weight:700;font-weight:700}.font-medium{--tw-font-weight:500;font-weight:500}.font-semibold{--tw-font-weight:600;font-weight:600}.tracking-wide{--tw-tracking:.025em;letter-spacing:.025em}.text-ellipsis{text-overflow:ellipsis}.text-error-container{color:var(--schmancy-sys-color-error-container)}.text-error-default{color:var(--schmancy-sys-color-error-default)}.text-error-onContainer{color:var(--schmancy-sys-color-error-onContainer)}.text-gray-500{color:#6a7282}.text-gray-600{color:#4a5565}.text-gray-900{color:#101828}.text-indigo-600{color:#4f39f6}.text-outline{color:var(--schmancy-sys-color-outline)}.text-outlineVariant{color:var(--schmancy-sys-color-outlineVariant)}.text-primary-container{color:var(--schmancy-sys-color-primary-container)}.text-primary-default{color:var(--schmancy-sys-color-primary-default)}.text-primary-on{color:var(--schmancy-sys-color-primary-on)}.text-primary-onContainer{color:var(--schmancy-sys-color-primary-onContainer)}.text-red-500{color:#fb2c36}.text-scrim{color:var(--schmancy-sys-color-scrim)}.text-secondary-onContainer{color:var(--schmancy-sys-color-secondary-onContainer)}.text-success-default{color:var(--schmancy-sys-color-success-default)}.text-surface-bright{color:var(--schmancy-sys-color-surface-bright)}.text-surface-dim{color:var(--schmancy-sys-color-surface-dim)}.text-surface-on{color:var(--schmancy-sys-color-surface-on)}.text-surface-onVariant{color:var(--schmancy-sys-color-surface-onVariant)}.text-tertiary-default{color:var(--schmancy-sys-color-tertiary-default)}.text-white{color:#fff}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.caret-transparent{caret-color:#0000}.opacity-0{opacity:0}.opacity-1{opacity:.01}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.opacity-\\[0\\.08\\]{opacity:.08}.opacity-\\[0\\.38\\]{opacity:.38}.shadow-1{--tw-shadow:var(--schmancy-sys-elevation-1);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[0_0_20px_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:0 0 20px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[inset_0_1px_1px_0_rgba\\(255\\,255\\,255\\,0\\.2\\)\\]{--tw-shadow:inset 0 1px 1px 0 var(--tw-shadow-color,#fff3);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-\\[inset_0_1px_2px_0_rgba\\(0\\,0\\,0\\,0\\.1\\)\\]{--tw-shadow:inset 0 1px 2px 0 var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-error-default{--tw-ring-color:var(--schmancy-sys-color-error-default)}.ring-outline{--tw-ring-color:var(--schmancy-sys-color-outline)}.ring-primary-default{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.ring-secondary-default{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.outline-secondary-default{outline-color:var(--schmancy-sys-color-secondary-default)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-xs{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-saturate-150{--tw-backdrop-saturate:saturate(150%);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-in{--tw-ease:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{--tw-ease:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{--tw-ease:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.select-none{-webkit-user-select:none;user-select:none}.\\[--schmancy-sys-color-primary-default\\:rgb\\(0\\,0\\,255\\)\\]{--schmancy-sys-color-primary-default:#00f}.\\[--schmancy-sys-color-primary-default\\:rgb\\(0\\,255\\,0\\)\\]{--schmancy-sys-color-primary-default:#0f0}.\\[--schmancy-sys-color-primary-default\\:rgb\\(255\\,0\\,0\\)\\]{--schmancy-sys-color-primary-default:red}.ring-inset{--tw-ring-inset:inset}@media (hover:hover){.group-hover\\:border-gray-400:is(:where(.group):hover *){border-color:#99a1af}.group-hover\\:bg-gray-300:is(:where(.group):hover *){background-color:#d1d5dc}.group-hover\\:bg-tertiary-onContainer:is(:where(.group):hover *){background-color:var(--schmancy-sys-color-tertiary-onContainer)}}.first\\:mt-0:first-child{margin-top:0}@media (hover:hover){.hover\\:border-gray-300:hover{border-color:#d1d5dc}.hover\\:bg-green-700:hover{background-color:#00813a;background-color:oklch(52.7% .154 150.069)}.hover\\:bg-orange-700:hover{background-color:#c43e00;background-color:oklch(55.3% .195 38.402)}.hover\\:bg-primary-default:hover{background-color:var(--schmancy-sys-color-primary-default)}.hover\\:bg-primary-on:hover{background-color:var(--schmancy-sys-color-primary-on)}.hover\\:bg-red-700:hover{background-color:#bf000f;background-color:oklch(50.5% .213 27.518)}.hover\\:bg-secondary-container:hover{background-color:var(--schmancy-sys-color-secondary-container)}.hover\\:bg-surface-container:hover{background-color:var(--schmancy-sys-color-surface-container)}.hover\\:bg-surface-high:hover{background-color:var(--schmancy-sys-color-surface-high)}.hover\\:bg-surface-on:hover{background-color:var(--schmancy-sys-color-surface-on)}.hover\\:text-gray-700:hover{color:#364153}.hover\\:text-primary-default:hover{color:var(--schmancy-sys-color-primary-default)}.hover\\:opacity-100:hover{opacity:1}.hover\\:opacity-\\[0\\.08\\]:hover{opacity:.08}.hover\\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\\:shadow-xs:hover{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\\:ring-error-default:focus{--tw-ring-color:var(--schmancy-sys-color-error-default)}.focus\\:ring-indigo-600:focus{--tw-ring-color:oklch(51.1% .262 276.966)}.focus\\:ring-primary-default:focus{--tw-ring-color:var(--schmancy-sys-color-primary-default)}.focus\\:ring-secondary-default:focus{--tw-ring-color:var(--schmancy-sys-color-secondary-default)}.focus\\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus\\:outline-1:focus{outline-style:var(--tw-outline-style);outline-width:1px}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus\\:ring-inset:focus{--tw-ring-inset:inset}.focus-visible\\:z-1:focus-visible{z-index:1}.focus-visible\\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-40:disabled{opacity:.4}@media (min-width:40rem){.sm\\:w-auto{width:auto}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\\:px-\\[12px\\]{padding-inline:12px}}@media (min-width:48rem){.md\\:right-0{right:0}.md\\:left-\\[unset\\]{left:unset}.md\\:block{display:block}.md\\:hidden{display:none}.md\\:w-64{width:16rem}.md\\:w-\\[70vw\\]{width:70vw}.md\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\\:flex-row{flex-direction:row}.md\\:justify-between{justify-content:space-between}.md\\:px-\\[16px\\]{padding-inline:16px}}@media (min-width:64rem){.lg\\:w-\\[60vw\\]{width:60vw}.lg\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (min-width:80rem){.xl\\:w-\\[40vw\\]{width:40vw}}@media (prefers-color-scheme:dark){.dark\\:border-white\\/10{border-color:#ffffff1a}.dark\\:border-white\\/20{border-color:#fff3}.dark\\:bg-black\\/20{background-color:oklab(0% none none/.2)}}}:host,:root{font-family:var(--schmancy-font-family)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"<color>";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"<length-percentage>";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"<length-percentage>";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"<length-percentage>";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}'),p=e=>{const t=class t extends a.LitElement{};t.styles=[a.unsafeCSS(e),d];let r=t;return r};exports.BaseElement=i,exports.TailwindElement=e=>{class r extends i(p(e)){constructor(){super(...arguments),this.disconnectedCallback=()=>{super.disconnectedCallback()}}}return r};
2
- //# sourceMappingURL=tailwind.mixin-DVKI3qb9.cjs.map