@mhmo91/schmancy 0.10.41 → 0.10.43

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 (764) hide show
  1. package/custom-elements.json +291 -179
  2. package/dist/SchmancyElement-CeKrBW2j.cjs +2 -0
  3. package/dist/SchmancyElement-CeKrBW2j.cjs.map +1 -0
  4. package/dist/SchmancyElement-Ob9yGkiG.js +286 -0
  5. package/dist/SchmancyElement-Ob9yGkiG.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +4057 -4082
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +225 -94
  9. package/dist/animation-CCOIW4wJ.cjs.map +1 -1
  10. package/dist/animation-DCznELuT.js.map +1 -1
  11. package/dist/area-CbajcnmJ.cjs +21 -0
  12. package/dist/area-CbajcnmJ.cjs.map +1 -0
  13. package/dist/{area-BiM7V2ns.js → area-MxLAyWgV.js} +22 -22
  14. package/dist/area-MxLAyWgV.js.map +1 -0
  15. package/dist/area.cjs +1 -1
  16. package/dist/area.js +1 -1
  17. package/dist/{audio-CxO_j__6.js → audio-B_0PGwYC.js} +1 -1
  18. package/dist/audio-B_0PGwYC.js.map +1 -0
  19. package/dist/{audio-xXFfMPCS.cjs → audio-CpwrIaw-.cjs} +1 -1
  20. package/dist/audio-CpwrIaw-.cjs.map +1 -0
  21. package/dist/audio.cjs +1 -1
  22. package/dist/audio.js +2 -2
  23. package/dist/autocomplete-CILzaDB7.cjs +115 -0
  24. package/dist/autocomplete-CILzaDB7.cjs.map +1 -0
  25. package/dist/{autocomplete-DUBY9RtH.js → autocomplete-DV9RxCun.js} +113 -113
  26. package/dist/autocomplete-DV9RxCun.js.map +1 -0
  27. package/dist/autocomplete.cjs +1 -1
  28. package/dist/autocomplete.js +1 -1
  29. package/dist/avatar.cjs +1 -1
  30. package/dist/avatar.cjs.map +1 -1
  31. package/dist/avatar.js +4 -4
  32. package/dist/avatar.js.map +1 -1
  33. package/dist/badge.cjs +1 -1
  34. package/dist/badge.js +1 -1
  35. package/dist/{boat-ScvAima3.js → boat-DoZGgQ0P.js} +6 -8
  36. package/dist/{boat-ScvAima3.js.map → boat-DoZGgQ0P.js.map} +1 -1
  37. package/dist/{boat-BIYaPAHp.cjs → boat-sg0cWO8a.cjs} +3 -5
  38. package/dist/{boat-BIYaPAHp.cjs.map → boat-sg0cWO8a.cjs.map} +1 -1
  39. package/dist/boat.cjs +1 -1
  40. package/dist/boat.js +1 -1
  41. package/dist/breadcrumb.cjs +32 -31
  42. package/dist/breadcrumb.cjs.map +1 -1
  43. package/dist/breadcrumb.js +33 -32
  44. package/dist/breadcrumb.js.map +1 -1
  45. package/dist/busy-Brs-TDh9.cjs +133 -0
  46. package/dist/busy-Brs-TDh9.cjs.map +1 -0
  47. package/dist/busy-g4LoQmhB.js +172 -0
  48. package/dist/busy-g4LoQmhB.js.map +1 -0
  49. package/dist/busy.cjs +1 -1
  50. package/dist/busy.js +1 -1
  51. package/dist/{button-BTpxQ1Kd.cjs → button-Cml67Y_d.cjs} +41 -32
  52. package/dist/button-Cml67Y_d.cjs.map +1 -0
  53. package/dist/{button-D7QHfYf4.js → button-DWANpZfD.js} +43 -34
  54. package/dist/button-DWANpZfD.js.map +1 -0
  55. package/dist/button.cjs +40 -33
  56. package/dist/button.cjs.map +1 -1
  57. package/dist/button.js +42 -35
  58. package/dist/button.js.map +1 -1
  59. package/dist/calendar-2dJrw9pR.cjs +58 -0
  60. package/dist/calendar-2dJrw9pR.cjs.map +1 -0
  61. package/dist/calendar-kCe5LaBa.js +434 -0
  62. package/dist/calendar-kCe5LaBa.js.map +1 -0
  63. package/dist/calendar.cjs +1 -0
  64. package/dist/calendar.js +2 -0
  65. package/dist/{card-DCdtJ5Dy.js → card-CS_hYJbz.js} +136 -136
  66. package/dist/card-CS_hYJbz.js.map +1 -0
  67. package/dist/card-d0KhTnx5.cjs +177 -0
  68. package/dist/card-d0KhTnx5.cjs.map +1 -0
  69. package/dist/card.cjs +1 -1
  70. package/dist/card.js +1 -1
  71. package/dist/{checkbox-DVtyPk7l.js → checkbox-Bjp7kWuE.js} +2 -2
  72. package/dist/{checkbox-DVtyPk7l.js.map → checkbox-Bjp7kWuE.js.map} +1 -1
  73. package/dist/{checkbox-CYGOVPP-.cjs → checkbox-DZ2Wrz7Y.cjs} +1 -1
  74. package/dist/{checkbox-CYGOVPP-.cjs.map → checkbox-DZ2Wrz7Y.cjs.map} +1 -1
  75. package/dist/checkbox.cjs +1 -1
  76. package/dist/checkbox.js +1 -1
  77. package/dist/{chips-DVes-BSz.cjs → chips-BHBVkxsa.cjs} +142 -153
  78. package/dist/chips-BHBVkxsa.cjs.map +1 -0
  79. package/dist/{chips-C5bpgWyf.js → chips-DACeW7YL.js} +127 -138
  80. package/dist/chips-DACeW7YL.js.map +1 -0
  81. package/dist/chips.cjs +1 -1
  82. package/dist/chips.js +2 -2
  83. package/dist/connectivity.cjs +54 -38
  84. package/dist/connectivity.cjs.map +1 -1
  85. package/dist/connectivity.js +56 -40
  86. package/dist/connectivity.js.map +1 -1
  87. package/dist/content-drawer.cjs +1 -1
  88. package/dist/content-drawer.js +1 -1
  89. package/dist/cursor-glow-Ah7VXSj7.js.map +1 -1
  90. package/dist/cursor-glow-Bulq-38P.cjs.map +1 -1
  91. package/dist/date-range-CVAWMdar.cjs +138 -0
  92. package/dist/date-range-CVAWMdar.cjs.map +1 -0
  93. package/dist/date-range-D2NZU5Yg.js +433 -0
  94. package/dist/date-range-D2NZU5Yg.js.map +1 -0
  95. package/dist/{date-range-inline-Dx4Reboo.cjs → date-range-inline-CGM0SPK9.cjs} +2 -4
  96. package/dist/date-range-inline-CGM0SPK9.cjs.map +1 -0
  97. package/dist/{date-range-inline-DPqY9YYf.js → date-range-inline-D6Ozerzw.js} +3 -5
  98. package/dist/date-range-inline-D6Ozerzw.js.map +1 -0
  99. package/dist/date-range-inline.cjs +1 -1
  100. package/dist/date-range-inline.js +1 -1
  101. package/dist/date-range.cjs +1 -1
  102. package/dist/date-range.js +2 -2
  103. package/dist/dayjs.min-CvRZTfam.cjs +1 -0
  104. package/dist/dayjs.min-CvRZTfam.cjs.map +1 -0
  105. package/dist/dayjs.min-DnELezPs.js +296 -0
  106. package/dist/dayjs.min-DnELezPs.js.map +1 -0
  107. package/dist/delay.cjs +1 -1
  108. package/dist/delay.js +3 -3
  109. package/dist/{details-BnleHmYe.js → details-Ct1_GwKr.js} +104 -92
  110. package/dist/details-Ct1_GwKr.js.map +1 -0
  111. package/dist/{details-Bx2jSJxG.cjs → details-D4fVOaj4.cjs} +109 -97
  112. package/dist/details-D4fVOaj4.cjs.map +1 -0
  113. package/dist/details.cjs +1 -1
  114. package/dist/details.js +1 -1
  115. package/dist/{directives-CYf2fAdA.cjs → directives-B2VxfwRL.cjs} +1 -1
  116. package/dist/directives-B2VxfwRL.cjs.map +1 -0
  117. package/dist/{directives-d1rEbW1A.js → directives-Dj8jlv-Q.js} +3 -3
  118. package/dist/directives-Dj8jlv-Q.js.map +1 -0
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +2 -2
  121. package/dist/discovery.service-CIa3Eeuk.cjs.map +1 -1
  122. package/dist/discovery.service-DZFxtRwW.js.map +1 -1
  123. package/dist/divider-B3v33OnX.cjs +57 -0
  124. package/dist/divider-B3v33OnX.cjs.map +1 -0
  125. package/dist/divider-BJHW3q11.js +89 -0
  126. package/dist/divider-BJHW3q11.js.map +1 -0
  127. package/dist/divider.cjs +1 -1
  128. package/dist/divider.js +1 -1
  129. package/dist/dropdown.cjs +40 -40
  130. package/dist/dropdown.cjs.map +1 -1
  131. package/dist/dropdown.js +41 -41
  132. package/dist/dropdown.js.map +1 -1
  133. package/dist/{expand-DNrWuG_-.js → expand-BT8mOu8Q.js} +103 -97
  134. package/dist/expand-BT8mOu8Q.js.map +1 -0
  135. package/dist/expand-D0YdR9nR.cjs +147 -0
  136. package/dist/expand-D0YdR9nR.cjs.map +1 -0
  137. package/dist/expand.cjs +1 -1
  138. package/dist/expand.js +1 -1
  139. package/dist/fab.cjs +1 -1
  140. package/dist/fab.cjs.map +1 -1
  141. package/dist/fab.js +2 -2
  142. package/dist/fab.js.map +1 -1
  143. package/dist/{float-V7VQKTb8.cjs → float-BPQlDyai.cjs} +1 -1
  144. package/dist/{float-V7VQKTb8.cjs.map → float-BPQlDyai.cjs.map} +1 -1
  145. package/dist/{float-C_CMle0q.js → float-BQcxj3i_.js} +2 -2
  146. package/dist/{float-C_CMle0q.js.map → float-BQcxj3i_.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{form-DaaAQd2A.cjs → form-CoWFnClb.cjs} +8 -13
  150. package/dist/form-CoWFnClb.cjs.map +1 -0
  151. package/dist/{form-CMgYSZ3y.js → form-hC2LvCHX.js} +10 -15
  152. package/dist/form-hC2LvCHX.js.map +1 -0
  153. package/dist/form.cjs +12 -13
  154. package/dist/form.cjs.map +1 -1
  155. package/dist/form.js +23 -24
  156. package/dist/form.js.map +1 -1
  157. package/dist/gravity-6pL6CfIr.cjs.map +1 -1
  158. package/dist/gravity-sVK3zGBF.js.map +1 -1
  159. package/dist/handover/agent-runtime-followups.md +1 -1
  160. package/dist/handover/agent-runtime-v1.md +3 -3
  161. package/dist/{hashContent-iRZJJWtE.cjs.map → hashContent--s09Ed_g.cjs.map} +1 -1
  162. package/dist/{hashContent-BqU6v1Xr.js.map → hashContent-CAvrQ56N.js.map} +1 -1
  163. package/dist/icons-BeGKDZ-k.cjs +22 -0
  164. package/dist/icons-BeGKDZ-k.cjs.map +1 -0
  165. package/dist/{icons-mbpHO_73.js → icons-DEJnIxml.js} +20 -22
  166. package/dist/icons-DEJnIxml.js.map +1 -0
  167. package/dist/icons.cjs +1 -1
  168. package/dist/icons.js +1 -1
  169. package/dist/{iframe-88SN5JPu.cjs → iframe-BkSukM9C.cjs} +9 -9
  170. package/dist/iframe-BkSukM9C.cjs.map +1 -0
  171. package/dist/{iframe-U3P1DnQv.js → iframe-V3S-bwEY.js} +10 -10
  172. package/dist/iframe-V3S-bwEY.js.map +1 -0
  173. package/dist/iframe.cjs +1 -1
  174. package/dist/iframe.js +1 -1
  175. package/dist/index.cjs +1 -1
  176. package/dist/index.js +61 -60
  177. package/dist/{input-CPWvGjE4.js → input-CPFCSQld.js} +3 -10
  178. package/dist/input-CPFCSQld.js.map +1 -0
  179. package/dist/{input-BY4Korc5.cjs → input-DSfwfhhj.cjs} +2 -9
  180. package/dist/input-DSfwfhhj.cjs.map +1 -0
  181. package/dist/input-chip-BUuFJUky.cjs +129 -0
  182. package/dist/input-chip-BUuFJUky.cjs.map +1 -0
  183. package/dist/{input-chip-CCZ3i3Sf.js → input-chip-C3a1fwKB.js} +87 -104
  184. package/dist/input-chip-C3a1fwKB.js.map +1 -0
  185. package/dist/input.cjs +1 -1
  186. package/dist/input.js +1 -1
  187. package/dist/json.cjs +5 -1
  188. package/dist/json.cjs.map +1 -1
  189. package/dist/json.js +8 -4
  190. package/dist/json.js.map +1 -1
  191. package/dist/kbd.cjs +28 -28
  192. package/dist/kbd.cjs.map +1 -1
  193. package/dist/kbd.js +29 -29
  194. package/dist/kbd.js.map +1 -1
  195. package/dist/{layout-BhfC26Ks.cjs → layout-CdyHy_oX.cjs} +1 -1
  196. package/dist/layout-CdyHy_oX.cjs.map +1 -0
  197. package/dist/{layout-DC0Npqu7.js → layout-k6fOkpif.js} +1 -1
  198. package/dist/layout-k6fOkpif.js.map +1 -0
  199. package/dist/layout.cjs +26 -26
  200. package/dist/layout.cjs.map +1 -1
  201. package/dist/layout.js +27 -27
  202. package/dist/layout.js.map +1 -1
  203. package/dist/lazy-BaAiIUru.js.map +1 -1
  204. package/dist/lazy-C-7a4FAe.cjs.map +1 -1
  205. package/dist/{lightbox-BSwWvDQc.js → lightbox-DIG0VLOK.js} +8 -14
  206. package/dist/lightbox-DIG0VLOK.js.map +1 -0
  207. package/dist/{lightbox-KrZQH9w9.cjs → lightbox-E5rgd-hu.cjs} +7 -13
  208. package/dist/lightbox-E5rgd-hu.cjs.map +1 -0
  209. package/dist/lightbox.cjs +1 -1
  210. package/dist/lightbox.js +1 -1
  211. package/dist/list-BRz0rDSH.cjs +47 -0
  212. package/dist/list-BRz0rDSH.cjs.map +1 -0
  213. package/dist/{list-BwGtAAfi.js → list-NrOYDPBo.js} +48 -34
  214. package/dist/list-NrOYDPBo.js.map +1 -0
  215. package/dist/list.cjs +1 -1
  216. package/dist/list.js +1 -1
  217. package/dist/magnetic-DKtc4umC.cjs.map +1 -1
  218. package/dist/magnetic-DaOOv5Dz.js.map +1 -1
  219. package/dist/{menu-DX8d96x-.js → menu-B1Ei9SVj.js} +12 -12
  220. package/dist/menu-B1Ei9SVj.js.map +1 -0
  221. package/dist/{menu-jT_yAk5V.cjs → menu-Duvl66Nl.cjs} +10 -10
  222. package/dist/menu-Duvl66Nl.cjs.map +1 -0
  223. package/dist/menu.cjs +1 -1
  224. package/dist/menu.js +1 -1
  225. package/dist/{mixins-XGVIOvKt.cjs → mixins-Cjn20BQH.cjs} +42 -170
  226. package/dist/mixins-Cjn20BQH.cjs.map +1 -0
  227. package/dist/{mixins-COeG4DiX.js → mixins-q4KAL8Xr.js} +43 -177
  228. package/dist/mixins-q4KAL8Xr.js.map +1 -0
  229. package/dist/mixins.cjs +1 -1
  230. package/dist/mixins.js +2 -2
  231. package/dist/nav-drawer.cjs +1 -1
  232. package/dist/nav-drawer.js +1 -1
  233. package/dist/navigation-bar.cjs +1 -1
  234. package/dist/navigation-bar.js +1 -1
  235. package/dist/navigation-rail.cjs +2 -4
  236. package/dist/navigation-rail.cjs.map +1 -1
  237. package/dist/navigation-rail.js +3 -5
  238. package/dist/navigation-rail.js.map +1 -1
  239. package/dist/{notification-CAJVpLne.js → notification-COhUhUCr.js} +5 -7
  240. package/dist/notification-COhUhUCr.js.map +1 -0
  241. package/dist/{notification-DO3VXceY.cjs → notification-DsdA_MJe.cjs} +2 -4
  242. package/dist/notification-DsdA_MJe.cjs.map +1 -0
  243. package/dist/notification.cjs +1 -1
  244. package/dist/notification.js +1 -1
  245. package/dist/{option-JISY0wZJ.js → option-BIzgTbXz.js} +20 -20
  246. package/dist/option-BIzgTbXz.js.map +1 -0
  247. package/dist/option-C5hhqR2z.cjs +43 -0
  248. package/dist/option-C5hhqR2z.cjs.map +1 -0
  249. package/dist/option.cjs +1 -1
  250. package/dist/option.js +1 -1
  251. package/dist/{overlay-B1jVf-ge.cjs → overlay-BzgF8P7i.cjs} +48 -41
  252. package/dist/overlay-BzgF8P7i.cjs.map +1 -0
  253. package/dist/{overlay-CT-tMHDX.js → overlay-LoRRemny.js} +52 -45
  254. package/dist/overlay-LoRRemny.js.map +1 -0
  255. package/dist/overlay-stack-Bdr9lOqi.cjs.map +1 -1
  256. package/dist/overlay-stack-D2rgxQLh.js.map +1 -1
  257. package/dist/overlay.cjs +1 -1
  258. package/dist/{overlay.confirm-body-Dn-Zgogx.js → overlay.confirm-body-D0b1MoCw.js} +30 -45
  259. package/dist/overlay.confirm-body-D0b1MoCw.js.map +1 -0
  260. package/dist/{overlay.confirm-body-mYDYoJL8.cjs → overlay.confirm-body-DCneq73Z.cjs} +22 -37
  261. package/dist/overlay.confirm-body-DCneq73Z.cjs.map +1 -0
  262. package/dist/overlay.js +3 -3
  263. package/dist/{overlay.service-yqTOyLlr.js → overlay.service-BuUeti6X.js} +2 -2
  264. package/dist/overlay.service-BuUeti6X.js.map +1 -0
  265. package/dist/{overlay.service-BQmva9GY.cjs → overlay.service-MMTiW2T3.cjs} +1 -1
  266. package/dist/overlay.service-MMTiW2T3.cjs.map +1 -0
  267. package/dist/{progress-CGWozq_n.js → progress-D7n3SKAO.js} +50 -50
  268. package/dist/progress-D7n3SKAO.js.map +1 -0
  269. package/dist/progress-DsCnFsH5.cjs +51 -0
  270. package/dist/progress-DsCnFsH5.cjs.map +1 -0
  271. package/dist/progress.cjs +1 -1
  272. package/dist/progress.js +1 -1
  273. package/dist/{radio-group-DoSX5D2V.cjs → radio-group-CaAjg9UV.cjs} +1 -1
  274. package/dist/radio-group-CaAjg9UV.cjs.map +1 -0
  275. package/dist/{radio-group-CXkq6qAF.js → radio-group-Drpl6Pl8.js} +2 -2
  276. package/dist/radio-group-Drpl6Pl8.js.map +1 -0
  277. package/dist/radio-group.cjs +1 -1
  278. package/dist/radio-group.js +1 -1
  279. package/dist/range.cjs +4 -2
  280. package/dist/range.cjs.map +1 -1
  281. package/dist/range.js +5 -3
  282. package/dist/range.js.map +1 -1
  283. package/dist/reduced-motion-D-L12p7G.js.map +1 -1
  284. package/dist/reduced-motion-Ds-HjMzn.cjs.map +1 -1
  285. package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-4P2v57ke.cjs.map} +1 -1
  286. package/dist/{rxjs-utils-d-ivVN84.js.map → rxjs-utils-JMFdgQSl.js.map} +1 -1
  287. package/dist/rxjs-utils.cjs +1 -1
  288. package/dist/rxjs-utils.js +1 -1
  289. package/dist/search-DPKoC-dT.cjs.map +1 -1
  290. package/dist/search-MvIBA93K.js.map +1 -1
  291. package/dist/{select-CU90i50_.js → select-CTXkrrVZ.js} +13 -13
  292. package/dist/select-CTXkrrVZ.js.map +1 -0
  293. package/dist/select-DcLcpPCh.cjs +56 -0
  294. package/dist/select-DcLcpPCh.cjs.map +1 -0
  295. package/dist/select.cjs +1 -1
  296. package/dist/select.js +1 -1
  297. package/dist/skeleton.cjs +37 -33
  298. package/dist/skeleton.cjs.map +1 -1
  299. package/dist/skeleton.js +38 -34
  300. package/dist/skeleton.js.map +1 -1
  301. package/dist/skills/schmancy/surface.md +79 -39
  302. package/dist/skills/surface.md +79 -39
  303. package/dist/slider.cjs +31 -31
  304. package/dist/slider.cjs.map +1 -1
  305. package/dist/slider.js +32 -32
  306. package/dist/slider.js.map +1 -1
  307. package/dist/{sound.service-m8WjOhjn.js → sound.service-AJwuk3yr.js} +1 -1
  308. package/dist/sound.service-AJwuk3yr.js.map +1 -0
  309. package/dist/{sound.service-Qhr8nCeG.cjs → sound.service-CVsxhQkX.cjs} +1 -1
  310. package/dist/sound.service-CVsxhQkX.cjs.map +1 -0
  311. package/dist/{splash-screen-Cs3dbPN3.js → splash-screen-DANfqvlo.js} +23 -26
  312. package/dist/splash-screen-DANfqvlo.js.map +1 -0
  313. package/dist/splash-screen-K74cgU6S.cjs +38 -0
  314. package/dist/splash-screen-K74cgU6S.cjs.map +1 -0
  315. package/dist/splash-screen.cjs +1 -1
  316. package/dist/splash-screen.js +1 -1
  317. package/dist/{src-CCVbLLgC.js → src-DAtcPmCb.js} +295 -389
  318. package/dist/src-DAtcPmCb.js.map +1 -0
  319. package/dist/src-DuRvYagm.cjs +237 -0
  320. package/dist/src-DuRvYagm.cjs.map +1 -0
  321. package/dist/{state--x58-AuK.cjs → state-BWQiqN6I.cjs} +1 -1
  322. package/dist/state-BWQiqN6I.cjs.map +1 -0
  323. package/dist/{state-QSwQ61sA.js → state-DBA_gzJO.js} +1 -1
  324. package/dist/state-DBA_gzJO.js.map +1 -0
  325. package/dist/state.cjs +1 -1
  326. package/dist/state.js +2 -2
  327. package/dist/steps.cjs +20 -12
  328. package/dist/steps.cjs.map +1 -1
  329. package/dist/steps.js +21 -13
  330. package/dist/steps.js.map +1 -1
  331. package/dist/surface-COBvWWFb.cjs +7 -0
  332. package/dist/surface-COBvWWFb.cjs.map +1 -0
  333. package/dist/{surface-cqMsHJHM.js → surface-DXk1X1tL.js} +9 -9
  334. package/dist/surface-DXk1X1tL.js.map +1 -0
  335. package/dist/surface.cjs +1 -1
  336. package/dist/surface.js +1 -1
  337. package/dist/switch.cjs +13 -4
  338. package/dist/switch.cjs.map +1 -1
  339. package/dist/switch.js +14 -5
  340. package/dist/switch.js.map +1 -1
  341. package/dist/table.cjs +4 -10
  342. package/dist/table.cjs.map +1 -1
  343. package/dist/table.js +5 -11
  344. package/dist/table.js.map +1 -1
  345. package/dist/{tabs-Ib0Mh__1.js → tabs-BYhFWnsx.js} +7 -7
  346. package/dist/tabs-BYhFWnsx.js.map +1 -0
  347. package/dist/{tabs-Dk9UDWpq.cjs → tabs-CJwB0fr0.cjs} +6 -6
  348. package/dist/tabs-CJwB0fr0.cjs.map +1 -0
  349. package/dist/tabs.cjs +1 -1
  350. package/dist/tabs.js +1 -1
  351. package/dist/teleport.cjs +1 -1
  352. package/dist/teleport.js +1 -1
  353. package/dist/{textarea-CcRsw08B.js → textarea-BjDx1w2g.js} +37 -41
  354. package/dist/textarea-BjDx1w2g.js.map +1 -0
  355. package/dist/{textarea-Cntd9tfV.cjs → textarea-CGgznhd6.cjs} +36 -40
  356. package/dist/textarea-CGgznhd6.cjs.map +1 -0
  357. package/dist/textarea.cjs +1 -1
  358. package/dist/textarea.js +1 -1
  359. package/dist/{theme-wwFbvp5e.cjs → theme-BVul7lHS.cjs} +6 -6
  360. package/dist/{theme-wwFbvp5e.cjs.map → theme-BVul7lHS.cjs.map} +1 -1
  361. package/dist/{theme-CKYXG0le.js → theme-Dvm5J8nh.js} +11 -11
  362. package/dist/{theme-CKYXG0le.js.map → theme-Dvm5J8nh.js.map} +1 -1
  363. package/dist/{theme-button-iLqT56KA.js → theme-button-Bko5ohFP.js} +2 -2
  364. package/dist/{theme-button-iLqT56KA.js.map → theme-button-Bko5ohFP.js.map} +1 -1
  365. package/dist/{theme-button-DE9Lrl7m.cjs → theme-button-YLY7zR1c.cjs} +1 -1
  366. package/dist/{theme-button-DE9Lrl7m.cjs.map → theme-button-YLY7zR1c.cjs.map} +1 -1
  367. package/dist/theme-button.cjs +1 -1
  368. package/dist/theme-button.js +1 -1
  369. package/dist/theme.cjs +1 -1
  370. package/dist/{theme.interface-CSt7JUBD.cjs.map → theme.interface-B-qxDsZQ.cjs.map} +1 -1
  371. package/dist/{theme.interface-odQEpZZH.js.map → theme.interface-B7caS5cg.js.map} +1 -1
  372. package/dist/theme.js +4 -4
  373. package/dist/{theme.service-5RjyR7Sy.js → theme.service-D94nm7Bf.js} +1 -1
  374. package/dist/theme.service-D94nm7Bf.js.map +1 -0
  375. package/dist/{theme.service-DA6KY52G.cjs → theme.service-h2fXQq7x.cjs} +1 -1
  376. package/dist/theme.service-h2fXQq7x.cjs.map +1 -0
  377. package/dist/tooltip.cjs.map +1 -1
  378. package/dist/tooltip.js.map +1 -1
  379. package/dist/tree.cjs +14 -14
  380. package/dist/tree.cjs.map +1 -1
  381. package/dist/tree.js +15 -15
  382. package/dist/tree.js.map +1 -1
  383. package/dist/types.cjs +1 -1
  384. package/dist/types.cjs.map +1 -1
  385. package/dist/types.js +19 -2
  386. package/dist/types.js.map +1 -1
  387. package/dist/typewriter.cjs.map +1 -1
  388. package/dist/typewriter.js.map +1 -1
  389. package/dist/typography-ByF2k5yW.js +358 -0
  390. package/dist/typography-ByF2k5yW.js.map +1 -0
  391. package/dist/typography-Cfav17it.cjs +282 -0
  392. package/dist/typography-Cfav17it.cjs.map +1 -0
  393. package/dist/typography.cjs +1 -1
  394. package/dist/typography.js +1 -1
  395. package/dist/utils-DIXndz6Q.cjs.map +1 -0
  396. package/dist/utils-dSPH7Oh9.js.map +1 -0
  397. package/dist/utils.cjs +1 -1
  398. package/dist/utils.js +1 -1
  399. package/dist/visually-hidden.cjs +13 -13
  400. package/dist/visually-hidden.cjs.map +1 -1
  401. package/dist/visually-hidden.js +14 -14
  402. package/dist/visually-hidden.js.map +1 -1
  403. package/dist/window-Br1OmpL-.cjs +67 -0
  404. package/dist/window-Br1OmpL-.cjs.map +1 -0
  405. package/dist/{window-Db5ZYY6t.js → window-CCmN4but.js} +28 -20
  406. package/dist/window-CCmN4but.js.map +1 -0
  407. package/dist/window.cjs +1 -1
  408. package/dist/window.js +1 -1
  409. package/package.json +1 -1
  410. package/skills/schmancy/surface.md +79 -39
  411. package/src/area/area.component.ts +249 -163
  412. package/src/area/area.service.test.ts +994 -1006
  413. package/src/area/area.service.ts +76 -72
  414. package/src/area/index.ts +7 -7
  415. package/src/area/lazy.ts +39 -42
  416. package/src/area/route.component.ts +54 -52
  417. package/src/area/router.types.ts +7 -7
  418. package/src/audio/emotional-sounds.ts +880 -801
  419. package/src/audio/sound.service.ts +26 -5
  420. package/src/avatar/avatar.ts +4 -4
  421. package/src/badge/badge.ts +60 -209
  422. package/src/badge/index.ts +1 -1
  423. package/src/boat/boat.ts +2 -4
  424. package/src/breadcrumb/breadcrumb.ts +37 -32
  425. package/src/busy/busy.ts +15 -12
  426. package/src/busy/index.ts +2 -2
  427. package/src/busy/spinner.ts +132 -119
  428. package/src/button/button.test.ts +5 -1
  429. package/src/button/button.ts +113 -72
  430. package/src/button/icon-button.ts +64 -46
  431. package/src/button/index.ts +2 -2
  432. package/src/calendar/calendar.test.ts +504 -0
  433. package/src/calendar/calendar.ts +587 -0
  434. package/src/calendar/index.ts +2 -0
  435. package/src/card/actions.ts +11 -9
  436. package/src/card/card.ts +79 -77
  437. package/src/card/content.ts +8 -6
  438. package/src/card/index.ts +4 -4
  439. package/src/card/media.ts +50 -50
  440. package/src/chips/assist-chip.ts +1 -1
  441. package/src/chips/chips.ts +1 -1
  442. package/src/chips/filter-chip.ts +1 -1
  443. package/src/chips/index.ts +1 -1
  444. package/src/chips/input-chip.ts +1 -1
  445. package/src/chips/suggestion-chip.ts +1 -1
  446. package/src/connectivity/connectivity-status.ts +91 -65
  447. package/src/content-drawer/drawer.service.ts +47 -36
  448. package/src/content-drawer/drawer.ts +31 -18
  449. package/src/content-drawer/index.ts +5 -5
  450. package/src/content-drawer/main.ts +9 -7
  451. package/src/content-drawer/sheet.ts +8 -6
  452. package/src/date-range-inline/date-range-inline.ts +523 -522
  453. package/src/date-range-inline/index.ts +2 -2
  454. package/src/delay/index.ts +1 -1
  455. package/src/details/details.ts +119 -105
  456. package/src/details/index.ts +1 -1
  457. package/src/directives/ai-badge.ts +1 -5
  458. package/src/directives/animate-text.ts +43 -31
  459. package/src/directives/art/effects/howl.ts +1 -4
  460. package/src/directives/art/effects/samwa.ts +11 -5
  461. package/src/directives/art/effects/snow.ts +1 -2
  462. package/src/directives/battery.ts +21 -12
  463. package/src/directives/confirm-click.ts +9 -17
  464. package/src/directives/cursor-glow.ts +1 -1
  465. package/src/directives/cycle-text.ts +7 -21
  466. package/src/directives/drag.ts +50 -45
  467. package/src/directives/fyi.ts +1 -6
  468. package/src/directives/gravity.ts +10 -8
  469. package/src/directives/hummingbird.ts +256 -107
  470. package/src/directives/index.ts +29 -29
  471. package/src/directives/intersect.ts +11 -11
  472. package/src/directives/layout.ts +25 -36
  473. package/src/directives/liquid.ts +4 -10
  474. package/src/directives/living-border.ts +7 -5
  475. package/src/directives/long-press.ts +2 -1
  476. package/src/directives/magnetic.ts +7 -6
  477. package/src/directives/nebula.ts +34 -28
  478. package/src/directives/overflow-within.ts +18 -20
  479. package/src/directives/reduced-motion.ts +9 -9
  480. package/src/directives/reveal.ts +193 -195
  481. package/src/directives/ripple.ts +9 -7
  482. package/src/directives/urgent.ts +3 -1
  483. package/src/directives/working-snake.ts +1 -1
  484. package/src/discovery/discovery.service.ts +198 -210
  485. package/src/discovery/index.ts +1 -1
  486. package/src/divider/divider.ts +49 -47
  487. package/src/divider/index.ts +1 -1
  488. package/src/dropdown/dropdown-content.ts +42 -40
  489. package/src/dropdown/index.ts +2 -2
  490. package/src/expand/expand-root.component.ts +70 -61
  491. package/src/expand/expand.component.ts +48 -43
  492. package/src/fab/fab.test.ts +1 -2
  493. package/src/fab/fab.ts +2 -4
  494. package/src/form/fields/autocomplete/autocomplete.scss +6 -2
  495. package/src/form/fields/autocomplete/autocomplete.ts +712 -724
  496. package/src/form/fields/autocomplete/index.ts +1 -1
  497. package/src/form/fields/checkbox/checkbox.ts +1 -4
  498. package/src/form/fields/chips/assist-chip.ts +69 -72
  499. package/src/form/fields/chips/chips.ts +14 -15
  500. package/src/form/fields/chips/filter-chip.ts +36 -32
  501. package/src/form/fields/chips/index.ts +5 -5
  502. package/src/form/fields/chips/input-chip.ts +130 -142
  503. package/src/form/fields/chips/suggestion-chip.ts +69 -72
  504. package/src/form/fields/date-range/date-range-dialog.ts +141 -194
  505. package/src/form/fields/date-range/date-range-helpers.ts +63 -64
  506. package/src/form/fields/date-range/date-range.test.ts +359 -122
  507. package/src/form/fields/date-range/date-range.ts +319 -395
  508. package/src/form/fields/date-range/index.ts +2 -2
  509. package/src/form/fields/input/index.ts +8 -8
  510. package/src/form/fields/input/input.scss +30 -26
  511. package/src/form/fields/input/input.test.ts +4 -1
  512. package/src/form/fields/input/input.ts +4 -20
  513. package/src/form/fields/radio-group/index.ts +2 -2
  514. package/src/form/fields/radio-group/radio-button.ts +8 -8
  515. package/src/form/fields/radio-group/radio-group.ts +4 -1
  516. package/src/form/fields/range/range.ts +3 -1
  517. package/src/form/fields/select/index.ts +2 -2
  518. package/src/form/fields/select/select.ts +51 -45
  519. package/src/form/fields/switch/switch.ts +13 -7
  520. package/src/form/fields/textarea/index.ts +1 -1
  521. package/src/form/fields/textarea/textarea.ts +44 -49
  522. package/src/form/form-summary.ts +15 -14
  523. package/src/form/form.test.ts +0 -1
  524. package/src/form/form.ts +11 -23
  525. package/src/icons/icon.ts +25 -25
  526. package/src/icons/index.ts +1 -1
  527. package/src/iframe/iframe.ts +11 -9
  528. package/src/index.ts +1 -0
  529. package/src/json/json.ts +9 -2
  530. package/src/kbd/kbd.ts +30 -28
  531. package/src/layout/scroll/index.ts +1 -1
  532. package/src/layout/scroll/scroll.ts +54 -54
  533. package/src/lightbox/lightbox-service.ts +27 -18
  534. package/src/lightbox/lightbox.directive.ts +2 -1
  535. package/src/lightbox/lightbox.ts +21 -38
  536. package/src/list/index.ts +3 -3
  537. package/src/list/list-item.ts +32 -26
  538. package/src/list/list.ts +13 -8
  539. package/src/menu/index.ts +2 -2
  540. package/src/menu/menu-item.ts +7 -5
  541. package/src/menu/menu.ts +8 -6
  542. package/src/nav-drawer/appbar.ts +9 -7
  543. package/src/nav-drawer/content.ts +10 -8
  544. package/src/nav-drawer/drawer.ts +29 -25
  545. package/src/nav-drawer/index.ts +6 -6
  546. package/src/navigation-bar/index.ts +2 -2
  547. package/src/navigation-bar/navigation-bar-item.ts +127 -118
  548. package/src/navigation-bar/navigation-bar.ts +103 -91
  549. package/src/navigation-rail/index.ts +2 -2
  550. package/src/navigation-rail/navigation-rail.ts +21 -22
  551. package/src/notification/index.ts +6 -6
  552. package/src/notification/notification-service.ts +1 -2
  553. package/src/notification/notification.scss +5 -1
  554. package/src/notification/notification.ts +1 -3
  555. package/src/notification/notify.ts +204 -207
  556. package/src/option/index.ts +1 -1
  557. package/src/option/option.ts +26 -25
  558. package/src/overlay/overlay.animations.ts +4 -14
  559. package/src/overlay/overlay.component.ts +110 -131
  560. package/src/overlay/overlay.confirm-body.ts +26 -48
  561. package/src/overlay/overlay.gestures.ts +8 -10
  562. package/src/overlay/overlay.layout.ts +1 -4
  563. package/src/overlay/overlay.positioning.ts +4 -15
  564. package/src/overlay/overlay.service.ts +9 -24
  565. package/src/overlay/overlay.stack.test.ts +4 -1
  566. package/src/overlay/overlay.stack.ts +4 -4
  567. package/src/overlay/overlay.types.ts +11 -20
  568. package/src/progress/index.ts +1 -1
  569. package/src/progress/progress.ts +135 -133
  570. package/src/rxjs-utils/index.ts +6 -6
  571. package/src/rxjs-utils/waitForElement.ts +20 -20
  572. package/src/rxjs-utils/waitForElementAll.ts +21 -21
  573. package/src/rxjs-utils/waitForElements.ts +27 -27
  574. package/src/rxjs-utils/waitForElementsAll.ts +27 -29
  575. package/src/rxjs-utils/waitUntil.ts +7 -12
  576. package/src/skeleton/skeleton.ts +39 -33
  577. package/src/slider/index.ts +2 -2
  578. package/src/slider/slide.ts +14 -12
  579. package/src/slider/slider.ts +24 -22
  580. package/src/splash-screen/index.ts +1 -1
  581. package/src/splash-screen/splash-screen.ts +26 -27
  582. package/src/state/active-host.ts +4 -5
  583. package/src/state/index.ts +34 -53
  584. package/src/state/persist.ts +14 -11
  585. package/src/state/schmancy-context.ts +88 -88
  586. package/src/state/state.test-d.ts +3 -13
  587. package/src/state/state.test.ts +1 -4
  588. package/src/steps/index.ts +3 -3
  589. package/src/steps/schmancy-step.ts +41 -31
  590. package/src/steps/schmancy-steps.ts +7 -5
  591. package/src/surface/index.ts +1 -1
  592. package/src/surface/surface.styles.ts +55 -191
  593. package/src/surface/surface.ts +18 -16
  594. package/src/table/index.ts +2 -2
  595. package/src/table/row.ts +1 -4
  596. package/src/table/table.ts +2 -5
  597. package/src/tabs/index.ts +2 -2
  598. package/src/tabs/tabs-group.ts +8 -6
  599. package/src/teleport/index.ts +2 -2
  600. package/src/test-utils/a11y.ts +1 -3
  601. package/src/theme/index.ts +17 -17
  602. package/src/theme/theme-audio-player.ts +18 -16
  603. package/src/theme/theme-controller-boat.ts +1 -1
  604. package/src/theme/theme-controller.ts +36 -32
  605. package/src/theme/theme.component.ts +5 -9
  606. package/src/theme/theme.events.ts +1 -1
  607. package/src/theme/theme.format.ts +7 -7
  608. package/src/theme/theme.service.ts +453 -468
  609. package/src/theme/theme.style.css +78 -23
  610. package/src/theme-button/index.ts +1 -1
  611. package/src/tooltip/tooltip.directive.ts +1 -1
  612. package/src/tree/index.ts +1 -1
  613. package/src/tree/tree.ts +24 -16
  614. package/src/types/surface.ts +38 -44
  615. package/src/typewriter/typewriter.directive.ts +30 -39
  616. package/src/typography/typography.ts +289 -269
  617. package/src/utils/animation.ts +2 -8
  618. package/src/utils/index.ts +6 -6
  619. package/src/utils/number.ts +480 -517
  620. package/src/utils/overlay-stack.ts +1 -3
  621. package/src/utils/search.ts +5 -9
  622. package/src/visually-hidden/visually-hidden.ts +15 -13
  623. package/src/window/window-manager.ts +6 -1
  624. package/src/window/window-position.ts +7 -5
  625. package/src/window/window.ts +146 -114
  626. package/types/mixins/surface.mixin.d.ts +8 -14
  627. package/types/src/badge/badge.d.ts +15 -48
  628. package/types/src/calendar/calendar.d.ts +108 -0
  629. package/types/src/calendar/calendar.test.d.ts +1 -0
  630. package/types/src/calendar/index.d.ts +2 -0
  631. package/types/src/directives/cursor-glow.d.ts +1 -1
  632. package/types/src/directives/hummingbird.d.ts +3 -3
  633. package/types/src/form/fields/date-range/date-range-dialog.d.ts +24 -28
  634. package/types/src/form/fields/date-range/date-range.d.ts +35 -66
  635. package/types/src/form/fields/date-range/date-range.test.d.ts +1 -0
  636. package/types/src/form/fields/date-range/index.d.ts +1 -1
  637. package/types/src/index.d.ts +1 -0
  638. package/types/src/surface/surface.d.ts +9 -7
  639. package/types/src/surface/surface.styles.d.ts +15 -20
  640. package/types/src/types/surface.d.ts +17 -22
  641. package/types/src/utils/number.d.ts +1 -1
  642. package/types/src/window/window.d.ts +0 -1
  643. package/dist/SchmancyElement-D9WA9FP9.cjs +0 -2
  644. package/dist/SchmancyElement-D9WA9FP9.cjs.map +0 -1
  645. package/dist/SchmancyElement-OWgz9ePG.js +0 -286
  646. package/dist/SchmancyElement-OWgz9ePG.js.map +0 -1
  647. package/dist/area-BiM7V2ns.js.map +0 -1
  648. package/dist/area-C7XjCoet.cjs +0 -21
  649. package/dist/area-C7XjCoet.cjs.map +0 -1
  650. package/dist/audio-CxO_j__6.js.map +0 -1
  651. package/dist/audio-xXFfMPCS.cjs.map +0 -1
  652. package/dist/autocomplete-DD7Hd59N.cjs +0 -115
  653. package/dist/autocomplete-DD7Hd59N.cjs.map +0 -1
  654. package/dist/autocomplete-DUBY9RtH.js.map +0 -1
  655. package/dist/busy-BjsO3y2A.js +0 -173
  656. package/dist/busy-BjsO3y2A.js.map +0 -1
  657. package/dist/busy-UbCGkTAi.cjs +0 -134
  658. package/dist/busy-UbCGkTAi.cjs.map +0 -1
  659. package/dist/button-BTpxQ1Kd.cjs.map +0 -1
  660. package/dist/button-D7QHfYf4.js.map +0 -1
  661. package/dist/card-DCdtJ5Dy.js.map +0 -1
  662. package/dist/card-rprhCYIC.cjs +0 -177
  663. package/dist/card-rprhCYIC.cjs.map +0 -1
  664. package/dist/chips-C5bpgWyf.js.map +0 -1
  665. package/dist/chips-DVes-BSz.cjs.map +0 -1
  666. package/dist/date-range-DDUuBlJ6.cjs +0 -142
  667. package/dist/date-range-DDUuBlJ6.cjs.map +0 -1
  668. package/dist/date-range-IPlbrhwW.js +0 -966
  669. package/dist/date-range-IPlbrhwW.js.map +0 -1
  670. package/dist/date-range-inline-DPqY9YYf.js.map +0 -1
  671. package/dist/date-range-inline-Dx4Reboo.cjs.map +0 -1
  672. package/dist/details-BnleHmYe.js.map +0 -1
  673. package/dist/details-Bx2jSJxG.cjs.map +0 -1
  674. package/dist/directives-CYf2fAdA.cjs.map +0 -1
  675. package/dist/directives-d1rEbW1A.js.map +0 -1
  676. package/dist/divider-CimQJVr3.cjs +0 -57
  677. package/dist/divider-CimQJVr3.cjs.map +0 -1
  678. package/dist/divider-Cr-rx3vA.js +0 -89
  679. package/dist/divider-Cr-rx3vA.js.map +0 -1
  680. package/dist/expand-DNrWuG_-.js.map +0 -1
  681. package/dist/expand-_cp8oBjp.cjs +0 -141
  682. package/dist/expand-_cp8oBjp.cjs.map +0 -1
  683. package/dist/form-CMgYSZ3y.js.map +0 -1
  684. package/dist/form-DaaAQd2A.cjs.map +0 -1
  685. package/dist/icons-C2RkSXjP.cjs +0 -24
  686. package/dist/icons-C2RkSXjP.cjs.map +0 -1
  687. package/dist/icons-mbpHO_73.js.map +0 -1
  688. package/dist/iframe-88SN5JPu.cjs.map +0 -1
  689. package/dist/iframe-U3P1DnQv.js.map +0 -1
  690. package/dist/input-BY4Korc5.cjs.map +0 -1
  691. package/dist/input-CPWvGjE4.js.map +0 -1
  692. package/dist/input-chip-CCZ3i3Sf.js.map +0 -1
  693. package/dist/input-chip-kytMdbaM.cjs +0 -146
  694. package/dist/input-chip-kytMdbaM.cjs.map +0 -1
  695. package/dist/layout-BhfC26Ks.cjs.map +0 -1
  696. package/dist/layout-DC0Npqu7.js.map +0 -1
  697. package/dist/lightbox-BSwWvDQc.js.map +0 -1
  698. package/dist/lightbox-KrZQH9w9.cjs.map +0 -1
  699. package/dist/list-BwGtAAfi.js.map +0 -1
  700. package/dist/list-DIs02A3d.cjs +0 -40
  701. package/dist/list-DIs02A3d.cjs.map +0 -1
  702. package/dist/menu-DX8d96x-.js.map +0 -1
  703. package/dist/menu-jT_yAk5V.cjs.map +0 -1
  704. package/dist/mixins-COeG4DiX.js.map +0 -1
  705. package/dist/mixins-XGVIOvKt.cjs.map +0 -1
  706. package/dist/notification-CAJVpLne.js.map +0 -1
  707. package/dist/notification-DO3VXceY.cjs.map +0 -1
  708. package/dist/option-BNo1Zs-l.cjs +0 -43
  709. package/dist/option-BNo1Zs-l.cjs.map +0 -1
  710. package/dist/option-JISY0wZJ.js.map +0 -1
  711. package/dist/overlay-B1jVf-ge.cjs.map +0 -1
  712. package/dist/overlay-CT-tMHDX.js.map +0 -1
  713. package/dist/overlay.confirm-body-Dn-Zgogx.js.map +0 -1
  714. package/dist/overlay.confirm-body-mYDYoJL8.cjs.map +0 -1
  715. package/dist/overlay.service-BQmva9GY.cjs.map +0 -1
  716. package/dist/overlay.service-yqTOyLlr.js.map +0 -1
  717. package/dist/progress-CGWozq_n.js.map +0 -1
  718. package/dist/progress-DOVJhsR0.cjs +0 -51
  719. package/dist/progress-DOVJhsR0.cjs.map +0 -1
  720. package/dist/radio-group-CXkq6qAF.js.map +0 -1
  721. package/dist/radio-group-DoSX5D2V.cjs.map +0 -1
  722. package/dist/select-CObZenqg.cjs +0 -56
  723. package/dist/select-CObZenqg.cjs.map +0 -1
  724. package/dist/select-CU90i50_.js.map +0 -1
  725. package/dist/sound.service-Qhr8nCeG.cjs.map +0 -1
  726. package/dist/sound.service-m8WjOhjn.js.map +0 -1
  727. package/dist/splash-screen-Ca6Ew8p6.cjs +0 -41
  728. package/dist/splash-screen-Ca6Ew8p6.cjs.map +0 -1
  729. package/dist/splash-screen-Cs3dbPN3.js.map +0 -1
  730. package/dist/src-CCVbLLgC.js.map +0 -1
  731. package/dist/src-CpftzdZV.cjs +0 -264
  732. package/dist/src-CpftzdZV.cjs.map +0 -1
  733. package/dist/state--x58-AuK.cjs.map +0 -1
  734. package/dist/state-QSwQ61sA.js.map +0 -1
  735. package/dist/surface-bTjOiq8n.cjs +0 -7
  736. package/dist/surface-bTjOiq8n.cjs.map +0 -1
  737. package/dist/surface-cqMsHJHM.js.map +0 -1
  738. package/dist/tabs-Dk9UDWpq.cjs.map +0 -1
  739. package/dist/tabs-Ib0Mh__1.js.map +0 -1
  740. package/dist/textarea-CcRsw08B.js.map +0 -1
  741. package/dist/textarea-Cntd9tfV.cjs.map +0 -1
  742. package/dist/theme.service-5RjyR7Sy.js.map +0 -1
  743. package/dist/theme.service-DA6KY52G.cjs.map +0 -1
  744. package/dist/typography-DeEYdMhW.js +0 -358
  745. package/dist/typography-DeEYdMhW.js.map +0 -1
  746. package/dist/typography-Tm7wSaB2.cjs +0 -282
  747. package/dist/typography-Tm7wSaB2.cjs.map +0 -1
  748. package/dist/utils-DTa3QHxk.cjs.map +0 -1
  749. package/dist/utils-H8wNknWC.js.map +0 -1
  750. package/dist/window-Db5ZYY6t.js.map +0 -1
  751. package/dist/window-oQqx5xqQ.cjs +0 -59
  752. package/dist/window-oQqx5xqQ.cjs.map +0 -1
  753. package/src/form/fields/date-range/date-range-presets.ts +0 -220
  754. package/src/form/fields/date-range/date-utils.ts +0 -58
  755. package/types/src/form/fields/date-range/date-range-presets.d.ts +0 -18
  756. package/types/src/form/fields/date-range/date-utils.d.ts +0 -15
  757. /package/dist/{hashContent-iRZJJWtE.cjs → hashContent--s09Ed_g.cjs} +0 -0
  758. /package/dist/{hashContent-BqU6v1Xr.js → hashContent-CAvrQ56N.js} +0 -0
  759. /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-4P2v57ke.cjs} +0 -0
  760. /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-JMFdgQSl.js} +0 -0
  761. /package/dist/{theme.interface-CSt7JUBD.cjs → theme.interface-B-qxDsZQ.cjs} +0 -0
  762. /package/dist/{theme.interface-odQEpZZH.js → theme.interface-B7caS5cg.js} +0 -0
  763. /package/dist/{utils-DTa3QHxk.cjs → utils-DIXndz6Q.cjs} +0 -0
  764. /package/dist/{utils-H8wNknWC.js → utils-dSPH7Oh9.js} +0 -0
