@mhmo91/schmancy 0.9.5 → 0.9.7

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 (616) hide show
  1. package/custom-elements.json +493 -718
  2. package/dist/{animation-CO_Csq84.cjs.map → animation-Bcwh107v.cjs.map} +1 -1
  3. package/dist/{animation-BK-8BwY8.js.map → animation-CXKSuUoE.js.map} +1 -1
  4. package/dist/{area-CRoGqD_u.js → area-BARjKpE9.js} +2 -2
  5. package/dist/{area-CRoGqD_u.js.map → area-BARjKpE9.js.map} +1 -1
  6. package/dist/{area-JPykB7A9.cjs → area-D9b9dHQr.cjs} +3 -3
  7. package/dist/{area-JPykB7A9.cjs.map → area-D9b9dHQr.cjs.map} +1 -1
  8. package/dist/area.cjs +1 -1
  9. package/dist/area.js +1 -1
  10. package/dist/{audio-kz8UgPTO.js → audio-C7TzWI8M.js} +1 -1
  11. package/dist/audio-C7TzWI8M.js.map +1 -0
  12. package/dist/{audio-DtYYgzYD.cjs → audio-DUVz7Ars.cjs} +1 -1
  13. package/dist/audio-DUVz7Ars.cjs.map +1 -0
  14. package/dist/audio.cjs +1 -1
  15. package/dist/audio.js +2 -2
  16. package/dist/autocomplete-AI2CCJmK.cjs +115 -0
  17. package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
  18. package/dist/{autocomplete-BllPQwr8.js → autocomplete-DOimwVMP.js} +48 -22
  19. package/dist/autocomplete-DOimwVMP.js.map +1 -0
  20. package/dist/autocomplete.cjs +1 -1
  21. package/dist/autocomplete.js +1 -1
  22. package/dist/badge.cjs +1 -1
  23. package/dist/badge.js +1 -1
  24. package/dist/{boat-DYEAZ8Qj.cjs → boat-Bk4u-LzT.cjs} +2 -2
  25. package/dist/{boat-DYEAZ8Qj.cjs.map → boat-Bk4u-LzT.cjs.map} +1 -1
  26. package/dist/{boat-BDTQ-du9.js → boat-DrghVeWK.js} +5 -5
  27. package/dist/{boat-BDTQ-du9.js.map → boat-DrghVeWK.js.map} +1 -1
  28. package/dist/boat.cjs +1 -1
  29. package/dist/boat.js +1 -1
  30. package/dist/breadcrumb.cjs +34 -0
  31. package/dist/breadcrumb.cjs.map +1 -0
  32. package/dist/breadcrumb.js +73 -0
  33. package/dist/breadcrumb.js.map +1 -0
  34. package/dist/{busy-ChDAeaKF.js → busy-BmFfwyz_.js} +7 -6
  35. package/dist/{busy-ChDAeaKF.js.map → busy-BmFfwyz_.js.map} +1 -1
  36. package/dist/{busy-Dj7Xn0Z0.cjs → busy-c_q_F8O0.cjs} +8 -8
  37. package/dist/{busy-Dj7Xn0Z0.cjs.map → busy-c_q_F8O0.cjs.map} +1 -1
  38. package/dist/busy.cjs +1 -1
  39. package/dist/busy.js +1 -1
  40. package/dist/button.cjs +4 -4
  41. package/dist/button.cjs.map +1 -1
  42. package/dist/button.js +25 -6
  43. package/dist/button.js.map +1 -1
  44. package/dist/{card-DZFPRPqs.js → card-BADJHUMA.js} +16 -15
  45. package/dist/{card-DZFPRPqs.js.map → card-BADJHUMA.js.map} +1 -1
  46. package/dist/{card-BvPWVEJX.cjs → card-C_E944_Z.cjs} +10 -10
  47. package/dist/{card-BvPWVEJX.cjs.map → card-C_E944_Z.cjs.map} +1 -1
  48. package/dist/card.cjs +1 -1
  49. package/dist/card.js +1 -1
  50. package/dist/charts.cjs +3 -3
  51. package/dist/charts.cjs.map +1 -1
  52. package/dist/charts.js +2 -2
  53. package/dist/{checkbox-GSSjqo6w.js → checkbox-D7rvCrGk.js} +28 -9
  54. package/dist/{checkbox-GSSjqo6w.js.map → checkbox-D7rvCrGk.js.map} +1 -1
  55. package/dist/{checkbox-BC_37rsG.cjs → checkbox-ZqDoCagB.cjs} +10 -10
  56. package/dist/{checkbox-BC_37rsG.cjs.map → checkbox-ZqDoCagB.cjs.map} +1 -1
  57. package/dist/checkbox.cjs +1 -1
  58. package/dist/checkbox.js +1 -1
  59. package/dist/{chips-B19XS8Xc.cjs → chips-Cux635Qs.cjs} +18 -18
  60. package/dist/chips-Cux635Qs.cjs.map +1 -0
  61. package/dist/{chips-B9oAEfE_.js → chips-vdzIsesI.js} +37 -27
  62. package/dist/chips-vdzIsesI.js.map +1 -0
  63. package/dist/chips.cjs +1 -1
  64. package/dist/chips.js +2 -2
  65. package/dist/{code-highlight-fSLrlgOb.cjs → code-highlight-C9lKek2p.cjs} +11 -11
  66. package/dist/{code-highlight-fSLrlgOb.cjs.map → code-highlight-C9lKek2p.cjs.map} +1 -1
  67. package/dist/{code-highlight-DCk5lJY-.js → code-highlight-D6yruol6.js} +6 -5
  68. package/dist/{code-highlight-DCk5lJY-.js.map → code-highlight-D6yruol6.js.map} +1 -1
  69. package/dist/code-highlight.cjs +1 -1
  70. package/dist/code-highlight.js +1 -1
  71. package/dist/components-ByRyEzz5.cjs +73 -0
  72. package/dist/{components-CyD6a7gQ.cjs.map → components-ByRyEzz5.cjs.map} +1 -1
  73. package/dist/{components-COsM6sJZ.js → components-DSvPKR9Q.js} +2 -2
  74. package/dist/{components-COsM6sJZ.js.map → components-DSvPKR9Q.js.map} +1 -1
  75. package/dist/components.cjs +1 -1
  76. package/dist/components.js +1 -1
  77. package/dist/connectivity.cjs +7 -7
  78. package/dist/connectivity.cjs.map +1 -1
  79. package/dist/connectivity.js +5 -4
  80. package/dist/connectivity.js.map +1 -1
  81. package/dist/content-drawer.cjs +1 -1
  82. package/dist/content-drawer.js +1 -1
  83. package/dist/{cursor-glow-DtSy_PJd.cjs → cursor-glow-82y5h3E4.cjs} +1 -1
  84. package/dist/{cursor-glow-DtSy_PJd.cjs.map → cursor-glow-82y5h3E4.cjs.map} +1 -1
  85. package/dist/{cursor-glow-Ah7VXSj7.js → cursor-glow-C2YRrB8Z.js} +1 -1
  86. package/dist/{cursor-glow-Ah7VXSj7.js.map → cursor-glow-C2YRrB8Z.js.map} +1 -1
  87. package/dist/{date-range-ZAaQB22I.cjs → date-range-DJsavigf.cjs} +3 -3
  88. package/dist/date-range-DJsavigf.cjs.map +1 -0
  89. package/dist/{date-range-inline-Bl8qbiQF.js → date-range-inline-B87TDYI6.js} +1 -1
  90. package/dist/{date-range-inline-Bl8qbiQF.js.map → date-range-inline-B87TDYI6.js.map} +1 -1
  91. package/dist/date-range-inline-De-M0VmL.cjs +43 -0
  92. package/dist/{date-range-inline-m7nLjOMI.cjs.map → date-range-inline-De-M0VmL.cjs.map} +1 -1
  93. package/dist/date-range-inline.cjs +1 -1
  94. package/dist/date-range-inline.js +1 -1
  95. package/dist/{date-range-Sfyco9-n.js → date-range-tEX2Jx2j.js} +4 -4
  96. package/dist/date-range-tEX2Jx2j.js.map +1 -0
  97. package/dist/date-range.cjs +1 -1
  98. package/dist/date-range.js +1 -1
  99. package/dist/delay-BvVdfhAR.cjs +9 -0
  100. package/dist/{delay-7boauN6N.cjs.map → delay-BvVdfhAR.cjs.map} +1 -1
  101. package/dist/{delay-CgX6m0HN.js → delay-CZw37zps.js} +9 -8
  102. package/dist/{delay-CgX6m0HN.js.map → delay-CZw37zps.js.map} +1 -1
  103. package/dist/delay.cjs +1 -1
  104. package/dist/delay.js +1 -1
  105. package/dist/{details-BHnk8l4q.cjs → details-Bhz8_whd.cjs} +9 -9
  106. package/dist/{details-BHnk8l4q.cjs.map → details-Bhz8_whd.cjs.map} +1 -1
  107. package/dist/{details-BPkUg8Cq.js → details-D7VTnLOh.js} +16 -15
  108. package/dist/{details-BPkUg8Cq.js.map → details-D7VTnLOh.js.map} +1 -1
  109. package/dist/details.cjs +1 -1
  110. package/dist/details.js +1 -1
  111. package/dist/{dialog-service-NZEvyEK-.js → dialog-service-ClFrOWf4.js} +2 -2
  112. package/dist/{dialog-service-NZEvyEK-.js.map → dialog-service-ClFrOWf4.js.map} +1 -1
  113. package/dist/{dialog-service-VnW4gkmE.cjs → dialog-service-DcuAavp2.cjs} +1 -1
  114. package/dist/{dialog-service-VnW4gkmE.cjs.map → dialog-service-DcuAavp2.cjs.map} +1 -1
  115. package/dist/dialog.cjs +18 -11
  116. package/dist/dialog.cjs.map +1 -1
  117. package/dist/dialog.js +66 -43
  118. package/dist/dialog.js.map +1 -1
  119. package/dist/directives.cjs +1 -1
  120. package/dist/directives.js +5 -5
  121. package/dist/{divider-_khrhrZo.cjs → divider-S0bHwCCS.cjs} +2 -2
  122. package/dist/{divider-_khrhrZo.cjs.map → divider-S0bHwCCS.cjs.map} +1 -1
  123. package/dist/{divider-CW9a7MMj.js → divider-zS232JDr.js} +2 -2
  124. package/dist/{divider-CW9a7MMj.js.map → divider-zS232JDr.js.map} +1 -1
  125. package/dist/divider.cjs +1 -1
  126. package/dist/divider.js +1 -1
  127. package/dist/dropdown.cjs +4 -4
  128. package/dist/dropdown.cjs.map +1 -1
  129. package/dist/dropdown.js +8 -7
  130. package/dist/dropdown.js.map +1 -1
  131. package/dist/{expand-iQ7EOMP7.js → expand-BXt9SqAF.js} +13 -12
  132. package/dist/{expand-iQ7EOMP7.js.map → expand-BXt9SqAF.js.map} +1 -1
  133. package/dist/{expand-Cp7-PH8b.cjs → expand-Dr7TFXpl.cjs} +18 -18
  134. package/dist/{expand-Cp7-PH8b.cjs.map → expand-Dr7TFXpl.cjs.map} +1 -1
  135. package/dist/expand.cjs +1 -1
  136. package/dist/expand.js +1 -1
  137. package/dist/{extra-IKAiJJhv.cjs → extra-BmZTXAp0.cjs} +3 -3
  138. package/dist/{extra-IKAiJJhv.cjs.map → extra-BmZTXAp0.cjs.map} +1 -1
  139. package/dist/{extra-wEpvEFbK.js → extra-COYhsOyZ.js} +2 -2
  140. package/dist/{extra-wEpvEFbK.js.map → extra-COYhsOyZ.js.map} +1 -1
  141. package/dist/extra.cjs +1 -1
  142. package/dist/extra.js +1 -1
  143. package/dist/float-CSRW-Rrd.cjs +1 -0
  144. package/dist/{float-D5rNC82i.cjs.map → float-CSRW-Rrd.cjs.map} +1 -1
  145. package/dist/{float-BQ_urmMs.js → float-DCXafWh6.js} +2 -2
  146. package/dist/{float-BQ_urmMs.js.map → float-DCXafWh6.js.map} +1 -1
  147. package/dist/float.cjs +1 -1
  148. package/dist/float.js +1 -1
  149. package/dist/{flow-CUj0fDT_.js.map → flow-CqgDEIqK.js.map} +1 -1
  150. package/dist/{flow-Bbwn6dRN.cjs.map → flow-DSu4PLt1.cjs.map} +1 -1
  151. package/dist/form-CAY9GSCd.cjs +1 -0
  152. package/dist/form-CAY9GSCd.cjs.map +1 -0
  153. package/dist/form-D2cJ58TB.js +68 -0
  154. package/dist/form-D2cJ58TB.js.map +1 -0
  155. package/dist/form.cjs +1 -1
  156. package/dist/form.js +2 -1
  157. package/dist/{hashContent-DaeGmY-p.cjs.map → hashContent-kKvXKFa9.cjs.map} +1 -1
  158. package/dist/{hashContent-DYM21p6t.js.map → hashContent-nD2uWwi2.js.map} +1 -1
  159. package/dist/{icons-BDqiGXrO.js → icons-BbaI9Zf-.js} +9 -8
  160. package/dist/icons-BbaI9Zf-.js.map +1 -0
  161. package/dist/{icons-B57_93VV.cjs → icons-DPUeLS_Y.cjs} +3 -3
  162. package/dist/icons-DPUeLS_Y.cjs.map +1 -0
  163. package/dist/icons.cjs +1 -1
  164. package/dist/icons.js +1 -1
  165. package/dist/{iframe-WnWPIrBG.js → iframe-CEDOvkql.js} +5 -4
  166. package/dist/{iframe-WnWPIrBG.js.map → iframe-CEDOvkql.js.map} +1 -1
  167. package/dist/{iframe-DNHL3GIk.cjs → iframe-Ct50FYXq.cjs} +3 -3
  168. package/dist/{iframe-DNHL3GIk.cjs.map → iframe-Ct50FYXq.cjs.map} +1 -1
  169. package/dist/iframe.cjs +1 -1
  170. package/dist/iframe.js +1 -1
  171. package/dist/index.cjs +1 -1
  172. package/dist/index.js +65 -59
  173. package/dist/{input-BiSrTcrR.cjs → input-DMjpf6V8.cjs} +2 -2
  174. package/dist/{input-BiSrTcrR.cjs.map → input-DMjpf6V8.cjs.map} +1 -1
  175. package/dist/{input-VaXHFrRn.js → input-Ri72dn5t.js} +1 -1
  176. package/dist/{input-VaXHFrRn.js.map → input-Ri72dn5t.js.map} +1 -1
  177. package/dist/{input-chip-Dy-AiP55.cjs → input-chip-BhjGVpc3.cjs} +9 -9
  178. package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
  179. package/dist/{input-chip-QejNcRnS.js → input-chip-CI4__N8w.js} +13 -9
  180. package/dist/input-chip-CI4__N8w.js.map +1 -0
  181. package/dist/input.cjs +1 -1
  182. package/dist/input.js +1 -1
  183. package/dist/{intersection-CZpaIHeT.cjs.map → intersection-D1v1UCVv.cjs.map} +1 -1
  184. package/dist/{intersection-BPLpqYEd.js.map → intersection-LfEsy29T.js.map} +1 -1
  185. package/dist/json.cjs +3 -3
  186. package/dist/json.cjs.map +1 -1
  187. package/dist/json.js +5 -4
  188. package/dist/json.js.map +1 -1
  189. package/dist/kbd.cjs +28 -0
  190. package/dist/kbd.cjs.map +1 -0
  191. package/dist/kbd.js +45 -0
  192. package/dist/kbd.js.map +1 -0
  193. package/dist/{layout-yxSlLybo.js → layout-BE2ld1IY.js} +1 -1
  194. package/dist/{layout-yxSlLybo.js.map → layout-BE2ld1IY.js.map} +1 -1
  195. package/dist/layout-D7xOqMkJ.cjs +17 -0
  196. package/dist/{layout-DNYG3phx.cjs.map → layout-D7xOqMkJ.cjs.map} +1 -1
  197. package/dist/{layout-4C-6_cre.cjs → layout-PZCF3kwl.cjs} +1 -1
  198. package/dist/{layout-4C-6_cre.cjs.map → layout-PZCF3kwl.cjs.map} +1 -1
  199. package/dist/{layout-CnsXeCAy.js → layout-uAQpJN31.js} +20 -19
  200. package/dist/{layout-CnsXeCAy.js.map → layout-uAQpJN31.js.map} +1 -1
  201. package/dist/layout.cjs +1 -1
  202. package/dist/layout.js +2 -2
  203. package/dist/{lightbox-BrI1Z31s.js → lightbox-C0OEHns9.js} +10 -9
  204. package/dist/{lightbox-BrI1Z31s.js.map → lightbox-C0OEHns9.js.map} +1 -1
  205. package/dist/{lightbox-CmACf0t5.cjs → lightbox-cXRnvHMN.cjs} +20 -20
  206. package/dist/{lightbox-CmACf0t5.cjs.map → lightbox-cXRnvHMN.cjs.map} +1 -1
  207. package/dist/lightbox.cjs +1 -1
  208. package/dist/lightbox.js +1 -1
  209. package/dist/{list-swIL9VDv.cjs → list-CmJ5h35b.cjs} +5 -5
  210. package/dist/{list-swIL9VDv.cjs.map → list-CmJ5h35b.cjs.map} +1 -1
  211. package/dist/{list-Cm-jjXxM.js → list-d1mHar5p.js} +14 -13
  212. package/dist/{list-Cm-jjXxM.js.map → list-d1mHar5p.js.map} +1 -1
  213. package/dist/list.cjs +1 -1
  214. package/dist/list.js +1 -1
  215. package/dist/{litElement.mixin-3llHwB-8.cjs → litElement.mixin-Bj2q1yPw.cjs} +1 -1
  216. package/dist/{litElement.mixin-3llHwB-8.cjs.map → litElement.mixin-Bj2q1yPw.cjs.map} +1 -1
  217. package/dist/{litElement.mixin-6jJYHCrZ.js → litElement.mixin-CncaUoxz.js} +1 -1
  218. package/dist/{litElement.mixin-6jJYHCrZ.js.map → litElement.mixin-CncaUoxz.js.map} +1 -1
  219. package/dist/{magnetic-BZGFxAWG.js → magnetic-Dj52WplI.js} +2 -2
  220. package/dist/{magnetic-BZGFxAWG.js.map → magnetic-Dj52WplI.js.map} +1 -1
  221. package/dist/{magnetic-Dux4QwO4.cjs → magnetic-aBBnj_vk.cjs} +1 -1
  222. package/dist/{magnetic-Dux4QwO4.cjs.map → magnetic-aBBnj_vk.cjs.map} +1 -1
  223. package/dist/{mailbox-D6LkQcN5.cjs → mailbox-BmChskZc.cjs} +59 -59
  224. package/dist/{mailbox-D6LkQcN5.cjs.map → mailbox-BmChskZc.cjs.map} +1 -1
  225. package/dist/{mailbox-BuvsVaAQ.js → mailbox-C4-E93be.js} +13 -12
  226. package/dist/{mailbox-BuvsVaAQ.js.map → mailbox-C4-E93be.js.map} +1 -1
  227. package/dist/mailbox.cjs +1 -1
  228. package/dist/mailbox.js +1 -1
  229. package/dist/{map-CQiKAxC3.js → map-DHyYLhvy.js} +6 -5
  230. package/dist/{map-CQiKAxC3.js.map → map-DHyYLhvy.js.map} +1 -1
  231. package/dist/{map-D5NN4VET.cjs → map-DYEvlNl0.cjs} +7 -7
  232. package/dist/{map-D5NN4VET.cjs.map → map-DYEvlNl0.cjs.map} +1 -1
  233. package/dist/map.cjs +1 -1
  234. package/dist/map.js +1 -1
  235. package/dist/{menu-CkgMO9K5.cjs → menu-BlPTI6H9.cjs} +3 -3
  236. package/dist/{menu-CkgMO9K5.cjs.map → menu-BlPTI6H9.cjs.map} +1 -1
  237. package/dist/{menu-C1x04YZw.js → menu-DFDBADp4.js} +3 -3
  238. package/dist/{menu-C1x04YZw.js.map → menu-DFDBADp4.js.map} +1 -1
  239. package/dist/menu.cjs +1 -1
  240. package/dist/menu.js +1 -1
  241. package/dist/mixins.cjs +1 -1
  242. package/dist/mixins.cjs.map +1 -1
  243. package/dist/mixins.js +43 -15
  244. package/dist/mixins.js.map +1 -1
  245. package/dist/nav-drawer.cjs +1 -1
  246. package/dist/nav-drawer.js +1 -1
  247. package/dist/navigation-bar.cjs +1 -1
  248. package/dist/navigation-bar.js +1 -1
  249. package/dist/navigation-rail.cjs +3 -3
  250. package/dist/navigation-rail.cjs.map +1 -1
  251. package/dist/navigation-rail.js +2 -2
  252. package/dist/{notification-BnBgxjF-.js → notification-DGpv8g2H.js} +4 -4
  253. package/dist/{notification-BnBgxjF-.js.map → notification-DGpv8g2H.js.map} +1 -1
  254. package/dist/notification-DKVWYhqs.cjs +23 -0
  255. package/dist/{notification-CZFEhWxc.cjs.map → notification-DKVWYhqs.cjs.map} +1 -1
  256. package/dist/notification.cjs +1 -1
  257. package/dist/notification.js +1 -1
  258. package/dist/{option-DBO8xZwd.js → option-BD2eh458.js} +6 -5
  259. package/dist/{option-DBO8xZwd.js.map → option-BD2eh458.js.map} +1 -1
  260. package/dist/{option-BrxCVwSx.cjs → option-LtSDy2xf.cjs} +5 -5
  261. package/dist/{option-BrxCVwSx.cjs.map → option-LtSDy2xf.cjs.map} +1 -1
  262. package/dist/option.cjs +1 -1
  263. package/dist/option.js +1 -1
  264. package/dist/{overlay-stack-DQey9Qph.cjs.map → overlay-stack-CEYGD9T1.cjs.map} +1 -1
  265. package/dist/{overlay-stack-DT1SdaGW.js.map → overlay-stack-Ca4EK2Mu.js.map} +1 -1
  266. package/dist/page.cjs +2 -2
  267. package/dist/page.cjs.map +1 -1
  268. package/dist/page.js +5 -5
  269. package/dist/{progress-Db2e4_Zd.cjs → progress-B5ChDPbB.cjs} +2 -2
  270. package/dist/{progress-Db2e4_Zd.cjs.map → progress-B5ChDPbB.cjs.map} +1 -1
  271. package/dist/{progress-DeiHxXo7.js → progress-CE1Pk2hi.js} +2 -2
  272. package/dist/{progress-DeiHxXo7.js.map → progress-CE1Pk2hi.js.map} +1 -1
  273. package/dist/progress.cjs +1 -1
  274. package/dist/progress.js +1 -1
  275. package/dist/{provide-DHnhQtCH.cjs → provide-BZ9lq_Be.cjs} +1 -1
  276. package/dist/{provide-DHnhQtCH.cjs.map → provide-BZ9lq_Be.cjs.map} +1 -1
  277. package/dist/{provide-C1aQhxYo.js → provide-jn1Fj1vv.js} +1 -1
  278. package/dist/{provide-C1aQhxYo.js.map → provide-jn1Fj1vv.js.map} +1 -1
  279. package/dist/qr-scanner.cjs +2 -2
  280. package/dist/qr-scanner.cjs.map +1 -1
  281. package/dist/qr-scanner.js +2 -2
  282. package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
  283. package/dist/{radio-group-Cspwd-Vw.cjs.map → radio-group-Cd9pZ2MR.cjs.map} +1 -1
  284. package/dist/{radio-group-zSO0AkJf.js → radio-group-CyRHgIF3.js} +7 -6
  285. package/dist/{radio-group-zSO0AkJf.js.map → radio-group-CyRHgIF3.js.map} +1 -1
  286. package/dist/radio-group.cjs +1 -1
  287. package/dist/radio-group.js +1 -1
  288. package/dist/range.cjs +4 -4
  289. package/dist/range.cjs.map +1 -1
  290. package/dist/range.js +4 -3
  291. package/dist/range.js.map +1 -1
  292. package/dist/{reduced-motion-D-L12p7G.js.map → reduced-motion-B83yZbcO.js.map} +1 -1
  293. package/dist/{reduced-motion-Ds05GPyz.cjs.map → reduced-motion-DR32yKEO.cjs.map} +1 -1
  294. package/dist/{rxjs-utils-BSjmI9-Q.js.map → rxjs-utils-Bldch1RO.js.map} +1 -1
  295. package/dist/{rxjs-utils-DCsfzeap.cjs.map → rxjs-utils-hAgKC7vk.cjs.map} +1 -1
  296. package/dist/rxjs-utils.cjs +1 -1
  297. package/dist/rxjs-utils.js +1 -1
  298. package/dist/{scroll-QMCmbbDv.cjs → scroll-C_iNOi7E.cjs} +2 -2
  299. package/dist/{scroll-QMCmbbDv.cjs.map → scroll-C_iNOi7E.cjs.map} +1 -1
  300. package/dist/{scroll-cBDzye64.js → scroll-DoliwpRu.js} +7 -6
  301. package/dist/{scroll-cBDzye64.js.map → scroll-DoliwpRu.js.map} +1 -1
  302. package/dist/{search-C4dFHYbX.js.map → search-BlGJ6uJv.js.map} +1 -1
  303. package/dist/{search-Ds8tt7Et.cjs.map → search-C8eAOzBm.cjs.map} +1 -1
  304. package/dist/{select-Ct37l3lg.cjs → select-CWWuZ2iJ.cjs} +2 -2
  305. package/dist/{select-Ct37l3lg.cjs.map → select-CWWuZ2iJ.cjs.map} +1 -1
  306. package/dist/{select-c6HbWvKP.js → select-_vHPXi30.js} +3 -3
  307. package/dist/{select-c6HbWvKP.js.map → select-_vHPXi30.js.map} +1 -1
  308. package/dist/select.cjs +1 -1
  309. package/dist/select.js +1 -1
  310. package/dist/{sheet-BMXcUiIm.js → sheet-i1KtxGIj.js} +5 -5
  311. package/dist/{sheet-BMXcUiIm.js.map → sheet-i1KtxGIj.js.map} +1 -1
  312. package/dist/{sheet-CQec-bCV.cjs → sheet-r0oEYIdi.cjs} +2 -2
  313. package/dist/{sheet-CQec-bCV.cjs.map → sheet-r0oEYIdi.cjs.map} +1 -1
  314. package/dist/sheet.cjs +1 -1
  315. package/dist/sheet.js +2 -2
  316. package/dist/{sheet.service-Dumvr1HT.cjs → sheet.service-Cr13Oo6G.cjs} +1 -1
  317. package/dist/{sheet.service-Dumvr1HT.cjs.map → sheet.service-Cr13Oo6G.cjs.map} +1 -1
  318. package/dist/{sheet.service-BcPV3Du4.js → sheet.service-DUO5_kmI.js} +3 -3
  319. package/dist/{sheet.service-BcPV3Du4.js.map → sheet.service-DUO5_kmI.js.map} +1 -1
  320. package/dist/skeleton.cjs +33 -0
  321. package/dist/skeleton.cjs.map +1 -0
  322. package/dist/skeleton.js +58 -0
  323. package/dist/skeleton.js.map +1 -0
  324. package/dist/skills/INDEX.md +7 -6
  325. package/dist/skills/breadcrumb.md +53 -0
  326. package/dist/skills/kbd.md +40 -0
  327. package/dist/skills/schmancy/INDEX.md +7 -6
  328. package/dist/skills/schmancy/breadcrumb.md +53 -0
  329. package/dist/skills/schmancy/kbd.md +40 -0
  330. package/dist/skills/schmancy/skeleton.md +40 -0
  331. package/dist/skills/schmancy/splash-screen.md +60 -0
  332. package/dist/skills/schmancy/switch.md +58 -0
  333. package/dist/skills/schmancy/tooltip.md +1 -1
  334. package/dist/skills/schmancy/visually-hidden.md +41 -0
  335. package/dist/skills/skeleton.md +40 -0
  336. package/dist/skills/splash-screen.md +60 -0
  337. package/dist/skills/switch.md +58 -0
  338. package/dist/skills/tooltip.md +1 -1
  339. package/dist/skills/visually-hidden.md +41 -0
  340. package/dist/slider.cjs +3 -3
  341. package/dist/slider.cjs.map +1 -1
  342. package/dist/slider.js +2 -2
  343. package/dist/{sound.service-Bu3EQLv2.cjs → sound.service-BjSoGjmT.cjs} +1 -1
  344. package/dist/{sound.service-Bu3EQLv2.cjs.map → sound.service-BjSoGjmT.cjs.map} +1 -1
  345. package/dist/{sound.service-m3BrSfuH.js → sound.service-cdkw3Wkv.js} +1 -1
  346. package/dist/{sound.service-m3BrSfuH.js.map → sound.service-cdkw3Wkv.js.map} +1 -1
  347. package/dist/splash-screen-CquyPP1C.cjs +41 -0
  348. package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
  349. package/dist/splash-screen-CvucPkpD.js +83 -0
  350. package/dist/splash-screen-CvucPkpD.js.map +1 -0
  351. package/dist/splash-screen.cjs +1 -0
  352. package/dist/splash-screen.js +1 -0
  353. package/dist/src-Bemk2C2P.cjs +269 -0
  354. package/dist/{src-BtQVyqMy.cjs.map → src-Bemk2C2P.cjs.map} +1 -1
  355. package/dist/{src-BLngW2bl.js → src-f5a3W9Mj.js} +98 -91
  356. package/dist/{src-BLngW2bl.js.map → src-f5a3W9Mj.js.map} +1 -1
  357. package/dist/steps.cjs +10 -10
  358. package/dist/steps.cjs.map +1 -1
  359. package/dist/steps.js +10 -9
  360. package/dist/steps.js.map +1 -1
  361. package/dist/{store-DYqDLAvT.js.map → store-Bmj6rvZY.js.map} +1 -1
  362. package/dist/{store-CorvD3bT.cjs.map → store-CO4nJyGj.cjs.map} +1 -1
  363. package/dist/store.cjs +1 -1
  364. package/dist/store.js +1 -1
  365. package/dist/surface-CDufon40.cjs +7 -0
  366. package/dist/{surface-BjKZoJxK.cjs.map → surface-CDufon40.cjs.map} +1 -1
  367. package/dist/surface-CkEYJCae.js +22 -0
  368. package/dist/{surface-pK8hME5c.js.map → surface-CkEYJCae.js.map} +1 -1
  369. package/dist/surface.cjs +1 -1
  370. package/dist/surface.js +1 -1
  371. package/dist/{surface.mixin-C5sDI1-_.cjs → surface.mixin-CSKqQH-0.cjs} +2 -2
  372. package/dist/{surface.mixin-C5sDI1-_.cjs.map → surface.mixin-CSKqQH-0.cjs.map} +1 -1
  373. package/dist/{surface.mixin-CBNRpJum.js → surface.mixin-DqMwoddO.js} +1 -1
  374. package/dist/{surface.mixin-CBNRpJum.js.map → surface.mixin-DqMwoddO.js.map} +1 -1
  375. package/dist/switch.cjs +69 -0
  376. package/dist/switch.cjs.map +1 -0
  377. package/dist/switch.js +132 -0
  378. package/dist/switch.js.map +1 -0
  379. package/dist/{table-CiqgZzSd.cjs → table-DWc1mkpj.cjs} +3 -3
  380. package/dist/{table-CiqgZzSd.cjs.map → table-DWc1mkpj.cjs.map} +1 -1
  381. package/dist/{table-BXIHX9h4.js → table-P6VGG7NK.js} +4 -4
  382. package/dist/{table-BXIHX9h4.js.map → table-P6VGG7NK.js.map} +1 -1
  383. package/dist/table.cjs +1 -1
  384. package/dist/table.js +1 -1
  385. package/dist/{tabs-nbV5eblZ.js → tabs-CjGjGrqY.js} +13 -12
  386. package/dist/{tabs-nbV5eblZ.js.map → tabs-CjGjGrqY.js.map} +1 -1
  387. package/dist/{tabs-CKa-W4qA.cjs → tabs-DGJEKuhC.cjs} +4 -4
  388. package/dist/{tabs-CKa-W4qA.cjs.map → tabs-DGJEKuhC.cjs.map} +1 -1
  389. package/dist/tabs.cjs +1 -1
  390. package/dist/tabs.js +1 -1
  391. package/dist/{tailwind.mixin-BF1Huas7.cjs → tailwind.mixin-Cpa-VnnX.cjs} +2 -2
  392. package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
  393. package/dist/{tailwind.mixin-BCJOOX1_.js → tailwind.mixin-DufHBjmb.js} +57 -63
  394. package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
  395. package/dist/teleport.cjs +1 -1
  396. package/dist/teleport.js +1 -1
  397. package/dist/{textarea-D7q8exMg.js → textarea-DZT_Ofp5.js} +42 -28
  398. package/dist/textarea-DZT_Ofp5.js.map +1 -0
  399. package/dist/textarea-jmTOXrzl.cjs +39 -0
  400. package/dist/textarea-jmTOXrzl.cjs.map +1 -0
  401. package/dist/textarea.cjs +1 -1
  402. package/dist/textarea.js +1 -1
  403. package/dist/theme-CCKqaksQ.cjs +181 -0
  404. package/dist/{theme-Da4SPq9X.cjs.map → theme-CCKqaksQ.cjs.map} +1 -1
  405. package/dist/{theme-_VPV6Bxh.js → theme-CEc32pAv.js} +13 -12
  406. package/dist/{theme-_VPV6Bxh.js.map → theme-CEc32pAv.js.map} +1 -1
  407. package/dist/theme-button-BsJcv-Zv.cjs +8 -0
  408. package/dist/{theme-button-Ci8VQ7KW.cjs.map → theme-button-BsJcv-Zv.cjs.map} +1 -1
  409. package/dist/{theme-button--sX8A-m1.js → theme-button-dOiAvdKU.js} +4 -3
  410. package/dist/{theme-button--sX8A-m1.js.map → theme-button-dOiAvdKU.js.map} +1 -1
  411. package/dist/theme-button.cjs +1 -1
  412. package/dist/theme-button.js +1 -1
  413. package/dist/theme.cjs +1 -1
  414. package/dist/{theme.events-Cv7N4Toe.js.map → theme.events-Bw3mYjUA.js.map} +1 -1
  415. package/dist/{theme.events-DM4H5F2d.cjs.map → theme.events-EznKK2Y0.cjs.map} +1 -1
  416. package/dist/{theme.interface-Da23QAYb.cjs.map → theme.interface-CM26m9te.cjs.map} +1 -1
  417. package/dist/{theme.interface-CXloMUCw.js.map → theme.interface-FAUIgbIq.js.map} +1 -1
  418. package/dist/theme.js +5 -5
  419. package/dist/{theme.service-C_tjlqgy.cjs → theme.service-ETiKUwVy.cjs} +1 -1
  420. package/dist/{theme.service-C_tjlqgy.cjs.map → theme.service-ETiKUwVy.cjs.map} +1 -1
  421. package/dist/{theme.service-D9lEas89.js → theme.service-_qP5WvB9.js} +2 -2
  422. package/dist/{theme.service-D9lEas89.js.map → theme.service-_qP5WvB9.js.map} +1 -1
  423. package/dist/tooltip.cjs +1 -6
  424. package/dist/tooltip.cjs.map +1 -1
  425. package/dist/tooltip.js +51 -135
  426. package/dist/tooltip.js.map +1 -1
  427. package/dist/tree.cjs +14 -5
  428. package/dist/tree.cjs.map +1 -1
  429. package/dist/tree.js +28 -6
  430. package/dist/tree.js.map +1 -1
  431. package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
  432. package/dist/{tslib.es6-D7BIeDVB.cjs.map → tslib.es6-Bd-92OW3.cjs.map} +1 -1
  433. package/dist/tslib.es6-CI1onEZb.js +7 -0
  434. package/dist/{tslib.es6-ErZEp3OO.js.map → tslib.es6-CI1onEZb.js.map} +1 -1
  435. package/dist/typewriter-ByIL2Mh-.cjs +123 -0
  436. package/dist/{typewriter-B2TnHPjw.cjs.map → typewriter-ByIL2Mh-.cjs.map} +1 -1
  437. package/dist/{typewriter-BrZNa8T-.js → typewriter-vOQ3bDLb.js} +8 -7
  438. package/dist/{typewriter-BrZNa8T-.js.map → typewriter-vOQ3bDLb.js.map} +1 -1
  439. package/dist/typewriter.cjs +1 -1
  440. package/dist/typewriter.js +1 -1
  441. package/dist/typography.cjs +4 -4
  442. package/dist/typography.cjs.map +1 -1
  443. package/dist/typography.js +10 -9
  444. package/dist/typography.js.map +1 -1
  445. package/dist/{utils-CoU7M2YS.js → utils-Cq0m3LYo.js} +3 -3
  446. package/dist/{utils-CoU7M2YS.js.map → utils-Cq0m3LYo.js.map} +1 -1
  447. package/dist/{utils-BcaKtQuA.cjs → utils-D2kE-6zc.cjs} +1 -1
  448. package/dist/{utils-BcaKtQuA.cjs.map → utils-D2kE-6zc.cjs.map} +1 -1
  449. package/dist/utils.cjs +1 -1
  450. package/dist/utils.js +5 -5
  451. package/dist/visually-hidden.cjs +13 -0
  452. package/dist/visually-hidden.cjs.map +1 -0
  453. package/dist/visually-hidden.js +24 -0
  454. package/dist/visually-hidden.js.map +1 -0
  455. package/dist/{window-Uii13x_r.cjs → window-BS7ZQjgH.cjs} +2 -2
  456. package/dist/window-BS7ZQjgH.cjs.map +1 -0
  457. package/dist/{window-CM1ycigo.js → window-WnAihpsA.js} +7 -7
  458. package/dist/window-WnAihpsA.js.map +1 -0
  459. package/dist/window.cjs +1 -1
  460. package/dist/window.js +1 -1
  461. package/package.json +22 -28
  462. package/skills/schmancy/INDEX.md +7 -6
  463. package/skills/schmancy/breadcrumb.md +53 -0
  464. package/skills/schmancy/kbd.md +40 -0
  465. package/skills/schmancy/skeleton.md +40 -0
  466. package/skills/schmancy/splash-screen.md +60 -0
  467. package/skills/schmancy/switch.md +58 -0
  468. package/skills/schmancy/tooltip.md +1 -1
  469. package/skills/schmancy/visually-hidden.md +41 -0
  470. package/src/audio/emotional-sounds.ts +2 -4
  471. package/src/autocomplete/autocomplete.ts +52 -2
  472. package/src/breadcrumb/breadcrumb.ts +109 -0
  473. package/src/breadcrumb/index.ts +1 -0
  474. package/src/button/button.ts +40 -0
  475. package/src/button/icon-button.ts +2 -1
  476. package/src/checkbox/checkbox.test.ts +113 -0
  477. package/src/checkbox/checkbox.ts +41 -1
  478. package/src/chips/filter-chip.ts +15 -0
  479. package/src/chips/input-chip.ts +7 -0
  480. package/src/date-range/date-range-helpers.ts +0 -71
  481. package/src/dialog/dialog-base.mixin.ts +11 -0
  482. package/src/dialog/dialog.component.ts +28 -8
  483. package/src/dropdown/dropdown-content.ts +3 -1
  484. package/src/form/form.test.ts +137 -0
  485. package/src/form/form.ts +142 -158
  486. package/src/form/index.ts +2 -2
  487. package/src/icons/icon.ts +1 -0
  488. package/src/index.ts +6 -0
  489. package/src/kbd/index.ts +1 -0
  490. package/src/kbd/kbd.ts +59 -0
  491. package/src/skeleton/index.ts +1 -0
  492. package/src/skeleton/skeleton.ts +78 -0
  493. package/src/splash-screen/index.ts +1 -0
  494. package/src/splash-screen/splash-screen.ts +154 -0
  495. package/src/switch/index.ts +1 -0
  496. package/src/switch/switch.test.ts +93 -0
  497. package/src/switch/switch.ts +180 -0
  498. package/src/test-utils/a11y.ts +35 -0
  499. package/src/textarea/textarea.ts +32 -2
  500. package/src/tooltip/index.ts +1 -2
  501. package/src/tree/tree.ts +27 -2
  502. package/src/visually-hidden/index.ts +1 -0
  503. package/src/visually-hidden/visually-hidden.ts +39 -0
  504. package/src/window/window-position.ts +1 -74
  505. package/types/mixins/formField.mixin.d.ts +15 -8
  506. package/types/src/audio/emotional-sounds.d.ts +0 -2
  507. package/types/src/autocomplete/autocomplete.d.ts +7 -0
  508. package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
  509. package/types/src/breadcrumb/index.d.ts +1 -0
  510. package/types/src/button/button.d.ts +7 -0
  511. package/types/src/button/icon-button.d.ts +2 -1
  512. package/types/src/checkbox/checkbox.d.ts +6 -0
  513. package/types/src/checkbox/checkbox.test.d.ts +1 -0
  514. package/types/src/chips/filter-chip.d.ts +3 -0
  515. package/types/src/chips/input-chip.d.ts +1 -0
  516. package/types/src/date-range/date-range-helpers.d.ts +0 -12
  517. package/types/src/dialog/dialog.component.d.ts +6 -0
  518. package/types/src/dropdown/dropdown-content.d.ts +3 -1
  519. package/types/src/form/form-v2.d.ts +12 -63
  520. package/types/src/form/form.d.ts +58 -40
  521. package/types/src/form/form.test.d.ts +4 -0
  522. package/types/src/form/index.d.ts +1 -1
  523. package/types/src/icons/icon.d.ts +1 -0
  524. package/types/src/index.d.ts +6 -0
  525. package/types/src/kbd/index.d.ts +1 -0
  526. package/types/src/kbd/kbd.d.ts +25 -0
  527. package/types/src/skeleton/index.d.ts +1 -0
  528. package/types/src/skeleton/skeleton.d.ts +27 -0
  529. package/types/src/splash-screen/index.d.ts +1 -0
  530. package/types/src/splash-screen/splash-screen.d.ts +60 -0
  531. package/types/src/switch/index.d.ts +1 -0
  532. package/types/src/switch/switch.d.ts +54 -0
  533. package/types/src/switch/switch.test.d.ts +1 -0
  534. package/types/src/test-utils/a11y.d.ts +11 -0
  535. package/types/src/textarea/textarea.d.ts +5 -1
  536. package/types/src/tooltip/index.d.ts +0 -1
  537. package/types/src/tree/tree.d.ts +5 -0
  538. package/types/src/visually-hidden/index.d.ts +1 -0
  539. package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
  540. package/types/src/window/window-position.d.ts +1 -35
  541. package/dist/audio-DtYYgzYD.cjs.map +0 -1
  542. package/dist/audio-kz8UgPTO.js.map +0 -1
  543. package/dist/autocomplete-5rVhbieU.cjs +0 -111
  544. package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
  545. package/dist/autocomplete-BllPQwr8.js.map +0 -1
  546. package/dist/chips-B19XS8Xc.cjs.map +0 -1
  547. package/dist/chips-B9oAEfE_.js.map +0 -1
  548. package/dist/components-CyD6a7gQ.cjs +0 -73
  549. package/dist/date-range-Sfyco9-n.js.map +0 -1
  550. package/dist/date-range-ZAaQB22I.cjs.map +0 -1
  551. package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
  552. package/dist/delay-7boauN6N.cjs +0 -9
  553. package/dist/float-D5rNC82i.cjs +0 -1
  554. package/dist/form-BqN1AGFj.cjs +0 -1
  555. package/dist/form-BqN1AGFj.cjs.map +0 -1
  556. package/dist/form-CajC5HnO.js +0 -270
  557. package/dist/form-CajC5HnO.js.map +0 -1
  558. package/dist/icons-B57_93VV.cjs.map +0 -1
  559. package/dist/icons-BDqiGXrO.js.map +0 -1
  560. package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
  561. package/dist/input-chip-QejNcRnS.js.map +0 -1
  562. package/dist/layout-DNYG3phx.cjs +0 -17
  563. package/dist/notification-CZFEhWxc.cjs +0 -23
  564. package/dist/radio-group-Cspwd-Vw.cjs +0 -40
  565. package/dist/src-BtQVyqMy.cjs +0 -269
  566. package/dist/surface-BjKZoJxK.cjs +0 -7
  567. package/dist/surface-pK8hME5c.js +0 -21
  568. package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
  569. package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
  570. package/dist/textarea-Cp1ZE60O.cjs +0 -35
  571. package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
  572. package/dist/textarea-D7q8exMg.js.map +0 -1
  573. package/dist/theme-Da4SPq9X.cjs +0 -181
  574. package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
  575. package/dist/typewriter-B2TnHPjw.cjs +0 -123
  576. package/dist/window-CM1ycigo.js.map +0 -1
  577. package/dist/window-Uii13x_r.cjs.map +0 -1
  578. package/mixins/baseElement.ts +0 -190
  579. package/mixins/constructor.ts +0 -3
  580. package/mixins/discovery.service.ts +0 -221
  581. package/mixins/formField.mixin.ts +0 -228
  582. package/mixins/index.ts +0 -7
  583. package/mixins/litElement.mixin.ts +0 -15
  584. package/mixins/scss.d.ts +0 -21
  585. package/mixins/surface.mixin.ts +0 -93
  586. package/mixins/tailwind.css +0 -549
  587. package/mixins/tailwind.mixin.ts +0 -30
  588. package/src/form/form-v2.ts +0 -268
  589. package/src/layout/v2/grid.ts +0 -93
  590. package/src/notification/outlet.ts +0 -16
  591. package/src/store/immer-integration.ts +0 -99
  592. package/src/tooltip/tooltip.ts +0 -216
  593. /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
  594. /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
  595. /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
  596. /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
  597. /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
  598. /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
  599. /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
  600. /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
  601. /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
  602. /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
  603. /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
  604. /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
  605. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
  606. /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
  607. /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
  608. /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
  609. /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
  610. /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
  611. /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
  612. /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
  613. /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
  614. /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
  615. /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
  616. /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
