@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-r0oEYIdi.cjs","names":[],"sources":["../src/sheet/hook.ts","../src/sheet/sheet.ts"],"sourcesContent":["// @watch decorator\n//\n// Runs when an observed property changes, e.g. @property or @state, but before the component updates.\n//\n// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start\n// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.\n//\n// Usage:\n//\n// @watch('propName')\n// handlePropChange(oldValue, newValue) {\n// ...\n// }\n//\ninterface WatchOptions {\n\twaitUntilFirstUpdate?: boolean\n}\n\nexport function on(propName: string, options?: WatchOptions) {\n\treturn (protoOrDescriptor: any, name: string): any => {\n\t\tconst { willUpdate } = protoOrDescriptor\n\n\t\toptions = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions\n\n\t\tprotoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {\n\t\t\twillUpdate.call(this, changedProps)\n\n\t\t\tif (changedProps.has(propName)) {\n\t\t\t\tconst oldValue = changedProps.get(propName)\n\t\t\t\tconst newValue = this[propName]\n\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\tif (!options?.waitUntilFirstUpdate || this.hasUpdated) {\n\t\t\t\t\t\tthis[name].call(this, oldValue, newValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { area } from '../area'\nimport { html, css } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\nimport { fromEvent, merge, takeUntil, tap, filter } from 'rxjs'\nimport { on } from './hook'\nimport { SchmancySheetPosition, sheet } from './sheet.service'\nimport { BLACKBIRD_EASING, DURATION_ENTER, DURATION_EXIT, DURATION_BACKDROP, EASE_OUT, EASE_IN } from '../utils/animation'\n\n@customElement('schmancy-sheet')\nexport default class SchmancySheet extends $LitElement(css`\n\t:host {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: var(--schmancy-overlay-z, 999);\n\t\tdisplay: none;\n\t}\n\t:host([open]) {\n\t\tdisplay: block;\n\t}\n\n\t/* Luminous edge glow on sheet panel */\n\t.content {\n\t\tbox-shadow: -8px 0 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t:host([position='bottom']) .content {\n\t\tbox-shadow: 0 -8px 40px -8px color-mix(in srgb, var(--schmancy-sys-color-primary-default) 15%, transparent);\n\t}\n\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.content { box-shadow: var(--schmancy-sys-elevation-3); }\n\t}\n`) {\n\t// uid is inherited from $LitElement mixin - auto-generated or set via attribute\n\t@property({ type: Boolean, reflect: true }) open = false\n\t@property({ type: String, reflect: true }) position: SchmancySheetPosition = SchmancySheetPosition.Side\n\t@property({ type: Boolean, reflect: true }) persist = false\n\t@property({ type: Boolean, reflect: true }) lock = false\n\t@property({ type: Boolean, reflect: true }) handleHistory = true\n\n\tprivate lastFocusedElement: HTMLElement | null = null\n\t@query('.overlay') private overlayEl!: HTMLDivElement\n\t@query('.content') private contentEl!: HTMLDivElement\n\n\t@on('open')\n\tonOpenChange(_oldValue: boolean, newValue: boolean) {\n\t\tif (newValue) {\n\t\t\tthis.lastFocusedElement = document.activeElement as HTMLElement\n\t\t\tthis.setBackgroundInert(true)\n\t\t\tthis.animateIn()\n\t\t\tthis.focus()\n\t\t} else {\n\t\t\tthis.animateOut()\n\t\t\tthis.setBackgroundInert(false)\n\t\t\tthis.lastFocusedElement?.focus()\n\t\t\tthis.lastFocusedElement = null\n\t\t}\n\t}\n\n\tprivate animateIn() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 0 }, { opacity: 1 }], {\n\t\t\tduration: DURATION_BACKDROP,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.95)' },\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_ENTER,\n\t\t\teasing: BLACKBIRD_EASING,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tprivate animateOut() {\n\t\tif (!this.overlayEl || !this.contentEl) return\n\n\t\tthis.overlayEl.animate([{ opacity: 1 }, { opacity: 0 }], {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_OUT,\n\t\t\tfill: 'forwards',\n\t\t})\n\n\t\tconst animation =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateX(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateX(100%) scale(0.98)' },\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{ opacity: 1, transform: 'translateY(0) scale(1)' },\n\t\t\t\t\t\t{ opacity: 0, transform: 'translateY(100%) scale(0.98)' },\n\t\t\t\t\t]\n\n\t\tthis.contentEl.animate(animation, {\n\t\t\tduration: DURATION_EXIT,\n\t\t\teasing: EASE_IN,\n\t\t\tfill: 'forwards',\n\t\t})\n\t}\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\t\tthis.setupEventListeners()\n\t}\n\n\tdisconnectedCallback() {\n\t\tsuper.disconnectedCallback()\n\t\tthis.disconnecting.next(true)\n\t}\n\n\tprivate setupEventListeners() {\n\t\t// Handle browser back button\n\t\tconst popState$ = fromEvent<PopStateEvent>(window, 'popstate').pipe(\n\t\t\tfilter(() => this.handleHistory),\n\t\t\ttap(e => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\t// Handle ESC key\n\t\tconst keyUp$ = fromEvent<KeyboardEvent>(this, 'keydown').pipe(\n\t\t\ttap(event => {\n\t\t\t\tif (event.key === 'Escape' && !this.lock && this.open) {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\tsheet.dismiss(this.uid)\n\t\t\t\t}\n\t\t\t}),\n\t\t)\n\n\t\t// Handle render events from sheet service\n\t\tconst render$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-render').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(e => {\n\t\t\t\tarea.push({\n\t\t\t\t\tarea: this.uid,\n\t\t\t\t\tcomponent: e.detail.component,\n\t\t\t\t\tprops: e.detail.props,\n\t\t\t\t\thistoryStrategy: 'silent',\n\t\t\t\t})\n\t\t\t}),\n\t\t)\n\n\t\t// Handle dismiss events from sheet service\n\t\tconst dismiss$ = fromEvent<CustomEvent>(window, 'schmancy-sheet-dismiss').pipe(\n\t\t\tfilter(e => e.detail.uid === this.uid),\n\t\t\ttap(() => {\n\t\t\t\tthis.closeSheet()\n\t\t\t}),\n\t\t)\n\n\t\tmerge(popState$, keyUp$, render$, dismiss$).pipe(takeUntil(this.disconnecting)).subscribe()\n\t}\n\n\tprivate setBackgroundInert(inert: boolean) {\n\t\tconst parent = this.parentElement\n\t\tif (!parent) return\n\n\t\tArray.from(parent.children).forEach(child => {\n\t\t\tif (child !== this && child instanceof HTMLElement) {\n\t\t\t\tchild.toggleAttribute('inert', inert)\n\t\t\t}\n\t\t})\n\t}\n\n\tcloseSheet() {\n\t\tthis.open = false\n\t\tthis.dispatchEvent(new CustomEvent('close'))\n\t}\n\n\toverride focus() {\n\t\t// delegatesFocus in shadowRootOptions handles automatic focus\n\t\t// Just focus first element with autofocus attribute if present\n\t\tconst element = this.querySelector('[autofocus]')\n\t\tif (element instanceof HTMLElement) {\n\t\t\telement.focus()\n\t\t}\n\t}\n\n\tprivate handleOverlayClick = (e: Event) => {\n\t\te.stopPropagation()\n\t\tif (!this.lock) {\n\t\t\tsheet.dismiss(this.uid)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst sheetClasses = `absolute inset-0 flex h-full`\n\n\t\tconst overlayClasses = `overlay absolute inset-0 bg-surface-container/10 backdrop-blur-lg backdrop-saturate-150 ${this.lock ? '' : 'cursor-pointer'}`\n\n\t\tconst contentClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'content h-full min-w-[320px] max-w-[90vw] w-fit ml-auto z-10'\n\t\t\t\t: 'content w-full mt-auto rounded-t-2xl max-h-[90vh] z-10'\n\n\t\tconst surfaceClasses =\n\t\t\tthis.position === SchmancySheetPosition.Side\n\t\t\t\t? 'h-full overflow-auto'\n\t\t\t\t: 'max-h-[90vh] overflow-auto'\n\n\t\treturn html`\n\t\t\t<div class=${sheetClasses} role=\"dialog\" aria-hidden=${!this.open} aria-modal=${this.open} tabindex=\"0\">\n\t\t\t\t<div class=${overlayClasses} @click=${this.handleOverlayClick}></div>\n\t\t\t\t<div class=${contentClasses}>\n\t\t\t\t\t<schmancy-surface rounded=\"left\" fill=\"all\" id=\"body\" class=${surfaceClasses} type=\"solid\">\n\t\t\t\t\t\t<schmancy-area class=\"size-full overflow-auto\" name=${this.uid}>\n\t\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t\t</schmancy-area>\n\t\t\t\t\t</schmancy-surface>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-sheet': SchmancySheet\n\t}\n}\n"],"mappings":"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"}
package/dist/sheet.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sheet.service-Dumvr1HT.cjs`);require(`./sheet-CQec-bCV.cjs`),exports.SchmancySheetPosition=e.t,exports.sheet=e.n;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./sheet.service-Cr13Oo6G.cjs`);require(`./sheet-r0oEYIdi.cjs`),exports.SchmancySheetPosition=e.t,exports.sheet=e.n;
package/dist/sheet.js CHANGED
@@ -1,3 +1,3 @@
1
- import { n as e, t } from "./sheet.service-BcPV3Du4.js";
2
- import "./sheet-BMXcUiIm.js";
1
+ import { n as e, t } from "./sheet.service-DUO5_kmI.js";
2
+ import "./sheet-i1KtxGIj.js";
3
3
  export { t as SchmancySheetPosition, e as sheet };