@@ -1,7 +1,7 @@
1
- import { u as e } from "./SchmancyElement-OWgz9ePG.js";
2
- import { o as t } from "./mixins-COeG4DiX.js";
1
+ import { u as e } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import { o as t } from "./mixins-q4KAL8Xr.js";
3
3
  import { t as n } from "./search-MvIBA93K.js";
4
- import "./input-chip-CCZ3i3Sf.js";
4
+ import "./input-chip-C3a1fwKB.js";
5
5
  import { BehaviorSubject as r, combineLatest as i, fromEvent as a, timer as o } from "rxjs";
6
6
  import { debounceTime as s, distinctUntilChanged as c, takeUntil as l, tap as u } from "rxjs/operators";
7
7
  import { classMap as d } from "lit/directives/class-map.js";
@@ -163,30 +163,32 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
163
163
  }
164
164
  })();
165
165
  return _`
166
- <div class="relative">
167
- <!-- Screen reader live region -->
168
- <div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
166
+ <div class="relative">
167
+ <!-- Screen reader live region -->
168
+ <div id="live-status" role="status" aria-live="polite" class="sr-only"></div>
169
169
 
170
- <!-- Description -->
171
- ${this.description ? _`<div id="${e}" class="sr-only">${this.description}</div>` : ""}
170
+ <!-- Description -->
171
+ ${this.description ? _`<div id="${e}" class="sr-only">${this.description}</div>` : ""}
172
172
 
173
- <!-- Custom input wrapper for Gmail-style chip input -->
174
- <slot name="trigger">
175
- ${w(this.multi, () => _`
176
- <!-- Custom multi-select input with inline chips -->
177
- <div class="relative">
178
- ${w(this.label, () => _`
179
- <label class="${d({
173
+ <!-- Custom input wrapper for Gmail-style chip input -->
174
+ <slot name="trigger">
175
+ ${w(this.multi, () => _`
176
+ <!-- Custom multi-select input with inline chips -->
177
+ <div class="relative">
178
+ ${w(this.label, () => _`
179
+ <label
180
+ class="${d({
180
181
  "block mb-1 font-medium": !0,
181
182
  "text-primary-default": !this.error,
182
183
  "text-error-default": this.error,
183
184
  [i]: !0
184
- })}">
185
- ${this.label}${this.required ? _`<span class="text-error-default ml-1">*</span>` : ""}
186
- </label>
187
- `)}
188
- <div
189
- class="${d({
185
+ })}"
186
+ >
187
+ ${this.label}${this.required ? _`<span class="text-error-default ml-1">*</span>` : ""}
188
+ </label>
189
+ `)}
190
+ <div
191
+ class="${d({
190
192
  "flex flex-wrap items-center gap-1": !0,
191
193
  [t]: !0,
192
194
  [n]: !0,
@@ -197,107 +199,107 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
197
199
  "ring-error-default focus-within:ring-error-default": this.error,
198
200
  "cursor-text transition-colors duration-200": !0
199
201
  })}"
200
- @click=${() => this.focusTextInput()}
201
- role="combobox"
202
- aria-autocomplete="list"
203
- aria-haspopup="listbox"
204
- aria-controls="options"
205
- aria-expanded=${this.open}
206
- >
207
- <!-- Render chips inline -->
208
- ${C(this.selectedValues$.value, (e) => e, (e) => _`
209
- <schmancy-input-chip
210
- .value=${e}
211
- @remove=${(e) => this.handleChipRemove(e.detail.value)}
212
- class="shrink-0 my-0.5"
213
- >
214
- ${this.getChipLabel(e)}
215
- </schmancy-input-chip>
216
- `)}
202
+ @click=${() => this.focusTextInput()}
203
+ role="combobox"
204
+ aria-autocomplete="list"
205
+ aria-haspopup="listbox"
206
+ aria-controls="options"
207
+ aria-expanded=${this.open}
208
+ >
209
+ <!-- Render chips inline -->
210
+ ${C(this.selectedValues$.value, (e) => e, (e) => _`
211
+ <schmancy-input-chip
212
+ .value=${e}
213
+ @remove=${(e) => this.handleChipRemove(e.detail.value)}
214
+ class="shrink-0 my-0.5"
215
+ >
216
+ ${this.getChipLabel(e)}
217
+ </schmancy-input-chip>
218
+ `)}
217
219
 
218
- <!-- Text input for typing -->
219
- <input
220
- ${S(this.inputElementRef)}
221
- id="autocomplete-input"
222
- type="text"
223
- class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${r} font-medium text-surface-on placeholder:text-muted"
224
- name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
225
- .placeholder=${this.selectedValues$.value.length > 0 ? "Add more..." : this.placeholder}
226
- .value=${this.inputValue}
227
- .autocomplete=${this.autocomplete}
228
- aria-invalid=${this.error ? "true" : "false"}
229
- aria-required=${this.required ? "true" : "false"}
230
- aria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : v}
231
- aria-label=${!this.label && this.placeholder ? this.placeholder : v}
232
- @input=${(e) => {
220
+ <!-- Text input for typing -->
221
+ <input
222
+ ${S(this.inputElementRef)}
223
+ id="autocomplete-input"
224
+ type="text"
225
+ class="flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${r} font-medium text-surface-on placeholder:text-muted"
226
+ name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
227
+ .placeholder=${this.selectedValues$.value.length > 0 ? "Add more..." : this.placeholder}
228
+ .value=${this.inputValue}
229
+ .autocomplete=${this.autocomplete}
230
+ aria-invalid=${this.error ? "true" : "false"}
231
+ aria-required=${this.required ? "true" : "false"}
232
+ aria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : v}
233
+ aria-label=${!this.label && this.placeholder ? this.placeholder : v}
234
+ @input=${(e) => {
233
235
  let t = e.target.value;
234
236
  this.inputValue = t, this.inputValue$.next(t);
235
237
  }}
236
- @focus=${(e) => {
238
+ @focus=${(e) => {
237
239
  e.stopPropagation(), this.inputValue = "", this.inputValue$.next(""), this.openDropdown();
238
240
  }}
239
- @keydown=${(e) => {
241
+ @keydown=${(e) => {
240
242
  this.handleKeyDown(e);
241
243
  }}
242
- @blur=${() => {
244
+ @blur=${() => {
243
245
  this.handleAutoSelectOnBlur();
244
246
  }}
245
- />
246
- </div>
247
+ />
248
+ </div>
247
249
 
248
- <!-- Validation message -->
249
- ${w(this.error && this.validationMessage, () => _`
250
- <div id="${this.a11yId}-err" class="mt-1 text-sm text-error-default" role="alert">
251
- ${this.validationMessage}
252
- </div>
253
- `)}
254
- </div>
255
- `, () => _`
256
- <!-- Regular single-select input -->
257
- <schmancy-input
258
- .size=${this.size}
259
- ${S(this.inputElementRef)}
260
- id="autocomplete-input"
261
- class="w-full"
262
- .name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
263
- .label=${this.label}
264
- .placeholder=${this.placeholder}
265
- .required=${this.required}
266
- .value=${this.inputValue}
267
- type="text"
268
- autocomplete=${this.autocomplete}
269
- clickable
270
- role="combobox"
271
- aria-autocomplete="list"
272
- aria-haspopup="listbox"
273
- aria-controls="options"
274
- aria-expanded=${this.open}
275
- aria-describedby=${b(this.description ? e : void 0)}
276
- @input=${(e) => {
250
+ <!-- Validation message -->
251
+ ${w(this.error && this.validationMessage, () => _`
252
+ <div id="${this.a11yId}-err" class="mt-1 text-sm text-error-default" role="alert">
253
+ ${this.validationMessage}
254
+ </div>
255
+ `)}
256
+ </div>
257
+ `, () => _`
258
+ <!-- Regular single-select input -->
259
+ <schmancy-input
260
+ .size=${this.size}
261
+ ${S(this.inputElementRef)}
262
+ id="autocomplete-input"
263
+ class="w-full"
264
+ .name=${this.name || this.label?.toLowerCase().replace(/\s+/g, "-") || ""}
265
+ .label=${this.label}
266
+ .placeholder=${this.placeholder}
267
+ .required=${this.required}
268
+ .value=${this.inputValue}
269
+ type="text"
270
+ autocomplete=${this.autocomplete}
271
+ clickable
272
+ role="combobox"
273
+ aria-autocomplete="list"
274
+ aria-haspopup="listbox"
275
+ aria-controls="options"
276
+ aria-expanded=${this.open}
277
+ aria-describedby=${b(this.description ? e : void 0)}
278
+ @input=${(e) => {
277
279
  let t = e.target.value;
278
280
  this.inputValue = t, this.inputValue$.next(t);
279
281
  }}
280
- @focus=${(e) => {
282
+ @focus=${(e) => {
281
283
  e.stopPropagation(), this.openDropdown();
282
284
  }}
283
- @click=${(e) => {
285
+ @click=${(e) => {
284
286
  e.stopPropagation(), this.openDropdown();
285
287
  }}
286
- @keydown=${(e) => {
288
+ @keydown=${(e) => {
287
289
  this.handleKeyDown(e);
288
290
  }}
289
- @blur=${() => {
291
+ @blur=${() => {
290
292
  this.handleAutoSelectOnBlur();
291
293
  }}
292
- >
293
- </schmancy-input>
294
- `)}
295
- </slot>
294
+ >
295
+ </schmancy-input>
296
+ `)}
297
+ </slot>
296
298
 
297
- <!-- Options dropdown -->
298
- <ul
299
- id="options"
300
- class=${d({
299
+ <!-- Options dropdown -->
300
+ <ul
301
+ id="options"
302
+ class=${d({
301
303
  absolute: !0,
302
304
  "z-[1000]": !0,
303
305
  "mt-1": !0,
@@ -310,22 +312,20 @@ var T = class extends t(y(":host{display:block;border:unset!important;line-heigh
310
312
  flex: !0,
311
313
  "flex-col": !0
312
314
  })}
313
- role="listbox"
314
- aria-multiselectable=${this.multi ? "true" : "false"}
315
- aria-label=${`${this.label || "Options"} dropdown`}
316
- ?hidden=${!this.open}
317
- style="max-height: ${this.maxHeight}; display: ${this.open ? "flex" : "none"};"
318
- @slotchange=${() => {
315
+ role="listbox"
316
+ aria-multiselectable=${this.multi ? "true" : "false"}
317
+ aria-label=${`${this.label || "Options"} dropdown`}
318
+ ?hidden=${!this.open}
319
+ style="max-height: ${this.maxHeight}; display: ${this.open ? "flex" : "none"};"
320
+ @slotchange=${() => {
319
321
  this.setupOptionHandlers();
320
322
  }}
321
- >
322
- <slot></slot>
323
- ${this.hasResults ? "" : _`
324
- <li class="px-3 py-2 text-sm text-muted">No results found</li>
325
- `}
326
- </ul>
327
- </div>
328
- `;
323
+ >
324
+ <slot></slot>
325
+ ${this.hasResults ? "" : _` <li class="px-3 py-2 text-sm text-muted">No results found</li> `}
326
+ </ul>
327
+ </div>
328
+ `;
329
329
  }
330
330
  handleAutoSelectOnBlur() {
331
331
  if (this.multi || !this.open || !this.inputValue.trim()) return;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autocomplete-DV9RxCun.js","names":[],"sources":["../src/form/fields/autocomplete/autocomplete.scss?inline","../src/form/fields/autocomplete/autocomplete.ts"],"sourcesContent":[":host {\n\tdisplay: block;\n\tborder: unset !important;\n\tline-height: unset !important;\n\tbackground: unset !important;\n\tpadding: unset !important;\n\tfont-size: unset !important;\n\tbox-shadow: unset !important;\n}\n\n:host:focus {\n\tbox-shadow: unset !important;\n}\n\n@keyframes onAutoFillStart {\n\tfrom {\n\t\t/**/\n\t}\n\tto {\n\t\t/**/\n\t}\n}\n\nsch-input::part(input):-webkit-autofill,\nsch-input input:-webkit-autofill {\n\tanimation-name: onAutoFillStart;\n\tanimation-duration: 1ms;\n}\n","import { SchmancyFormField } from '@mixins/index'\nimport { InputSize, SchmancyInput } from '@schmancy/input'\nimport SchmancyOption from '@schmancy/option/option'\nimport { html, nothing, unsafeCSS } from 'lit'\nimport { customElement, property, query, queryAssignedElements, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\nimport { createRef, ref } from 'lit/directives/ref.js'\nimport { repeat } from 'lit/directives/repeat.js'\nimport { when } from 'lit/directives/when.js'\nimport { BehaviorSubject, combineLatest, fromEvent, timer } from 'rxjs'\nimport { debounceTime, distinctUntilChanged, takeUntil, tap } from 'rxjs/operators'\nimport style from './autocomplete.scss?inline'\n\n// Import the similarity function (or include it inline)\nimport { similarity } from '../../../utils/search'\n// Import chip component for multi-select display\nimport '../../../chips/input-chip'\n\nexport type SchmancyAutocompleteChangeEvent = CustomEvent<{\n\tvalue: string | string[]\n\tvalues?: string[]\n}>\n\ninterface FilteredOption {\n\toption: SchmancyOption\n\tscore: number\n}\n\n/**\n * Autocomplete input component with filtering and multi-select support.\n *\n * @prop {string} name - Name attribute for form submission\n * @prop {string} label - Label text displayed above the input\n * @prop {string} placeholder - Placeholder text for the input\n * @prop {boolean} required - Whether the field is required\n * @prop {boolean} multi - Enable multi-select mode\n * @prop {string} value - Selected value (single select mode)\n * @prop {string[]} values - Selected values (multi-select mode)\n */\n@customElement('schmancy-autocomplete')\nexport default class SchmancyAutocomplete extends SchmancyFormField(unsafeCSS(style)) {\n\t// `formAssociated`, `internals`, `attachInternals`, `name`, `label`,\n\t// `required`, `disabled`, `error`, `validationMessage`, `hint`, `id`,\n\t// `validateOn`, `touched/dirty/submitted`, `markTouched/markSubmitted`,\n\t// `setCustomValidity`, `formDisabledCallback`, FIELD_CONNECT_EVENT dispatch\n\t// — all from the mixin.\n\n\t/** Override mixin's resetForm with autocomplete-specific subject reset. */\n\toverride resetForm(): void {\n\t\tif (this.multi) {\n\t\t\tthis.selectedValues$.next([])\n\t\t} else {\n\t\t\tthis.selectedValue$.next('')\n\t\t}\n\t\tthis.inputValue = ''\n\t\tthis.inputValue$.next('')\n\t\tsuper.resetForm()\n\t}\n\n\t// Track whether value/values have been explicitly set\n\tvalueSet: boolean = false\n\tvaluesSet: boolean = false\n\n\t// Autocomplete-specific properties only — `name`, `label`, `required`,\n\t// `error`, `validationMessage` come from the mixin.\n\t@property({ type: String }) placeholder = ''\n\t@property({ type: String }) maxHeight = '300px'\n\t@property({ type: Boolean }) multi = false\n\t@property({ type: String }) description = ''\n\t@property({ type: String, reflect: true }) size: InputSize = 'md'\n\t@property({ type: String }) autocomplete = 'off'\n\t@property({ type: Number }) debounceMs = 200\n\t@property({ type: Number }) similarityThreshold = 0.3 // Minimum similarity score to show option\n\n\tprivate readonly a11yId = `schmancy-autocomplete-${Math.random().toString(36).slice(2, 10)}`\n\n\t// Values property for multi-select mode\n\t@property({ type: Array })\n\tget values() {\n\t\treturn [...this.selectedValues$.value]\n\t}\n\tset values(vals: string[]) {\n\t\tthis.valuesSet = true\n\t\tthis.selectedValues$.next(Array.isArray(vals) ? [...vals] : [])\n\t}\n\n\t// Value property — narrowed override of the mixin's wide value union.\n\t@property({ type: String, reflect: true })\n\toverride get value(): string {\n\t\treturn this.multi ? this.selectedValues$.value.join(',') : this.selectedValue$.value\n\t}\n\toverride set value(val: string) {\n\t\tthis.valueSet = true\n\t\tif (this.multi) {\n\t\t\tconst newValues = val\n\t\t\t\t? val\n\t\t\t\t\t\t.split(',')\n\t\t\t\t\t\t.map(v => v.trim())\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t: []\n\t\t\tconst currentValues = this.selectedValues$.value\n\t\t\t// Only update if values actually changed\n\t\t\tif (JSON.stringify(newValues) !== JSON.stringify(currentValues)) {\n\t\t\t\tthis.selectedValues$.next(newValues)\n\t\t\t}\n\t\t} else {\n\t\t\t// Only update if value actually changed\n\t\t\tif (val !== this.selectedValue$.value) {\n\t\t\t\tthis.selectedValue$.next(val)\n\t\t\t\t// Update the input display when value is set\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t}\n\t\t}\n\t}\n\n\t// State\n\t@state() private open = false\n\t@state() private inputValue = ''\n\t@state() private visibleOptionsCount = 0\n\t@state() private hasResults = true\n\n\t// DOM references\n\t@query('#options') listbox!: HTMLUListElement\n\t@query('sch-input') input!: SchmancyInput\n\t@queryAssignedElements({ flatten: true }) private options!: SchmancyOption[]\n\tprivate inputElementRef = createRef<HTMLInputElement>()\n\n\t// RxJS Subjects - only what we actually need\n\tprivate selectedValue$ = new BehaviorSubject<string>('')\n\tprivate selectedValues$ = new BehaviorSubject<string[]>([])\n\tprivate inputValue$ = new BehaviorSubject<string>('')\n\n\toverride connectedCallback() {\n\t\t// FIELD_CONNECT_EVENT is dispatched by the mixin's connectedCallback.\n\t\tsuper.connectedCallback()\n\t\tthis.setupAutocompleteLogic()\n\t\tthis.setupDocumentClickHandler()\n\t}\n\n\tprivate setupAutocompleteLogic() {\n\t\t// Sync selection state\n\t\tcombineLatest([this.selectedValue$, this.selectedValues$])\n\t\t\t.pipe(\n\t\t\t\ttap(([selectedValue, selectedValues]) => {\n\t\t\t\t\tthis.updateOptionSelection(selectedValue, selectedValues)\n\t\t\t\t\t// Keep ElementInternals form value in sync with selection (single and multi).\n\t\t\t\t\tconst formValue = this.multi ? selectedValues.join(',') : selectedValue\n\t\t\t\t\tthis.internals?.setFormValue(formValue || null)\n\t\t\t\t\tif (this.required) {\n\t\t\t\t\t\tconst missing = this.multi ? selectedValues.length === 0 : !selectedValue\n\t\t\t\t\t\tthis.internals?.setValidity(\n\t\t\t\t\t\t\tmissing ? { valueMissing: true } : {},\n\t\t\t\t\t\t\tmissing ? this.validationMessage || 'Please select an option.' : undefined,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\n\t\t// Filter options based on input\n\t\tthis.inputValue$\n\t\t\t.pipe(\n\t\t\t\tdistinctUntilChanged(),\n\t\t\t\tdebounceTime(this.debounceMs),\n\t\t\t\ttap(searchTerm => {\n\t\t\t\t\tif (this.open) {\n\t\t\t\t\t\tthis.filterOptions(searchTerm)\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\ttakeUntil(this.disconnecting),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\tprivate setupOptionHandlers() {\n\t\tthis.options.forEach((option, index) => {\n\t\t\toption.setAttribute('role', 'option')\n\t\t\toption.tabIndex = -1\n\t\t\tif (!option.id) {\n\t\t\t\toption.id = `${this.id}-option-${index}`\n\t\t\t}\n\t\t\t// Idempotent: slotchange may fire repeatedly for the same option nodes,\n\t\t\t// and addEventListener doesn't replace prior handlers like onfoo= did.\n\t\t\tif (option.dataset.schmancyAutocompleteHandlers === 'attached') return\n\t\t\toption.dataset.schmancyAutocompleteHandlers = 'attached'\n\n\t\t\t// Prevent blur handler from interfering with option selection\n\t\t\tfromEvent<MouseEvent>(option, 'mousedown')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(e => e.preventDefault())\n\n\t\t\t// Handle the actual selection\n\t\t\tfromEvent<MouseEvent>(option, 'click')\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(e => {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tthis.selectOption(option)\n\t\t\t\t})\n\t\t})\n\t}\n\n\tprivate updateOptionSelection(selectedValue: string, selectedValues: string[]) {\n\t\tthis.options.forEach(option => {\n\t\t\toption.selected = this.multi ? selectedValues.includes(option.value) : option.value === selectedValue\n\t\t\toption.setAttribute('aria-selected', String(option.selected))\n\t\t})\n\t}\n\n\tprivate filterOptions(searchTerm: string) {\n\t\tconst term = searchTerm.trim()\n\n\t\tif (!term) {\n\t\t\t// Show all options if no search term\n\t\t\tthis.options.forEach(option => {\n\t\t\t\toption.hidden = false\n\t\t\t\toption.style.order = '0'\n\t\t\t})\n\t\t\tthis.visibleOptionsCount = this.options.length\n\t\t\tthis.hasResults = true\n\t\t} else {\n\t\t\t// Calculate similarity scores for all options\n\t\t\tconst scoredOptions: FilteredOption[] = this.options.map(option => {\n\t\t\t\tconst optionLabel = option.label || option.textContent || ''\n\t\t\t\tconst optionValue = option.value\n\n\t\t\t\tconst labelScore = similarity(term, optionLabel)\n\t\t\t\tconst valueScore = similarity(term, optionValue)\n\t\t\t\tconst score = Math.max(labelScore * 1.1, valueScore)\n\n\t\t\t\treturn { option, score }\n\t\t\t})\n\n\t\t\t// Sort by score (highest first)\n\t\t\tscoredOptions.sort((a, b) => b.score - a.score)\n\n\t\t\t// Apply visibility and ordering\n\t\t\tlet visibleCount = 0\n\t\t\tscoredOptions.forEach((item, index) => {\n\t\t\t\tconst { option, score } = item\n\n\t\t\t\tif (score < this.similarityThreshold) {\n\t\t\t\t\toption.hidden = true\n\t\t\t\t} else {\n\t\t\t\t\toption.hidden = false\n\t\t\t\t\tvisibleCount++\n\t\t\t\t\toption.style.order = String(index)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.visibleOptionsCount = visibleCount\n\t\t\tthis.hasResults = visibleCount > 0\n\t\t}\n\n\t\tthis.announceToScreenReader(\n\t\t\tthis.visibleOptionsCount > 0\n\t\t\t\t? `${this.visibleOptionsCount} option${this.visibleOptionsCount === 1 ? '' : 's'} available.`\n\t\t\t\t: 'No results found.',\n\t\t)\n\t}\n\n\tprivate openDropdown() {\n\t\tthis.open = true\n\t\t// Reset filters based on current input value when dropdown opens\n\t\tthis.filterOptions(this.inputValue)\n\t}\n\n\tprivate selectOption(option: SchmancyOption) {\n\t\tif (this.multi) {\n\t\t\tconst currentValues = this.selectedValues$.value\n\t\t\tconst index = currentValues.indexOf(option.value)\n\t\t\tconst newValues = index > -1 ? currentValues.filter(v => v !== option.value) : [...currentValues, option.value]\n\n\t\t\tthis.selectedValues$.next(newValues)\n\t\t\tthis.announceToScreenReader(\n\t\t\t\tnewValues.length > 0 ? `Selected: ${this.getSelectedLabels().join(', ')}` : 'No options selected',\n\t\t\t)\n\t\t\tthis.fireChangeEvent()\n\t\t} else {\n\t\t\t// Update value first\n\t\t\tthis.selectedValue$.next(option.value)\n\n\t\t\t// Close dropdown IMMEDIATELY to prevent blur handler from firing\n\t\t\tthis.open = false\n\n\t\t\t// Now fire event with the NEW value\n\t\t\tthis.fireChangeEvent()\n\n\t\t\t// Update UI\n\t\t\tthis.inputValue = option.label || option.textContent || ''\n\t\t\tthis.inputValue$.next(this.inputValue)\n\n\t\t\tthis.announceToScreenReader(`Selected: ${option.label || option.textContent}`)\n\t\t}\n\t}\n\n\tprivate setupDocumentClickHandler() {\n\t\tfromEvent<MouseEvent>(document, 'click')\n\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t.subscribe(e => {\n\t\t\t\tif (!this.open) return\n\t\t\t\tconst path = e.composedPath()\n\t\t\t\tif (!path.includes(this) && !this.options.some(opt => path.includes(opt))) {\n\t\t\t\t\tthis.open = false\n\t\t\t\t\tthis.updateInputDisplay()\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tprivate updateInputDisplay() {\n\t\t// For multi-select, we don't update input display since chips show the selections\n\t\tif (this.multi) return\n\n\t\tconst selectedValue = this.selectedValue$.value\n\t\tconst option = this.options.find(opt => opt.value === selectedValue)\n\t\tthis.inputValue = option ? option.label || option.textContent || '' : ''\n\t\tthis.inputValue$.next(this.inputValue)\n\n\t\tif (this.inputElementRef.value) {\n\t\t\tthis.inputElementRef.value.value = this.inputValue\n\t\t}\n\t}\n\n\tprivate getSelectedLabels(): string[] {\n\t\treturn this.options\n\t\t\t.filter(option =>\n\t\t\t\tthis.multi ? this.selectedValues$.value.includes(option.value) : option.value === this.selectedValue$.value,\n\t\t\t)\n\t\t\t.map(option => option.label || option.textContent || '')\n\t}\n\n\tprivate announceToScreenReader(message: string) {\n\t\tconst liveRegion = this.shadowRoot?.querySelector('#live-status')\n\t\tif (liveRegion) {\n\t\t\tliveRegion.textContent = message\n\t\t}\n\t}\n\n\tprivate fireChangeEvent() {\n\t\tconst detail: SchmancyAutocompleteChangeEvent['detail'] = {\n\t\t\tvalue: this.value,\n\t\t}\n\n\t\tif (this.multi) {\n\t\t\tdetail.values = [...this.selectedValues$.value]\n\t\t}\n\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent<SchmancyAutocompleteChangeEvent['detail']>('change', {\n\t\t\t\tdetail,\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tpublic checkValidity(): boolean {\n\t\tif (!this.required) return true\n\t\treturn this.multi ? this.selectedValues$.value.length > 0 : Boolean(this.selectedValue$.value)\n\t}\n\n\tpublic reportValidity(): boolean {\n\t\tif (this.inputElementRef.value) {\n\t\t\treturn this.inputElementRef.value.reportValidity()\n\t\t}\n\t\treturn this.checkValidity()\n\t}\n\n\tfirstUpdated() {\n\t\tthis.setupOptionHandlers()\n\n\t\t// Sync initial value with display after options are available\n\t\tthis.updateInputDisplay()\n\n\t\t// Update options when slot changes\n\t\tconst slot = this.shadowRoot?.querySelector('slot')\n\t\tslot?.addEventListener('slotchange', () => {\n\t\t\tthis.setupOptionHandlers()\n\t\t\tthis.updateOptionSelection(this.selectedValue$.value, this.selectedValues$.value)\n\t\t})\n\t}\n\n\tprivate handleChipRemove(value: string) {\n\t\tconst currentValues = this.selectedValues$.value\n\t\tconst newValues = currentValues.filter(v => v !== value)\n\t\tthis.selectedValues$.next(newValues)\n\t\tthis.fireChangeEvent()\n\t\tthis.announceToScreenReader(`Removed: ${this.getChipLabel(value)}`)\n\t}\n\n\tprivate getChipLabel(value: string): string {\n\t\tconst option = this.options.find(opt => opt.value === value)\n\t\treturn option ? option.label || option.textContent || value : value\n\t}\n\n\tprivate focusTextInput() {\n\t\tif (this.inputElementRef.value) {\n\t\t\tthis.inputElementRef.value.focus()\n\t\t}\n\t}\n\n\trender() {\n\t\tconst descriptionId = `${this.id}-desc`\n\n\t\t// Get size-based styling to match Schmancy input\n\t\tconst getSizeStyles = () => {\n\t\t\tswitch (this.size) {\n\t\t\t\tcase 'sm':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[40px]',\n\t\t\t\t\t\tpadding: 'px-2',\n\t\t\t\t\t\tfontSize: 'text-sm', // 14px\n\t\t\t\t\t\tlabelSize: 'text-sm',\n\t\t\t\t\t}\n\t\t\t\tcase 'lg':\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[60px]',\n\t\t\t\t\t\tpadding: 'px-5',\n\t\t\t\t\t\tfontSize: 'text-lg', // 18px\n\t\t\t\t\t\tlabelSize: 'text-lg',\n\t\t\t\t\t}\n\t\t\t\tcase 'md':\n\t\t\t\tdefault:\n\t\t\t\t\treturn {\n\t\t\t\t\t\theight: 'min-h-[50px]',\n\t\t\t\t\t\tpadding: 'px-4',\n\t\t\t\t\t\tfontSize: 'text-base', // 16px\n\t\t\t\t\t\tlabelSize: 'text-base',\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst { height, padding, fontSize, labelSize } = getSizeStyles()\n\n\t\treturn html`\n\t\t\t<div class=\"relative\">\n\t\t\t\t<!-- Screen reader live region -->\n\t\t\t\t<div id=\"live-status\" role=\"status\" aria-live=\"polite\" class=\"sr-only\"></div>\n\n\t\t\t\t<!-- Description -->\n\t\t\t\t${this.description ? html`<div id=\"${descriptionId}\" class=\"sr-only\">${this.description}</div>` : ''}\n\n\t\t\t\t<!-- Custom input wrapper for Gmail-style chip input -->\n\t\t\t\t<slot name=\"trigger\">\n\t\t\t\t\t${when(\n\t\t\t\t\t\tthis.multi,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<!-- Custom multi-select input with inline chips -->\n\t\t\t\t\t\t\t<div class=\"relative\">\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.label,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<label\n\t\t\t\t\t\t\t\t\t\t\tclass=\"${classMap({\n\t\t\t\t\t\t\t\t\t\t\t\t'block mb-1 font-medium': true,\n\t\t\t\t\t\t\t\t\t\t\t\t'text-primary-default': !this.error,\n\t\t\t\t\t\t\t\t\t\t\t\t'text-error-default': this.error,\n\t\t\t\t\t\t\t\t\t\t\t\t[labelSize]: true,\n\t\t\t\t\t\t\t\t\t\t\t})}\"\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t${this.label}${this.required ? html`<span class=\"text-error-default ml-1\">*</span>` : ''}\n\t\t\t\t\t\t\t\t\t\t</label>\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"${classMap({\n\t\t\t\t\t\t\t\t\t\t'flex flex-wrap items-center gap-1': true,\n\t\t\t\t\t\t\t\t\t\t[height]: true,\n\t\t\t\t\t\t\t\t\t\t[padding]: true,\n\t\t\t\t\t\t\t\t\t\t'block w-full min-w-0 rounded-[8px] border-0': true,\n\t\t\t\t\t\t\t\t\t\t'bg-surface-highest text-surface-on': true,\n\t\t\t\t\t\t\t\t\t\t'ring-0 ring-inset focus-within:ring-1 focus-within:ring-inset': true,\n\t\t\t\t\t\t\t\t\t\t'ring-secondary-default focus-within:ring-secondary-default': !this.error,\n\t\t\t\t\t\t\t\t\t\t'ring-error-default focus-within:ring-error-default': this.error,\n\t\t\t\t\t\t\t\t\t\t'cursor-text transition-colors duration-200': true,\n\t\t\t\t\t\t\t\t\t})}\"\n\t\t\t\t\t\t\t\t\t@click=${() => this.focusTextInput()}\n\t\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\t\t\t\taria-expanded=${this.open}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<!-- Render chips inline -->\n\t\t\t\t\t\t\t\t\t${repeat(\n\t\t\t\t\t\t\t\t\t\tthis.selectedValues$.value,\n\t\t\t\t\t\t\t\t\t\tvalue => value,\n\t\t\t\t\t\t\t\t\t\tvalue => html`\n\t\t\t\t\t\t\t\t\t\t\t<schmancy-input-chip\n\t\t\t\t\t\t\t\t\t\t\t\t.value=${value}\n\t\t\t\t\t\t\t\t\t\t\t\t@remove=${(e: CustomEvent) => this.handleChipRemove(e.detail.value)}\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"shrink-0 my-0.5\"\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t${this.getChipLabel(value)}\n\t\t\t\t\t\t\t\t\t\t\t</schmancy-input-chip>\n\t\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t<!-- Text input for typing -->\n\t\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\t\t${ref(this.inputElementRef)}\n\t\t\t\t\t\t\t\t\t\tid=\"autocomplete-input\"\n\t\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\t\tclass=\"flex-1 min-w-[120px] py-1 bg-transparent border-none outline-none ${fontSize} font-medium text-surface-on placeholder:text-muted\"\n\t\t\t\t\t\t\t\t\t\tname=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n\t\t\t\t\t\t\t\t\t\t.placeholder=${this.selectedValues$.value.length > 0 ? 'Add more...' : this.placeholder}\n\t\t\t\t\t\t\t\t\t\t.value=${this.inputValue}\n\t\t\t\t\t\t\t\t\t\t.autocomplete=${this.autocomplete}\n\t\t\t\t\t\t\t\t\t\taria-invalid=${this.error ? 'true' : 'false'}\n\t\t\t\t\t\t\t\t\t\taria-required=${this.required ? 'true' : 'false'}\n\t\t\t\t\t\t\t\t\t\taria-describedby=${this.error && this.validationMessage ? `${this.a11yId}-err` : nothing}\n\t\t\t\t\t\t\t\t\t\taria-label=${!this.label && this.placeholder ? this.placeholder : nothing}\n\t\t\t\t\t\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\t\t\t\t\t\tconst value = (e.target as HTMLInputElement).value\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue = value\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue$.next(value)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@focus=${(e: FocusEvent) => {\n\t\t\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\t\t\t// Clear input on focus for new searches\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue = ''\n\t\t\t\t\t\t\t\t\t\t\tthis.inputValue$.next('')\n\t\t\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t@blur=${() => {\n\t\t\t\t\t\t\t\t\t\t\tthis.handleAutoSelectOnBlur()\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</div>\n\n\t\t\t\t\t\t\t\t<!-- Validation message -->\n\t\t\t\t\t\t\t\t${when(\n\t\t\t\t\t\t\t\t\tthis.error && this.validationMessage,\n\t\t\t\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t\t\t\t<div id=\"${this.a11yId}-err\" class=\"mt-1 text-sm text-error-default\" role=\"alert\">\n\t\t\t\t\t\t\t\t\t\t\t${this.validationMessage}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t`,\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\t() => html`\n\t\t\t\t\t\t\t<!-- Regular single-select input -->\n\t\t\t\t\t\t\t<schmancy-input\n\t\t\t\t\t\t\t\t.size=${this.size}\n\t\t\t\t\t\t\t\t${ref(this.inputElementRef)}\n\t\t\t\t\t\t\t\tid=\"autocomplete-input\"\n\t\t\t\t\t\t\t\tclass=\"w-full\"\n\t\t\t\t\t\t\t\t.name=${this.name || this.label?.toLowerCase().replace(/\\s+/g, '-') || ''}\n\t\t\t\t\t\t\t\t.label=${this.label}\n\t\t\t\t\t\t\t\t.placeholder=${this.placeholder}\n\t\t\t\t\t\t\t\t.required=${this.required}\n\t\t\t\t\t\t\t\t.value=${this.inputValue}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tautocomplete=${this.autocomplete}\n\t\t\t\t\t\t\t\tclickable\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-controls=\"options\"\n\t\t\t\t\t\t\t\taria-expanded=${this.open}\n\t\t\t\t\t\t\t\taria-describedby=${ifDefined(this.description ? descriptionId : undefined)}\n\t\t\t\t\t\t\t\t@input=${(e: Event) => {\n\t\t\t\t\t\t\t\t\tconst value = (e.target as HTMLInputElement).value\n\t\t\t\t\t\t\t\t\tthis.inputValue = value\n\t\t\t\t\t\t\t\t\tthis.inputValue$.next(value)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@focus=${(e: FocusEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@click=${(e: MouseEvent) => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.openDropdown()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@keydown=${(e: KeyboardEvent) => {\n\t\t\t\t\t\t\t\t\tthis.handleKeyDown(e)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t@blur=${() => {\n\t\t\t\t\t\t\t\t\tthis.handleAutoSelectOnBlur()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</schmancy-input>\n\t\t\t\t\t\t`,\n\t\t\t\t\t)}\n\t\t\t\t</slot>\n\n\t\t\t\t<!-- Options dropdown -->\n\t\t\t\t<ul\n\t\t\t\t\tid=\"options\"\n\t\t\t\t\tclass=${classMap({\n\t\t\t\t\t\tabsolute: true,\n\t\t\t\t\t\t'z-[1000]': true,\n\t\t\t\t\t\t'mt-1': true,\n\t\t\t\t\t\t'w-full': true,\n\t\t\t\t\t\t'rounded-md': true,\n\t\t\t\t\t\t'shadow-md': true,\n\t\t\t\t\t\t'overflow-auto': true,\n\t\t\t\t\t\t'min-w-full': true,\n\t\t\t\t\t\t'bg-surface-low': true,\n\t\t\t\t\t\tflex: true,\n\t\t\t\t\t\t'flex-col': true, // Enable flexbox for ordering\n\t\t\t\t\t})}\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\taria-multiselectable=${this.multi ? 'true' : 'false'}\n\t\t\t\t\taria-label=${`${this.label || 'Options'} dropdown`}\n\t\t\t\t\t?hidden=${!this.open}\n\t\t\t\t\tstyle=\"max-height: ${this.maxHeight}; display: ${this.open ? 'flex' : 'none'};\"\n\t\t\t\t\t@slotchange=${() => {\n\t\t\t\t\t\tthis.setupOptionHandlers()\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t\t${!this.hasResults ? html` <li class=\"px-3 py-2 text-sm text-muted\">No results found</li> ` : ''}\n\t\t\t\t</ul>\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate handleAutoSelectOnBlur() {\n\t\t// Only auto-select in single-select mode and when dropdown is open with a search term\n\t\tif (this.multi || !this.open || !this.inputValue.trim()) {\n\t\t\treturn\n\t\t}\n\n\t\tconst searchTerm = this.inputValue.trim()\n\n\t\t// Find the best matching option using the same similarity logic as filtering\n\t\tlet bestMatch: SchmancyOption | null = null\n\t\tlet bestScore = 0\n\n\t\tthis.options.forEach(option => {\n\t\t\t// Skip hidden options\n\t\t\tif (option.hidden) return\n\n\t\t\t// Get text to search in (prioritize label, then textContent, then value)\n\t\t\tconst optionLabel = option.label || option.textContent || ''\n\t\t\tconst optionValue = option.value\n\n\t\t\t// Calculate similarity scores for both label and value\n\t\t\tconst labelScore = similarity(searchTerm, optionLabel)\n\t\t\tconst valueScore = similarity(searchTerm, optionValue)\n\n\t\t\t// Use the higher score (prioritizing label matches)\n\t\t\tconst score = Math.max(labelScore * 1.1, valueScore) // Slight boost for label matches\n\n\t\t\t// Keep track of best match that meets threshold\n\t\t\tif (score > bestScore && score >= this.similarityThreshold) {\n\t\t\t\tbestScore = score\n\t\t\t\tbestMatch = option\n\t\t\t}\n\t\t})\n\n\t\t// Auto-select the best match if found\n\t\tif (bestMatch) {\n\t\t\t// Silently update the selected value without firing change event\n\t\t\tthis.selectedValue$.next(bestMatch.value)\n\t\t\tthis.inputValue = bestMatch.label || bestMatch.textContent || ''\n\t\t\tthis.inputValue$.next(this.inputValue)\n\t\t\tthis.open = false\n\t\t}\n\t}\n\n\tprivate handleKeyDown(event: KeyboardEvent) {\n\t\tconst isOpen = this.open\n\t\tconst selectedValues = this.selectedValues$.value\n\n\t\t// Handle backspace to remove last chip in multi-select when input is empty\n\t\tif (this.multi && event.key === 'Backspace' && !this.inputValue && selectedValues.length > 0 && !isOpen) {\n\t\t\tevent.preventDefault()\n\t\t\tconst lastValue = selectedValues[selectedValues.length - 1]\n\t\t\tthis.handleChipRemove(lastValue)\n\t\t\treturn\n\t\t}\n\n\t\tif (!isOpen && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n\t\t\tevent.preventDefault()\n\t\t\tthis.openDropdown()\n\n\t\t\ttimer(10)\n\t\t\t\t.pipe(takeUntil(this.disconnecting))\n\t\t\t\t.subscribe(() => {\n\t\t\t\t\tconst firstVisible = this.options.find(opt => !opt.hidden)\n\t\t\t\t\tfirstVisible?.focus()\n\t\t\t\t})\n\t\t\treturn\n\t\t}\n\n\t\tif (!isOpen) return\n\n\t\tconst visibleOptions = this.options\n\t\t\t.filter(opt => !opt.hidden)\n\t\t\t.toSorted((a, b) => parseInt(a.style.order || '0') - parseInt(b.style.order || '0'))\n\n\t\tconst focusedOption = visibleOptions.find(opt => opt === document.activeElement)\n\t\tconst currentIndex = focusedOption ? visibleOptions.indexOf(focusedOption) : -1\n\n\t\tswitch (event.key) {\n\t\t\tcase 'Escape':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.open = false\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t\tthis.inputElementRef.value?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Tab':\n\t\t\t\tthis.open = false\n\t\t\t\tthis.updateInputDisplay()\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowDown':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tconst nextIndex = currentIndex < visibleOptions.length - 1 ? currentIndex + 1 : 0\n\t\t\t\tvisibleOptions[nextIndex]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'ArrowUp':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tconst prevIndex = currentIndex > 0 ? currentIndex - 1 : visibleOptions.length - 1\n\t\t\t\tvisibleOptions[prevIndex]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Home':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvisibleOptions[0]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'End':\n\t\t\t\tevent.preventDefault()\n\t\t\t\tvisibleOptions[visibleOptions.length - 1]?.focus()\n\t\t\t\tbreak\n\n\t\t\tcase 'Enter':\n\t\t\tcase ' ':\n\t\t\t\tif (focusedOption) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tthis.selectOption(focusedOption)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-autocomplete': SchmancyAutocomplete\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- require(`./autocomplete-DD7Hd59N.cjs`);
