@mhmo91/schmancy 0.9.4 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1037) hide show
  1. package/.claude-plugin/plugin.json +13 -0
  2. package/README.md +14 -4
  3. package/custom-elements.json +493 -718
  4. package/dist/.claude-plugin/plugin.json +13 -0
  5. package/dist/animation-Bcwh107v.cjs.map +1 -0
  6. package/dist/animation-CXKSuUoE.js.map +1 -0
  7. package/dist/area-BARjKpE9.js +590 -0
  8. package/dist/area-BARjKpE9.js.map +1 -0
  9. package/dist/area-D9b9dHQr.cjs +12 -0
  10. package/dist/area-D9b9dHQr.cjs.map +1 -0
  11. package/dist/area.cjs +1 -1
  12. package/dist/area.js +1 -1
  13. package/dist/audio-C7TzWI8M.js +335 -0
  14. package/dist/audio-C7TzWI8M.js.map +1 -0
  15. package/dist/audio-DUVz7Ars.cjs +1 -0
  16. package/dist/audio-DUVz7Ars.cjs.map +1 -0
  17. package/dist/audio.cjs +1 -1
  18. package/dist/audio.js +2 -2
  19. package/dist/autocomplete-AI2CCJmK.cjs +115 -0
  20. package/dist/autocomplete-AI2CCJmK.cjs.map +1 -0
  21. package/dist/autocomplete-DOimwVMP.js +404 -0
  22. package/dist/autocomplete-DOimwVMP.js.map +1 -0
  23. package/dist/autocomplete.cjs +1 -1
  24. package/dist/autocomplete.js +1 -1
  25. package/dist/badge.cjs +1 -1
  26. package/dist/badge.js +1 -1
  27. package/dist/boat-Bk4u-LzT.cjs +80 -0
  28. package/dist/boat-Bk4u-LzT.cjs.map +1 -0
  29. package/dist/boat-DrghVeWK.js +347 -0
  30. package/dist/boat-DrghVeWK.js.map +1 -0
  31. package/dist/boat.cjs +1 -1
  32. package/dist/boat.js +1 -1
  33. package/dist/breadcrumb.cjs +34 -0
  34. package/dist/breadcrumb.cjs.map +1 -0
  35. package/dist/breadcrumb.js +73 -0
  36. package/dist/breadcrumb.js.map +1 -0
  37. package/dist/busy-BmFfwyz_.js +168 -0
  38. package/dist/busy-BmFfwyz_.js.map +1 -0
  39. package/dist/busy-c_q_F8O0.cjs +134 -0
  40. package/dist/busy-c_q_F8O0.cjs.map +1 -0
  41. package/dist/busy.cjs +1 -1
  42. package/dist/busy.js +1 -1
  43. package/dist/button.cjs +4 -4
  44. package/dist/button.cjs.map +1 -1
  45. package/dist/button.js +25 -6
  46. package/dist/button.js.map +1 -1
  47. package/dist/card-BADJHUMA.js +285 -0
  48. package/dist/card-BADJHUMA.js.map +1 -0
  49. package/dist/card-C_E944_Z.cjs +177 -0
  50. package/dist/card-C_E944_Z.cjs.map +1 -0
  51. package/dist/card.cjs +1 -1
  52. package/dist/card.js +1 -1
  53. package/dist/charts.cjs +3 -3
  54. package/dist/charts.cjs.map +1 -1
  55. package/dist/charts.js +2 -2
  56. package/dist/checkbox-D7rvCrGk.js +629 -0
  57. package/dist/checkbox-D7rvCrGk.js.map +1 -0
  58. package/dist/checkbox-ZqDoCagB.cjs +39 -0
  59. package/dist/checkbox-ZqDoCagB.cjs.map +1 -0
  60. package/dist/checkbox.cjs +1 -1
  61. package/dist/checkbox.js +1 -1
  62. package/dist/chips-Cux635Qs.cjs +253 -0
  63. package/dist/chips-Cux635Qs.cjs.map +1 -0
  64. package/dist/chips-vdzIsesI.js +655 -0
  65. package/dist/chips-vdzIsesI.js.map +1 -0
  66. package/dist/chips.cjs +1 -1
  67. package/dist/chips.js +2 -2
  68. package/dist/code-highlight-C9lKek2p.cjs +190 -0
  69. package/dist/code-highlight-C9lKek2p.cjs.map +1 -0
  70. package/dist/code-highlight-D6yruol6.js +291 -0
  71. package/dist/code-highlight-D6yruol6.js.map +1 -0
  72. package/dist/code-highlight.cjs +1 -1
  73. package/dist/code-highlight.js +1 -1
  74. package/dist/components-ByRyEzz5.cjs +73 -0
  75. package/dist/components-ByRyEzz5.cjs.map +1 -0
  76. package/dist/components-DSvPKR9Q.js +730 -0
  77. package/dist/components-DSvPKR9Q.js.map +1 -0
  78. package/dist/components.cjs +1 -1
  79. package/dist/components.js +1 -1
  80. package/dist/connectivity.cjs +7 -7
  81. package/dist/connectivity.cjs.map +1 -1
  82. package/dist/connectivity.js +5 -4
  83. package/dist/connectivity.js.map +1 -1
  84. package/dist/content-drawer.cjs +1 -1
  85. package/dist/content-drawer.js +1 -1
  86. package/dist/cursor-glow-82y5h3E4.cjs +1 -0
  87. package/dist/cursor-glow-82y5h3E4.cjs.map +1 -0
  88. package/dist/cursor-glow-C2YRrB8Z.js +46 -0
  89. package/dist/cursor-glow-C2YRrB8Z.js.map +1 -0
  90. package/dist/date-range-DJsavigf.cjs +131 -0
  91. package/dist/date-range-DJsavigf.cjs.map +1 -0
  92. package/dist/date-range-inline-B87TDYI6.js +267 -0
  93. package/dist/date-range-inline-B87TDYI6.js.map +1 -0
  94. package/dist/date-range-inline-De-M0VmL.cjs +43 -0
  95. package/dist/date-range-inline-De-M0VmL.cjs.map +1 -0
  96. package/dist/date-range-inline.cjs +1 -1
  97. package/dist/date-range-inline.js +1 -1
  98. package/dist/date-range-tEX2Jx2j.js +946 -0
  99. package/dist/date-range-tEX2Jx2j.js.map +1 -0
  100. package/dist/date-range.cjs +1 -1
  101. package/dist/date-range.js +1 -1
  102. package/dist/delay-BvVdfhAR.cjs +9 -0
  103. package/dist/delay-BvVdfhAR.cjs.map +1 -0
  104. package/dist/delay-CZw37zps.js +347 -0
  105. package/dist/delay-CZw37zps.js.map +1 -0
  106. package/dist/delay.cjs +1 -1
  107. package/dist/delay.js +1 -1
  108. package/dist/details-Bhz8_whd.cjs +168 -0
  109. package/dist/details-Bhz8_whd.cjs.map +1 -0
  110. package/dist/details-D7VTnLOh.js +294 -0
  111. package/dist/details-D7VTnLOh.js.map +1 -0
  112. package/dist/details.cjs +1 -1
  113. package/dist/details.js +1 -1
  114. package/dist/dialog-service-ClFrOWf4.js +193 -0
  115. package/dist/dialog-service-ClFrOWf4.js.map +1 -0
  116. package/dist/dialog-service-DcuAavp2.cjs +1 -0
  117. package/dist/dialog-service-DcuAavp2.cjs.map +1 -0
  118. package/dist/dialog.cjs +18 -11
  119. package/dist/dialog.cjs.map +1 -1
  120. package/dist/dialog.js +66 -43
  121. package/dist/dialog.js.map +1 -1
  122. package/dist/directives.cjs +1 -1
  123. package/dist/directives.js +5 -5
  124. package/dist/divider-S0bHwCCS.cjs +57 -0
  125. package/dist/divider-S0bHwCCS.cjs.map +1 -0
  126. package/dist/divider-zS232JDr.js +87 -0
  127. package/dist/divider-zS232JDr.js.map +1 -0
  128. package/dist/divider.cjs +1 -1
  129. package/dist/divider.js +1 -1
  130. package/dist/dropdown.cjs +4 -4
  131. package/dist/dropdown.cjs.map +1 -1
  132. package/dist/dropdown.js +8 -7
  133. package/dist/dropdown.js.map +1 -1
  134. package/dist/expand-BXt9SqAF.js +337 -0
  135. package/dist/expand-BXt9SqAF.js.map +1 -0
  136. package/dist/expand-Dr7TFXpl.cjs +141 -0
  137. package/dist/expand-Dr7TFXpl.cjs.map +1 -0
  138. package/dist/expand.cjs +1 -1
  139. package/dist/expand.js +1 -1
  140. package/dist/extra-BmZTXAp0.cjs +31 -0
  141. package/dist/extra-BmZTXAp0.cjs.map +1 -0
  142. package/dist/extra-COYhsOyZ.js +3435 -0
  143. package/dist/extra-COYhsOyZ.js.map +1 -0
  144. package/dist/extra.cjs +1 -1
  145. package/dist/extra.js +1 -1
  146. package/dist/float-CSRW-Rrd.cjs +1 -0
  147. package/dist/float-CSRW-Rrd.cjs.map +1 -0
  148. package/dist/float-DCXafWh6.js +5 -0
  149. package/dist/float-DCXafWh6.js.map +1 -0
  150. package/dist/float.cjs +1 -1
  151. package/dist/float.js +1 -1
  152. package/dist/flow-CqgDEIqK.js.map +1 -0
  153. package/dist/flow-DSu4PLt1.cjs.map +1 -0
  154. package/dist/form-CAY9GSCd.cjs +1 -0
  155. package/dist/form-CAY9GSCd.cjs.map +1 -0
  156. package/dist/form-D2cJ58TB.js +68 -0
  157. package/dist/form-D2cJ58TB.js.map +1 -0
  158. package/dist/form.cjs +1 -1
  159. package/dist/form.js +2 -1
  160. package/dist/hashContent-kKvXKFa9.cjs.map +1 -0
  161. package/dist/hashContent-nD2uWwi2.js.map +1 -0
  162. package/dist/icons-BbaI9Zf-.js +162 -0
  163. package/dist/icons-BbaI9Zf-.js.map +1 -0
  164. package/dist/icons-DPUeLS_Y.cjs +52 -0
  165. package/dist/icons-DPUeLS_Y.cjs.map +1 -0
  166. package/dist/icons.cjs +1 -1
  167. package/dist/icons.js +1 -1
  168. package/dist/iframe-CEDOvkql.js +45 -0
  169. package/dist/iframe-CEDOvkql.js.map +1 -0
  170. package/dist/iframe-Ct50FYXq.cjs +24 -0
  171. package/dist/iframe-Ct50FYXq.cjs.map +1 -0
  172. package/dist/iframe.cjs +1 -1
  173. package/dist/iframe.js +1 -1
  174. package/dist/index.cjs +1 -1
  175. package/dist/index.js +65 -59
  176. package/dist/input-DMjpf6V8.cjs +51 -0
  177. package/dist/input-DMjpf6V8.cjs.map +1 -0
  178. package/dist/input-Ri72dn5t.js +364 -0
  179. package/dist/input-Ri72dn5t.js.map +1 -0
  180. package/dist/input-chip-BhjGVpc3.cjs +146 -0
  181. package/dist/input-chip-BhjGVpc3.cjs.map +1 -0
  182. package/dist/input-chip-CI4__N8w.js +305 -0
  183. package/dist/input-chip-CI4__N8w.js.map +1 -0
  184. package/dist/input.cjs +1 -1
  185. package/dist/input.js +1 -1
  186. package/dist/intersection-D1v1UCVv.cjs.map +1 -0
  187. package/dist/intersection-LfEsy29T.js.map +1 -0
  188. package/dist/json.cjs +3 -3
  189. package/dist/json.cjs.map +1 -1
  190. package/dist/json.js +5 -4
  191. package/dist/json.js.map +1 -1
  192. package/dist/kbd.cjs +28 -0
  193. package/dist/kbd.cjs.map +1 -0
  194. package/dist/kbd.js +45 -0
  195. package/dist/kbd.js.map +1 -0
  196. package/dist/layout-BE2ld1IY.js +94 -0
  197. package/dist/layout-BE2ld1IY.js.map +1 -0
  198. package/dist/layout-D7xOqMkJ.cjs +17 -0
  199. package/dist/layout-D7xOqMkJ.cjs.map +1 -0
  200. package/dist/layout-PZCF3kwl.cjs +1 -0
  201. package/dist/layout-PZCF3kwl.cjs.map +1 -0
  202. package/dist/layout-uAQpJN31.js +268 -0
  203. package/dist/layout-uAQpJN31.js.map +1 -0
  204. package/dist/layout.cjs +1 -1
  205. package/dist/layout.js +2 -2
  206. package/dist/lightbox-C0OEHns9.js +679 -0
  207. package/dist/lightbox-C0OEHns9.js.map +1 -0
  208. package/dist/lightbox-cXRnvHMN.cjs +202 -0
  209. package/dist/lightbox-cXRnvHMN.cjs.map +1 -0
  210. package/dist/lightbox.cjs +1 -1
  211. package/dist/lightbox.js +1 -1
  212. package/dist/list-CmJ5h35b.cjs +40 -0
  213. package/dist/list-CmJ5h35b.cjs.map +1 -0
  214. package/dist/list-d1mHar5p.js +106 -0
  215. package/dist/list-d1mHar5p.js.map +1 -0
  216. package/dist/list.cjs +1 -1
  217. package/dist/list.js +1 -1
  218. package/dist/litElement.mixin-Bj2q1yPw.cjs +1 -0
  219. package/dist/litElement.mixin-Bj2q1yPw.cjs.map +1 -0
  220. package/dist/litElement.mixin-CncaUoxz.js +12 -0
  221. package/dist/litElement.mixin-CncaUoxz.js.map +1 -0
  222. package/dist/magnetic-Dj52WplI.js +47 -0
  223. package/dist/magnetic-Dj52WplI.js.map +1 -0
  224. package/dist/magnetic-aBBnj_vk.cjs +1 -0
  225. package/dist/magnetic-aBBnj_vk.cjs.map +1 -0
  226. package/dist/mailbox-BmChskZc.cjs +1142 -0
  227. package/dist/mailbox-BmChskZc.cjs.map +1 -0
  228. package/dist/mailbox-C4-E93be.js +1585 -0
  229. package/dist/mailbox-C4-E93be.js.map +1 -0
  230. package/dist/mailbox.cjs +1 -1
  231. package/dist/mailbox.js +1 -1
  232. package/dist/map-DHyYLhvy.js +206 -0
  233. package/dist/map-DHyYLhvy.js.map +1 -0
  234. package/dist/map-DYEvlNl0.cjs +80 -0
  235. package/dist/map-DYEvlNl0.cjs.map +1 -0
  236. package/dist/map.cjs +1 -1
  237. package/dist/map.js +1 -1
  238. package/dist/menu-BlPTI6H9.cjs +23 -0
  239. package/dist/menu-BlPTI6H9.cjs.map +1 -0
  240. package/dist/menu-DFDBADp4.js +51 -0
  241. package/dist/menu-DFDBADp4.js.map +1 -0
  242. package/dist/menu.cjs +1 -1
  243. package/dist/menu.js +1 -1
  244. package/dist/mixins.cjs +1 -1
  245. package/dist/mixins.cjs.map +1 -1
  246. package/dist/mixins.js +43 -15
  247. package/dist/mixins.js.map +1 -1
  248. package/dist/nav-drawer.cjs +1 -1
  249. package/dist/nav-drawer.js +1 -1
  250. package/dist/navigation-bar.cjs +1 -1
  251. package/dist/navigation-bar.js +1 -1
  252. package/dist/navigation-rail.cjs +3 -3
  253. package/dist/navigation-rail.cjs.map +1 -1
  254. package/dist/navigation-rail.js +2 -2
  255. package/dist/notification-DGpv8g2H.js +304 -0
  256. package/dist/notification-DGpv8g2H.js.map +1 -0
  257. package/dist/notification-DKVWYhqs.cjs +23 -0
  258. package/dist/notification-DKVWYhqs.cjs.map +1 -0
  259. package/dist/notification.cjs +1 -1
  260. package/dist/notification.js +1 -1
  261. package/dist/option-BD2eh458.js +98 -0
  262. package/dist/option-BD2eh458.js.map +1 -0
  263. package/dist/option-LtSDy2xf.cjs +43 -0
  264. package/dist/option-LtSDy2xf.cjs.map +1 -0
  265. package/dist/option.cjs +1 -1
  266. package/dist/option.js +1 -1
  267. package/dist/overlay-stack-CEYGD9T1.cjs.map +1 -0
  268. package/dist/overlay-stack-Ca4EK2Mu.js.map +1 -0
  269. package/dist/page.cjs +2 -2
  270. package/dist/page.cjs.map +1 -1
  271. package/dist/page.js +5 -5
  272. package/dist/progress-B5ChDPbB.cjs +51 -0
  273. package/dist/progress-B5ChDPbB.cjs.map +1 -0
  274. package/dist/progress-CE1Pk2hi.js +128 -0
  275. package/dist/progress-CE1Pk2hi.js.map +1 -0
  276. package/dist/progress.cjs +1 -1
  277. package/dist/progress.js +1 -1
  278. package/dist/provide-BZ9lq_Be.cjs +1 -0
  279. package/dist/provide-BZ9lq_Be.cjs.map +1 -0
  280. package/dist/provide-jn1Fj1vv.js +107 -0
  281. package/dist/provide-jn1Fj1vv.js.map +1 -0
  282. package/dist/qr-scanner.cjs +2 -2
  283. package/dist/qr-scanner.cjs.map +1 -1
  284. package/dist/qr-scanner.js +2 -2
  285. package/dist/radio-group-Cd9pZ2MR.cjs +40 -0
  286. package/dist/radio-group-Cd9pZ2MR.cjs.map +1 -0
  287. package/dist/radio-group-CyRHgIF3.js +106 -0
  288. package/dist/radio-group-CyRHgIF3.js.map +1 -0
  289. package/dist/radio-group.cjs +1 -1
  290. package/dist/radio-group.js +1 -1
  291. package/dist/range.cjs +4 -4
  292. package/dist/range.cjs.map +1 -1
  293. package/dist/range.js +4 -3
  294. package/dist/range.js.map +1 -1
  295. package/dist/reduced-motion-B83yZbcO.js.map +1 -0
  296. package/dist/reduced-motion-DR32yKEO.cjs.map +1 -0
  297. package/dist/rxjs-utils-Bldch1RO.js.map +1 -0
  298. package/dist/rxjs-utils-hAgKC7vk.cjs.map +1 -0
  299. package/dist/rxjs-utils.cjs +1 -1
  300. package/dist/rxjs-utils.js +1 -1
  301. package/dist/scroll-C_iNOi7E.cjs +26 -0
  302. package/dist/scroll-C_iNOi7E.cjs.map +1 -0
  303. package/dist/scroll-DoliwpRu.js +113 -0
  304. package/dist/scroll-DoliwpRu.js.map +1 -0
  305. package/dist/search-BlGJ6uJv.js.map +1 -0
  306. package/dist/search-C8eAOzBm.cjs.map +1 -0
  307. package/dist/select-CWWuZ2iJ.cjs +56 -0
  308. package/dist/select-CWWuZ2iJ.cjs.map +1 -0
  309. package/dist/select-_vHPXi30.js +305 -0
  310. package/dist/select-_vHPXi30.js.map +1 -0
  311. package/dist/select.cjs +1 -1
  312. package/dist/select.js +1 -1
  313. package/dist/sheet-i1KtxGIj.js +168 -0
  314. package/dist/sheet-i1KtxGIj.js.map +1 -0
  315. package/dist/sheet-r0oEYIdi.cjs +35 -0
  316. package/dist/sheet-r0oEYIdi.cjs.map +1 -0
  317. package/dist/sheet.cjs +1 -1
  318. package/dist/sheet.js +2 -2
  319. package/dist/sheet.service-Cr13Oo6G.cjs +1 -0
  320. package/dist/sheet.service-Cr13Oo6G.cjs.map +1 -0
  321. package/dist/sheet.service-DUO5_kmI.js +86 -0
  322. package/dist/sheet.service-DUO5_kmI.js.map +1 -0
  323. package/dist/skeleton.cjs +33 -0
  324. package/dist/skeleton.cjs.map +1 -0
  325. package/dist/skeleton.js +58 -0
  326. package/dist/skeleton.js.map +1 -0
  327. package/dist/skills/INDEX.md +73 -0
  328. package/dist/skills/SKILL.md +120 -0
  329. package/dist/skills/breadcrumb.md +53 -0
  330. package/dist/skills/kbd.md +40 -0
  331. package/dist/skills/schmancy/INDEX.md +73 -0
  332. package/dist/skills/schmancy/SKILL.md +120 -0
  333. package/dist/skills/schmancy/breadcrumb.md +53 -0
  334. package/dist/skills/schmancy/kbd.md +40 -0
  335. package/dist/skills/schmancy/skeleton.md +40 -0
  336. package/dist/skills/schmancy/splash-screen.md +60 -0
  337. package/dist/skills/schmancy/switch.md +58 -0
  338. package/dist/skills/schmancy/tooltip.md +38 -0
  339. package/dist/skills/schmancy/visually-hidden.md +41 -0
  340. package/dist/skills/skeleton.md +40 -0
  341. package/dist/skills/splash-screen.md +60 -0
  342. package/dist/skills/switch.md +58 -0
  343. package/dist/skills/tooltip.md +38 -0
  344. package/dist/skills/visually-hidden.md +41 -0
  345. package/dist/slider.cjs +3 -3
  346. package/dist/slider.cjs.map +1 -1
  347. package/dist/slider.js +2 -2
  348. package/dist/sound.service-BjSoGjmT.cjs +1 -0
  349. package/dist/sound.service-BjSoGjmT.cjs.map +1 -0
  350. package/dist/sound.service-cdkw3Wkv.js +2353 -0
  351. package/dist/sound.service-cdkw3Wkv.js.map +1 -0
  352. package/dist/splash-screen-CquyPP1C.cjs +41 -0
  353. package/dist/splash-screen-CquyPP1C.cjs.map +1 -0
  354. package/dist/splash-screen-CvucPkpD.js +83 -0
  355. package/dist/splash-screen-CvucPkpD.js.map +1 -0
  356. package/dist/splash-screen.cjs +1 -0
  357. package/dist/splash-screen.js +1 -0
  358. package/dist/src-Bemk2C2P.cjs +269 -0
  359. package/dist/src-Bemk2C2P.cjs.map +1 -0
  360. package/dist/src-f5a3W9Mj.js +1251 -0
  361. package/dist/src-f5a3W9Mj.js.map +1 -0
  362. package/dist/steps.cjs +10 -10
  363. package/dist/steps.cjs.map +1 -1
  364. package/dist/steps.js +10 -9
  365. package/dist/steps.js.map +1 -1
  366. package/dist/store-Bmj6rvZY.js.map +1 -0
  367. package/dist/store-CO4nJyGj.cjs.map +1 -0
  368. package/dist/store.cjs +1 -1
  369. package/dist/store.js +1 -1
  370. package/dist/surface-CDufon40.cjs +7 -0
  371. package/dist/surface-CDufon40.cjs.map +1 -0
  372. package/dist/surface-CkEYJCae.js +22 -0
  373. package/dist/surface-CkEYJCae.js.map +1 -0
  374. package/dist/surface.cjs +1 -1
  375. package/dist/surface.js +1 -1
  376. package/dist/surface.mixin-CSKqQH-0.cjs +297 -0
  377. package/dist/surface.mixin-CSKqQH-0.cjs.map +1 -0
  378. package/dist/surface.mixin-DqMwoddO.js +320 -0
  379. package/dist/surface.mixin-DqMwoddO.js.map +1 -0
  380. package/dist/switch.cjs +69 -0
  381. package/dist/switch.cjs.map +1 -0
  382. package/dist/switch.js +132 -0
  383. package/dist/switch.js.map +1 -0
  384. package/dist/table-DWc1mkpj.cjs +63 -0
  385. package/dist/table-DWc1mkpj.cjs.map +1 -0
  386. package/dist/table-P6VGG7NK.js +631 -0
  387. package/dist/table-P6VGG7NK.js.map +1 -0
  388. package/dist/table.cjs +1 -1
  389. package/dist/table.js +1 -1
  390. package/dist/tabs-CjGjGrqY.js +126 -0
  391. package/dist/tabs-CjGjGrqY.js.map +1 -0
  392. package/dist/tabs-DGJEKuhC.cjs +31 -0
  393. package/dist/tabs-DGJEKuhC.cjs.map +1 -0
  394. package/dist/tabs.cjs +1 -1
  395. package/dist/tabs.js +1 -1
  396. package/dist/tailwind.mixin-Cpa-VnnX.cjs +2 -0
  397. package/dist/tailwind.mixin-Cpa-VnnX.cjs.map +1 -0
  398. package/dist/tailwind.mixin-DufHBjmb.js +219 -0
  399. package/dist/tailwind.mixin-DufHBjmb.js.map +1 -0
  400. package/dist/teleport.cjs +1 -1
  401. package/dist/teleport.js +1 -1
  402. package/dist/textarea-DZT_Ofp5.js +209 -0
  403. package/dist/textarea-DZT_Ofp5.js.map +1 -0
  404. package/dist/textarea-jmTOXrzl.cjs +39 -0
  405. package/dist/textarea-jmTOXrzl.cjs.map +1 -0
  406. package/dist/textarea.cjs +1 -1
  407. package/dist/textarea.js +1 -1
  408. package/dist/theme-CCKqaksQ.cjs +181 -0
  409. package/dist/theme-CCKqaksQ.cjs.map +1 -0
  410. package/dist/theme-CEc32pAv.js +4122 -0
  411. package/dist/theme-CEc32pAv.js.map +1 -0
  412. package/dist/theme-button-BsJcv-Zv.cjs +8 -0
  413. package/dist/theme-button-BsJcv-Zv.cjs.map +1 -0
  414. package/dist/theme-button-dOiAvdKU.js +20 -0
  415. package/dist/theme-button-dOiAvdKU.js.map +1 -0
  416. package/dist/theme-button.cjs +1 -1
  417. package/dist/theme-button.js +1 -1
  418. package/dist/theme.cjs +1 -1
  419. package/dist/theme.events-Bw3mYjUA.js.map +1 -0
  420. package/dist/theme.events-EznKK2Y0.cjs.map +1 -0
  421. package/dist/theme.interface-CM26m9te.cjs.map +1 -0
  422. package/dist/theme.interface-FAUIgbIq.js.map +1 -0
  423. package/dist/theme.js +5 -5
  424. package/dist/theme.service-ETiKUwVy.cjs +1 -0
  425. package/dist/theme.service-ETiKUwVy.cjs.map +1 -0
  426. package/dist/theme.service-_qP5WvB9.js +108 -0
  427. package/dist/theme.service-_qP5WvB9.js.map +1 -0
  428. package/dist/tooltip.cjs +1 -6
  429. package/dist/tooltip.cjs.map +1 -1
  430. package/dist/tooltip.js +51 -135
  431. package/dist/tooltip.js.map +1 -1
  432. package/dist/tree.cjs +14 -5
  433. package/dist/tree.cjs.map +1 -1
  434. package/dist/tree.js +28 -6
  435. package/dist/tree.js.map +1 -1
  436. package/dist/tslib.es6-Bd-92OW3.cjs +1 -0
  437. package/dist/tslib.es6-Bd-92OW3.cjs.map +1 -0
  438. package/dist/tslib.es6-CI1onEZb.js +7 -0
  439. package/dist/tslib.es6-CI1onEZb.js.map +1 -0
  440. package/dist/typewriter-ByIL2Mh-.cjs +123 -0
  441. package/dist/typewriter-ByIL2Mh-.cjs.map +1 -0
  442. package/dist/typewriter-vOQ3bDLb.js +701 -0
  443. package/dist/typewriter-vOQ3bDLb.js.map +1 -0
  444. package/dist/typewriter.cjs +1 -1
  445. package/dist/typewriter.js +1 -1
  446. package/dist/typography.cjs +4 -4
  447. package/dist/typography.cjs.map +1 -1
  448. package/dist/typography.js +10 -9
  449. package/dist/typography.js.map +1 -1
  450. package/dist/utils-Cq0m3LYo.js +259 -0
  451. package/dist/utils-Cq0m3LYo.js.map +1 -0
  452. package/dist/utils-D2kE-6zc.cjs +1 -0
  453. package/dist/utils-D2kE-6zc.cjs.map +1 -0
  454. package/dist/utils.cjs +1 -1
  455. package/dist/utils.js +5 -5
  456. package/dist/visually-hidden.cjs +13 -0
  457. package/dist/visually-hidden.cjs.map +1 -0
  458. package/dist/visually-hidden.js +24 -0
  459. package/dist/visually-hidden.js.map +1 -0
  460. package/dist/window-BS7ZQjgH.cjs +59 -0
  461. package/dist/window-BS7ZQjgH.cjs.map +1 -0
  462. package/dist/window-WnAihpsA.js +548 -0
  463. package/dist/window-WnAihpsA.js.map +1 -0
  464. package/dist/window.cjs +1 -1
  465. package/dist/window.js +1 -1
  466. package/mixins/formField.mixin.ts +96 -69
  467. package/mixins/tailwind.css +11 -0
  468. package/package.json +19 -28
  469. package/skills/schmancy/INDEX.md +73 -0
  470. package/skills/schmancy/SKILL.md +120 -0
  471. package/skills/schmancy/animation.md +64 -0
  472. package/skills/schmancy/area.md +141 -0
  473. package/skills/schmancy/audio.md +69 -0
  474. package/skills/schmancy/autocomplete.md +53 -0
  475. package/skills/schmancy/avatar.md +47 -0
  476. package/skills/schmancy/badge.md +41 -0
  477. package/skills/schmancy/boat.md +47 -0
  478. package/skills/schmancy/breadcrumb.md +53 -0
  479. package/skills/schmancy/busy.md +36 -0
  480. package/skills/schmancy/button.md +59 -0
  481. package/skills/schmancy/card.md +53 -0
  482. package/skills/schmancy/charts.md +93 -0
  483. package/skills/schmancy/checkbox.md +36 -0
  484. package/skills/schmancy/chips.md +87 -0
  485. package/skills/schmancy/code-highlight.md +47 -0
  486. package/skills/schmancy/connectivity.md +36 -0
  487. package/skills/schmancy/content-drawer.md +65 -0
  488. package/skills/schmancy/date-range-inline.md +44 -0
  489. package/skills/schmancy/date-range.md +50 -0
  490. package/skills/schmancy/delay.md +50 -0
  491. package/skills/schmancy/details.md +66 -0
  492. package/skills/schmancy/dialog.md +69 -0
  493. package/skills/schmancy/directives.md +298 -0
  494. package/skills/schmancy/discovery.md +67 -0
  495. package/skills/schmancy/divider.md +31 -0
  496. package/skills/schmancy/dropdown.md +47 -0
  497. package/skills/schmancy/expand.md +63 -0
  498. package/skills/schmancy/extra.md +59 -0
  499. package/skills/schmancy/float.md +14 -0
  500. package/skills/schmancy/form.md +49 -0
  501. package/skills/schmancy/icons.md +44 -0
  502. package/skills/schmancy/iframe.md +44 -0
  503. package/skills/schmancy/input.md +56 -0
  504. package/skills/schmancy/json.md +33 -0
  505. package/skills/schmancy/kbd.md +40 -0
  506. package/skills/schmancy/layout.md +63 -0
  507. package/skills/schmancy/lightbox.md +36 -0
  508. package/skills/schmancy/list.md +67 -0
  509. package/skills/schmancy/mailbox.md +102 -0
  510. package/skills/schmancy/map.md +55 -0
  511. package/skills/schmancy/menu.md +39 -0
  512. package/skills/schmancy/mixins.md +99 -0
  513. package/skills/schmancy/nav-drawer.md +52 -0
  514. package/skills/schmancy/navigation-bar.md +48 -0
  515. package/skills/schmancy/navigation-rail.md +62 -0
  516. package/skills/schmancy/notification.md +60 -0
  517. package/skills/schmancy/option.md +43 -0
  518. package/skills/schmancy/page.md +42 -0
  519. package/skills/schmancy/progress.md +30 -0
  520. package/skills/schmancy/qr-scanner.md +51 -0
  521. package/skills/schmancy/radio-group.md +50 -0
  522. package/skills/schmancy/range.md +47 -0
  523. package/skills/schmancy/rxjs-utils.md +60 -0
  524. package/skills/schmancy/select.md +49 -0
  525. package/skills/schmancy/sheet.md +76 -0
  526. package/skills/schmancy/skeleton.md +40 -0
  527. package/skills/schmancy/slider.md +43 -0
  528. package/skills/schmancy/splash-screen.md +60 -0
  529. package/skills/schmancy/steps.md +53 -0
  530. package/skills/schmancy/store.md +126 -0
  531. package/skills/schmancy/surface.md +86 -0
  532. package/skills/schmancy/switch.md +58 -0
  533. package/skills/schmancy/table.md +60 -0
  534. package/skills/schmancy/tabs.md +49 -0
  535. package/skills/schmancy/teleport.md +55 -0
  536. package/skills/schmancy/textarea.md +48 -0
  537. package/skills/schmancy/theme-button.md +26 -0
  538. package/skills/schmancy/theme.md +58 -0
  539. package/skills/schmancy/tooltip.md +38 -0
  540. package/skills/schmancy/tree.md +53 -0
  541. package/skills/schmancy/typewriter.md +46 -0
  542. package/skills/schmancy/typography.md +53 -0
  543. package/skills/schmancy/utils.md +95 -0
  544. package/skills/schmancy/visually-hidden.md +41 -0
  545. package/skills/schmancy/window.md +67 -0
  546. package/src/audio/emotional-sounds.ts +2 -4
  547. package/src/autocomplete/autocomplete.ts +52 -2
  548. package/src/breadcrumb/breadcrumb.ts +109 -0
  549. package/src/breadcrumb/index.ts +1 -0
  550. package/src/button/button.ts +40 -0
  551. package/src/button/icon-button.ts +2 -1
  552. package/src/checkbox/checkbox.test.ts +113 -0
  553. package/src/checkbox/checkbox.ts +41 -1
  554. package/src/chips/filter-chip.ts +15 -0
  555. package/src/chips/input-chip.ts +7 -0
  556. package/src/date-range/date-range-helpers.ts +0 -71
  557. package/src/dialog/dialog-base.mixin.ts +11 -0
  558. package/src/dialog/dialog.component.ts +28 -8
  559. package/src/dropdown/dropdown-content.ts +3 -1
  560. package/src/form/form.test.ts +137 -0
  561. package/src/form/form.ts +142 -158
  562. package/src/form/index.ts +2 -2
  563. package/src/icons/icon.ts +1 -0
  564. package/src/index.ts +6 -0
  565. package/src/kbd/index.ts +1 -0
  566. package/src/kbd/kbd.ts +59 -0
  567. package/src/skeleton/index.ts +1 -0
  568. package/src/skeleton/skeleton.ts +78 -0
  569. package/src/splash-screen/index.ts +1 -0
  570. package/src/splash-screen/splash-screen.ts +154 -0
  571. package/src/switch/index.ts +1 -0
  572. package/src/switch/switch.test.ts +93 -0
  573. package/src/switch/switch.ts +180 -0
  574. package/src/test-utils/a11y.ts +35 -0
  575. package/src/textarea/textarea.ts +32 -2
  576. package/src/tooltip/index.ts +1 -2
  577. package/src/tree/tree.ts +27 -2
  578. package/src/visually-hidden/index.ts +1 -0
  579. package/src/visually-hidden/visually-hidden.ts +39 -0
  580. package/src/window/window-position.ts +1 -74
  581. package/types/mixins/formField.mixin.d.ts +15 -8
  582. package/types/src/audio/emotional-sounds.d.ts +0 -2
  583. package/types/src/autocomplete/autocomplete.d.ts +7 -0
  584. package/types/src/breadcrumb/breadcrumb.d.ts +38 -0
  585. package/types/src/breadcrumb/index.d.ts +1 -0
  586. package/types/src/button/button.d.ts +7 -0
  587. package/types/src/button/icon-button.d.ts +2 -1
  588. package/types/src/checkbox/checkbox.d.ts +6 -0
  589. package/types/src/checkbox/checkbox.test.d.ts +1 -0
  590. package/types/src/chips/filter-chip.d.ts +3 -0
  591. package/types/src/chips/input-chip.d.ts +1 -0
  592. package/types/src/date-range/date-range-helpers.d.ts +0 -12
  593. package/types/src/dialog/dialog.component.d.ts +6 -0
  594. package/types/src/dropdown/dropdown-content.d.ts +3 -1
  595. package/types/src/form/form-v2.d.ts +12 -63
  596. package/types/src/form/form.d.ts +58 -40
  597. package/types/src/form/form.test.d.ts +4 -0
  598. package/types/src/form/index.d.ts +1 -1
  599. package/types/src/icons/icon.d.ts +1 -0
  600. package/types/src/index.d.ts +6 -0
  601. package/types/src/kbd/index.d.ts +1 -0
  602. package/types/src/kbd/kbd.d.ts +25 -0
  603. package/types/src/skeleton/index.d.ts +1 -0
  604. package/types/src/skeleton/skeleton.d.ts +27 -0
  605. package/types/src/splash-screen/index.d.ts +1 -0
  606. package/types/src/splash-screen/splash-screen.d.ts +60 -0
  607. package/types/src/switch/index.d.ts +1 -0
  608. package/types/src/switch/switch.d.ts +54 -0
  609. package/types/src/switch/switch.test.d.ts +1 -0
  610. package/types/src/test-utils/a11y.d.ts +11 -0
  611. package/types/src/textarea/textarea.d.ts +5 -1
  612. package/types/src/tooltip/index.d.ts +0 -1
  613. package/types/src/tree/tree.d.ts +5 -0
  614. package/types/src/visually-hidden/index.d.ts +1 -0
  615. package/types/src/visually-hidden/visually-hidden.d.ts +21 -0
  616. package/types/src/window/window-position.d.ts +1 -35
  617. package/ai/INDEX.md +0 -72
  618. package/ai/tooltip.md +0 -38
  619. package/dist/ai/INDEX.md +0 -72
  620. package/dist/ai/tooltip.md +0 -38
  621. package/dist/animation-BK-8BwY8.js.map +0 -1
  622. package/dist/animation-CO_Csq84.cjs.map +0 -1
  623. package/dist/area-CRoGqD_u.js +0 -590
  624. package/dist/area-CRoGqD_u.js.map +0 -1
  625. package/dist/area-JPykB7A9.cjs +0 -12
  626. package/dist/area-JPykB7A9.cjs.map +0 -1
  627. package/dist/audio-DtYYgzYD.cjs +0 -1
  628. package/dist/audio-DtYYgzYD.cjs.map +0 -1
  629. package/dist/audio-kz8UgPTO.js +0 -335
  630. package/dist/audio-kz8UgPTO.js.map +0 -1
  631. package/dist/autocomplete-5rVhbieU.cjs +0 -111
  632. package/dist/autocomplete-5rVhbieU.cjs.map +0 -1
  633. package/dist/autocomplete-BllPQwr8.js +0 -378
  634. package/dist/autocomplete-BllPQwr8.js.map +0 -1
  635. package/dist/boat-BDTQ-du9.js +0 -347
  636. package/dist/boat-BDTQ-du9.js.map +0 -1
  637. package/dist/boat-DYEAZ8Qj.cjs +0 -80
  638. package/dist/boat-DYEAZ8Qj.cjs.map +0 -1
  639. package/dist/busy-ChDAeaKF.js +0 -167
  640. package/dist/busy-ChDAeaKF.js.map +0 -1
  641. package/dist/busy-Dj7Xn0Z0.cjs +0 -134
  642. package/dist/busy-Dj7Xn0Z0.cjs.map +0 -1
  643. package/dist/card-BvPWVEJX.cjs +0 -177
  644. package/dist/card-BvPWVEJX.cjs.map +0 -1
  645. package/dist/card-DZFPRPqs.js +0 -284
  646. package/dist/card-DZFPRPqs.js.map +0 -1
  647. package/dist/checkbox-BC_37rsG.cjs +0 -39
  648. package/dist/checkbox-BC_37rsG.cjs.map +0 -1
  649. package/dist/checkbox-GSSjqo6w.js +0 -610
  650. package/dist/checkbox-GSSjqo6w.js.map +0 -1
  651. package/dist/chips-B19XS8Xc.cjs +0 -253
  652. package/dist/chips-B19XS8Xc.cjs.map +0 -1
  653. package/dist/chips-B9oAEfE_.js +0 -645
  654. package/dist/chips-B9oAEfE_.js.map +0 -1
  655. package/dist/code-highlight-DCk5lJY-.js +0 -290
  656. package/dist/code-highlight-DCk5lJY-.js.map +0 -1
  657. package/dist/code-highlight-fSLrlgOb.cjs +0 -190
  658. package/dist/code-highlight-fSLrlgOb.cjs.map +0 -1
  659. package/dist/components-COsM6sJZ.js +0 -730
  660. package/dist/components-COsM6sJZ.js.map +0 -1
  661. package/dist/components-CyD6a7gQ.cjs +0 -73
  662. package/dist/components-CyD6a7gQ.cjs.map +0 -1
  663. package/dist/cursor-glow-Ah7VXSj7.js +0 -46
  664. package/dist/cursor-glow-Ah7VXSj7.js.map +0 -1
  665. package/dist/cursor-glow-DtSy_PJd.cjs +0 -1
  666. package/dist/cursor-glow-DtSy_PJd.cjs.map +0 -1
  667. package/dist/date-range-Sfyco9-n.js +0 -946
  668. package/dist/date-range-Sfyco9-n.js.map +0 -1
  669. package/dist/date-range-ZAaQB22I.cjs +0 -131
  670. package/dist/date-range-ZAaQB22I.cjs.map +0 -1
  671. package/dist/date-range-inline-Bl8qbiQF.js +0 -267
  672. package/dist/date-range-inline-Bl8qbiQF.js.map +0 -1
  673. package/dist/date-range-inline-m7nLjOMI.cjs +0 -43
  674. package/dist/date-range-inline-m7nLjOMI.cjs.map +0 -1
  675. package/dist/delay-7boauN6N.cjs +0 -9
  676. package/dist/delay-7boauN6N.cjs.map +0 -1
  677. package/dist/delay-CgX6m0HN.js +0 -346
  678. package/dist/delay-CgX6m0HN.js.map +0 -1
  679. package/dist/details-BHnk8l4q.cjs +0 -168
  680. package/dist/details-BHnk8l4q.cjs.map +0 -1
  681. package/dist/details-BPkUg8Cq.js +0 -293
  682. package/dist/details-BPkUg8Cq.js.map +0 -1
  683. package/dist/dialog-service-NZEvyEK-.js +0 -193
  684. package/dist/dialog-service-NZEvyEK-.js.map +0 -1
  685. package/dist/dialog-service-VnW4gkmE.cjs +0 -1
  686. package/dist/dialog-service-VnW4gkmE.cjs.map +0 -1
  687. package/dist/divider-CW9a7MMj.js +0 -87
  688. package/dist/divider-CW9a7MMj.js.map +0 -1
  689. package/dist/divider-_khrhrZo.cjs +0 -57
  690. package/dist/divider-_khrhrZo.cjs.map +0 -1
  691. package/dist/expand-Cp7-PH8b.cjs +0 -141
  692. package/dist/expand-Cp7-PH8b.cjs.map +0 -1
  693. package/dist/expand-iQ7EOMP7.js +0 -336
  694. package/dist/expand-iQ7EOMP7.js.map +0 -1
  695. package/dist/extra-IKAiJJhv.cjs +0 -31
  696. package/dist/extra-IKAiJJhv.cjs.map +0 -1
  697. package/dist/extra-wEpvEFbK.js +0 -3435
  698. package/dist/extra-wEpvEFbK.js.map +0 -1
  699. package/dist/float-BQ_urmMs.js +0 -5
  700. package/dist/float-BQ_urmMs.js.map +0 -1
  701. package/dist/float-D5rNC82i.cjs +0 -1
  702. package/dist/float-D5rNC82i.cjs.map +0 -1
  703. package/dist/flow-Bbwn6dRN.cjs.map +0 -1
  704. package/dist/flow-CUj0fDT_.js.map +0 -1
  705. package/dist/form-BqN1AGFj.cjs +0 -1
  706. package/dist/form-BqN1AGFj.cjs.map +0 -1
  707. package/dist/form-CajC5HnO.js +0 -270
  708. package/dist/form-CajC5HnO.js.map +0 -1
  709. package/dist/hashContent-DYM21p6t.js.map +0 -1
  710. package/dist/hashContent-DaeGmY-p.cjs.map +0 -1
  711. package/dist/icons-B57_93VV.cjs +0 -52
  712. package/dist/icons-B57_93VV.cjs.map +0 -1
  713. package/dist/icons-BDqiGXrO.js +0 -161
  714. package/dist/icons-BDqiGXrO.js.map +0 -1
  715. package/dist/iframe-DNHL3GIk.cjs +0 -24
  716. package/dist/iframe-DNHL3GIk.cjs.map +0 -1
  717. package/dist/iframe-WnWPIrBG.js +0 -44
  718. package/dist/iframe-WnWPIrBG.js.map +0 -1
  719. package/dist/input-BiSrTcrR.cjs +0 -51
  720. package/dist/input-BiSrTcrR.cjs.map +0 -1
  721. package/dist/input-VaXHFrRn.js +0 -364
  722. package/dist/input-VaXHFrRn.js.map +0 -1
  723. package/dist/input-chip-Dy-AiP55.cjs +0 -146
  724. package/dist/input-chip-Dy-AiP55.cjs.map +0 -1
  725. package/dist/input-chip-QejNcRnS.js +0 -301
  726. package/dist/input-chip-QejNcRnS.js.map +0 -1
  727. package/dist/intersection-BPLpqYEd.js.map +0 -1
  728. package/dist/intersection-CZpaIHeT.cjs.map +0 -1
  729. package/dist/layout-4C-6_cre.cjs +0 -1
  730. package/dist/layout-4C-6_cre.cjs.map +0 -1
  731. package/dist/layout-CnsXeCAy.js +0 -267
  732. package/dist/layout-CnsXeCAy.js.map +0 -1
  733. package/dist/layout-DNYG3phx.cjs +0 -17
  734. package/dist/layout-DNYG3phx.cjs.map +0 -1
  735. package/dist/layout-yxSlLybo.js +0 -94
  736. package/dist/layout-yxSlLybo.js.map +0 -1
  737. package/dist/lightbox-BrI1Z31s.js +0 -678
  738. package/dist/lightbox-BrI1Z31s.js.map +0 -1
  739. package/dist/lightbox-CmACf0t5.cjs +0 -202
  740. package/dist/lightbox-CmACf0t5.cjs.map +0 -1
  741. package/dist/list-Cm-jjXxM.js +0 -105
  742. package/dist/list-Cm-jjXxM.js.map +0 -1
  743. package/dist/list-swIL9VDv.cjs +0 -40
  744. package/dist/list-swIL9VDv.cjs.map +0 -1
  745. package/dist/litElement.mixin-3llHwB-8.cjs +0 -1
  746. package/dist/litElement.mixin-3llHwB-8.cjs.map +0 -1
  747. package/dist/litElement.mixin-6jJYHCrZ.js +0 -12
  748. package/dist/litElement.mixin-6jJYHCrZ.js.map +0 -1
  749. package/dist/magnetic-BZGFxAWG.js +0 -47
  750. package/dist/magnetic-BZGFxAWG.js.map +0 -1
  751. package/dist/magnetic-Dux4QwO4.cjs +0 -1
  752. package/dist/magnetic-Dux4QwO4.cjs.map +0 -1
  753. package/dist/mailbox-BuvsVaAQ.js +0 -1584
  754. package/dist/mailbox-BuvsVaAQ.js.map +0 -1
  755. package/dist/mailbox-D6LkQcN5.cjs +0 -1142
  756. package/dist/mailbox-D6LkQcN5.cjs.map +0 -1
  757. package/dist/map-CQiKAxC3.js +0 -205
  758. package/dist/map-CQiKAxC3.js.map +0 -1
  759. package/dist/map-D5NN4VET.cjs +0 -80
  760. package/dist/map-D5NN4VET.cjs.map +0 -1
  761. package/dist/menu-C1x04YZw.js +0 -51
  762. package/dist/menu-C1x04YZw.js.map +0 -1
  763. package/dist/menu-CkgMO9K5.cjs +0 -23
  764. package/dist/menu-CkgMO9K5.cjs.map +0 -1
  765. package/dist/notification-BnBgxjF-.js +0 -304
  766. package/dist/notification-BnBgxjF-.js.map +0 -1
  767. package/dist/notification-CZFEhWxc.cjs +0 -23
  768. package/dist/notification-CZFEhWxc.cjs.map +0 -1
  769. package/dist/option-BrxCVwSx.cjs +0 -43
  770. package/dist/option-BrxCVwSx.cjs.map +0 -1
  771. package/dist/option-DBO8xZwd.js +0 -97
  772. package/dist/option-DBO8xZwd.js.map +0 -1
  773. package/dist/overlay-stack-DQey9Qph.cjs.map +0 -1
  774. package/dist/overlay-stack-DT1SdaGW.js.map +0 -1
  775. package/dist/progress-Db2e4_Zd.cjs +0 -51
  776. package/dist/progress-Db2e4_Zd.cjs.map +0 -1
  777. package/dist/progress-DeiHxXo7.js +0 -128
  778. package/dist/progress-DeiHxXo7.js.map +0 -1
  779. package/dist/provide-C1aQhxYo.js +0 -107
  780. package/dist/provide-C1aQhxYo.js.map +0 -1
  781. package/dist/provide-DHnhQtCH.cjs +0 -1
  782. package/dist/provide-DHnhQtCH.cjs.map +0 -1
  783. package/dist/radio-group-Cspwd-Vw.cjs +0 -40
  784. package/dist/radio-group-Cspwd-Vw.cjs.map +0 -1
  785. package/dist/radio-group-zSO0AkJf.js +0 -105
  786. package/dist/radio-group-zSO0AkJf.js.map +0 -1
  787. package/dist/reduced-motion-D-L12p7G.js.map +0 -1
  788. package/dist/reduced-motion-Ds05GPyz.cjs.map +0 -1
  789. package/dist/rxjs-utils-BSjmI9-Q.js.map +0 -1
  790. package/dist/rxjs-utils-DCsfzeap.cjs.map +0 -1
  791. package/dist/scroll-QMCmbbDv.cjs +0 -26
  792. package/dist/scroll-QMCmbbDv.cjs.map +0 -1
  793. package/dist/scroll-cBDzye64.js +0 -112
  794. package/dist/scroll-cBDzye64.js.map +0 -1
  795. package/dist/search-C4dFHYbX.js.map +0 -1
  796. package/dist/search-Ds8tt7Et.cjs.map +0 -1
  797. package/dist/select-Ct37l3lg.cjs +0 -56
  798. package/dist/select-Ct37l3lg.cjs.map +0 -1
  799. package/dist/select-c6HbWvKP.js +0 -305
  800. package/dist/select-c6HbWvKP.js.map +0 -1
  801. package/dist/sheet-BMXcUiIm.js +0 -168
  802. package/dist/sheet-BMXcUiIm.js.map +0 -1
  803. package/dist/sheet-CQec-bCV.cjs +0 -35
  804. package/dist/sheet-CQec-bCV.cjs.map +0 -1
  805. package/dist/sheet.service-BcPV3Du4.js +0 -86
  806. package/dist/sheet.service-BcPV3Du4.js.map +0 -1
  807. package/dist/sheet.service-Dumvr1HT.cjs +0 -1
  808. package/dist/sheet.service-Dumvr1HT.cjs.map +0 -1
  809. package/dist/sound.service-Bu3EQLv2.cjs +0 -1
  810. package/dist/sound.service-Bu3EQLv2.cjs.map +0 -1
  811. package/dist/sound.service-m3BrSfuH.js +0 -2353
  812. package/dist/sound.service-m3BrSfuH.js.map +0 -1
  813. package/dist/src-BLngW2bl.js +0 -1244
  814. package/dist/src-BLngW2bl.js.map +0 -1
  815. package/dist/src-BtQVyqMy.cjs +0 -269
  816. package/dist/src-BtQVyqMy.cjs.map +0 -1
  817. package/dist/store-CorvD3bT.cjs.map +0 -1
  818. package/dist/store-DYqDLAvT.js.map +0 -1
  819. package/dist/surface-BjKZoJxK.cjs +0 -7
  820. package/dist/surface-BjKZoJxK.cjs.map +0 -1
  821. package/dist/surface-pK8hME5c.js +0 -21
  822. package/dist/surface-pK8hME5c.js.map +0 -1
  823. package/dist/surface.mixin-C5sDI1-_.cjs +0 -297
  824. package/dist/surface.mixin-C5sDI1-_.cjs.map +0 -1
  825. package/dist/surface.mixin-CBNRpJum.js +0 -320
  826. package/dist/surface.mixin-CBNRpJum.js.map +0 -1
  827. package/dist/table-BXIHX9h4.js +0 -631
  828. package/dist/table-BXIHX9h4.js.map +0 -1
  829. package/dist/table-CiqgZzSd.cjs +0 -63
  830. package/dist/table-CiqgZzSd.cjs.map +0 -1
  831. package/dist/tabs-CKa-W4qA.cjs +0 -31
  832. package/dist/tabs-CKa-W4qA.cjs.map +0 -1
  833. package/dist/tabs-nbV5eblZ.js +0 -125
  834. package/dist/tabs-nbV5eblZ.js.map +0 -1
  835. package/dist/tailwind.mixin-BCJOOX1_.js +0 -225
  836. package/dist/tailwind.mixin-BCJOOX1_.js.map +0 -1
  837. package/dist/tailwind.mixin-BF1Huas7.cjs +0 -2
  838. package/dist/tailwind.mixin-BF1Huas7.cjs.map +0 -1
  839. package/dist/textarea-Cp1ZE60O.cjs +0 -35
  840. package/dist/textarea-Cp1ZE60O.cjs.map +0 -1
  841. package/dist/textarea-D7q8exMg.js +0 -195
  842. package/dist/textarea-D7q8exMg.js.map +0 -1
  843. package/dist/theme-Da4SPq9X.cjs +0 -181
  844. package/dist/theme-Da4SPq9X.cjs.map +0 -1
  845. package/dist/theme-_VPV6Bxh.js +0 -4121
  846. package/dist/theme-_VPV6Bxh.js.map +0 -1
  847. package/dist/theme-button--sX8A-m1.js +0 -19
  848. package/dist/theme-button--sX8A-m1.js.map +0 -1
  849. package/dist/theme-button-Ci8VQ7KW.cjs +0 -8
  850. package/dist/theme-button-Ci8VQ7KW.cjs.map +0 -1
  851. package/dist/theme.events-Cv7N4Toe.js.map +0 -1
  852. package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
  853. package/dist/theme.interface-CXloMUCw.js.map +0 -1
  854. package/dist/theme.interface-Da23QAYb.cjs.map +0 -1
  855. package/dist/theme.service-C_tjlqgy.cjs +0 -1
  856. package/dist/theme.service-C_tjlqgy.cjs.map +0 -1
  857. package/dist/theme.service-D9lEas89.js +0 -108
  858. package/dist/theme.service-D9lEas89.js.map +0 -1
  859. package/dist/tslib.es6-D7BIeDVB.cjs.map +0 -1
  860. package/dist/tslib.es6-ErZEp3OO.js.map +0 -1
  861. package/dist/typewriter-B2TnHPjw.cjs +0 -123
  862. package/dist/typewriter-B2TnHPjw.cjs.map +0 -1
  863. package/dist/typewriter-BrZNa8T-.js +0 -700
  864. package/dist/typewriter-BrZNa8T-.js.map +0 -1
  865. package/dist/utils-BcaKtQuA.cjs +0 -1
  866. package/dist/utils-BcaKtQuA.cjs.map +0 -1
  867. package/dist/utils-CoU7M2YS.js +0 -259
  868. package/dist/utils-CoU7M2YS.js.map +0 -1
  869. package/dist/window-CM1ycigo.js +0 -548
  870. package/dist/window-CM1ycigo.js.map +0 -1
  871. package/dist/window-Uii13x_r.cjs +0 -59
  872. package/dist/window-Uii13x_r.cjs.map +0 -1
  873. package/src/form/form-v2.ts +0 -268
  874. package/src/layout/v2/grid.ts +0 -93
  875. package/src/notification/outlet.ts +0 -16
  876. package/src/store/immer-integration.ts +0 -99
  877. package/src/tooltip/tooltip.ts +0 -216
  878. /package/dist/{animation-CO_Csq84.cjs → animation-Bcwh107v.cjs} +0 -0
  879. /package/dist/{animation-BK-8BwY8.js → animation-CXKSuUoE.js} +0 -0
  880. /package/dist/{tslib.es6-ErZEp3OO.js → decorate-D_utPUsC.js} +0 -0
  881. /package/dist/{tslib.es6-D7BIeDVB.cjs → decorate-F9CuyeHg.cjs} +0 -0
  882. /package/dist/{flow-CUj0fDT_.js → flow-CqgDEIqK.js} +0 -0
  883. /package/dist/{flow-Bbwn6dRN.cjs → flow-DSu4PLt1.cjs} +0 -0
  884. /package/dist/{hashContent-DaeGmY-p.cjs → hashContent-kKvXKFa9.cjs} +0 -0
  885. /package/dist/{hashContent-DYM21p6t.js → hashContent-nD2uWwi2.js} +0 -0
  886. /package/dist/{intersection-CZpaIHeT.cjs → intersection-D1v1UCVv.cjs} +0 -0
  887. /package/dist/{intersection-BPLpqYEd.js → intersection-LfEsy29T.js} +0 -0
  888. /package/dist/{overlay-stack-DQey9Qph.cjs → overlay-stack-CEYGD9T1.cjs} +0 -0
  889. /package/dist/{overlay-stack-DT1SdaGW.js → overlay-stack-Ca4EK2Mu.js} +0 -0
  890. /package/dist/{reduced-motion-D-L12p7G.js → reduced-motion-B83yZbcO.js} +0 -0
  891. /package/dist/{reduced-motion-Ds05GPyz.cjs → reduced-motion-DR32yKEO.cjs} +0 -0
  892. /package/dist/{rxjs-utils-BSjmI9-Q.js → rxjs-utils-Bldch1RO.js} +0 -0
  893. /package/dist/{rxjs-utils-DCsfzeap.cjs → rxjs-utils-hAgKC7vk.cjs} +0 -0
  894. /package/dist/{search-C4dFHYbX.js → search-BlGJ6uJv.js} +0 -0
  895. /package/dist/{search-Ds8tt7Et.cjs → search-C8eAOzBm.cjs} +0 -0
  896. /package/{ai → dist/skills}/animation.md +0 -0
  897. /package/{ai → dist/skills}/area.md +0 -0
  898. /package/{ai → dist/skills}/audio.md +0 -0
  899. /package/{ai → dist/skills}/autocomplete.md +0 -0
  900. /package/{ai → dist/skills}/avatar.md +0 -0
  901. /package/{ai → dist/skills}/badge.md +0 -0
  902. /package/{ai → dist/skills}/boat.md +0 -0
  903. /package/{ai → dist/skills}/busy.md +0 -0
  904. /package/{ai → dist/skills}/button.md +0 -0
  905. /package/{ai → dist/skills}/card.md +0 -0
  906. /package/{ai → dist/skills}/charts.md +0 -0
  907. /package/{ai → dist/skills}/checkbox.md +0 -0
  908. /package/{ai → dist/skills}/chips.md +0 -0
  909. /package/{ai → dist/skills}/code-highlight.md +0 -0
  910. /package/{ai → dist/skills}/connectivity.md +0 -0
  911. /package/{ai → dist/skills}/content-drawer.md +0 -0
  912. /package/{ai → dist/skills}/date-range-inline.md +0 -0
  913. /package/{ai → dist/skills}/date-range.md +0 -0
  914. /package/{ai → dist/skills}/delay.md +0 -0
  915. /package/{ai → dist/skills}/details.md +0 -0
  916. /package/{ai → dist/skills}/dialog.md +0 -0
  917. /package/{ai → dist/skills}/directives.md +0 -0
  918. /package/{ai → dist/skills}/discovery.md +0 -0
  919. /package/{ai → dist/skills}/divider.md +0 -0
  920. /package/{ai → dist/skills}/dropdown.md +0 -0
  921. /package/{ai → dist/skills}/expand.md +0 -0
  922. /package/{ai → dist/skills}/extra.md +0 -0
  923. /package/{ai → dist/skills}/float.md +0 -0
  924. /package/{ai → dist/skills}/form.md +0 -0
  925. /package/{ai → dist/skills}/icons.md +0 -0
  926. /package/{ai → dist/skills}/iframe.md +0 -0
  927. /package/{ai → dist/skills}/input.md +0 -0
  928. /package/{ai → dist/skills}/json.md +0 -0
  929. /package/{ai → dist/skills}/layout.md +0 -0
  930. /package/{ai → dist/skills}/lightbox.md +0 -0
  931. /package/{ai → dist/skills}/list.md +0 -0
  932. /package/{ai → dist/skills}/mailbox.md +0 -0
  933. /package/{ai → dist/skills}/map.md +0 -0
  934. /package/{ai → dist/skills}/menu.md +0 -0
  935. /package/{ai → dist/skills}/mixins.md +0 -0
  936. /package/{ai → dist/skills}/nav-drawer.md +0 -0
  937. /package/{ai → dist/skills}/navigation-bar.md +0 -0
  938. /package/{ai → dist/skills}/navigation-rail.md +0 -0
  939. /package/{ai → dist/skills}/notification.md +0 -0
  940. /package/{ai → dist/skills}/option.md +0 -0
  941. /package/{ai → dist/skills}/page.md +0 -0
  942. /package/{ai → dist/skills}/progress.md +0 -0
  943. /package/{ai → dist/skills}/qr-scanner.md +0 -0
  944. /package/{ai → dist/skills}/radio-group.md +0 -0
  945. /package/{ai → dist/skills}/range.md +0 -0
  946. /package/{ai → dist/skills}/rxjs-utils.md +0 -0
  947. /package/dist/{ai → skills/schmancy}/animation.md +0 -0
  948. /package/dist/{ai → skills/schmancy}/area.md +0 -0
  949. /package/dist/{ai → skills/schmancy}/audio.md +0 -0
  950. /package/dist/{ai → skills/schmancy}/autocomplete.md +0 -0
  951. /package/dist/{ai → skills/schmancy}/avatar.md +0 -0
  952. /package/dist/{ai → skills/schmancy}/badge.md +0 -0
  953. /package/dist/{ai → skills/schmancy}/boat.md +0 -0
  954. /package/dist/{ai → skills/schmancy}/busy.md +0 -0
  955. /package/dist/{ai → skills/schmancy}/button.md +0 -0
  956. /package/dist/{ai → skills/schmancy}/card.md +0 -0
  957. /package/dist/{ai → skills/schmancy}/charts.md +0 -0
  958. /package/dist/{ai → skills/schmancy}/checkbox.md +0 -0
  959. /package/dist/{ai → skills/schmancy}/chips.md +0 -0
  960. /package/dist/{ai → skills/schmancy}/code-highlight.md +0 -0
  961. /package/dist/{ai → skills/schmancy}/connectivity.md +0 -0
  962. /package/dist/{ai → skills/schmancy}/content-drawer.md +0 -0
  963. /package/dist/{ai → skills/schmancy}/date-range-inline.md +0 -0
  964. /package/dist/{ai → skills/schmancy}/date-range.md +0 -0
  965. /package/dist/{ai → skills/schmancy}/delay.md +0 -0
  966. /package/dist/{ai → skills/schmancy}/details.md +0 -0
  967. /package/dist/{ai → skills/schmancy}/dialog.md +0 -0
  968. /package/dist/{ai → skills/schmancy}/directives.md +0 -0
  969. /package/dist/{ai → skills/schmancy}/discovery.md +0 -0
  970. /package/dist/{ai → skills/schmancy}/divider.md +0 -0
  971. /package/dist/{ai → skills/schmancy}/dropdown.md +0 -0
  972. /package/dist/{ai → skills/schmancy}/expand.md +0 -0
  973. /package/dist/{ai → skills/schmancy}/extra.md +0 -0
  974. /package/dist/{ai → skills/schmancy}/float.md +0 -0
  975. /package/dist/{ai → skills/schmancy}/form.md +0 -0
  976. /package/dist/{ai → skills/schmancy}/icons.md +0 -0
  977. /package/dist/{ai → skills/schmancy}/iframe.md +0 -0
  978. /package/dist/{ai → skills/schmancy}/input.md +0 -0
  979. /package/dist/{ai → skills/schmancy}/json.md +0 -0
  980. /package/dist/{ai → skills/schmancy}/layout.md +0 -0
  981. /package/dist/{ai → skills/schmancy}/lightbox.md +0 -0
  982. /package/dist/{ai → skills/schmancy}/list.md +0 -0
  983. /package/dist/{ai → skills/schmancy}/mailbox.md +0 -0
  984. /package/dist/{ai → skills/schmancy}/map.md +0 -0
  985. /package/dist/{ai → skills/schmancy}/menu.md +0 -0
  986. /package/dist/{ai → skills/schmancy}/mixins.md +0 -0
  987. /package/dist/{ai → skills/schmancy}/nav-drawer.md +0 -0
  988. /package/dist/{ai → skills/schmancy}/navigation-bar.md +0 -0
  989. /package/dist/{ai → skills/schmancy}/navigation-rail.md +0 -0
  990. /package/dist/{ai → skills/schmancy}/notification.md +0 -0
  991. /package/dist/{ai → skills/schmancy}/option.md +0 -0
  992. /package/dist/{ai → skills/schmancy}/page.md +0 -0
  993. /package/dist/{ai → skills/schmancy}/progress.md +0 -0
  994. /package/dist/{ai → skills/schmancy}/qr-scanner.md +0 -0
  995. /package/dist/{ai → skills/schmancy}/radio-group.md +0 -0
  996. /package/dist/{ai → skills/schmancy}/range.md +0 -0
  997. /package/dist/{ai → skills/schmancy}/rxjs-utils.md +0 -0
  998. /package/{ai → dist/skills/schmancy}/select.md +0 -0
  999. /package/{ai → dist/skills/schmancy}/sheet.md +0 -0
  1000. /package/{ai → dist/skills/schmancy}/slider.md +0 -0
  1001. /package/{ai → dist/skills/schmancy}/steps.md +0 -0
  1002. /package/{ai → dist/skills/schmancy}/store.md +0 -0
  1003. /package/{ai → dist/skills/schmancy}/surface.md +0 -0
  1004. /package/{ai → dist/skills/schmancy}/table.md +0 -0
  1005. /package/{ai → dist/skills/schmancy}/tabs.md +0 -0
  1006. /package/{ai → dist/skills/schmancy}/teleport.md +0 -0
  1007. /package/{ai → dist/skills/schmancy}/textarea.md +0 -0
  1008. /package/{ai → dist/skills/schmancy}/theme-button.md +0 -0
  1009. /package/{ai → dist/skills/schmancy}/theme.md +0 -0
  1010. /package/{ai → dist/skills/schmancy}/tree.md +0 -0
  1011. /package/{ai → dist/skills/schmancy}/typewriter.md +0 -0
  1012. /package/{ai → dist/skills/schmancy}/typography.md +0 -0
  1013. /package/{ai → dist/skills/schmancy}/utils.md +0 -0
  1014. /package/{ai → dist/skills/schmancy}/window.md +0 -0
  1015. /package/dist/{ai → skills}/select.md +0 -0
  1016. /package/dist/{ai → skills}/sheet.md +0 -0
  1017. /package/dist/{ai → skills}/slider.md +0 -0
  1018. /package/dist/{ai → skills}/steps.md +0 -0
  1019. /package/dist/{ai → skills}/store.md +0 -0
  1020. /package/dist/{ai → skills}/surface.md +0 -0
  1021. /package/dist/{ai → skills}/table.md +0 -0
  1022. /package/dist/{ai → skills}/tabs.md +0 -0
  1023. /package/dist/{ai → skills}/teleport.md +0 -0
  1024. /package/dist/{ai → skills}/textarea.md +0 -0
  1025. /package/dist/{ai → skills}/theme-button.md +0 -0
  1026. /package/dist/{ai → skills}/theme.md +0 -0
  1027. /package/dist/{ai → skills}/tree.md +0 -0
  1028. /package/dist/{ai → skills}/typewriter.md +0 -0
  1029. /package/dist/{ai → skills}/typography.md +0 -0
  1030. /package/dist/{ai → skills}/utils.md +0 -0
  1031. /package/dist/{ai → skills}/window.md +0 -0
  1032. /package/dist/{store-DYqDLAvT.js → store-Bmj6rvZY.js} +0 -0
  1033. /package/dist/{store-CorvD3bT.cjs → store-CO4nJyGj.cjs} +0 -0
  1034. /package/dist/{theme.events-Cv7N4Toe.js → theme.events-Bw3mYjUA.js} +0 -0
  1035. /package/dist/{theme.events-DM4H5F2d.cjs → theme.events-EznKK2Y0.cjs} +0 -0
  1036. /package/dist/{theme.interface-Da23QAYb.cjs → theme.interface-CM26m9te.cjs} +0 -0
  1037. /package/dist/{theme.interface-CXloMUCw.js → theme.interface-FAUIgbIq.js} +0 -0
