@mhmo91/schmancy 0.9.5 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (608) hide show
  1. package/custom-elements.json +493 -718
  2. package/dist/{animation-CO_Csq84.cjs.map → animation-Bcwh107v.cjs.map} +1 -1
  3. package/dist/{animation-BK-8BwY8.js.map → animation-CXKSuUoE.js.map} +1 -1
  4. package/dist/{area-CRoGqD_u.js → area-BARjKpE9.js} +2 -2
  5. package/dist/{area-CRoGqD_u.js.map → area-BARjKpE9.js.map} +1 -1
  6. package/dist/{area-JPykB7A9.cjs → area-D9b9dHQr.cjs} +3 -3
  7. package/dist/{area-JPykB7A9.cjs.map → area-D9b9dHQr.cjs.map} +1 -1
  8. package/dist/area.cjs +1 -1
  9. package/dist/area.js +1 -1
  10. package/dist/{audio-kz8UgPTO.js → audio-C7TzWI8M.js} +1 -1
  11. package/dist/audio-C7TzWI8M.js.map +1 -0
  12. package/dist/{audio-DtYYgzYD.cjs → audio-DUVz7Ars.cjs} +1 -1
  13. package/dist/audio-DUVz7Ars.cjs.map +1 -0
  14. package/dist/audio.cjs +1 -1
  15. package/dist/audio.js +2 -2
  16. package/dist/autocomplete-AI2CCJmK.cjs +115 -0
  17. package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
  18. package/dist/{autocomplete-BllPQwr8.js → autocomplete-DOimwVMP.js} +48 -22
  19. package/dist/autocomplete-DOimwVMP.js.map +1 -0
  20. package/dist/autocomplete.cjs +1 -1
  21. package/dist/autocomplete.js +1 -1
  22. package/dist/badge.cjs +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/{boat-DYEAZ8Qj.cjs → boat-Bk4u-LzT.cjs} +2 -2
  25. package/dist/{boat-DYEAZ8Qj.cjs.map → boat-Bk4u-LzT.cjs.map} +1 -1
  26. package/dist/{boat-BDTQ-du9.js → boat-DrghVeWK.js} +5 -5
  27. package/dist/{boat-BDTQ-du9.js.map → boat-DrghVeWK.js.map} +1 -1
  28. package/dist/boat.cjs +1 -1
  29. package/dist/boat.js +1 -1
  30. package/dist/breadcrumb.cjs +34 -0
  31. package/dist/breadcrumb.cjs.map +1 -0
  32. package/dist/breadcrumb.js +73 -0
  33. package/dist/breadcrumb.js.map +1 -0
  34. package/dist/{busy-ChDAeaKF.js → busy-BmFfwyz_.js} +7 -6
  35. package/dist/{busy-ChDAeaKF.js.map → busy-BmFfwyz_.js.map} +1 -1
  36. package/dist/{busy-Dj7Xn0Z0.cjs → busy-c_q_F8O0.cjs} +8 -8
  37. package/dist/{busy-Dj7Xn0Z0.cjs.map → busy-c_q_F8O0.cjs.map} +1 -1
  38. package/dist/busy.cjs +1 -1
  39. package/dist/busy.js +1 -1
  40. package/dist/button.cjs +4 -4
  41. package/dist/button.cjs.map +1 -1
  42. package/dist/button.js +25 -6
  43. package/dist/button.js.map +1 -1
  44. package/dist/{card-DZFPRPqs.js → card-BADJHUMA.js} +16 -15
  45. package/dist/{card-DZFPRPqs.js.map → card-BADJHUMA.js.map} +1 -1
  46. package/dist/{card-BvPWVEJX.cjs → card-C_E944_Z.cjs} +10 -10
  47. package/dist/{card-BvPWVEJX.cjs.map → card-C_E944_Z.cjs.map} +1 -1
  48. package/dist/card.cjs +1 -1
  49. package/dist/card.js +1 -1
  50. package/dist/charts.cjs +3 -3
  51. package/dist/charts.cjs.map +1 -1
  52. package/dist/charts.js +2 -2
  53. package/dist/{checkbox-GSSjqo6w.js → checkbox-D7rvCrGk.js} +28 -9
  54. package/dist/{checkbox-GSSjqo6w.js.map → checkbox-D7rvCrGk.js.map} +1 -1
  55. package/dist/{checkbox-BC_37rsG.cjs → checkbox-ZqDoCagB.cjs} +10 -10
  56. package/dist/{checkbox-BC_37rsG.cjs.map → checkbox-ZqDoCagB.cjs.map} +1 -1
  57. package/dist/checkbox.cjs +1 -1
  58. package/dist/checkbox.js +1 -1
  59. package/dist/{chips-B19XS8Xc.cjs → chips-Cux635Qs.cjs} +18 -18
  60. package/dist/chips-Cux635Qs.cjs.map +1 -0
  61. package/dist/{chips-B9oAEfE_.js → chips-vdzIsesI.js} +37 -27
  62. package/dist/chips-vdzIsesI.js.map +1 -0
  63. package/dist/chips.cjs +1 -1
  64. package/dist/chips.js +2 -2
  65. package/dist/{code-highlight-fSLrlgOb.cjs → code-highlight-C9lKek2p.cjs} +11 -11
  66. package/dist/{code-highlight-fSLrlgOb.cjs.map → code-highlight-C9lKek2p.cjs.map} +1 -1
  67. package/dist/{code-highlight-DCk5lJY-.js → code-highlight-D6yruol6.js} +6 -5
  68. package/dist/{code-highlight-DCk5lJY-.js.map → code-highlight-D6yruol6.js.map} +1 -1
  69. package/dist/code-highlight.cjs +1 -1
  70. package/dist/code-highlight.js +1 -1
  71. package/dist/components-ByRyEzz5.cjs +73 -0
  72. package/dist/{components-CyD6a7gQ.cjs.map → components-ByRyEzz5.cjs.map} +1 -1
  73. package/dist/{components-COsM6sJZ.js → components-DSvPKR9Q.js} +2 -2
  74. package/dist/{components-COsM6sJZ.js.map → components-DSvPKR9Q.js.map} +1 -1
  75. package/dist/components.cjs +1 -1
  76. package/dist/components.js +1 -1
  77. package/dist/connectivity.cjs +7 -7
  78. package/dist/connectivity.cjs.map +1 -1
  79. package/dist/connectivity.js +5 -4
  80. package/dist/connectivity.js.map +1 -1
  81. package/dist/content-drawer.cjs +1 -1
  82. package/dist/content-drawer.js +1 -1
  83. package/dist/{cursor-glow-DtSy_PJd.cjs → cursor-glow-82y5h3E4.cjs} +1 -1
  84. package/dist/{cursor-glow-DtSy_PJd.cjs.map → cursor-glow-82y5h3E4.cjs.map} +1 -1
  85. package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-C2YRrB8Z.js} +1 -1
  86. package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-C2YRrB8Z.js.map} +1 -1
  87. package/dist/{date-range-ZAaQB22I.cjs → date-range-DJsavigf.cjs} +3 -3
  88. package/dist/date-range-DJsavigf.cjs.map +1 -0
  89. package/dist/{date-range-inline-Bl8qbiQF.js → date-range-inline-B87TDYI6.js} +1 -1
  90. package/dist/{date-range-inline-Bl8qbiQF.js.map → date-range-inline-B87TDYI6.js.map} +1 -1
  91. package/dist/date-range-inline-De-M0VmL.cjs +43 -0
  92. package/dist/{date-range-inline-m7nLjOMI.cjs.map → date-range-inline-De-M0VmL.cjs.map} +1 -1
  93. package/dist/date-range-inline.cjs +1 -1
  94. package/dist/date-range-inline.js +1 -1
  95. package/dist/{date-range-Sfyco9-n.js → date-range-tEX2Jx2j.js} +4 -4
  96. package/dist/date-range-tEX2Jx2j.js.map +1 -0
  97. package/dist/date-range.cjs +1 -1
  98. package/dist/date-range.js +1 -1
  99. package/dist/delay-BvVdfhAR.cjs +9 -0
  100. package/dist/{delay-7boauN6N.cjs.map → delay-BvVdfhAR.cjs.map} +1 -1
  101. package/dist/{delay-CgX6m0HN.js → delay-CZw37zps.js} +9 -8
  102. package/dist/{delay-CgX6m0HN.js.map → delay-CZw37zps.js.map} +1 -1
  103. package/dist/delay.cjs +1 -1
  104. package/dist/delay.js +1 -1
  105. package/dist/{details-BHnk8l4q.cjs → details-Bhz8_whd.cjs} +9 -9
  106. package/dist/{details-BHnk8l4q.cjs.map → details-Bhz8_whd.cjs.map} +1 -1
  107. package/dist/{details-BPkUg8Cq.js → details-D7VTnLOh.js} +16 -15
  108. package/dist/{details-BPkUg8Cq.js.map → details-D7VTnLOh.js.map} +1 -1
  109. package/dist/details.cjs +1 -1
  110. package/dist/details.js +1 -1
  111. package/dist/{dialog-service-NZEvyEK-.js → dialog-service-ClFrOWf4.js} +2 -2
  112. package/dist/{dialog-service-NZEvyEK-.js.map → dialog-service-ClFrOWf4.js.map} +1 -1
  113. package/dist/{dialog-service-VnW4gkmE.cjs → dialog-service-DcuAavp2.cjs} +1 -1
  114. package/dist/{dialog-service-VnW4gkmE.cjs.map → dialog-service-DcuAavp2.cjs.map} +1 -1
  115. package/dist/dialog.cjs +18 -11
  116. package/dist/dialog.cjs.map +1 -1
  117. package/dist/dialog.js +66 -43
  118. package/dist/dialog.js.map +1 -1
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +5 -5
  121. package/dist/{divider-_khrhrZo.cjs → divider-S0bHwCCS.cjs} +2 -2
  122. package/dist/{divider-_khrhrZo.cjs.map → divider-S0bHwCCS.cjs.map} +1 -1
  123. package/dist/{divider-CW9a7MMj.js → divider-zS232JDr.js} +2 -2
  124. package/dist/{divider-CW9a7MMj.js.map → divider-zS232JDr.js.map} +1 -1
  125. package/dist/divider.cjs +1 -1
  126. package/dist/divider.js +1 -1
  127. package/dist/dropdown.cjs +4 -4
  128. package/dist/dropdown.cjs.map +1 -1
  129. package/dist/dropdown.js +8 -7
  130. package/dist/dropdown.js.map +1 -1
  131. package/dist/{expand-iQ7EOMP7.js → expand-BXt9SqAF.js} +13 -12
  132. package/dist/{expand-iQ7EOMP7.js.map → expand-BXt9SqAF.js.map} +1 -1
  133. package/dist/{expand-Cp7-PH8b.cjs → expand-Dr7TFXpl.cjs} +18 -18
  134. package/dist/{expand-Cp7-PH8b.cjs.map → expand-Dr7TFXpl.cjs.map} +1 -1
  135. package/dist/expand.cjs +1 -1
  136. package/dist/expand.js +1 -1
  137. package/dist/{extra-IKAiJJhv.cjs → extra-BmZTXAp0.cjs} +3 -3
  138. package/dist/{extra-IKAiJJhv.cjs.map → extra-BmZTXAp0.cjs.map} +1 -1
  139. package/dist/{extra-wEpvEFbK.js → extra-COYhsOyZ.js} +2 -2
  140. package/dist/{extra-wEpvEFbK.js.map → extra-COYhsOyZ.js.map} +1 -1
  141. package/dist/extra.cjs +1 -1
  142. package/dist/extra.js +1 -1
  143. package/dist/float-CSRW-Rrd.cjs +1 -0
  144. package/dist/{float-D5rNC82i.cjs.map → float-CSRW-Rrd.cjs.map} +1 -1
  145. package/dist/{float-BQ_urmMs.js → float-DCXafWh6.js} +2 -2
  146. package/dist/{float-BQ_urmMs.js.map → float-DCXafWh6.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{flow-CUj0fDT_.js.map → flow-CqgDEIqK.js.map} +1 -1
  150. package/dist/{flow-Bbwn6dRN.cjs.map → flow-DSu4PLt1.cjs.map} +1 -1
  151. package/dist/form-CAY9GSCd.cjs +1 -0
  152. package/dist/form-CAY9GSCd.cjs.map +1 -0
  153. package/dist/form-D2cJ58TB.js +68 -0
  154. package/dist/form-D2cJ58TB.js.map +1 -0
  155. package/dist/form.cjs +1 -1
  156. package/dist/form.js +2 -1
  157. package/dist/{hashContent-DaeGmY-p.cjs.map → hashContent-kKvXKFa9.cjs.map} +1 -1
  158. package/dist/{hashContent-DYM21p6t.js.map → hashContent-nD2uWwi2.js.map} +1 -1
  159. package/dist/{icons-BDqiGXrO.js → icons-BbaI9Zf-.js} +9 -8
  160. package/dist/icons-BbaI9Zf-.js.map +1 -0
  161. package/dist/{icons-B57_93VV.cjs → icons-DPUeLS_Y.cjs} +3 -3
  162. package/dist/icons-DPUeLS_Y.cjs.map +1 -0
  163. package/dist/icons.cjs +1 -1
  164. package/dist/icons.js +1 -1
  165. package/dist/{iframe-WnWPIrBG.js → iframe-CEDOvkql.js} +5 -4
  166. package/dist/{iframe-WnWPIrBG.js.map → iframe-CEDOvkql.js.map} +1 -1
  167. package/dist/{iframe-DNHL3GIk.cjs → iframe-Ct50FYXq.cjs} +3 -3
  168. package/dist/{iframe-DNHL3GIk.cjs.map → iframe-Ct50FYXq.cjs.map} +1 -1
  169. package/dist/iframe.cjs +1 -1
  170. package/dist/iframe.js +1 -1
  171. package/dist/index.cjs +1 -1
  172. package/dist/index.js +65 -59
  173. package/dist/{input-BiSrTcrR.cjs → input-DMjpf6V8.cjs} +2 -2
  174. package/dist/{input-BiSrTcrR.cjs.map → input-DMjpf6V8.cjs.map} +1 -1
  175. package/dist/{input-VaXHFrRn.js → input-Ri72dn5t.js} +1 -1
  176. package/dist/{input-VaXHFrRn.js.map → input-Ri72dn5t.js.map} +1 -1
  177. package/dist/{input-chip-Dy-AiP55.cjs → input-chip-BhjGVpc3.cjs} +9 -9
  178. package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
  179. package/dist/{input-chip-QejNcRnS.js → input-chip-CI4__N8w.js} +13 -9
  180. package/dist/input-chip-CI4__N8w.js.map +1 -0
  181. package/dist/input.cjs +1 -1
  182. package/dist/input.js +1 -1
  183. package/dist/{intersection-CZpaIHeT.cjs.map → intersection-D1v1UCVv.cjs.map} +1 -1
  184. package/dist/{intersection-BPLpqYEd.js.map → intersection-LfEsy29T.js.map} +1 -1
  185. package/dist/json.cjs +3 -3
  186. package/dist/json.cjs.map +1 -1
  187. package/dist/json.js +5 -4
  188. package/dist/json.js.map +1 -1
  189. package/dist/kbd.cjs +28 -0
  190. package/dist/kbd.cjs.map +1 -0
  191. package/dist/kbd.js +45 -0
  192. package/dist/kbd.js.map +1 -0
  193. package/dist/{layout-yxSlLybo.js → layout-BE2ld1IY.js} +1 -1
  194. package/dist/{layout-yxSlLybo.js.map → layout-BE2ld1IY.js.map} +1 -1
  195. package/dist/layout-D7xOqMkJ.cjs +17 -0
  196. package/dist/{layout-DNYG3phx.cjs.map → layout-D7xOqMkJ.cjs.map} +1 -1
  197. package/dist/{layout-4C-6_cre.cjs → layout-PZCF3kwl.cjs} +1 -1
  198. package/dist/{layout-4C-6_cre.cjs.map → layout-PZCF3kwl.cjs.map} +1 -1
  199. package/dist/{layout-CnsXeCAy.js → layout-uAQpJN31.js} +20 -19
  200. package/dist/{layout-CnsXeCAy.js.map → layout-uAQpJN31.js.map} +1 -1
  201. package/dist/layout.cjs +1 -1
  202. package/dist/layout.js +2 -2
  203. package/dist/{lightbox-BrI1Z31s.js → lightbox-C0OEHns9.js} +10 -9
  204. package/dist/{lightbox-BrI1Z31s.js.map → lightbox-C0OEHns9.js.map} +1 -1
  205. package/dist/{lightbox-CmACf0t5.cjs → lightbox-cXRnvHMN.cjs} +20 -20
  206. package/dist/{lightbox-CmACf0t5.cjs.map → lightbox-cXRnvHMN.cjs.map} +1 -1
  207. package/dist/lightbox.cjs +1 -1
  208. package/dist/lightbox.js +1 -1
  209. package/dist/{list-swIL9VDv.cjs → list-CmJ5h35b.cjs} +5 -5
  210. package/dist/{list-swIL9VDv.cjs.map → list-CmJ5h35b.cjs.map} +1 -1
  211. package/dist/{list-Cm-jjXxM.js → list-d1mHar5p.js} +14 -13
  212. package/dist/{list-Cm-jjXxM.js.map → list-d1mHar5p.js.map} +1 -1
  213. package/dist/list.cjs +1 -1
  214. package/dist/list.js +1 -1
  215. package/dist/{litElement.mixin-3llHwB-8.cjs → litElement.mixin-Bj2q1yPw.cjs} +1 -1
  216. package/dist/{litElement.mixin-3llHwB-8.cjs.map → litElement.mixin-Bj2q1yPw.cjs.map} +1 -1
  217. package/dist/{litElement.mixin-6jJYHCrZ.js → litElement.mixin-CncaUoxz.js} +1 -1
  218. package/dist/{litElement.mixin-6jJYHCrZ.js.map → litElement.mixin-CncaUoxz.js.map} +1 -1
  219. package/dist/{magnetic-BZGFxAWG.js → magnetic-Dj52WplI.js} +2 -2
  220. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-Dj52WplI.js.map} +1 -1
  221. package/dist/{magnetic-Dux4QwO4.cjs → magnetic-aBBnj_vk.cjs} +1 -1
  222. package/dist/{magnetic-Dux4QwO4.cjs.map → magnetic-aBBnj_vk.cjs.map} +1 -1
  223. package/dist/{mailbox-D6LkQcN5.cjs → mailbox-BmChskZc.cjs} +59 -59
  224. package/dist/{mailbox-D6LkQcN5.cjs.map → mailbox-BmChskZc.cjs.map} +1 -1
  225. package/dist/{mailbox-BuvsVaAQ.js → mailbox-C4-E93be.js} +13 -12
  226. package/dist/{mailbox-BuvsVaAQ.js.map → mailbox-C4-E93be.js.map} +1 -1
  227. package/dist/mailbox.cjs +1 -1
  228. package/dist/mailbox.js +1 -1
  229. package/dist/{map-CQiKAxC3.js → map-DHyYLhvy.js} +6 -5
  230. package/dist/{map-CQiKAxC3.js.map → map-DHyYLhvy.js.map} +1 -1
  231. package/dist/{map-D5NN4VET.cjs → map-DYEvlNl0.cjs} +7 -7
  232. package/dist/{map-D5NN4VET.cjs.map → map-DYEvlNl0.cjs.map} +1 -1
  233. package/dist/map.cjs +1 -1
  234. package/dist/map.js +1 -1
  235. package/dist/{menu-CkgMO9K5.cjs → menu-BlPTI6H9.cjs} +3 -3
  236. package/dist/{menu-CkgMO9K5.cjs.map → menu-BlPTI6H9.cjs.map} +1 -1
  237. package/dist/{menu-C1x04YZw.js → menu-DFDBADp4.js} +3 -3
  238. package/dist/{menu-C1x04YZw.js.map → menu-DFDBADp4.js.map} +1 -1
  239. package/dist/menu.cjs +1 -1
  240. package/dist/menu.js +1 -1
  241. package/dist/mixins.cjs +1 -1
  242. package/dist/mixins.cjs.map +1 -1
  243. package/dist/mixins.js +43 -15
  244. package/dist/mixins.js.map +1 -1
  245. package/dist/nav-drawer.cjs +1 -1
  246. package/dist/nav-drawer.js +1 -1
  247. package/dist/navigation-bar.cjs +1 -1
  248. package/dist/navigation-bar.js +1 -1
  249. package/dist/navigation-rail.cjs +3 -3
  250. package/dist/navigation-rail.cjs.map +1 -1
  251. package/dist/navigation-rail.js +2 -2
  252. package/dist/{notification-BnBgxjF-.js → notification-DGpv8g2H.js} +4 -4
  253. package/dist/{notification-BnBgxjF-.js.map → notification-DGpv8g2H.js.map} +1 -1
  254. package/dist/notification-DKVWYhqs.cjs +23 -0
  255. package/dist/{notification-CZFEhWxc.cjs.map → notification-DKVWYhqs.cjs.map} +1 -1
  256. package/dist/notification.cjs +1 -1
  257. package/dist/notification.js +1 -1
  258. package/dist/{option-DBO8xZwd.js → option-BD2eh458.js} +6 -5
  259. package/dist/{option-DBO8xZwd.js.map → option-BD2eh458.js.map} +1 -1
  260. package/dist/{option-BrxCVwSx.cjs → option-LtSDy2xf.cjs} +5 -5
  261. package/dist/{option-BrxCVwSx.cjs.map → option-LtSDy2xf.cjs.map} +1 -1
  262. package/dist/option.cjs +1 -1
  263. package/dist/option.js +1 -1
  264. package/dist/{overlay-stack-DQey9Qph.cjs.map → overlay-stack-CEYGD9T1.cjs.map} +1 -1
  265. package/dist/{overlay-stack-DT1SdaGW.js.map → overlay-stack-Ca4EK2Mu.js.map} +1 -1
  266. package/dist/page.cjs +2 -2
  267. package/dist/page.cjs.map +1 -1
  268. package/dist/page.js +5 -5
  269. package/dist/{progress-Db2e4_Zd.cjs → progress-B5ChDPbB.cjs} +2 -2
  270. package/dist/{progress-Db2e4_Zd.cjs.map → progress-B5ChDPbB.cjs.map} +1 -1
  271. package/dist/{progress-DeiHxXo7.js → progress-CE1Pk2hi.js} +2 -2
  272. package/dist/{progress-DeiHxXo7.js.map → progress-CE1Pk2hi.js.map} +1 -1
  273. package/dist/progress.cjs +1 -1
  274. package/dist/progress.js +1 -1
  275. package/dist/{provide-DHnhQtCH.cjs → provide-BZ9lq_Be.cjs} +1 -1
  276. package/dist/{provide-DHnhQtCH.cjs.map → provide-BZ9lq_Be.cjs.map} +1 -1
  277. package/dist/{provide-C1aQhxYo.js → provide-jn1Fj1vv.js} +1 -1
  278. package/dist/{provide-C1aQhxYo.js.map → provide-jn1Fj1vv.js.map} +1 -1
  279. package/dist/qr-scanner.cjs +2 -2
  280. package/dist/qr-scanner.cjs.map +1 -1
  281. package/dist/qr-scanner.js +2 -2
  282. package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
  283. package/dist/{radio-group-Cspwd-Vw.cjs.map → radio-group-Cd9pZ2MR.cjs.map} +1 -1
  284. package/dist/{radio-group-zSO0AkJf.js → radio-group-CyRHgIF3.js} +7 -6
  285. package/dist/{radio-group-zSO0AkJf.js.map → radio-group-CyRHgIF3.js.map} +1 -1
  286. package/dist/radio-group.cjs +1 -1
  287. package/dist/radio-group.js +1 -1
  288. package/dist/range.cjs +4 -4
  289. package/dist/range.cjs.map +1 -1
  290. package/dist/range.js +4 -3
  291. package/dist/range.js.map +1 -1
  292. package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-B83yZbcO.js.map} +1 -1
  293. package/dist/{reduced-motion-Ds05GPyz.cjs.map → reduced-motion-DR32yKEO.cjs.map} +1 -1
  294. package/dist/{rxjs-utils-BSjmI9-Q.js.map → rxjs-utils-Bldch1RO.js.map} +1 -1
  295. package/dist/{rxjs-utils-DCsfzeap.cjs.map → rxjs-utils-hAgKC7vk.cjs.map} +1 -1
  296. package/dist/rxjs-utils.cjs +1 -1
  297. package/dist/rxjs-utils.js +1 -1
  298. package/dist/{scroll-QMCmbbDv.cjs → scroll-C_iNOi7E.cjs} +2 -2
  299. package/dist/{scroll-QMCmbbDv.cjs.map → scroll-C_iNOi7E.cjs.map} +1 -1
  300. package/dist/{scroll-cBDzye64.js → scroll-DoliwpRu.js} +7 -6
  301. package/dist/{scroll-cBDzye64.js.map → scroll-DoliwpRu.js.map} +1 -1
  302. package/dist/{search-C4dFHYbX.js.map → search-BlGJ6uJv.js.map} +1 -1
  303. package/dist/{search-Ds8tt7Et.cjs.map → search-C8eAOzBm.cjs.map} +1 -1
  304. package/dist/{select-Ct37l3lg.cjs → select-CWWuZ2iJ.cjs} +2 -2
  305. package/dist/{select-Ct37l3lg.cjs.map → select-CWWuZ2iJ.cjs.map} +1 -1
  306. package/dist/{select-c6HbWvKP.js → select-_vHPXi30.js} +3 -3
  307. package/dist/{select-c6HbWvKP.js.map → select-_vHPXi30.js.map} +1 -1
  308. package/dist/select.cjs +1 -1
  309. package/dist/select.js +1 -1
  310. package/dist/{sheet-BMXcUiIm.js → sheet-i1KtxGIj.js} +5 -5
  311. package/dist/{sheet-BMXcUiIm.js.map → sheet-i1KtxGIj.js.map} +1 -1
  312. package/dist/{sheet-CQec-bCV.cjs → sheet-r0oEYIdi.cjs} +2 -2
  313. package/dist/{sheet-CQec-bCV.cjs.map → sheet-r0oEYIdi.cjs.map} +1 -1
  314. package/dist/sheet.cjs +1 -1
  315. package/dist/sheet.js +2 -2
  316. package/dist/{sheet.service-Dumvr1HT.cjs → sheet.service-Cr13Oo6G.cjs} +1 -1
  317. package/dist/{sheet.service-Dumvr1HT.cjs.map → sheet.service-Cr13Oo6G.cjs.map} +1 -1
  318. package/dist/{sheet.service-BcPV3Du4.js → sheet.service-DUO5_kmI.js} +3 -3
  319. package/dist/{sheet.service-BcPV3Du4.js.map → sheet.service-DUO5_kmI.js.map} +1 -1
  320. package/dist/skeleton.cjs +33 -0
  321. package/dist/skeleton.cjs.map +1 -0
  322. package/dist/skeleton.js +58 -0
  323. package/dist/skeleton.js.map +1 -0
  324. package/dist/skills/INDEX.md +7 -6
  325. package/dist/skills/breadcrumb.md +53 -0
  326. package/dist/skills/kbd.md +40 -0
  327. package/dist/skills/schmancy/INDEX.md +7 -6
  328. package/dist/skills/schmancy/breadcrumb.md +53 -0
  329. package/dist/skills/schmancy/kbd.md +40 -0
  330. package/dist/skills/schmancy/skeleton.md +40 -0
  331. package/dist/skills/schmancy/splash-screen.md +60 -0
  332. package/dist/skills/schmancy/switch.md +58 -0
  333. package/dist/skills/schmancy/tooltip.md +1 -1
  334. package/dist/skills/schmancy/visually-hidden.md +41 -0
  335. package/dist/skills/skeleton.md +40 -0
  336. package/dist/skills/splash-screen.md +60 -0
  337. package/dist/skills/switch.md +58 -0
  338. package/dist/skills/tooltip.md +1 -1
  339. package/dist/skills/visually-hidden.md +41 -0
  340. package/dist/slider.cjs +3 -3
  341. package/dist/slider.cjs.map +1 -1
  342. package/dist/slider.js +2 -2
  343. package/dist/{sound.service-Bu3EQLv2.cjs → sound.service-BjSoGjmT.cjs} +1 -1
  344. package/dist/{sound.service-Bu3EQLv2.cjs.map → sound.service-BjSoGjmT.cjs.map} +1 -1
  345. package/dist/{sound.service-m3BrSfuH.js → sound.service-cdkw3Wkv.js} +1 -1
  346. package/dist/{sound.service-m3BrSfuH.js.map → sound.service-cdkw3Wkv.js.map} +1 -1
  347. package/dist/splash-screen-CquyPP1C.cjs +41 -0
  348. package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
  349. package/dist/splash-screen-CvucPkpD.js +83 -0
  350. package/dist/splash-screen-CvucPkpD.js.map +1 -0
  351. package/dist/splash-screen.cjs +1 -0
  352. package/dist/splash-screen.js +1 -0
  353. package/dist/src-Bemk2C2P.cjs +269 -0
  354. package/dist/{src-BtQVyqMy.cjs.map → src-Bemk2C2P.cjs.map} +1 -1
  355. package/dist/{src-BLngW2bl.js → src-f5a3W9Mj.js} +98 -91
  356. package/dist/{src-BLngW2bl.js.map → src-f5a3W9Mj.js.map} +1 -1
  357. package/dist/steps.cjs +10 -10
  358. package/dist/steps.cjs.map +1 -1
  359. package/dist/steps.js +10 -9
  360. package/dist/steps.js.map +1 -1
  361. package/dist/{store-DYqDLAvT.js.map → store-Bmj6rvZY.js.map} +1 -1
  362. package/dist/{store-CorvD3bT.cjs.map → store-CO4nJyGj.cjs.map} +1 -1
  363. package/dist/store.cjs +1 -1
  364. package/dist/store.js +1 -1
  365. package/dist/surface-CDufon40.cjs +7 -0
  366. package/dist/{surface-BjKZoJxK.cjs.map → surface-CDufon40.cjs.map} +1 -1
  367. package/dist/surface-CkEYJCae.js +22 -0
  368. package/dist/{surface-pK8hME5c.js.map → surface-CkEYJCae.js.map} +1 -1
  369. package/dist/surface.cjs +1 -1
  370. package/dist/surface.js +1 -1
  371. package/dist/{surface.mixin-C5sDI1-_.cjs → surface.mixin-CSKqQH-0.cjs} +2 -2
  372. package/dist/{surface.mixin-C5sDI1-_.cjs.map → surface.mixin-CSKqQH-0.cjs.map} +1 -1
  373. package/dist/{surface.mixin-CBNRpJum.js → surface.mixin-DqMwoddO.js} +1 -1
  374. package/dist/{surface.mixin-CBNRpJum.js.map → surface.mixin-DqMwoddO.js.map} +1 -1
  375. package/dist/switch.cjs +69 -0
  376. package/dist/switch.cjs.map +1 -0
  377. package/dist/switch.js +132 -0
  378. package/dist/switch.js.map +1 -0
  379. package/dist/{table-CiqgZzSd.cjs → table-DWc1mkpj.cjs} +3 -3
  380. package/dist/{table-CiqgZzSd.cjs.map → table-DWc1mkpj.cjs.map} +1 -1
  381. package/dist/{table-BXIHX9h4.js → table-P6VGG7NK.js} +4 -4
  382. package/dist/{table-BXIHX9h4.js.map → table-P6VGG7NK.js.map} +1 -1
  383. package/dist/table.cjs +1 -1
  384. package/dist/table.js +1 -1
  385. package/dist/{tabs-nbV5eblZ.js → tabs-CjGjGrqY.js} +13 -12
  386. package/dist/{tabs-nbV5eblZ.js.map → tabs-CjGjGrqY.js.map} +1 -1
  387. package/dist/{tabs-CKa-W4qA.cjs → tabs-DGJEKuhC.cjs} +4 -4
  388. package/dist/{tabs-CKa-W4qA.cjs.map → tabs-DGJEKuhC.cjs.map} +1 -1
  389. package/dist/tabs.cjs +1 -1
  390. package/dist/tabs.js +1 -1
  391. package/dist/{tailwind.mixin-BF1Huas7.cjs → tailwind.mixin-Cpa-VnnX.cjs} +2 -2
  392. package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
  393. package/dist/{tailwind.mixin-BCJOOX1_.js → tailwind.mixin-DufHBjmb.js} +57 -63
  394. package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
  395. package/dist/teleport.cjs +1 -1
  396. package/dist/teleport.js +1 -1
  397. package/dist/{textarea-D7q8exMg.js → textarea-DZT_Ofp5.js} +42 -28
  398. package/dist/textarea-DZT_Ofp5.js.map +1 -0
  399. package/dist/textarea-jmTOXrzl.cjs +39 -0
  400. package/dist/textarea-jmTOXrzl.cjs.map +1 -0
  401. package/dist/textarea.cjs +1 -1
  402. package/dist/textarea.js +1 -1
  403. package/dist/theme-CCKqaksQ.cjs +181 -0
  404. package/dist/{theme-Da4SPq9X.cjs.map → theme-CCKqaksQ.cjs.map} +1 -1
  405. package/dist/{theme-_VPV6Bxh.js → theme-CEc32pAv.js} +13 -12
  406. package/dist/{theme-_VPV6Bxh.js.map → theme-CEc32pAv.js.map} +1 -1
  407. package/dist/theme-button-BsJcv-Zv.cjs +8 -0
  408. package/dist/{theme-button-Ci8VQ7KW.cjs.map → theme-button-BsJcv-Zv.cjs.map} +1 -1
  409. package/dist/{theme-button--sX8A-m1.js → theme-button-dOiAvdKU.js} +4 -3
  410. package/dist/{theme-button--sX8A-m1.js.map → theme-button-dOiAvdKU.js.map} +1 -1
  411. package/dist/theme-button.cjs +1 -1
  412. package/dist/theme-button.js +1 -1
  413. package/dist/theme.cjs +1 -1
  414. package/dist/{theme.events-Cv7N4Toe.js.map → theme.events-Bw3mYjUA.js.map} +1 -1
  415. package/dist/{theme.events-DM4H5F2d.cjs.map → theme.events-EznKK2Y0.cjs.map} +1 -1
  416. package/dist/{theme.interface-Da23QAYb.cjs.map → theme.interface-CM26m9te.cjs.map} +1 -1
  417. package/dist/{theme.interface-CXloMUCw.js.map → theme.interface-FAUIgbIq.js.map} +1 -1
  418. package/dist/theme.js +5 -5
  419. package/dist/{theme.service-C_tjlqgy.cjs → theme.service-ETiKUwVy.cjs} +1 -1
  420. package/dist/{theme.service-C_tjlqgy.cjs.map → theme.service-ETiKUwVy.cjs.map} +1 -1
  421. package/dist/{theme.service-D9lEas89.js → theme.service-_qP5WvB9.js} +2 -2
  422. package/dist/{theme.service-D9lEas89.js.map → theme.service-_qP5WvB9.js.map} +1 -1
  423. package/dist/tooltip.cjs +1 -6
  424. package/dist/tooltip.cjs.map +1 -1
  425. package/dist/tooltip.js +51 -135
  426. package/dist/tooltip.js.map +1 -1
  427. package/dist/tree.cjs +14 -5
  428. package/dist/tree.cjs.map +1 -1
  429. package/dist/tree.js +28 -6
  430. package/dist/tree.js.map +1 -1
  431. package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
  432. package/dist/{tslib.es6-D7BIeDVB.cjs.map → tslib.es6-Bd-92OW3.cjs.map} +1 -1
  433. package/dist/tslib.es6-CI1onEZb.js +7 -0
  434. package/dist/{tslib.es6-ErZEp3OO.js.map → tslib.es6-CI1onEZb.js.map} +1 -1
  435. package/dist/typewriter-ByIL2Mh-.cjs +123 -0
  436. package/dist/{typewriter-B2TnHPjw.cjs.map → typewriter-ByIL2Mh-.cjs.map} +1 -1
  437. package/dist/{typewriter-BrZNa8T-.js → typewriter-vOQ3bDLb.js} +8 -7
  438. package/dist/{typewriter-BrZNa8T-.js.map → typewriter-vOQ3bDLb.js.map} +1 -1
  439. package/dist/typewriter.cjs +1 -1
  440. package/dist/typewriter.js +1 -1
  441. package/dist/typography.cjs +4 -4
  442. package/dist/typography.cjs.map +1 -1
  443. package/dist/typography.js +10 -9
  444. package/dist/typography.js.map +1 -1
  445. package/dist/{utils-CoU7M2YS.js → utils-Cq0m3LYo.js} +3 -3
  446. package/dist/{utils-CoU7M2YS.js.map → utils-Cq0m3LYo.js.map} +1 -1
  447. package/dist/{utils-BcaKtQuA.cjs → utils-D2kE-6zc.cjs} +1 -1
  448. package/dist/{utils-BcaKtQuA.cjs.map → utils-D2kE-6zc.cjs.map} +1 -1
  449. package/dist/utils.cjs +1 -1
  450. package/dist/utils.js +5 -5
  451. package/dist/visually-hidden.cjs +13 -0
  452. package/dist/visually-hidden.cjs.map +1 -0
  453. package/dist/visually-hidden.js +24 -0
  454. package/dist/visually-hidden.js.map +1 -0
  455. package/dist/{window-Uii13x_r.cjs → window-BS7ZQjgH.cjs} +2 -2
  456. package/dist/window-BS7ZQjgH.cjs.map +1 -0
  457. package/dist/{window-CM1ycigo.js → window-WnAihpsA.js} +7 -7
  458. package/dist/window-WnAihpsA.js.map +1 -0
  459. package/dist/window.cjs +1 -1
  460. package/dist/window.js +1 -1
  461. package/mixins/formField.mixin.ts +96 -69
  462. package/mixins/tailwind.css +11 -0
  463. package/package.json +17 -26
  464. package/skills/schmancy/INDEX.md +7 -6
  465. package/skills/schmancy/breadcrumb.md +53 -0
  466. package/skills/schmancy/kbd.md +40 -0
  467. package/skills/schmancy/skeleton.md +40 -0
  468. package/skills/schmancy/splash-screen.md +60 -0
  469. package/skills/schmancy/switch.md +58 -0
  470. package/skills/schmancy/tooltip.md +1 -1
  471. package/skills/schmancy/visually-hidden.md +41 -0
  472. package/src/audio/emotional-sounds.ts +2 -4
  473. package/src/autocomplete/autocomplete.ts +52 -2
  474. package/src/breadcrumb/breadcrumb.ts +109 -0
  475. package/src/breadcrumb/index.ts +1 -0
  476. package/src/button/button.ts +40 -0
  477. package/src/button/icon-button.ts +2 -1
  478. package/src/checkbox/checkbox.test.ts +113 -0
  479. package/src/checkbox/checkbox.ts +41 -1
  480. package/src/chips/filter-chip.ts +15 -0
  481. package/src/chips/input-chip.ts +7 -0
  482. package/src/date-range/date-range-helpers.ts +0 -71
  483. package/src/dialog/dialog-base.mixin.ts +11 -0
  484. package/src/dialog/dialog.component.ts +28 -8
  485. package/src/dropdown/dropdown-content.ts +3 -1
  486. package/src/form/form.test.ts +137 -0
  487. package/src/form/form.ts +142 -158
  488. package/src/form/index.ts +2 -2
  489. package/src/icons/icon.ts +1 -0
  490. package/src/index.ts +6 -0
  491. package/src/kbd/index.ts +1 -0
  492. package/src/kbd/kbd.ts +59 -0
  493. package/src/skeleton/index.ts +1 -0
  494. package/src/skeleton/skeleton.ts +78 -0
  495. package/src/splash-screen/index.ts +1 -0
  496. package/src/splash-screen/splash-screen.ts +154 -0
  497. package/src/switch/index.ts +1 -0
  498. package/src/switch/switch.test.ts +93 -0
  499. package/src/switch/switch.ts +180 -0
  500. package/src/test-utils/a11y.ts +35 -0
  501. package/src/textarea/textarea.ts +32 -2
  502. package/src/tooltip/index.ts +1 -2
  503. package/src/tree/tree.ts +27 -2
  504. package/src/visually-hidden/index.ts +1 -0
  505. package/src/visually-hidden/visually-hidden.ts +39 -0
  506. package/src/window/window-position.ts +1 -74
  507. package/types/mixins/formField.mixin.d.ts +15 -8
  508. package/types/src/audio/emotional-sounds.d.ts +0 -2
  509. package/types/src/autocomplete/autocomplete.d.ts +7 -0
  510. package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
  511. package/types/src/breadcrumb/index.d.ts +1 -0
  512. package/types/src/button/button.d.ts +7 -0
  513. package/types/src/button/icon-button.d.ts +2 -1
  514. package/types/src/checkbox/checkbox.d.ts +6 -0
  515. package/types/src/checkbox/checkbox.test.d.ts +1 -0
  516. package/types/src/chips/filter-chip.d.ts +3 -0
  517. package/types/src/chips/input-chip.d.ts +1 -0
  518. package/types/src/date-range/date-range-helpers.d.ts +0 -12
  519. package/types/src/dialog/dialog.component.d.ts +6 -0
  520. package/types/src/dropdown/dropdown-content.d.ts +3 -1
  521. package/types/src/form/form-v2.d.ts +12 -63
  522. package/types/src/form/form.d.ts +58 -40
  523. package/types/src/form/form.test.d.ts +4 -0
  524. package/types/src/form/index.d.ts +1 -1
  525. package/types/src/icons/icon.d.ts +1 -0
  526. package/types/src/index.d.ts +6 -0
  527. package/types/src/kbd/index.d.ts +1 -0
  528. package/types/src/kbd/kbd.d.ts +25 -0
  529. package/types/src/skeleton/index.d.ts +1 -0
  530. package/types/src/skeleton/skeleton.d.ts +27 -0
  531. package/types/src/splash-screen/index.d.ts +1 -0
  532. package/types/src/splash-screen/splash-screen.d.ts +60 -0
  533. package/types/src/switch/index.d.ts +1 -0
  534. package/types/src/switch/switch.d.ts +54 -0
  535. package/types/src/switch/switch.test.d.ts +1 -0
  536. package/types/src/test-utils/a11y.d.ts +11 -0
  537. package/types/src/textarea/textarea.d.ts +5 -1
  538. package/types/src/tooltip/index.d.ts +0 -1
  539. package/types/src/tree/tree.d.ts +5 -0
  540. package/types/src/visually-hidden/index.d.ts +1 -0
  541. package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
  542. package/types/src/window/window-position.d.ts +1 -35
  543. package/dist/audio-DtYYgzYD.cjs.map +0 -1
  544. package/dist/audio-kz8UgPTO.js.map +0 -1
  545. package/dist/autocomplete-5rVhbieU.cjs +0 -111
  546. package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
  547. package/dist/autocomplete-BllPQwr8.js.map +0 -1
  548. package/dist/chips-B19XS8Xc.cjs.map +0 -1
  549. package/dist/chips-B9oAEfE_.js.map +0 -1
  550. package/dist/components-CyD6a7gQ.cjs +0 -73
  551. package/dist/date-range-Sfyco9-n.js.map +0 -1
  552. package/dist/date-range-ZAaQB22I.cjs.map +0 -1
  553. package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
  554. package/dist/delay-7boauN6N.cjs +0 -9
  555. package/dist/float-D5rNC82i.cjs +0 -1
  556. package/dist/form-BqN1AGFj.cjs +0 -1
  557. package/dist/form-BqN1AGFj.cjs.map +0 -1
  558. package/dist/form-CajC5HnO.js +0 -270
  559. package/dist/form-CajC5HnO.js.map +0 -1
  560. package/dist/icons-B57_93VV.cjs.map +0 -1
  561. package/dist/icons-BDqiGXrO.js.map +0 -1
  562. package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
  563. package/dist/input-chip-QejNcRnS.js.map +0 -1
  564. package/dist/layout-DNYG3phx.cjs +0 -17
  565. package/dist/notification-CZFEhWxc.cjs +0 -23
  566. package/dist/radio-group-Cspwd-Vw.cjs +0 -40
  567. package/dist/src-BtQVyqMy.cjs +0 -269
  568. package/dist/surface-BjKZoJxK.cjs +0 -7
  569. package/dist/surface-pK8hME5c.js +0 -21
  570. package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
  571. package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
  572. package/dist/textarea-Cp1ZE60O.cjs +0 -35
  573. package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
  574. package/dist/textarea-D7q8exMg.js.map +0 -1
  575. package/dist/theme-Da4SPq9X.cjs +0 -181
  576. package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
  577. package/dist/typewriter-B2TnHPjw.cjs +0 -123
  578. package/dist/window-CM1ycigo.js.map +0 -1
  579. package/dist/window-Uii13x_r.cjs.map +0 -1
  580. package/src/form/form-v2.ts +0 -268
  581. package/src/layout/v2/grid.ts +0 -93
  582. package/src/notification/outlet.ts +0 -16
  583. package/src/store/immer-integration.ts +0 -99
  584. package/src/tooltip/tooltip.ts +0 -216
  585. /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
  586. /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
  587. /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
  588. /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
  589. /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
  590. /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
  591. /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
  592. /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
  593. /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
  594. /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
  595. /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
  596. /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
  597. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
  598. /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
  599. /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
  600. /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
  601. /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
  602. /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
  603. /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
  604. /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
  605. /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
  606. /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
  607. /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
  608. /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-C7TzWI8M.js","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n\nexport default EmotionalSoundGenerator\n"],"mappings":"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"}
