@mhmo91/schmancy 0.10.35 → 0.10.37

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 (430) hide show
  1. package/custom-elements.json +1165 -1109
  2. package/dist/SchmancyElement-BHfQg3Tj.cjs +2 -0
  3. package/dist/SchmancyElement-BHfQg3Tj.cjs.map +1 -0
  4. package/dist/SchmancyElement-CDT2q1lA.js +284 -0
  5. package/dist/SchmancyElement-CDT2q1lA.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +3488 -3290
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +335 -275
  9. package/dist/{area-DviXdbDx.js → area-KtULlxuA.js} +2 -2
  10. package/dist/{area-DviXdbDx.js.map → area-KtULlxuA.js.map} +1 -1
  11. package/dist/{area-CTSTgjlx.cjs → area-fdKhYB6T.cjs} +1 -1
  12. package/dist/{area-CTSTgjlx.cjs.map → area-fdKhYB6T.cjs.map} +1 -1
  13. package/dist/area.cjs +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{audio-Q9oB_cQR.cjs → audio-CUMAv9D_.cjs} +1 -1
  16. package/dist/{audio-Q9oB_cQR.cjs.map → audio-CUMAv9D_.cjs.map} +1 -1
  17. package/dist/{audio-DFYoaw0M.js → audio-zIJVTo_V.js} +1 -1
  18. package/dist/{audio-DFYoaw0M.js.map → audio-zIJVTo_V.js.map} +1 -1
  19. package/dist/audio.cjs +1 -1
  20. package/dist/audio.js +2 -2
  21. package/dist/{autocomplete-DmLXJr7C.cjs → autocomplete-DEZk6wBD.cjs} +1 -1
  22. package/dist/{autocomplete-DmLXJr7C.cjs.map → autocomplete-DEZk6wBD.cjs.map} +1 -1
  23. package/dist/{autocomplete-BDvuma6D.js → autocomplete-DIScyo8Q.js} +3 -3
  24. package/dist/{autocomplete-BDvuma6D.js.map → autocomplete-DIScyo8Q.js.map} +1 -1
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/avatar.cjs +1 -1
  28. package/dist/avatar.js +3 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/{boat-lr7MPZ7H.js → boat-BHPqSqJd.js} +67 -83
  32. package/dist/boat-BHPqSqJd.js.map +1 -0
  33. package/dist/boat-OBZ77exO.cjs +34 -0
  34. package/dist/boat-OBZ77exO.cjs.map +1 -0
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/breadcrumb.cjs +1 -1
  38. package/dist/breadcrumb.js +2 -2
  39. package/dist/{busy-CgzZbGfx.cjs → busy-BJNsKSCM.cjs} +1 -1
  40. package/dist/{busy-CgzZbGfx.cjs.map → busy-BJNsKSCM.cjs.map} +1 -1
  41. package/dist/{busy-DgQ4ux5N.js → busy-Dut78y4L.js} +2 -2
  42. package/dist/{busy-DgQ4ux5N.js.map → busy-Dut78y4L.js.map} +1 -1
  43. package/dist/busy.cjs +1 -1
  44. package/dist/busy.js +1 -1
  45. package/dist/{button-DFvR1iXX.cjs → button-DzlHLjWO.cjs} +1 -1
  46. package/dist/{button-DFvR1iXX.cjs.map → button-DzlHLjWO.cjs.map} +1 -1
  47. package/dist/{button-qbN1muQ0.js → button-kcpPQavY.js} +2 -2
  48. package/dist/{button-qbN1muQ0.js.map → button-kcpPQavY.js.map} +1 -1
  49. package/dist/button.cjs +4 -4
  50. package/dist/button.cjs.map +1 -1
  51. package/dist/button.js +16 -22
  52. package/dist/button.js.map +1 -1
  53. package/dist/{card-D_GlwZ5q.cjs → card-BLxPLqdQ.cjs} +1 -1
  54. package/dist/{card-D_GlwZ5q.cjs.map → card-BLxPLqdQ.cjs.map} +1 -1
  55. package/dist/{card-DAbr-7Vy.js → card-DxSKxCid.js} +2 -2
  56. package/dist/{card-DAbr-7Vy.js.map → card-DxSKxCid.js.map} +1 -1
  57. package/dist/card.cjs +1 -1
  58. package/dist/card.js +1 -1
  59. package/dist/{checkbox-BNORaxMF.js → checkbox-B1wiM3Dv.js} +2 -2
  60. package/dist/{checkbox-BNORaxMF.js.map → checkbox-B1wiM3Dv.js.map} +1 -1
  61. package/dist/{checkbox-BUY_uc_r.cjs → checkbox-BCLkhp5G.cjs} +1 -1
  62. package/dist/{checkbox-BUY_uc_r.cjs.map → checkbox-BCLkhp5G.cjs.map} +1 -1
  63. package/dist/checkbox.cjs +1 -1
  64. package/dist/checkbox.js +1 -1
  65. package/dist/{chips-CXZ4dJCK.cjs → chips-C9dS1WKn.cjs} +44 -33
  66. package/dist/chips-C9dS1WKn.cjs.map +1 -0
  67. package/dist/{chips-Dg6Lk6BT.js → chips-vWmwqQed.js} +145 -122
  68. package/dist/chips-vWmwqQed.js.map +1 -0
  69. package/dist/chips.cjs +1 -1
  70. package/dist/chips.js +2 -2
  71. package/dist/connectivity.cjs +1 -1
  72. package/dist/connectivity.js +3 -3
  73. package/dist/content-drawer.cjs +1 -1
  74. package/dist/content-drawer.js +1 -1
  75. package/dist/{date-range-C-_be3_E.cjs → date-range-BV6HuvLw.cjs} +25 -19
  76. package/dist/date-range-BV6HuvLw.cjs.map +1 -0
  77. package/dist/{date-range-BU6WX7d5.js → date-range-D3ge1b4c.js} +129 -137
  78. package/dist/date-range-D3ge1b4c.js.map +1 -0
  79. package/dist/{date-range-inline-DJtUmHKF.cjs → date-range-inline-DpYgdLRv.cjs} +1 -1
  80. package/dist/{date-range-inline-DJtUmHKF.cjs.map → date-range-inline-DpYgdLRv.cjs.map} +1 -1
  81. package/dist/{date-range-inline-7o7xtVIu.js → date-range-inline-DuWQaWps.js} +2 -2
  82. package/dist/{date-range-inline-7o7xtVIu.js.map → date-range-inline-DuWQaWps.js.map} +1 -1
  83. package/dist/date-range-inline.cjs +1 -1
  84. package/dist/date-range-inline.js +1 -1
  85. package/dist/date-range.cjs +1 -1
  86. package/dist/date-range.js +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +2 -2
  89. package/dist/{details-EfbDPVEo.js → details-C-GZaq3j.js} +2 -2
  90. package/dist/{details-EfbDPVEo.js.map → details-C-GZaq3j.js.map} +1 -1
  91. package/dist/{details-Bs0MyyvF.cjs → details-Dp5rLIWk.cjs} +1 -1
  92. package/dist/{details-Bs0MyyvF.cjs.map → details-Dp5rLIWk.cjs.map} +1 -1
  93. package/dist/details.cjs +1 -1
  94. package/dist/details.js +1 -1
  95. package/dist/{directives-fLwDj6b0.cjs → directives-D_l1E5H6.cjs} +3 -3
  96. package/dist/directives-D_l1E5H6.cjs.map +1 -0
  97. package/dist/{directives-zi1Mm2er.js → directives-DyS51FUh.js} +37 -21
  98. package/dist/directives-DyS51FUh.js.map +1 -0
  99. package/dist/directives.cjs +1 -1
  100. package/dist/directives.js +2 -2
  101. package/dist/{divider-CdIsWZrM.cjs → divider-CBnAmHMZ.cjs} +1 -1
  102. package/dist/{divider-CdIsWZrM.cjs.map → divider-CBnAmHMZ.cjs.map} +1 -1
  103. package/dist/{divider-CEPfrIwe.js → divider-nQffE0AD.js} +2 -2
  104. package/dist/{divider-CEPfrIwe.js.map → divider-nQffE0AD.js.map} +1 -1
  105. package/dist/divider.cjs +1 -1
  106. package/dist/divider.js +1 -1
  107. package/dist/dropdown.cjs +1 -1
  108. package/dist/dropdown.js +2 -2
  109. package/dist/{expand-g1vqqUp1.js → expand-DvTb-UPR.js} +3 -3
  110. package/dist/{expand-g1vqqUp1.js.map → expand-DvTb-UPR.js.map} +1 -1
  111. package/dist/{expand--at1k3qo.cjs → expand-mlP_3XWz.cjs} +1 -1
  112. package/dist/{expand--at1k3qo.cjs.map → expand-mlP_3XWz.cjs.map} +1 -1
  113. package/dist/expand.cjs +1 -1
  114. package/dist/expand.js +1 -1
  115. package/dist/fab.cjs +77 -0
  116. package/dist/fab.cjs.map +1 -0
  117. package/dist/fab.js +151 -0
  118. package/dist/fab.js.map +1 -0
  119. package/dist/{float-DxVzgI9o.js → float-C-Ko0Le3.js} +2 -2
  120. package/dist/{float-DxVzgI9o.js.map → float-C-Ko0Le3.js.map} +1 -1
  121. package/dist/{float-P9HukAm-.cjs → float-C17xgMT1.cjs} +1 -1
  122. package/dist/{float-P9HukAm-.cjs.map → float-C17xgMT1.cjs.map} +1 -1
  123. package/dist/float.cjs +1 -1
  124. package/dist/float.js +1 -1
  125. package/dist/{form-ByYhXe1p.cjs → form-CwPHcQYB.cjs} +1 -1
  126. package/dist/{form-ByYhXe1p.cjs.map → form-CwPHcQYB.cjs.map} +1 -1
  127. package/dist/{form-CqLaozHp.js → form-DA0hUu2h.js} +3 -3
  128. package/dist/{form-CqLaozHp.js.map → form-DA0hUu2h.js.map} +1 -1
  129. package/dist/form.cjs +6 -6
  130. package/dist/form.cjs.map +1 -1
  131. package/dist/form.js +25 -23
  132. package/dist/form.js.map +1 -1
  133. package/dist/handover/agent-runtime-followups.md +1 -1
  134. package/dist/handover/agent-runtime-v1.md +3 -3
  135. package/dist/{icons-CkphcMp6.js → icons-C6UfxmHZ.js} +2 -2
  136. package/dist/{icons-CkphcMp6.js.map → icons-C6UfxmHZ.js.map} +1 -1
  137. package/dist/{icons-DYtiRU5V.cjs → icons-CW3-oMSb.cjs} +1 -1
  138. package/dist/{icons-DYtiRU5V.cjs.map → icons-CW3-oMSb.cjs.map} +1 -1
  139. package/dist/icons.cjs +1 -1
  140. package/dist/icons.js +1 -1
  141. package/dist/{iframe-CjqJksl8.js → iframe-BTjZfYyh.js} +2 -2
  142. package/dist/{iframe-CjqJksl8.js.map → iframe-BTjZfYyh.js.map} +1 -1
  143. package/dist/{iframe-C3trkP8q.cjs → iframe-wuYT2xFz.cjs} +1 -1
  144. package/dist/{iframe-C3trkP8q.cjs.map → iframe-wuYT2xFz.cjs.map} +1 -1
  145. package/dist/iframe.cjs +1 -1
  146. package/dist/iframe.js +1 -1
  147. package/dist/index.cjs +1 -1
  148. package/dist/index.js +57 -56
  149. package/dist/{input-CG51zDVh.js → input-B_4g2ulO.js} +2 -2
  150. package/dist/{input-CG51zDVh.js.map → input-B_4g2ulO.js.map} +1 -1
  151. package/dist/{input-DuavpwNL.cjs → input-BrDiIT60.cjs} +1 -1
  152. package/dist/{input-DuavpwNL.cjs.map → input-BrDiIT60.cjs.map} +1 -1
  153. package/dist/{input-chip-57tgNXKT.cjs → input-chip-B-XWh4aE.cjs} +1 -1
  154. package/dist/input-chip-B-XWh4aE.cjs.map +1 -0
  155. package/dist/{input-chip-C6Lq1927.js → input-chip-BlWhOruv.js} +2 -2
  156. package/dist/input-chip-BlWhOruv.js.map +1 -0
  157. package/dist/input.cjs +1 -1
  158. package/dist/input.js +1 -1
  159. package/dist/json.cjs +1 -1
  160. package/dist/json.js +3 -3
  161. package/dist/kbd.cjs +1 -1
  162. package/dist/kbd.js +2 -2
  163. package/dist/{layout-6ipbiWTl.cjs → layout-BhyIcEVu.cjs} +1 -1
  164. package/dist/{layout-6ipbiWTl.cjs.map → layout-BhyIcEVu.cjs.map} +1 -1
  165. package/dist/{layout-D4IOwx7p.js → layout-Dxit9enO.js} +1 -1
  166. package/dist/{layout-D4IOwx7p.js.map → layout-Dxit9enO.js.map} +1 -1
  167. package/dist/layout.cjs +1 -1
  168. package/dist/layout.js +2 -2
  169. package/dist/{lightbox-H8pVWGMX.cjs → lightbox-CVBogswK.cjs} +1 -1
  170. package/dist/{lightbox-H8pVWGMX.cjs.map → lightbox-CVBogswK.cjs.map} +1 -1
  171. package/dist/{lightbox-CsyO2XSr.js → lightbox-D85XAAuC.js} +2 -2
  172. package/dist/{lightbox-CsyO2XSr.js.map → lightbox-D85XAAuC.js.map} +1 -1
  173. package/dist/lightbox.cjs +1 -1
  174. package/dist/lightbox.js +1 -1
  175. package/dist/{list-BAwH0pQW.js → list-DOF_yVn5.js} +2 -2
  176. package/dist/{list-BAwH0pQW.js.map → list-DOF_yVn5.js.map} +1 -1
  177. package/dist/{list-Bs9m8kw7.cjs → list-nVjLskgx.cjs} +1 -1
  178. package/dist/{list-Bs9m8kw7.cjs.map → list-nVjLskgx.cjs.map} +1 -1
  179. package/dist/list.cjs +1 -1
  180. package/dist/list.js +1 -1
  181. package/dist/{menu-BMcGzj1h.cjs → menu-DqmNjLgY.cjs} +1 -1
  182. package/dist/{menu-BMcGzj1h.cjs.map → menu-DqmNjLgY.cjs.map} +1 -1
  183. package/dist/{menu-tQVARVaC.js → menu-QrAK5Uu9.js} +3 -3
  184. package/dist/{menu-tQVARVaC.js.map → menu-QrAK5Uu9.js.map} +1 -1
  185. package/dist/menu.cjs +1 -1
  186. package/dist/menu.js +1 -1
  187. package/dist/{mixins-Bp0wIHg2.js → mixins-De1zjyhy.js} +1 -1
  188. package/dist/{mixins-Bp0wIHg2.js.map → mixins-De1zjyhy.js.map} +1 -1
  189. package/dist/{mixins-CGXSzZc7.cjs → mixins-DxHpyMHA.cjs} +1 -1
  190. package/dist/{mixins-CGXSzZc7.cjs.map → mixins-DxHpyMHA.cjs.map} +1 -1
  191. package/dist/mixins.cjs +1 -1
  192. package/dist/mixins.js +2 -2
  193. package/dist/nav-drawer.cjs +1 -1
  194. package/dist/nav-drawer.js +1 -1
  195. package/dist/navigation-bar.cjs +1 -1
  196. package/dist/navigation-bar.js +1 -1
  197. package/dist/navigation-rail.cjs +1 -1
  198. package/dist/navigation-rail.js +2 -2
  199. package/dist/{notification-D1tX2nx5.js → notification-BtAK7NK8.js} +4 -4
  200. package/dist/{notification-D1tX2nx5.js.map → notification-BtAK7NK8.js.map} +1 -1
  201. package/dist/{notification-Bz00zdpV.cjs → notification-DYzbUb5C.cjs} +1 -1
  202. package/dist/{notification-Bz00zdpV.cjs.map → notification-DYzbUb5C.cjs.map} +1 -1
  203. package/dist/notification.cjs +1 -1
  204. package/dist/notification.js +1 -1
  205. package/dist/{option-BpGV8Apj.js → option-DHwA0miA.js} +2 -2
  206. package/dist/{option-BpGV8Apj.js.map → option-DHwA0miA.js.map} +1 -1
  207. package/dist/{option-BnybLEDO.cjs → option-DnSPa8ro.cjs} +1 -1
  208. package/dist/{option-BnybLEDO.cjs.map → option-DnSPa8ro.cjs.map} +1 -1
  209. package/dist/option.cjs +1 -1
  210. package/dist/option.js +1 -1
  211. package/dist/{overlay-UQR2Dy3u.cjs → overlay-BVkqZmoS.cjs} +5 -5
  212. package/dist/overlay-BVkqZmoS.cjs.map +1 -0
  213. package/dist/{overlay-BpNhd74N.js → overlay-Del1sBEB.js} +108 -108
  214. package/dist/overlay-Del1sBEB.js.map +1 -0
  215. package/dist/overlay.cjs +1 -1
  216. package/dist/{overlay.confirm-body-CVDtVk5X.cjs → overlay.confirm-body-BV9umTAl.cjs} +1 -1
  217. package/dist/{overlay.confirm-body-CVDtVk5X.cjs.map → overlay.confirm-body-BV9umTAl.cjs.map} +1 -1
  218. package/dist/{overlay.confirm-body-BHcXu5Wk.js → overlay.confirm-body-DSONXUzl.js} +6 -6
  219. package/dist/{overlay.confirm-body-BHcXu5Wk.js.map → overlay.confirm-body-DSONXUzl.js.map} +1 -1
  220. package/dist/overlay.js +3 -3
  221. package/dist/{overlay.service-DTE6NwIM.js → overlay.service-BTp5Oq7f.js} +2 -2
  222. package/dist/{overlay.service-DTE6NwIM.js.map → overlay.service-BTp5Oq7f.js.map} +1 -1
  223. package/dist/{overlay.service-C8RsQzgM.cjs → overlay.service-XLlrsSdA.cjs} +1 -1
  224. package/dist/{overlay.service-C8RsQzgM.cjs.map → overlay.service-XLlrsSdA.cjs.map} +1 -1
  225. package/dist/{progress-gbIALDRs.cjs → progress-DUbTL9g9.cjs} +1 -1
  226. package/dist/{progress-gbIALDRs.cjs.map → progress-DUbTL9g9.cjs.map} +1 -1
  227. package/dist/{progress-CAKsxp29.js → progress-DYA83CFU.js} +2 -2
  228. package/dist/{progress-CAKsxp29.js.map → progress-DYA83CFU.js.map} +1 -1
  229. package/dist/progress.cjs +1 -1
  230. package/dist/progress.js +1 -1
  231. package/dist/{radio-group-CfJ5DtI4.cjs → radio-group-B-ORNtvR.cjs} +1 -1
  232. package/dist/{radio-group-CfJ5DtI4.cjs.map → radio-group-B-ORNtvR.cjs.map} +1 -1
  233. package/dist/{radio-group-otyvZvUk.js → radio-group-DxX0iJBo.js} +2 -2
  234. package/dist/{radio-group-otyvZvUk.js.map → radio-group-DxX0iJBo.js.map} +1 -1
  235. package/dist/radio-group.cjs +1 -1
  236. package/dist/radio-group.js +1 -1
  237. package/dist/range.cjs +1 -1
  238. package/dist/range.js +2 -2
  239. package/dist/{select-81jniVTs.cjs → select-B9uj_u-s.cjs} +1 -1
  240. package/dist/{select-81jniVTs.cjs.map → select-B9uj_u-s.cjs.map} +1 -1
  241. package/dist/{select-9vXx1fhr.js → select-C7gkA-ab.js} +3 -3
  242. package/dist/{select-9vXx1fhr.js.map → select-C7gkA-ab.js.map} +1 -1
  243. package/dist/select.cjs +1 -1
  244. package/dist/select.js +1 -1
  245. package/dist/skeleton.cjs +1 -1
  246. package/dist/skeleton.js +2 -2
  247. package/dist/skills/INDEX.md +1 -1
  248. package/dist/skills/SKILL.md +20 -18
  249. package/dist/skills/boat.md +21 -15
  250. package/dist/skills/fab.md +75 -0
  251. package/dist/skills/schmancy/INDEX.md +1 -1
  252. package/dist/skills/schmancy/SKILL.md +20 -18
  253. package/dist/skills/schmancy/boat.md +21 -15
  254. package/dist/skills/schmancy/fab.md +75 -0
  255. package/dist/skills/schmancy/steps.md +68 -34
  256. package/dist/skills/schmancy/theme.md +1 -1
  257. package/dist/skills/steps.md +68 -34
  258. package/dist/skills/theme.md +1 -1
  259. package/dist/slider.cjs +1 -1
  260. package/dist/slider.js +2 -2
  261. package/dist/{sound.service-CmIw63aM.cjs → sound.service-C7FDY_yD.cjs} +1 -1
  262. package/dist/{sound.service-CmIw63aM.cjs.map → sound.service-C7FDY_yD.cjs.map} +1 -1
  263. package/dist/{sound.service-D3ZSq1Kj.js → sound.service-O0232os6.js} +1 -1
  264. package/dist/{sound.service-D3ZSq1Kj.js.map → sound.service-O0232os6.js.map} +1 -1
  265. package/dist/{splash-screen-C5KAWXvA.cjs → splash-screen-DIS4odDr.cjs} +1 -1
  266. package/dist/{splash-screen-C5KAWXvA.cjs.map → splash-screen-DIS4odDr.cjs.map} +1 -1
  267. package/dist/{splash-screen-BOjrmGLk.js → splash-screen-jfE47xl0.js} +2 -2
  268. package/dist/{splash-screen-BOjrmGLk.js.map → splash-screen-jfE47xl0.js.map} +1 -1
  269. package/dist/splash-screen.cjs +1 -1
  270. package/dist/splash-screen.js +1 -1
  271. package/dist/{src-C5g3p1J5.js → src-BP3h-9d9.js} +36 -35
  272. package/dist/{src-C5g3p1J5.js.map → src-BP3h-9d9.js.map} +1 -1
  273. package/dist/{src-qzUpLbje.cjs → src-Um_pzb-U.cjs} +1 -1
  274. package/dist/{src-qzUpLbje.cjs.map → src-Um_pzb-U.cjs.map} +1 -1
  275. package/dist/{state-Cex3rmx2.cjs → state-Bj0M9a6T.cjs} +1 -1
  276. package/dist/{state-Cex3rmx2.cjs.map → state-Bj0M9a6T.cjs.map} +1 -1
  277. package/dist/{state-CWBRTSvE.js → state-DscWQpoM.js} +1 -1
  278. package/dist/{state-CWBRTSvE.js.map → state-DscWQpoM.js.map} +1 -1
  279. package/dist/state.cjs +1 -1
  280. package/dist/state.js +2 -2
  281. package/dist/steps.cjs +35 -19
  282. package/dist/steps.cjs.map +1 -1
  283. package/dist/steps.js +96 -73
  284. package/dist/steps.js.map +1 -1
  285. package/dist/{surface-9S5scTsD.js → surface-B4Wn4SOO.js} +2 -2
  286. package/dist/{surface-9S5scTsD.js.map → surface-B4Wn4SOO.js.map} +1 -1
  287. package/dist/{surface-PfiejLuw.cjs → surface-DRq6cVW6.cjs} +1 -1
  288. package/dist/{surface-PfiejLuw.cjs.map → surface-DRq6cVW6.cjs.map} +1 -1
  289. package/dist/surface.cjs +1 -1
  290. package/dist/surface.js +1 -1
  291. package/dist/switch.cjs +1 -1
  292. package/dist/switch.js +2 -2
  293. package/dist/table.cjs +1 -1
  294. package/dist/table.js +2 -2
  295. package/dist/{tabs-uYvb1P06.cjs → tabs-Ca_fbHPW.cjs} +1 -1
  296. package/dist/{tabs-uYvb1P06.cjs.map → tabs-Ca_fbHPW.cjs.map} +1 -1
  297. package/dist/{tabs-BBOjAmgG.js → tabs-CnQPo-XS.js} +2 -2
  298. package/dist/{tabs-BBOjAmgG.js.map → tabs-CnQPo-XS.js.map} +1 -1
  299. package/dist/tabs.cjs +1 -1
  300. package/dist/tabs.js +1 -1
  301. package/dist/teleport.cjs +1 -1
  302. package/dist/teleport.js +1 -1
  303. package/dist/{textarea-QzSj8Dkl.js → textarea-BvqENhTW.js} +2 -2
  304. package/dist/{textarea-QzSj8Dkl.js.map → textarea-BvqENhTW.js.map} +1 -1
  305. package/dist/{textarea-YPHX4g7Y.cjs → textarea-qr7oL8oU.cjs} +1 -1
  306. package/dist/{textarea-YPHX4g7Y.cjs.map → textarea-qr7oL8oU.cjs.map} +1 -1
  307. package/dist/textarea.cjs +1 -1
  308. package/dist/textarea.js +1 -1
  309. package/dist/theme-BSwJ2YZo.cjs +181 -0
  310. package/dist/{theme-iKUaS9JB.cjs.map → theme-BSwJ2YZo.cjs.map} +1 -1
  311. package/dist/{theme-C2Mp-VGt.js → theme-BV0EzHQ1.js} +6 -5
  312. package/dist/{theme-C2Mp-VGt.js.map → theme-BV0EzHQ1.js.map} +1 -1
  313. package/dist/{theme-button-CJmhxfMe.cjs → theme-button-C6fpUzPM.cjs} +1 -1
  314. package/dist/{theme-button-CJmhxfMe.cjs.map → theme-button-C6fpUzPM.cjs.map} +1 -1
  315. package/dist/{theme-button-DGWAXhzd.js → theme-button-O_xNCgI7.js} +2 -2
  316. package/dist/{theme-button-DGWAXhzd.js.map → theme-button-O_xNCgI7.js.map} +1 -1
  317. package/dist/theme-button.cjs +1 -1
  318. package/dist/theme-button.js +1 -1
  319. package/dist/theme.cjs +1 -1
  320. package/dist/theme.js +3 -3
  321. package/dist/{theme.service-hc4N-1Oz.js → theme.service-DwLhhOmP.js} +1 -1
  322. package/dist/{theme.service-hc4N-1Oz.js.map → theme.service-DwLhhOmP.js.map} +1 -1
  323. package/dist/{theme.service-p61RsJBF.cjs → theme.service-kn9MC025.cjs} +1 -1
  324. package/dist/{theme.service-p61RsJBF.cjs.map → theme.service-kn9MC025.cjs.map} +1 -1
  325. package/dist/tree.cjs +1 -1
  326. package/dist/tree.js +2 -2
  327. package/dist/{typography-DwV0sqht.js → typography-Dtdooaic.js} +2 -2
  328. package/dist/{typography-DwV0sqht.js.map → typography-Dtdooaic.js.map} +1 -1
  329. package/dist/{typography-Bdt8RlX2.cjs → typography-opFYuUYS.cjs} +1 -1
  330. package/dist/{typography-Bdt8RlX2.cjs.map → typography-opFYuUYS.cjs.map} +1 -1
  331. package/dist/typography.cjs +1 -1
  332. package/dist/typography.js +1 -1
  333. package/dist/visually-hidden.cjs +1 -1
  334. package/dist/visually-hidden.js +2 -2
  335. package/dist/{window-D2WfvNng.cjs → window-BSAemI9J.cjs} +1 -1
  336. package/dist/{window-D2WfvNng.cjs.map → window-BSAemI9J.cjs.map} +1 -1
  337. package/dist/{window-n4jN60B_.js → window-ConcHirJ.js} +3 -3
  338. package/dist/{window-n4jN60B_.js.map → window-ConcHirJ.js.map} +1 -1
  339. package/dist/window.cjs +1 -1
  340. package/dist/window.js +1 -1
  341. package/package.json +1 -1
  342. package/skills/schmancy/INDEX.md +1 -1
  343. package/skills/schmancy/SKILL.md +20 -18
  344. package/skills/schmancy/boat.md +21 -15
  345. package/skills/schmancy/fab.md +75 -0
  346. package/skills/schmancy/steps.md +68 -34
  347. package/skills/schmancy/theme.md +1 -1
  348. package/src/CLAUDE.md +22 -16
  349. package/src/boat/boat.test.ts +130 -0
  350. package/src/boat/boat.ts +144 -121
  351. package/src/button/icon-button.ts +18 -30
  352. package/src/chips/assist-chip.ts +2 -263
  353. package/src/chips/chips.ts +2 -259
  354. package/src/chips/filter-chip.ts +2 -255
  355. package/src/chips/index.ts +2 -5
  356. package/src/chips/input-chip.ts +2 -413
  357. package/src/chips/suggestion-chip.ts +2 -266
  358. package/src/directives/fill.ts +28 -5
  359. package/src/directives/reveal.ts +192 -118
  360. package/src/fab/fab.test.ts +101 -0
  361. package/src/fab/fab.ts +226 -0
  362. package/src/fab/index.ts +1 -0
  363. package/src/form/fields/chips/assist-chip.ts +263 -0
  364. package/src/form/fields/chips/chips.ts +234 -0
  365. package/src/form/fields/chips/filter-chip.ts +255 -0
  366. package/src/form/fields/chips/index.ts +5 -0
  367. package/src/form/fields/chips/input-chip.ts +413 -0
  368. package/src/form/fields/chips/suggestion-chip.ts +266 -0
  369. package/src/form/fields/date-range/date-range.test.ts +44 -0
  370. package/src/form/fields/date-range/date-range.ts +103 -97
  371. package/src/form/fields/index.ts +1 -0
  372. package/src/index.ts +2 -1
  373. package/src/overlay/overlay.animations.ts +2 -3
  374. package/src/overlay/overlay.component.ts +8 -4
  375. package/src/overlay/overlay.types.ts +14 -2
  376. package/src/steps/index.ts +1 -1
  377. package/src/steps/schmancy-step.ts +91 -65
  378. package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
  379. package/src/steps/steps.context.ts +5 -4
  380. package/src/steps/steps.test.ts +120 -0
  381. package/src/theme/theme.component.ts +1 -0
  382. package/src/theme/theme.style.css +3 -0
  383. package/types/src/boat/boat.d.ts +27 -9
  384. package/types/src/boat/boat.test.d.ts +2 -0
  385. package/types/src/button/icon-button.d.ts +3 -2
  386. package/types/src/chips/assist-chip.d.ts +1 -47
  387. package/types/src/chips/chips.d.ts +1 -43
  388. package/types/src/chips/filter-chip.d.ts +1 -67
  389. package/types/src/chips/index.d.ts +1 -5
  390. package/types/src/chips/input-chip.d.ts +1 -82
  391. package/types/src/chips/suggestion-chip.d.ts +1 -52
  392. package/types/src/directives/reveal.d.ts +15 -5
  393. package/types/src/fab/fab.d.ts +80 -0
  394. package/types/src/fab/fab.test.d.ts +2 -0
  395. package/types/src/fab/index.d.ts +1 -0
  396. package/types/src/form/fields/chips/assist-chip.d.ts +47 -0
  397. package/types/src/form/fields/chips/chips.d.ts +35 -0
  398. package/types/src/form/fields/chips/filter-chip.d.ts +67 -0
  399. package/types/src/form/fields/chips/index.d.ts +5 -0
  400. package/types/src/form/fields/chips/input-chip.d.ts +82 -0
  401. package/types/src/form/fields/chips/suggestion-chip.d.ts +52 -0
  402. package/types/src/form/fields/date-range/date-range.d.ts +5 -10
  403. package/types/src/form/fields/index.d.ts +1 -0
  404. package/types/src/index.d.ts +2 -1
  405. package/types/src/overlay/overlay.component.d.ts +1 -0
  406. package/types/src/overlay/overlay.types.d.ts +12 -2
  407. package/types/src/steps/index.d.ts +1 -1
  408. package/types/src/steps/schmancy-step.d.ts +8 -23
  409. package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
  410. package/types/src/steps/steps.context.d.ts +2 -1
  411. package/types/src/steps/steps.test.d.ts +2 -0
  412. package/types/src/theme/theme.component.d.ts +1 -0
  413. package/dist/SchmancyElement-CA0Wqt8m.js +0 -284
  414. package/dist/SchmancyElement-CA0Wqt8m.js.map +0 -1
  415. package/dist/SchmancyElement-CYIif26I.cjs +0 -2
  416. package/dist/SchmancyElement-CYIif26I.cjs.map +0 -1
  417. package/dist/boat-Vqjgo10B.cjs +0 -33
  418. package/dist/boat-Vqjgo10B.cjs.map +0 -1
  419. package/dist/boat-lr7MPZ7H.js.map +0 -1
  420. package/dist/chips-CXZ4dJCK.cjs.map +0 -1
  421. package/dist/chips-Dg6Lk6BT.js.map +0 -1
  422. package/dist/date-range-BU6WX7d5.js.map +0 -1
  423. package/dist/date-range-C-_be3_E.cjs.map +0 -1
  424. package/dist/directives-fLwDj6b0.cjs.map +0 -1
  425. package/dist/directives-zi1Mm2er.js.map +0 -1
  426. package/dist/input-chip-57tgNXKT.cjs.map +0 -1
  427. package/dist/input-chip-C6Lq1927.js.map +0 -1
  428. package/dist/overlay-BpNhd74N.js.map +0 -1
  429. package/dist/overlay-UQR2Dy3u.cjs.map +0 -1
  430. package/dist/theme-iKUaS9JB.cjs +0 -181