@@ -4,11 +4,17 @@ import { IBaseMixin } from './baseElement'
4
4
  import { Constructor } from './constructor'
5
5
  import { ITailwindElementMixin, TailwindElement } from './tailwind.mixin'
6
6
 
7
+ /**
8
+ * Cross-realm brand used by `<schmancy-form>` to discover form fields by
9
+ * inheritance rather than tag-name allowlists. `Symbol.for` puts the symbol in
10
+ * the global registry so detection works across module realms/bundles.
11
+ */
12
+ export const SCHMANCY_FORM_FIELD = Symbol.for('schmancy.form-field')
13
+
7
14
  /**
8
15
  * Interface defining the properties and methods that the FormFieldMixin adds.
9
16
  */
10
17
  export interface IFormFieldMixin extends Element {
11
- // Properties
12
18
  name: string
13
19
  value: string | string[] | boolean | number | undefined
14
20
  label: string
@@ -20,21 +26,30 @@ export interface IFormFieldMixin extends Element {
20
26
  hint?: string
21
27
  id: string
22
28
 
23
- // Form association
24
29
  form: HTMLFormElement | null
25
30
 
26
- // Methods
27
31
  checkValidity(): boolean
28
32
  reportValidity(): boolean
29
33
  setCustomValidity(message: string): void
30
34
 
31
- // Event emitter helper
35
+ toFormEntries(): Array<[string, FormDataEntryValue]>
36
+ resetForm(): void
37
+
32
38
  emitChange(detail: any): void
33
39
  }
34
40
 
41
+ /** Predicate used by `<schmancy-form>` to detect mixin descendants. */
42
+ export function isSchmancyFormField(el: unknown): el is IFormFieldMixin {
43
+ return !!el && typeof el === 'object' && (el as any).constructor?.[SCHMANCY_FORM_FIELD] === true
44
+ }
45
+
35
46
  /**
36
47
  * A mixin that adds form field capabilities to a LitElement class.
37
- * This provides common form field properties, validation, and form association.
48
+ * Components that extend this mixin are automatically discovered and
49
+ * collected by `<schmancy-form>` — no tag-name registration needed.
50
+ *
51
+ * Subclasses may override `toFormEntries()` to contribute multiple
52
+ * name/value pairs to FormData (e.g. date-range, tag-input).
38
53
  *
39
54
  * @example
40
55
  * ```ts
@@ -47,67 +62,42 @@ export function FormFieldMixin<T extends Constructor<LitElement>>(superClass: T)
47
62
  class FormFieldMixinClass extends superClass {
48
63
  static formAssociated = true
49
64
 
65
+ /** Brand for cross-realm detection by `<schmancy-form>`. */
66
+ static readonly [SCHMANCY_FORM_FIELD] = true
67
+
50
68
  // Element internals for form association
51
- private internals: ElementInternals | undefined
69
+ internals: ElementInternals | undefined
70
+
71
+ /** Value snapshot captured at first render, used by `resetForm()`. */
72
+ protected _defaultValue: string | string[] | boolean | number | undefined = undefined
52
73
 
53
- // Properties common to form fields
54
- /**
55
- * The name of the form field (used for form submission)
56
- */
57
74
  @property({ type: String })
58
75
  name: string = ''
59
76
 
60
- /**
61
- * The current value of the form field
62
- */
63
77
  @property({ reflect: true })
64
78
  value: string | string[] | boolean | number | undefined = ''
65
79
 
66
- /**
67
- * Label text for the form field
68
- */
69
80
  @property({ type: String })
70
81
  label: string = ''
71
82
 
72
- /**
73
- * Whether the field is required
74
- */
75
83
  @property({ type: Boolean, reflect: true })
76
84
  required: boolean = false
77
85
 
78
- /**
79
- * Whether the field is disabled
80
- */
81
86
  @property({ type: Boolean, reflect: true })
82
87
  disabled: boolean = false
83
88
 
84
- /**
85
- * Whether the field is read-only
86
- */
87
89
  @property({ type: Boolean, reflect: true })
88
90
  readonly: boolean = false
89
91
 
90
- /**
91
- * Whether the field is in an error state
92
- */
93
92
  @property({ type: Boolean, reflect: true })
94
93
  error: boolean = false
95
94
 
96
- /**
97
- * The validation message to display
98
- */
99
95
  @property({ type: String })
100
96
  validationMessage: string = ''
101
97
 
102
- /**
103
- * Optional hint text to display below the field
104
- */
105
98
  @property({ type: String })
106
99
  hint?: string
107
100
 
108
- /**
109
- * Unique identifier for the field
110
- */
111
101
  @property({ reflect: true })
112
102
  override id: string = `schmancy-field-${Date.now()}-${Math.floor(Math.random() * 1000)}`
113
103
 
@@ -120,25 +110,23 @@ export function FormFieldMixin<T extends Constructor<LitElement>>(superClass: T)
120
110
  }
