@mhmo91/schmancy 0.10.35 → 0.10.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/custom-elements.json +1165 -1109
  2. package/dist/SchmancyElement-BHfQg3Tj.cjs +2 -0
  3. package/dist/SchmancyElement-BHfQg3Tj.cjs.map +1 -0
  4. package/dist/SchmancyElement-CDT2q1lA.js +284 -0
  5. package/dist/SchmancyElement-CDT2q1lA.js.map +1 -0
  6. package/dist/agent/schmancy.agent.js +3488 -3290
  7. package/dist/agent/schmancy.agent.js.map +1 -1
  8. package/dist/agent/schmancy.manifest.json +335 -275
  9. package/dist/{area-DviXdbDx.js → area-KtULlxuA.js} +2 -2
  10. package/dist/{area-DviXdbDx.js.map → area-KtULlxuA.js.map} +1 -1
  11. package/dist/{area-CTSTgjlx.cjs → area-fdKhYB6T.cjs} +1 -1
  12. package/dist/{area-CTSTgjlx.cjs.map → area-fdKhYB6T.cjs.map} +1 -1
  13. package/dist/area.cjs +1 -1
  14. package/dist/area.js +1 -1
  15. package/dist/{audio-Q9oB_cQR.cjs → audio-CUMAv9D_.cjs} +1 -1
  16. package/dist/{audio-Q9oB_cQR.cjs.map → audio-CUMAv9D_.cjs.map} +1 -1
  17. package/dist/{audio-DFYoaw0M.js → audio-zIJVTo_V.js} +1 -1
  18. package/dist/{audio-DFYoaw0M.js.map → audio-zIJVTo_V.js.map} +1 -1
  19. package/dist/audio.cjs +1 -1
  20. package/dist/audio.js +2 -2
  21. package/dist/{autocomplete-DmLXJr7C.cjs → autocomplete-DEZk6wBD.cjs} +1 -1
  22. package/dist/{autocomplete-DmLXJr7C.cjs.map → autocomplete-DEZk6wBD.cjs.map} +1 -1
  23. package/dist/{autocomplete-BDvuma6D.js → autocomplete-DIScyo8Q.js} +3 -3
  24. package/dist/{autocomplete-BDvuma6D.js.map → autocomplete-DIScyo8Q.js.map} +1 -1
  25. package/dist/autocomplete.cjs +1 -1
  26. package/dist/autocomplete.js +1 -1
  27. package/dist/avatar.cjs +1 -1
  28. package/dist/avatar.js +3 -3
  29. package/dist/badge.cjs +1 -1
  30. package/dist/badge.js +1 -1
  31. package/dist/{boat-lr7MPZ7H.js → boat-BHPqSqJd.js} +67 -83
  32. package/dist/boat-BHPqSqJd.js.map +1 -0
  33. package/dist/boat-OBZ77exO.cjs +34 -0
  34. package/dist/boat-OBZ77exO.cjs.map +1 -0
  35. package/dist/boat.cjs +1 -1
  36. package/dist/boat.js +1 -1
  37. package/dist/breadcrumb.cjs +1 -1
  38. package/dist/breadcrumb.js +2 -2
  39. package/dist/{busy-CgzZbGfx.cjs → busy-BJNsKSCM.cjs} +1 -1
  40. package/dist/{busy-CgzZbGfx.cjs.map → busy-BJNsKSCM.cjs.map} +1 -1
  41. package/dist/{busy-DgQ4ux5N.js → busy-Dut78y4L.js} +2 -2
  42. package/dist/{busy-DgQ4ux5N.js.map → busy-Dut78y4L.js.map} +1 -1
  43. package/dist/busy.cjs +1 -1
  44. package/dist/busy.js +1 -1
  45. package/dist/{button-DFvR1iXX.cjs → button-DzlHLjWO.cjs} +1 -1
  46. package/dist/{button-DFvR1iXX.cjs.map → button-DzlHLjWO.cjs.map} +1 -1
  47. package/dist/{button-qbN1muQ0.js → button-kcpPQavY.js} +2 -2
  48. package/dist/{button-qbN1muQ0.js.map → button-kcpPQavY.js.map} +1 -1
  49. package/dist/button.cjs +4 -4
  50. package/dist/button.cjs.map +1 -1
  51. package/dist/button.js +16 -22
  52. package/dist/button.js.map +1 -1
  53. package/dist/{card-D_GlwZ5q.cjs → card-BLxPLqdQ.cjs} +1 -1
  54. package/dist/{card-D_GlwZ5q.cjs.map → card-BLxPLqdQ.cjs.map} +1 -1
  55. package/dist/{card-DAbr-7Vy.js → card-DxSKxCid.js} +2 -2
  56. package/dist/{card-DAbr-7Vy.js.map → card-DxSKxCid.js.map} +1 -1
  57. package/dist/card.cjs +1 -1
  58. package/dist/card.js +1 -1
  59. package/dist/{checkbox-BNORaxMF.js → checkbox-B1wiM3Dv.js} +2 -2
  60. package/dist/{checkbox-BNORaxMF.js.map → checkbox-B1wiM3Dv.js.map} +1 -1
  61. package/dist/{checkbox-BUY_uc_r.cjs → checkbox-BCLkhp5G.cjs} +1 -1
  62. package/dist/{checkbox-BUY_uc_r.cjs.map → checkbox-BCLkhp5G.cjs.map} +1 -1
  63. package/dist/checkbox.cjs +1 -1
  64. package/dist/checkbox.js +1 -1
  65. package/dist/{chips-CXZ4dJCK.cjs → chips-C9dS1WKn.cjs} +44 -33
  66. package/dist/chips-C9dS1WKn.cjs.map +1 -0
  67. package/dist/{chips-Dg6Lk6BT.js → chips-vWmwqQed.js} +145 -122
  68. package/dist/chips-vWmwqQed.js.map +1 -0
  69. package/dist/chips.cjs +1 -1
  70. package/dist/chips.js +2 -2
  71. package/dist/connectivity.cjs +1 -1
  72. package/dist/connectivity.js +3 -3
  73. package/dist/content-drawer.cjs +1 -1
  74. package/dist/content-drawer.js +1 -1
  75. package/dist/{date-range-C-_be3_E.cjs → date-range-BV6HuvLw.cjs} +25 -19
  76. package/dist/date-range-BV6HuvLw.cjs.map +1 -0
  77. package/dist/{date-range-BU6WX7d5.js → date-range-D3ge1b4c.js} +129 -137
  78. package/dist/date-range-D3ge1b4c.js.map +1 -0
  79. package/dist/{date-range-inline-DJtUmHKF.cjs → date-range-inline-DpYgdLRv.cjs} +1 -1
  80. package/dist/{date-range-inline-DJtUmHKF.cjs.map → date-range-inline-DpYgdLRv.cjs.map} +1 -1
  81. package/dist/{date-range-inline-7o7xtVIu.js → date-range-inline-DuWQaWps.js} +2 -2
  82. package/dist/{date-range-inline-7o7xtVIu.js.map → date-range-inline-DuWQaWps.js.map} +1 -1
  83. package/dist/date-range-inline.cjs +1 -1
  84. package/dist/date-range-inline.js +1 -1
  85. package/dist/date-range.cjs +1 -1
  86. package/dist/date-range.js +1 -1
  87. package/dist/delay.cjs +1 -1
  88. package/dist/delay.js +2 -2
  89. package/dist/{details-EfbDPVEo.js → details-C-GZaq3j.js} +2 -2
  90. package/dist/{details-EfbDPVEo.js.map → details-C-GZaq3j.js.map} +1 -1
  91. package/dist/{details-Bs0MyyvF.cjs → details-Dp5rLIWk.cjs} +1 -1
  92. package/dist/{details-Bs0MyyvF.cjs.map → details-Dp5rLIWk.cjs.map} +1 -1
  93. package/dist/details.cjs +1 -1
  94. package/dist/details.js +1 -1
  95. package/dist/{directives-fLwDj6b0.cjs → directives-D_l1E5H6.cjs} +3 -3
  96. package/dist/directives-D_l1E5H6.cjs.map +1 -0
  97. package/dist/{directives-zi1Mm2er.js → directives-DyS51FUh.js} +37 -21
  98. package/dist/directives-DyS51FUh.js.map +1 -0
  99. package/dist/directives.cjs +1 -1
  100. package/dist/directives.js +2 -2
  101. package/dist/{divider-CdIsWZrM.cjs → divider-CBnAmHMZ.cjs} +1 -1
  102. package/dist/{divider-CdIsWZrM.cjs.map → divider-CBnAmHMZ.cjs.map} +1 -1
  103. package/dist/{divider-CEPfrIwe.js → divider-nQffE0AD.js} +2 -2
  104. package/dist/{divider-CEPfrIwe.js.map → divider-nQffE0AD.js.map} +1 -1
  105. package/dist/divider.cjs +1 -1
  106. package/dist/divider.js +1 -1
  107. package/dist/dropdown.cjs +1 -1
  108. package/dist/dropdown.js +2 -2
  109. package/dist/{expand-g1vqqUp1.js → expand-DvTb-UPR.js} +3 -3
  110. package/dist/{expand-g1vqqUp1.js.map → expand-DvTb-UPR.js.map} +1 -1
  111. package/dist/{expand--at1k3qo.cjs → expand-mlP_3XWz.cjs} +1 -1
  112. package/dist/{expand--at1k3qo.cjs.map → expand-mlP_3XWz.cjs.map} +1 -1
  113. package/dist/expand.cjs +1 -1
  114. package/dist/expand.js +1 -1
  115. package/dist/fab.cjs +77 -0
  116. package/dist/fab.cjs.map +1 -0
  117. package/dist/fab.js +151 -0
  118. package/dist/fab.js.map +1 -0
  119. package/dist/{float-DxVzgI9o.js → float-C-Ko0Le3.js} +2 -2
  120. package/dist/{float-DxVzgI9o.js.map → float-C-Ko0Le3.js.map} +1 -1
  121. package/dist/{float-P9HukAm-.cjs → float-C17xgMT1.cjs} +1 -1
  122. package/dist/{float-P9HukAm-.cjs.map → float-C17xgMT1.cjs.map} +1 -1
  123. package/dist/float.cjs +1 -1
  124. package/dist/float.js +1 -1
  125. package/dist/{form-ByYhXe1p.cjs → form-CwPHcQYB.cjs} +1 -1
  126. package/dist/{form-ByYhXe1p.cjs.map → form-CwPHcQYB.cjs.map} +1 -1
  127. package/dist/{form-CqLaozHp.js → form-DA0hUu2h.js} +3 -3
  128. package/dist/{form-CqLaozHp.js.map → form-DA0hUu2h.js.map} +1 -1
  129. package/dist/form.cjs +6 -6
  130. package/dist/form.cjs.map +1 -1
  131. package/dist/form.js +25 -23
  132. package/dist/form.js.map +1 -1
  133. package/dist/handover/agent-runtime-followups.md +1 -1
  134. package/dist/handover/agent-runtime-v1.md +3 -3
  135. package/dist/{icons-CkphcMp6.js → icons-C6UfxmHZ.js} +2 -2
  136. package/dist/{icons-CkphcMp6.js.map → icons-C6UfxmHZ.js.map} +1 -1
  137. package/dist/{icons-DYtiRU5V.cjs → icons-CW3-oMSb.cjs} +1 -1
  138. package/dist/{icons-DYtiRU5V.cjs.map → icons-CW3-oMSb.cjs.map} +1 -1
  139. package/dist/icons.cjs +1 -1
  140. package/dist/icons.js +1 -1
  141. package/dist/{iframe-CjqJksl8.js → iframe-BTjZfYyh.js} +2 -2
  142. package/dist/{iframe-CjqJksl8.js.map → iframe-BTjZfYyh.js.map} +1 -1
  143. package/dist/{iframe-C3trkP8q.cjs → iframe-wuYT2xFz.cjs} +1 -1
  144. package/dist/{iframe-C3trkP8q.cjs.map → iframe-wuYT2xFz.cjs.map} +1 -1
  145. package/dist/iframe.cjs +1 -1
  146. package/dist/iframe.js +1 -1
  147. package/dist/index.cjs +1 -1
  148. package/dist/index.js +57 -56
  149. package/dist/{input-CG51zDVh.js → input-B_4g2ulO.js} +2 -2
  150. package/dist/{input-CG51zDVh.js.map → input-B_4g2ulO.js.map} +1 -1
  151. package/dist/{input-DuavpwNL.cjs → input-BrDiIT60.cjs} +1 -1
  152. package/dist/{input-DuavpwNL.cjs.map → input-BrDiIT60.cjs.map} +1 -1
  153. package/dist/{input-chip-57tgNXKT.cjs → input-chip-B-XWh4aE.cjs} +1 -1
  154. package/dist/input-chip-B-XWh4aE.cjs.map +1 -0
  155. package/dist/{input-chip-C6Lq1927.js → input-chip-BlWhOruv.js} +2 -2
  156. package/dist/input-chip-BlWhOruv.js.map +1 -0
  157. package/dist/input.cjs +1 -1
  158. package/dist/input.js +1 -1
  159. package/dist/json.cjs +1 -1
  160. package/dist/json.js +3 -3
  161. package/dist/kbd.cjs +1 -1
  162. package/dist/kbd.js +2 -2
  163. package/dist/{layout-6ipbiWTl.cjs → layout-BhyIcEVu.cjs} +1 -1
  164. package/dist/{layout-6ipbiWTl.cjs.map → layout-BhyIcEVu.cjs.map} +1 -1
  165. package/dist/{layout-D4IOwx7p.js → layout-Dxit9enO.js} +1 -1
  166. package/dist/{layout-D4IOwx7p.js.map → layout-Dxit9enO.js.map} +1 -1
  167. package/dist/layout.cjs +1 -1
  168. package/dist/layout.js +2 -2
  169. package/dist/{lightbox-H8pVWGMX.cjs → lightbox-CVBogswK.cjs} +1 -1
  170. package/dist/{lightbox-H8pVWGMX.cjs.map → lightbox-CVBogswK.cjs.map} +1 -1
  171. package/dist/{lightbox-CsyO2XSr.js → lightbox-D85XAAuC.js} +2 -2
  172. package/dist/{lightbox-CsyO2XSr.js.map → lightbox-D85XAAuC.js.map} +1 -1
  173. package/dist/lightbox.cjs +1 -1
  174. package/dist/lightbox.js +1 -1
  175. package/dist/{list-BAwH0pQW.js → list-DOF_yVn5.js} +2 -2
  176. package/dist/{list-BAwH0pQW.js.map → list-DOF_yVn5.js.map} +1 -1
  177. package/dist/{list-Bs9m8kw7.cjs → list-nVjLskgx.cjs} +1 -1
  178. package/dist/{list-Bs9m8kw7.cjs.map → list-nVjLskgx.cjs.map} +1 -1
  179. package/dist/list.cjs +1 -1
  180. package/dist/list.js +1 -1
  181. package/dist/{menu-BMcGzj1h.cjs → menu-DqmNjLgY.cjs} +1 -1
  182. package/dist/{menu-BMcGzj1h.cjs.map → menu-DqmNjLgY.cjs.map} +1 -1
  183. package/dist/{menu-tQVARVaC.js → menu-QrAK5Uu9.js} +3 -3
  184. package/dist/{menu-tQVARVaC.js.map → menu-QrAK5Uu9.js.map} +1 -1
  185. package/dist/menu.cjs +1 -1
  186. package/dist/menu.js +1 -1
  187. package/dist/{mixins-Bp0wIHg2.js → mixins-De1zjyhy.js} +1 -1
  188. package/dist/{mixins-Bp0wIHg2.js.map → mixins-De1zjyhy.js.map} +1 -1
  189. package/dist/{mixins-CGXSzZc7.cjs → mixins-DxHpyMHA.cjs} +1 -1
  190. package/dist/{mixins-CGXSzZc7.cjs.map → mixins-DxHpyMHA.cjs.map} +1 -1
  191. package/dist/mixins.cjs +1 -1
  192. package/dist/mixins.js +2 -2
  193. package/dist/nav-drawer.cjs +1 -1
  194. package/dist/nav-drawer.js +1 -1
  195. package/dist/navigation-bar.cjs +1 -1
  196. package/dist/navigation-bar.js +1 -1
  197. package/dist/navigation-rail.cjs +1 -1
  198. package/dist/navigation-rail.js +2 -2
  199. package/dist/{notification-D1tX2nx5.js → notification-BtAK7NK8.js} +4 -4
  200. package/dist/{notification-D1tX2nx5.js.map → notification-BtAK7NK8.js.map} +1 -1
  201. package/dist/{notification-Bz00zdpV.cjs → notification-DYzbUb5C.cjs} +1 -1
  202. package/dist/{notification-Bz00zdpV.cjs.map → notification-DYzbUb5C.cjs.map} +1 -1
  203. package/dist/notification.cjs +1 -1
  204. package/dist/notification.js +1 -1
  205. package/dist/{option-BpGV8Apj.js → option-DHwA0miA.js} +2 -2
  206. package/dist/{option-BpGV8Apj.js.map → option-DHwA0miA.js.map} +1 -1
  207. package/dist/{option-BnybLEDO.cjs → option-DnSPa8ro.cjs} +1 -1
  208. package/dist/{option-BnybLEDO.cjs.map → option-DnSPa8ro.cjs.map} +1 -1
  209. package/dist/option.cjs +1 -1
  210. package/dist/option.js +1 -1
  211. package/dist/{overlay-UQR2Dy3u.cjs → overlay-BVkqZmoS.cjs} +5 -5
  212. package/dist/overlay-BVkqZmoS.cjs.map +1 -0
  213. package/dist/{overlay-BpNhd74N.js → overlay-Del1sBEB.js} +108 -108
  214. package/dist/overlay-Del1sBEB.js.map +1 -0
  215. package/dist/overlay.cjs +1 -1
  216. package/dist/{overlay.confirm-body-CVDtVk5X.cjs → overlay.confirm-body-BV9umTAl.cjs} +1 -1
  217. package/dist/{overlay.confirm-body-CVDtVk5X.cjs.map → overlay.confirm-body-BV9umTAl.cjs.map} +1 -1
  218. package/dist/{overlay.confirm-body-BHcXu5Wk.js → overlay.confirm-body-DSONXUzl.js} +6 -6
  219. package/dist/{overlay.confirm-body-BHcXu5Wk.js.map → overlay.confirm-body-DSONXUzl.js.map} +1 -1
  220. package/dist/overlay.js +3 -3
  221. package/dist/{overlay.service-DTE6NwIM.js → overlay.service-BTp5Oq7f.js} +2 -2
  222. package/dist/{overlay.service-DTE6NwIM.js.map → overlay.service-BTp5Oq7f.js.map} +1 -1
  223. package/dist/{overlay.service-C8RsQzgM.cjs → overlay.service-XLlrsSdA.cjs} +1 -1
  224. package/dist/{overlay.service-C8RsQzgM.cjs.map → overlay.service-XLlrsSdA.cjs.map} +1 -1
  225. package/dist/{progress-gbIALDRs.cjs → progress-DUbTL9g9.cjs} +1 -1
  226. package/dist/{progress-gbIALDRs.cjs.map → progress-DUbTL9g9.cjs.map} +1 -1
  227. package/dist/{progress-CAKsxp29.js → progress-DYA83CFU.js} +2 -2
  228. package/dist/{progress-CAKsxp29.js.map → progress-DYA83CFU.js.map} +1 -1
  229. package/dist/progress.cjs +1 -1
  230. package/dist/progress.js +1 -1
  231. package/dist/{radio-group-CfJ5DtI4.cjs → radio-group-B-ORNtvR.cjs} +1 -1
  232. package/dist/{radio-group-CfJ5DtI4.cjs.map → radio-group-B-ORNtvR.cjs.map} +1 -1
  233. package/dist/{radio-group-otyvZvUk.js → radio-group-DxX0iJBo.js} +2 -2
  234. package/dist/{radio-group-otyvZvUk.js.map → radio-group-DxX0iJBo.js.map} +1 -1
  235. package/dist/radio-group.cjs +1 -1
  236. package/dist/radio-group.js +1 -1
  237. package/dist/range.cjs +1 -1
  238. package/dist/range.js +2 -2
  239. package/dist/{select-81jniVTs.cjs → select-B9uj_u-s.cjs} +1 -1
  240. package/dist/{select-81jniVTs.cjs.map → select-B9uj_u-s.cjs.map} +1 -1
  241. package/dist/{select-9vXx1fhr.js → select-C7gkA-ab.js} +3 -3
  242. package/dist/{select-9vXx1fhr.js.map → select-C7gkA-ab.js.map} +1 -1
  243. package/dist/select.cjs +1 -1
  244. package/dist/select.js +1 -1
  245. package/dist/skeleton.cjs +1 -1
  246. package/dist/skeleton.js +2 -2
  247. package/dist/skills/INDEX.md +1 -1
  248. package/dist/skills/SKILL.md +20 -18
  249. package/dist/skills/boat.md +21 -15
  250. package/dist/skills/fab.md +75 -0
  251. package/dist/skills/schmancy/INDEX.md +1 -1
  252. package/dist/skills/schmancy/SKILL.md +20 -18
  253. package/dist/skills/schmancy/boat.md +21 -15
  254. package/dist/skills/schmancy/fab.md +75 -0
  255. package/dist/skills/schmancy/steps.md +68 -34
  256. package/dist/skills/schmancy/theme.md +1 -1
  257. package/dist/skills/steps.md +68 -34
  258. package/dist/skills/theme.md +1 -1
  259. package/dist/slider.cjs +1 -1
  260. package/dist/slider.js +2 -2
  261. package/dist/{sound.service-CmIw63aM.cjs → sound.service-C7FDY_yD.cjs} +1 -1
  262. package/dist/{sound.service-CmIw63aM.cjs.map → sound.service-C7FDY_yD.cjs.map} +1 -1
  263. package/dist/{sound.service-D3ZSq1Kj.js → sound.service-O0232os6.js} +1 -1
  264. package/dist/{sound.service-D3ZSq1Kj.js.map → sound.service-O0232os6.js.map} +1 -1
  265. package/dist/{splash-screen-C5KAWXvA.cjs → splash-screen-DIS4odDr.cjs} +1 -1
  266. package/dist/{splash-screen-C5KAWXvA.cjs.map → splash-screen-DIS4odDr.cjs.map} +1 -1
  267. package/dist/{splash-screen-BOjrmGLk.js → splash-screen-jfE47xl0.js} +2 -2
  268. package/dist/{splash-screen-BOjrmGLk.js.map → splash-screen-jfE47xl0.js.map} +1 -1
  269. package/dist/splash-screen.cjs +1 -1
  270. package/dist/splash-screen.js +1 -1
  271. package/dist/{src-C5g3p1J5.js → src-BP3h-9d9.js} +36 -35
  272. package/dist/{src-C5g3p1J5.js.map → src-BP3h-9d9.js.map} +1 -1
  273. package/dist/{src-qzUpLbje.cjs → src-Um_pzb-U.cjs} +1 -1
  274. package/dist/{src-qzUpLbje.cjs.map → src-Um_pzb-U.cjs.map} +1 -1
  275. package/dist/{state-Cex3rmx2.cjs → state-Bj0M9a6T.cjs} +1 -1
  276. package/dist/{state-Cex3rmx2.cjs.map → state-Bj0M9a6T.cjs.map} +1 -1
  277. package/dist/{state-CWBRTSvE.js → state-DscWQpoM.js} +1 -1
  278. package/dist/{state-CWBRTSvE.js.map → state-DscWQpoM.js.map} +1 -1
  279. package/dist/state.cjs +1 -1
  280. package/dist/state.js +2 -2
  281. package/dist/steps.cjs +35 -19
  282. package/dist/steps.cjs.map +1 -1
  283. package/dist/steps.js +96 -73
  284. package/dist/steps.js.map +1 -1
  285. package/dist/{surface-9S5scTsD.js → surface-B4Wn4SOO.js} +2 -2
  286. package/dist/{surface-9S5scTsD.js.map → surface-B4Wn4SOO.js.map} +1 -1
  287. package/dist/{surface-PfiejLuw.cjs → surface-DRq6cVW6.cjs} +1 -1
  288. package/dist/{surface-PfiejLuw.cjs.map → surface-DRq6cVW6.cjs.map} +1 -1
  289. package/dist/surface.cjs +1 -1
  290. package/dist/surface.js +1 -1
  291. package/dist/switch.cjs +1 -1
  292. package/dist/switch.js +2 -2
  293. package/dist/table.cjs +1 -1
  294. package/dist/table.js +2 -2
  295. package/dist/{tabs-uYvb1P06.cjs → tabs-Ca_fbHPW.cjs} +1 -1
  296. package/dist/{tabs-uYvb1P06.cjs.map → tabs-Ca_fbHPW.cjs.map} +1 -1
  297. package/dist/{tabs-BBOjAmgG.js → tabs-CnQPo-XS.js} +2 -2
  298. package/dist/{tabs-BBOjAmgG.js.map → tabs-CnQPo-XS.js.map} +1 -1
  299. package/dist/tabs.cjs +1 -1
  300. package/dist/tabs.js +1 -1
  301. package/dist/teleport.cjs +1 -1
  302. package/dist/teleport.js +1 -1
  303. package/dist/{textarea-QzSj8Dkl.js → textarea-BvqENhTW.js} +2 -2
  304. package/dist/{textarea-QzSj8Dkl.js.map → textarea-BvqENhTW.js.map} +1 -1
  305. package/dist/{textarea-YPHX4g7Y.cjs → textarea-qr7oL8oU.cjs} +1 -1
  306. package/dist/{textarea-YPHX4g7Y.cjs.map → textarea-qr7oL8oU.cjs.map} +1 -1
  307. package/dist/textarea.cjs +1 -1
  308. package/dist/textarea.js +1 -1
  309. package/dist/theme-BSwJ2YZo.cjs +181 -0
  310. package/dist/{theme-iKUaS9JB.cjs.map → theme-BSwJ2YZo.cjs.map} +1 -1
  311. package/dist/{theme-C2Mp-VGt.js → theme-BV0EzHQ1.js} +6 -5
  312. package/dist/{theme-C2Mp-VGt.js.map → theme-BV0EzHQ1.js.map} +1 -1
  313. package/dist/{theme-button-CJmhxfMe.cjs → theme-button-C6fpUzPM.cjs} +1 -1
  314. package/dist/{theme-button-CJmhxfMe.cjs.map → theme-button-C6fpUzPM.cjs.map} +1 -1
  315. package/dist/{theme-button-DGWAXhzd.js → theme-button-O_xNCgI7.js} +2 -2
  316. package/dist/{theme-button-DGWAXhzd.js.map → theme-button-O_xNCgI7.js.map} +1 -1
  317. package/dist/theme-button.cjs +1 -1
  318. package/dist/theme-button.js +1 -1
  319. package/dist/theme.cjs +1 -1
  320. package/dist/theme.js +3 -3
  321. package/dist/{theme.service-hc4N-1Oz.js → theme.service-DwLhhOmP.js} +1 -1
  322. package/dist/{theme.service-hc4N-1Oz.js.map → theme.service-DwLhhOmP.js.map} +1 -1
  323. package/dist/{theme.service-p61RsJBF.cjs → theme.service-kn9MC025.cjs} +1 -1
  324. package/dist/{theme.service-p61RsJBF.cjs.map → theme.service-kn9MC025.cjs.map} +1 -1
  325. package/dist/tree.cjs +1 -1
  326. package/dist/tree.js +2 -2
  327. package/dist/{typography-DwV0sqht.js → typography-Dtdooaic.js} +2 -2
  328. package/dist/{typography-DwV0sqht.js.map → typography-Dtdooaic.js.map} +1 -1
  329. package/dist/{typography-Bdt8RlX2.cjs → typography-opFYuUYS.cjs} +1 -1
  330. package/dist/{typography-Bdt8RlX2.cjs.map → typography-opFYuUYS.cjs.map} +1 -1
  331. package/dist/typography.cjs +1 -1
  332. package/dist/typography.js +1 -1
  333. package/dist/visually-hidden.cjs +1 -1
  334. package/dist/visually-hidden.js +2 -2
  335. package/dist/{window-D2WfvNng.cjs → window-BSAemI9J.cjs} +1 -1
  336. package/dist/{window-D2WfvNng.cjs.map → window-BSAemI9J.cjs.map} +1 -1
  337. package/dist/{window-n4jN60B_.js → window-ConcHirJ.js} +3 -3
  338. package/dist/{window-n4jN60B_.js.map → window-ConcHirJ.js.map} +1 -1
  339. package/dist/window.cjs +1 -1
  340. package/dist/window.js +1 -1
  341. package/package.json +1 -1
  342. package/skills/schmancy/INDEX.md +1 -1
  343. package/skills/schmancy/SKILL.md +20 -18
  344. package/skills/schmancy/boat.md +21 -15
  345. package/skills/schmancy/fab.md +75 -0
  346. package/skills/schmancy/steps.md +68 -34
  347. package/skills/schmancy/theme.md +1 -1
  348. package/src/CLAUDE.md +22 -16
  349. package/src/boat/boat.test.ts +130 -0
  350. package/src/boat/boat.ts +144 -121
  351. package/src/button/icon-button.ts +18 -30
  352. package/src/chips/assist-chip.ts +2 -263
  353. package/src/chips/chips.ts +2 -259
  354. package/src/chips/filter-chip.ts +2 -255
  355. package/src/chips/index.ts +2 -5
  356. package/src/chips/input-chip.ts +2 -413
  357. package/src/chips/suggestion-chip.ts +2 -266
  358. package/src/directives/fill.ts +28 -5
  359. package/src/directives/reveal.ts +192 -118
  360. package/src/fab/fab.test.ts +101 -0
  361. package/src/fab/fab.ts +226 -0
  362. package/src/fab/index.ts +1 -0
  363. package/src/form/fields/chips/assist-chip.ts +263 -0
  364. package/src/form/fields/chips/chips.ts +234 -0
  365. package/src/form/fields/chips/filter-chip.ts +255 -0
  366. package/src/form/fields/chips/index.ts +5 -0
  367. package/src/form/fields/chips/input-chip.ts +413 -0
  368. package/src/form/fields/chips/suggestion-chip.ts +266 -0
  369. package/src/form/fields/date-range/date-range.test.ts +44 -0
  370. package/src/form/fields/date-range/date-range.ts +103 -97
  371. package/src/form/fields/index.ts +1 -0
  372. package/src/index.ts +2 -1
  373. package/src/overlay/overlay.animations.ts +2 -3
  374. package/src/overlay/overlay.component.ts +8 -4
  375. package/src/overlay/overlay.types.ts +14 -2
  376. package/src/steps/index.ts +1 -1
  377. package/src/steps/schmancy-step.ts +91 -65
  378. package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
  379. package/src/steps/steps.context.ts +5 -4
  380. package/src/steps/steps.test.ts +120 -0
  381. package/src/theme/theme.component.ts +1 -0
  382. package/src/theme/theme.style.css +3 -0
  383. package/types/src/boat/boat.d.ts +27 -9
  384. package/types/src/boat/boat.test.d.ts +2 -0
  385. package/types/src/button/icon-button.d.ts +3 -2
  386. package/types/src/chips/assist-chip.d.ts +1 -47
  387. package/types/src/chips/chips.d.ts +1 -43
  388. package/types/src/chips/filter-chip.d.ts +1 -67
  389. package/types/src/chips/index.d.ts +1 -5
  390. package/types/src/chips/input-chip.d.ts +1 -82
  391. package/types/src/chips/suggestion-chip.d.ts +1 -52
  392. package/types/src/directives/reveal.d.ts +15 -5
  393. package/types/src/fab/fab.d.ts +80 -0
  394. package/types/src/fab/fab.test.d.ts +2 -0
  395. package/types/src/fab/index.d.ts +1 -0
  396. package/types/src/form/fields/chips/assist-chip.d.ts +47 -0
  397. package/types/src/form/fields/chips/chips.d.ts +35 -0
  398. package/types/src/form/fields/chips/filter-chip.d.ts +67 -0
  399. package/types/src/form/fields/chips/index.d.ts +5 -0
  400. package/types/src/form/fields/chips/input-chip.d.ts +82 -0
  401. package/types/src/form/fields/chips/suggestion-chip.d.ts +52 -0
  402. package/types/src/form/fields/date-range/date-range.d.ts +5 -10
  403. package/types/src/form/fields/index.d.ts +1 -0
  404. package/types/src/index.d.ts +2 -1
  405. package/types/src/overlay/overlay.component.d.ts +1 -0
  406. package/types/src/overlay/overlay.types.d.ts +12 -2
  407. package/types/src/steps/index.d.ts +1 -1
  408. package/types/src/steps/schmancy-step.d.ts +8 -23
  409. package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
  410. package/types/src/steps/steps.context.d.ts +2 -1
  411. package/types/src/steps/steps.test.d.ts +2 -0
  412. package/types/src/theme/theme.component.d.ts +1 -0
  413. package/dist/SchmancyElement-CA0Wqt8m.js +0 -284
  414. package/dist/SchmancyElement-CA0Wqt8m.js.map +0 -1
  415. package/dist/SchmancyElement-CYIif26I.cjs +0 -2
  416. package/dist/SchmancyElement-CYIif26I.cjs.map +0 -1
  417. package/dist/boat-Vqjgo10B.cjs +0 -33
  418. package/dist/boat-Vqjgo10B.cjs.map +0 -1
  419. package/dist/boat-lr7MPZ7H.js.map +0 -1
  420. package/dist/chips-CXZ4dJCK.cjs.map +0 -1
  421. package/dist/chips-Dg6Lk6BT.js.map +0 -1
  422. package/dist/date-range-BU6WX7d5.js.map +0 -1
  423. package/dist/date-range-C-_be3_E.cjs.map +0 -1
  424. package/dist/directives-fLwDj6b0.cjs.map +0 -1
  425. package/dist/directives-zi1Mm2er.js.map +0 -1
  426. package/dist/input-chip-57tgNXKT.cjs.map +0 -1
  427. package/dist/input-chip-C6Lq1927.js.map +0 -1
  428. package/dist/overlay-BpNhd74N.js.map +0 -1
  429. package/dist/overlay-UQR2Dy3u.cjs.map +0 -1
  430. package/dist/theme-iKUaS9JB.cjs +0 -181