@@ -0,0 +1 @@
1
+ require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./audio-DUVz7Ars.cjs`),n=require(`./overlay-stack-CEYGD9T1.cjs`);let r=require(`rxjs`);var i=function(e){return e.Side=`side`,e.Bottom=`bottom`,e}({}),a=new class{constructor(){this.bottomSheet=new r.Subject,this.activeSheets=new Set,this.popStateListenerActive=!1,this.setupSheetOpeningLogic(),this.setupPopStateListener()}setupSheetOpeningLogic(){this.bottomSheet.pipe((0,r.switchMap)(t=>{let n=t.uid??`sheet-${Date.now()}`;return e.p(`schmancy-sheet`).pipe((0,r.map)(e=>({target:t,existingSheet:e?.getAttribute(`uid`)===n?e:null,uid:n})))}),(0,r.switchMap)(({target:t,existingSheet:n,uid:i})=>n?(0,r.of)({target:t,sheet:n,uid:i}):e.p(`schmancy-theme`).pipe((0,r.map)(e=>{let n=e||document.body,r=document.createElement(`schmancy-sheet`);return r.setAttribute(`uid`,i),n.appendChild(r),{target:t,sheet:r,uid:i}}))),(0,r.tap)(({target:e,sheet:t})=>{e.lock&&t.setAttribute(`lock`,`true`);let r=e.position||(window.innerWidth>=768?i.Side:i.Bottom);t.setAttribute(`position`,r),e.persist&&t.setAttribute(`persist`,String(e.persist)),t.style.setProperty(`--schmancy-overlay-z`,String(n.t.getNextZIndex())),document.body.style.overflow=`hidden`}),(0,r.delay)(20),(0,r.tap)(({target:e,uid:t})=>{window.dispatchEvent(new CustomEvent(`schmancy-sheet-render`,{detail:{component:e.component,uid:t,props:e.props},bubbles:!0,composed:!0}))}),(0,r.delay)(1),(0,r.tap)(({sheet:e,uid:i})=>{e.setAttribute(`open`,`true`),t.t.play(`curious`),this.activeSheets.add(i),(0,r.fromEvent)(e,`close`).pipe((0,r.take)(1),(0,r.delay)(300)).subscribe(()=>{this.activeSheets.delete(i),n.t.release();let t=e.getAttribute(`persist`);t&&t!==`false`||e.remove(),document.body.style.overflow=`auto`})})).subscribe()}setupPopStateListener(){this.popStateListenerActive||=((0,r.fromEvent)(window,`popstate`).subscribe(e=>{if(this.activeSheets.size>0){let t=Array.from(this.activeSheets).pop();t&&(this.dismiss(t),e.state&&e.state.schmancySheet&&history.pushState({},``,window.location.href))}}),!0)}dismiss(e){if(!e&&this.activeSheets.size>0){let t=Array.from(this.activeSheets);e=t[t.length-1]}e&&(t.t.play(`atEase`),window.dispatchEvent(new CustomEvent(`schmancy-sheet-dismiss`,{detail:{uid:e},bubbles:!0,composed:!0})),this.activeSheets.delete(e))}open(e){this.bottomSheet.next(e)}push(e){this.bottomSheet.next(e)}isOpen(e){return this.activeSheets.has(e)}closeAll(){Array.from(this.activeSheets).forEach(e=>{this.dismiss(e)})}};Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.service-Cr13Oo6G.cjs","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { p as e } from "./tailwind.mixin-DufHBjmb.js";
2
+ import { t } from "./audio-C7TzWI8M.js";
3
+ import { t as n } from "./overlay-stack-Ca4EK2Mu.js";
4
+ import { Subject as r, delay as i, fromEvent as a, map as o, of as s, switchMap as c, take as l, tap as u } from "rxjs";
5
+ var d = function(e) {
6
+ return e.Side = "side", e.Bottom = "bottom", e;
7
+ }({}), f = new class {
8
+ constructor() {
9
+ this.bottomSheet = new r(), this.activeSheets = /* @__PURE__ */ new Set(), this.popStateListenerActive = !1, this.setupSheetOpeningLogic(), this.setupPopStateListener();
10
+ }
11
+ setupSheetOpeningLogic() {
12
+ this.bottomSheet.pipe(c((t) => {
13
+ let n = t.uid ?? `sheet-${Date.now()}`;
14
+ return e("schmancy-sheet").pipe(o((e) => ({
15
+ target: t,
16
+ existingSheet: e?.getAttribute("uid") === n ? e : null,
17
+ uid: n
18
+ })));
19
+ }), c(({ target: t, existingSheet: n, uid: r }) => n ? s({
20
+ target: t,
21
+ sheet: n,
22
+ uid: r
23
+ }) : e("schmancy-theme").pipe(o((e) => {
24
+ let n = e || document.body, i = document.createElement("schmancy-sheet");
25
+ return i.setAttribute("uid", r), n.appendChild(i), {
26
+ target: t,
27
+ sheet: i,
28
+ uid: r
29
+ };
30
+ }))), u(({ target: e, sheet: t }) => {
31
+ e.lock && t.setAttribute("lock", "true");
32
+ let r = e.position || (window.innerWidth >= 768 ? d.Side : d.Bottom);
33
+ t.setAttribute("position", r), e.persist && t.setAttribute("persist", String(e.persist)), t.style.setProperty("--schmancy-overlay-z", String(n.getNextZIndex())), document.body.style.overflow = "hidden";
34
+ }), i(20), u(({ target: e, uid: t }) => {
35
+ window.dispatchEvent(new CustomEvent("schmancy-sheet-render", {
36
+ detail: {
37
+ component: e.component,
38
+ uid: t,
39
+ props: e.props
40
+ },
41
+ bubbles: !0,
42
+ composed: !0
43
+ }));
44
+ }), i(1), u(({ sheet: e, uid: r }) => {
45
+ e.setAttribute("open", "true"), t.play("curious"), this.activeSheets.add(r), a(e, "close").pipe(l(1), i(300)).subscribe(() => {
46
+ this.activeSheets.delete(r), n.release();
47
+ let t = e.getAttribute("persist");
48
+ t && t !== "false" || e.remove(), document.body.style.overflow = "auto";
49
+ });
50
+ })).subscribe();
51
+ }
52
+ setupPopStateListener() {
53
+ this.popStateListenerActive ||= (a(window, "popstate").subscribe((e) => {
54
+ if (this.activeSheets.size > 0) {
55
+ let t = Array.from(this.activeSheets).pop();
56
+ t && (this.dismiss(t), e.state && e.state.schmancySheet && history.pushState({}, "", window.location.href));
57
+ }
58
+ }), !0);
59
+ }
60
+ dismiss(e) {
61
+ if (!e && this.activeSheets.size > 0) {
62
+ let t = Array.from(this.activeSheets);
63
+ e = t[t.length - 1];
64
+ }
65
+ e && (t.play("atEase"), window.dispatchEvent(new CustomEvent("schmancy-sheet-dismiss", {
66
+ detail: { uid: e },
67
+ bubbles: !0,
68
+ composed: !0
69
+ })), this.activeSheets.delete(e));
70
+ }
71
+ open(e) {
72
+ this.bottomSheet.next(e);
73
+ }
74
+ push(e) {
75
+ this.bottomSheet.next(e);
76
+ }
77
+ isOpen(e) {
78
+ return this.activeSheets.has(e);
79
+ }
80
+ closeAll() {
81
+ Array.from(this.activeSheets).forEach((e) => {
82
+ this.dismiss(e);
83
+ });
84
+ }
85
+ }();
86
+ export { f as n, d as t };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.service-DUO5_kmI.js","names":[],"sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdelay,\n\tfromEvent,\n\tmap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttap,\n} from 'rxjs'\nimport { $sounds } from '../audio'\nimport { ComponentType } from '../area/router.types'\nimport { discoverComponent } from '@mixins/discovery.service'\nimport { overlayStack } from '../utils/overlay-stack'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: ComponentType\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n\tprops?: Record<string, unknown> // Properties to pass to the component\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target => {\n\t\t\t\t\tconst uid = target.uid ?? `sheet-${Date.now()}`\n\n\t\t\t\t\t// Discover existing sheet with this uid\n\t\t\t\t\treturn discoverComponent<SchmancySheet>('schmancy-sheet').pipe(\n\t\t\t\t\t\tmap(existingSheet => {\n\t\t\t\t\t\t\t// Check if discovered sheet matches our uid\n\t\t\t\t\t\t\tconst sheet = existingSheet?.getAttribute('uid') === uid ? existingSheet : null\n\t\t\t\t\t\t\treturn { target, existingSheet: sheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tswitchMap(({ target, existingSheet, uid }) => {\n\t\t\t\t\t// Discover theme container if creating new sheet\n\t\t\t\t\tif (existingSheet) {\n\t\t\t\t\t\treturn of({ target, sheet: existingSheet, uid })\n\t\t\t\t\t}\n\n\t\t\t\t\treturn discoverComponent<HTMLElement>('schmancy-theme').pipe(\n\t\t\t\t\t\tmap(theme => {\n\t\t\t\t\t\t\t// Determine container - use theme or fallback to body\n\t\t\t\t\t\t\tconst targetContainer = theme || document.body\n\n\t\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\t\tconst sheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\n\t\t\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet, uid }\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Configure sheet attributes\n\t\t\t\t\tif (target.lock) sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\tif (target.persist) sheet.setAttribute('persist', String(target.persist))\n\n\t\t\t\t\t// Set dynamic z-index for proper stacking with dialogs\n\t\t\t\t\tsheet.style.setProperty('--schmancy-overlay-z', String(overlayStack.getNextZIndex()))\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, uid }) => {\n\t\t\t\t\t// Dispatch render event - area router handles duplicate prevention\n\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\tnew CustomEvent('schmancy-sheet-render', {\n\t\t\t\t\t\t\tdetail: {\n\t\t\t\t\t\t\t\tcomponent: target.component,\n\t\t\t\t\t\t\t\tuid,\n\t\t\t\t\t\t\t\tprops: target.props\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t}),\n\t\t\t\t\t)\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ sheet, uid }) => {\n\t\t\t\t\tsheet.setAttribute('open', 'true')\n\t\t\t\t\t$sounds.play('curious')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tthis.activeSheets.add(uid)\n\n\t\t\t\t\t// Set up close event listener\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1), delay(300))\n\t\t\t\t\t\t.subscribe(() => {\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\toverlayStack.release()\n\n\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\tconst persistAttr = sheet.getAttribute('persist')\n\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\tsheet.remove()\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\t$sounds.play('atEase')\n\t\t\twindow.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-sheet-dismiss', {\n\t\t\t\t\tdetail: { uid },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t})\n\t\t\t)\n\t\t\tthis.activeSheets.delete(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t * @deprecated Use `push` instead for consistency with area router API\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Push a component to the sheet (recommended method)\n\t * Follows the same API pattern as area.push for consistency\n\t */\n\tpush(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n}\nexport const sheet = new BottomSheetService()\n"],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BCfY8kxB.cjs`);const e=require(`./tailwind.mixin-Cpa-VnnX.cjs`),t=require(`./decorate-F9CuyeHg.cjs`);require(`./mixins.cjs`);let n=require(`lit/decorators.js`),r=require(`lit`);var i=class extends e.t(r.css`
2
+ :host {
3
+ display: block;
4
+ width: var(--_sw, 100%);
5
+ height: var(--_sh, 1rem);
6
+ }
7
+ .surface {
8
+ width: 100%;
9
+ height: 100%;
10
+ border-radius: var(--_sr, 0.25rem);
11
+ background: linear-gradient(
12
+ 90deg,
13
+ var(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 25%,
14
+ var(--schmancy-sys-color-surface-container, #f2f2f2) 37%,
15
+ var(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 63%
16
+ );
17
+ background-size: 400% 100%;
18
+ animation: schmancy-skeleton-shimmer 1.4s ease infinite;
19
+ }
20
+ :host([shape='circle']) .surface {
21
+ border-radius: 50%;
22
+ }
23
+ @keyframes schmancy-skeleton-shimmer {
24
+ 0% { background-position: 100% 50%; }
25
+ 100% { background-position: 0 50%; }
26
+ }
27
+ @media (prefers-reduced-motion: reduce) {
28
+ .surface {
29
+ animation: none;
30
+ background: var(--schmancy-sys-color-surface-containerHighest, #e6e6e6);
31
+ }
32
+ }
33
+ `){constructor(...e){super(...e),this.shape=`rect`,this.width=``,this.height=``,this.radius=``}connectedCallback(){super.connectedCallback(),this.setAttribute(`role`,`status`),this.setAttribute(`aria-busy`,`true`),this.setAttribute(`aria-label`,`Loading`)}updated(){this.width&&this.style.setProperty(`--_sw`,this.width);let e=this.shape===`text`?`1em`:`1rem`;this.style.setProperty(`--_sh`,this.height||e),this.radius&&this.style.setProperty(`--_sr`,this.radius)}render(){return r.html`<div part="surface" class="surface"></div>`}};t.t([(0,n.property)({type:String,reflect:!0})],i.prototype,`shape`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`width`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`height`,void 0),t.t([(0,n.property)({type:String})],i.prototype,`radius`,void 0),i=t.t([(0,n.customElement)(`schmancy-skeleton`)],i),Object.defineProperty(exports,`SchmancySkeleton`,{enumerable:!0,get:function(){return i}});
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.cjs","names":[],"sources":["../src/skeleton/skeleton.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Placeholder shimmer surface shown while content loads. Renders a\n * shape-configurable rectangle with a reduced-motion-aware shimmer.\n *\n * @element schmancy-skeleton\n * @attr shape - 'rect' | 'circle' | 'text'. Default 'rect'.\n * @attr width - CSS length (e.g. `100%`, `12rem`).\n * @attr height - CSS length; for `shape=text` defaults to 1em.\n * @attr radius - CSS length for corner radius; ignored for `shape=circle`.\n * @csspart surface - The shimmering surface element.\n */\n@customElement('schmancy-skeleton')\nexport class SchmancySkeleton extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: var(--_sw, 100%);\n\t\theight: var(--_sh, 1rem);\n\t}\n\t.surface {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: var(--_sr, 0.25rem);\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\tvar(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 25%,\n\t\t\tvar(--schmancy-sys-color-surface-container, #f2f2f2) 37%,\n\t\t\tvar(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 63%\n\t\t);\n\t\tbackground-size: 400% 100%;\n\t\tanimation: schmancy-skeleton-shimmer 1.4s ease infinite;\n\t}\n\t:host([shape='circle']) .surface {\n\t\tborder-radius: 50%;\n\t}\n\t@keyframes schmancy-skeleton-shimmer {\n\t\t0% { background-position: 100% 50%; }\n\t\t100% { background-position: 0 50%; }\n\t}\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.surface {\n\t\t\tanimation: none;\n\t\t\tbackground: var(--schmancy-sys-color-surface-containerHighest, #e6e6e6);\n\t\t}\n\t}\n`) {\n\t@property({ type: String, reflect: true }) shape: 'rect' | 'circle' | 'text' = 'rect'\n\t@property({ type: String }) width = ''\n\t@property({ type: String }) height = ''\n\t@property({ type: String }) radius = ''\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.setAttribute('role', 'status')\n\t\tthis.setAttribute('aria-busy', 'true')\n\t\tthis.setAttribute('aria-label', 'Loading')\n\t}\n\n\tprotected updated(): void {\n\t\tif (this.width) this.style.setProperty('--_sw', this.width)\n\t\tconst defaultHeight = this.shape === 'text' ? '1em' : '1rem'\n\t\tthis.style.setProperty('--_sh', this.height || defaultHeight)\n\t\tif (this.radius) this.style.setProperty('--_sr', this.radius)\n\t}\n\n\trender() {\n\t\treturn html`<div part=\"surface\" class=\"surface\"></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-skeleton': SchmancySkeleton\n\t}\n}\n"],"mappings":"qQAgBO,IAAA,EAAA,cAA+B,EAAA,EAAgB,EAAA,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAiCuB,OAAA,KAAA,MAC3C,GAAA,KAAA,OACC,GAAA,KAAA,OACA,GAErC,mBAAA,CACC,MAAM,mBAAA,CACN,KAAK,aAAa,OAAQ,SAAA,CAC1B,KAAK,aAAa,YAAa,OAAA,CAC/B,KAAK,aAAa,aAAc,UAAA,CAGjC,SAAA,CACK,KAAK,OAAO,KAAK,MAAM,YAAY,QAAS,KAAK,MAAA,CACrD,IAAM,EAAgB,KAAK,QAAU,OAAS,MAAQ,OACtD,KAAK,MAAM,YAAY,QAAS,KAAK,QAAU,EAAA,CAC3C,KAAK,QAAQ,KAAK,MAAM,YAAY,QAAS,KAAK,OAAA,CAGvD,QAAA,CACC,MAAO,GAAA,IAAI,+CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UApBF,CAAE,KAAM,OAAQ,QAAA,CAAS,EAAA,CAAA,CAAA,CAAO,EAAA,UAAA,QAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UAChC,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,QAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UACjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,SAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,UACjB,CAAE,KAAM,OAAA,CAAA,CAAA,CAAS,EAAA,UAAA,SAAA,IAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,eArCb,oBAAA,CAAA,CAAoB,EAAA,CAAA,OAAA,eAAA,QAAA,mBAAA,CAAA,WAAA,CAAA,EAAA,IAAA,UAAA,CAAA,OAAA,GAAA,CAAA"}
@@ -0,0 +1,58 @@
1
+ import { t as e } from "./tailwind.mixin-DufHBjmb.js";
2
+ import { t } from "./decorate-D_utPUsC.js";
3
+ import "./mixins.js";
4
+ import { customElement as n, property as r } from "lit/decorators.js";
5
+ import { css as i, html as a } from "lit";
6
+ var o = class extends e(i`
7
+ :host {
8
+ display: block;
9
+ width: var(--_sw, 100%);
10
+ height: var(--_sh, 1rem);
11
+ }
12
+ .surface {
13
+ width: 100%;
14
+ height: 100%;
15
+ border-radius: var(--_sr, 0.25rem);
16
+ background: linear-gradient(
17
+ 90deg,
18
+ var(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 25%,
19
+ var(--schmancy-sys-color-surface-container, #f2f2f2) 37%,
20
+ var(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 63%
21
+ );
22
+ background-size: 400% 100%;
23
+ animation: schmancy-skeleton-shimmer 1.4s ease infinite;
24
+ }
25
+ :host([shape='circle']) .surface {
26
+ border-radius: 50%;
27
+ }
28
+ @keyframes schmancy-skeleton-shimmer {
29
+ 0% { background-position: 100% 50%; }
30
+ 100% { background-position: 0 50%; }
31
+ }
32
+ @media (prefers-reduced-motion: reduce) {
33
+ .surface {
34
+ animation: none;
35
+ background: var(--schmancy-sys-color-surface-containerHighest, #e6e6e6);
36
+ }
37
+ }
38
+ `) {
39
+ constructor(...e) {
40
+ super(...e), this.shape = "rect", this.width = "", this.height = "", this.radius = "";
41
+ }
42
+ connectedCallback() {
43
+ super.connectedCallback(), this.setAttribute("role", "status"), this.setAttribute("aria-busy", "true"), this.setAttribute("aria-label", "Loading");
44
+ }
45
+ updated() {
46
+ this.width && this.style.setProperty("--_sw", this.width);
47
+ let e = this.shape === "text" ? "1em" : "1rem";
48
+ this.style.setProperty("--_sh", this.height || e), this.radius && this.style.setProperty("--_sr", this.radius);
49
+ }
50
+ render() {
51
+ return a`<div part="surface" class="surface"></div>`;
52
+ }
53
+ };
54
+ t([r({
55
+ type: String,
56
+ reflect: !0
57
+ })], o.prototype, "shape", void 0), t([r({ type: String })], o.prototype, "width", void 0), t([r({ type: String })], o.prototype, "height", void 0), t([r({ type: String })], o.prototype, "radius", void 0), o = t([n("schmancy-skeleton")], o);
58
+ export { o as SchmancySkeleton };
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../src/skeleton/skeleton.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * Placeholder shimmer surface shown while content loads. Renders a\n * shape-configurable rectangle with a reduced-motion-aware shimmer.\n *\n * @element schmancy-skeleton\n * @attr shape - 'rect' | 'circle' | 'text'. Default 'rect'.\n * @attr width - CSS length (e.g. `100%`, `12rem`).\n * @attr height - CSS length; for `shape=text` defaults to 1em.\n * @attr radius - CSS length for corner radius; ignored for `shape=circle`.\n * @csspart surface - The shimmering surface element.\n */\n@customElement('schmancy-skeleton')\nexport class SchmancySkeleton extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\twidth: var(--_sw, 100%);\n\t\theight: var(--_sh, 1rem);\n\t}\n\t.surface {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tborder-radius: var(--_sr, 0.25rem);\n\t\tbackground: linear-gradient(\n\t\t\t90deg,\n\t\t\tvar(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 25%,\n\t\t\tvar(--schmancy-sys-color-surface-container, #f2f2f2) 37%,\n\t\t\tvar(--schmancy-sys-color-surface-containerHighest, #e6e6e6) 63%\n\t\t);\n\t\tbackground-size: 400% 100%;\n\t\tanimation: schmancy-skeleton-shimmer 1.4s ease infinite;\n\t}\n\t:host([shape='circle']) .surface {\n\t\tborder-radius: 50%;\n\t}\n\t@keyframes schmancy-skeleton-shimmer {\n\t\t0% { background-position: 100% 50%; }\n\t\t100% { background-position: 0 50%; }\n\t}\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.surface {\n\t\t\tanimation: none;\n\t\t\tbackground: var(--schmancy-sys-color-surface-containerHighest, #e6e6e6);\n\t\t}\n\t}\n`) {\n\t@property({ type: String, reflect: true }) shape: 'rect' | 'circle' | 'text' = 'rect'\n\t@property({ type: String }) width = ''\n\t@property({ type: String }) height = ''\n\t@property({ type: String }) radius = ''\n\n\tconnectedCallback(): void {\n\t\tsuper.connectedCallback()\n\t\tthis.setAttribute('role', 'status')\n\t\tthis.setAttribute('aria-busy', 'true')\n\t\tthis.setAttribute('aria-label', 'Loading')\n\t}\n\n\tprotected updated(): void {\n\t\tif (this.width) this.style.setProperty('--_sw', this.width)\n\t\tconst defaultHeight = this.shape === 'text' ? '1em' : '1rem'\n\t\tthis.style.setProperty('--_sh', this.height || defaultHeight)\n\t\tif (this.radius) this.style.setProperty('--_sr', this.radius)\n\t}\n\n\trender() {\n\t\treturn html`<div part=\"surface\" class=\"surface\"></div>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-skeleton': SchmancySkeleton\n\t}\n}\n"],"mappings":";;;;;AAgBO,IAAA,IAAA,cAA+B,EAAgB,CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAiCuB,QAAA,KAAA,QAC3C,IAAA,KAAA,SACC,IAAA,KAAA,SACA;;CAErC,oBAAA;AACC,QAAM,mBAAA,EACN,KAAK,aAAa,QAAQ,SAAA,EAC1B,KAAK,aAAa,aAAa,OAAA,EAC/B,KAAK,aAAa,cAAc,UAAA;;CAGjC,UAAA;AACK,OAAK,SAAO,KAAK,MAAM,YAAY,SAAS,KAAK,MAAA;EACrD,IAAM,IAAgB,KAAK,UAAU,SAAS,QAAQ;AACtD,OAAK,MAAM,YAAY,SAAS,KAAK,UAAU,EAAA,EAC3C,KAAK,UAAQ,KAAK,MAAM,YAAY,SAAS,KAAK,OAAA;;CAGvD,SAAA;AACC,SAAO,CAAI;;;AAAA,EAAA,CApBX,EAAS;CAAE,MAAM;CAAQ,SAAA,CAAS;CAAA,CAAA,CAAA,EAAO,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,EAAA,CACzC,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,SAAA,KAAA,EAAA,EAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,EAAA,CAC1B,EAAS,EAAE,MAAM,QAAA,CAAA,CAAA,EAAS,EAAA,WAAA,UAAA,KAAA,EAAA,EAAA,IAAA,EAAA,CArC3B,EAAc,oBAAA,CAAA,EAAoB,EAAA;AAAA,SAAA,KAAA"}
@@ -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,53 @@
1
+ # schmancy-breadcrumb
2
+
3
+ > Breadcrumb navigation with auto-inserted separators and ARIA landmark semantics.
4
+
5
+ ## Usage
6
+ ```html
7
+ <schmancy-breadcrumb>
8
+ <schmancy-breadcrumb-item href="/">Home</schmancy-breadcrumb-item>
9
+ <schmancy-breadcrumb-item href="/projects">Projects</schmancy-breadcrumb-item>
10
+ <schmancy-breadcrumb-item current>Dashboard</schmancy-breadcrumb-item>
11
+ </schmancy-breadcrumb>
12
+ ```
13
+
14
+ ## schmancy-breadcrumb
15
+
16
+ Container. Renders a `<nav aria-label="Breadcrumb">` and inserts a separator element between each slotted item.
17
+
18
+ | Property | Type | Default | Description |
19
+ |----------|------|---------|-------------|
20
+ | separator | string | `'/'` | Character or string rendered between items. Hidden from assistive tech via `aria-hidden="true"`. |
21
+
22
+ | Part | Description |
23
+ |------|-------------|
24
+ | separator | Each inserted separator element. Style bulk via `schmancy-breadcrumb::part(separator)`. |
25
+
26
+ The host sets `aria-label="Breadcrumb"` on connection if none was already set.
27
+
28
+ ## schmancy-breadcrumb-item
29
+
30
+ Individual crumb. Renders as `<a>` when `href` is set, otherwise `<span>`.
31
+
32
+ | Property | Type | Default | Description |
33
+ |----------|------|---------|-------------|
34
+ | href | string | `''` | When set (and `current` is false), renders as an anchor. |
35
+ | current | boolean | `false` | Marks this item as `aria-current="page"`. Renders as a plain `<span>` even if `href` is set. |
36
+
37
+ ## Examples
38
+ ```html
39
+ <!-- Custom separator -->
40
+ <schmancy-breadcrumb separator="›">
41
+ <schmancy-breadcrumb-item href="/">Home</schmancy-breadcrumb-item>
42
+ <schmancy-breadcrumb-item href="/docs">Docs</schmancy-breadcrumb-item>
43
+ <schmancy-breadcrumb-item current>API</schmancy-breadcrumb-item>
44
+ </schmancy-breadcrumb>
45
+ ```
46
+
47
+ ```html
48
+ <!-- Two-level (just two crumbs) -->
49
+ <schmancy-breadcrumb>
50
+ <schmancy-breadcrumb-item href="/users">Users</schmancy-breadcrumb-item>
51
+ <schmancy-breadcrumb-item current>Jane Doe</schmancy-breadcrumb-item>
52
+ </schmancy-breadcrumb>
53
+ ```
@@ -0,0 +1,40 @@
1
+ # schmancy-kbd
2
+
3
+ > Render a keyboard shortcut hint. Semantically a `<kbd>` element; visually styled as a pressed key.
4
+
5
+ ## Usage
6
+ ```html
7
+ Press <schmancy-kbd>⌘</schmancy-kbd> + <schmancy-kbd>K</schmancy-kbd> to search.
8
+ ```
9
+
10
+ ## Properties
11
+ | Property | Type | Default | Description |
12
+ |----------|------|---------|-------------|
13
+ | size | `'sm'\|'md'` | `'md'` | Smaller variant for inline text. |
14
+
15
+ ## Parts
16
+ | Part | Description |
17
+ |------|-------------|
18
+ | base | The inner native `<kbd>` element. |
19
+
20
+ ## Examples
21
+ ```html
22
+ <!-- Inline combo -->
23
+ <schmancy-typography>
24
+ <schmancy-kbd size="sm">Shift</schmancy-kbd>
25
+ +
26
+ <schmancy-kbd size="sm">Tab</schmancy-kbd>
27
+ to move backwards
28
+ </schmancy-typography>
29
+ ```
30
+
31
+ ```html
32
+ <!-- Command palette shortcut -->
33
+ <div class="flex items-center gap-2">
34
+ Open command palette
35
+ <span>
36
+ <schmancy-kbd>⌘</schmancy-kbd>
37
+ <schmancy-kbd>K</schmancy-kbd>
38
+ </span>
39
+ </div>
40
+ ```