121
111
  }
122
112
 
123
- /**
124
- * Gets the form this element is associated with
125
- */
113
+ /** The form this element is associated with (native FACE behavior). */
126
114
  get form(): HTMLFormElement | null {
127
115
  return this.internals?.form ?? null
128
116
  }
129
117
 
130
- /**
131
- * Lifecycle method called when properties change
132
- */
118
+ protected firstUpdated(changedProps: PropertyValueMap<any>): void {
119
+ super.firstUpdated?.(changedProps)
120
+ if (this._defaultValue === undefined) this._defaultValue = this.value
121
+ }
122
+
133
123
  protected willUpdate(changedProps: PropertyValueMap<any>): void {
134
124
  super.willUpdate(changedProps)
135
125
 
136
- // Update form value when value changes
137
126
  if (changedProps.has('value')) {
138
127
  this.internals?.setFormValue(this.value as string | File | FormData | null)
139
128
  }
140
129
 
141
- // Update validation state when error or validation message changes
142
130
  if (changedProps.has('error') || changedProps.has('validationMessage')) {
143
131
  if (this.error && this.validationMessage) {
144
132
  this.internals?.setValidity({ customError: true }, this.validationMessage)
@@ -146,37 +134,87 @@ export function FormFieldMixin<T extends Constructor<LitElement>>(superClass: T)
146
134
  this.internals?.setValidity({})
147
135
  }
148
136
  }
137
+
138
+ // Broadcast standard field states for consumer CSS: :state(invalid),
139
+ // :state(required), :state(disabled), :state(readonly).
140
+ if (changedProps.has('error')) {
141
+ if (this.error) this.internals?.states.add('invalid')
142
+ else this.internals?.states.delete('invalid')
143
+ }
144
+ if (changedProps.has('required')) {
145
+ if (this.required) this.internals?.states.add('required')
146
+ else this.internals?.states.delete('required')
147
+ }
148
+ if (changedProps.has('disabled')) {
149
+ if (this.disabled) this.internals?.states.add('disabled')
150
+ else this.internals?.states.delete('disabled')
151
+ }
152
+ if (changedProps.has('readonly')) {
153
+ if (this.readonly) this.internals?.states.add('readonly')
154
+ else this.internals?.states.delete('readonly')
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Native FACE lifecycle — called by the browser when the owning form
160
+ * is reset. Delegates to `resetForm()` so subclasses have one
161
+ * override point for both programmatic and user-initiated resets.
162
+ */
163
+ formResetCallback(): void {
164
+ this.resetForm()
165
+ }
166
+
167
+ /** Native FACE lifecycle — called when the form's disabled state changes. */
168
+ formDisabledCallback(disabled: boolean): void {
169
+ this.disabled = disabled
170
+ }
171
+
172
+ /**
173
+ * Native FACE lifecycle — restore value after bfcache / form autofill.
174
+ */
175
+ formStateRestoreCallback(state: string | File | FormData | null): void {
176
+ if (state == null) return
177
+ this.value = state as any
178
+ }
179
+
180
+ /** Override to customize reset behavior; default restores `_defaultValue`. */
181
+ resetForm(): void {
182
+ this.value = this._defaultValue ?? ''
183
+ this.error = false
184
+ this.validationMessage = ''
185
+ this.internals?.setValidity({})
149
186
  }
150
187
 
151
188
  /**
152
- * Checks if the field is valid without showing validation UI
189
+ * Contribute entries to a parent FormData. Default: a single
190
+ * `[name, value]` pair when `name` is set and value is meaningful.
191
+ * Override for multi-entry controls (e.g. date range).
153
192
  */
193
+ toFormEntries(): Array<[string, FormDataEntryValue]> {
194
+ if (!this.name || this.disabled) return []
195
+ const v = this.value
196
+ if (v === undefined || v === null || v === '') return []
197
+ if (Array.isArray(v)) return v.map(item => [this.name, String(item)] as [string, FormDataEntryValue])
198
+ if (typeof v === 'boolean') return v ? [[this.name, 'on']] : []
199
+ return [[this.name, String(v)]]
200
+ }
201
+
154
202
  checkValidity(): boolean {
155
203
  if (this.disabled) return true
156
-
157
204
  if (this.required && (this.value === '' || this.value === undefined || this.value === null)) {
158
205
  this.error = true
159
206
  this.validationMessage = 'This field is required'
160
207
  return false
161
208
  }
162
-
163
- return true
209
+ return this.internals?.checkValidity() ?? true
164
210
  }
165
211
 
166
- /**
167
- * Reports validity and shows validation UI if invalid
168
- */
169
212
  reportValidity(): boolean {
170
213
  const isValid = this.checkValidity()
171
- if (!isValid) {
172
- this.internals?.reportValidity()
173
- }
214
+ if (!isValid) this.internals?.reportValidity()
174
215
  return isValid
175
216
  }
176
217
 
177
- /**
178
- * Sets a custom validation message
179
- */
180
218
  setCustomValidity(message: string): void {
181
219
  this.validationMessage = message
182
220
  this.error = message !== ''
@@ -187,11 +225,7 @@ export function FormFieldMixin<T extends Constructor<LitElement>>(superClass: T)
187
225
  }
188
226
  }
189
227
 
190
- /**
191
- * Helper method to emit change events using dispatchScopedEvent for instance isolation
192
- */
193
228
  emitChange(detail: any): void {
194
- // Use dispatchScopedEvent if available (from BaseElement mixin)
195
229
  if ('dispatchScopedEvent' in this && typeof this.dispatchScopedEvent === 'function') {
196
230
  this.dispatchScopedEvent('change', detail, { bubbles: true })
197
231
  } else {
@@ -212,13 +246,6 @@ export function FormFieldMixin<T extends Constructor<LitElement>>(superClass: T)
212
246
  /**
213
247
  * A convenience function that composes FormFieldMixin with TailwindElement
214
248
  * to create a base class for Schmancy form components.
215
- *
216
- * @example
217
- * ```ts
218
- * class MyInput extends SchmancyFormField(css`...`) {
219
- * // Your component code here
220
- * }
221
- * ```
222
249
  */
223
250
  export function SchmancyFormField<T extends CSSResult>(componentStyle?: T) {
224
251
  return FormFieldMixin(TailwindElement(componentStyle)) as Constructor<IFormFieldMixin> &
@@ -1,7 +1,17 @@
1
1
  @import 'tailwindcss';
2
+
3
+ /* Cascade-layer order contract. Consumer (unlayered) CSS always overrides
4
+ library styles regardless of specificity. Library-internal tokens and
5
+ components live in named layers so consumers can target them precisely. */
6
+ @layer schmancy.tokens, schmancy.base, schmancy.components;
7
+
8
+ @layer schmancy.base {
2
9
  :host,
3
10
  :root {
4
11
  font-family: var(--schmancy-font-family);
12
+ /* Advertise both schemes so UA form controls, scrollbars, and
13
+ `light-dark()` all render correctly until a theme resolves it. */
14
+ color-scheme: light dark;
5
15
  }
6
16
  :host,
7
17
  :host *,
@@ -547,3 +557,4 @@
547
557
  --ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
548
558
  --ease-snap: cubic-bezier(0.34, 1.2, 0.64, 1);
549
559
  }
560
+ } /* end @layer schmancy.base */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhmo91/schmancy",
3
- "version": "0.9.4",
3
+ "version": "0.9.6",
4
4
  "description": "UI library build with web components",
5
5
  "main": "./dist/index.js",
6
6
  "customElements": "custom-elements.json",
@@ -13,7 +13,6 @@
13
13
  "types": "./types/mixins/index.d.ts",
14
14
  "default": "./mixins/index.ts"
15
15
  },
16
- "./ai/*": "./ai/*",
17
16
  "./*": {
18
17
  "types": "./types/src/*/index.d.ts",
19
18
  "default": "./dist/*.js"
@@ -37,7 +36,8 @@
37
36
  "types",
38
37
  "src",
39
38
  "mixins",
40
- "ai",
39
+ ".claude-plugin",
40
+ "skills",
41
41
  "custom-elements.json",
42
42
  "README.md"
43
43
  ],
@@ -53,7 +53,10 @@
53
53
  "test": "vitest run",
54
54
  "test:watch": "vitest",
55
55
  "test:ui": "vitest --ui",
56
- "test:coverage": "vitest run --coverage"
56
+ "test:coverage": "vitest run --coverage",
57
+ "knip": "knip",
58
+ "format": "prettier --write 'src/**/*.{ts,css,scss}' 'mixins/**/*.{ts,css}'",
59
+ "format:check": "prettier --check 'src/**/*.{ts,css,scss}' 'mixins/**/*.{ts,css}'"
57
60
  },
58
61
  "author": "@mhmo91",
59
62
  "license": "Apache-2.0",
@@ -67,53 +70,41 @@
67
70
  "@lit-labs/virtualizer": "^2.1.1",
68
71
  "@lit/context": "^1.1.6",
69
72
  "@material/material-color-utilities": "^0.4.0",
70
- "@material/mwc-base": "^0.27.0",
71
73
  "@material/web": "^2.4.1",
72
- "@rollup/plugin-strip": "^3.0.4",
73
- "@rollup/plugin-terser": "^1.0.0",
74
- "@tailwindcss/nesting": "^0.0.0-insiders.565cd3e",
75
74
  "@types/cleave.js": "^1.4.12",
76
- "@webcomponents/scoped-custom-element-registry": "^0.0.10",
77
- "@webcomponents/webcomponentsjs": "^2.8.0",
78
75
  "cleave.js": "^1.6.0",
79
76
  "dayjs": "^1.11.20",
80
- "fastest-levenshtein": "^1.0.16",
81
77
  "highlight.js": "^11.11.1",
82
78
  "immer": "^11.1.4",
83
79
  "jsqr": "^1.4.0",
84
80
  "lit": "^3.3.2",
85
- "playground-elements": "^0.21.2",
86
81
  "rxjs": "^7.8.2",
87
- "tippy.js": "^6.3.7",
88
82
  "ts-is-present": "^1.2.2",
89
- "typeit": "^8.8.7",
90
- "typescript": "^5.9.3",
91
- "uuid": "^13.0.0",
92
- "web-component-analyzer": "^2.0.0"
83
+ "typeit": "^8.8.7"
93
84
  },