1
+ require(`./autocomplete-CILzaDB7.cjs`);
@@ -1 +1 @@
1
- import "./autocomplete-DUBY9RtH.js";
1
+ import "./autocomplete-DV9RxCun.js";
package/dist/avatar.cjs CHANGED
@@ -1,4 +1,4 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-D9WA9FP9.cjs`);require(`./mixins-XGVIOvKt.cjs`);const t=require(`./directives-CYf2fAdA.cjs`),n=require(`./theme.interface-CSt7JUBD.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.t{constructor(...e){super(...e),this.initials=``,this.src=``,this.icon=``,this.size=`md`,this.color=`primary`,this.shape=`circle`,this.bordered=!1,this.status=`none`}render(){let e;e=this.src?i.html`<img class="w-full h-full object-cover" src="${this.src}" alt="Avatar" />`:this.initials?i.html`<span class="text-center font-medium">${this.initials.substring(0,2).toUpperCase()}</span>`:this.icon?i.html`<schmancy-icon>${this.icon}</schmancy-icon>`:i.html`<schmancy-icon>person</schmancy-icon>`;let t={"relative flex items-center justify-center overflow-hidden":!0,[{xxs:`w-5 h-5 text-[8px]`,xs:`w-6 h-6 text-xs`,sm:`w-8 h-8 text-sm`,md:`w-10 h-10 text-base`,lg:`w-12 h-12 text-lg`,xl:`w-16 h-16 text-xl`}[this.size]]:!0,[{circle:`rounded-full`,square:`rounded-md`}[this.shape]]:!0,"border-2 border-surface-container":this.bordered},n=this.getColorAttributes();return i.html`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CncqDLb2.cjs`);const e=require(`./SchmancyElement-CeKrBW2j.cjs`);require(`./mixins-Cjn20BQH.cjs`);const t=require(`./directives-B2VxfwRL.cjs`),n=require(`./theme.interface-B-qxDsZQ.cjs`);let r=require(`lit/decorators.js`),i=require(`lit`);var a=class extends e.t{constructor(...e){super(...e),this.initials=``,this.src=``,this.icon=``,this.size=`md`,this.color=`primary`,this.shape=`circle`,this.bordered=!1,this.status=`none`}render(){let e;e=this.src?i.html`<img class="w-full h-full object-cover" src="${this.src}" alt="Avatar" />`:this.initials?i.html`<span class="text-center font-medium">${this.initials.substring(0,2).toUpperCase()}</span>`:this.icon?i.html`<schmancy-icon>${this.icon}</schmancy-icon>`:i.html`<schmancy-icon>person</schmancy-icon>`;let t={"relative flex items-center justify-center overflow-hidden":!0,[{xxs:`w-5 h-5 text-[8px]`,xs:`w-6 h-6 text-xs`,sm:`w-8 h-8 text-sm`,md:`w-10 h-10 text-base`,lg:`w-12 h-12 text-lg`,xl:`w-16 h-16 text-xl`}[this.size]]:!0,[{circle:`rounded-full`,square:`rounded-md`}[this.shape]]:!0,"border-2 border-surface-container":this.bordered},n=this.getColorAttributes();return i.html`
2
2
  <div class="${this.classMap(t)}" ${n}>
3
3
  ${e} ${this.status===`none`?``:this.renderStatusIndicator()}
4
4
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.cjs","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"avatar.cjs","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":"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"}
package/dist/avatar.js CHANGED
@@ -1,7 +1,7 @@
1
- import { t as e, u as t } from "./SchmancyElement-OWgz9ePG.js";
2
- import "./mixins-COeG4DiX.js";
3
- import { S as n } from "./directives-d1rEbW1A.js";
4
- import { t as r } from "./theme.interface-odQEpZZH.js";
1
+ import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import "./mixins-q4KAL8Xr.js";
3
+ import { S as n } from "./directives-Dj8jlv-Q.js";
4
+ import { t as r } from "./theme.interface-B7caS5cg.js";
5
5
  import { customElement as i, property as a } from "lit/decorators.js";
6
6
  import { html as o } from "lit";
7
7
  var s = class extends e {
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"avatar.js","names":[],"sources":["../src/avatar/avatar.ts"],"sourcesContent":["import { SchmancyElement } from '@mixins/index'\nimport { html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { color } from '@schmancy/directives'\nimport { SchmancyTheme } from '@schmancy/theme/theme.interface'\n\n/**\n * M3 avatar sizes: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n * - xxs: Ultra-compact (20px) - for menu cards\n * - xs: 24px - M3 compact\n * - sm: 32px - M3 small\n * - md: 40px - M3 medium (default)\n * - lg: 48px - M3 large\n * - xl: 64px - M3 extra large\n */\nexport type AvatarSize = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'\nexport type AvatarColor = 'primary' | 'secondary' | 'tertiary' | 'success' | 'error' | 'neutral'\nexport type AvatarShape = 'circle' | 'square'\nexport type AvatarStatus = 'online' | 'offline' | 'busy' | 'away' | 'none'\n\n/**\n * A customizable avatar component that displays initials or an icon\n * Designed to match the Schmancy design system\n *\n * @element schmancy-avatar\n *\n * @property {string} initials - Text initials to display (limited to 2 characters)\n * @property {string} src - URL of an image to display\n * @property {string} icon - Name of an icon to display\n * @property {AvatarSize} size - Size of the avatar (xs, sm, md, lg, xl)\n * @property {AvatarColor} color - Color theme of the avatar\n * @property {AvatarShape} shape - Shape of the avatar (circle or square)\n * @property {boolean} bordered - Whether to add a border around the avatar\n * @property {AvatarStatus} status - Optional status indicator to display\n *\n * @example\n * <schmancy-avatar\n * initials=\"JD\"\n * size=\"md\"\n * color=\"primary\"\n * ></schmancy-avatar>\n */\n@customElement('schmancy-avatar')\nexport class SchmancyAvatar extends SchmancyElement {\n\t@property({ type: String }) initials: string = ''\n\t@property({ type: String }) src: string = ''\n\t@property({ type: String }) icon: string = ''\n\t@property({ type: String }) size: AvatarSize = 'md'\n\t@property({ type: String }) color: AvatarColor = 'primary'\n\t@property({ type: String }) shape: AvatarShape = 'circle'\n\t@property({ type: Boolean }) bordered: boolean = false\n\t@property({ type: String }) status: AvatarStatus = 'none'\n\n\trender() {\n\t\t// Determine content to display (image, initials, or icon)\n\t\tlet content\n\t\tif (this.src) {\n\t\t\tcontent = html`<img class=\"w-full h-full object-cover\" src=\"${this.src}\" alt=\"Avatar\" />`\n\t\t} else if (this.initials) {\n\t\t\tcontent = html`<span class=\"text-center font-medium\">${this.initials.substring(0, 2).toUpperCase()}</span>`\n\t\t} else if (this.icon) {\n\t\t\tcontent = html`<schmancy-icon>${this.icon}</schmancy-icon>`\n\t\t} else {\n\t\t\tcontent = html`<schmancy-icon>person</schmancy-icon>`\n\t\t}\n\n\t\t// Size classes - M3 aligned: 20dp → 24dp → 32dp → 40dp → 48dp → 64dp\n\t\tconst sizeClasses = {\n\t\t\txxs: 'w-5 h-5 text-[8px]', // 20px - Ultra-compact\n\t\t\txs: 'w-6 h-6 text-xs', // 24px - M3 compact\n\t\t\tsm: 'w-8 h-8 text-sm', // 32px - M3 small\n\t\t\tmd: 'w-10 h-10 text-base', // 40px - M3 medium (default)\n\t\t\tlg: 'w-12 h-12 text-lg', // 48px - M3 large\n\t\t\txl: 'w-16 h-16 text-xl', // 64px - M3 extra large\n\t\t}\n\n\t\t// Shape classes\n\t\tconst shapeClasses = {\n\t\t\tcircle: 'rounded-full',\n\t\t\tsquare: 'rounded-md',\n\t\t}\n\n\t\t// Combine classes\n\t\tconst avatarClasses = {\n\t\t\t'relative flex items-center justify-center overflow-hidden': true,\n\t\t\t[sizeClasses[this.size]]: true,\n\t\t\t[shapeClasses[this.shape]]: true,\n\t\t\t'border-2 border-surface-container': this.bordered,\n\t\t}\n\n\t\t// Get theme colors\n\t\tconst colorAttrs = this.getColorAttributes()\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(avatarClasses)}\" ${colorAttrs}>\n\t\t\t\t${content} ${this.status !== 'none' ? this.renderStatusIndicator() : ''}\n\t\t\t</div>\n\t\t`\n\t}\n\n\tprivate getColorAttributes() {\n\t\tconst colorMap = {\n\t\t\tprimary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.primary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.primary.onContainer,\n\t\t\t},\n\t\t\tsecondary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.secondary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.secondary.onContainer,\n\t\t\t},\n\t\t\ttertiary: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.tertiary.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.tertiary.onContainer,\n\t\t\t},\n\t\t\tsuccess: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.success.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.success.onContainer,\n\t\t\t},\n\t\t\terror: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.error.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.error.onContainer,\n\t\t\t},\n\t\t\tneutral: {\n\t\t\t\tbgColor: SchmancyTheme.sys.color.surface.container,\n\t\t\t\tcolor: SchmancyTheme.sys.color.surface.on,\n\t\t\t},\n\t\t}\n\n\t\treturn color(colorMap[this.color])\n\t}\n\n\tprivate renderStatusIndicator() {\n\t\tconst statusColors = {\n\t\t\tonline: SchmancyTheme.sys.color.success.default,\n\t\t\toffline: SchmancyTheme.sys.color.surface.onVariant,\n\t\t\tbusy: SchmancyTheme.sys.color.error.default,\n\t\t\taway: SchmancyTheme.sys.color.tertiary.default,\n\t\t}\n\n\t\tconst sizeMap = {\n\t\t\txxs: 'w-1 h-1',\n\t\t\txs: 'w-1.5 h-1.5',\n\t\t\tsm: 'w-2 h-2',\n\t\t\tmd: 'w-2.5 h-2.5',\n\t\t\tlg: 'w-3 h-3',\n\t\t\txl: 'w-4 h-4',\n\t\t}\n\n\t\tconst statusClasses = {\n\t\t\t'absolute bottom-0 right-0 rounded-full border-2 border-surface-default': true,\n\t\t\t[sizeMap[this.size]]: true,\n\t\t}\n\n\t\treturn html`\n\t\t\t<div class=\"${this.classMap(statusClasses)}\" style=\"background-color: ${statusColors[this.status]};\"></div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-avatar': SchmancyAvatar\n\t}\n}\n"],"mappings":";;;;;;AA2CO,IAAA,IAAA,cAA6B,EAAA;CAAA,YAAA,GAAA,GAAA;EAAA,MAAA,GAAA,CAAA,GAAA,KAAA,WACY,IAAA,KAAA,MACL,IAAA,KAAA,OACC,IAAA,KAAA,OACI,MAAA,KAAA,QACE,WAAA,KAAA,QACA,UAAA,KAAA,WAAA,CACA,GAAA,KAAA,SACE;CAAA;CAEnD,SAAA;EAEC,IAAI;EAEH,IADG,KAAK,MACE,CAAI,gDAAgD,KAAK,IAAA,qBACzD,KAAK,WACL,CAAI,yCAAyC,KAAK,SAAS,UAAU,GAAG,CAAA,EAAG,YAAA,EAAA,WAC3E,KAAK,OACL,CAAI,kBAAkB,KAAK,KAAA,oBAE3B,CAAI;EAIf,IAgBM,IAAgB;GACrB,6DAAA,CAA6D;IAjB1C;IACnB,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;GAAA,EAYS,KAAK,QAAA,CAAQ;IARN;IACpB,QAAQ;IACR,QAAQ;GAAA,EAOM,KAAK,SAAA,CAAS;GAC5B,qCAAqC,KAAK;EAAA,GAIrC,IAAa,KAAK,mBAAA;EAExB,OAAO,CAAI;iBACI,KAAK,SAAS,CAAA,EAAA,IAAmB,EAAA;MAC5C,EAAA,GAAW,KAAK,WAAW,SAAwC,KAA/B,KAAK,sBAAA,EAA0B;;;CAGxE;CAEA,qBAAA;EA4BC,OAAO,EAAM;GA1BZ,SAAS;IACR,SAAS,EAAc,IAAI,MAAM,QAAQ;IACzC,OAAO,EAAc,IAAI,MAAM,QAAQ;GAAA;GAExC,WAAW;IACV,SAAS,EAAc,IAAI,MAAM,UAAU;IAC3C,OAAO,EAAc,IAAI,MAAM,UAAU;GAAA;GAE1C,UAAU;IACT,SAAS,EAAc,IAAI,MAAM,SAAS;IAC1C,OAAO,EAAc,IAAI,MAAM,SAAS;GAAA;GAEzC,SAAS;IACR,SAAS,EAAc,IAAI,MAAM,QAAQ;IACzC,OAAO,EAAc,IAAI,MAAM,QAAQ;GAAA;GAExC,OAAO;IACN,SAAS,EAAc,IAAI,MAAM,MAAM;IACvC,OAAO,EAAc,IAAI,MAAM,MAAM;GAAA;GAEtC,SAAS;IACR,SAAS,EAAc,IAAI,MAAM,QAAQ;IACzC,OAAO,EAAc,IAAI,MAAM,QAAQ;GAAA;EAAA,EAInB,KAAK,MAAA;CAC5B;CAEA,wBAAA;EACC,IAAM,IAAe;GACpB,QAAQ,EAAc,IAAI,MAAM,QAAQ;GACxC,SAAS,EAAc,IAAI,MAAM,QAAQ;GACzC,MAAM,EAAc,IAAI,MAAM,MAAM;GACpC,MAAM,EAAc,IAAI,MAAM,SAAS;EAAA,GAYlC,IAAgB;GACrB,0EAAA,CAA0E;IACzE;IAVD,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;GAAA,EAKK,KAAK,QAAA,CAAQ;EAAA;EAGvB,OAAO,CAAI;iBACI,KAAK,SAAS,CAAA,EAAA,6BAA4C,EAAa,KAAK,QAAA;;CAE5F;AAAA;AAAA,EAAA,CAhHC,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,OAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,QAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,QAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,SAAA,KAAA,CAAA,GAAA,EAAA,CACzB,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,GAAS,EAAA,WAAA,YAAA,KAAA,CAAA,GAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,OAAA,CAAA,CAAA,GAAQ,EAAA,WAAA,UAAA,KAAA,CAAA,GAAA,IAAA,EAAA,CAT1B,EAAc,iBAAA,CAAA,GAAiB,CAAA;AAAA,SAAA,KAAA"}
package/dist/badge.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-CpftzdZV.cjs`);Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return e.w}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return e.T}});
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./src-DuRvYagm.cjs`);Object.defineProperty(exports,`ScBadgeV2`,{enumerable:!0,get:function(){return e.w}}),Object.defineProperty(exports,`SchmancyBadgeV2`,{enumerable:!0,get:function(){return e.T}});
package/dist/badge.js CHANGED
@@ -1,2 +1,2 @@
1
- import { T as e, w as t } from "./src-CCVbLLgC.js";
1
+ import { T as e, w as t } from "./src-DAtcPmCb.js";
2
2
  export { t as ScBadgeV2, e as SchmancyBadgeV2 };