@@ -1,16 +1,19 @@
1
1
  # schmancy-boat
2
2
 
3
- > Material-3 extended FAB that opens its panel via the `show()` overlay service. Great for persistent assistant/telemetry panels.
3
+ > Corner-anchored launcher that opens its panel via the `show()` overlay service. Three slots, three non-overlapping intents — **no element-type sniffing**. The collapsed launcher's size, padding, radius and spacing are the consumer's; the boat owns drag, corner-snapping, position persistence and the glass surface.
4
4
 
5
- > **Note:** `schmancy-window` is the evolved successor with more capabilities (resize, maximize, multi-window registry). Prefer `schmancy-window` for new code unless you want the simpler FAB-to-overlay model.
5
+ > **Note:** `schmancy-window` is the evolved successor with more capabilities (resize, maximize, multi-window registry). Prefer `schmancy-window` for new code unless you want the simpler launcher-to-overlay model.
6
6
 
7
7
  ## Usage
8
8
  ```html
9
- <schmancy-boat id="assistant" icon="smart_toy" label="Assistant" ?open=${isOpen}>
10
- <schmancy-icon slot="header">smart_toy</schmancy-icon>
11
- <span slot="summary">3</span>
9
+ <schmancy-boat id="assistant" ?open=${isOpen}>
10
+ <!-- optional: slot a handle to make the boat draggable -->
11
+ <schmancy-icon slot="drag-handle">drag_indicator</schmancy-icon>
12
12
 
13
- <!-- default slot: blooms into the show() overlay from the FAB on open -->
13
+ <!-- trigger slot: the collapsed launcher a plain click opens the panel -->
14
+ <div slot="trigger" class="px-4 py-2 rounded-full">Assistant · 3</div>
15
+
16
+ <!-- default slot: blooms into the show() overlay on open -->
14
17
  <div class="p-4">Panel body content</div>
15
18
  </schmancy-boat>
16
19
  ```
