@mhmo91/schmancy 0.9.2 → 0.9.4
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.
- package/README.md +19 -75
- package/ai/INDEX.md +72 -0
- package/ai/area.md +119 -39
- package/ai/audio.md +69 -0
- package/ai/boat.md +47 -0
- package/ai/charts.md +93 -0
- package/ai/connectivity.md +36 -0
- package/ai/date-range-inline.md +44 -0
- package/ai/delay.md +50 -0
- package/ai/discovery.md +67 -0
- package/ai/expand.md +63 -0
- package/ai/extra.md +59 -0
- package/ai/float.md +14 -0
- package/ai/iframe.md +44 -0
- package/ai/json.md +33 -0
- package/ai/layout.md +63 -0
- package/ai/mailbox.md +102 -0
- package/ai/map.md +55 -0
- package/ai/mixins.md +64 -35
- package/ai/option.md +43 -0
- package/ai/page.md +42 -0
- package/ai/qr-scanner.md +51 -0
- package/ai/range.md +47 -0
- package/ai/rxjs-utils.md +60 -0
- package/ai/slider.md +43 -0
- package/ai/store.md +92 -49
- package/ai/teleport.md +55 -0
- package/ai/theme-button.md +26 -0
- package/ai/typewriter.md +46 -0
- package/ai/utils.md +95 -0
- package/ai/window.md +67 -0
- package/dist/ai/INDEX.md +72 -0
- package/dist/ai/area.md +119 -39
- package/dist/ai/audio.md +69 -0
- package/dist/ai/boat.md +47 -0
- package/dist/ai/charts.md +93 -0
- package/dist/ai/connectivity.md +36 -0
- package/dist/ai/date-range-inline.md +44 -0
- package/dist/ai/delay.md +50 -0
- package/dist/ai/discovery.md +67 -0
- package/dist/ai/expand.md +63 -0
- package/dist/ai/extra.md +59 -0
- package/dist/ai/float.md +14 -0
- package/dist/ai/iframe.md +44 -0
- package/dist/ai/json.md +33 -0
- package/dist/ai/layout.md +63 -0
- package/dist/ai/mailbox.md +102 -0
- package/dist/ai/map.md +55 -0
- package/dist/ai/mixins.md +64 -35
- package/dist/ai/option.md +43 -0
- package/dist/ai/page.md +42 -0
- package/dist/ai/qr-scanner.md +51 -0
- package/dist/ai/range.md +47 -0
- package/dist/ai/rxjs-utils.md +60 -0
- package/dist/ai/slider.md +43 -0
- package/dist/ai/store.md +92 -49
- package/dist/ai/teleport.md +55 -0
- package/dist/ai/theme-button.md +26 -0
- package/dist/ai/typewriter.md +46 -0
- package/dist/ai/utils.md +95 -0
- package/dist/ai/window.md +67 -0
- package/dist/{area-DbBcfm5p.js → area-CRoGqD_u.js} +2 -2
- package/dist/area-CRoGqD_u.js.map +1 -0
- package/dist/{area-1h9xEpTc.cjs → area-JPykB7A9.cjs} +1 -1
- package/dist/area-JPykB7A9.cjs.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-OE70CcYP.cjs → autocomplete-5rVhbieU.cjs} +1 -1
- package/dist/{autocomplete-OE70CcYP.cjs.map → autocomplete-5rVhbieU.cjs.map} +1 -1
- package/dist/{autocomplete-DDVsegep.js → autocomplete-BllPQwr8.js} +3 -3
- package/dist/{autocomplete-DDVsegep.js.map → autocomplete-BllPQwr8.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-T8Ov4-yA.js → boat-BDTQ-du9.js} +2 -2
- package/dist/{boat-T8Ov4-yA.js.map → boat-BDTQ-du9.js.map} +1 -1
- package/dist/{boat-Cf1oJ0ka.cjs → boat-DYEAZ8Qj.cjs} +1 -1
- package/dist/{boat-Cf1oJ0ka.cjs.map → boat-DYEAZ8Qj.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/{busy-BD6D5P-l.js → busy-ChDAeaKF.js} +1 -1
- package/dist/{busy-BD6D5P-l.js.map → busy-ChDAeaKF.js.map} +1 -1
- package/dist/{busy-DF9wztWL.cjs → busy-Dj7Xn0Z0.cjs} +1 -1
- package/dist/{busy-DF9wztWL.cjs.map → busy-Dj7Xn0Z0.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +2 -2
- package/dist/{card-Csvu8UJ9.cjs → card-BvPWVEJX.cjs} +1 -1
- package/dist/{card-Csvu8UJ9.cjs.map → card-BvPWVEJX.cjs.map} +1 -1
- package/dist/{card-DM_miKMd.js → card-DZFPRPqs.js} +1 -1
- package/dist/{card-DM_miKMd.js.map → card-DZFPRPqs.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +2 -2
- package/dist/{checkbox-sJujc_ga.cjs → checkbox-BC_37rsG.cjs} +1 -1
- package/dist/{checkbox-sJujc_ga.cjs.map → checkbox-BC_37rsG.cjs.map} +1 -1
- package/dist/{checkbox-BgGtMaMR.js → checkbox-GSSjqo6w.js} +1 -1
- package/dist/{checkbox-BgGtMaMR.js.map → checkbox-GSSjqo6w.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-D_e6wijp.cjs → chips-B19XS8Xc.cjs} +1 -1
- package/dist/{chips-D_e6wijp.cjs.map → chips-B19XS8Xc.cjs.map} +1 -1
- package/dist/{chips-BZaH4wez.js → chips-B9oAEfE_.js} +3 -3
- package/dist/{chips-BZaH4wez.js.map → chips-B9oAEfE_.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-Q3cc6ukq.js → code-highlight-DCk5lJY-.js} +1 -1
- package/dist/{code-highlight-Q3cc6ukq.js.map → code-highlight-DCk5lJY-.js.map} +1 -1
- package/dist/{code-highlight-DlhERv_O.cjs → code-highlight-fSLrlgOb.cjs} +1 -1
- package/dist/{code-highlight-DlhERv_O.cjs.map → code-highlight-fSLrlgOb.cjs.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{components-CRhkB3V2.js → components-COsM6sJZ.js} +2 -2
- package/dist/{components-CRhkB3V2.js.map → components-COsM6sJZ.js.map} +1 -1
- package/dist/{components-DnlEYYDs.cjs → components-CyD6a7gQ.cjs} +1 -1
- package/dist/{components-DnlEYYDs.cjs.map → components-CyD6a7gQ.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-C0IYnvHF.js → date-range-Sfyco9-n.js} +3 -3
- package/dist/{date-range-C0IYnvHF.js.map → date-range-Sfyco9-n.js.map} +1 -1
- package/dist/{date-range-cymbTDnl.cjs → date-range-ZAaQB22I.cjs} +1 -1
- package/dist/{date-range-cymbTDnl.cjs.map → date-range-ZAaQB22I.cjs.map} +1 -1
- package/dist/{date-range-inline-0ENN4Plz.js → date-range-inline-Bl8qbiQF.js} +1 -1
- package/dist/{date-range-inline-0ENN4Plz.js.map → date-range-inline-Bl8qbiQF.js.map} +1 -1
- package/dist/{date-range-inline-Cfwt-ReH.cjs → date-range-inline-m7nLjOMI.cjs} +1 -1
- package/dist/{date-range-inline-Cfwt-ReH.cjs.map → date-range-inline-m7nLjOMI.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-D6mQLUp-.cjs → delay-7boauN6N.cjs} +1 -1
- package/dist/{delay-D6mQLUp-.cjs.map → delay-7boauN6N.cjs.map} +1 -1
- package/dist/{delay-D1dVP93u.js → delay-CgX6m0HN.js} +3 -3
- package/dist/{delay-D1dVP93u.js.map → delay-CgX6m0HN.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-CPT_Mi4e.cjs → details-BHnk8l4q.cjs} +1 -1
- package/dist/{details-CPT_Mi4e.cjs.map → details-BHnk8l4q.cjs.map} +1 -1
- package/dist/{details-Cv4OOrVW.js → details-BPkUg8Cq.js} +2 -2
- package/dist/{details-Cv4OOrVW.js.map → details-BPkUg8Cq.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs.map +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/{divider-DDC-kND3.js → divider-CW9a7MMj.js} +2 -2
- package/dist/{divider-DDC-kND3.js.map → divider-CW9a7MMj.js.map} +1 -1
- package/dist/{divider-nZ_2to2N.cjs → divider-_khrhrZo.cjs} +1 -1
- package/dist/{divider-nZ_2to2N.cjs.map → divider-_khrhrZo.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-Crdts9q_.cjs → expand-Cp7-PH8b.cjs} +1 -1
- package/dist/{expand-Crdts9q_.cjs.map → expand-Cp7-PH8b.cjs.map} +1 -1
- package/dist/{expand-Bp3N8CcL.js → expand-iQ7EOMP7.js} +3 -3
- package/dist/{expand-Bp3N8CcL.js.map → expand-iQ7EOMP7.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-B0IZCg0t.cjs → extra-IKAiJJhv.cjs} +1 -1
- package/dist/{extra-B0IZCg0t.cjs.map → extra-IKAiJJhv.cjs.map} +1 -1
- package/dist/{extra-DupwhQhC.js → extra-wEpvEFbK.js} +2 -2
- package/dist/{extra-DupwhQhC.js.map → extra-wEpvEFbK.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-Dqdc1_S5.js → float-BQ_urmMs.js} +2 -2
- package/dist/{float-Dqdc1_S5.js.map → float-BQ_urmMs.js.map} +1 -1
- package/dist/{float-CQoJ_oSB.cjs → float-D5rNC82i.cjs} +1 -1
- package/dist/{float-CQoJ_oSB.cjs.map → float-D5rNC82i.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-CvoLqMY7.cjs → form-BqN1AGFj.cjs} +1 -1
- package/dist/{form-CvoLqMY7.cjs.map → form-BqN1AGFj.cjs.map} +1 -1
- package/dist/{form-CW5XNuTg.js → form-CajC5HnO.js} +1 -1
- package/dist/{form-CW5XNuTg.js.map → form-CajC5HnO.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icons-BLQHEbIk.cjs → icons-B57_93VV.cjs} +1 -1
- package/dist/{icons-BLQHEbIk.cjs.map → icons-B57_93VV.cjs.map} +1 -1
- package/dist/{icons-Cpfdb7sA.js → icons-BDqiGXrO.js} +1 -1
- package/dist/{icons-Cpfdb7sA.js.map → icons-BDqiGXrO.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-sJGXBbxT.cjs → iframe-DNHL3GIk.cjs} +1 -1
- package/dist/{iframe-sJGXBbxT.cjs.map → iframe-DNHL3GIk.cjs.map} +1 -1
- package/dist/{iframe-DG6HVYdy.js → iframe-WnWPIrBG.js} +1 -1
- package/dist/{iframe-DG6HVYdy.js.map → iframe-WnWPIrBG.js.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +33 -33
- package/dist/{input-DGTdmp1Q.cjs → input-BiSrTcrR.cjs} +1 -1
- package/dist/{input-DGTdmp1Q.cjs.map → input-BiSrTcrR.cjs.map} +1 -1
- package/dist/{input-BevxycIt.js → input-VaXHFrRn.js} +1 -1
- package/dist/{input-BevxycIt.js.map → input-VaXHFrRn.js.map} +1 -1
- package/dist/{input-chip-CKVtjInb.cjs → input-chip-Dy-AiP55.cjs} +1 -1
- package/dist/{input-chip-CKVtjInb.cjs.map → input-chip-Dy-AiP55.cjs.map} +1 -1
- package/dist/{input-chip-BWS-SFU4.js → input-chip-QejNcRnS.js} +1 -1
- package/dist/{input-chip-BWS-SFU4.js.map → input-chip-QejNcRnS.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/{layout-DxLjlDfr.js → layout-CnsXeCAy.js} +2 -2
- package/dist/{layout-DxLjlDfr.js.map → layout-CnsXeCAy.js.map} +1 -1
- package/dist/{layout-CQdd8UCr.cjs → layout-DNYG3phx.cjs} +1 -1
- package/dist/{layout-CQdd8UCr.cjs.map → layout-DNYG3phx.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-Bjc55lHH.js → lightbox-BrI1Z31s.js} +2 -2
- package/dist/{lightbox-Bjc55lHH.js.map → lightbox-BrI1Z31s.js.map} +1 -1
- package/dist/{lightbox-C_863_XU.cjs → lightbox-CmACf0t5.cjs} +1 -1
- package/dist/{lightbox-C_863_XU.cjs.map → lightbox-CmACf0t5.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-BAqhlzZd.js → list-Cm-jjXxM.js} +2 -2
- package/dist/{list-BAqhlzZd.js.map → list-Cm-jjXxM.js.map} +1 -1
- package/dist/{list-CaXzdN9_.cjs → list-swIL9VDv.cjs} +1 -1
- package/dist/{list-CaXzdN9_.cjs.map → list-swIL9VDv.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-DN6X9_wD.cjs → litElement.mixin-3llHwB-8.cjs} +1 -1
- package/dist/{litElement.mixin-DN6X9_wD.cjs.map → litElement.mixin-3llHwB-8.cjs.map} +1 -1
- package/dist/{litElement.mixin-Dktub0ri.js → litElement.mixin-6jJYHCrZ.js} +1 -1
- package/dist/{litElement.mixin-Dktub0ri.js.map → litElement.mixin-6jJYHCrZ.js.map} +1 -1
- package/dist/{mailbox-DuMUH4f3.js → mailbox-BuvsVaAQ.js} +4 -4
- package/dist/{mailbox-DuMUH4f3.js.map → mailbox-BuvsVaAQ.js.map} +1 -1
- package/dist/{mailbox-BvsLXpvy.cjs → mailbox-D6LkQcN5.cjs} +1 -1
- package/dist/{mailbox-BvsLXpvy.cjs.map → mailbox-D6LkQcN5.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-DkIy1ph7.js → map-CQiKAxC3.js} +1 -1
- package/dist/{map-DkIy1ph7.js.map → map-CQiKAxC3.js.map} +1 -1
- package/dist/{map-C2Msv9TQ.cjs → map-D5NN4VET.cjs} +1 -1
- package/dist/{map-C2Msv9TQ.cjs.map → map-D5NN4VET.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-DEeDKW5U.js → menu-C1x04YZw.js} +2 -2
- package/dist/{menu-DEeDKW5U.js.map → menu-C1x04YZw.js.map} +1 -1
- package/dist/{menu-Mm71lv9k.cjs → menu-CkgMO9K5.cjs} +1 -1
- package/dist/{menu-Mm71lv9k.cjs.map → menu-CkgMO9K5.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +3 -3
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/{notification-K-ug8cKk.js → notification-BnBgxjF-.js} +3 -3
- package/dist/{notification-K-ug8cKk.js.map → notification-BnBgxjF-.js.map} +1 -1
- package/dist/{notification-cTgXEDZ0.cjs → notification-CZFEhWxc.cjs} +1 -1
- package/dist/{notification-cTgXEDZ0.cjs.map → notification-CZFEhWxc.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-5rEOmtAm.cjs → option-BrxCVwSx.cjs} +1 -1
- package/dist/{option-5rEOmtAm.cjs.map → option-BrxCVwSx.cjs.map} +1 -1
- package/dist/{option-TFSKvSjT.js → option-DBO8xZwd.js} +1 -1
- package/dist/{option-TFSKvSjT.js.map → option-DBO8xZwd.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +3 -3
- package/dist/{progress-iu0AMbSg.cjs → progress-Db2e4_Zd.cjs} +1 -1
- package/dist/{progress-iu0AMbSg.cjs.map → progress-Db2e4_Zd.cjs.map} +1 -1
- package/dist/{progress-Cta3nM-f.js → progress-DeiHxXo7.js} +2 -2
- package/dist/{progress-Cta3nM-f.js.map → progress-DeiHxXo7.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-D69zybs5.js → provide-C1aQhxYo.js} +1 -1
- package/dist/{provide-D69zybs5.js.map → provide-C1aQhxYo.js.map} +1 -1
- package/dist/{provide-BEyyKlDM.cjs → provide-DHnhQtCH.cjs} +1 -1
- package/dist/{provide-BEyyKlDM.cjs.map → provide-DHnhQtCH.cjs.map} +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +2 -2
- package/dist/{radio-group-DKPN0T50.cjs → radio-group-Cspwd-Vw.cjs} +1 -1
- package/dist/{radio-group-DKPN0T50.cjs.map → radio-group-Cspwd-Vw.cjs.map} +1 -1
- package/dist/{radio-group-BjSWmYJC.js → radio-group-zSO0AkJf.js} +1 -1
- package/dist/{radio-group-BjSWmYJC.js.map → radio-group-zSO0AkJf.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{scroll-mayaGGpE.cjs → scroll-QMCmbbDv.cjs} +1 -1
- package/dist/{scroll-mayaGGpE.cjs.map → scroll-QMCmbbDv.cjs.map} +1 -1
- package/dist/{scroll-tG1vaRFO.js → scroll-cBDzye64.js} +1 -1
- package/dist/{scroll-tG1vaRFO.js.map → scroll-cBDzye64.js.map} +1 -1
- package/dist/{select-C4YK5Arj.cjs → select-Ct37l3lg.cjs} +1 -1
- package/dist/{select-C4YK5Arj.cjs.map → select-Ct37l3lg.cjs.map} +1 -1
- package/dist/{select-CepryGGP.js → select-c6HbWvKP.js} +2 -2
- package/dist/{select-CepryGGP.js.map → select-c6HbWvKP.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-D2uT95S1.js → sheet-BMXcUiIm.js} +4 -4
- package/dist/{sheet-D2uT95S1.js.map → sheet-BMXcUiIm.js.map} +1 -1
- package/dist/{sheet-Cy4C2-kG.cjs → sheet-CQec-bCV.cjs} +1 -1
- package/dist/{sheet-Cy4C2-kG.cjs.map → sheet-CQec-bCV.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-Os8KJGSE.js → sheet.service-BcPV3Du4.js} +1 -1
- package/dist/{sheet.service-Os8KJGSE.js.map → sheet.service-BcPV3Du4.js.map} +1 -1
- package/dist/{sheet.service-Dv5Hwj3k.cjs → sheet.service-Dumvr1HT.cjs} +1 -1
- package/dist/{sheet.service-Dv5Hwj3k.cjs.map → sheet.service-Dumvr1HT.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{src-BLcmKlCH.js → src-BLngW2bl.js} +42 -42
- package/dist/{src-BLcmKlCH.js.map → src-BLngW2bl.js.map} +1 -1
- package/dist/{src-tfU0akqI.cjs → src-BtQVyqMy.cjs} +1 -1
- package/dist/{src-tfU0akqI.cjs.map → src-BtQVyqMy.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +3 -3
- package/dist/{surface-CiiIYeJN.cjs → surface-BjKZoJxK.cjs} +1 -1
- package/dist/{surface-CiiIYeJN.cjs.map → surface-BjKZoJxK.cjs.map} +1 -1
- package/dist/{surface-fXvRpS6s.js → surface-pK8hME5c.js} +3 -3
- package/dist/{surface-fXvRpS6s.js.map → surface-pK8hME5c.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{surface.mixin-C4hbgyaP.cjs → surface.mixin-C5sDI1-_.cjs} +1 -1
- package/dist/{surface.mixin-C4hbgyaP.cjs.map → surface.mixin-C5sDI1-_.cjs.map} +1 -1
- package/dist/{surface.mixin-DBuxL5aL.js → surface.mixin-CBNRpJum.js} +1 -1
- package/dist/{surface.mixin-DBuxL5aL.js.map → surface.mixin-CBNRpJum.js.map} +1 -1
- package/dist/{table-BeXnwSsq.js → table-BXIHX9h4.js} +2 -2
- package/dist/{table-BeXnwSsq.js.map → table-BXIHX9h4.js.map} +1 -1
- package/dist/{table-BRVKlNjl.cjs → table-CiqgZzSd.cjs} +1 -1
- package/dist/{table-BRVKlNjl.cjs.map → table-CiqgZzSd.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-CBU9Ctqm.cjs → tabs-CKa-W4qA.cjs} +1 -1
- package/dist/{tabs-CBU9Ctqm.cjs.map → tabs-CKa-W4qA.cjs.map} +1 -1
- package/dist/{tabs-y708NWQ2.js → tabs-nbV5eblZ.js} +2 -2
- package/dist/{tabs-y708NWQ2.js.map → tabs-nbV5eblZ.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-BCJOOX1_.js +225 -0
- package/dist/tailwind.mixin-BCJOOX1_.js.map +1 -0
- package/dist/tailwind.mixin-BF1Huas7.cjs +2 -0
- package/dist/tailwind.mixin-BF1Huas7.cjs.map +1 -0
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BhAoJg8c.cjs → textarea-Cp1ZE60O.cjs} +1 -1
- package/dist/{textarea-BhAoJg8c.cjs.map → textarea-Cp1ZE60O.cjs.map} +1 -1
- package/dist/{textarea-Bl8-gQEJ.js → textarea-D7q8exMg.js} +1 -1
- package/dist/{textarea-Bl8-gQEJ.js.map → textarea-D7q8exMg.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-C-vdR-Ic.cjs → theme-Da4SPq9X.cjs} +1 -1
- package/dist/{theme-C-vdR-Ic.cjs.map → theme-Da4SPq9X.cjs.map} +1 -1
- package/dist/{theme-DZUpYJn-.js → theme-_VPV6Bxh.js} +3 -3
- package/dist/{theme-DZUpYJn-.js.map → theme-_VPV6Bxh.js.map} +1 -1
- package/dist/{theme-button-CwrvpOMK.js → theme-button--sX8A-m1.js} +1 -1
- package/dist/{theme-button-CwrvpOMK.js.map → theme-button--sX8A-m1.js.map} +1 -1
- package/dist/{theme-button-Cx1iKh7G.cjs → theme-button-Ci8VQ7KW.cjs} +1 -1
- package/dist/{theme-button-Cx1iKh7G.cjs.map → theme-button-Ci8VQ7KW.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-CXQIzqPV.cjs → typewriter-B2TnHPjw.cjs} +1 -1
- package/dist/{typewriter-CXQIzqPV.cjs.map → typewriter-B2TnHPjw.cjs.map} +1 -1
- package/dist/{typewriter-mxVw5dFn.js → typewriter-BrZNa8T-.js} +3 -3
- package/dist/{typewriter-mxVw5dFn.js.map → typewriter-BrZNa8T-.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{window-EWYJJC_H.js → window-CM1ycigo.js} +2 -2
- package/dist/{window-EWYJJC_H.js.map → window-CM1ycigo.js.map} +1 -1
- package/dist/{window-DFMlB1Tq.cjs → window-Uii13x_r.cjs} +1 -1
- package/dist/{window-DFMlB1Tq.cjs.map → window-Uii13x_r.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/mixins/baseElement.ts +1 -1
- package/mixins/discovery.service.ts +1 -1
- package/package.json +1 -2
- package/src/area/area.service.ts +1 -1
- package/src/area/router.types.ts +1 -1
- package/src/directives/animate-text.ts +1 -1
- package/src/discovery/discovery.service.ts +1 -1
- package/src/input/input.ts +1 -1
- package/src/mailbox/README.md +7 -10
- package/src/mailbox/types.ts +0 -1
- package/types/mixins/discovery.service.d.ts +1 -1
- package/types/src/discovery/discovery.service.d.ts +1 -1
- package/types/src/mailbox/types.d.ts +0 -1
- package/dist/area-1h9xEpTc.cjs.map +0 -1
- package/dist/area-DbBcfm5p.js.map +0 -1
- package/dist/tailwind.mixin-C4cx3IOr.js +0 -225
- package/dist/tailwind.mixin-C4cx3IOr.js.map +0 -1
- package/dist/tailwind.mixin-DGiyLbEi.cjs +0 -2
- package/dist/tailwind.mixin-DGiyLbEi.cjs.map +0 -1
- package/src/area/readme.md +0 -338
- package/src/area/router-guide.md +0 -360
- package/src/autocomplete/README.md +0 -485
- package/src/content-drawer/readme.md +0 -709
- package/src/icons/readme.md +0 -37
- package/src/list/readme.md +0 -62
- package/src/radio-group/readme.md +0 -315
- package/src/select/README.md +0 -405
- package/src/tabs/Readme.md +0 -397
- package/src/teleport/readme.md +0 -91
- package/src/tree/README.md +0 -59
- package/src/typewriter/IMPROVEMENTS.md +0 -174
- package/src/typewriter/QUICK_REFERENCE.md +0 -166
- package/src/typewriter/test-typewriter.html +0 -97
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# schmancy-theme-button
|
|
2
|
+
|
|
3
|
+
> Minimal palette-icon button that spins 360° on click. Hook its `click` to toggle/regenerate your theme.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```html
|
|
7
|
+
<schmancy-theme-button @click=${() => this.toggleTheme()}></schmancy-theme-button>
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
## Behavior
|
|
11
|
+
- Renders a `schmancy-button` (variant `text`) wrapping a palette `schmancy-icon`.
|
|
12
|
+
- On click: Web Animations API rotates the icon 360° over 300ms.
|
|
13
|
+
- No properties — it's a UI affordance; wire the theme logic via `@click`.
|
|
14
|
+
|
|
15
|
+
## Typical Wiring
|
|
16
|
+
```typescript
|
|
17
|
+
import { theme } from '@mhmo91/schmancy'
|
|
18
|
+
|
|
19
|
+
// Toggle dark/light
|
|
20
|
+
<schmancy-theme-button @click=${() => theme.toggleScheme()}></schmancy-theme-button>
|
|
21
|
+
|
|
22
|
+
// Randomize primary color
|
|
23
|
+
<schmancy-theme-button @click=${() => theme.randomize()}></schmancy-theme-button>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
See [theme.md](./theme.md) for the full theme service API.
|
package/ai/typewriter.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# schmancy-typewriter
|
|
2
|
+
|
|
3
|
+
> Text-reveal component powered by [TypeIt](https://typeitjs.com). Characters pop in with entrance + wobble physics; custom cursor pulses with drop-shadow glow.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```html
|
|
7
|
+
<schmancy-typewriter>
|
|
8
|
+
Hello, world.
|
|
9
|
+
</schmancy-typewriter>
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Properties
|
|
13
|
+
| Property | Type | Default | Description |
|
|
14
|
+
|----------|------|---------|-------------|
|
|
15
|
+
| `speed` | number | `35` | Ms per character typed |
|
|
16
|
+
| `deleteSpeed` | number | `20` | Ms per character deleted |
|
|
17
|
+
| `delay` | number | `0` | Initial delay before typing (inherited via `delayContext`) |
|
|
18
|
+
| `autoStart` | boolean | `true` | Start typing on connect |
|
|
19
|
+
| `cursorChar` | string | `''` | Character for the cursor (empty = default block cursor) |
|
|
20
|
+
| `once` | boolean | `true` | Only animate once per session (`sessionStorage` hash) |
|
|
21
|
+
| `loop` | boolean | `false` | Loop infinitely (overrides `once`) |
|
|
22
|
+
| `cyclePause` | number | `1500` | Default pause for cycling (ms) |
|
|
23
|
+
|
|
24
|
+
## Behavior
|
|
25
|
+
- **Lazy start** via IntersectionObserver — won't type until visible.
|
|
26
|
+
- **Session caching** — when `once=true`, content hash is stored; subsequent visits skip the animation.
|
|
27
|
+
- **Delay coordination** — consumes `delayContext`, staggering with parent `schmancy-delay`.
|
|
28
|
+
- Character entrance animation: scale 0.3 → 1.1 → 1 with blur-to-focus.
|
|
29
|
+
- Alternating characters get a subtle `wobble` rotation.
|
|
30
|
+
- Cursor pulses with `drop-shadow(0 0 8px currentColor)` glow.
|
|
31
|
+
|
|
32
|
+
## Slot Content
|
|
33
|
+
Text (or nested HTML) goes in the default slot. TypeIt handles strings, tags, line breaks.
|
|
34
|
+
|
|
35
|
+
```html
|
|
36
|
+
<schmancy-typewriter speed="50">
|
|
37
|
+
First line.<br>
|
|
38
|
+
<strong>Bold second.</strong>
|
|
39
|
+
</schmancy-typewriter>
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Vs. `typewriter` directive
|
|
43
|
+
- **Component (`schmancy-typewriter`)**: slot-based, lazy-starts on visibility, one-shot content reveal with cached skipping.
|
|
44
|
+
- **Directive (`typewriter([...phrases])`)**: cycles through a phrase array with typing + deleting + optional Web Audio sound. See [directives.md](./directives.md).
|
|
45
|
+
|
|
46
|
+
Use the directive for looping taglines. Use the component for one-time paragraph reveals.
|
package/ai/utils.md
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Schmancy Utils
|
|
2
|
+
|
|
3
|
+
> Non-component utilities exported from `@mhmo91/schmancy` (or `@mhmo91/schmancy/utils`). Animation presets, similarity search, number formatting, intersection observer wrapper, overlay z-index manager, and content hashing.
|
|
4
|
+
|
|
5
|
+
## Animation
|
|
6
|
+
|
|
7
|
+
See [animation.md](./animation.md) for the full Blackbird spring system. In brief:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import {
|
|
11
|
+
SPRING_SMOOTH, SPRING_SNAPPY, SPRING_BOUNCY, SPRING_GENTLE,
|
|
12
|
+
createAnimation, createRevealAnimation, createDismissAnimation, createScaleAnimation,
|
|
13
|
+
getEasing, prefersReducedMotion,
|
|
14
|
+
ANIMATION_CSS_VARS, tailwindAnimations, GRID_ANIMATION_CSS,
|
|
15
|
+
} from '@mhmo91/schmancy'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Number Formatting — `numbers` / `Numbers`
|
|
19
|
+
Locale-aware number formatting + currency + rounding.
|
|
20
|
+
```typescript
|
|
21
|
+
import numbers from '@mhmo91/schmancy'
|
|
22
|
+
|
|
23
|
+
numbers.roundNumber(3.14159, 2) // 3.14
|
|
24
|
+
numbers.format(1234567.89) // "1,234,567.89" (system locale)
|
|
25
|
+
numbers.format(1234.5, 'de-DE') // "1.234,5"
|
|
26
|
+
numbers.formatCurrency(99.95, 'EUR') // "€99.95"
|
|
27
|
+
numbers.systemLocale // "en-US" / "de-DE" / etc.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Fuzzy Search — `similarity(query, target, options?)`
|
|
31
|
+
Autocomplete-tuned similarity scoring. Prioritizes start-matches and word boundaries.
|
|
32
|
+
```typescript
|
|
33
|
+
import { similarity } from '@mhmo91/schmancy'
|
|
34
|
+
|
|
35
|
+
similarity('john', 'John Doe') // ~0.975 (starts-with)
|
|
36
|
+
similarity('doe', 'John Doe') // ~0.765 (word-boundary)
|
|
37
|
+
similarity('jhn', 'John Doe') // ~0.3–0.5 (fuzzy)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Tiers:
|
|
41
|
+
- `1.00` exact
|
|
42
|
+
- `0.95–1.00` target starts with query
|
|
43
|
+
- `0.765–0.85` word-boundary match
|
|
44
|
+
- `0.56–0.70` substring
|
|
45
|
+
- `0.50` subsequence
|
|
46
|
+
- `0.00–0.50` fuzzy (Dice + Levenshtein + Jaccard + anagram)
|
|
47
|
+
|
|
48
|
+
Options:
|
|
49
|
+
| Key | Default | Effect |
|
|
50
|
+
|-----|---------|--------|
|
|
51
|
+
| `normalizeAccents` | `true` | Strip diacritics before compare |
|
|
52
|
+
| `includeWordJaccard` | `true` | Add word-set overlap to fuzzy score |
|
|
53
|
+
| `maxLevenshteinDistance` | `0` | Early-terminate above this distance (`0` = off) |
|
|
54
|
+
|
|
55
|
+
## Intersection Observer — `intersection$(element, options?)`
|
|
56
|
+
RxJS wrapper around `IntersectionObserver`.
|
|
57
|
+
```typescript
|
|
58
|
+
import { intersection$ } from '@mhmo91/schmancy'
|
|
59
|
+
|
|
60
|
+
intersection$(this.card, { threshold: 0.5 })
|
|
61
|
+
.pipe(takeUntil(this.disconnecting))
|
|
62
|
+
.subscribe(entries => {
|
|
63
|
+
if (entries[0].isIntersecting) this.loadContent()
|
|
64
|
+
})
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Overlay Stack — `overlayStack`
|
|
68
|
+
Singleton z-index coordinator used internally by dialogs, sheets, and windows. Ensures overlays stack in open order.
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
import { overlayStack } from '@mhmo91/schmancy'
|
|
72
|
+
|
|
73
|
+
// Anonymous (fire-and-forget) — dialogs/sheets
|
|
74
|
+
const z = overlayStack.getNextZIndex()
|
|
75
|
+
// …on close:
|
|
76
|
+
overlayStack.release()
|
|
77
|
+
|
|
78
|
+
// ID-tracked — windows (supports bringToFront)
|
|
79
|
+
overlayStack.assignZIndex('my-window')
|
|
80
|
+
overlayStack.bringToFront('my-window')
|
|
81
|
+
overlayStack.releaseId('my-window')
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Base z-index: `10000`. Counter resets when all overlays close.
|
|
85
|
+
|
|
86
|
+
## Content Hashing — `hashContent(string)`
|
|
87
|
+
Fast 32-bit FNV-1a style hash, returns a hex string. Used by [`schmancy-delay`](./delay.md) and [`schmancy-typewriter`](./typewriter.md) for session-scoped caching.
|
|
88
|
+
```typescript
|
|
89
|
+
import hashContent from '@mhmo91/schmancy/utils/hashContent'
|
|
90
|
+
const key = hashContent(element.outerHTML) // stable across renders for identical content
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## See Also
|
|
94
|
+
- [rxjs-utils](./rxjs-utils.md) — DOM observation helpers (`waitForElement`, `waitUntil`, etc.)
|
|
95
|
+
- [discovery](./discovery.md) — cross-shadow component discovery
|
package/ai/window.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# schmancy-window
|
|
2
|
+
|
|
3
|
+
> Floating draggable window with corner snapping, resize, and minimize/maximize states. Replaces deprecated `schmancy-float`.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```html
|
|
7
|
+
<schmancy-window id="chat" corner="bottom-right">
|
|
8
|
+
<span slot="header">Chat</span>
|
|
9
|
+
<schmancy-icon slot="icon">chat</schmancy-icon>
|
|
10
|
+
<div>Window body content…</div>
|
|
11
|
+
</schmancy-window>
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Properties
|
|
15
|
+
| Property | Type | Default | Description |
|
|
16
|
+
|----------|------|---------|-------------|
|
|
17
|
+
| `id` | string | `'default'` | Unique window identifier (used by `windowManager` registry) |
|
|
18
|
+
| `open` | boolean | `false` | Body expanded state |
|
|
19
|
+
| `corner` | `'bottom-right' \| 'bottom-left' \| 'top-right' \| 'top-left'` | `'bottom-right'` | Anchor corner |
|
|
20
|
+
| `freePosition` | boolean | `false` | Keep dragged position instead of snapping to corner |
|
|
21
|
+
| `resizable` | boolean | `false` | Allow user resizing from edges |
|
|
22
|
+
| `visualState` | `'minimized' \| 'normal' \| 'maximized'` | `'normal'` | Reflected state attribute |
|
|
23
|
+
| `expandedWidth` | string | responsive | e.g. `'320px'`, `'24rem'` |
|
|
24
|
+
| `expandedHeight` | string | auto | e.g. `'400px'`, `'50vh'` |
|
|
25
|
+
| `minWidth` | number | `280` | Minimum width px during resize |
|
|
26
|
+
| `minHeight` | number | `200` | Minimum height px during resize |
|
|
27
|
+
| `lowered` | boolean | `false` | Lower elevation shadow in collapsed state |
|
|
28
|
+
|
|
29
|
+
## Slots
|
|
30
|
+
| Slot | Purpose |
|
|
31
|
+
|------|---------|
|
|
32
|
+
| `icon` | Leading icon in the head (minimized FAB state) |
|
|
33
|
+
| `header` | Header label (visible when expanded) |
|
|
34
|
+
| (default) | Window body content (lazy rendered — not in DOM until first open) |
|
|
35
|
+
|
|
36
|
+
## Behavior
|
|
37
|
+
- Drag from head to reposition. Release snaps to the nearest corner unless `freePosition`.
|
|
38
|
+
- `windowManager` tracks focused window and resolves overlap between multiple windows.
|
|
39
|
+
- `cursorGlow` applied to head while expanded.
|
|
40
|
+
- Collapsed state uses a clip-path reveal animation; expand uses `SPRING_SMOOTH` physics.
|
|
41
|
+
- Body content mounts lazily on first expand (`_hasOpened`).
|
|
42
|
+
- All animations respect `prefers-reduced-motion` via `reducedMotion$`.
|
|
43
|
+
|
|
44
|
+
## Examples
|
|
45
|
+
```html
|
|
46
|
+
<!-- Chat-style window docked bottom-right -->
|
|
47
|
+
<schmancy-window id="support" corner="bottom-right">
|
|
48
|
+
<schmancy-icon slot="icon">support_agent</schmancy-icon>
|
|
49
|
+
<span slot="header">Support</span>
|
|
50
|
+
<div class="p-4">How can we help?</div>
|
|
51
|
+
</schmancy-window>
|
|
52
|
+
|
|
53
|
+
<!-- Resizable, free-position floating panel -->
|
|
54
|
+
<schmancy-window id="inspector" resizable free-position expanded-width="420px" expanded-height="60vh">
|
|
55
|
+
<span slot="header">Inspector</span>
|
|
56
|
+
<div>…</div>
|
|
57
|
+
</schmancy-window>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## windowManager
|
|
61
|
+
```typescript
|
|
62
|
+
import { windowManager } from '@mhmo91/schmancy/window'
|
|
63
|
+
|
|
64
|
+
windowManager.focus('support') // Bring window to front
|
|
65
|
+
windowManager.getBounds('inspector') // Read tracked bounds
|
|
66
|
+
windowManager.all$ .subscribe(...) // Observable of registered windows
|
|
67
|
+
```
|
package/dist/ai/INDEX.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
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) · [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)
|
|
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) · [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
|
+
[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](./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) · [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
|
+
[Audio](./audio.md) — synthesized feedback sounds.
|
|
61
|
+
|
|
62
|
+
## Conventions
|
|
63
|
+
|
|
64
|
+
- Lists use `repeat(items, item => item.id, tpl)`.
|
|
65
|
+
- View switching uses `cache(...)`.
|
|
66
|
+
- Expensive work uses `guard([deps], fn)`.
|
|
67
|
+
- DOM access uses `ref(createRef())`.
|
|
68
|
+
- Conditionals use `when(...)`, `choose(...)`, `ifDefined(...)`.
|
|
69
|
+
- All RxJS subscriptions end with `.pipe(takeUntil(this.disconnecting))`.
|
|
70
|
+
- Don't use `setTimeout` / `setInterval` / `addEventListener` — use RxJS (`timer`, `interval`, `fromEvent`).
|
|
71
|
+
- Colors come from `--schmancy-sys-color-*` CSS vars or Tailwind theme classes.
|
|
72
|
+
- `classMap(...)` must be the sole expression in `class=`; never mix with string interpolation.
|
package/dist/ai/area.md
CHANGED
|
@@ -1,61 +1,141 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Area — Routing
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Schmancy's client-side router. Three pieces:
|
|
4
|
+
|
|
5
|
+
| Piece | Role |
|
|
6
|
+
|-------|------|
|
|
7
|
+
| `<schmancy-area name="...">` | Named region that renders one route at a time |
|
|
8
|
+
| `<schmancy-route when="tag">` | Declares which component can render in an area |
|
|
9
|
+
| `area.push(...)` | Imperative navigation |
|
|
10
|
+
|
|
11
|
+
Areas can be nested to compose shell-plus-sub-view layouts.
|
|
12
|
+
|
|
13
|
+
## Example
|
|
4
14
|
|
|
5
|
-
## Usage
|
|
6
15
|
```html
|
|
7
|
-
<schmancy-area name="
|
|
8
|
-
<schmancy-route when="home-page"
|
|
9
|
-
|
|
16
|
+
<schmancy-area name="root" .default=${lazy(() => import('./pages/home.page'))}>
|
|
17
|
+
<schmancy-route when="home-page"
|
|
18
|
+
.component=${lazy(() => import('./pages/home.page'))}></schmancy-route>
|
|
19
|
+
|
|
20
|
+
<schmancy-route when="app-index"
|
|
21
|
+
.component=${lazy(() => import('./app/app.page'))}
|
|
22
|
+
.guard=${authState$.pipe(
|
|
23
|
+
map(u => !!u && !u.isAnonymous),
|
|
24
|
+
takeUntil(this.disconnecting),
|
|
25
|
+
)}
|
|
26
|
+
@redirect=${() => area.push({
|
|
27
|
+
component: 'home-page',
|
|
28
|
+
area: 'root',
|
|
29
|
+
historyStrategy: 'replace',
|
|
30
|
+
})}></schmancy-route>
|
|
10
31
|
</schmancy-area>
|
|
11
32
|
```
|
|
12
33
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
|
23
|
-
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
27
|
-
|
|
34
|
+
## `schmancy-area` properties
|
|
35
|
+
|
|
36
|
+
| Property | Type | Description |
|
|
37
|
+
|----------|------|-------------|
|
|
38
|
+
| `name` | string (required) | Area identifier used in `area.push({ area })` |
|
|
39
|
+
| `default` | `RouteComponent \| string` | Fallback when no route matches |
|
|
40
|
+
|
|
41
|
+
## `schmancy-route` properties
|
|
42
|
+
|
|
43
|
+
| Property | Type | Description |
|
|
44
|
+
|----------|------|-------------|
|
|
45
|
+
| `when` | string (required) | Must match a `@customElement('tag')` tag name |
|
|
46
|
+
| `component` | `RouteComponent` (required) | Class, tag name, or `lazy()` wrapper |
|
|
47
|
+
| `guard` | `Observable<boolean>` | When emits `false`, blocks and dispatches `redirect` event |
|
|
48
|
+
| `exact` | boolean | Strict-equality matching |
|
|
49
|
+
|
|
50
|
+
## `area` service
|
|
51
|
+
|
|
28
52
|
```typescript
|
|
29
53
|
import { area } from '@mhmo91/schmancy'
|
|
30
54
|
|
|
31
|
-
|
|
32
|
-
area
|
|
55
|
+
area.push({
|
|
56
|
+
area: 'root',
|
|
57
|
+
component: 'app-index',
|
|
58
|
+
params?: { id: '123' },
|
|
59
|
+
historyStrategy?: 'push' | 'replace' | 'silent',
|
|
60
|
+
})
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`historyStrategy`:
|
|
64
|
+
- `'push'` (default) — adds a browser-history entry
|
|
65
|
+
- `'replace'` — overwrites the current entry (use after guards or redirects)
|
|
66
|
+
- `'silent'` — changes the area without touching history
|
|
33
67
|
|
|
34
|
-
|
|
35
|
-
area.on('main').pipe(takeUntil(this.disconnecting)).subscribe(route => { ... })
|
|
68
|
+
### Subscribe to route state
|
|
36
69
|
|
|
37
|
-
|
|
38
|
-
area.
|
|
70
|
+
```typescript
|
|
71
|
+
area.on('root').pipe(
|
|
72
|
+
takeUntil(this.disconnecting),
|
|
73
|
+
).subscribe(route => { /* route.component, route.params */ })
|
|
74
|
+
|
|
75
|
+
area.params<{ id: string }>('detail').pipe(
|
|
76
|
+
takeUntil(this.disconnecting),
|
|
77
|
+
).subscribe(params => this.loadItem(params.id))
|
|
39
78
|
```
|
|
40
79
|
|
|
41
|
-
## Lazy
|
|
80
|
+
## Lazy loading
|
|
81
|
+
|
|
42
82
|
```typescript
|
|
43
83
|
import { lazy } from '@mhmo91/schmancy'
|
|
44
|
-
const
|
|
84
|
+
const HomePage = lazy(() => import('./home.page'))
|
|
85
|
+
|
|
86
|
+
// Optional preload
|
|
87
|
+
html`<button @mouseenter=${() => HomePage.preload()}>Home</button>`
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Guards
|
|
91
|
+
|
|
92
|
+
`guard` is an Observable<boolean>.
|
|
93
|
+
|
|
94
|
+
- Emits `true` → route renders.
|
|
95
|
+
- Emits `false` → route dispatches a `redirect` event. Handle it with `area.push(...)`.
|
|
45
96
|
|
|
46
|
-
|
|
47
|
-
|
|
97
|
+
Auth guard:
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
<schmancy-route when="app-index"
|
|
101
|
+
.component=${lazy(() => import('./app'))}
|
|
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>
|
|
48
109
|
```
|
|
49
110
|
|
|
50
|
-
|
|
111
|
+
Compound guard (multiple streams):
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
.guard=${combineLatest([permissions$, orgContext.$]).pipe(
|
|
115
|
+
takeUntil(this.disconnecting),
|
|
116
|
+
map(([perms, org]) => perms.includes('billing.view') && org?.billing?.configured),
|
|
117
|
+
)}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Nested areas
|
|
121
|
+
|
|
122
|
+
Areas nest by rendering an inner `<schmancy-area>` inside a route component. A common shape is an outer area for "signed-in vs. not" and an inner area for sub-views of the signed-in shell.
|
|
123
|
+
|
|
51
124
|
```html
|
|
52
|
-
<!--
|
|
53
|
-
<schmancy-area name="
|
|
54
|
-
<schmancy-route when="
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
125
|
+
<!-- outer -->
|
|
126
|
+
<schmancy-area name="root">
|
|
127
|
+
<schmancy-route when="app-index" .component=${AppShell}></schmancy-route>
|
|
128
|
+
</schmancy-area>
|
|
129
|
+
|
|
130
|
+
<!-- inner (inside AppShell.render()) -->
|
|
131
|
+
<schmancy-area name="app" default="home-page">
|
|
132
|
+
<schmancy-route when="home-page" .component=${...}></schmancy-route>
|
|
133
|
+
<schmancy-route when="settings-page" .component=${...}></schmancy-route>
|
|
58
134
|
</schmancy-area>
|
|
59
135
|
```
|
|
60
136
|
|
|
61
|
-
|
|
137
|
+
## Rules
|
|
138
|
+
|
|
139
|
+
- `when="tag-name"` must match `@customElement('tag-name')` exactly.
|
|
140
|
+
- Guards emit `false` → always use `historyStrategy: 'replace'` in the `@redirect` handler.
|
|
141
|
+
- Every subscription in guards / route state uses `takeUntil(this.disconnecting)`.
|
package/dist/ai/audio.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Schmancy Audio
|
|
2
|
+
|
|
3
|
+
> Emotional sound service — synthesizes short, empathetic sounds via Web Audio API keyed on feelings (joyful, tense, calm, etc.). No assets. No external players. Just tones + puffs generated on demand.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
```typescript
|
|
7
|
+
import { sound } from '@mhmo91/schmancy'
|
|
8
|
+
|
|
9
|
+
sound.play('joyful') // trigger a feeling sound
|
|
10
|
+
sound.setVolume(0.2) // 0..1
|
|
11
|
+
sound.setMuted(true)
|
|
12
|
+
sound.resetTheme() // back to defaults
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Feelings
|
|
16
|
+
Organized by emotional category:
|
|
17
|
+
|
|
18
|
+
| Category | Feelings |
|
|
19
|
+
|----------|----------|
|
|
20
|
+
| Happy | `joyful`, `content`, `excited`, `grateful`, `proud`, `loved` |
|
|
21
|
+
| Sad | `sad`, `disappointed`, `hurt`, `lonely`, `melancholy` |
|
|
22
|
+
| Anxious | `worried`, `nervous`, `overwhelmed`, `tense` |
|
|
23
|
+
| Angry | `frustrated`, `angry`, `annoyed` |
|
|
24
|
+
| Tired | `tired`, `drained`, `bored` |
|
|
25
|
+
| Calm | `calm`, `peaceful`, `relaxed`, `focused` |
|
|
26
|
+
| Connected | `connected`, `supported`, `welcomed` |
|
|
27
|
+
| Mixed | `confused`, `nostalgic`, `bittersweet` |
|
|
28
|
+
|
|
29
|
+
(See `mood-audio.types.ts` for the authoritative list.)
|
|
30
|
+
|
|
31
|
+
## Observable API
|
|
32
|
+
```typescript
|
|
33
|
+
sound.theme$.subscribe(theme => console.log(theme?.name ?? 'default'))
|
|
34
|
+
sound.volume$.subscribe(v => {})
|
|
35
|
+
sound.muted$.subscribe(m => {})
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## Settings Persistence
|
|
39
|
+
Volume, mute, and custom theme persist to `localStorage` under key `schmancy-sound-settings` (via `createContext`).
|
|
40
|
+
|
|
41
|
+
## AI-Generated Themes
|
|
42
|
+
```typescript
|
|
43
|
+
import type { SoundTheme } from '@mhmo91/schmancy'
|
|
44
|
+
|
|
45
|
+
const customTheme: SoundTheme = {
|
|
46
|
+
name: 'ocean',
|
|
47
|
+
sounds: {
|
|
48
|
+
joyful: { puffs: [...], tones: [...] },
|
|
49
|
+
// partial override — falls through to defaults for anything omitted
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
sound.setTheme(customTheme)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Each `FeelingSound` consists of:
|
|
57
|
+
- **puffs** — short bursts (air/noise, e.g. `{ startTime, duration, frequency, volume }`)
|
|
58
|
+
- **tones** — oscillators (`sine`/`triangle`/`square`/`sawtooth` with envelope)
|
|
59
|
+
|
|
60
|
+
## Built-in Feedback Hooks
|
|
61
|
+
Other Schmancy components play these automatically:
|
|
62
|
+
- [`schmancy-connectivity-status`](./connectivity.md) on offline/online.
|
|
63
|
+
- Some success/error paths in notifications and dialogs via the `$sounds` legacy helper.
|
|
64
|
+
|
|
65
|
+
## Legacy API
|
|
66
|
+
- `$sounds` — older generator exported for compatibility.
|
|
67
|
+
- `EmotionalSoundGenerator` — underlying class.
|
|
68
|
+
|
|
69
|
+
Prefer `sound` for new code.
|
package/dist/ai/boat.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# schmancy-boat
|
|
2
|
+
|
|
3
|
+
> Draggable floating FAB that expands into a panel. Great for persistent assistant/chat panels.
|
|
4
|
+
|
|
5
|
+
> **Note:** `schmancy-window` is the evolved successor with more capabilities (resize, maximize, multi-window registry). Prefer `schmancy-window` for new code unless you want the simpler FAB-to-panel model.
|
|
6
|
+
|
|
7
|
+
## Usage
|
|
8
|
+
```html
|
|
9
|
+
<schmancy-boat id="assistant" icon="smart_toy" label="Assistant">
|
|
10
|
+
<div slot="header">Assistant</div>
|
|
11
|
+
<div class="p-4">Panel body content</div>
|
|
12
|
+
</schmancy-boat>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
| Property | Type | Default | Description |
|
|
17
|
+
|----------|------|---------|-------------|
|
|
18
|
+
| `id` | string | `'default'` | Unique identifier (persists drag position in localStorage) |
|
|
19
|
+
| `icon` | string | — | Material icon for the FAB state |
|
|
20
|
+
| `label` | string | — | Label text in FAB state |
|
|
21
|
+
| `open` | boolean | `false` | Panel open/closed (reflected) |
|
|
22
|
+
| `corner` | `'bottom-right' \| 'bottom-left' \| 'top-right' \| 'top-left'` | `'bottom-right'` | Anchor corner |
|
|
23
|
+
| `expandedWidth` | string | responsive | e.g. `'320px'` |
|
|
24
|
+
| `lowered` | boolean | `false` | Lower shadow in FAB state |
|
|
25
|
+
|
|
26
|
+
## Getter / Setter
|
|
27
|
+
```typescript
|
|
28
|
+
boat.state = 'expanded' | 'collapsed' // equivalent to open = true/false
|
|
29
|
+
boat.state // current state
|
|
30
|
+
boat.expand() / boat.close()
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Behavior
|
|
34
|
+
- Drag to reposition. Releases snap to the nearest corner.
|
|
35
|
+
- Open/close uses clip-path + `SPRING_SMOOTH` for elegant reveal.
|
|
36
|
+
- Position persists in `localStorage` under `schmancy-boat-{id}`.
|
|
37
|
+
- Respects `prefers-reduced-motion`.
|
|
38
|
+
|
|
39
|
+
## Example
|
|
40
|
+
```html
|
|
41
|
+
<schmancy-boat id="chat" icon="chat" label="Chat" corner="bottom-right">
|
|
42
|
+
<span slot="header">Messages</span>
|
|
43
|
+
<schmancy-list class="p-2">
|
|
44
|
+
<!-- messages -->
|
|
45
|
+
</schmancy-list>
|
|
46
|
+
</schmancy-boat>
|
|
47
|
+
```
|