@@ -1 +1 @@
1
- require(`./sound.service-Bu3EQLv2.cjs`);var e=class{constructor(){this.audioContext=null,this.volume=.15,this.muted=!1}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}puff(e,t,n,r){let i=this.getContext(),a=Math.floor(i.sampleRate*t),o=i.createBuffer(1,a,i.sampleRate),s=o.getChannelData(0);for(let e=0;e<a;e++)s[e]=2*Math.random()-1;let c=i.createBufferSource();c.buffer=o;let l=i.createBiquadFilter();l.type=`bandpass`,l.frequency.value=n,l.Q.value=.7;let u=i.createGain();u.gain.setValueAtTime(0,e),u.gain.linearRampToValueAtTime(r*this.volume,e+.015),u.gain.exponentialRampToValueAtTime(.001,e+t),c.connect(l).connect(u).connect(i.destination),c.start(e),c.stop(e+t)}tone(e,t,n,r,i=`sine`,a){let o=this.getContext(),s=o.createOscillator(),c=o.createGain();s.type=i,s.frequency.setValueAtTime(n,e),a&&s.frequency.exponentialRampToValueAtTime(a,e+.8*t),c.gain.setValueAtTime(0,e),c.gain.linearRampToValueAtTime(r*this.volume,e+.02),c.gain.exponentialRampToValueAtTime(.001,e+t),s.connect(c).connect(o.destination),s.start(e),s.stop(e+t)}warmTone(e,t,n,r,i=800){let a=this.getContext(),o=a.createOscillator(),s=a.createBiquadFilter(),c=a.createGain();o.type=`sine`,o.frequency.value=n,s.type=`lowpass`,s.frequency.value=i,c.gain.setValueAtTime(0,e),c.gain.linearRampToValueAtTime(r*this.volume,e+.03),c.gain.exponentialRampToValueAtTime(.001,e+t),o.connect(s).connect(c).connect(a.destination),o.start(e),o.stop(e+t)}shimmer(e,t,n,r){[n,1.5*n,2*n].forEach((n,i)=>{this.tone(e+.02*i,t-.02*i,n,r*(1-.2*i))})}playJoyful(){let e=this.getContext().currentTime;this.puff(e,.08,3e3,.3),this.puff(e+.06,.1,3500,.35),this.tone(e+.02,.15,784,.25),this.tone(e+.1,.2,988,.3),this.tone(e+.18,.25,1175,.25)}playContent(){let e=this.getContext().currentTime;this.puff(e,.2,1500,.25),this.warmTone(e+.05,.3,523,.2),this.warmTone(e+.15,.35,659,.15)}playExcited(){let e=this.getContext().currentTime;this.puff(e,.06,2500,.25),this.puff(e+.05,.06,3e3,.3),this.puff(e+.1,.08,3500,.35),this.tone(e+.02,.12,880,.2),this.tone(e+.08,.12,1047,.25),this.tone(e+.14,.15,1319,.3)}playProud(){let e=this.getContext().currentTime;this.puff(e,.15,1800,.3),this.tone(e+.05,.25,523,.25),this.tone(e+.08,.25,659,.2),this.tone(e+.11,.3,784,.25)}playHopeful(){let e=this.getContext().currentTime;this.puff(e,.12,2200,.2),this.tone(e+.03,.3,659,.2,`sine`,880)}playRelieved(){let e=this.getContext().currentTime;this.puff(e,.25,1200,.35),this.warmTone(e+.1,.35,659,.2),this.warmTone(e+.25,.4,523,.15)}playGrateful(){let e=this.getContext().currentTime;this.puff(e,.15,1500,.25),this.warmTone(e+.05,.3,440,.2),this.warmTone(e+.15,.35,523,.2),this.warmTone(e+.25,.4,659,.15)}playPeaceful(){let e=this.getContext().currentTime;this.puff(e,.3,800,.15),this.warmTone(e+.1,.5,392,.12,500)}playPlayful(){let e=this.getContext().currentTime;this.puff(e,.05,2800,.2),this.puff(e+.08,.05,3200,.25),this.puff(e+.14,.06,2800,.2),this.tone(e+.03,.1,784,.2),this.tone(e+.1,.08,988,.25),this.tone(e+.16,.12,784,.2)}playAmused(){let e=this.getContext().currentTime;this.puff(e,.04,2500,.2),this.puff(e+.06,.04,2800,.22),this.puff(e+.11,.05,2600,.18),this.tone(e+.05,.15,880,.15)}playCurious(){let e=this.getContext().currentTime;this.puff(e,.1,2e3,.2),this.tone(e+.03,.2,659,.2,`sine`,880)}playInspired(){let e=this.getContext().currentTime;this.puff(e,.1,2500,.25),this.shimmer(e+.05,.3,523,.2)}playConfident(){let e=this.getContext().currentTime;this.puff(e,.12,1500,.3),this.tone(e+.04,.2,523,.25),this.tone(e+.06,.22,659,.2)}playLoved(){let e=this.getContext().currentTime;this.puff(e,.2,1e3,.2),this.warmTone(e+.08,.4,392,.18,600),this.warmTone(e+.2,.45,494,.15,600)}playComforted(){let e=this.getContext().currentTime;this.puff(e,.25,900,.18),this.warmTone(e+.1,.35,523,.15),this.warmTone(e+.25,.4,440,.12)}playEnergized(){let e=this.getContext().currentTime;this.puff(e,.05,3e3,.25),this.puff(e+.04,.05,3500,.28),this.tone(e+.02,.1,784,.2),this.tone(e+.08,.12,988,.25),this.tone(e+.14,.15,1175,.22)}playCelebrated(){let e=this.getContext().currentTime;this.puff(e,.08,2500,.2),this.tone(e+.02,.18,523,.22),this.tone(e+.08,.18,659,.24),this.tone(e+.14,.2,784,.26),this.tone(e+.22,.3,1047,.22),this.shimmer(e+.25,.35,523,.12)}playSad(){let e=this.getContext().currentTime;this.puff(e,.3,600,.25),this.warmTone(e+.1,.4,392,.2,400),this.warmTone(e+.3,.45,294,.15,350)}playLonely(){let e=this.getContext().currentTime;this.puff(e,.2,700,.2),this.warmTone(e+.15,.5,330,.12,450)}playDisappointed(){let e=this.getContext().currentTime;this.puff(e,.25,800,.25),this.tone(e+.08,.3,523,.18,`sine`,349)}playMelancholic(){let e=this.getContext().currentTime;this.puff(e,.3,700,.18),this.warmTone(e+.1,.45,440,.15,500),this.warmTone(e+.3,.5,392,.12,450)}playAnxious(){let e=this.getContext(),t=e.currentTime;this.puff(t,.08,1800,.2),this.puff(t+.12,.08,1900,.22);let n=e.createOscillator(),r=e.createGain(),i=e.createOscillator(),a=e.createGain();n.frequency.value=440,i.frequency.value=8,a.gain.value=20,i.connect(a).connect(n.frequency),r.gain.setValueAtTime(0,t),r.gain.linearRampToValueAtTime(.15*this.volume,t+.03),r.gain.exponentialRampToValueAtTime(.001,t+.25),n.connect(r).connect(e.destination),i.start(t),n.start(t),n.stop(t+.3),i.stop(t+.3)}playWorried(){let e=this.getContext().currentTime;this.puff(e,.15,1200,.2),this.tone(e+.05,.25,349,.15,`sine`,392)}playNervous(){let e=this.getContext().currentTime;this.puff(e,.05,2e3,.18),this.puff(e+.08,.05,2100,.18),this.puff(e+.15,.06,2e3,.16),this.tone(e+.04,.2,494,.12)}playStartled(){let e=this.getContext().currentTime;this.puff(e,.04,3500,.3),this.tone(e,.08,1047,.25),this.tone(e+.05,.15,880,.15)}playAnnoyed(){let e=this.getContext().currentTime;this.puff(e,.1,1e3,.25),this.warmTone(e+.03,.2,294,.18,400)}playFrustrated(){let e=this.getContext().currentTime;this.puff(e,.12,900,.28),this.tone(e+.04,.15,349,.2),this.tone(e+.12,.12,330,.18)}playImpatient(){let e=this.getContext().currentTime;this.puff(e,.04,1500,.2),this.puff(e+.08,.04,1500,.2),this.puff(e+.16,.04,1500,.22),this.tone(e+.06,.1,523,.15)}playTired(){let e=this.getContext().currentTime;this.puff(e,.35,500,.2),this.warmTone(e+.1,.4,330,.12,350)}playExhausted(){let e=this.getContext().currentTime;this.puff(e,.45,400,.18),this.warmTone(e+.15,.5,294,.1,300)}playBored(){let e=this.getContext().currentTime;this.puff(e,.25,600,.15),this.warmTone(e+.1,.3,349,.1,400)}playCalm(){let e=this.getContext().currentTime;this.puff(e,.3,600,.12),this.warmTone(e+.1,.5,392,.1,500)}playRelaxed(){let e=this.getContext().currentTime;this.puff(e,.35,700,.15),this.warmTone(e+.15,.45,440,.1),this.warmTone(e+.35,.5,392,.08)}playGrounded(){let e=this.getContext().currentTime;this.puff(e,.25,500,.2),this.warmTone(e+.1,.4,262,.15,350)}playSafe(){let e=this.getContext().currentTime;this.puff(e,.3,700,.15),this.warmTone(e+.1,.4,349,.12),this.warmTone(e+.25,.45,440,.1)}playConnected(){let e=this.getContext().currentTime;this.puff(e,.2,1200,.18),this.warmTone(e+.08,.3,440,.15),this.warmTone(e+.12,.32,523,.12)}playAppreciated(){let e=this.getContext().currentTime;this.puff(e,.15,1500,.2),this.warmTone(e+.05,.25,440,.15),this.warmTone(e+.15,.3,523,.18)}playSupported(){let e=this.getContext().currentTime;this.puff(e,.25,900,.18),this.warmTone(e+.1,.35,349,.12),this.warmTone(e+.15,.4,440,.1)}playNostalgic(){let e=this.getContext().currentTime;this.puff(e,.25,800,.15),this.warmTone(e+.1,.4,440,.12,500),this.warmTone(e+.3,.45,392,.1,450)}playSurprised(){let e=this.getContext().currentTime;this.puff(e,.06,2800,.25),this.tone(e+.02,.15,659,.2,`sine`,988)}playAwestruck(){let e=this.getContext().currentTime;this.puff(e,.2,1500,.2),this.shimmer(e+.08,.4,440,.15)}playConfused(){let e=this.getContext().currentTime;this.puff(e,.12,1200,.18),this.tone(e+.04,.2,440,.12,`sine`,494),this.tone(e+.15,.15,466,.1)}setVolume(e){this.volume=Math.max(0,Math.min(1,e))}getVolume(){return this.volume}mute(){this.muted=!0}unmute(){this.muted=!1}isMuted(){return this.muted}play(e){if(this.muted)return;let t={joyful:()=>this.playJoyful(),content:()=>this.playContent(),excited:()=>this.playExcited(),proud:()=>this.playProud(),hopeful:()=>this.playHopeful(),relieved:()=>this.playRelieved(),grateful:()=>this.playGrateful(),peaceful:()=>this.playPeaceful(),playful:()=>this.playPlayful(),amused:()=>this.playAmused(),curious:()=>this.playCurious(),inspired:()=>this.playInspired(),confident:()=>this.playConfident(),loved:()=>this.playLoved(),comforted:()=>this.playComforted(),energized:()=>this.playEnergized(),celebrated:()=>this.playCelebrated(),sad:()=>this.playSad(),lonely:()=>this.playLonely(),disappointed:()=>this.playDisappointed(),heartbroken:()=>this.playSad(),grieving:()=>this.playSad(),hopeless:()=>this.playLonely(),empty:()=>this.playLonely(),discouraged:()=>this.playDisappointed(),melancholic:()=>this.playMelancholic(),homesick:()=>this.playNostalgic(),hurt:()=>this.playSad(),miserable:()=>this.playSad(),regretful:()=>this.playMelancholic(),ashamed:()=>this.playDisappointed(),inferior:()=>this.playDisappointed(),anxious:()=>this.playAnxious(),worried:()=>this.playWorried(),afraid:()=>this.playAnxious(),terrified:()=>this.playStartled(),panicked:()=>this.playStartled(),nervous:()=>this.playNervous(),uneasy:()=>this.playWorried(),insecure:()=>this.playNervous(),overwhelmed:()=>this.playAnxious(),stressed:()=>this.playAnxious(),tense:()=>this.playAnxious(),apprehensive:()=>this.playWorried(),startled:()=>this.playStartled(),suspicious:()=>this.playWorried(),vulnerable:()=>this.playNervous(),annoyed:()=>this.playAnnoyed(),irritated:()=>this.playAnnoyed(),frustrated:()=>this.playFrustrated(),angry:()=>this.playFrustrated(),enraged:()=>this.playFrustrated(),bitter:()=>this.playFrustrated(),resentful:()=>this.playAnnoyed(),jealous:()=>this.playAnnoyed(),envious:()=>this.playAnnoyed(),indignant:()=>this.playFrustrated(),impatient:()=>this.playImpatient(),hostile:()=>this.playFrustrated(),contemptuous:()=>this.playAnnoyed(),tired:()=>this.playTired(),exhausted:()=>this.playExhausted(),drained:()=>this.playExhausted(),burnedOut:()=>this.playExhausted(),numb:()=>this.playExhausted(),bored:()=>this.playBored(),unmotivated:()=>this.playBored(),apathetic:()=>this.playBored(),restless:()=>this.playTired(),calm:()=>this.playCalm(),relaxed:()=>this.playRelaxed(),atEase:()=>this.playRelaxed(),balanced:()=>this.playCalm(),stable:()=>this.playGrounded(),secure:()=>this.playSafe(),safe:()=>this.playSafe(),centered:()=>this.playGrounded(),grounded:()=>this.playGrounded(),accepting:()=>this.playCalm(),connected:()=>this.playConnected(),accepted:()=>this.playAppreciated(),included:()=>this.playConnected(),belonging:()=>this.playConnected(),appreciated:()=>this.playAppreciated(),valued:()=>this.playAppreciated(),respected:()=>this.playAppreciated(),supported:()=>this.playSupported(),protective:()=>this.playSupported(),compassionate:()=>this.playConnected(),empathetic:()=>this.playConnected(),conflicted:()=>this.playConfused(),confused:()=>this.playConfused(),ambivalent:()=>this.playConfused(),nostalgic:()=>this.playNostalgic(),guilty:()=>this.playDisappointed(),embarrassed:()=>this.playNervous(),surprised:()=>this.playSurprised(),shocked:()=>this.playStartled(),awestruck:()=>this.playAwestruck(),skeptical:()=>this.playConfused()}[e];t&&t()}dispose(){this.audioContext&&=(this.audioContext.close(),null)}},t=new e;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
1
+ require(`./sound.service-BjSoGjmT.cjs`);var e=class{constructor(){this.audioContext=null,this.volume=.15,this.muted=!1}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}puff(e,t,n,r){let i=this.getContext(),a=Math.floor(i.sampleRate*t),o=i.createBuffer(1,a,i.sampleRate),s=o.getChannelData(0);for(let e=0;e<a;e++)s[e]=2*Math.random()-1;let c=i.createBufferSource();c.buffer=o;let l=i.createBiquadFilter();l.type=`bandpass`,l.frequency.value=n,l.Q.value=.7;let u=i.createGain();u.gain.setValueAtTime(0,e),u.gain.linearRampToValueAtTime(r*this.volume,e+.015),u.gain.exponentialRampToValueAtTime(.001,e+t),c.connect(l).connect(u).connect(i.destination),c.start(e),c.stop(e+t)}tone(e,t,n,r,i=`sine`,a){let o=this.getContext(),s=o.createOscillator(),c=o.createGain();s.type=i,s.frequency.setValueAtTime(n,e),a&&s.frequency.exponentialRampToValueAtTime(a,e+.8*t),c.gain.setValueAtTime(0,e),c.gain.linearRampToValueAtTime(r*this.volume,e+.02),c.gain.exponentialRampToValueAtTime(.001,e+t),s.connect(c).connect(o.destination),s.start(e),s.stop(e+t)}warmTone(e,t,n,r,i=800){let a=this.getContext(),o=a.createOscillator(),s=a.createBiquadFilter(),c=a.createGain();o.type=`sine`,o.frequency.value=n,s.type=`lowpass`,s.frequency.value=i,c.gain.setValueAtTime(0,e),c.gain.linearRampToValueAtTime(r*this.volume,e+.03),c.gain.exponentialRampToValueAtTime(.001,e+t),o.connect(s).connect(c).connect(a.destination),o.start(e),o.stop(e+t)}shimmer(e,t,n,r){[n,1.5*n,2*n].forEach((n,i)=>{this.tone(e+.02*i,t-.02*i,n,r*(1-.2*i))})}playJoyful(){let e=this.getContext().currentTime;this.puff(e,.08,3e3,.3),this.puff(e+.06,.1,3500,.35),this.tone(e+.02,.15,784,.25),this.tone(e+.1,.2,988,.3),this.tone(e+.18,.25,1175,.25)}playContent(){let e=this.getContext().currentTime;this.puff(e,.2,1500,.25),this.warmTone(e+.05,.3,523,.2),this.warmTone(e+.15,.35,659,.15)}playExcited(){let e=this.getContext().currentTime;this.puff(e,.06,2500,.25),this.puff(e+.05,.06,3e3,.3),this.puff(e+.1,.08,3500,.35),this.tone(e+.02,.12,880,.2),this.tone(e+.08,.12,1047,.25),this.tone(e+.14,.15,1319,.3)}playProud(){let e=this.getContext().currentTime;this.puff(e,.15,1800,.3),this.tone(e+.05,.25,523,.25),this.tone(e+.08,.25,659,.2),this.tone(e+.11,.3,784,.25)}playHopeful(){let e=this.getContext().currentTime;this.puff(e,.12,2200,.2),this.tone(e+.03,.3,659,.2,`sine`,880)}playRelieved(){let e=this.getContext().currentTime;this.puff(e,.25,1200,.35),this.warmTone(e+.1,.35,659,.2),this.warmTone(e+.25,.4,523,.15)}playGrateful(){let e=this.getContext().currentTime;this.puff(e,.15,1500,.25),this.warmTone(e+.05,.3,440,.2),this.warmTone(e+.15,.35,523,.2),this.warmTone(e+.25,.4,659,.15)}playPeaceful(){let e=this.getContext().currentTime;this.puff(e,.3,800,.15),this.warmTone(e+.1,.5,392,.12,500)}playPlayful(){let e=this.getContext().currentTime;this.puff(e,.05,2800,.2),this.puff(e+.08,.05,3200,.25),this.puff(e+.14,.06,2800,.2),this.tone(e+.03,.1,784,.2),this.tone(e+.1,.08,988,.25),this.tone(e+.16,.12,784,.2)}playAmused(){let e=this.getContext().currentTime;this.puff(e,.04,2500,.2),this.puff(e+.06,.04,2800,.22),this.puff(e+.11,.05,2600,.18),this.tone(e+.05,.15,880,.15)}playCurious(){let e=this.getContext().currentTime;this.puff(e,.1,2e3,.2),this.tone(e+.03,.2,659,.2,`sine`,880)}playInspired(){let e=this.getContext().currentTime;this.puff(e,.1,2500,.25),this.shimmer(e+.05,.3,523,.2)}playConfident(){let e=this.getContext().currentTime;this.puff(e,.12,1500,.3),this.tone(e+.04,.2,523,.25),this.tone(e+.06,.22,659,.2)}playLoved(){let e=this.getContext().currentTime;this.puff(e,.2,1e3,.2),this.warmTone(e+.08,.4,392,.18,600),this.warmTone(e+.2,.45,494,.15,600)}playComforted(){let e=this.getContext().currentTime;this.puff(e,.25,900,.18),this.warmTone(e+.1,.35,523,.15),this.warmTone(e+.25,.4,440,.12)}playEnergized(){let e=this.getContext().currentTime;this.puff(e,.05,3e3,.25),this.puff(e+.04,.05,3500,.28),this.tone(e+.02,.1,784,.2),this.tone(e+.08,.12,988,.25),this.tone(e+.14,.15,1175,.22)}playCelebrated(){let e=this.getContext().currentTime;this.puff(e,.08,2500,.2),this.tone(e+.02,.18,523,.22),this.tone(e+.08,.18,659,.24),this.tone(e+.14,.2,784,.26),this.tone(e+.22,.3,1047,.22),this.shimmer(e+.25,.35,523,.12)}playSad(){let e=this.getContext().currentTime;this.puff(e,.3,600,.25),this.warmTone(e+.1,.4,392,.2,400),this.warmTone(e+.3,.45,294,.15,350)}playLonely(){let e=this.getContext().currentTime;this.puff(e,.2,700,.2),this.warmTone(e+.15,.5,330,.12,450)}playDisappointed(){let e=this.getContext().currentTime;this.puff(e,.25,800,.25),this.tone(e+.08,.3,523,.18,`sine`,349)}playMelancholic(){let e=this.getContext().currentTime;this.puff(e,.3,700,.18),this.warmTone(e+.1,.45,440,.15,500),this.warmTone(e+.3,.5,392,.12,450)}playAnxious(){let e=this.getContext(),t=e.currentTime;this.puff(t,.08,1800,.2),this.puff(t+.12,.08,1900,.22);let n=e.createOscillator(),r=e.createGain(),i=e.createOscillator(),a=e.createGain();n.frequency.value=440,i.frequency.value=8,a.gain.value=20,i.connect(a).connect(n.frequency),r.gain.setValueAtTime(0,t),r.gain.linearRampToValueAtTime(.15*this.volume,t+.03),r.gain.exponentialRampToValueAtTime(.001,t+.25),n.connect(r).connect(e.destination),i.start(t),n.start(t),n.stop(t+.3),i.stop(t+.3)}playWorried(){let e=this.getContext().currentTime;this.puff(e,.15,1200,.2),this.tone(e+.05,.25,349,.15,`sine`,392)}playNervous(){let e=this.getContext().currentTime;this.puff(e,.05,2e3,.18),this.puff(e+.08,.05,2100,.18),this.puff(e+.15,.06,2e3,.16),this.tone(e+.04,.2,494,.12)}playStartled(){let e=this.getContext().currentTime;this.puff(e,.04,3500,.3),this.tone(e,.08,1047,.25),this.tone(e+.05,.15,880,.15)}playAnnoyed(){let e=this.getContext().currentTime;this.puff(e,.1,1e3,.25),this.warmTone(e+.03,.2,294,.18,400)}playFrustrated(){let e=this.getContext().currentTime;this.puff(e,.12,900,.28),this.tone(e+.04,.15,349,.2),this.tone(e+.12,.12,330,.18)}playImpatient(){let e=this.getContext().currentTime;this.puff(e,.04,1500,.2),this.puff(e+.08,.04,1500,.2),this.puff(e+.16,.04,1500,.22),this.tone(e+.06,.1,523,.15)}playTired(){let e=this.getContext().currentTime;this.puff(e,.35,500,.2),this.warmTone(e+.1,.4,330,.12,350)}playExhausted(){let e=this.getContext().currentTime;this.puff(e,.45,400,.18),this.warmTone(e+.15,.5,294,.1,300)}playBored(){let e=this.getContext().currentTime;this.puff(e,.25,600,.15),this.warmTone(e+.1,.3,349,.1,400)}playCalm(){let e=this.getContext().currentTime;this.puff(e,.3,600,.12),this.warmTone(e+.1,.5,392,.1,500)}playRelaxed(){let e=this.getContext().currentTime;this.puff(e,.35,700,.15),this.warmTone(e+.15,.45,440,.1),this.warmTone(e+.35,.5,392,.08)}playGrounded(){let e=this.getContext().currentTime;this.puff(e,.25,500,.2),this.warmTone(e+.1,.4,262,.15,350)}playSafe(){let e=this.getContext().currentTime;this.puff(e,.3,700,.15),this.warmTone(e+.1,.4,349,.12),this.warmTone(e+.25,.45,440,.1)}playConnected(){let e=this.getContext().currentTime;this.puff(e,.2,1200,.18),this.warmTone(e+.08,.3,440,.15),this.warmTone(e+.12,.32,523,.12)}playAppreciated(){let e=this.getContext().currentTime;this.puff(e,.15,1500,.2),this.warmTone(e+.05,.25,440,.15),this.warmTone(e+.15,.3,523,.18)}playSupported(){let e=this.getContext().currentTime;this.puff(e,.25,900,.18),this.warmTone(e+.1,.35,349,.12),this.warmTone(e+.15,.4,440,.1)}playNostalgic(){let e=this.getContext().currentTime;this.puff(e,.25,800,.15),this.warmTone(e+.1,.4,440,.12,500),this.warmTone(e+.3,.45,392,.1,450)}playSurprised(){let e=this.getContext().currentTime;this.puff(e,.06,2800,.25),this.tone(e+.02,.15,659,.2,`sine`,988)}playAwestruck(){let e=this.getContext().currentTime;this.puff(e,.2,1500,.2),this.shimmer(e+.08,.4,440,.15)}playConfused(){let e=this.getContext().currentTime;this.puff(e,.12,1200,.18),this.tone(e+.04,.2,440,.12,`sine`,494),this.tone(e+.15,.15,466,.1)}setVolume(e){this.volume=Math.max(0,Math.min(1,e))}getVolume(){return this.volume}mute(){this.muted=!0}unmute(){this.muted=!1}isMuted(){return this.muted}play(e){if(this.muted)return;let t={joyful:()=>this.playJoyful(),content:()=>this.playContent(),excited:()=>this.playExcited(),proud:()=>this.playProud(),hopeful:()=>this.playHopeful(),relieved:()=>this.playRelieved(),grateful:()=>this.playGrateful(),peaceful:()=>this.playPeaceful(),playful:()=>this.playPlayful(),amused:()=>this.playAmused(),curious:()=>this.playCurious(),inspired:()=>this.playInspired(),confident:()=>this.playConfident(),loved:()=>this.playLoved(),comforted:()=>this.playComforted(),energized:()=>this.playEnergized(),celebrated:()=>this.playCelebrated(),sad:()=>this.playSad(),lonely:()=>this.playLonely(),disappointed:()=>this.playDisappointed(),heartbroken:()=>this.playSad(),grieving:()=>this.playSad(),hopeless:()=>this.playLonely(),empty:()=>this.playLonely(),discouraged:()=>this.playDisappointed(),melancholic:()=>this.playMelancholic(),homesick:()=>this.playNostalgic(),hurt:()=>this.playSad(),miserable:()=>this.playSad(),regretful:()=>this.playMelancholic(),ashamed:()=>this.playDisappointed(),inferior:()=>this.playDisappointed(),anxious:()=>this.playAnxious(),worried:()=>this.playWorried(),afraid:()=>this.playAnxious(),terrified:()=>this.playStartled(),panicked:()=>this.playStartled(),nervous:()=>this.playNervous(),uneasy:()=>this.playWorried(),insecure:()=>this.playNervous(),overwhelmed:()=>this.playAnxious(),stressed:()=>this.playAnxious(),tense:()=>this.playAnxious(),apprehensive:()=>this.playWorried(),startled:()=>this.playStartled(),suspicious:()=>this.playWorried(),vulnerable:()=>this.playNervous(),annoyed:()=>this.playAnnoyed(),irritated:()=>this.playAnnoyed(),frustrated:()=>this.playFrustrated(),angry:()=>this.playFrustrated(),enraged:()=>this.playFrustrated(),bitter:()=>this.playFrustrated(),resentful:()=>this.playAnnoyed(),jealous:()=>this.playAnnoyed(),envious:()=>this.playAnnoyed(),indignant:()=>this.playFrustrated(),impatient:()=>this.playImpatient(),hostile:()=>this.playFrustrated(),contemptuous:()=>this.playAnnoyed(),tired:()=>this.playTired(),exhausted:()=>this.playExhausted(),drained:()=>this.playExhausted(),burnedOut:()=>this.playExhausted(),numb:()=>this.playExhausted(),bored:()=>this.playBored(),unmotivated:()=>this.playBored(),apathetic:()=>this.playBored(),restless:()=>this.playTired(),calm:()=>this.playCalm(),relaxed:()=>this.playRelaxed(),atEase:()=>this.playRelaxed(),balanced:()=>this.playCalm(),stable:()=>this.playGrounded(),secure:()=>this.playSafe(),safe:()=>this.playSafe(),centered:()=>this.playGrounded(),grounded:()=>this.playGrounded(),accepting:()=>this.playCalm(),connected:()=>this.playConnected(),accepted:()=>this.playAppreciated(),included:()=>this.playConnected(),belonging:()=>this.playConnected(),appreciated:()=>this.playAppreciated(),valued:()=>this.playAppreciated(),respected:()=>this.playAppreciated(),supported:()=>this.playSupported(),protective:()=>this.playSupported(),compassionate:()=>this.playConnected(),empathetic:()=>this.playConnected(),conflicted:()=>this.playConfused(),confused:()=>this.playConfused(),ambivalent:()=>this.playConfused(),nostalgic:()=>this.playNostalgic(),guilty:()=>this.playDisappointed(),embarrassed:()=>this.playNervous(),surprised:()=>this.playSurprised(),shocked:()=>this.playStartled(),awestruck:()=>this.playAwestruck(),skeptical:()=>this.playConfused()}[e];t&&t()}dispose(){this.audioContext&&=(this.audioContext.close(),null)}},t=new e;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return e}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return t}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio-DUVz7Ars.cjs","names":[],"sources":["../src/audio/emotional-sounds.ts"],"sourcesContent":["/**\n * Schmancy Emotional Sound Library\n *\n * A curated collection of soft, elegant sounds organized by emotional categories.\n * Each sound is designed to be non-intrusive, emotionally evocative, and beautiful.\n *\n * Inspired by the gentle sounds of nature - soft air, gentle chimes, and warm tones.\n *\n * @example\n * ```typescript\n * import { $sounds } from '@schmancy/audio'\n *\n * // Play a feeling\n * $sounds.play('joyful')\n * $sounds.play('relieved')\n * $sounds.play('curious')\n *\n * // Adjust volume\n * $sounds.setVolume(0.2)\n *\n * // Mute/unmute\n * $sounds.mute()\n * $sounds.unmute()\n * ```\n */\n\n// ============================================================================\n// TYPES\n// ============================================================================\n\n/** Happy / Pleasant feelings */\nexport type HappyFeeling =\n | 'joyful' | 'content' | 'excited' | 'proud' | 'hopeful'\n | 'relieved' | 'grateful' | 'peaceful' | 'playful' | 'amused'\n | 'curious' | 'inspired' | 'confident' | 'loved' | 'comforted' | 'energized'\n | 'celebrated'\n\n/** Sad / Low feelings */\nexport type SadFeeling =\n | 'sad' | 'lonely' | 'disappointed' | 'heartbroken' | 'grieving'\n | 'hopeless' | 'empty' | 'discouraged' | 'melancholic' | 'homesick'\n | 'hurt' | 'miserable' | 'regretful' | 'ashamed' | 'inferior'\n\n/** Anxious / Fearful feelings */\nexport type AnxiousFeeling =\n | 'anxious' | 'worried' | 'afraid' | 'terrified' | 'panicked'\n | 'nervous' | 'uneasy' | 'insecure' | 'overwhelmed' | 'stressed'\n | 'tense' | 'apprehensive' | 'startled' | 'suspicious' | 'vulnerable'\n\n/** Angry / Frustrated feelings */\nexport type AngryFeeling =\n | 'annoyed' | 'irritated' | 'frustrated' | 'angry' | 'enraged'\n | 'bitter' | 'resentful' | 'jealous' | 'envious' | 'indignant'\n | 'impatient' | 'hostile' | 'contemptuous'\n\n/** Tired / Drained feelings */\nexport type TiredFeeling =\n | 'tired' | 'exhausted' | 'drained' | 'burnedOut' | 'numb'\n | 'bored' | 'unmotivated' | 'apathetic' | 'restless'\n\n/** Calm / Grounded feelings */\nexport type CalmFeeling =\n | 'calm' | 'relaxed' | 'atEase' | 'balanced' | 'stable'\n | 'secure' | 'safe' | 'centered' | 'grounded' | 'accepting'\n\n/** Connected / Social feelings */\nexport type ConnectedFeeling =\n | 'connected' | 'accepted' | 'included' | 'belonging' | 'appreciated'\n | 'valued' | 'respected' | 'supported' | 'protective' | 'compassionate' | 'empathetic'\n\n/** Mixed / Complicated feelings */\nexport type MixedFeeling =\n | 'conflicted' | 'confused' | 'ambivalent' | 'nostalgic' | 'guilty'\n | 'embarrassed' | 'surprised' | 'shocked' | 'awestruck' | 'skeptical'\n\n/** All feelings */\nexport type Feeling =\n | HappyFeeling | SadFeeling | AnxiousFeeling | AngryFeeling\n | TiredFeeling | CalmFeeling | ConnectedFeeling | MixedFeeling\n\n// FeelingCategory is defined in ../types/mood-audio.types.ts and re-exported\n// from ./index.ts — the canonical source.\n\n// ============================================================================\n// SOUND GENERATOR\n// ============================================================================\n\n/**\n * Emotional Sound Generator\n * Creates soft, beautiful sounds using Web Audio API\n */\nexport class EmotionalSoundGenerator {\n private audioContext: AudioContext | null = null\n private volume = 0.15\n private muted = false\n\n private getContext(): AudioContext {\n if (!this.audioContext) {\n const AudioContextClass = window.AudioContext || (window as any).webkitAudioContext\n this.audioContext = new AudioContextClass()\n }\n // Resume if suspended (autoplay policy)\n if (this.audioContext.state === 'suspended') {\n this.audioContext.resume()\n }\n return this.audioContext\n }\n\n // ==========================================================================\n // CORE SOUND PRIMITIVES\n // ==========================================================================\n\n /** Soft air puff - the foundation of our sound palette */\n private puff(startTime: number, duration: number, freq: number, vol: number): void {\n const ctx = this.getContext()\n const bufferSize = Math.floor(ctx.sampleRate * duration)\n const buffer = ctx.createBuffer(1, bufferSize, ctx.sampleRate)\n const data = buffer.getChannelData(0)\n\n for (let i = 0; i < bufferSize; i++) {\n data[i] = Math.random() * 2 - 1\n }\n\n const noise = ctx.createBufferSource()\n noise.buffer = buffer\n\n const filter = ctx.createBiquadFilter()\n filter.type = 'bandpass'\n filter.frequency.value = freq\n filter.Q.value = 0.7\n\n const gain = ctx.createGain()\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.015)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n noise.connect(filter).connect(gain).connect(ctx.destination)\n noise.start(startTime)\n noise.stop(startTime + duration)\n }\n\n /** Gentle tone with envelope */\n private tone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n type: OscillatorType = 'sine',\n freqEnd?: number\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n\n osc.type = type\n osc.frequency.setValueAtTime(freq, startTime)\n if (freqEnd) {\n osc.frequency.exponentialRampToValueAtTime(freqEnd, startTime + duration * 0.8)\n }\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.02)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Warm filtered tone */\n private warmTone(\n startTime: number,\n duration: number,\n freq: number,\n vol: number,\n filterFreq = 800\n ): void {\n const ctx = this.getContext()\n const osc = ctx.createOscillator()\n const filter = ctx.createBiquadFilter()\n const gain = ctx.createGain()\n\n osc.type = 'sine'\n osc.frequency.value = freq\n\n filter.type = 'lowpass'\n filter.frequency.value = filterFreq\n\n gain.gain.setValueAtTime(0, startTime)\n gain.gain.linearRampToValueAtTime(vol * this.volume, startTime + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, startTime + duration)\n\n osc.connect(filter).connect(gain).connect(ctx.destination)\n osc.start(startTime)\n osc.stop(startTime + duration)\n }\n\n /** Shimmer - multiple soft tones */\n private shimmer(startTime: number, duration: number, baseFreq: number, vol: number): void {\n const freqs = [baseFreq, baseFreq * 1.5, baseFreq * 2]\n freqs.forEach((f, i) => {\n this.tone(startTime + i * 0.02, duration - i * 0.02, f, vol * (1 - i * 0.2))\n })\n }\n\n // ==========================================================================\n // HAPPY / PLEASANT FEELINGS\n // ==========================================================================\n\n private playJoyful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Double puff (excited exhale)\n this.puff(now, 0.08, 3000, 0.3)\n this.puff(now + 0.06, 0.1, 3500, 0.35)\n\n // Rising happy tones\n this.tone(now + 0.02, 0.15, 784, 0.25) // G5\n this.tone(now + 0.1, 0.2, 988, 0.3) // B5\n this.tone(now + 0.18, 0.25, 1175, 0.25) // D6\n }\n\n private playContent(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Gentle satisfied sigh\n this.puff(now, 0.2, 1500, 0.25)\n this.warmTone(now + 0.05, 0.3, 523, 0.2) // C5\n this.warmTone(now + 0.15, 0.35, 659, 0.15) // E5\n }\n\n private playExcited(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick ascending puffs\n this.puff(now, 0.06, 2500, 0.25)\n this.puff(now + 0.05, 0.06, 3000, 0.3)\n this.puff(now + 0.1, 0.08, 3500, 0.35)\n\n // Sparkly ascending tones\n this.tone(now + 0.02, 0.12, 880, 0.2)\n this.tone(now + 0.08, 0.12, 1047, 0.25)\n this.tone(now + 0.14, 0.15, 1319, 0.3)\n }\n\n private playProud(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Confident puff\n this.puff(now, 0.15, 1800, 0.3)\n\n // Strong rising chord\n this.tone(now + 0.05, 0.25, 523, 0.25) // C5\n this.tone(now + 0.08, 0.25, 659, 0.2) // E5\n this.tone(now + 0.11, 0.3, 784, 0.25) // G5\n }\n\n private playHopeful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Light ascending puff\n this.puff(now, 0.12, 2200, 0.2)\n\n // Gentle rising tone\n this.tone(now + 0.03, 0.3, 659, 0.2, 'sine', 880) // E5 -> A5\n }\n\n private playRelieved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long exhale\n this.puff(now, 0.25, 1200, 0.35)\n\n // Descending release\n this.warmTone(now + 0.1, 0.35, 659, 0.2) // E5\n this.warmTone(now + 0.25, 0.4, 523, 0.15) // C5\n }\n\n private playGrateful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm gentle puff\n this.puff(now, 0.15, 1500, 0.25)\n\n // Warm embracing tones\n this.warmTone(now + 0.05, 0.3, 440, 0.2) // A4\n this.warmTone(now + 0.15, 0.35, 523, 0.2) // C5\n this.warmTone(now + 0.25, 0.4, 659, 0.15) // E5\n }\n\n private playPeaceful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very soft puff\n this.puff(now, 0.3, 800, 0.15)\n\n // Gentle sustained tone\n this.warmTone(now + 0.1, 0.5, 392, 0.12, 500) // G4\n }\n\n private playPlayful(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bouncy puffs\n this.puff(now, 0.05, 2800, 0.2)\n this.puff(now + 0.08, 0.05, 3200, 0.25)\n this.puff(now + 0.14, 0.06, 2800, 0.2)\n\n // Playful tones\n this.tone(now + 0.03, 0.1, 784, 0.2)\n this.tone(now + 0.1, 0.08, 988, 0.25)\n this.tone(now + 0.16, 0.12, 784, 0.2)\n }\n\n private playAmused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Little chuckle puffs\n this.puff(now, 0.04, 2500, 0.2)\n this.puff(now + 0.06, 0.04, 2800, 0.22)\n this.puff(now + 0.11, 0.05, 2600, 0.18)\n\n // Amused tone\n this.tone(now + 0.05, 0.15, 880, 0.15)\n }\n\n private playCurious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Questioning puff\n this.puff(now, 0.1, 2000, 0.2)\n\n // Rising questioning tone\n this.tone(now + 0.03, 0.2, 659, 0.2, 'sine', 880) // E5 -> A5 (question)\n }\n\n private playInspired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright puff\n this.puff(now, 0.1, 2500, 0.25)\n\n // Ascending shimmer\n this.shimmer(now + 0.05, 0.3, 523, 0.2)\n }\n\n private playConfident(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Solid puff\n this.puff(now, 0.12, 1500, 0.3)\n\n // Strong chord\n this.tone(now + 0.04, 0.2, 523, 0.25) // C5\n this.tone(now + 0.06, 0.22, 659, 0.2) // E5\n }\n\n private playLoved(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm embrace puff\n this.puff(now, 0.2, 1000, 0.2)\n\n // Warm loving tones\n this.warmTone(now + 0.08, 0.4, 392, 0.18, 600) // G4\n this.warmTone(now + 0.2, 0.45, 494, 0.15, 600) // B4\n }\n\n private playComforted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft blanket puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Gentle descending comfort\n this.warmTone(now + 0.1, 0.35, 523, 0.15) // C5\n this.warmTone(now + 0.25, 0.4, 440, 0.12) // A4\n }\n\n private playEnergized(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick energetic puffs\n this.puff(now, 0.05, 3000, 0.25)\n this.puff(now + 0.04, 0.05, 3500, 0.28)\n\n // Bright ascending tones\n this.tone(now + 0.02, 0.1, 784, 0.2)\n this.tone(now + 0.08, 0.12, 988, 0.25)\n this.tone(now + 0.14, 0.15, 1175, 0.22)\n }\n\n private playCelebrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Bright celebratory chime\n this.puff(now, 0.08, 2500, 0.2)\n\n // Triumphant ascending arpeggio (C major -> resolve)\n this.tone(now + 0.02, 0.18, 523, 0.22) // C5\n this.tone(now + 0.08, 0.18, 659, 0.24) // E5\n this.tone(now + 0.14, 0.2, 784, 0.26) // G5\n this.tone(now + 0.22, 0.3, 1047, 0.22) // C6 - resolution\n\n // Warm shimmer on resolution\n this.shimmer(now + 0.25, 0.35, 523, 0.12)\n }\n\n // ==========================================================================\n // SAD / LOW FEELINGS\n // ==========================================================================\n\n private playSad(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy sigh\n this.puff(now, 0.3, 600, 0.25)\n\n // Descending sad tone\n this.warmTone(now + 0.1, 0.4, 392, 0.2, 400) // G4\n this.warmTone(now + 0.3, 0.45, 294, 0.15, 350) // D4\n }\n\n private playLonely(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Single isolated puff\n this.puff(now, 0.2, 700, 0.2)\n\n // Sparse, distant tone\n this.warmTone(now + 0.15, 0.5, 330, 0.12, 450) // E4\n }\n\n private playDisappointed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deflating puff\n this.puff(now, 0.25, 800, 0.25)\n\n // Falling tone\n this.tone(now + 0.08, 0.3, 523, 0.18, 'sine', 349) // C5 -> F4\n }\n\n private playMelancholic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful puff\n this.puff(now, 0.3, 700, 0.18)\n\n // Bittersweet tones\n this.warmTone(now + 0.1, 0.45, 440, 0.15, 500) // A4\n this.warmTone(now + 0.3, 0.5, 392, 0.12, 450) // G4\n }\n\n // ==========================================================================\n // ANXIOUS / FEARFUL FEELINGS\n // ==========================================================================\n\n private playAnxious(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tight, quick puffs\n this.puff(now, 0.08, 1800, 0.2)\n this.puff(now + 0.12, 0.08, 1900, 0.22)\n\n // Uncertain wobble\n const osc = ctx.createOscillator()\n const gain = ctx.createGain()\n const lfo = ctx.createOscillator()\n const lfoGain = ctx.createGain()\n\n osc.frequency.value = 440\n lfo.frequency.value = 8\n lfoGain.gain.value = 20\n\n lfo.connect(lfoGain).connect(osc.frequency)\n\n gain.gain.setValueAtTime(0, now)\n gain.gain.linearRampToValueAtTime(this.volume * 0.15, now + 0.03)\n gain.gain.exponentialRampToValueAtTime(0.001, now + 0.25)\n\n osc.connect(gain).connect(ctx.destination)\n lfo.start(now)\n osc.start(now)\n osc.stop(now + 0.3)\n lfo.stop(now + 0.3)\n }\n\n private playWorried(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Hesitant puff\n this.puff(now, 0.15, 1200, 0.2)\n\n // Minor questioning tone\n this.tone(now + 0.05, 0.25, 349, 0.15, 'sine', 392) // F4 -> G4 (uncertain)\n }\n\n private playNervous(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick shallow puffs\n this.puff(now, 0.05, 2000, 0.18)\n this.puff(now + 0.08, 0.05, 2100, 0.18)\n this.puff(now + 0.15, 0.06, 2000, 0.16)\n\n // Trembling tone\n this.tone(now + 0.04, 0.2, 494, 0.12) // B4\n }\n\n private playStartled(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick sharp puff\n this.puff(now, 0.04, 3500, 0.3)\n\n // Quick high tone\n this.tone(now, 0.08, 1047, 0.25) // C6\n this.tone(now + 0.05, 0.15, 880, 0.15) // A5\n }\n\n // ==========================================================================\n // ANGRY / FRUSTRATED FEELINGS\n // ==========================================================================\n\n private playAnnoyed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Short frustrated puff\n this.puff(now, 0.1, 1000, 0.25)\n\n // Low rumble\n this.warmTone(now + 0.03, 0.2, 294, 0.18, 400) // D4\n }\n\n private playFrustrated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Tense puff\n this.puff(now, 0.12, 900, 0.28)\n\n // Blocked feeling\n this.tone(now + 0.04, 0.15, 349, 0.2) // F4\n this.tone(now + 0.12, 0.12, 330, 0.18) // E4\n }\n\n private playImpatient(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick tapping puffs\n this.puff(now, 0.04, 1500, 0.2)\n this.puff(now + 0.08, 0.04, 1500, 0.2)\n this.puff(now + 0.16, 0.04, 1500, 0.22)\n\n // Urgent tone\n this.tone(now + 0.06, 0.1, 523, 0.15)\n }\n\n // ==========================================================================\n // TIRED / DRAINED FEELINGS\n // ==========================================================================\n\n private playTired(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Heavy slow puff\n this.puff(now, 0.35, 500, 0.2)\n\n // Drooping tone\n this.warmTone(now + 0.1, 0.4, 330, 0.12, 350) // E4\n }\n\n private playExhausted(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Very slow, heavy exhale\n this.puff(now, 0.45, 400, 0.18)\n\n // Descending fade\n this.warmTone(now + 0.15, 0.5, 294, 0.1, 300) // D4\n }\n\n private playBored(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Flat sigh\n this.puff(now, 0.25, 600, 0.15)\n\n // Monotone\n this.warmTone(now + 0.1, 0.3, 349, 0.1, 400) // F4\n }\n\n // ==========================================================================\n // CALM / GROUNDED FEELINGS\n // ==========================================================================\n\n private playCalm(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Slow, peaceful puff\n this.puff(now, 0.3, 600, 0.12)\n\n // Sustained gentle tone\n this.warmTone(now + 0.1, 0.5, 392, 0.1, 500) // G4\n }\n\n private playRelaxed(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Long soft exhale\n this.puff(now, 0.35, 700, 0.15)\n\n // Gentle descending\n this.warmTone(now + 0.15, 0.45, 440, 0.1) // A4\n this.warmTone(now + 0.35, 0.5, 392, 0.08) // G4\n }\n\n private playGrounded(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Deep centered puff\n this.puff(now, 0.25, 500, 0.2)\n\n // Low stable tone\n this.warmTone(now + 0.1, 0.4, 262, 0.15, 350) // C4\n }\n\n private playSafe(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Soft enveloping puff\n this.puff(now, 0.3, 700, 0.15)\n\n // Warm embracing tones\n this.warmTone(now + 0.1, 0.4, 349, 0.12) // F4\n this.warmTone(now + 0.25, 0.45, 440, 0.1) // A4\n }\n\n // ==========================================================================\n // CONNECTED / SOCIAL FEELINGS\n // ==========================================================================\n\n private playConnected(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Warm shared breath\n this.puff(now, 0.2, 1200, 0.18)\n\n // Harmonious tones\n this.warmTone(now + 0.08, 0.3, 440, 0.15) // A4\n this.warmTone(now + 0.12, 0.32, 523, 0.12) // C5\n }\n\n private playAppreciated(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Touched puff\n this.puff(now, 0.15, 1500, 0.2)\n\n // Warm ascending\n this.warmTone(now + 0.05, 0.25, 440, 0.15)\n this.warmTone(now + 0.15, 0.3, 523, 0.18)\n }\n\n private playSupported(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Held puff\n this.puff(now, 0.25, 900, 0.18)\n\n // Stable harmonies\n this.warmTone(now + 0.1, 0.35, 349, 0.12)\n this.warmTone(now + 0.15, 0.4, 440, 0.1)\n }\n\n // ==========================================================================\n // MIXED / COMPLICATED FEELINGS\n // ==========================================================================\n\n private playNostalgic(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wistful distant puff\n this.puff(now, 0.25, 800, 0.15)\n\n // Bittersweet memory tones\n this.warmTone(now + 0.1, 0.4, 440, 0.12, 500) // A4\n this.warmTone(now + 0.3, 0.45, 392, 0.1, 450) // G4\n }\n\n private playSurprised(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Quick gasp\n this.puff(now, 0.06, 2800, 0.25)\n\n // Rising tone\n this.tone(now + 0.02, 0.15, 659, 0.2, 'sine', 988) // E5 -> B5\n }\n\n private playAwestruck(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Wonder-filled breath\n this.puff(now, 0.2, 1500, 0.2)\n\n // Ascending wonder\n this.shimmer(now + 0.08, 0.4, 440, 0.15)\n }\n\n private playConfused(): void {\n const ctx = this.getContext()\n const now = ctx.currentTime\n\n // Uncertain puff\n this.puff(now, 0.12, 1200, 0.18)\n\n // Questioning wobble\n this.tone(now + 0.04, 0.2, 440, 0.12, 'sine', 494) // A4 -> B4\n this.tone(now + 0.15, 0.15, 466, 0.1) // Bb4 (chromatic confusion)\n }\n\n // ==========================================================================\n // PUBLIC API\n // ==========================================================================\n\n /** Set volume (0.0 - 1.0) */\n setVolume(vol: number): void {\n this.volume = Math.max(0, Math.min(1, vol))\n }\n\n /** Get current volume */\n getVolume(): number {\n return this.volume\n }\n\n /** Mute all sounds */\n mute(): void {\n this.muted = true\n }\n\n /** Unmute sounds */\n unmute(): void {\n this.muted = false\n }\n\n /** Check if muted */\n isMuted(): boolean {\n return this.muted\n }\n\n /** Play a feeling */\n play(feeling: Feeling): void {\n if (this.muted) return\n\n // Map feelings to their sound methods\n const soundMap: Record<Feeling, () => void> = {\n // Happy\n joyful: () => this.playJoyful(),\n content: () => this.playContent(),\n excited: () => this.playExcited(),\n proud: () => this.playProud(),\n hopeful: () => this.playHopeful(),\n relieved: () => this.playRelieved(),\n grateful: () => this.playGrateful(),\n peaceful: () => this.playPeaceful(),\n playful: () => this.playPlayful(),\n amused: () => this.playAmused(),\n curious: () => this.playCurious(),\n inspired: () => this.playInspired(),\n confident: () => this.playConfident(),\n loved: () => this.playLoved(),\n comforted: () => this.playComforted(),\n energized: () => this.playEnergized(),\n celebrated: () => this.playCelebrated(),\n\n // Sad\n sad: () => this.playSad(),\n lonely: () => this.playLonely(),\n disappointed: () => this.playDisappointed(),\n heartbroken: () => this.playSad(), // Similar to sad\n grieving: () => this.playSad(),\n hopeless: () => this.playLonely(),\n empty: () => this.playLonely(),\n discouraged: () => this.playDisappointed(),\n melancholic: () => this.playMelancholic(),\n homesick: () => this.playNostalgic(),\n hurt: () => this.playSad(),\n miserable: () => this.playSad(),\n regretful: () => this.playMelancholic(),\n ashamed: () => this.playDisappointed(),\n inferior: () => this.playDisappointed(),\n\n // Anxious\n anxious: () => this.playAnxious(),\n worried: () => this.playWorried(),\n afraid: () => this.playAnxious(),\n terrified: () => this.playStartled(),\n panicked: () => this.playStartled(),\n nervous: () => this.playNervous(),\n uneasy: () => this.playWorried(),\n insecure: () => this.playNervous(),\n overwhelmed: () => this.playAnxious(),\n stressed: () => this.playAnxious(),\n tense: () => this.playAnxious(),\n apprehensive: () => this.playWorried(),\n startled: () => this.playStartled(),\n suspicious: () => this.playWorried(),\n vulnerable: () => this.playNervous(),\n\n // Angry\n annoyed: () => this.playAnnoyed(),\n irritated: () => this.playAnnoyed(),\n frustrated: () => this.playFrustrated(),\n angry: () => this.playFrustrated(),\n enraged: () => this.playFrustrated(),\n bitter: () => this.playFrustrated(),\n resentful: () => this.playAnnoyed(),\n jealous: () => this.playAnnoyed(),\n envious: () => this.playAnnoyed(),\n indignant: () => this.playFrustrated(),\n impatient: () => this.playImpatient(),\n hostile: () => this.playFrustrated(),\n contemptuous: () => this.playAnnoyed(),\n\n // Tired\n tired: () => this.playTired(),\n exhausted: () => this.playExhausted(),\n drained: () => this.playExhausted(),\n burnedOut: () => this.playExhausted(),\n numb: () => this.playExhausted(),\n bored: () => this.playBored(),\n unmotivated: () => this.playBored(),\n apathetic: () => this.playBored(),\n restless: () => this.playTired(),\n\n // Calm\n calm: () => this.playCalm(),\n relaxed: () => this.playRelaxed(),\n atEase: () => this.playRelaxed(),\n balanced: () => this.playCalm(),\n stable: () => this.playGrounded(),\n secure: () => this.playSafe(),\n safe: () => this.playSafe(),\n centered: () => this.playGrounded(),\n grounded: () => this.playGrounded(),\n accepting: () => this.playCalm(),\n\n // Connected\n connected: () => this.playConnected(),\n accepted: () => this.playAppreciated(),\n included: () => this.playConnected(),\n belonging: () => this.playConnected(),\n appreciated: () => this.playAppreciated(),\n valued: () => this.playAppreciated(),\n respected: () => this.playAppreciated(),\n supported: () => this.playSupported(),\n protective: () => this.playSupported(),\n compassionate: () => this.playConnected(),\n empathetic: () => this.playConnected(),\n\n // Mixed\n conflicted: () => this.playConfused(),\n confused: () => this.playConfused(),\n ambivalent: () => this.playConfused(),\n nostalgic: () => this.playNostalgic(),\n guilty: () => this.playDisappointed(),\n embarrassed: () => this.playNervous(),\n surprised: () => this.playSurprised(),\n shocked: () => this.playStartled(),\n awestruck: () => this.playAwestruck(),\n skeptical: () => this.playConfused(),\n }\n\n const playFn = soundMap[feeling]\n if (playFn) {\n playFn()\n }\n }\n\n /** Dispose audio context */\n dispose(): void {\n if (this.audioContext) {\n this.audioContext.close()\n this.audioContext = null\n }\n }\n}\n\n// ============================================================================\n// SINGLETON EXPORT\n// ============================================================================\n\n/** Global emotional sound player */\nexport const $sounds = new EmotionalSoundGenerator()\n\nexport default EmotionalSoundGenerator\n"],"mappings":"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"}
package/dist/audio.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sound.service-Bu3EQLv2.cjs`),t=require(`./audio-DtYYgzYD.cjs`);exports.$sounds=t.t,exports.EmotionalSoundGenerator=t.n,exports.schmancySound=e.t,exports.sound=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sound.service-BjSoGjmT.cjs`),t=require(`./audio-DUVz7Ars.cjs`);exports.$sounds=t.t,exports.EmotionalSoundGenerator=t.n,exports.schmancySound=e.t,exports.sound=e.n;
package/dist/audio.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as e, t } from "./sound.service-m3BrSfuH.js";
2
- import { n, t as r } from "./audio-kz8UgPTO.js";
1
+ import { n as e, t } from "./sound.service-cdkw3Wkv.js";
2
+ import { n, t as r } from "./audio-C7TzWI8M.js";
3
3
  export { r as $sounds, n as EmotionalSoundGenerator, t as schmancySound, e as sound };