94
85
  "devDependencies": {
95
- "@tailwindcss/container-queries": "^0.1.1",
96
- "@tailwindcss/forms": "^0.5.11",
86
+ "@rollup/plugin-strip": "^3.0.4",
87
+ "@rollup/plugin-terser": "^1.0.0",
97
88
  "@tailwindcss/postcss": "^4.2.1",
98
89
  "@tailwindcss/vite": "^4.2.1",
99
90
  "@types/node": "^25.5.0",
100
- "@types/uuid": "^11.0.0",
101
- "@typescript-eslint/parser": "^8.57.1",
91
+ "@vitest/browser-playwright": "^4.1.4",
92
+ "@vitest/coverage-v8": "^4.1.5",
102
93
  "@vitest/ui": "^4.1.0",
103
- "autoprefixer": "^10.4.27",
104
- "c8": "^11.0.0",
105
- "concurrently": "^9.2.1",
106
- "deepmerge": "^4.3.1",
107
- "eslint": "^10.0.3",
94
+ "axe-core": "^4.11.3",
108
95
  "happy-dom": "^20.8.4",
96
+ "knip": "^6.6.0",
97
+ "playwright": "^1.59.1",
109
98
  "postcss": "^8.5.8",
110
99
  "prettier": "^3.8.1",
111
100
  "rollup-plugin-copy": "^3.5.0",
112
101
  "sass": "^1.98.0",
113
102
  "tailwindcss": "^4.2.1",
103
+ "ts-lit-plugin": "^2.0.2",
104
+ "typescript": "^5.9.3",
114
105
  "vite": "^8.0.0",
115
- "vite-plugin-sitemap": "^0.8.2",
116
- "vitest": "^4.1.0"
106
+ "vitest": "^4.1.0",
107
+ "web-component-analyzer": "^2.0.0"
117
108
  },