@@ -19,11 +22,8 @@
19
22
  | Property | Type | Default | Description |
20
23
  |----------|------|---------|-------------|
21
24
  | `id` | string | `'default'` | Unique identifier (persists drag position in localStorage) |
22
- | `icon` | string | — | Material icon for the FAB (overridden by the `header` slot) |
23
- | `label` | string | — | FAB label text. **Omit → circular icon-only FAB** |
24
25
  | `open` | boolean | `false` | Open state, reflected. Bind `?open=${…}` to drive it |
25
26
  | `corner` | `'bottom-right' \| 'bottom-left' \| 'top-right' \| 'top-left'` | `'bottom-right'` | Initial anchor corner |
26
- | `lowered` | boolean | `false` | Lower the FAB elevation |
27
27
 
28
28
  ## Methods & event
29
29
  ```typescript
@@ -36,19 +36,25 @@ boat.addEventListener('toggle', e => e.detail) // 'open' | 'closed'
36
36
  ## Slots
37
37
  | Slot | Renders | Behavior |
38
38
  |------|---------|----------|
39
+ | `trigger` | the collapsed launcher — everything visible while closed | A native **click** (or Enter/Space) anywhere on it opens the panel. The boat does **not** `preventDefault` / `stopPropagation` / `setPointerCapture` here, so any interactive child (button, FAB, input) works natively. A child that should *not* also open the boat calls `stopPropagation()` on its own handler. |
40
+ | `drag-handle` | the drag affordance (a grip icon, a title bar — your choice) | **Opt-in.** Pointer-drag is wired only to this slot's boat-owned wrapper. Slot something here → draggable; omit it → the boat is static at its corner. A no-move tap on the handle also opens, so the grip doubles as a launcher. |
39
41
  | _(default)_ | the expanded panel body | relocated into the `show()` overlay on open, restored on close |
40
- | `summary` | trailing content on the FAB pill | live count / badge — stays on the FAB |
41
- | `header` | leading icon on the FAB pill | overrides the `icon` property |
42
42
 
43
43
  ## Behavior
44
- - Drag to reposition. Releases snap to the nearest corner (FLIP + `SPRING_SMOOTH`).
45
- - Activation delegates to `show()`: blooms from the FAB, backdrop / Esc / back-button / focus, and sheet-on-narrow are handled by the overlay primitive.
46
- - Position persists in `localStorage` under `schmancy-boat-{id}`.
44
+ - **Drag is opt-in and unambiguous.** No `<schmancy-boat>` is draggable unless the consumer slots `drag-handle`. Drag listens on a dedicated boat-owned region wrapping only that slot — every pointerdown there is a drag intent, so there is no interactive-element denylist and new interactive components never need registering.
45
+ - **The trigger is pure content.** Opening is a normal click that bubbles; nesting a `<schmancy-button>`, `<schmancy-fab>`, etc. in the trigger Just Works — the long-standing "interactive control swallowed by the drag/tap heuristic" bug class is gone (see ADR 0031).
46
+ - The collapsed shape is **not** imposed by the boat: no fixed height, padding, radius or gap. Style the `trigger` slot content for any shape.
47
+ - Drag to reposition (from the handle). Releases snap to the nearest corner (FLIP + `SPRING_SMOOTH`). Position persists in `localStorage` under `schmancy-boat-{id}`.
48
+ - Activation delegates to `show()`: blooms from the launcher, backdrop / Esc / back-button / sheet-on-narrow handled by the overlay primitive.
47
49
  - Respects `prefers-reduced-motion`.
48
50
 
49
51
  ## Example
50
52
  ```html