@@ -1,9 +1,9 @@
1
- import { t as e, u as t } from "./SchmancyElement-OWgz9ePG.js";
2
- import "./mixins-COeG4DiX.js";
1
+ import { t as e, u as t } from "./SchmancyElement-Ob9yGkiG.js";
2
+ import "./mixins-q4KAL8Xr.js";
3
3
  import { d as n } from "./animation-DCznELuT.js";
4
4
  import { t as r } from "./reduced-motion-D-L12p7G.js";
5
- import { n as i } from "./theme.service-5RjyR7Sy.js";
6
- import { o as a } from "./overlay.service-yqTOyLlr.js";
5
+ import { n as i } from "./theme.service-D94nm7Bf.js";
6
+ import { o as a } from "./overlay.service-BuUeti6X.js";
7
7
  import { exhaustMap as o, filter as s, finalize as c, fromEvent as l, merge as u, takeUntil as d, tap as f } from "rxjs";
8
8
  import { classMap as p } from "lit/directives/class-map.js";
9
9
  import { styleMap as m } from "lit/directives/style-map.js";
@@ -155,10 +155,8 @@ var S = "schmancy-boat-", C = class extends e {
155
155
  return y`
156
156
  <schmancy-surface
157
157
  ${x(this.containerRef)}
158
- type="glass"
159
- rounded="all"
160
- .elevation=${3}
161
- class="${e} overflow-hidden rounded-2xl"
158
+ type="container"
159
+ class="${e} overflow-hidden rounded-2xl shadow-md"
162
160
  style=${t}
163
161
  aria-expanded=${this.open}
164
162
  >