@@ -0,0 +1,234 @@
1
+ import { SchmancyFormField } from '@mixins/formField.mixin'
2
+ import { css, html, nothing, PropertyValues } from 'lit'
3
+ import { customElement, property, queryAssignedElements } from 'lit/decorators.js'
4
+ import { ifDefined } from 'lit/directives/if-defined.js'
5
+ import { when } from 'lit/directives/when.js'
6
+ import { BehaviorSubject, combineLatest } from 'rxjs'
7
+ import { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators'
8
+ import { fullWidth } from '../../../directives/layout'
9
+ import type { FilterChipChangeEvent as SchmancyChipChangeEvent } from './filter-chip'
10
+ import { SchmancyFilterChip as SchmancyChip } from './filter-chip'
11
+
12
+ export type SchmancyChipsChangeEvent = CustomEvent<{ value: string | string[] }>
13
+
14
+ @customElement('schmancy-chips')
15
+ export default class SchmancyChips extends SchmancyFormField(css`
16
+ :host {
17
+ display: block;
18
+ height: fit-content;
19
+ width: fit-content;
20
+ }
21
+ `) {
22
+ // FACE wiring (formAssociated, internals, attachInternals) comes from
23
+ // SchmancyFormField. Same for: name, required, disabled, validationMessage,
24
+ // validateOn, touched/dirty/pristine/submitted, markTouched/markSubmitted,
25
+ // formResetCallback, formDisabledCallback, FIELD_CONNECT_EVENT dispatch,
26
+ // emitChange(), checkValidity(), reportValidity(), setCustomValidity().
27
+
28
+ /** Whether multiple chips can be selected simultaneously. */
29
+ @property({ type: Boolean, reflect: true })
30
+ multi: boolean = false
31
+
32
+ // Override `value` with the chips-specific type and a custom getter/setter
33
+ // pair backed by reactive subjects.
34
+ @property({ reflect: false })
35
+ override get value(): string | string[] {
36
+ return this.multi
37
+ ? (this.values$?.value ?? [])
38
+ : (this.value$?.value ?? '')
39
+ }
40
+ override set value(v: string | string[]) {
41
+ const old = this.value
42
+ if (this.multi) {
43
+ const arr = Array.isArray(v)
44
+ ? v
45
+ : v ? String(v).split(',').map(s => s.trim()).filter(Boolean) : []
46
+ this.values$?.next(arr)
47
+ } else {
48
+ this.value$?.next(Array.isArray(v) ? (v[0] ?? '') : String(v ?? ''))
49
+ }
50
+ this.requestUpdate('value', old)
51
+ }
52
+
53
+ /** Typed convenience alias for multi-mode consumers. */
54
+ get values(): string[] {
55
+ return [...(this.values$?.value ?? [])]
56
+ }
57
+ set values(v: string[]) {
58
+ this.values$?.next(Array.isArray(v) ? [...v] : [])
59
+ }
60
+
61
+ @property({ type: Boolean, reflect: true })
62
+ wrap: boolean = false
63
+
64
+ @property({ type: String, reflect: true })
65
+ justify: 'start' | 'center' | 'end' = 'start'
66
+
67
+ @queryAssignedElements({
68
+ selector:
69
+ 'schmancy-chip, schmancy-filter-chip, schmancy-assist-chip, schmancy-input-chip, schmancy-suggestion-chip',
70
+ flatten: true,
71
+ })
72
+ chips!: (SchmancyChip | HTMLElement)[]
73
+
74
+ // Two internal streams — one for single mode, one for multi mode.
75
+ private value$ = new BehaviorSubject<string>('')
76
+ private values$ = new BehaviorSubject<string[]>([])
77
+
78
+ protected override willUpdate(changedProps: PropertyValues): void {
79
+ super.willUpdate(changedProps)
80
+ // super handles the string path; fix the array path for multi mode.
81
+ if (changedProps.has('value') && Array.isArray(this.value) && this.name) {
82
+ const fd = new FormData()
83
+ this.value.forEach(v => fd.append(this.name, v))
84
+ this.internals?.setFormValue(fd)
85
+ }
86
+ }
87
+
88
+ override checkValidity(): boolean {
89
+ if (this.required && Array.isArray(this.value) && this.value.length === 0) {
90
+ const msg = this.errorMessages?.valueMissing ?? 'This field is required'
91
+ this.internals?.setValidity({ valueMissing: true }, msg)
92
+ if (this.submitted || this.dirty || this.touched || this.validateOn === 'always') {
93
+ this.error = true
94
+ this.validationMessage = msg
95
+ }
96
+ return false
97
+ }
98
+ return super.checkValidity()
99
+ }
100
+
101
+ override connectedCallback() {
102
+ super.connectedCallback()
103
+
104
+ // Sync BehaviorSubjects with whatever value was set before connection.
105
+ if (this.multi) {
106
+ const cur = this.value
107
+ this.values$.next(Array.isArray(cur) ? cur : [])
108
+ } else {
109
+ const cur = this.value
110
+ this.value$.next(Array.isArray(cur) ? (cur[0] ?? '') : String(cur ?? ''))
111
+ }
112
+
113
+ combineLatest([
114
+ this.value$.pipe(distinctUntilChanged()),
115
+ this.values$.pipe(
116
+ distinctUntilChanged((prev, curr) => prev.length === curr.length && prev.every((v, i) => v === curr[i])),
117
+ ),
118
+ ])
119
+ .pipe(
120
+ debounceTime(0),
121
+ takeUntil(this.disconnecting),
122
+ )
123
+ .subscribe(([value, values]) => {
124
+ this.updateChipStates(value, values)
125
+ })
126
+ }
127
+
128
+ private updateChipStates(value: string, values: string[]) {
129
+ if (!this.chips) return
130
+
131
+ this.chips.forEach(chip => {
132
+ if ('value' in chip && 'selected' in chip) {
133
+ const filterChip = chip as SchmancyChip
134
+ if (this.multi) {
135
+ filterChip.selected = values.length > 0 && values.includes(filterChip.value)
136
+ } else {
137
+ filterChip.selected = value !== '' && value === filterChip.value
138
+ }
139
+ }
140
+ })
141
+ }
142
+
143
+ async change(e: CustomEvent<SchmancyChipChangeEvent>) {
144
+ e.preventDefault()
145
+ e.stopPropagation()
146
+
147
+ const { value: chipValue, selected } = e.detail
148
+
149
+ if (this.multi) {
150
+ const old = this.value
151
+ if (selected) {
152
+ if (!this.values$.value.includes(chipValue)) {
153
+ this.values$.next([...this.values$.value, chipValue])
154
+ }
155
+ } else {
156
+ this.values$.next(this.values$.value.filter(v => v !== chipValue))
157
+ }
158
+ this.requestUpdate('value', old)
159
+ } else {
160
+ const old = this.value
161
+ if (selected) {
162
+ this.value$.next(chipValue)
163
+ } else if (!this.required) {
164
+ this.value$.next('')
165
+ } else {
166
+ // Required single-mode: ignore deselection attempt.
167
+ return
168
+ }
169
+ this.requestUpdate('value', old)
170
+ }
171
+
172
+ this.emitChange({ value: this.multi ? this.values$.value : this.value$.value })
173
+ }
174
+
175
+ override resetForm(): void {
176
+ super.resetForm()
177
+ this.value$.next('')
178
+ this.values$.next([])
179
+ }
180
+
181
+ protected firstUpdated(_changedProperties: PropertyValues): void {
182
+ super.firstUpdated(_changedProperties)
183
+ this.updateChipStates(this.value$.value, this.values$.value)
184
+ }
185
+
186
+ protected render(): unknown {
187
+ const classes = {
188
+ 'flex flex-nowrap justify-center gap-2': true,
189
+ 'flex-wrap': this.wrap,
190
+ 'justify-center': this.justify === 'center',
191
+ }
192
+ const wrapperClasses = {
193
+ 'rounded-lg transition-all duration-200': true,
194
+ 'outline outline-2 outline-offset-4 outline-error-default': this.error,
195
+ }
196
+ return html`
197
+ <div class="${this.classMap(wrapperClasses)}">
198
+ <schmancy-scroll
199
+ hide
200
+ .direction=${this.wrap ? 'vertical' : 'horizontal'}
201
+ class="${this.classMap(classes)}"
202
+ ${fullWidth()}
203
+ @change=${this.change}
204
+ >
205
+ <slot
206
+ @slotchange=${() => {
207
+ this.updateChipStates(this.value$.value, this.values$.value)
208
+ }}
209
+ ></slot>
210
+ </schmancy-scroll>
211
+ </div>
212
+
213
+ ${when(
214
+ this.hint || (this.error && this.validationMessage),
215
+ () => html`
216
+ <div
217
+ id="hint-${this.id}"
218
+ class="mt-1 text-sm ${this.error ? 'text-error-default' : 'text-surface-onVariant'}"
219
+ role=${ifDefined(this.error ? 'alert' : undefined)}
220
+ aria-live="polite"
221
+ >
222
+ ${this.error && this.validationMessage ? this.validationMessage : this.hint}
223
+ </div>
224
+ `,
225
+ () => nothing,
226
+ )}`
227
+ }
228
+ }
229
+
230
+ declare global {
231
+ interface HTMLElementTagNameMap {
232
+ 'schmancy-chips': SchmancyChips
233
+ }
234
+ }
@@ -0,0 +1,255 @@
1
+ import { SchmancyElement } from '@mixins/index'
2
+ import { css, html, LitElement } from 'lit'
3
+ import { property } from 'lit/decorators.js'
4
+ import { magnetic } from '../../../directives/magnetic'
5
+
6
+ /**
7
+ * Filter chip component for content filtering.
8
+ *
9
+ * Filter chips are the ONLY chip type that maintains persistent selected state.
10
+ * They are used for filtering content by toggling on/off different filter criteria.
11
+ *
12
+ * @fires change - Dispatched when selection state changes with {value, selected}
13
+ * @fires remove - Dispatched when remove button is clicked (if removable)
14
+ *
15
+ * @example
16
+ * ```html
17
+ * <schmancy-filter-chip value="category-1" selected>
18
+ * Category 1
19
+ * </schmancy-filter-chip>
20
+ * ```
21
+ */
22
+ export class SchmancyFilterChip extends SchmancyElement {
23
+ static styles = [css`
24
+ :host {
25
+ display: inline-flex;
26
+ outline: none;
27
+ border-radius: 0.5rem;
28
+ transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1);
29
+ }
30
+
31
+ :host(:active:not([disabled])) {
32
+ transform: scale(0.95);
33
+ transition-duration: 100ms;
34
+ }
35
+
36
+ :host([disabled]) {
37
+ pointer-events: none;
38
+ opacity: var(--schmancy-sys-state-disabled-opacity);
39
+ }
40
+
41
+ @media (prefers-reduced-motion: reduce) {
42
+ :host { transition: none; }
43
+ :host(:active:not([disabled])) { transform: none; }
44
+ }
45
+
46
+ button {
47
+ font-family: inherit;
48
+ }
49
+ `];
50
+ /** Unique identifier for this filter chip */
51
+ @property({ type: String, reflect: true })
52
+ value: string = ''
53
+
54
+ /** Whether the filter chip is selected (active filter) */
55
+ private _selected: boolean = false
56
+
57
+ @property({ type: Boolean, reflect: true })
58
+ get selected(): boolean {
59
+ return this._selected
60
+ }
61
+ set selected(value: boolean) {
62
+ const oldValue = this._selected
63
+ this._selected = value
64
+ this.requestUpdate('selected', oldValue)
65
+ }
66
+
67
+ /** Whether to show a remove button */
68
+ @property({ type: Boolean, reflect: true })
69
+ removable: boolean = false
70
+
71
+ /** Whether the chip is disabled */
72
+ @property({ type: Boolean, reflect: true })
73
+ disabled: boolean = false
74
+
75
+ /** Whether to use elevated style with shadow */
76
+ @property({ type: Boolean, reflect: true })
77
+ elevated: boolean = false
78
+
79
+
80
+ constructor() {
81
+ super()
82
+ try {
83
+ this.internals = this.attachInternals()
84
+ } catch {
85
+ this.internals = undefined
86
+ }
87
+ }
88
+
89
+ protected static shadowRootOptions = {
90
+ ...LitElement.shadowRootOptions,
91
+ delegatesFocus: true,
92
+ }
93
+
94
+ static formAssociated = true
95
+ internals: ElementInternals | undefined
96
+ get form() {
97
+ return this.internals?.form
98
+ }
99
+
100
+ connectedCallback() {
101
+ super.connectedCallback()
102
+ }
103
+
104
+ protected updated(changed: Map<string, unknown>) {
105
+ super.updated?.(changed)
106
+ if (changed.has('value') || changed.has('selected')) {
107
+ this.internals?.setFormValue(this._selected ? (this.value || 'on') : null)
108
+ }
109
+ }
110
+
111
+ formResetCallback(): void {
112
+ this._selected = this.hasAttribute('selected')
113
+ }
114
+
115
+ formDisabledCallback(disabled: boolean): void {
116
+ this.disabled = disabled
117
+ }
118
+
119
+ private handleClick = () => {
120
+ if (this.disabled) return
121
+
122
+ this.dispatchEvent(
123
+ new CustomEvent('change', {
124
+ detail: { value: this.value, selected: !this._selected },
125
+ bubbles: true,
126
+ composed: true,
127
+ }),
128
+ )
129
+ }
130
+
131
+ private handleRemove = (e: Event) => {
132
+ if (this.disabled) return
133
+
134
+ e.stopPropagation()
135
+
136
+ this.dispatchEvent(
137
+ new CustomEvent('remove', {
138
+ detail: { value: this.value },
139
+ bubbles: true,
140
+ composed: true,
141
+ }),
142
+ )
143
+ }
144
+
145
+ private handleKeyDown = (e: KeyboardEvent) => {
146
+ if (this.disabled) return
147
+
148
+ if (e.key === 'Enter' || e.key === ' ') {
149
+ e.preventDefault()
150
+ this.dispatchEvent(
151
+ new CustomEvent('change', {
152
+ detail: { value: this.value, selected: !this._selected },
153
+ bubbles: true,
154
+ composed: true,
155
+ }),
156
+ )
157
+ }
158
+ }
159
+
160
+
161
+ protected render(): unknown {
162
+ const chipClasses = {
163
+ 'inline-flex': true,
164
+ 'items-center': true,
165
+ 'gap-2': true,
166
+ 'rounded-lg': true,
167
+ 'h-8 px-4': true,
168
+ 'cursor-pointer': !this.disabled,
169
+ 'transition-all': true,
170
+ 'duration-200': true,
171
+ 'select-none': true,
172
+ 'text-sm': true,
173
+ 'font-medium': true,
174
+ 'relative': true,
175
+ 'min-h-[32px]': true,
176
+
177
+ // Background and text colors based on selection state
178
+ 'bg-secondary-container': this._selected,
179
+ 'text-secondary-onContainer': this._selected,
180
+ 'bg-surface-container': !this._selected,
181
+ 'text-surface-on': !this._selected,
182
+
183
+ // Hover states
184
+ 'hover:brightness-95': this._selected && !this.disabled,
185
+ 'hover:bg-surface-containerHigh': !this._selected && !this.disabled,
186
+
187
+ // Pressed state
188
+ 'active:brightness-90': !this.disabled,
189
+
190
+ // Focus-visible state
191
+ 'focus-visible:outline': !this.disabled,
192
+ 'focus-visible:outline-2': !this.disabled,
193
+ 'focus-visible:outline-offset-2': !this.disabled,
194
+ 'focus-visible:outline-primary-default': !this.disabled,
195
+
196
+ // Elevated style
197
+ 'shadow-md': this.elevated && !this.disabled,
198
+ 'hover:shadow-lg': this.elevated && !this.disabled,
199
+
200
+ // Disabled state
201
+ 'opacity-[var(--schmancy-sys-state-disabled-opacity)]': this.disabled,
202
+ 'cursor-not-allowed': this.disabled,
203
+ }
204
+
205
+ return html`
206
+ <button
207
+ ${magnetic({ strength: 2, radius: 40 })}
208
+ class=${this.classMap(chipClasses)}
209
+ @click=${this.handleClick}
210
+ @keydown=${this.handleKeyDown}
211
+ ?disabled=${this.disabled}
212
+ aria-pressed=${this._selected ? 'true' : 'false'}
213
+ role="checkbox"
214
+ tabindex="0"
215
+ >
216
+ <slot></slot>
217
+
218
+ ${this.removable
219
+ ? html`
220
+ <button
221
+ class="ml-1 -mr-1 p-0.5 rounded-full hover:bg-surface-containerHighest transition-colors duration-200"
222
+ @click=${this.handleRemove}
223
+ aria-label="Remove filter"
224
+ tabindex="-1"
225
+ >
226
+ <span class="material-symbols-outlined text-sm">close</span>
227
+ </button>
228
+ `
229
+ : ''}
230
+ </button>
231
+ `
232
+ }
233
+ }
234
+
235
+ if (!customElements.get('schmancy-filter-chip')) {
236
+ customElements.define('schmancy-filter-chip', SchmancyFilterChip)
237
+ }
238
+
239
+ if (!customElements.get('schmancy-chip')) {
240
+ class SchmancyChipCompat extends SchmancyFilterChip {}
241
+ customElements.define('schmancy-chip', SchmancyChipCompat)
242
+ }
243
+
244
+ export { SchmancyFilterChip as SchmancyChip }
245
+
246
+ declare global {
247
+ interface HTMLElementTagNameMap {
248
+ 'schmancy-chip': SchmancyFilterChip
249
+ 'schmancy-filter-chip': SchmancyFilterChip
250
+ }
251
+ }
252
+
253
+ export type FilterChipChangeEvent = { value: string; selected: boolean }
254
+ export type FilterChipRemoveEvent = { value: string }
255
+ export type SchmancyChipChangeEvent = FilterChipChangeEvent
@@ -0,0 +1,5 @@
1
+ export * from './assist-chip';
2
+ export * from './chips';
3
+ export * from './filter-chip';
4
+ export * from './input-chip';
5
+ export * from './suggestion-chip';