51
- <schmancy-boat id="chat" icon="chat" label="Chat" corner="bottom-right">
53
+ <schmancy-boat id="chat" corner="bottom-right">
54
+ <schmancy-icon slot="drag-handle" class="px-1 opacity-40">drag_indicator</schmancy-icon>
55
+ <schmancy-fab slot="trigger" variant="tertiary" .label=${`Chat · ${count}`}>
56
+ <schmancy-icon>chat</schmancy-icon>
57
+ </schmancy-fab>
52
58
  <schmancy-list class="p-2">
53
59
  <!-- messages -->
54
60
  </schmancy-list>
@@ -0,0 +1,75 @@
1
+ # schmancy-fab
2
+
3
+ > Material 3 Floating Action Button. Faithful to the M3 spec
4
+ > (m3.material.io/components/floating-action-button) and the `md-fab`
5
+ > reference implementation (github.com/material-components/material-web):
6
+ > four colour variants, three sizes, an extended form, and a lowered
7
+ > elevation register. Adds schmancy's house `magnetic` pull + spring press.
8
+
9
+ ## Usage
10
+ ```html
11
+ <!-- Regular FAB (icon-only) -->
12
+ <schmancy-fab aria-label="Compose"><schmancy-icon>edit</schmancy-icon></schmancy-fab>
13
+
14
+ <!-- Extended FAB -->
15
+ <schmancy-fab label="Compose" variant="primary">
16
+ <schmancy-icon>edit</schmancy-icon>
17
+ </schmancy-fab>
18
+ ```
19
+
20
+ ## Properties
21
+ | Property | Type | Default | Description |
22
+ |----------|------|---------|-------------|
23
+ | `variant` | `'surface' \| 'primary' \| 'secondary' \| 'tertiary'` | `'surface'` | M3 colour role. `surface` = `surface-containerHigh` container + `primary` icon; the others use the matching `*-container` / `*-onContainer` pair |
24
+ | `size` | `'small' \| 'medium' \| 'large'` | `'medium'` | Container size: 40 / 56 / 96 dp. Ignored while extended |
25
+ | `label` | `string` | `''` | A non-empty value switches the FAB to its **extended** form (icon + text), exactly as `md-fab` derives extended from a truthy label |
26
+ | `extended` | `boolean` | `false` | Reflected mirror of "`label` is non-empty"; drives the extended geometry. Set automatically from `label` — read it, don't set it |
27
+ | `lowered` | `boolean` | `false` | M3 lowered FAB: elevation drops to level 1 (resting) / level 2 (hover) |
28
+
29
+ Per M3 guidance a FAB is **never disabled** — there is no `disabled`
30
+ property, matching `md-fab`.
31
+
32
+ ## Slots
33
+ | Slot | Description |
34
+ |------|-------------|
35
+ | (default) | The icon, typically `<schmancy-icon>`. Auto-sized per FAB size (24dp; 36dp for `large`) and given `aria-hidden` when an accessible name is present |
36
+
37
+ ## M3 tokens (exact)
38
+ | | small | medium | large | extended |
39
+ |--|--|--|--|--|
40
+ | container | 40×40 | 56×56 | 96×96 | 56 tall, content wide |
41
+ | shape (radius) | 12dp | 16dp | 28dp | 16dp |
42
+ | icon | 24dp | 24dp | 36dp | 24dp |
43
+
44
+ Extended paddings: `padding-inline-start: 16px`, `padding-inline-end: 20px`,
45
+ icon-to-label gap `12px` — verbatim from `md-fab`'s shared styles. Label is
46
+ the `label-large` type scale.
47
+
48
+ Elevation maps to schmancy's M3 elevation tokens
49
+ (`--schmancy-sys-elevation-*`): resting **level 3**, hover **level 4**;
50
+ lowered → resting **level 1**, hover **level 2**. Pressed elevation equals
51
+ resting per M3 (the press read is the state layer + spring scale).
52
+
53
+ State layer: hover `0.08`, focus/pressed `0.10`, tinted with the variant's
54
+ on-colour.
55
+
56
+ ## Physics (schmancy house style)
57
+ - **magnetic** directive embedded (strength 3, radius 60px) — same pull as `schmancy-button`.
58
+ - Hover raises elevation per M3; active applies a spring `scale(0.96)`.
59
+ - `prefers-reduced-motion` removes the transition and the press scale.
60
+
61
+ ## Examples
62
+ ```html
63
+ <!-- Small surface FAB -->
64
+ <schmancy-fab size="small" aria-label="Add"><schmancy-icon>add</schmancy-icon></schmancy-fab>
65
+
66
+ <!-- Large tertiary FAB -->
67
+ <schmancy-fab size="large" variant="tertiary" aria-label="Create">
68
+ <schmancy-icon>add</schmancy-icon>
69
+ </schmancy-fab>
70
+
71
+ <!-- Lowered extended secondary FAB -->
72
+ <schmancy-fab lowered label="New message" variant="secondary">
73
+ <schmancy-icon>edit</schmancy-icon>
74
+ </schmancy-fab>
75
+ ```
@@ -1,53 +1,87 @@
1
- # schmancy-steps-container / schmancy-step
1
+ # schmancy-steps / schmancy-step
2
2
 