@@ -0,0 +1,115 @@
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./decorate-F9CuyeHg.cjs`),t=require(`./litElement.mixin-Bj2q1yPw.cjs`);require(`./mixins.cjs`);const n=require(`./search-C8eAOzBm.cjs`);require(`./input-chip-BhjGVpc3.cjs`);let r=require(`rxjs`),i=require(`rxjs/operators`),a=require(`lit/directives/class-map.js`),o=require(`lit/decorators.js`),s=require(`lit`),c=require(`lit/directives/ref.js`),l=require(`lit/directives/repeat.js`),u=require(`lit/directives/when.js`);var d=class extends t.t(`:host{display:block;border:unset!important;line-height:unset!important;background:unset!important;padding:unset!important;font-size:unset!important;box-shadow:unset!important}:host:focus{box-shadow:unset!important}@keyframes onAutoFillStart{0%{}to{}}:-webkit-any(sch-input::part(input):-webkit-autofill,sch-input input:-webkit-autofill){animation-name:onAutoFillStart;animation-duration:1ms}:is(sch-input::part(input):autofill,sch-input input:autofill){animation-name:onAutoFillStart;animation-duration:1ms}`){static{this.formAssociated=!0}constructor(){super(),this._valueSet=!1,this._valuesSet=!1,this.required=!1,this.placeholder=``,this.label=``,this.name=``,this.maxHeight=`300px`,this.multi=!1,this.description=``,this.size=`md`,this.autocomplete=`off`,this.debounceMs=200,this.similarityThreshold=.3,this.error=!1,this.validationMessage=``,this._a11yId=`schmancy-autocomplete-${Math.random().toString(36).slice(2,10)}`,this._open=!1,this._inputValue=``,this._visibleOptionsCount=0,this._hasResults=!0,this._inputElementRef=(0,c.createRef)(),this._selectedValue$=new r.BehaviorSubject(``),this._selectedValues$=new r.BehaviorSubject([]),this._inputValue$=new r.BehaviorSubject(``);try{this.internals=this.attachInternals()}catch{this.internals=void 0}}get form(){return this.internals?.form??null}formResetCallback(){this.multi?this._selectedValues$.next([]):this._selectedValue$.next(``),this._inputValue=``,this._inputValue$.next(``),this.error=!1,this.validationMessage=``}formDisabledCallback(e){e?this.setAttribute(`disabled`,``):this.removeAttribute(`disabled`)}get values(){return[...this._selectedValues$.value]}set values(e){this._valuesSet=!0,this._selectedValues$.next(Array.isArray(e)?[...e]:[])}get value(){return this.multi?this._selectedValues$.value.join(`,`):this._selectedValue$.value}set value(e){if(this._valueSet=!0,this.multi){let t=e?e.split(`,`).map(e=>e.trim()).filter(Boolean):[],n=this._selectedValues$.value;JSON.stringify(t)!==JSON.stringify(n)&&this._selectedValues$.next(t)}else e!==this._selectedValue$.value&&(this._selectedValue$.next(e),this._updateInputDisplay())}connectedCallback(){super.connectedCallback(),this.id||=`sch-autocomplete-${Math.random().toString(36).slice(2,9)}`,this._setupAutocompleteLogic(),this._setupDocumentClickHandler()}_setupAutocompleteLogic(){(0,r.combineLatest)([this._selectedValue$,this._selectedValues$]).pipe((0,i.tap)(([e,t])=>{this._updateOptionSelection(e,t);let n=this.multi?t.join(`,`):e;if(this.internals?.setFormValue(n||null),this.required){let n=this.multi?t.length===0:!e;this.internals?.setValidity(n?{valueMissing:!0}:{},n?this.validationMessage||`Please select an option.`:void 0)}}),(0,i.takeUntil)(this.disconnecting)).subscribe(),this._inputValue$.pipe((0,i.distinctUntilChanged)(),(0,i.debounceTime)(this.debounceMs),(0,i.tap)(e=>{this._open&&this._filterOptions(e)}),(0,i.takeUntil)(this.disconnecting)).subscribe()}_setupOptionHandlers(){this._options.forEach((e,t)=>{e.setAttribute(`role`,`option`),e.tabIndex=-1,e.id||=`${this.id}-option-${t}`,e.onmousedown=e=>{e.preventDefault()},e.onclick=t=>{t.stopPropagation(),this._selectOption(e)}})}_updateOptionSelection(e,t){this._options.forEach(n=>{n.selected=this.multi?t.includes(n.value):n.value===e,n.setAttribute(`aria-selected`,String(n.selected))})}_filterOptions(e){let t=e.trim();if(t){let e=this._options.map(e=>{let r=e.label||e.textContent||``,i=e.value,a=n.t(t,r),o=n.t(t,i);return{option:e,score:Math.max(1.1*a,o)}});e.sort((e,t)=>t.score-e.score);let r=0;e.forEach((e,t)=>{let{option:n,score:i}=e;i<this.similarityThreshold?n.hidden=!0:(n.hidden=!1,r++,n.style.order=String(t))}),this._visibleOptionsCount=r,this._hasResults=r>0}else this._options.forEach(e=>{e.hidden=!1,e.style.order=`0`}),this._visibleOptionsCount=this._options.length,this._hasResults=!0;this._announceToScreenReader(this._visibleOptionsCount>0?`${this._visibleOptionsCount} option${this._visibleOptionsCount===1?``:`s`} available.`:`No results found.`)}_openDropdown(){this._open=!0,this._filterOptions(this._inputValue)}_selectOption(e){if(this.multi){let t=this._selectedValues$.value,n=t.indexOf(e.value)>-1?t.filter(t=>t!==e.value):[...t,e.value];this._selectedValues$.next(n),this._announceToScreenReader(n.length>0?`Selected: ${this._getSelectedLabels().join(`, `)}`:`No options selected`),this._fireChangeEvent()}else this._selectedValue$.next(e.value),this._open=!1,this._fireChangeEvent(),this._inputValue=e.label||e.textContent||``,this._inputValue$.next(this._inputValue),this._announceToScreenReader(`Selected: ${e.label||e.textContent}`)}_setupDocumentClickHandler(){let e=e=>{if(!this._open)return;let t=e.composedPath();t.includes(this)||this._options.some(e=>t.includes(e))||(this._open=!1,this._updateInputDisplay())};document.addEventListener(`click`,e),this.disconnecting.pipe((0,i.take)(1)).subscribe(()=>{document.removeEventListener(`click`,e)})}_updateInputDisplay(){if(this.multi)return;let e=this._selectedValue$.value,t=this._options.find(t=>t.value===e);this._inputValue=t&&(t.label||t.textContent)||``,this._inputValue$.next(this._inputValue),this._inputElementRef.value&&(this._inputElementRef.value.value=this._inputValue)}_getSelectedLabels(){return this._options.filter(e=>this.multi?this._selectedValues$.value.includes(e.value):e.value===this._selectedValue$.value).map(e=>e.label||e.textContent||``)}_announceToScreenReader(e){let t=this.shadowRoot?.querySelector(`#live-status`);t&&(t.textContent=e)}_fireChangeEvent(){let e={value:this.value};this.multi&&(e.values=[...this._selectedValues$.value]),this.dispatchEvent(new CustomEvent(`change`,{detail:e,bubbles:!0,composed:!0}))}checkValidity(){return!this.required||(this.multi?this._selectedValues$.value.length>0:!!this._selectedValue$.value)}reportValidity(){return this._inputElementRef.value?this._inputElementRef.value.reportValidity():this.checkValidity()}firstUpdated(){this._setupOptionHandlers(),this._updateInputDisplay(),(this.shadowRoot?.querySelector(`slot`))?.addEventListener(`slotchange`,()=>{this._setupOptionHandlers(),this._updateOptionSelection(this._selectedValue$.value,this._selectedValues$.value)})}handleChipRemove(e){let t=this._selectedValues$.value.filter(t=>t!==e);this._selectedValues$.next(t),this._fireChangeEvent(),this._announceToScreenReader(`Removed: ${this._getChipLabel(e)}`)}_getChipLabel(e){let t=this._options.find(t=>t.value===e);return t&&(t.label||t.textContent)||e}_focusTextInput(){this._inputElementRef.value&&this._inputElementRef.value.focus()}render(){let e=`${this.id}-desc`,{height:t,padding:n,fontSize:r,labelSize:i}=(()=>{switch(this.size){case`sm`:return{height:`min-h-[40px]`,padding:`px-2`,fontSize:`text-sm`,labelSize:`text-sm`};case`lg`:return{height:`min-h-[60px]`,padding:`px-5`,fontSize:`text-lg`,labelSize:`text-lg`};default:return{height:`min-h-[50px]`,padding:`px-4`,fontSize:`text-base`,labelSize:`text-base`}}})();return s.html`
2
+ <div class="relative">
3
+ <!-- Screen reader live region -->
4
+ <div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
5
+
6
+ <!-- Description -->
7
+ ${this.description?s.html`<div id="${e}" class="sr-only">${this.description}</div>`:``}
8
+
9
+ <!-- Custom input wrapper for Gmail-style chip input -->
10
+ <slot name="trigger">
11
+ ${(0,u.when)(this.multi,()=>s.html`
12
+ <!-- Custom multi-select input with inline chips -->
13
+ <div class="relative">
14
+ ${(0,u.when)(this.label,()=>s.html`
15
+ <label class="${(0,a.classMap)({"block mb-1 font-medium":!0,"text-primary-default":!this.error,"text-error-default":this.error,[i]:!0})}">
16
+ ${this.label}${this.required?s.html`<span class="text-error-default ml-1">*</span>`:``}
17
+ </label>
18
+ `)}
19
+ <div
20
+ class="${(0,a.classMap)({"flex flex-wrap items-center gap-1":!0,[t]:!0,[n]:!0,"block w-full min-w-0 rounded-[8px] border-0":!0,"bg-surface-highest text-surface-on":!0,"ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset":!0,"ring-secondary-default focus-within:ring-secondary-default":!this.error,"ring-error-default focus-within:ring-error-default":this.error,"cursor-text transition-colors duration-200":!0})}"
21
+ @click=${()=>this._focusTextInput()}
22
+ role="combobox"
23
+ aria-autocomplete="list"
24
+ aria-haspopup="listbox"
25
+ aria-controls="options"
26
+ aria-expanded=${this._open}
27
+ >
28
+ <!-- Render chips inline -->
29
+ ${(0,l.repeat)(this._selectedValues$.value,e=>e,e=>s.html`
30
+ <schmancy-input-chip
31
+ .value=${e}
32
+ @remove=${e=>this.handleChipRemove(e.detail.value)}
33
+ class="shrink-0 my-0.5"
34
+ >
35
+ ${this._getChipLabel(e)}
36
+ </schmancy-input-chip>
37
+ `)}
38
+
39
+ <!-- Text input for typing -->
40
+ <input
41
+ ${(0,c.ref)(this._inputElementRef)}
42
+ id="autocomplete-input"
43
+ type="text"
44
+ class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${r} font-medium text-surface-on placeholder:text-muted"
45
+ name=${this.name||this.label?.toLowerCase().replace(/\s+/g,`-`)||``}
46
+ .placeholder=${this._selectedValues$.value.length>0?`Add more...`:this.placeholder}
47
+ .value=${this._inputValue}
48
+ .autocomplete=${this.autocomplete}
49
+ aria-invalid=${this.error?`true`:`false`}
50
+ aria-required=${this.required?`true`:`false`}
51
+ aria-describedby=${this.error&&this.validationMessage?`${this._a11yId}-err`:s.nothing}
52
+ aria-label=${!this.label&&this.placeholder?this.placeholder:s.nothing}
53
+ @input=${e=>{let t=e.target.value;this._inputValue=t,this._inputValue$.next(t)}}
54
+ @focus=${e=>{e.stopPropagation(),this._inputValue=``,this._inputValue$.next(``),this._openDropdown()}}
55
+ @keydown=${e=>{this._handleKeyDown(e)}}
56
+ @blur=${()=>{this._handleAutoSelectOnBlur()}}
57
+ />
58
+ </div>
59
+
60
+ <!-- Validation message -->
61
+ ${(0,u.when)(this.error&&this.validationMessage,()=>s.html`
62
+ <div id="${this._a11yId}-err" class="mt-1 text-sm text-error-default" role="alert">
63
+ ${this.validationMessage}
64
+ </div>
65
+ `)}
66
+ </div>
67
+ `,()=>s.html`
68
+ <!-- Regular single-select input -->
69
+ <schmancy-input
70
+ .size=${this.size}
71
+ ${(0,c.ref)(this._inputElementRef)}
72
+ id="autocomplete-input"
73
+ class="w-full"
74
+ .name=${this.name||this.label?.toLowerCase().replace(/\s+/g,`-`)||``}
75
+ .label=${this.label}
76
+ .placeholder=${this.placeholder}
77
+ .required=${this.required}
78
+ .value=${this._inputValue}
79
+ type="text"
80
+ autocomplete=${this.autocomplete}
81
+ clickable
82
+ role="combobox"
83
+ aria-autocomplete="list"
84
+ aria-haspopup="listbox"
85
+ aria-controls="options"
86
+ aria-expanded=${this._open}
87
+ aria-describedby=${this.description?e:void 0}
88
+ @input=${e=>{let t=e.target.value;this._inputValue=t,this._inputValue$.next(t)}}
89
+ @focus=${e=>{e.stopPropagation(),this._openDropdown()}}
90
+ @click=${e=>{e.stopPropagation(),this._openDropdown()}}
91
+ @keydown=${e=>{this._handleKeyDown(e)}}
92
+ @blur=${()=>{this._handleAutoSelectOnBlur()}}
93
+ >
94
+ </schmancy-input>
95
+ `)}
96
+ </slot>
97
+
98
+ <!-- Options dropdown -->
99
+ <ul
100
+ id="options"
101
+ class=${(0,a.classMap)({absolute:!0,"z-[1000]":!0,"mt-1":!0,"w-full":!0,"rounded-md":!0,"shadow-md":!0,"overflow-auto":!0,"min-w-full":!0,"bg-surface-low":!0,flex:!0,"flex-col":!0})}
102
+ role="listbox"
103
+ aria-multiselectable=${this.multi?`true`:`false`}
104
+ aria-label=${`${this.label||`Options`} dropdown`}
105
+ ?hidden=${!this._open}
106
+ style="max-height: ${this.maxHeight}; display: ${this._open?`flex`:`none`};"
107
+ @slotchange=${()=>{this._setupOptionHandlers()}}
108
+ >
109
+ <slot></slot>
110
+ ${this._hasResults?``:s.html`
111
+ <li class="px-3 py-2 text-sm text-muted">No results found</li>
112
+ `}
113
+ </ul>
114
+ </div>
115
+ `}_handleAutoSelectOnBlur(){if(this.multi||!this._open||!this._inputValue.trim())return;let e=this._inputValue.trim(),t=null,r=0;this._options.forEach(i=>{if(i.hidden)return;let a=i.label||i.textContent||``,o=i.value,s=n.t(e,a),c=n.t(e,o),l=Math.max(1.1*s,c);l>r&&l>=this.similarityThreshold&&(r=l,t=i)}),t&&(this._selectedValue$.next(t.value),this._inputValue=t.label||t.textContent||``,this._inputValue$.next(this._inputValue),this._open=!1)}_handleKeyDown(e){let t=this._open,n=this._selectedValues$.value;if(this.multi&&e.key===`Backspace`&&!this._inputValue&&n.length>0&&!t){e.preventDefault();let t=n[n.length-1];this.handleChipRemove(t);return}if(!t&&(e.key===`ArrowDown`||e.key===`Enter`))return e.preventDefault(),this._openDropdown(),void setTimeout(()=>{this._options.find(e=>!e.hidden)?.focus()},10);if(!t)return;let r=this._options.filter(e=>!e.hidden).sort((e,t)=>parseInt(e.style.order||`0`)-parseInt(t.style.order||`0`)),i=r.find(e=>e===document.activeElement),a=i?r.indexOf(i):-1;switch(e.key){case`Escape`:e.preventDefault(),this._open=!1,this._updateInputDisplay(),this._inputElementRef.value?.focus();break;case`Tab`:this._open=!1,this._updateInputDisplay();break;case`ArrowDown`:e.preventDefault(),r[a<r.length-1?a+1:0]?.focus();break;case`ArrowUp`:e.preventDefault(),r[a>0?a-1:r.length-1]?.focus();break;case`Home`:e.preventDefault(),r[0]?.focus();break;case`End`:e.preventDefault(),r[r.length-1]?.focus();break;case`Enter`:case` `:i&&(e.preventDefault(),this._selectOption(i))}}};e.t([(0,o.property)({type:Boolean})],d.prototype,`required`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`placeholder`,void 0),e.t([(0,o.property)({type:String,reflect:!0})],d.prototype,`label`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`name`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`maxHeight`,void 0),e.t([(0,o.property)({type:Boolean})],d.prototype,`multi`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`description`,void 0),e.t([(0,o.property)({type:String,reflect:!0})],d.prototype,`size`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`autocomplete`,void 0),e.t([(0,o.property)({type:Number})],d.prototype,`debounceMs`,void 0),e.t([(0,o.property)({type:Number})],d.prototype,`similarityThreshold`,void 0),e.t([(0,o.property)({type:Boolean})],d.prototype,`error`,void 0),e.t([(0,o.property)({type:String})],d.prototype,`validationMessage`,void 0),e.t([(0,o.property)({type:Array})],d.prototype,`values`,null),e.t([(0,o.property)({type:String,reflect:!0})],d.prototype,`value`,null),e.t([(0,o.state)()],d.prototype,`_open`,void 0),e.t([(0,o.state)()],d.prototype,`_inputValue`,void 0),e.t([(0,o.state)()],d.prototype,`_visibleOptionsCount`,void 0),e.t([(0,o.state)()],d.prototype,`_hasResults`,void 0),e.t([(0,o.query)(`#options`)],d.prototype,`_listbox`,void 0),e.t([(0,o.query)(`sch-input`)],d.prototype,`_input`,void 0),e.t([(0,o.queryAssignedElements)({flatten:!0})],d.prototype,`_options`,void 0),d=e.t([(0,o.customElement)(`schmancy-autocomplete`)],d);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-AI2CCJmK.cjs","names":[],"sources":["../src/autocomplete/autocomplete.scss?inline","../src/autocomplete/autocomplete.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\n@keyframes onAutoFillStart {\n\tfrom {/**/}\n\tto {/**/}\n}\n\nsch-input::part(input):-webkit-autofill,\nsch-input input:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n\tanimation-duration: 1ms;\n}\n","import { $LitElement } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html, nothing } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport {\n BehaviorSubject,\n combineLatest\n} from 'rxjs'\nimport {\n debounceTime,\n distinctUntilChanged,\n take,\n takeUntil,\n tap\n} from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../utils/search'\n// Import chip component for multi-select display\nimport '../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n value: string | string[]\n values?: string[]\n}>\n\ninterface FilteredOption {\n option: SchmancyOption\n score: number\n}\n\n/**\n * Autocomplete input component with filtering and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the input\n * @prop {string} placeholder - Placeholder text for the input\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends $LitElement(style) {\n static formAssociated = true\n internals: ElementInternals | undefined\n\n constructor() {\n super()\n try {\n this.internals = this.attachInternals()\n } catch {\n this.internals = undefined\n }\n }\n\n get form(): HTMLFormElement | null {\n return this.internals?.form ?? null\n }\n\n formResetCallback(): void {\n if (this.multi) {\n this._selectedValues$.next([])\n } else {\n this._selectedValue$.next('')\n }\n this._inputValue = ''\n this._inputValue$.next('')\n this.error = false\n this.validationMessage = ''\n }\n\n formDisabledCallback(disabled: boolean): void {\n // The component does not expose a disabled prop directly; propagate via attribute.\n if (disabled) this.setAttribute('disabled', '')\n else this.removeAttribute('disabled')\n }\n\n // Track whether value/values have been explicitly set\n _valueSet: boolean = false\n _valuesSet: boolean = false\n\n // Public API properties\n @property({ type: Boolean }) required = false\n @property({ type: String }) placeholder = ''\n @property({ type: String, reflect: true }) label = ''\n @property({ type: String }) name = ''\n @property({ type: String }) maxHeight = '300px'\n @property({ type: Boolean }) multi = false\n @property({ type: String }) description = ''\n @property({ type: String, reflect: true }) size: InputSize = 'md'\n @property({ type: String }) autocomplete = 'off'\n @property({ type: Number }) debounceMs = 200\n @property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n @property({ type: Boolean }) error = false\n @property({ type: String }) validationMessage = ''\n\n private readonly _a11yId = `schmancy-autocomplete-${Math.random().toString(36).slice(2, 10)}`\n\n // Values property for multi-select mode\n @property({ type: Array })\n get values() {\n return [...this._selectedValues$.value]\n }\n set values(vals: string[]) {\n this._valuesSet = true\n this._selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n }\n\n // Value property\n @property({ type: String, reflect: true })\n get value() {\n return this.multi \n ? this._selectedValues$.value.join(',')\n : this._selectedValue$.value\n }\n set value(val: string) {\n this._valueSet = true\n if (this.multi) {\n const newValues = val ? val.split(',').map(v => v.trim()).filter(Boolean) : []\n const currentValues = this._selectedValues$.value\n // Only update if values actually changed\n if (JSON.stringify(newValues) !== JSON.stringify(currentValues)) {\n this._selectedValues$.next(newValues)\n }\n } else {\n // Only update if value actually changed\n if (val !== this._selectedValue$.value) {\n this._selectedValue$.next(val)\n // Update the input display when value is set\n this._updateInputDisplay()\n }\n }\n }\n\n // State\n @state() private _open = false\n @state() private _inputValue = ''\n @state() private _visibleOptionsCount = 0\n @state() private _hasResults = true\n\n // DOM references\n @query('#options') _listbox!: HTMLUListElement\n @query('sch-input') _input!: SchmancyInput\n @queryAssignedElements({ flatten: true }) private _options!: SchmancyOption[]\n private _inputElementRef = createRef<HTMLInputElement>()\n\n // RxJS Subjects - only what we actually need\n private _selectedValue$ = new BehaviorSubject<string>('')\n private _selectedValues$ = new BehaviorSubject<string[]>([])\n private _inputValue$ = new BehaviorSubject<string>('')\n\n connectedCallback() {\n super.connectedCallback()\n\n if (!this.id) {\n this.id = `sch-autocomplete-${Math.random().toString(36).slice(2, 9)}`\n }\n\n this._setupAutocompleteLogic()\n this._setupDocumentClickHandler()\n }\n\n private _setupAutocompleteLogic() {\n // Sync selection state\n combineLatest([\n this._selectedValue$,\n this._selectedValues$\n ]).pipe(\n tap(([selectedValue, selectedValues]) => {\n this._updateOptionSelection(selectedValue, selectedValues)\n // Keep ElementInternals form value in sync with selection (single and multi).\n const formValue = this.multi ? selectedValues.join(',') : selectedValue\n this.internals?.setFormValue(formValue || null)\n if (this.required) {\n const missing = this.multi ? selectedValues.length === 0 : !selectedValue\n this.internals?.setValidity(\n missing ? { valueMissing: true } : {},\n missing ? this.validationMessage || 'Please select an option.' : undefined,\n )\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n\n // Filter options based on input\n this._inputValue$.pipe(\n distinctUntilChanged(),\n debounceTime(this.debounceMs),\n tap(searchTerm => {\n if (this._open) {\n this._filterOptions(searchTerm)\n }\n }),\n takeUntil(this.disconnecting)\n ).subscribe()\n }\n\n private _setupOptionHandlers() {\n this._options.forEach((option, index) => {\n option.setAttribute('role', 'option')\n option.tabIndex = -1\n if (!option.id) {\n option.id = `${this.id}-option-${index}`\n }\n // Prevent blur handler from interfering with option selection\n option.onmousedown = (e: MouseEvent) => {\n e.preventDefault() // Prevent focus loss\n }\n\n // Handle the actual selection\n option.onclick = (e: MouseEvent) => {\n e.stopPropagation()\n this._selectOption(option)\n }\n })\n }\n\n private _updateOptionSelection(selectedValue: string, selectedValues: string[]) {\n this._options.forEach(option => {\n option.selected = this.multi\n ? selectedValues.includes(option.value)\n : option.value === selectedValue\n option.setAttribute('aria-selected', String(option.selected))\n })\n }\n\n private _filterOptions(searchTerm: string) {\n const term = searchTerm.trim()\n\n if (!term) {\n // Show all options if no search term\n this._options.forEach(option => {\n option.hidden = false\n option.style.order = '0'\n })\n this._visibleOptionsCount = this._options.length\n this._hasResults = true\n } else {\n // Calculate similarity scores for all options\n const scoredOptions: FilteredOption[] = this._options.map(option => {\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n\n const labelScore = similarity(term, optionLabel)\n const valueScore = similarity(term, optionValue)\n const score = Math.max(labelScore * 1.1, valueScore)\n\n return { option, score }\n })\n\n // Sort by score (highest first)\n scoredOptions.sort((a, b) => b.score - a.score)\n\n // Apply visibility and ordering\n let visibleCount = 0\n scoredOptions.forEach((item, index) => {\n const { option, score } = item\n\n if (score < this.similarityThreshold) {\n option.hidden = true\n } else {\n option.hidden = false\n visibleCount++\n option.style.order = String(index)\n }\n })\n\n this._visibleOptionsCount = visibleCount\n this._hasResults = visibleCount > 0\n }\n\n this._announceToScreenReader(\n this._visibleOptionsCount > 0\n ? `${this._visibleOptionsCount} option${this._visibleOptionsCount === 1 ? '' : 's'} available.`\n : 'No results found.'\n )\n }\n\n private _openDropdown() {\n this._open = true\n // Reset filters based on current input value when dropdown opens\n this._filterOptions(this._inputValue)\n }\n\n private _selectOption(option: SchmancyOption) {\n if (this.multi) {\n const currentValues = this._selectedValues$.value\n const index = currentValues.indexOf(option.value)\n const newValues = index > -1\n ? currentValues.filter(v => v !== option.value)\n : [...currentValues, option.value]\n\n this._selectedValues$.next(newValues)\n this._announceToScreenReader(\n newValues.length > 0\n ? `Selected: ${this._getSelectedLabels().join(', ')}`\n : 'No options selected'\n )\n this._fireChangeEvent()\n } else {\n // Update value first\n this._selectedValue$.next(option.value)\n\n // Close dropdown IMMEDIATELY to prevent blur handler from firing\n this._open = false\n\n // Now fire event with the NEW value\n this._fireChangeEvent()\n\n // Update UI\n this._inputValue = option.label || option.textContent || ''\n this._inputValue$.next(this._inputValue)\n\n this._announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n }\n }\n\n private _setupDocumentClickHandler() {\n // Simple document click handler\n const handleDocumentClick = (e: MouseEvent) => {\n if (!this._open) return\n\n const path = e.composedPath()\n if (!path.includes(this) && !this._options.some(opt => path.includes(opt))) {\n this._open = false\n this._updateInputDisplay()\n }\n }\n\n document.addEventListener('click', handleDocumentClick)\n\n // Cleanup on disconnect\n this.disconnecting.pipe(take(1)).subscribe(() => {\n document.removeEventListener('click', handleDocumentClick)\n })\n }\n\n\n private _updateInputDisplay() {\n // For multi-select, we don't update input display since chips show the selections\n if (this.multi) return\n\n const selectedValue = this._selectedValue$.value\n const option = this._options.find(opt => opt.value === selectedValue)\n this._inputValue = option ? option.label || option.textContent || '' : ''\n this._inputValue$.next(this._inputValue)\n\n if (this._inputElementRef.value) {\n this._inputElementRef.value.value = this._inputValue\n }\n }\n\n private _getSelectedLabels(): string[] {\n return this._options\n .filter(option => \n this.multi \n ? this._selectedValues$.value.includes(option.value)\n : option.value === this._selectedValue$.value\n )\n .map(option => option.label || option.textContent || '')\n }\n\n private _announceToScreenReader(message: string) {\n const liveRegion = this.shadowRoot?.querySelector('#live-status')\n if (liveRegion) {\n liveRegion.textContent = message\n }\n }\n\n private _fireChangeEvent() {\n const detail: SchmancyAutocompleteChangeEvent['detail'] = {\n value: this.value,\n }\n\n if (this.multi) {\n detail.values = [...this._selectedValues$.value]\n }\n\n this.dispatchEvent(\n new CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n detail,\n bubbles: true,\n composed: true,\n })\n )\n }\n\n public checkValidity(): boolean {\n if (!this.required) return true\n return this.multi \n ? this._selectedValues$.value.length > 0 \n : Boolean(this._selectedValue$.value)\n }\n\n public reportValidity(): boolean {\n if (this._inputElementRef.value) {\n return this._inputElementRef.value.reportValidity()\n }\n return this.checkValidity()\n }\n\n firstUpdated() {\n this._setupOptionHandlers()\n\n // Sync initial value with display after options are available\n this._updateInputDisplay()\n\n // Update options when slot changes\n const slot = this.shadowRoot?.querySelector('slot')\n slot?.addEventListener('slotchange', () => {\n this._setupOptionHandlers()\n this._updateOptionSelection(this._selectedValue$.value, this._selectedValues$.value)\n })\n }\n\n private handleChipRemove(value: string) {\n const currentValues = this._selectedValues$.value\n const newValues = currentValues.filter(v => v !== value)\n this._selectedValues$.next(newValues)\n this._fireChangeEvent()\n this._announceToScreenReader(`Removed: ${this._getChipLabel(value)}`)\n }\n\n private _getChipLabel(value: string): string {\n const option = this._options.find(opt => opt.value === value)\n return option ? option.label || option.textContent || value : value\n }\n\n private _focusTextInput() {\n if (this._inputElementRef.value) {\n this._inputElementRef.value.focus()\n }\n }\n\n render() {\n const descriptionId = `${this.id}-desc`\n\n // Get size-based styling to match Schmancy input\n const getSizeStyles = () => {\n switch (this.size) {\n case 'sm':\n return {\n height: 'min-h-[40px]',\n padding: 'px-2',\n fontSize: 'text-sm', // 14px\n labelSize: 'text-sm'\n }\n case 'lg':\n return {\n height: 'min-h-[60px]',\n padding: 'px-5',\n fontSize: 'text-lg', // 18px\n labelSize: 'text-lg'\n }\n case 'md':\n default:\n return {\n height: 'min-h-[50px]',\n padding: 'px-4',\n fontSize: 'text-base', // 16px\n labelSize: 'text-base'\n }\n }\n }\n\n const { height, padding, fontSize, labelSize } = getSizeStyles()\n\n return html`\n <div class=\"relative\">\n <!-- Screen reader live region -->\n <div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n <!-- Description -->\n ${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n <!-- Custom input wrapper for Gmail-style chip input -->\n <slot name=\"trigger\">\n ${when(this.multi,\n () => html`\n <!-- Custom multi-select input with inline chips -->\n <div class=\"relative\">\n ${when(this.label, () => html`\n <label class=\"${classMap({\n 'block mb-1 font-medium': true,\n 'text-primary-default': !this.error,\n 'text-error-default': this.error,\n [labelSize]: true\n })}\">\n ${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n </label>\n `)}\n <div\n class=\"${classMap({\n 'flex flex-wrap items-center gap-1': true,\n [height]: true,\n [padding]: true,\n 'block w-full min-w-0 rounded-[8px] border-0': true,\n 'bg-surface-highest text-surface-on': true,\n 'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n 'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n 'ring-error-default focus-within:ring-error-default': this.error,\n 'cursor-text transition-colors duration-200': true\n })}\"\n @click=${() => this._focusTextInput()}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n >\n <!-- Render chips inline -->\n ${repeat(\n this._selectedValues$.value,\n value => value,\n value => html`\n <schmancy-input-chip\n .value=${value}\n @remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n class=\"shrink-0 my-0.5\"\n >\n ${this._getChipLabel(value)}\n </schmancy-input-chip>\n `\n )}\n\n <!-- Text input for typing -->\n <input\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n type=\"text\"\n class=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n .placeholder=${this._selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n .value=${this._inputValue}\n .autocomplete=${this.autocomplete}\n aria-invalid=${this.error ? 'true' : 'false'}\n aria-required=${this.required ? 'true' : 'false'}\n aria-describedby=${this.error && this.validationMessage ? `${this._a11yId}-err` : nothing}\n aria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n // Clear input on focus for new searches\n this._inputValue = ''\n this._inputValue$.next('')\n this._openDropdown()\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n />\n </div>\n\n <!-- Validation message -->\n ${when(this.error && this.validationMessage, () => html`\n <div id=\"${this._a11yId}-err\" class=\"mt-1 text-sm text-error-default\" role=\"alert\">\n ${this.validationMessage}\n </div>\n `)}\n </div>\n `,\n () => html`\n <!-- Regular single-select input -->\n <schmancy-input\n .size=${this.size}\n ${ref(this._inputElementRef)}\n id=\"autocomplete-input\"\n class=\"w-full\"\n .name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n .label=${this.label}\n .placeholder=${this.placeholder}\n .required=${this.required}\n .value=${this._inputValue}\n type=\"text\"\n autocomplete=${this.autocomplete}\n clickable\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls=\"options\"\n aria-expanded=${this._open}\n aria-describedby=${this.description ? descriptionId : undefined}\n @input=${(e: Event) => {\n const value = (e.target as HTMLInputElement).value\n this._inputValue = value\n this._inputValue$.next(value)\n }}\n @focus=${(e: FocusEvent) => {\n e.stopPropagation()\n this._openDropdown()\n }}\n @click=${(e: MouseEvent) => {\n e.stopPropagation()\n this._openDropdown()\n }}\n @keydown=${(e: KeyboardEvent) => {\n this._handleKeyDown(e)\n }}\n @blur=${() => {\n this._handleAutoSelectOnBlur()\n }}\n >\n </schmancy-input>\n `\n )}\n </slot>\n\n <!-- Options dropdown -->\n <ul\n id=\"options\"\n class=${classMap({\n 'absolute': true,\n 'z-[1000]': true,\n 'mt-1': true,\n 'w-full': true,\n 'rounded-md': true,\n 'shadow-md': true,\n 'overflow-auto': true,\n 'min-w-full': true,\n 'bg-surface-low': true,\n 'flex': true,\n 'flex-col': true, // Enable flexbox for ordering\n })}\n role=\"listbox\"\n aria-multiselectable=${this.multi ? 'true' : 'false'}\n aria-label=${`${this.label || 'Options'} dropdown`}\n ?hidden=${!this._open}\n style=\"max-height: ${this.maxHeight}; display: ${this._open ? 'flex' : 'none'};\"\n @slotchange=${() => {\n this._setupOptionHandlers()\n }}\n >\n <slot></slot>\n ${!this._hasResults ? html`\n <li class=\"px-3 py-2 text-sm text-muted\">No results found</li>\n ` : ''}\n </ul>\n </div>\n `\n }\n\n private _handleAutoSelectOnBlur() {\n // Only auto-select in single-select mode and when dropdown is open with a search term\n if (this.multi || !this._open || !this._inputValue.trim()) {\n return\n }\n \n const searchTerm = this._inputValue.trim()\n \n // Find the best matching option using the same similarity logic as filtering\n let bestMatch: SchmancyOption | null = null\n let bestScore = 0\n \n this._options.forEach(option => {\n // Skip hidden options\n if (option.hidden) return\n \n // Get text to search in (prioritize label, then textContent, then value)\n const optionLabel = option.label || option.textContent || ''\n const optionValue = option.value\n \n // Calculate similarity scores for both label and value\n const labelScore = similarity(searchTerm, optionLabel)\n const valueScore = similarity(searchTerm, optionValue)\n \n // Use the higher score (prioritizing label matches)\n const score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n \n // Keep track of best match that meets threshold\n if (score > bestScore && score >= this.similarityThreshold) {\n bestScore = score\n bestMatch = option\n }\n })\n \n // Auto-select the best match if found\n if (bestMatch) {\n // Silently update the selected value without firing change event\n this._selectedValue$.next(bestMatch.value)\n this._inputValue = bestMatch.label || bestMatch.textContent || ''\n this._inputValue$.next(this._inputValue)\n this._open = false\n }\n }\n\n private _handleKeyDown(event: KeyboardEvent) {\n const isOpen = this._open\n const selectedValues = this._selectedValues$.value\n\n // Handle backspace to remove last chip in multi-select when input is empty\n if (this.multi && event.key === 'Backspace' && !this._inputValue && selectedValues.length > 0 && !isOpen) {\n event.preventDefault()\n const lastValue = selectedValues[selectedValues.length - 1]\n this.handleChipRemove(lastValue)\n return\n }\n\n if (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault()\n this._openDropdown()\n\n setTimeout(() => {\n const firstVisible = this._options.find(opt => !opt.hidden)\n firstVisible?.focus()\n }, 10)\n return\n }\n\n if (!isOpen) return\n\n const visibleOptions = this._options.filter(opt => !opt.hidden)\n .sort((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n\n const focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n const currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n switch (event.key) {\n case 'Escape':\n event.preventDefault()\n this._open = false\n this._updateInputDisplay()\n this._inputElementRef.value?.focus()\n break\n\n case 'Tab':\n this._open = false\n this._updateInputDisplay()\n break\n\n case 'ArrowDown':\n event.preventDefault()\n const nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n visibleOptions[nextIndex]?.focus()\n break\n\n case 'ArrowUp':\n event.preventDefault()\n const prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n visibleOptions[prevIndex]?.focus()\n break\n\n case 'Home':\n event.preventDefault()\n visibleOptions[0]?.focus()\n break\n\n case 'End':\n event.preventDefault()\n visibleOptions[visibleOptions.length - 1]?.focus()\n break\n\n case 'Enter':\n case ' ':\n if (focusedOption) {\n event.preventDefault()\n this._selectOption(focusedOption)\n }\n break\n }\n }\n}\n\n\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'schmancy-autocomplete': SchmancyAutocomplete\n }\n}\n"],"mappings":"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"}