118
109
  "peerDependencies": {
119
110
  "lit": "^3.2.1",
@@ -0,0 +1,73 @@
1
+ # Schmancy — Documentation Index
2
+
3
+ A Web Component UI library on Lit + RxJS + Tailwind CSS.
4
+
5
+ ## Foundations
6
+
7
+ The framework pieces — touch before components.
8
+
9
+ - [Area](./area.md) — `<schmancy-area>`, `<schmancy-route>`, `area.push()`, `lazy()` for routing.
10
+ - [Store](./store.md) — `createContext`, `@select`, `@selectItem`, storage backends.
11
+ - [Mixins](./mixins.md) — `$LitElement` base class.
12
+ - [Theme](./theme.md) — `<schmancy-theme>`, color scheme, CSS variables.
13
+ - [Directives](./directives.md) — Lit directives for physics, effects, text, visibility, interaction.
14
+ - [Animation](./animation.md) — Spring presets (`SPRING_SMOOTH`, etc.), `createAnimation`.
15
+
16
+ ## Components by job
17
+
18
+ ### Display
19
+ [Typography](./typography.md) · [Icons](./icons.md) · [Avatar](./avatar.md) · [Divider](./divider.md) · [Badge](./badge.md) · [Kbd](./kbd.md) · [Code Highlight](./code-highlight.md) · [Typewriter](./typewriter.md) · [JSON](./json.md) · [Iframe](./iframe.md) · [Map](./map.md) · [Charts](./charts.md)
20
+
21
+ ### Surfaces & layout
22
+ [Surface](./surface.md) · [Card](./card.md) · [Scroll / Grid / Flex](./layout.md) · [Page](./page.md) · [Content Drawer](./content-drawer.md) · [Window](./window.md) · [Boat](./boat.md) · [Float](./float.md) · [Splash Screen](./splash-screen.md)
23
+
24
+ ### Forms
25
+ [Form](./form.md) · [Input](./input.md) · [Textarea](./textarea.md) · [Select](./select.md) · [Autocomplete](./autocomplete.md) · [Option](./option.md) · [Checkbox](./checkbox.md) · [Switch](./switch.md) · [Radio Group](./radio-group.md) · [Chips](./chips.md) · [Date Range](./date-range.md) · [Date Range Inline](./date-range-inline.md) · [Range](./range.md) · [Extra (Country/Timezone)](./extra.md)
26
+
27
+ ### Navigation
28
+ [Breadcrumb](./breadcrumb.md) · [Nav Drawer](./nav-drawer.md) · [Tabs](./tabs.md) · [Navigation Bar](./navigation-bar.md) · [Navigation Rail](./navigation-rail.md) · [Steps](./steps.md) · [Teleport](./teleport.md) · [Theme Button](./theme-button.md)
29
+
30
+ ### Overlays
31
+ [Dialog](./dialog.md) · [Sheet](./sheet.md) · [Notification](./notification.md) · [Menu](./menu.md) · [Dropdown](./dropdown.md) · [Tooltip (directive)](./tooltip.md) · [Lightbox](./lightbox.md) · [Expand](./expand.md)
32
+
33
+ ### Interactive
34
+ [Button](./button.md) · [List](./list.md) · [Details](./details.md) · [Table](./table.md) · [Tree](./tree.md) · [Slider](./slider.md) · [QR Scanner](./qr-scanner.md)
35
+
36
+ ### Feedback
37
+ [Progress](./progress.md) · [Busy](./busy.md) · [Skeleton](./skeleton.md) · [Connectivity](./connectivity.md) · [Delay](./delay.md)
38
+
39
+ ### Domain
40
+ [Mailbox](./mailbox.md)
41
+
42
+ ## Services (imperative APIs)
43
+
44
+ | Service | Purpose |
45
+ |---------|---------|
46
+ | `area` | Route navigation (see [area](./area.md)) |
47
+ | `$dialog` | Open dialogs (see [dialog](./dialog.md)) |
48
+ | `$notify` | Toast notifications (see [notification](./notification.md)) |
49
+ | `schmancyContentDrawer` | Side panel (see [content-drawer](./content-drawer.md)) |
50
+ | `theme` | Theme state, `fullscreen$` (see [theme](./theme.md)) |
51
+ | `sound` | Audio feedback (see [audio](./audio.md)) |
52
+ | `overlayStack` | Z-index coordinator (see [utils](./utils.md)) |
53
+ | `windowManager` | Window registry (see [window](./window.md)) |
54
+
55
+ ## Utilities
56
+
57
+ [Discovery](./discovery.md) — cross-shadow component lookup.
58
+ [RxJS Utils](./rxjs-utils.md) — `waitForElement`, `waitUntil`, `mutationObserver`.
59
+ [Utils](./utils.md) — `similarity`, `numbers`, `overlayStack`, `intersection$`, `hashContent`.
60
+ [Visually Hidden](./visually-hidden.md) — screen-reader-only content wrapper.
61
+ [Audio](./audio.md) — synthesized feedback sounds.
62
+
63
+ ## Conventions
64
+
65
+ - Lists use `repeat(items, item => item.id, tpl)`.
66
+ - View switching uses `cache(...)`.
67
+ - Expensive work uses `guard([deps], fn)`.
68
+ - DOM access uses `ref(createRef())`.
69
+ - Conditionals use `when(...)`, `choose(...)`, `ifDefined(...)`.
70
+ - All RxJS subscriptions end with `.pipe(takeUntil(this.disconnecting))`.
71
+ - Don't use `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
72
+ - Colors come from `--schmancy-sys-color-*` CSS vars or Tailwind theme classes.
73
+ - `classMap(...)` must be the sole expression in `class=`; never mix with string interpolation.
@@ -0,0 +1,120 @@
1
+ ---
2
+ name: schmancy
3
+ description: UI patterns, component APIs, and conventions for the @mhmo91/schmancy web-component library (Lit + RxJS + Tailwind). Activate whenever the user works on any <schmancy-*> tag, routing with schmancy-area, state with createContext/@select, the $LitElement base class, theme, directives, or overlay services ($dialog, $notify, schmancyContentDrawer, sheet).
4
+ ---
5
+
6
+ # Schmancy
7
+
8
+ Web-component UI library on Lit + RxJS + Tailwind CSS. This skill bundles the full library reference as supporting files alongside this SKILL.md.
9
+
10
+ ## How to use this skill
11
+
12
+ All reference files live in this directory. Read by filename.
13
+
14
+ 1. **Start with `INDEX.md`** for the full catalog organized by job (foundations / atoms / forms / navigation / overlays / interaction / feedback / display).
15
+ 2. **Before writing any `<schmancy-X>` tag**, read `X.md`. Example: `<schmancy-button>` → `button.md`.
16
+ 3. **Before editing foundations** (routing, state, base class, theme), read the matching foundation file below.
17
+ 4. **Apply the conventions** at the end of this file.
18
+
19
+ ## Foundations (the framework pieces — touch first)
20
+
21
+ | Piece | Read |
22
+ |-------|------|
23
+ | Routing (`<schmancy-area>`, `<schmancy-route>`, `area.push()`, `lazy()`) | `area.md` |
24
+ | State (`createContext`, `@select`, `@selectItem`) | `store.md` |
25
+ | Base class (`$LitElement`) | `mixins.md` |
26
+ | Theme (`<schmancy-theme>`, `theme` service) | `theme.md` |
27
+ | Directives (`magnetic`, `cursorGlow`, `gravity`, `reveal`, `animateText`, …) | `directives.md` |
28
+ | Spring physics presets | `animation.md` |
29
+
30
+ ## Overlay services (prefer over tags)
31
+
32
+ For modals, toasts, sheets, side drawers — reach for the **imperative service API** first:
33
+
34
+ ```typescript
35
+ import { $dialog, $notify, schmancyContentDrawer, sheet, SchmancySheetPosition } from '@mhmo91/schmancy'
36
+
37
+ $dialog.component(new EditForm()) // modal
38
+ $dialog.component(new QuickPicker(), { position: e }) // anchored modal
39
+ $notify.success('Saved'); $notify.error('Failed') // toast
40
+ schmancyContentDrawer.open({ component: new Detail() }) // side panel
41
+ sheet.open({ component: new Picker(), position: SchmancySheetPosition.BOTTOM }) // bottom sheet
42
+ ```
43
+
44
+ References: `dialog.md`, `notification.md`, `content-drawer.md`, `sheet.md`.
45
+
46
+ Use component tags (`<schmancy-menu>`, `<schmancy-dropdown>`, `<schmancy-tooltip>`, `<schmancy-lightbox>`, `<schmancy-expand>`) only when the tag is the natural fit (anchored panels, tooltips, galleries).
47
+
48
+ ## Non-negotiable conventions
49
+
50
+ **Component authoring**
51
+ - Every component extends `$LitElement(style?)`. Never raw `LitElement`.
52
+ - Every RxJS subscription ends with `.pipe(takeUntil(this.disconnecting))`.
53
+ - Register the tag in `HTMLElementTagNameMap` for TypeScript.
54
+
55
+ **State**
56
+ - Contexts live at module scope. Many small contexts beat one monolith.
57
+ - Gate subscriptions with `filter(() => ctx.ready)` when reading persisted contexts.
58
+ - Storage tiers: `'memory'` (regenerable) · `'session'` (per-tab) · `'local'` (user prefs) · `'indexeddb'` (>100-entry collections).
59
+
60
+ **Routing**
61
+ - Route guards are `Observable<boolean>`, never cached booleans.
62
+ - `when="tag-name"` must exactly match `@customElement('tag-name')`.
63
+ - Lazy-load route components: `lazy(() => import('./page'))`.
64
+ - After auth/permission guards, use `historyStrategy: 'replace'` or `'pop'` — never `'push'`.
65
+
66
+ **Templates**
67
+ - Lists: `repeat(items, i => i.id, tpl)`. Never `.map()`.
68
+ - View switching: `cache(...)`.
69
+ - Expensive work: `guard([deps], () => expensive())`.
70
+ - Conditionals: `when(...)` / `choose(...)` / `ifDefined(...)`.
71
+ - DOM access: `ref(createRef())`.
72
+ - `classMap(this.classMap({...}))` must be the sole expression in `class=` — never mix with string interpolation.
73
+
74
+ **Styling**
75
+ - Colors: `--schmancy-sys-color-*` CSS vars or Tailwind theme classes. Never hardcoded hex.
76
+ - No `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
77
+
78
+ **Accessibility (combobox forms)**
79
+ ```typescript
80
+ role="combobox"
81
+ aria-haspopup="listbox"
82
+ aria-expanded=${this._open}
83
+ aria-controls="listbox-id"
84
+ ```
85
+ Plus a live region: `<div id="live-status" role="status" aria-live="polite" class="sr-only"></div>`.
86
+
87
+ ## Minimal app skeleton
88
+
89
+ ```typescript
90
+ <schmancy-theme root scheme="dark">
91
+ <schmancy-surface type="solid" fill="all">
92
+ <schmancy-scroll>
93
+ <schmancy-area
94
+ name="root"
95
+ .default=${lazy(() => import('./home.page'))}
96
+ >
97
+ <schmancy-route when="home-page"
98
+ .component=${lazy(() => import('./home.page'))}></schmancy-route>
99
+
100
+ <schmancy-route when="app-index"
101
+ .component=${lazy(() => import('./app.page'))}
102
+ .guard=${authState$.pipe(
103
+ map(u => !!u),
104
+ takeUntil(this.disconnecting),
105
+ )}
106
+ @redirect=${() => area.push({
107
+ component: 'home-page', area: 'root', historyStrategy: 'replace',
108
+ })}></schmancy-route>
109
+ </schmancy-area>
110
+ </schmancy-scroll>
111
+ </schmancy-surface>
112
+ </schmancy-theme>
113
+ ```
114
+
115
+ ## Workflow
116
+
117
+ 1. User describes a UI task.
118
+ 2. Read `INDEX.md` to find the relevant components or foundations.
119
+ 3. Read the specific `.md` files for the APIs involved.
120
+ 4. Write code that follows the conventions above.
@@ -0,0 +1,64 @@
1
+ # Blackbird Animation System
2
+
3
+ > Spring physics animation presets for the Web Animations API and CSS transitions.
4
+
5
+ ## Spring Presets
6
+
7
+ | Preset | Duration | Character | Best For |
8
+ |--------|----------|-----------|----------|
9
+ | `SPRING_SMOOTH` | 500ms | Apple-style, subtle overshoot | Accordions, content reveals |
10
+ | `SPRING_SNAPPY` | 300ms | Quick, minimal overshoot | Buttons, toggles |
11
+ | `SPRING_BOUNCY` | 600ms | Playful, noticeable overshoot | Notifications, celebrations |
12
+ | `SPRING_GENTLE` | 700ms | Slow, no overshoot | Page transitions, modals |
13
+
14
+ ## Usage with Web Animations API
15
+ ```typescript
16
+ import { createAnimation, SPRING_SMOOTH } from '@mhmo91/schmancy'
17
+
18
+ const anim = createAnimation(SPRING_SMOOTH, {
19
+ from: { opacity: 0, transform: 'translateY(-16px)' },
20
+ to: { opacity: 1, transform: 'translateY(0)' }
21
+ })
22
+
23
+ element.animate(anim.keyframes, anim.options)
24
+ ```
25
+
26
+ ## Helper Functions
27
+ ```typescript
28
+ import {
29
+ createRevealAnimation, // Fade in + slide up
30
+ createDismissAnimation, // Fade out + slide up
31
+ createScaleAnimation, // Pop in/out
32
+ getEasing, // Auto-detect linear() support
33
+ prefersReducedMotion // Check reduced motion preference
34
+ } from '@mhmo91/schmancy'
35
+
36
+ // Reveal animation
37
+ const reveal = createRevealAnimation(SPRING_SMOOTH, 16) // 16px distance
38
+ element.animate(reveal.keyframes, reveal.options)
39
+
40
+ // Scale animation
41
+ const scale = createScaleAnimation(SPRING_SNAPPY, 0.9, 1)
42
+ element.animate(scale.keyframes, scale.options)
43
+ ```
44
+
45
+ ## CSS Custom Properties
46
+ ```css
47
+ /* Available after injecting ANIMATION_CSS_VARS */
48
+ .element {
49
+ transition: transform var(--blackbird-duration-smooth) var(--blackbird-easing-smooth);
50
+ }
51
+ ```
52
+
53
+ ## Tailwind Integration
54
+ ```typescript
55
+ import { tailwindAnimations } from '@mhmo91/schmancy'
56
+ // Use in tailwind.config.js extend block
57
+
58
+ // Available classes:
59
+ // ease-spring-smooth, ease-spring-snappy, ease-spring-bouncy, ease-spring-gentle
60
+ // duration-spring-smooth, duration-spring-snappy, etc.
61
+ // animate-blackbird-reveal, animate-blackbird-dismiss, etc.
62
+ ```
63
+
64
+ All animations respect `prefers-reduced-motion: reduce` (instant transitions, no animation).