3
- > Vertical stepper with collapsible steps, completion state, and navigation.
3
+ > Vertical stepper with orientation rail and optional collapsible content. Dual render mode decided per step by content presence.
4
4
 
5
5
  ## Usage
6
+
6
7
  ```html
7
- <schmancy-steps-container currentStep="1" @change=${(e) => handleStep(e.detail.value)}>
8
- <schmancy-step position="1" title="Account" description="Create your account">
8
+ <!-- Rail mode (no slotted content) dot + connector + label -->
9
+ <schmancy-steps
10
+ class="flex flex-col"
11
+ .value=${activeStep}
12
+ @change=${(e) => handleStep(e.detail.value)}
13
+ >
14
+ <schmancy-step position="1" label="Organisation"></schmancy-step>
15
+ <schmancy-step position="2" label="Legal entity"></schmancy-step>
16
+ <schmancy-step position="3" label="Location"></schmancy-step>
17
+ <schmancy-step position="4" label="Done"></schmancy-step>
18
+ </schmancy-steps>
19
+
20
+ <!-- Content mode (slotted content) — collapsible card, active step expands -->
21
+ <schmancy-steps .value=${activeStep} @change=${(e) => handleStep(e.detail.value)}>
22
+ <schmancy-step position="1" label="Account" description="Create your account">
9
23
  <schmancy-input label="Email" required></schmancy-input>
10
24
  </schmancy-step>
11
- <schmancy-step position="2" title="Profile" description="Set up profile">
25
+ <schmancy-step position="2" label="Profile" description="Set up profile">
12
26
  <schmancy-input label="Name" required></schmancy-input>
13
27
  </schmancy-step>
14
- </schmancy-steps-container>
28
+ </schmancy-steps>
15
29
  ```
16
30
 
17
- ## Properties (schmancy-steps-container)
18
- | Property | Type | Default | Description |
19
- |----------|------|---------|-------------|
20
- | currentStep | number | `1` | Currently active step (1-based) |
21
- | gap | number | `4` | Gap between steps (Tailwind scale) |
31
+ ## Properties schmancy-steps
22
32
 
23
- ## Properties (schmancy-step)
24
33
  | Property | Type | Default | Description |
25
- |----------|------|---------|-------------|
26
- | position | number | `1` | Step position (1-based) |
27
- | title | string | `''` | Step title |
28
- | description | string | `''` | Step description |
29
- | completed | boolean | `false` | Explicitly mark as complete |
30
- | lockBack | boolean | `false` | Prevent navigating to previous steps |
31
-
32
- ## Events (schmancy-steps-container)
34
+ |---|---|---|---|
35
+ | `value` | `number` | `1` | Active step (1-based). Reflected attribute. |
36
+ | `lockBack` | `boolean` | `false` | Block back-navigation for the whole stepper. |
37
+
38
+ Layout (spacing, orientation, width) is set by Tailwind classes on the host element; the primitive owns no layout props.
39
+
40
+ ## Events — schmancy-steps
41
+
33
42
  | Event | Detail | Description |
34
- |-------|--------|-------------|
35
- | change | `{ value: number }` | When current step changes |
43
+ |---|---|---|
44
+ | `change` | `{ value: number }` | Active step changed (property set or step click). |
45
+
46
+ ```ts
47
+ export type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>
48
+ ```
49
+
50
+ ## Properties — schmancy-step
51
+
52
+ | Property | Type | Default | Description |
53
+ |---|---|---|---|
54
+ | `position` | `number` | `1` | This step's 1-based index. Unique within the container. |
55
+ | `label` | `string` | `''` | Step label. |
56
+ | `description` | `string` | `''` | Secondary line (content mode only). |
57
+ | `completed` | `boolean` | `false` | Force complete status regardless of order. |
58
+
59
+ ## Dual render mode
60
+
61
+ A `<schmancy-step>` detects its own content via `slotchange`:
62
+
63
+ - **With slotted content** — renders an interactive card row (icon circle, check/dot, label + description, `bg-primary-container/20` active card). The active step expands with `flex: 1 1 auto`; inactive steps collapse.
64
+ - **Without slotted content** — renders a minimal orientation rail row (dot + connector + label). Use this for a left-panel navigation rail.
65
+
66
+ ## Step status
67
+
68
+ | Condition | Status |
69
+ |---|---|
70
+ | `position < value` or `completed` | `complete` |
71
+ | `position === value` | `current` |
72
+ | `position > value` | `upcoming` |
73
+
74
+ Clicking a `complete` or `current` step sets `value` and emits `change`. `upcoming` steps are inert. Back-navigation is blocked when the container has `lockBack`.
36
75
 
37
76
  ## Examples
77
+
38
78
  ```html
39
- <!-- With locked steps -->
40
- <schmancy-steps-container currentStep="2">
41
- <schmancy-step position="1" title="Step 1" completed lockBack>
42
- <!-- Already completed, cannot go back -->
43
- </schmancy-step>
44
- <schmancy-step position="2" title="Step 2">
79
+ <!-- Lock back-navigation after the first step -->
80
+ <schmancy-steps .value=${step} lockBack @change=${onStep}>
81
+ <schmancy-step position="1" label="Review" completed></schmancy-step>
82
+ <schmancy-step position="2" label="Confirm">
45
83
  <p>Current step content</p>
46
84
  </schmancy-step>
47
- <schmancy-step position="3" title="Step 3">
48
- <!-- Not yet reachable -->
49
- </schmancy-step>
50
- </schmancy-steps-container>
85
+ <schmancy-step position="3" label="Done"></schmancy-step>
86
+ </schmancy-steps>
51
87
  ```
52
-
53
- Only the active step renders its slotted content. Completed steps show a checkmark. Active step expands with `flex: 1`.
@@ -75,7 +75,7 @@ Every `--schmancy-sys-color-*` token is aliased as `--color-*` in the theme styl
75
75
  --schmancy-sys-color-{token} → --color-{token} → bg-{token} · text-{token} · border-{token}
76
76
  ```
77
77
 
78
- **Prefer the shortcut utility over the arbitrary-value escape hatch.** `border-outline-variant` is equivalent to `border-[var(--schmancy-sys-color-outlineVariant)]` but far more readable.
78
+ **The shortcut utility is the readable form of a token that exists for genuine semantic reuse and is registered in the workspace being edited.** `border-outline-variant` reads better than `border-[var(--schmancy-sys-color-outlineVariant)]` because `outlineVariant` is a reused semantic color aliased into every consuming workspace. A trivial or one-off layout value (`grid-rows-[auto_1fr]`, `max-w-[720px]`) stays in its portable arbitrary form — aliasing it behind a workspace-local `@theme` token adds a name no second call site uses and a build dependency a sibling workspace's Tailwind does not resolve.
79
79
 
80
80
  Multi-word tokens are registered in **both** camelCase and kebab-case — both forms work. Use whichever reads better:
81
81
 
@@ -1,53 +1,87 @@
1
- # schmancy-steps-container / schmancy-step
1
+ # schmancy-steps / schmancy-step
2
2
 
3
- > Vertical stepper with collapsible steps, completion state, and navigation.
3
+ > Vertical stepper with orientation rail and optional collapsible content. Dual render mode decided per step by content presence.
4
4
 
5
5
  ## Usage
6
+
6
7
  ```html
7
- <schmancy-steps-container currentStep="1" @change=${(e) => handleStep(e.detail.value)}>
8
- <schmancy-step position="1" title="Account" description="Create your account">
8
+ <!-- Rail mode (no slotted content) dot + connector + label -->
9
+ <schmancy-steps
10
+ class="flex flex-col"
11
+ .value=${activeStep}
12
+ @change=${(e) => handleStep(e.detail.value)}
13
+ >
14
+ <schmancy-step position="1" label="Organisation"></schmancy-step>
15
+ <schmancy-step position="2" label="Legal entity"></schmancy-step>
16
+ <schmancy-step position="3" label="Location"></schmancy-step>
17
+ <schmancy-step position="4" label="Done"></schmancy-step>
18
+ </schmancy-steps>
19
+
20
+ <!-- Content mode (slotted content) — collapsible card, active step expands -->
21
+ <schmancy-steps .value=${activeStep} @change=${(e) => handleStep(e.detail.value)}>
22
+ <schmancy-step position="1" label="Account" description="Create your account">
9
23
  <schmancy-input label="Email" required></schmancy-input>
10
24
  </schmancy-step>
11
- <schmancy-step position="2" title="Profile" description="Set up profile">
25
+ <schmancy-step position="2" label="Profile" description="Set up profile">
12
26
  <schmancy-input label="Name" required></schmancy-input>
13
27
  </schmancy-step>