@@ -1,5 +1,4 @@
1
1
  import dayjs from 'dayjs'
2
- import { PresetUnit } from './date-range-presets'
3
2
 
4
3
  /**
5
4
  * Format a date range into a human-readable string
@@ -63,73 +62,3 @@ export function detectDateRangeType(fromDate: dayjs.Dayjs, toDate: dayjs.Dayjs):
63
62
  }
64
63
  }
65
64
 
66
- /**
67
- * Calculate the appropriate shift unit and amount for a date range
68
- */
69
- export function calculateShiftParams(
70
- fromDate: dayjs.Dayjs,
71
- toDate: dayjs.Dayjs,
72
- activePresetStep?: PresetUnit
73
- ): { unit: PresetUnit; amount: number } {
74
- if (activePresetStep) {
75
- return { unit: activePresetStep, amount: 1 }
76
- }
77
-
78
- const rangeDurationInDays = toDate.diff(fromDate, 'day')
79
-
80
- // For very long ranges, use years
81
- if (rangeDurationInDays >= 360) {
82
- return { unit: 'year', amount: Math.round(rangeDurationInDays / 365) }
83
- }
84
- // For long ranges, use quarters
85
- else if (rangeDurationInDays >= 90) {
86
- return { unit: 'quarter', amount: Math.round(rangeDurationInDays / 90) }
87
- }
88
- // For medium-long ranges, use months
89
- else if (rangeDurationInDays >= 30) {
90
- return { unit: 'month', amount: Math.round(rangeDurationInDays / 30) }
91
- }
92
- // For medium ranges, use weeks
93
- else if (rangeDurationInDays >= 7) {
94
- return { unit: 'week', amount: Math.round(rangeDurationInDays / 7) }
95
- }
96
- // For shorter ranges, use days
97
- else {
98
- return { unit: 'day', amount: rangeDurationInDays + 1 }
99
- }
100
- }
101
-
102
- /**
103
- * Helper method to safely add/subtract quarter values
104
- */
105
- export function adjustQuarter(date: dayjs.Dayjs, amount: number, direction: 1 | -1): dayjs.Dayjs {
106
- // Get current quarter (1-4)
107
- const currentQuarter = date.quarter()
108
-
109
- // Calculate new quarter
110
- let newQuarter = currentQuarter + direction * amount
111
- let yearAdjustment = 0
112
-
113
- // Handle year boundaries
114
- while (newQuarter > 4) {
115
- newQuarter -= 4
116
- yearAdjustment += 1
117
- }
118
-
119
- while (newQuarter < 1) {
120
- newQuarter += 4
121
- yearAdjustment -= 1
122
- }
123
-
124
- // Adjust year if needed
125
- const adjustedDate = date.add(yearAdjustment, 'year')
126
-
127
- // Set to the start of the new quarter
128
- const newDate = adjustedDate.month((newQuarter - 1) * 3)
129
-
130
- // Maintain the same day of month if possible
131
- const daysInMonth = newDate.daysInMonth()
132
- const targetDay = Math.min(date.date(), daysInMonth)
133
-
134
- return newDate.date(targetDay)
135
- }
@@ -77,6 +77,15 @@ export const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(super
77
77
  // Animation guard
78
78
  private animating = false
79
79
 
80
+ /** ElementInternals — used for broadcasting `:state(open)` to consumers. */
81
+ protected dialogInternals: ElementInternals | undefined = (() => {
82
+ try {
83
+ return this.attachInternals()
84
+ } catch {
85
+ return undefined
86
+ }
87
+ })()
88
+
80
89
  /**
81
90
  * Check if the dialog is currently animating
82
91
  */
@@ -285,6 +294,7 @@ export const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(super
285
294
  await this.updateComplete
286
295
 
287
296
  this.setAttribute('active', '')
297
+ this.dialogInternals?.states.add('open')
288
298
  await this.updateComplete
289
299
 
290
300
  // Save focus and set siblings to inert for focus trap
@@ -443,6 +453,7 @@ export const DialogBase = <T extends Constructor<LitElement & IBaseMixin>>(super
443
453
  this.animating = false
444
454
 
445
455
  this.removeAttribute('active')
456
+ this.dialogInternals?.states.delete('open')
446
457
 
447
458
  // Restore inert siblings
448
459
  for (const el of this.inertSiblings) {
@@ -1,5 +1,5 @@
1
1
  import { $LitElement } from '@mixins/index'
2
- import { css, html } from 'lit'
2
+ import { css, html, nothing } from 'lit'
3
3
  import { customElement, property, queryAssignedElements } from 'lit/decorators.js'
4
4
  import { cursorGlow } from '../directives/cursor-glow'
5
5
  import { createRef, ref, type Ref } from 'lit/directives/ref.js'
@@ -126,6 +126,13 @@ export class SchmancyDialog extends DialogBase(
126
126
  */
127
127
  private _dragHandleRef: Ref<HTMLElement> = createRef()
128
128
 
129
+ /**
130
+ * Stable per-instance id used for ARIA labelledby/describedby wiring
131
+ */
132
+ private readonly _a11yId = `schmancy-dialog-${Math.random().toString(36).slice(2, 10)}`
133
+ private get _titleId() { return `${this._a11yId}-title` }
134
+ private get _descId() { return `${this._a11yId}-desc` }
135
+
129
136
  /**
130
137
  * Return the dialog element for positioning/size measurement.
131
138
  * In content mode, returns the first slotted child (the actual component).
@@ -268,10 +275,23 @@ export class SchmancyDialog extends DialogBase(
268
275
 
269
276
  // Confirm mode: with title/buttons
270
277
  if (this.isConfirmMode) {
278
+ const hasTitle = !!this.title?.trim()
279
+ const hasSubtitle = !!this.subtitle?.trim()
280
+ const hasMessage = !!this.message?.trim()
281
+ const describedBy = [hasSubtitle && this._descId + '-sub', hasMessage && this._descId + '-msg']
282
+ .filter(Boolean)
283
+ .join(' ') || ''
271
284
  return html`
272
285
  <div ${ref(this._backdropRef)} class="fixed inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 backdrop-brightness-105" @click=${this.handleClose}></div>
273
286
 
274
- <div ${ref(this._confirmDialogRef)} class=${this.classMap(dialogClasses)} role="alertdialog" aria-modal="true">
287
+ <div
288
+ ${ref(this._confirmDialogRef)}
289
+ class=${this.classMap(dialogClasses)}
290
+ role="alertdialog"
291
+ aria-modal="true"
292
+ aria-labelledby=${hasTitle ? this._titleId : nothing}
293
+ aria-describedby=${describedBy || nothing}
294
+ >
275
295
  <schmancy-surface
276
296
  ${cursorGlow({ radius: 250, intensity: 0.1 })}
277
297
  rounded=${this.isMobile ? 'top' : 'all'}
@@ -283,13 +303,13 @@ export class SchmancyDialog extends DialogBase(
283
303
  <schmancy-scroll direction="vertical" hide class="p-4 pt-2">
284
304
  <schmancy-form @submit=${this.handleConfirm}>
285
305
  ${when(
286
- this.title?.trim(),
306
+ hasTitle,
287
307
  () => html`
288
- <schmancy-typography type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
308
+ <schmancy-typography id=${this._titleId} type="title" token="md" class="mb-1">${this.title}</schmancy-typography>
289
309
  ${when(
290
- this.subtitle?.trim(),
310
+ hasSubtitle,
291
311
  () => html`
292
- <schmancy-typography type="subtitle" token="xs" class="mb-2">
312
+ <schmancy-typography id="${this._descId}-sub" type="subtitle" token="xs" class="mb-2">
293
313
  ${this.subtitle}
294
314
  </schmancy-typography>
295
315
  `,
@@ -299,8 +319,8 @@ export class SchmancyDialog extends DialogBase(
299
319
  ${hasCustomContent
300
320
  ? html`<div class="mb-4"><slot name="content"></slot></div>`
301
321
  : when(
302
- this.message?.trim(),
303
- () => html`<schmancy-typography type="body" class="mb-4">${this.message}</schmancy-typography>`,
322
+ hasMessage,
323
+ () => html`<schmancy-typography id="${this._descId}-msg" type="body" class="mb-4">${this.message}</schmancy-typography>`,
304
324
  )}
305
325
  <div class=${buttonContainerClasses}>
306
326
  <schmancy-button
@@ -6,7 +6,9 @@ import { customElement, property } from 'lit/decorators.js'
6
6
  * Content container for the schmancy-dropdown component.
7
7
  *
8
8
  * @element schmancy-dropdown-content
9
- * @slot - Default slot for dropdown content
9
+ * @slot - Default slot for dropdown content.
10
+ * @csspart content - The inner wrapper element; style to override panel
11
+ * backgrounds, shadows, padding, or borders without shadow-root piercing.
10
12
  */
11
13
  @customElement('schmancy-dropdown-content')
12
14
  export class SchmancyDropdownContent extends TailwindElement(css`
@@ -0,0 +1,137 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest'
2
+ import './form'
3
+ import '../input/input'
4
+ import '../button/button'
5
+ import '../checkbox/checkbox'
6
+
7
+ describe('schmancy-form', () => {
8
+ let host: HTMLDivElement
9
+
10
+ beforeEach(() => {
11
+ host = document.createElement('div')
12
+ document.body.appendChild(host)
13
+ })
14
+
15
+ afterEach(() => {
16
+ host.remove()
17
+ })
18
+
19
+ const nextUpdate = () => new Promise(r => requestAnimationFrame(() => r(null)))
20
+
21
+ it('wraps children in a real light-DOM <form>', async () => {
22
+ host.innerHTML = `
23
+ <schmancy-form>
24
+ <schmancy-checkbox name="agree"></schmancy-checkbox>
25
+ </schmancy-form>
26
+ `
27
+ const sf = host.querySelector('schmancy-form') as HTMLElement & { form: HTMLFormElement | null }
28
+ await nextUpdate()
29
+ expect(sf.form).toBeInstanceOf(HTMLFormElement)
30
+ expect(sf.querySelector(':scope > form')).toBe(sf.form)
31
+ expect(sf.form!.querySelector('schmancy-checkbox')).toBeTruthy()
32
+ })
33
+
34
+ it('emits submit with FormData on native submission', async () => {
35
+ host.innerHTML = `
36
+ <schmancy-form>
37
+ <schmancy-checkbox name="agree"></schmancy-checkbox>
38
+ <button id="go" type="submit">Go</button>
39
+ </schmancy-form>
40
+ `
41
+ const sf = host.querySelector('schmancy-form') as HTMLElement
42
+ const cb = host.querySelector('schmancy-checkbox') as HTMLElement & { value: boolean }
43
+ cb.value = true
44
+ await nextUpdate()
45
+ await nextUpdate()
46
+
47
+ const submits: FormData[] = []
48
+ sf.addEventListener('submit', (e: Event) => {
49
+ submits.push((e as CustomEvent).detail as FormData)
50
+ })
51
+
52
+ const btn = host.querySelector('#go') as HTMLButtonElement
53
+ btn.click()
54
+
55
+ expect(submits).toHaveLength(1)
56
+ expect(submits[0].get('agree')).toBe('on')
57
+ })
58
+
59
+ it('blocks submit when a required field is empty', async () => {
60
+ host.innerHTML = `
61
+ <schmancy-form>
62
+ <schmancy-checkbox name="agree" required></schmancy-checkbox>
63
+ <button id="go" type="submit">Go</button>
64
+ </schmancy-form>
65
+ `
66
+ const sf = host.querySelector('schmancy-form') as HTMLElement
67
+ await nextUpdate()
68
+ await nextUpdate()
69
+
70
+ let submitCount = 0
71
+ sf.addEventListener('submit', () => submitCount++)
72
+
73
+ const btn = host.querySelector('#go') as HTMLButtonElement
74
+ btn.click()
75
+
76
+ expect(submitCount).toBe(0)
77
+ })
78
+
79
+ it('respects novalidate attribute', async () => {
80
+ host.innerHTML = `
81
+ <schmancy-form novalidate>
82
+ <schmancy-checkbox name="agree" required></schmancy-checkbox>
83
+ <button id="go" type="submit">Go</button>
84
+ </schmancy-form>
85
+ `
86
+ const sf = host.querySelector('schmancy-form') as HTMLElement
87
+ await nextUpdate()
88
+ await nextUpdate()
89
+
90
+ let submitCount = 0
91
+ sf.addEventListener('submit', () => submitCount++)
92
+
93
+ const btn = host.querySelector('#go') as HTMLButtonElement
94
+ btn.click()
95
+
96
+ expect(submitCount).toBe(1)
97
+ })
98
+
99
+ it('schmancy-button type=submit triggers form submission', async () => {
100
+ host.innerHTML = `
101
+ <schmancy-form>
102
+ <schmancy-input name="email" value="x@y.z" required></schmancy-input>
103
+ <schmancy-button id="sbtn" type="submit">Save</schmancy-button>
104
+ </schmancy-form>
105
+ `
106
+ const sf = host.querySelector('schmancy-form') as HTMLElement
107
+ const btn = host.querySelector('#sbtn') as HTMLElement
108
+ await nextUpdate()
109
+ await nextUpdate()
110
+
111
+ let submitted = false
112
+ sf.addEventListener('submit', () => (submitted = true))
113
+
114
+ btn.click()
115
+ await nextUpdate()
116
+
117
+ expect(submitted).toBe(true)
118
+ })
119
+
120
+ it('dispatches a single submit event (no double-fire from native + custom)', async () => {
121
+ host.innerHTML = `
122
+ <schmancy-form>
123
+ <button id="go" type="submit">Go</button>
124
+ </schmancy-form>
125
+ `
126
+ const sf = host.querySelector('schmancy-form') as HTMLElement
127
+ await nextUpdate()
128
+
129
+ let count = 0
130
+ sf.addEventListener('submit', () => count++)
131
+
132
+ const btn = host.querySelector('#go') as HTMLButtonElement
133
+ btn.click()
134
+
135
+ expect(count).toBe(1)
136
+ })
137
+ })
package/src/form/form.ts CHANGED
@@ -1,189 +1,146 @@
1
- import { TailwindElement } from '@mixins/index'
2
- import { html, LitElement } from 'lit'
3
- import { customElement, property } from 'lit/decorators.js'
4
- import { fromEvent, merge, Subject, takeUntil, tap } from 'rxjs'
5
-
6
- export interface FormEventMap {
7
- submit: CustomEvent<FormData>
8
- reset: CustomEvent
9
- }
1
+ import { customElement } from 'lit/decorators.js'
10
2
 
11
3
  /**
12
- * The form is a component used to collect user input from
13
- * interactive controls.
4
+ * A thin ergonomic wrapper around a native `<form>` element. Its children are
5
+ * reparented into a `<form>` element in light DOM on connection, so:
14
6
  *
15
- * @element schmancy-form
7
+ * - Form-associated custom elements (FACE) resolve their `internals.form`
8
+ * correctly via native DOM ancestry.
9
+ * - `new FormData(form)` collects values from every FACE + native control
10
+ * without any manual walking.
11
+ * - `form.reset()` triggers `formResetCallback()` on every FACE.
12
+ * - `form.reportValidity()` runs native validation UI.
13
+ * - `<button type="submit">` and `<schmancy-button type="submit">` both
14
+ * submit the form via the native submitter pipeline.
16
15
  *
17
- * @slot - Default slot for the form.
16
+ * This component exists only to translate the native `submit` / `reset`
17
+ * events into the Schmancy event shape (`detail: FormData`). All heavy
18
+ * lifting is the platform's.
18
19
  *
19
- * @fires submit - Emitted when the form is submitted.
20
- * @fires reset - Emitted when the form is reset.
20
+ * @element schmancy-form
21
+ * @fires submit - `CustomEvent<FormData>` emitted when the form is submitted.
22
+ * @fires reset - Emitted after the underlying form resets.
21
23
  */
22
24
  @customElement('schmancy-form')
23
- export default class SchmancyForm extends TailwindElement() {
24
- private $disconnecting = new Subject()
25
- public static readonly tagName = 'schmancy-form'
26
- protected static shadowRootOptions = {
27
- ...LitElement.shadowRootOptions,
28
- mode: 'open',
29
- delegatesFocus: false,
25
+ export default class SchmancyForm extends HTMLElement {
26
+ public static readonly tagName: string = 'schmancy-form'
27
+
28
+ private _form: HTMLFormElement | null = null
29
+ private _wrapped = false
30
+
31
+ /** ElementInternals for `:state(invalid)` / `:state(submitting)` broadcasting. */
32
+ private readonly _internals: ElementInternals | undefined = (() => {
33
+ try { return this.attachInternals() } catch { return undefined }
34
+ })()
35
+
36
+ /** Skip built-in constraint validation on submit. Mirrors `<form novalidate>`. */
37
+ get novalidate(): boolean {
38
+ return this.hasAttribute('novalidate')
39
+ }
40
+ set novalidate(value: boolean) {
41
+ if (value) this.setAttribute('novalidate', '')
42
+ else this.removeAttribute('novalidate')
30
43
  }
31
44
 
32
- private _controlsWithChecked = [
33
- 'input',
34
- 'radio',
35
- 'schmancy-radio',
36
- 'schmancy-switch',
37
- 'schmancy-checkbox',
38
- 'schmancy-radio-group',
39
- 'schmancy-autocomplete',
40
- 'schmancy-select',
41
- ]
42
- private _controlsWithValue = [
43
- 'input',
44
- 'schmancy-input',
45
- 'schmancy-mask-input',
46
- 'textarea',
47
- 'schmancy-rating',
48
- 'schmancy-select',
49
- 'schmancy-combo',
50
- 'schmancy-date-time-input',
51
- 'schmancy-autocomplete',
52
- 'schmancy-checkbox',
53
- 'schmancy-select',
54
- ]
55
- private _controlsThatSubmit = ['button', 'schmancy-input', 'schmancy-button', 'schmancy-icon-button']
56
-
57
- /** Specifies if form data validation should be skipped on submit.
58
- * @attr novalidate
59
- * @type {boolean}
60
- * @public
45
+ connectedCallback(): void {
46
+ this.ensureForm()
47
+ }
48
+
49
+ disconnectedCallback(): void {
50
+ if (this._form) {
51
+ this._form.removeEventListener('submit', this._onSubmit)
52
+ this._form.removeEventListener('reset', this._onReset)
53
+ }
54
+ }
55
+
56
+ /**
57
+ * On first connection, create the internal light-DOM `<form>` and move
58
+ * existing children into it. Re-entry is a no-op.
61
59
  */
62
- @property({ type: Boolean, reflect: true }) public novalidate = false
63
-
64
- constructor() {
65
- super()
66
- merge(
67
- fromEvent<MouseEvent>(this, 'click').pipe(
68
- tap(e => {
69
- if ((e.target as HTMLButtonElement).type?.toLowerCase() === 'submit') this.handleSubmitRequest(e)
70
- }),
71
- ),
72
- fromEvent<KeyboardEvent>(this, 'keydown').pipe(
73
- tap(e => {
74
- if (e.code === 'Enter' || e.key === 'Enter') {
75
- this.handleSubmitRequest(e)
76
- }
77
- }),
78
- ),
79
- )
80
- .pipe(takeUntil(this.$disconnecting))
81
- .subscribe()
60
+ private ensureForm(): void {
61
+ if (this._wrapped) return
62
+
63
+ // Respect an explicit consumer-supplied wrapping <form>.
64
+ const existing = Array.from(this.children).find(c => c instanceof HTMLFormElement) as
65
+ | HTMLFormElement
66
+ | undefined
67
+
68
+ const form = existing ?? document.createElement('form')
69
+ form.noValidate = true
70
+
71
+ if (!existing) {
72
+ // Snapshot children because appending mutates `this.childNodes`.
73
+ const children = Array.from(this.childNodes)
74
+ for (const node of children) form.appendChild(node)
75
+ this.appendChild(form)
76
+ }
77
+
78
+ form.addEventListener('submit', this._onSubmit)
79
+ form.addEventListener('reset', this._onReset)
80
+
81
+ this._form = form
82
+ this._wrapped = true
82
83
  }
83
84
 
84
- /** Submits the form. */
85
- public submit(): boolean {
86
- const formData = this.getFormData()
87
- if (!this.novalidate && !this.reportValidity()) {
88
- return false
85
+ private _onSubmit = (e: SubmitEvent): void => {
86
+ // Prevent the default navigation AND stop the native submit from
87
+ // bubbling past this wrapper — otherwise consumers listening for
88
+ // `submit` on <schmancy-form> would see the native event plus our
89
+ // CustomEvent (two fires per submission).
90
+ e.preventDefault()
91
+ e.stopPropagation()
92
+ if (!this.novalidate && !this._form!.reportValidity()) {
93
+ this._internals?.states.add('invalid')
94
+ return
95
+ }
96
+ this._internals?.states.delete('invalid')
97
+ this._internals?.states.add('submitting')
98
+ try {
99
+ this.dispatchEvent(
100
+ new CustomEvent('submit', {
101
+ detail: new FormData(this._form!),
102
+ }),
103
+ )
104
+ } finally {
105
+ this._internals?.states.delete('submitting')
89
106
  }
90
- this.dispatchEvent(new CustomEvent('submit', { detail: formData }))
91
- return true
92
107
  }
93
108
 
94
- /** Resets the form. */
95
- public reset() {
96
- const formElements = this.getFormElements()
97
- formElements.forEach(element => {
98
- const tagName = element.tagName.toLowerCase()
99
- if (tagName === 'select') {
100
- for (let i = 0; i < element.options.length; i++) {
101
- const option = element.options[i]
102
- option.selected = option.defaultSelected
103
- }
104
- } else if (
105
- (tagName === 'input' && (element.type === 'checkbox' || element.type == 'radio')) ||
106
- (tagName !== 'input' && this._controlsWithChecked.includes(tagName))
107
- ) {
108
- element.checked = element.hasAttribute('checked')
109
- } else if (
110
- tagName === 'schmancy-input' ||
111
- tagName === 'schmancy-rating' ||
112
- tagName === 'schmancy-mask-input' ||
113
- tagName === 'schmancy-date-time-input'
114
- ) {
115
- element.value = element.getAttribute('value')
116
- } else if (this._controlsWithValue.includes(tagName)) {
117
- element.value = element.defaultValue
118
- }
119
- })
109
+ private _onReset = (e: Event): void => {
110
+ e.stopPropagation()
111
+ this._internals?.states.delete('invalid')
120
112
  this.dispatchEvent(new CustomEvent('reset'))
121
113
  }
122
114
 
123
- private getFormElements(): any[] {
124
- const slot = this.shadowRoot?.querySelector('slot')
125
- const assignedElements = slot?.assignedElements({ flatten: true })
126
- const formElements: any[] = []
127
- assignedElements?.forEach((element: any) => {
128
- if (!element.disabled) {
129
- formElements.push(element)
130
- }
131
- const children = Array.from(element.getElementsByTagName('*')).filter((element: any) => !element.disabled)
132
- formElements.push(...children)
133
- })
134
-
135
- return formElements
115
+ /** Programmatically submit via the native submitter pipeline. */
116
+ public submit(): boolean {
117
+ if (!this._form) return false
118
+ if (!this.novalidate && !this._form.reportValidity()) return false
119
+ this._form.requestSubmit()
120
+ return true
136
121
  }
137
122
 
138
- public getFormData() {
139
- const formData = new FormData()
140
-
141
- const formElements = this.getFormElements()
142
- formElements.forEach(element => {
143
- const tagName = element.tagName.toLowerCase()
144
- if (tagName === 'select') {
145
- for (let i = 0; i < element.options.length; i++) {
146
- const option = element.options[i]
147
- if (option.selected) {
148
- formData.append(element.name, option.value)
149
- }
150
- }
151
- } else if (this._controlsWithChecked.includes(tagName) && element.checked) {
152
- formData.append(element.name, element.value || 'on')
153
- } else if (
154
- this._controlsWithValue.includes(tagName) &&
155
- element.type !== 'checkbox' &&
156
- element.type !== 'radio' &&
157
- element.type !== 'submit'
158
- ) {
159
- formData.append(element.name, element.value)
160
- }
161
- })
162
-
163
- return formData
123
+ /** Programmatically reset via native `form.reset()`. */
124
+ public reset(): void {
125
+ this._form?.reset()
164
126
  }
165
127
 
166
- /** Checks for validity of the form. */
167
128
  public reportValidity(): boolean {
168
- const formElements = this.getFormElements()
169
- return !formElements.some(
170
- element => typeof element.reportValidity === 'function' && element.reportValidity() === false,
171
- )
129
+ return this._form?.reportValidity() ?? true
172
130
  }
173
131
 
174
- private handleSubmitRequest(event: MouseEvent | KeyboardEvent) {
175
- const targetElement: any = event.target as HTMLElement
176
- if (this._controlsThatSubmit.includes(targetElement.tagName.toLowerCase())) {
177
- this.submit()
178
- } else if (targetElement.type?.toLowerCase() === 'reset') {
179
- this.reset()
180
- }
132
+ public checkValidity(): boolean {
133
+ return this._form?.checkValidity() ?? true
134
+ }
181
135
 
182
- return true
136
+ /** Snapshot of current form values. Equivalent to `new FormData(this.form)`. */
137
+ public getFormData(): FormData {
138
+ return this._form ? new FormData(this._form) : new FormData()
183
139
  }
184
140
 
185
- protected override render() {
186
- return html`<slot></slot>`
141
+ /** The underlying `<form>` element (escape hatch for advanced integration). */
142
+ public get form(): HTMLFormElement | null {
143
+ return this._form
187
144
  }
188
145
  }
189
146
 
@@ -192,3 +149,30 @@ declare global {
192
149
  'schmancy-form': SchmancyForm
193
150
  }
194
151
  }
152
+
153
+ // === Retained type surface ===
154
+ // These interfaces were part of the old collection-based engine. They're kept
155
+ // exported because downstream code may still import them as documentation.
156
+ // The new implementation no longer uses them internally.
157
+
158
+ export interface FormElement extends HTMLElement {
159
+ name?: string
160
+ value?: string
161
+ disabled?: boolean
162
+ type?: string
163
+ defaultValue?: string
164
+ }
165
+
166
+ export interface CheckableFormElement extends FormElement {
167
+ checked?: boolean
168
+ }
169
+
170
+ export interface ValidatableFormElement extends FormElement {
171
+ reportValidity?: () => boolean
172
+ checkValidity?: () => boolean
173
+ }
174
+
175
+ export interface FormEventMap {
176
+ submit: CustomEvent<FormData>
177
+ reset: CustomEvent
178
+ }
package/src/form/index.ts CHANGED
@@ -1,2 +1,2 @@
1
- export * from './form-v2';
2
- export * from './form';
1
+ export * from './form'
2
+ export { default as SchmancyForm } from './form'