14
- </schmancy-steps-container>
28
+ </schmancy-steps>
15
29
  ```
16
30
 
17
- ## Properties (schmancy-steps-container)
18
- | Property | Type | Default | Description |
19
- |----------|------|---------|-------------|
20
- | currentStep | number | `1` | Currently active step (1-based) |
21
- | gap | number | `4` | Gap between steps (Tailwind scale) |
31
+ ## Properties schmancy-steps
22
32
 
23
- ## Properties (schmancy-step)
24
33
  | Property | Type | Default | Description |
25
- |----------|------|---------|-------------|
26
- | position | number | `1` | Step position (1-based) |
27
- | title | string | `''` | Step title |
28
- | description | string | `''` | Step description |
29
- | completed | boolean | `false` | Explicitly mark as complete |
30
- | lockBack | boolean | `false` | Prevent navigating to previous steps |
31
-
32
- ## Events (schmancy-steps-container)
34
+ |---|---|---|---|
35
+ | `value` | `number` | `1` | Active step (1-based). Reflected attribute. |
36
+ | `lockBack` | `boolean` | `false` | Block back-navigation for the whole stepper. |
37
+
38
+ Layout (spacing, orientation, width) is set by Tailwind classes on the host element; the primitive owns no layout props.
39
+
40
+ ## Events — schmancy-steps
41
+
33
42
  | Event | Detail | Description |
34
- |-------|--------|-------------|
35
- | change | `{ value: number }` | When current step changes |
43
+ |---|---|---|
44
+ | `change` | `{ value: number }` | Active step changed (property set or step click). |
45
+
46
+ ```ts
47
+ export type SchmancyStepsChangeEvent = CustomEvent<{ value: number }>
48
+ ```
49
+
50
+ ## Properties — schmancy-step
51
+
52
+ | Property | Type | Default | Description |
53
+ |---|---|---|---|
54
+ | `position` | `number` | `1` | This step's 1-based index. Unique within the container. |
55
+ | `label` | `string` | `''` | Step label. |
56
+ | `description` | `string` | `''` | Secondary line (content mode only). |
57
+ | `completed` | `boolean` | `false` | Force complete status regardless of order. |
58
+
59
+ ## Dual render mode
60
+
61
+ A `<schmancy-step>` detects its own content via `slotchange`:
62
+
63
+ - **With slotted content** — renders an interactive card row (icon circle, check/dot, label + description, `bg-primary-container/20` active card). The active step expands with `flex: 1 1 auto`; inactive steps collapse.
64
+ - **Without slotted content** — renders a minimal orientation rail row (dot + connector + label). Use this for a left-panel navigation rail.
65
+
66
+ ## Step status
67
+
68
+ | Condition | Status |
69
+ |---|---|
70
+ | `position < value` or `completed` | `complete` |
71
+ | `position === value` | `current` |
72
+ | `position > value` | `upcoming` |
73
+
74
+ Clicking a `complete` or `current` step sets `value` and emits `change`. `upcoming` steps are inert. Back-navigation is blocked when the container has `lockBack`.
36
75
 
37
76
  ## Examples
77
+
38
78
  ```html
39
- <!-- With locked steps -->
40
- <schmancy-steps-container currentStep="2">
41
- <schmancy-step position="1" title="Step 1" completed lockBack>
42
- <!-- Already completed, cannot go back -->
43
- </schmancy-step>
44
- <schmancy-step position="2" title="Step 2">
79
+ <!-- Lock back-navigation after the first step -->
80
+ <schmancy-steps .value=${step} lockBack @change=${onStep}>
81
+ <schmancy-step position="1" label="Review" completed></schmancy-step>
82
+ <schmancy-step position="2" label="Confirm">
45
83
  <p>Current step content</p>
46
84
  </schmancy-step>
47
- <schmancy-step position="3" title="Step 3">
48
- <!-- Not yet reachable -->
49
- </schmancy-step>
50
- </schmancy-steps-container>
85
+ <schmancy-step position="3" label="Done"></schmancy-step>
86
+ </schmancy-steps>
51
87
  ```
52
-
53
- Only the active step renders its slotted content. Completed steps show a checkmark. Active step expands with `flex: 1`.
@@ -75,7 +75,7 @@ Every `--schmancy-sys-color-*` token is aliased as `--color-*` in the theme styl
75
75
  --schmancy-sys-color-{token} → --color-{token} → bg-{token} · text-{token} · border-{token}
76
76
  ```
77
77
 
78
- **Prefer the shortcut utility over the arbitrary-value escape hatch.** `border-outline-variant` is equivalent to `border-[var(--schmancy-sys-color-outlineVariant)]` but far more readable.
78
+ **The shortcut utility is the readable form of a token that exists for genuine semantic reuse and is registered in the workspace being edited.** `border-outline-variant` reads better than `border-[var(--schmancy-sys-color-outlineVariant)]` because `outlineVariant` is a reused semantic color aliased into every consuming workspace. A trivial or one-off layout value (`grid-rows-[auto_1fr]`, `max-w-[720px]`) stays in its portable arbitrary form — aliasing it behind a workspace-local `@theme` token adds a name no second call site uses and a build dependency a sibling workspace's Tailwind does not resolve.
79
79
 
80
80
  Multi-word tokens are registered in **both** camelCase and kebab-case — both forms work. Use whichever reads better:
81
81
 
package/dist/slider.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CYIif26I.cjs`);require(`./mixins-CGXSzZc7.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/cache.js`);var o=class extends e.t{constructor(...e){super(...e),this.type=`content`,this.src=``,this.alt=``,this.controls=!0,this.autoplay=!1,this.loop=!1,this.muted=!1,this.fit=`cover`}static{this.styles=[i.css`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-BHfQg3Tj.cjs`);require(`./mixins-DxHpyMHA.cjs`);let t=require(`rxjs`),n=require(`rxjs/operators`),r=require(`lit/decorators.js`),i=require(`lit`),a=require(`lit/directives/cache.js`);var o=class extends e.t{constructor(...e){super(...e),this.type=`content`,this.src=``,this.alt=``,this.controls=!0,this.autoplay=!1,this.loop=!1,this.muted=!1,this.fit=`cover`}static{this.styles=[i.css`
2
2
  :host {
3
3
  display: block;
4
4
  scroll-snap-align: center; /* If your slider uses scroll-snap */
package/dist/slider.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as e, u as t } from "./SchmancyElement-CA0Wqt8m.js";
2
- import "./mixins-Bp0wIHg2.js";
1
+ import { t as e, u as t } from "./SchmancyElement-CDT2q1lA.js";
2
+ import "./mixins-De1zjyhy.js";
3
3
  import { fromEvent as n } from "rxjs";
4
4
  import { throttleTime as r } from "rxjs/operators";
5
5
  import { customElement as i, property as a, query as o, state as s } from "lit/decorators.js";
@@ -1 +1 @@
1
- require(`./chunk-CncqDLb2.cjs`);const e=require(`./state-Cex3rmx2.cjs`);let t=require(`rxjs`);var n=e.a(`schmancy/sound`).local({theme:null,volume:.15,muted:!1}),r={joyful:{puffs:[{startTime:0,duration:.08,frequency:3e3,volume:.3},{startTime:.06,duration:.1,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.15,frequency:784,volume:.25,type:`sine`},{startTime:.1,duration:.2,frequency:988,volume:.3,type:`sine`},{startTime:.18,duration:.25,frequency:1175,volume:.25,type:`sine`}]},content:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},excited:{puffs:[{startTime:0,duration:.06,frequency:2500,volume:.25},{startTime:.05,duration:.06,frequency:3e3,volume:.3},{startTime:.1,duration:.08,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.12,frequency:880,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:1047,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1319,volume:.3,type:`sine`}]},proud:{puffs:[{startTime:0,duration:.15,frequency:1800,volume:.3}],tones:[{startTime:.05,duration:.25,frequency:523,volume:.25,type:`sine`},{startTime:.08,duration:.25,frequency:659,volume:.2,type:`sine`},{startTime:.11,duration:.3,frequency:784,volume:.25,type:`sine`}]},hopeful:{puffs:[{startTime:0,duration:.12,frequency:2200,volume:.2}],tones:[{startTime:.03,duration:.3,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},relieved:{puffs:[{startTime:0,duration:.25,frequency:1200,volume:.35}],tones:[{startTime:.1,duration:.35,frequency:659,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:523,volume:.15,type:`sine`,filterFrequency:800}]},grateful:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:440,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},peaceful:{puffs:[{startTime:0,duration:.3,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:500}]},playful:{puffs:[{startTime:0,duration:.05,frequency:2800,volume:.2},{startTime:.08,duration:.05,frequency:3200,volume:.25},{startTime:.14,duration:.06,frequency:2800,volume:.2}],tones:[{startTime:.03,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.1,duration:.08,frequency:988,volume:.25,type:`sine`},{startTime:.16,duration:.12,frequency:784,volume:.2,type:`sine`}]},amused:{puffs:[{startTime:0,duration:.04,frequency:2500,volume:.2},{startTime:.06,duration:.04,frequency:2800,volume:.22},{startTime:.11,duration:.05,frequency:2600,volume:.18}],tones:[{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},curious:{puffs:[{startTime:0,duration:.1,frequency:2e3,volume:.2}],tones:[{startTime:.03,duration:.2,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},inspired:{puffs:[{startTime:0,duration:.1,frequency:2500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`},{startTime:.07,duration:.28,frequency:784.5,volume:.16,type:`sine`},{startTime:.09,duration:.26,frequency:1046,volume:.12,type:`sine`}]},confident:{puffs:[{startTime:0,duration:.12,frequency:1500,volume:.3}],tones:[{startTime:.04,duration:.2,frequency:523,volume:.25,type:`sine`},{startTime:.06,duration:.22,frequency:659,volume:.2,type:`sine`}]},loved:{puffs:[{startTime:0,duration:.2,frequency:1e3,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:392,volume:.18,type:`sine`,filterFrequency:600},{startTime:.2,duration:.45,frequency:494,volume:.15,type:`sine`,filterFrequency:600}]},comforted:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:523,volume:.15,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:800}]},energized:{puffs:[{startTime:0,duration:.05,frequency:3e3,volume:.25},{startTime:.04,duration:.05,frequency:3500,volume:.28}],tones:[{startTime:.02,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:988,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1175,volume:.22,type:`sine`}]},celebrated:{puffs:[{startTime:0,duration:.08,frequency:2500,volume:.2}],tones:[{startTime:.02,duration:.18,frequency:523,volume:.22,type:`sine`},{startTime:.08,duration:.18,frequency:659,volume:.24,type:`sine`},{startTime:.14,duration:.2,frequency:784,volume:.26,type:`sine`},{startTime:.22,duration:.3,frequency:1047,volume:.22,type:`sine`}]},sad:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},lonely:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},disappointed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},heartbroken:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},grieving:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},hopeless:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},empty:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},discouraged:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},melancholic:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},homesick:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},hurt:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},miserable:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},regretful:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},ashamed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},inferior:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},anxious:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}],description:`Tight, quick puffs with uncertain wobble`},worried:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},afraid:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},terrified:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},panicked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},nervous:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},uneasy:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},insecure:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},overwhelmed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},stressed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},tense:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},apprehensive:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},startled:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},suspicious:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},vulnerable:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},annoyed:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},irritated:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},frustrated:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},angry:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},enraged:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},bitter:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},resentful:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},jealous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},envious:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},indignant:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},impatient:{puffs:[{startTime:0,duration:.04,frequency:1500,volume:.2},{startTime:.08,duration:.04,frequency:1500,volume:.2},{startTime:.16,duration:.04,frequency:1500,volume:.22}],tones:[{startTime:.06,duration:.1,frequency:523,volume:.15,type:`sine`}]},hostile:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},contemptuous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},tired:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},exhausted:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},drained:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},burnedOut:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},numb:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},bored:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},unmotivated:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},apathetic:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},restless:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},calm:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},relaxed:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},atEase:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},balanced:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},stable:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},secure:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},safe:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},centered:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},grounded:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},accepting:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},connected:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},accepted:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},included:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},belonging:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},appreciated:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},valued:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},respected:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},supported:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},protective:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},compassionate:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},empathetic:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},conflicted:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},confused:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},ambivalent:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},nostalgic:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},guilty:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},embarrassed:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},surprised:{puffs:[{startTime:0,duration:.06,frequency:2800,volume:.25}],tones:[{startTime:.02,duration:.15,frequency:659,volume:.2,type:`sine`,frequencyEnd:988}]},shocked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},awestruck:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:440,volume:.15,type:`sine`},{startTime:.1,duration:.38,frequency:660,volume:.12,type:`sine`},{startTime:.12,duration:.36,frequency:880,volume:.09,type:`sine`}]},skeptical:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]}},i=class e{get theme(){return n.value.theme}get volume(){return n.value.volume}get muted(){return n.value.muted}get themeName(){return this.theme?.name??`default`}constructor(){this.audioContext=null,this.theme$=n.$.pipe((0,t.map)(e=>e.theme),(0,t.shareReplay)(1)),this.volume$=n.$.pipe((0,t.map)(e=>e.volume),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.muted$=n.$.pipe((0,t.map)(e=>e.muted),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this._themeName$=new t.BehaviorSubject(`default`),this.themeName$=this._themeName$.asObservable(),this.theme$.subscribe(e=>{this._themeName$.next(e?.name??`default`)})}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}playPuff(e,t,n){let r=this.getContext(),i=Math.floor(r.sampleRate*t.duration),a=r.createBuffer(1,i,r.sampleRate),o=a.getChannelData(0);for(let e=0;e<i;e++)o[e]=2*Math.random()-1;let s=r.createBufferSource();s.buffer=a;let c=r.createBiquadFilter();c.type=`bandpass`,c.frequency.value=t.frequency,c.Q.value=.7;let l=r.createGain();l.gain.setValueAtTime(0,e),l.gain.linearRampToValueAtTime(t.volume*n,e+.015),l.gain.exponentialRampToValueAtTime(.001,e+t.duration),s.connect(c).connect(l).connect(r.destination),s.start(e),s.stop(e+t.duration)}playTone(e,t,n){let r=this.getContext(),i=r.createOscillator(),a=r.createGain();i.type=t.type,i.frequency.setValueAtTime(t.frequency,e),t.frequencyEnd&&i.frequency.exponentialRampToValueAtTime(t.frequencyEnd,e+.8*t.duration);let o=i;if(t.filterFrequency){let e=r.createBiquadFilter();e.type=`lowpass`,e.frequency.value=t.filterFrequency,i.connect(e),o=e}a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(t.volume*n,e+.02),a.gain.exponentialRampToValueAtTime(.001,e+t.duration),o.connect(a).connect(r.destination),i.start(e),i.stop(e+t.duration)}setTheme(e){n.set({theme:e})}resetTheme(){n.set({theme:null})}setVolume(e){n.set({volume:Math.max(0,Math.min(1,e))})}mute(){n.set({muted:!0})}unmute(){n.set({muted:!1})}toggleMute(){n.set({muted:!this.muted})}getSoundForFeeling(e){let t=this.theme;if(t?.feelings?.[e])return t.feelings[e];if(t?.categoryDefaults){let n=this.getCategoryForFeeling(e);if(t.categoryDefaults[n])return t.categoryDefaults[n]}return r[e]}getCategoryForFeeling(e){return[`joyful`,`content`,`excited`,`proud`,`hopeful`,`relieved`,`grateful`,`peaceful`,`playful`,`amused`,`curious`,`inspired`,`confident`,`loved`,`comforted`,`energized`,`celebrated`].includes(e)?`happy`:[`sad`,`lonely`,`disappointed`,`heartbroken`,`grieving`,`hopeless`,`empty`,`discouraged`,`melancholic`,`homesick`,`hurt`,`miserable`,`regretful`,`ashamed`,`inferior`].includes(e)?`sad`:[`anxious`,`worried`,`afraid`,`terrified`,`panicked`,`nervous`,`uneasy`,`insecure`,`overwhelmed`,`stressed`,`tense`,`apprehensive`,`startled`,`suspicious`,`vulnerable`].includes(e)?`anxious`:[`annoyed`,`irritated`,`frustrated`,`angry`,`enraged`,`bitter`,`resentful`,`jealous`,`envious`,`indignant`,`impatient`,`hostile`,`contemptuous`].includes(e)?`angry`:[`tired`,`exhausted`,`drained`,`burnedOut`,`numb`,`bored`,`unmotivated`,`apathetic`,`restless`].includes(e)?`tired`:[`calm`,`relaxed`,`atEase`,`balanced`,`stable`,`secure`,`safe`,`centered`,`grounded`,`accepting`].includes(e)?`calm`:[`connected`,`accepted`,`included`,`belonging`,`appreciated`,`valued`,`respected`,`supported`,`protective`,`compassionate`,`empathetic`].includes(e)?`connected`:`mixed`}play(e){if(this.muted)return;let t=this.getSoundForFeeling(e),n=this.getContext().currentTime,r=this.theme?.masterVolume??1,i=this.volume*r;t.puffs.forEach(e=>{this.playPuff(n+e.startTime,e,i)}),t.tones.forEach(e=>{this.playTone(n+e.startTime,e,i)})}dispose(){this.audioContext&&=(this.audioContext.close(),null)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),a=i;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ require(`./chunk-CncqDLb2.cjs`);const e=require(`./state-Bj0M9a6T.cjs`);let t=require(`rxjs`);var n=e.a(`schmancy/sound`).local({theme:null,volume:.15,muted:!1}),r={joyful:{puffs:[{startTime:0,duration:.08,frequency:3e3,volume:.3},{startTime:.06,duration:.1,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.15,frequency:784,volume:.25,type:`sine`},{startTime:.1,duration:.2,frequency:988,volume:.3,type:`sine`},{startTime:.18,duration:.25,frequency:1175,volume:.25,type:`sine`}]},content:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},excited:{puffs:[{startTime:0,duration:.06,frequency:2500,volume:.25},{startTime:.05,duration:.06,frequency:3e3,volume:.3},{startTime:.1,duration:.08,frequency:3500,volume:.35}],tones:[{startTime:.02,duration:.12,frequency:880,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:1047,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1319,volume:.3,type:`sine`}]},proud:{puffs:[{startTime:0,duration:.15,frequency:1800,volume:.3}],tones:[{startTime:.05,duration:.25,frequency:523,volume:.25,type:`sine`},{startTime:.08,duration:.25,frequency:659,volume:.2,type:`sine`},{startTime:.11,duration:.3,frequency:784,volume:.25,type:`sine`}]},hopeful:{puffs:[{startTime:0,duration:.12,frequency:2200,volume:.2}],tones:[{startTime:.03,duration:.3,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},relieved:{puffs:[{startTime:0,duration:.25,frequency:1200,volume:.35}],tones:[{startTime:.1,duration:.35,frequency:659,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:523,volume:.15,type:`sine`,filterFrequency:800}]},grateful:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:440,volume:.2,type:`sine`,filterFrequency:800},{startTime:.15,duration:.35,frequency:523,volume:.2,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:659,volume:.15,type:`sine`,filterFrequency:800}]},peaceful:{puffs:[{startTime:0,duration:.3,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:500}]},playful:{puffs:[{startTime:0,duration:.05,frequency:2800,volume:.2},{startTime:.08,duration:.05,frequency:3200,volume:.25},{startTime:.14,duration:.06,frequency:2800,volume:.2}],tones:[{startTime:.03,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.1,duration:.08,frequency:988,volume:.25,type:`sine`},{startTime:.16,duration:.12,frequency:784,volume:.2,type:`sine`}]},amused:{puffs:[{startTime:0,duration:.04,frequency:2500,volume:.2},{startTime:.06,duration:.04,frequency:2800,volume:.22},{startTime:.11,duration:.05,frequency:2600,volume:.18}],tones:[{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},curious:{puffs:[{startTime:0,duration:.1,frequency:2e3,volume:.2}],tones:[{startTime:.03,duration:.2,frequency:659,volume:.2,type:`sine`,frequencyEnd:880}]},inspired:{puffs:[{startTime:0,duration:.1,frequency:2500,volume:.25}],tones:[{startTime:.05,duration:.3,frequency:523,volume:.2,type:`sine`},{startTime:.07,duration:.28,frequency:784.5,volume:.16,type:`sine`},{startTime:.09,duration:.26,frequency:1046,volume:.12,type:`sine`}]},confident:{puffs:[{startTime:0,duration:.12,frequency:1500,volume:.3}],tones:[{startTime:.04,duration:.2,frequency:523,volume:.25,type:`sine`},{startTime:.06,duration:.22,frequency:659,volume:.2,type:`sine`}]},loved:{puffs:[{startTime:0,duration:.2,frequency:1e3,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:392,volume:.18,type:`sine`,filterFrequency:600},{startTime:.2,duration:.45,frequency:494,volume:.15,type:`sine`,filterFrequency:600}]},comforted:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:523,volume:.15,type:`sine`,filterFrequency:800},{startTime:.25,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:800}]},energized:{puffs:[{startTime:0,duration:.05,frequency:3e3,volume:.25},{startTime:.04,duration:.05,frequency:3500,volume:.28}],tones:[{startTime:.02,duration:.1,frequency:784,volume:.2,type:`sine`},{startTime:.08,duration:.12,frequency:988,volume:.25,type:`sine`},{startTime:.14,duration:.15,frequency:1175,volume:.22,type:`sine`}]},celebrated:{puffs:[{startTime:0,duration:.08,frequency:2500,volume:.2}],tones:[{startTime:.02,duration:.18,frequency:523,volume:.22,type:`sine`},{startTime:.08,duration:.18,frequency:659,volume:.24,type:`sine`},{startTime:.14,duration:.2,frequency:784,volume:.26,type:`sine`},{startTime:.22,duration:.3,frequency:1047,volume:.22,type:`sine`}]},sad:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},lonely:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},disappointed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},heartbroken:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},grieving:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},hopeless:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},empty:{puffs:[{startTime:0,duration:.2,frequency:700,volume:.2}],tones:[{startTime:.15,duration:.5,frequency:330,volume:.12,type:`sine`,filterFrequency:450}]},discouraged:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},melancholic:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},homesick:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},hurt:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},miserable:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.25}],tones:[{startTime:.1,duration:.4,frequency:392,volume:.2,type:`sine`,filterFrequency:400},{startTime:.3,duration:.45,frequency:294,volume:.15,type:`sine`,filterFrequency:350}]},regretful:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.18}],tones:[{startTime:.1,duration:.45,frequency:440,volume:.15,type:`sine`,filterFrequency:500},{startTime:.3,duration:.5,frequency:392,volume:.12,type:`sine`,filterFrequency:450}]},ashamed:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},inferior:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},anxious:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}],description:`Tight, quick puffs with uncertain wobble`},worried:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},afraid:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},terrified:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},panicked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},nervous:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},uneasy:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},insecure:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},overwhelmed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},stressed:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},tense:{puffs:[{startTime:0,duration:.08,frequency:1800,volume:.2},{startTime:.12,duration:.08,frequency:1900,volume:.22}],tones:[{startTime:.03,duration:.25,frequency:440,volume:.15,type:`sine`}]},apprehensive:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},startled:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},suspicious:{puffs:[{startTime:0,duration:.15,frequency:1200,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:349,volume:.15,type:`sine`,frequencyEnd:392}]},vulnerable:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},annoyed:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},irritated:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},frustrated:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},angry:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},enraged:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},bitter:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},resentful:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},jealous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},envious:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},indignant:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},impatient:{puffs:[{startTime:0,duration:.04,frequency:1500,volume:.2},{startTime:.08,duration:.04,frequency:1500,volume:.2},{startTime:.16,duration:.04,frequency:1500,volume:.22}],tones:[{startTime:.06,duration:.1,frequency:523,volume:.15,type:`sine`}]},hostile:{puffs:[{startTime:0,duration:.12,frequency:900,volume:.28}],tones:[{startTime:.04,duration:.15,frequency:349,volume:.2,type:`sine`},{startTime:.12,duration:.12,frequency:330,volume:.18,type:`sine`}]},contemptuous:{puffs:[{startTime:0,duration:.1,frequency:1e3,volume:.25}],tones:[{startTime:.03,duration:.2,frequency:294,volume:.18,type:`sine`,filterFrequency:400}]},tired:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},exhausted:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},drained:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},burnedOut:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},numb:{puffs:[{startTime:0,duration:.45,frequency:400,volume:.18}],tones:[{startTime:.15,duration:.5,frequency:294,volume:.1,type:`sine`,filterFrequency:300}]},bored:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},unmotivated:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},apathetic:{puffs:[{startTime:0,duration:.25,frequency:600,volume:.15}],tones:[{startTime:.1,duration:.3,frequency:349,volume:.1,type:`sine`,filterFrequency:400}]},restless:{puffs:[{startTime:0,duration:.35,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:330,volume:.12,type:`sine`,filterFrequency:350}]},calm:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},relaxed:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},atEase:{puffs:[{startTime:0,duration:.35,frequency:700,volume:.15}],tones:[{startTime:.15,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800},{startTime:.35,duration:.5,frequency:392,volume:.08,type:`sine`,filterFrequency:800}]},balanced:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},stable:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},secure:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},safe:{puffs:[{startTime:0,duration:.3,frequency:700,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.25,duration:.45,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},centered:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},grounded:{puffs:[{startTime:0,duration:.25,frequency:500,volume:.2}],tones:[{startTime:.1,duration:.4,frequency:262,volume:.15,type:`sine`,filterFrequency:350}]},accepting:{puffs:[{startTime:0,duration:.3,frequency:600,volume:.12}],tones:[{startTime:.1,duration:.5,frequency:392,volume:.1,type:`sine`,filterFrequency:500}]},connected:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},accepted:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},included:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},belonging:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},appreciated:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},valued:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},respected:{puffs:[{startTime:0,duration:.15,frequency:1500,volume:.2}],tones:[{startTime:.05,duration:.25,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.15,duration:.3,frequency:523,volume:.18,type:`sine`,filterFrequency:800}]},supported:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},protective:{puffs:[{startTime:0,duration:.25,frequency:900,volume:.18}],tones:[{startTime:.1,duration:.35,frequency:349,volume:.12,type:`sine`,filterFrequency:800},{startTime:.15,duration:.4,frequency:440,volume:.1,type:`sine`,filterFrequency:800}]},compassionate:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},empathetic:{puffs:[{startTime:0,duration:.2,frequency:1200,volume:.18}],tones:[{startTime:.08,duration:.3,frequency:440,volume:.15,type:`sine`,filterFrequency:800},{startTime:.12,duration:.32,frequency:523,volume:.12,type:`sine`,filterFrequency:800}]},conflicted:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},confused:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},ambivalent:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]},nostalgic:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.15}],tones:[{startTime:.1,duration:.4,frequency:440,volume:.12,type:`sine`,filterFrequency:500},{startTime:.3,duration:.45,frequency:392,volume:.1,type:`sine`,filterFrequency:450}]},guilty:{puffs:[{startTime:0,duration:.25,frequency:800,volume:.25}],tones:[{startTime:.08,duration:.3,frequency:523,volume:.18,type:`sine`,frequencyEnd:349}]},embarrassed:{puffs:[{startTime:0,duration:.05,frequency:2e3,volume:.18},{startTime:.08,duration:.05,frequency:2100,volume:.18},{startTime:.15,duration:.06,frequency:2e3,volume:.16}],tones:[{startTime:.04,duration:.2,frequency:494,volume:.12,type:`sine`}]},surprised:{puffs:[{startTime:0,duration:.06,frequency:2800,volume:.25}],tones:[{startTime:.02,duration:.15,frequency:659,volume:.2,type:`sine`,frequencyEnd:988}]},shocked:{puffs:[{startTime:0,duration:.04,frequency:3500,volume:.3}],tones:[{startTime:0,duration:.08,frequency:1047,volume:.25,type:`sine`},{startTime:.05,duration:.15,frequency:880,volume:.15,type:`sine`}]},awestruck:{puffs:[{startTime:0,duration:.2,frequency:1500,volume:.2}],tones:[{startTime:.08,duration:.4,frequency:440,volume:.15,type:`sine`},{startTime:.1,duration:.38,frequency:660,volume:.12,type:`sine`},{startTime:.12,duration:.36,frequency:880,volume:.09,type:`sine`}]},skeptical:{puffs:[{startTime:0,duration:.12,frequency:1200,volume:.18}],tones:[{startTime:.04,duration:.2,frequency:440,volume:.12,type:`sine`,frequencyEnd:494},{startTime:.15,duration:.15,frequency:466,volume:.1,type:`sine`}]}},i=class e{get theme(){return n.value.theme}get volume(){return n.value.volume}get muted(){return n.value.muted}get themeName(){return this.theme?.name??`default`}constructor(){this.audioContext=null,this.theme$=n.$.pipe((0,t.map)(e=>e.theme),(0,t.shareReplay)(1)),this.volume$=n.$.pipe((0,t.map)(e=>e.volume),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this.muted$=n.$.pipe((0,t.map)(e=>e.muted),(0,t.distinctUntilChanged)(),(0,t.shareReplay)(1)),this._themeName$=new t.BehaviorSubject(`default`),this.themeName$=this._themeName$.asObservable(),this.theme$.subscribe(e=>{this._themeName$.next(e?.name??`default`)})}getContext(){if(!this.audioContext){let e=window.AudioContext||window.webkitAudioContext;this.audioContext=new e}return this.audioContext.state===`suspended`&&this.audioContext.resume(),this.audioContext}playPuff(e,t,n){let r=this.getContext(),i=Math.floor(r.sampleRate*t.duration),a=r.createBuffer(1,i,r.sampleRate),o=a.getChannelData(0);for(let e=0;e<i;e++)o[e]=2*Math.random()-1;let s=r.createBufferSource();s.buffer=a;let c=r.createBiquadFilter();c.type=`bandpass`,c.frequency.value=t.frequency,c.Q.value=.7;let l=r.createGain();l.gain.setValueAtTime(0,e),l.gain.linearRampToValueAtTime(t.volume*n,e+.015),l.gain.exponentialRampToValueAtTime(.001,e+t.duration),s.connect(c).connect(l).connect(r.destination),s.start(e),s.stop(e+t.duration)}playTone(e,t,n){let r=this.getContext(),i=r.createOscillator(),a=r.createGain();i.type=t.type,i.frequency.setValueAtTime(t.frequency,e),t.frequencyEnd&&i.frequency.exponentialRampToValueAtTime(t.frequencyEnd,e+.8*t.duration);let o=i;if(t.filterFrequency){let e=r.createBiquadFilter();e.type=`lowpass`,e.frequency.value=t.filterFrequency,i.connect(e),o=e}a.gain.setValueAtTime(0,e),a.gain.linearRampToValueAtTime(t.volume*n,e+.02),a.gain.exponentialRampToValueAtTime(.001,e+t.duration),o.connect(a).connect(r.destination),i.start(e),i.stop(e+t.duration)}setTheme(e){n.set({theme:e})}resetTheme(){n.set({theme:null})}setVolume(e){n.set({volume:Math.max(0,Math.min(1,e))})}mute(){n.set({muted:!0})}unmute(){n.set({muted:!1})}toggleMute(){n.set({muted:!this.muted})}getSoundForFeeling(e){let t=this.theme;if(t?.feelings?.[e])return t.feelings[e];if(t?.categoryDefaults){let n=this.getCategoryForFeeling(e);if(t.categoryDefaults[n])return t.categoryDefaults[n]}return r[e]}getCategoryForFeeling(e){return[`joyful`,`content`,`excited`,`proud`,`hopeful`,`relieved`,`grateful`,`peaceful`,`playful`,`amused`,`curious`,`inspired`,`confident`,`loved`,`comforted`,`energized`,`celebrated`].includes(e)?`happy`:[`sad`,`lonely`,`disappointed`,`heartbroken`,`grieving`,`hopeless`,`empty`,`discouraged`,`melancholic`,`homesick`,`hurt`,`miserable`,`regretful`,`ashamed`,`inferior`].includes(e)?`sad`:[`anxious`,`worried`,`afraid`,`terrified`,`panicked`,`nervous`,`uneasy`,`insecure`,`overwhelmed`,`stressed`,`tense`,`apprehensive`,`startled`,`suspicious`,`vulnerable`].includes(e)?`anxious`:[`annoyed`,`irritated`,`frustrated`,`angry`,`enraged`,`bitter`,`resentful`,`jealous`,`envious`,`indignant`,`impatient`,`hostile`,`contemptuous`].includes(e)?`angry`:[`tired`,`exhausted`,`drained`,`burnedOut`,`numb`,`bored`,`unmotivated`,`apathetic`,`restless`].includes(e)?`tired`:[`calm`,`relaxed`,`atEase`,`balanced`,`stable`,`secure`,`safe`,`centered`,`grounded`,`accepting`].includes(e)?`calm`:[`connected`,`accepted`,`included`,`belonging`,`appreciated`,`valued`,`respected`,`supported`,`protective`,`compassionate`,`empathetic`].includes(e)?`connected`:`mixed`}play(e){if(this.muted)return;let t=this.getSoundForFeeling(e),n=this.getContext().currentTime,r=this.theme?.masterVolume??1,i=this.volume*r;t.puffs.forEach(e=>{this.playPuff(n+e.startTime,e,i)}),t.tones.forEach(e=>{this.playTone(n+e.startTime,e,i)})}dispose(){this.audioContext&&=(this.audioContext.close(),null)}static getInstance(){return e.instance||=new e,e.instance}}.getInstance(),a=i;Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});