@mhmo91/schmancy 0.10.5 → 0.10.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -0
- package/custom-elements.json +235 -1807
- package/dist/agent/{flow-CaPi2G8y.js.map → flow-CvG1fLW5.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +5347 -12408
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +70 -1068
- package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-DcL7ZPxx.js.map} +1 -1
- package/dist/{area-CSQdhCBF.cjs → area-8IBAXzbC.cjs} +1 -1
- package/dist/{area-CSQdhCBF.cjs.map → area-8IBAXzbC.cjs.map} +1 -1
- package/dist/{area-D5haQE-J.js → area-DSW_LYXQ.js} +1 -1
- package/dist/{area-D5haQE-J.js.map → area-DSW_LYXQ.js.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-B_bJXUjm.cjs → autocomplete-9PLjlFYt.cjs} +1 -1
- package/dist/{autocomplete-B_bJXUjm.cjs.map → autocomplete-9PLjlFYt.cjs.map} +1 -1
- package/dist/{autocomplete-DtyjZJ1E.js → autocomplete-CXwwmUbC.js} +2 -2
- package/dist/{autocomplete-DtyjZJ1E.js.map → autocomplete-CXwwmUbC.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +2 -2
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BJLCp-Hv.cjs → boat-CpGNeWav.cjs} +1 -1
- package/dist/{boat-BJLCp-Hv.cjs.map → boat-CpGNeWav.cjs.map} +1 -1
- package/dist/{boat-MT8bRT8u.js → boat-Dwn5oXd8.js} +1 -1
- package/dist/{boat-MT8bRT8u.js.map → boat-Dwn5oXd8.js.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +1 -1
- package/dist/{busy-DSF2E-zy.cjs → busy-CUUgvimY.cjs} +1 -1
- package/dist/{busy-DSF2E-zy.cjs.map → busy-CUUgvimY.cjs.map} +1 -1
- package/dist/{busy-6BqWGryX.js → busy-Cjm1BYVC.js} +1 -1
- package/dist/{busy-6BqWGryX.js.map → busy-Cjm1BYVC.js.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 +1 -1
- package/dist/{card-CvuVha-W.js → card-BR22oYCL.js} +1 -1
- package/dist/{card-CvuVha-W.js.map → card-BR22oYCL.js.map} +1 -1
- package/dist/{card-DnKnaHzf.cjs → card-BjZ_WRr3.cjs} +1 -1
- package/dist/{card-DnKnaHzf.cjs.map → card-BjZ_WRr3.cjs.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-D3u8Wm9r.cjs → checkbox-2e8v7CNg.cjs} +1 -1
- package/dist/{checkbox-D3u8Wm9r.cjs.map → checkbox-2e8v7CNg.cjs.map} +1 -1
- package/dist/{checkbox-QDRsE8cp.js → checkbox-CsADwyfu.js} +1 -1
- package/dist/{checkbox-QDRsE8cp.js.map → checkbox-CsADwyfu.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-Dy9vx8JS.js → chips-C9HwVbGT.js} +2 -2
- package/dist/{chips-Dy9vx8JS.js.map → chips-C9HwVbGT.js.map} +1 -1
- package/dist/{chips-CMoQzop1.cjs → chips-DPCcO55o.cjs} +1 -1
- package/dist/{chips-CMoQzop1.cjs.map → chips-DPCcO55o.cjs.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- 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-B2NuihKA.cjs → date-range-63-FC7gD.cjs} +1 -1
- package/dist/{date-range-B2NuihKA.cjs.map → date-range-63-FC7gD.cjs.map} +1 -1
- package/dist/{date-range-Boesjlic.js → date-range-CFaP-8Os.js} +2 -2
- package/dist/{date-range-Boesjlic.js.map → date-range-CFaP-8Os.js.map} +1 -1
- package/dist/{date-range-inline-DBuND2pc.js → date-range-inline-BCuK_XCv.js} +1 -1
- package/dist/{date-range-inline-DBuND2pc.js.map → date-range-inline-BCuK_XCv.js.map} +1 -1
- package/dist/{date-range-inline-BI6_4Ahl.cjs → date-range-inline-Cpdqd-8B.cjs} +1 -1
- package/dist/{date-range-inline-BI6_4Ahl.cjs.map → date-range-inline-Cpdqd-8B.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.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-BrGrUTGC.js → details-0dOlqHHL.js} +1 -1
- package/dist/{details-BrGrUTGC.js.map → details-0dOlqHHL.js.map} +1 -1
- package/dist/{details-BRs_z5-k.cjs → details-qKikJIyH.cjs} +1 -1
- package/dist/{details-BRs_z5-k.cjs.map → details-qKikJIyH.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{divider-W3TiDasp.js → divider-BxkIl0H1.js} +1 -1
- package/dist/{divider-W3TiDasp.js.map → divider-BxkIl0H1.js.map} +1 -1
- package/dist/{divider-BOxQ2T9h.cjs → divider-CX9mmWZ8.cjs} +1 -1
- package/dist/{divider-BOxQ2T9h.cjs.map → divider-CX9mmWZ8.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 +1 -1
- package/dist/{expand-CnccBF91.cjs → expand-891JuQuN.cjs} +1 -1
- package/dist/{expand-CnccBF91.cjs.map → expand-891JuQuN.cjs.map} +1 -1
- package/dist/{expand-Pu8fZ0jZ.js → expand-BeAx94MP.js} +2 -2
- package/dist/{expand-Pu8fZ0jZ.js.map → expand-BeAx94MP.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{float-WCVdp3um.js → float-BPF2WO4L.js} +1 -1
- package/dist/{float-WCVdp3um.js.map → float-BPF2WO4L.js.map} +1 -1
- package/dist/{float-BRKa-P6Z.cjs → float-D7vvODxx.cjs} +1 -1
- package/dist/{float-BRKa-P6Z.cjs.map → float-D7vvODxx.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-CI59gad4.js.map → form-CFvwnfuJ.js.map} +1 -1
- package/dist/{form-B2qudx_q.cjs.map → form-Ceijw1aA.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{hashContent-a8uVr3xs.js.map → hashContent-BU6jl5ih.js.map} +1 -1
- package/dist/{hashContent-ejkBgDnN.cjs.map → hashContent-Bobsobip.cjs.map} +1 -1
- package/dist/{icons-C0ufCcdp.js → icons-BKxW_7QR.js} +1 -1
- package/dist/{icons-C0ufCcdp.js.map → icons-BKxW_7QR.js.map} +1 -1
- package/dist/{icons-DXEbmg-O.cjs → icons-QSdo-8h9.cjs} +1 -1
- package/dist/{icons-DXEbmg-O.cjs.map → icons-QSdo-8h9.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-c9lGxw7x.js → iframe-BxvbhyTS.js} +1 -1
- package/dist/{iframe-c9lGxw7x.js.map → iframe-BxvbhyTS.js.map} +1 -1
- package/dist/{iframe-C6RVODkW.cjs → iframe-CMKV-bm8.cjs} +1 -1
- package/dist/{iframe-C6RVODkW.cjs.map → iframe-CMKV-bm8.cjs.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 +64 -72
- package/dist/{input-B4HM-9-H.cjs → input-BFhJU74_.cjs} +1 -1
- package/dist/{input-B4HM-9-H.cjs.map → input-BFhJU74_.cjs.map} +1 -1
- package/dist/{input-Pmj_bH37.js → input-DIqaR8Mr.js} +1 -1
- package/dist/{input-Pmj_bH37.js.map → input-DIqaR8Mr.js.map} +1 -1
- package/dist/{input-chip-BIGgd_7w.js → input-chip-D9tlSk_2.js} +1 -1
- package/dist/{input-chip-BIGgd_7w.js.map → input-chip-D9tlSk_2.js.map} +1 -1
- package/dist/{input-chip-BoDisY6c.cjs → input-chip-w09qTt7J.cjs} +1 -1
- package/dist/{input-chip-BoDisY6c.cjs.map → input-chip-w09qTt7J.cjs.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/kbd.cjs +1 -1
- package/dist/kbd.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-DK1vDKm3.cjs → lightbox-CK035jsx.cjs} +1 -1
- package/dist/{lightbox-DK1vDKm3.cjs.map → lightbox-CK035jsx.cjs.map} +1 -1
- package/dist/{lightbox-K1eJTYXP.js → lightbox-GChmL3Ff.js} +2 -2
- package/dist/{lightbox-K1eJTYXP.js.map → lightbox-GChmL3Ff.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-CEuVqAxN.cjs → list-B3P37zlH.cjs} +1 -1
- package/dist/{list-CEuVqAxN.cjs.map → list-B3P37zlH.cjs.map} +1 -1
- package/dist/{list-Ds0Nv1y5.js → list-J-Fz24Z1.js} +1 -1
- package/dist/{list-Ds0Nv1y5.js.map → list-J-Fz24Z1.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-Bly30Nje.cjs → menu-BnFd8CwU.cjs} +1 -1
- package/dist/{menu-Bly30Nje.cjs.map → menu-BnFd8CwU.cjs.map} +1 -1
- package/dist/{menu-L8MK1ma5.js → menu-DHTlUwXS.js} +2 -2
- package/dist/{menu-L8MK1ma5.js.map → menu-DHTlUwXS.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-47_CZk7q.cjs +298 -0
- package/dist/{mixins-CAb0b03r.cjs.map → mixins-47_CZk7q.cjs.map} +1 -1
- package/dist/mixins-PBJJGiiP.js +627 -0
- package/dist/{mixins-B34UxxCe.js.map → mixins-PBJJGiiP.js.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +1 -1
- 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 +1 -1
- package/dist/{notification-7fSbk8hm.cjs → notification-B6YBL0hx.cjs} +1 -1
- package/dist/{notification-7fSbk8hm.cjs.map → notification-B6YBL0hx.cjs.map} +1 -1
- package/dist/{notification-DB25M-qo.js → notification-C-5Bv3vj.js} +2 -2
- package/dist/{notification-DB25M-qo.js.map → notification-C-5Bv3vj.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-DDHa25k5.js → option-B7q6VXCu.js} +1 -1
- package/dist/{option-DDHa25k5.js.map → option-B7q6VXCu.js.map} +1 -1
- package/dist/{option-HF9Xqbuq.cjs → option-DVQRa3nr.cjs} +1 -1
- package/dist/{option-HF9Xqbuq.cjs.map → option-DVQRa3nr.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-CCiTaf_C.js.map → overlay-stack-DCDS17uj.js.map} +1 -1
- package/dist/{overlay-stack-CFGiYf34.cjs.map → overlay-stack-DPIe_aYv.cjs.map} +1 -1
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-BDG94R0x.js → overlay.confirm-body-CAY5xK1n.js} +1 -1
- package/dist/{overlay.confirm-body-BDG94R0x.js.map → overlay.confirm-body-CAY5xK1n.js.map} +1 -1
- package/dist/{overlay.confirm-body-b4Nx_OVf.cjs → overlay.confirm-body-XZtErofy.cjs} +1 -1
- package/dist/{overlay.confirm-body-b4Nx_OVf.cjs.map → overlay.confirm-body-XZtErofy.cjs.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-BUCuZa6V.js → overlay.service-BZE_lwKO.js} +2 -2
- package/dist/{overlay.service-BUCuZa6V.js.map → overlay.service-BZE_lwKO.js.map} +1 -1
- package/dist/{overlay.service-CRHZZY9F.cjs → overlay.service-Oyjrw831.cjs} +1 -1
- package/dist/{overlay.service-CRHZZY9F.cjs.map → overlay.service-Oyjrw831.cjs.map} +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +2 -2
- package/dist/{progress-CqOyMM4i.js → progress-BHXLYs9i.js} +1 -1
- package/dist/{progress-CqOyMM4i.js.map → progress-BHXLYs9i.js.map} +1 -1
- package/dist/{progress-54R4QRgW.cjs → progress-D99bumkC.cjs} +1 -1
- package/dist/{progress-54R4QRgW.cjs.map → progress-D99bumkC.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-B4zbBIZF.js → radio-group-BYra5_q1.js} +1 -1
- package/dist/{radio-group-B4zbBIZF.js.map → radio-group-BYra5_q1.js.map} +1 -1
- package/dist/{radio-group-BJqZpYVy.cjs → radio-group-DYsycLmD.cjs} +1 -1
- package/dist/{radio-group-BJqZpYVy.cjs.map → radio-group-DYsycLmD.cjs.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/{rxjs-utils-BXpvHN4-.js.map → rxjs-utils-CVeJQ9KG.js.map} +1 -1
- package/dist/{rxjs-utils-CaC-tdot.cjs.map → rxjs-utils-DCUHg_Ml.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-CYm6Krus.js → scroll-TqNWZ0lo.js} +1 -1
- package/dist/{scroll-CYm6Krus.js.map → scroll-TqNWZ0lo.js.map} +1 -1
- package/dist/{scroll-iSRovYYt.cjs → scroll-cayCBOrq.cjs} +1 -1
- package/dist/{scroll-iSRovYYt.cjs.map → scroll-cayCBOrq.cjs.map} +1 -1
- package/dist/{select-DiQHtQJN.cjs → select-CRdSmlLq.cjs} +1 -1
- package/dist/{select-DiQHtQJN.cjs.map → select-CRdSmlLq.cjs.map} +1 -1
- package/dist/{select-1WHseXP6.js → select-nzq0qFlF.js} +2 -2
- package/dist/{select-1WHseXP6.js.map → select-nzq0qFlF.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +1 -1
- package/dist/skills/INDEX.md +9 -6
- package/dist/skills/schmancy/INDEX.md +9 -6
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-BwvtKMdN.js → splash-screen-BJeIiJ_e.js} +1 -1
- package/dist/{splash-screen-BwvtKMdN.js.map → splash-screen-BJeIiJ_e.js.map} +1 -1
- package/dist/{splash-screen-CJL8DGDe.cjs → splash-screen-BMLQXzDq.cjs} +1 -1
- package/dist/{splash-screen-CJL8DGDe.cjs.map → splash-screen-BMLQXzDq.cjs.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-Bwr2NR0A.cjs → src-DE11tq2Q.cjs} +1 -1
- package/dist/{src-Bwr2NR0A.cjs.map → src-DE11tq2Q.cjs.map} +1 -1
- package/dist/{src-UaZeROcW.js → src-qvWlNoMO.js} +34 -42
- package/dist/{src-UaZeROcW.js.map → src-qvWlNoMO.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-DE5iuI8e.cjs → surface-D426MFLR.cjs} +1 -1
- package/dist/{surface-DE5iuI8e.cjs.map → surface-D426MFLR.cjs.map} +1 -1
- package/dist/{surface-DPUkQ3OL.js → surface-DG7Cmm9V.js} +1 -1
- package/dist/{surface-DPUkQ3OL.js.map → surface-DG7Cmm9V.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-B2XEQPQl.js → tabs-B7siJkM5.js} +1 -1
- package/dist/{tabs-B2XEQPQl.js.map → tabs-B7siJkM5.js.map} +1 -1
- package/dist/{tabs-CsDQ72Qk.cjs → tabs-t3nMfg1F.cjs} +1 -1
- package/dist/{tabs-CsDQ72Qk.cjs.map → tabs-t3nMfg1F.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-C_ps0lL-.js → textarea-DSxHCCle.js} +1 -1
- package/dist/{textarea-C_ps0lL-.js.map → textarea-DSxHCCle.js.map} +1 -1
- package/dist/{textarea-aeAP9cDG.cjs → textarea-o9vysorM.cjs} +1 -1
- package/dist/{textarea-aeAP9cDG.cjs.map → textarea-o9vysorM.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-DAYTVw13.cjs → theme-Ce9eIP05.cjs} +1 -1
- package/dist/{theme-DAYTVw13.cjs.map → theme-Ce9eIP05.cjs.map} +1 -1
- package/dist/{theme-DAx1iRNr.js → theme-XO3nHDbW.js} +2 -2
- package/dist/{theme-DAx1iRNr.js.map → theme-XO3nHDbW.js.map} +1 -1
- package/dist/{theme-button-BrHkzCtj.js → theme-button-DNutDO1j.js} +1 -1
- package/dist/{theme-button-BrHkzCtj.js.map → theme-button-DNutDO1j.js.map} +1 -1
- package/dist/{theme-button-LsMKY_N_.cjs → theme-button-H7PRz_bg.cjs} +1 -1
- package/dist/{theme-button-LsMKY_N_.cjs.map → theme-button-H7PRz_bg.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.interface-C_034TxG.js.map → theme.interface-B9TjbSBF.js.map} +1 -1
- package/dist/{theme.interface-DESopuZS.cjs.map → theme.interface-BujperTo.cjs.map} +1 -1
- package/dist/theme.js +3 -3
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{utils-oLBkMvor.cjs → utils-Dt5PpmaQ.cjs} +1 -1
- package/dist/{utils-oLBkMvor.cjs.map → utils-Dt5PpmaQ.cjs.map} +1 -1
- package/dist/{utils-BzFQfaIr.js → utils-kND2Z9Xg.js} +1 -1
- package/dist/{utils-BzFQfaIr.js.map → utils-kND2Z9Xg.js.map} +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +2 -2
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +1 -1
- package/dist/{window-BJrKS6Zr.cjs → window-BaoSwgGE.cjs} +1 -1
- package/dist/{window-BJrKS6Zr.cjs.map → window-BaoSwgGE.cjs.map} +1 -1
- package/dist/{window-CyDuTN80.js → window-KnLWhQ3S.js} +2 -2
- package/dist/{window-CyDuTN80.js.map → window-KnLWhQ3S.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +4 -5
- package/skills/schmancy/INDEX.md +9 -6
- package/src/index.ts +0 -8
- package/types/src/index.d.ts +0 -8
- package/dist/agent/vendor-highlight-CHJZQQB7.js +0 -2178
- package/dist/agent/vendor-highlight-CHJZQQB7.js.map +0 -1
- package/dist/agent/vendor-jsqr-r7GNh4P3.js +0 -10212
- package/dist/agent/vendor-jsqr-r7GNh4P3.js.map +0 -1
- package/dist/charts.cjs +0 -112
- package/dist/charts.cjs.map +0 -1
- package/dist/charts.js +0 -374
- package/dist/charts.js.map +0 -1
- package/dist/code-highlight-Ddp0oZnm.cjs +0 -190
- package/dist/code-highlight-Ddp0oZnm.cjs.map +0 -1
- package/dist/code-highlight-DtE2-ObF.js +0 -296
- package/dist/code-highlight-DtE2-ObF.js.map +0 -1
- package/dist/code-highlight.cjs +0 -1
- package/dist/code-highlight.js +0 -2
- package/dist/extra-B8IPs6gG.cjs +0 -31
- package/dist/extra-B8IPs6gG.cjs.map +0 -1
- package/dist/extra-DxEWs41z.js +0 -3440
- package/dist/extra-DxEWs41z.js.map +0 -1
- package/dist/extra.cjs +0 -1
- package/dist/extra.js +0 -2
- package/dist/mailbox-CDWqbVvZ.cjs +0 -1140
- package/dist/mailbox-CDWqbVvZ.cjs.map +0 -1
- package/dist/mailbox-DD2How0H.js +0 -1607
- package/dist/mailbox-DD2How0H.js.map +0 -1
- package/dist/mailbox.cjs +0 -1
- package/dist/mailbox.js +0 -2
- package/dist/map-1uwxxvBa.js +0 -208
- package/dist/map-1uwxxvBa.js.map +0 -1
- package/dist/map-BrBSrIqg.cjs +0 -80
- package/dist/map-BrBSrIqg.cjs.map +0 -1
- package/dist/map.cjs +0 -1
- package/dist/map.js +0 -2
- package/dist/mixins-B34UxxCe.js +0 -627
- package/dist/mixins-CAb0b03r.cjs +0 -298
- package/dist/payment-card-form-C4jb-OdM.js +0 -729
- package/dist/payment-card-form-C4jb-OdM.js.map +0 -1
- package/dist/payment-card-form-WEx4CscR.cjs +0 -73
- package/dist/payment-card-form-WEx4CscR.cjs.map +0 -1
- package/dist/payment-card-form.cjs +0 -1
- package/dist/payment-card-form.js +0 -2
- package/dist/qr-scanner.cjs +0 -35
- package/dist/qr-scanner.cjs.map +0 -1
- package/dist/qr-scanner.js +0 -123
- package/dist/qr-scanner.js.map +0 -1
- package/dist/skills/charts.md +0 -93
- package/dist/skills/code-highlight.md +0 -47
- package/dist/skills/extra.md +0 -59
- package/dist/skills/mailbox.md +0 -102
- package/dist/skills/map.md +0 -55
- package/dist/skills/qr-scanner.md +0 -51
- package/dist/skills/schmancy/charts.md +0 -93
- package/dist/skills/schmancy/code-highlight.md +0 -47
- package/dist/skills/schmancy/extra.md +0 -59
- package/dist/skills/schmancy/mailbox.md +0 -102
- package/dist/skills/schmancy/map.md +0 -55
- package/dist/skills/schmancy/qr-scanner.md +0 -51
- package/dist/skills/schmancy/timeline-tile.md +0 -95
- package/dist/skills/timeline-tile.md +0 -95
- package/dist/timeline.cjs +0 -277
- package/dist/timeline.cjs.map +0 -1
- package/dist/timeline.js +0 -326
- package/dist/timeline.js.map +0 -1
- package/skills/schmancy/charts.md +0 -93
- package/skills/schmancy/code-highlight.md +0 -47
- package/skills/schmancy/extra.md +0 -59
- package/skills/schmancy/mailbox.md +0 -102
- package/skills/schmancy/map.md +0 -55
- package/skills/schmancy/qr-scanner.md +0 -51
- package/skills/schmancy/timeline-tile.md +0 -95
- package/src/charts/area-chart.ts +0 -498
- package/src/charts/index.ts +0 -4
- package/src/charts/pills.ts +0 -352
- package/src/charts/types.ts +0 -66
- package/src/charts/utils.ts +0 -65
- package/src/code-highlight/code-highlight.ts +0 -345
- package/src/code-highlight/code-preview.ts +0 -125
- package/src/code-highlight/index.ts +0 -3
- package/src/extra/countries/countries.data.ts +0 -196
- package/src/extra/countries/countries.ts +0 -109
- package/src/extra/countries/index.ts +0 -2
- package/src/extra/index.ts +0 -2
- package/src/extra/timezone/index.ts +0 -2
- package/src/extra/timezone/timezone.ts +0 -118
- package/src/extra/timezone/timezones.data.ts +0 -2546
- package/src/mailbox/README.md +0 -128
- package/src/mailbox/email-editor.ts +0 -1076
- package/src/mailbox/email-layout-selector.ts +0 -58
- package/src/mailbox/email-recipients.ts +0 -599
- package/src/mailbox/email-template-picker.ts +0 -303
- package/src/mailbox/email-viewer.ts +0 -717
- package/src/mailbox/index.ts +0 -31
- package/src/mailbox/mailbox.ts +0 -364
- package/src/mailbox/types.ts +0 -180
- package/src/map/index.ts +0 -1
- package/src/map/map.ts +0 -485
- package/src/payment-card-form/index.ts +0 -1
- package/src/payment-card-form/payment-card-form.ts +0 -331
- package/src/qr-scanner/index.ts +0 -1
- package/src/qr-scanner/qr-scanner.ts +0 -242
- package/src/timeline/index.ts +0 -1
- package/src/timeline/timeline-tile.ts +0 -431
- package/types/src/charts/area-chart.d.ts +0 -58
- package/types/src/charts/index.d.ts +0 -4
- package/types/src/charts/pills.d.ts +0 -51
- package/types/src/charts/types.d.ts +0 -62
- package/types/src/charts/utils.d.ts +0 -28
- package/types/src/code-highlight/code-highlight.d.ts +0 -49
- package/types/src/code-highlight/code-preview.d.ts +0 -30
- package/types/src/code-highlight/index.d.ts +0 -3
- package/types/src/extra/countries/countries.d.ts +0 -26
- package/types/src/extra/countries/countries.data.d.ts +0 -5
- package/types/src/extra/countries/index.d.ts +0 -2
- package/types/src/extra/index.d.ts +0 -2
- package/types/src/extra/timezone/index.d.ts +0 -2
- package/types/src/extra/timezone/timezone.d.ts +0 -34
- package/types/src/extra/timezone/timezones.data.d.ts +0 -7
- package/types/src/mailbox/email-editor.d.ts +0 -101
- package/types/src/mailbox/email-layout-selector.d.ts +0 -18
- package/types/src/mailbox/email-recipients.d.ts +0 -122
- package/types/src/mailbox/email-template-picker.d.ts +0 -54
- package/types/src/mailbox/email-viewer.d.ts +0 -86
- package/types/src/mailbox/index.d.ts +0 -12
- package/types/src/mailbox/mailbox.d.ts +0 -82
- package/types/src/mailbox/types.d.ts +0 -176
- package/types/src/map/index.d.ts +0 -1
- package/types/src/map/map.d.ts +0 -130
- package/types/src/payment-card-form/index.d.ts +0 -1
- package/types/src/payment-card-form/payment-card-form.d.ts +0 -85
- package/types/src/qr-scanner/index.d.ts +0 -1
- package/types/src/qr-scanner/qr-scanner.d.ts +0 -26
- package/types/src/timeline/index.d.ts +0 -1
- package/types/src/timeline/timeline-tile.d.ts +0 -44
- /package/dist/agent/{flow-CaPi2G8y.js → flow-CvG1fLW5.js} +0 -0
- /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-DcL7ZPxx.js} +0 -0
- /package/dist/{form-CI59gad4.js → form-CFvwnfuJ.js} +0 -0
- /package/dist/{form-B2qudx_q.cjs → form-Ceijw1aA.cjs} +0 -0
- /package/dist/{hashContent-a8uVr3xs.js → hashContent-BU6jl5ih.js} +0 -0
- /package/dist/{hashContent-ejkBgDnN.cjs → hashContent-Bobsobip.cjs} +0 -0
- /package/dist/{overlay-stack-CCiTaf_C.js → overlay-stack-DCDS17uj.js} +0 -0
- /package/dist/{overlay-stack-CFGiYf34.cjs → overlay-stack-DPIe_aYv.cjs} +0 -0
- /package/dist/{rxjs-utils-BXpvHN4-.js → rxjs-utils-CVeJQ9KG.js} +0 -0
- /package/dist/{rxjs-utils-CaC-tdot.cjs → rxjs-utils-DCUHg_Ml.cjs} +0 -0
- /package/dist/{theme.interface-C_034TxG.js → theme.interface-B9TjbSBF.js} +0 -0
- /package/dist/{theme.interface-DESopuZS.cjs → theme.interface-BujperTo.cjs} +0 -0
package/src/charts/area-chart.ts
DELETED
|
@@ -1,498 +0,0 @@
|
|
|
1
|
-
import { html, css, PropertyValues } from 'lit'
|
|
2
|
-
import { customElement, property, state } from 'lit/decorators.js'
|
|
3
|
-
import { ref, createRef, Ref } from 'lit/directives/ref.js'
|
|
4
|
-
import { SchmancyElement } from '@mixins/index'
|
|
5
|
-
import type { ChartDataPoint, ChartTheme, ProcessedDataPoint } from './types'
|
|
6
|
-
import { catmullRomSpline, hexToRgba, easeOutCubic } from './utils'
|
|
7
|
-
|
|
8
|
-
interface TooltipData {
|
|
9
|
-
visible: boolean
|
|
10
|
-
x: number
|
|
11
|
-
y: number
|
|
12
|
-
label: string
|
|
13
|
-
value: number
|
|
14
|
-
metadata?: Record<string, unknown>
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
@customElement('schmancy-area-chart')
|
|
18
|
-
export class SchmancyAreaChart extends SchmancyElement {
|
|
19
|
-
static styles = [css`
|
|
20
|
-
:host {
|
|
21
|
-
display: block;
|
|
22
|
-
}
|
|
23
|
-
`]
|
|
24
|
-
|
|
25
|
-
/** Chart data points */
|
|
26
|
-
@property({ type: Array })
|
|
27
|
-
data: ChartDataPoint[] = []
|
|
28
|
-
|
|
29
|
-
/** Chart height in pixels */
|
|
30
|
-
@property({ type: Number })
|
|
31
|
-
height = 200
|
|
32
|
-
|
|
33
|
-
/** Show grid lines */
|
|
34
|
-
@property({ type: Boolean })
|
|
35
|
-
showGrid = true
|
|
36
|
-
|
|
37
|
-
/** Show x-axis labels */
|
|
38
|
-
@property({ type: Boolean })
|
|
39
|
-
showLabels = true
|
|
40
|
-
|
|
41
|
-
/** Enable tooltips */
|
|
42
|
-
@property({ type: Boolean })
|
|
43
|
-
showTooltip = true
|
|
44
|
-
|
|
45
|
-
/** Number of peaks to highlight */
|
|
46
|
-
@property({ type: Number })
|
|
47
|
-
peakCount = 3
|
|
48
|
-
|
|
49
|
-
/** Animation duration in milliseconds */
|
|
50
|
-
@property({ type: Number })
|
|
51
|
-
animationDuration = 800
|
|
52
|
-
|
|
53
|
-
/** Enable entrance animation */
|
|
54
|
-
@property({ type: Boolean })
|
|
55
|
-
animated = true
|
|
56
|
-
|
|
57
|
-
/** Prefix for values (e.g., "EUR ") */
|
|
58
|
-
@property({ type: String })
|
|
59
|
-
valuePrefix = ''
|
|
60
|
-
|
|
61
|
-
/** Suffix for values (e.g., "%") */
|
|
62
|
-
@property({ type: String })
|
|
63
|
-
valueSuffix = ''
|
|
64
|
-
|
|
65
|
-
/** Decimal places for value display */
|
|
66
|
-
@property({ type: Number })
|
|
67
|
-
valueDecimals = 2
|
|
68
|
-
|
|
69
|
-
/** Theme overrides */
|
|
70
|
-
@property({ type: Object })
|
|
71
|
-
theme: Partial<ChartTheme> = {}
|
|
72
|
-
|
|
73
|
-
@state() private tooltipData: TooltipData = {
|
|
74
|
-
visible: false,
|
|
75
|
-
x: 0,
|
|
76
|
-
y: 0,
|
|
77
|
-
label: '',
|
|
78
|
-
value: 0,
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
@state() private animationProgress = 0
|
|
82
|
-
@state() private isVisible = false
|
|
83
|
-
|
|
84
|
-
private canvasRef: Ref<HTMLCanvasElement> = createRef()
|
|
85
|
-
private containerRef: Ref<HTMLDivElement> = createRef()
|
|
86
|
-
private animationFrameId: number | null = null
|
|
87
|
-
private observer: IntersectionObserver | null = null
|
|
88
|
-
private processedData: ProcessedDataPoint[] = []
|
|
89
|
-
private resizeObserver: ResizeObserver | null = null
|
|
90
|
-
|
|
91
|
-
connectedCallback() {
|
|
92
|
-
super.connectedCallback()
|
|
93
|
-
this.setupIntersectionObserver()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
disconnectedCallback() {
|
|
97
|
-
super.disconnectedCallback()
|
|
98
|
-
this.cleanup()
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
private cleanup() {
|
|
102
|
-
if (this.animationFrameId !== null) {
|
|
103
|
-
cancelAnimationFrame(this.animationFrameId)
|
|
104
|
-
this.animationFrameId = null
|
|
105
|
-
}
|
|
106
|
-
if (this.observer) {
|
|
107
|
-
this.observer.disconnect()
|
|
108
|
-
this.observer = null
|
|
109
|
-
}
|
|
110
|
-
if (this.resizeObserver) {
|
|
111
|
-
this.resizeObserver.disconnect()
|
|
112
|
-
this.resizeObserver = null
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
private setupIntersectionObserver() {
|
|
117
|
-
this.observer = new IntersectionObserver(
|
|
118
|
-
entries => {
|
|
119
|
-
const entry = entries[0]
|
|
120
|
-
if (entry.isIntersecting && !this.isVisible) {
|
|
121
|
-
this.isVisible = true
|
|
122
|
-
if (this.animated) {
|
|
123
|
-
this.startAnimation()
|
|
124
|
-
} else {
|
|
125
|
-
this.animationProgress = 1
|
|
126
|
-
this.drawChart()
|
|
127
|
-
}
|
|
128
|
-
} else if (!entry.isIntersecting) {
|
|
129
|
-
this.isVisible = false
|
|
130
|
-
if (this.animationFrameId !== null) {
|
|
131
|
-
cancelAnimationFrame(this.animationFrameId)
|
|
132
|
-
this.animationFrameId = null
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
},
|
|
136
|
-
{ threshold: 0.1 }
|
|
137
|
-
)
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
protected updated(changedProperties: PropertyValues) {
|
|
141
|
-
super.updated(changedProperties)
|
|
142
|
-
|
|
143
|
-
if (this.containerRef.value && this.observer) {
|
|
144
|
-
this.observer.observe(this.containerRef.value)
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (this.canvasRef.value && !this.resizeObserver) {
|
|
148
|
-
this.resizeObserver = new ResizeObserver(() => {
|
|
149
|
-
this.drawChart()
|
|
150
|
-
})
|
|
151
|
-
this.resizeObserver.observe(this.canvasRef.value)
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
// Redraw when data changes
|
|
155
|
-
if (changedProperties.has('data') && this.isVisible) {
|
|
156
|
-
if (this.animated) {
|
|
157
|
-
this.animationProgress = 0
|
|
158
|
-
this.startAnimation()
|
|
159
|
-
} else {
|
|
160
|
-
this.animationProgress = 1
|
|
161
|
-
this.drawChart()
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Redraw on theme or config changes
|
|
166
|
-
if (
|
|
167
|
-
(changedProperties.has('theme') ||
|
|
168
|
-
changedProperties.has('showGrid') ||
|
|
169
|
-
changedProperties.has('showLabels') ||
|
|
170
|
-
changedProperties.has('peakCount')) &&
|
|
171
|
-
this.isVisible
|
|
172
|
-
) {
|
|
173
|
-
this.drawChart()
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
private startAnimation() {
|
|
178
|
-
const startTime = performance.now()
|
|
179
|
-
const duration = this.animationDuration
|
|
180
|
-
|
|
181
|
-
const animateFrame = (currentTime: number) => {
|
|
182
|
-
const elapsed = currentTime - startTime
|
|
183
|
-
const progress = Math.min(elapsed / duration, 1)
|
|
184
|
-
|
|
185
|
-
this.animationProgress = easeOutCubic(progress)
|
|
186
|
-
this.drawChart()
|
|
187
|
-
|
|
188
|
-
if (progress < 1 && this.isVisible) {
|
|
189
|
-
this.animationFrameId = requestAnimationFrame(animateFrame)
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
this.animationFrameId = requestAnimationFrame(animateFrame)
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
private processData(): ProcessedDataPoint[] {
|
|
197
|
-
if (!this.data || this.data.length === 0) return []
|
|
198
|
-
|
|
199
|
-
// Find top N peak values
|
|
200
|
-
const sortedByValue = [...this.data].toSorted((a, b) => b.value - a.value)
|
|
201
|
-
const peakLabels = new Set(sortedByValue.slice(0, this.peakCount).map(d => d.label))
|
|
202
|
-
|
|
203
|
-
return this.data.map(d => ({
|
|
204
|
-
...d,
|
|
205
|
-
x: 0, // Will be calculated during draw
|
|
206
|
-
y: 0, // Will be calculated during draw
|
|
207
|
-
isPeak: peakLabels.has(d.label),
|
|
208
|
-
}))
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
private getThemeValue<K extends keyof ChartTheme>(
|
|
212
|
-
key: K,
|
|
213
|
-
defaultValue: NonNullable<ChartTheme[K]>
|
|
214
|
-
): NonNullable<ChartTheme[K]> {
|
|
215
|
-
return (this.theme[key] as NonNullable<ChartTheme[K]>) ?? defaultValue
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
private drawChart() {
|
|
219
|
-
const canvas = this.canvasRef.value
|
|
220
|
-
if (!canvas) return
|
|
221
|
-
|
|
222
|
-
const ctx = canvas.getContext('2d')
|
|
223
|
-
if (!ctx) return
|
|
224
|
-
|
|
225
|
-
const dpr = window.devicePixelRatio || 1
|
|
226
|
-
const rect = canvas.getBoundingClientRect()
|
|
227
|
-
const width = rect.width
|
|
228
|
-
const height = rect.height
|
|
229
|
-
|
|
230
|
-
// Set canvas size for high DPI
|
|
231
|
-
canvas.width = width * dpr
|
|
232
|
-
canvas.height = height * dpr
|
|
233
|
-
ctx.scale(dpr, dpr)
|
|
234
|
-
|
|
235
|
-
// Clear canvas
|
|
236
|
-
ctx.clearRect(0, 0, width, height)
|
|
237
|
-
|
|
238
|
-
const data = this.processData()
|
|
239
|
-
if (data.length === 0) return
|
|
240
|
-
|
|
241
|
-
const padding = { top: 20, right: 20, bottom: this.showLabels ? 40 : 20, left: 20 }
|
|
242
|
-
const chartWidth = width - padding.left - padding.right
|
|
243
|
-
const chartHeight = height - padding.top - padding.bottom
|
|
244
|
-
|
|
245
|
-
// Find max value for scaling
|
|
246
|
-
const maxValue = Math.max(...data.map(d => d.value), 1)
|
|
247
|
-
|
|
248
|
-
// Calculate positions
|
|
249
|
-
// oxlint-disable-next-line oxc/no-map-spread
|
|
250
|
-
const points = data.map((d, i) => ({
|
|
251
|
-
...d,
|
|
252
|
-
x: padding.left + (data.length > 1 ? (i / (data.length - 1)) * chartWidth : chartWidth / 2),
|
|
253
|
-
y: padding.top + chartHeight - (d.value / maxValue) * chartHeight,
|
|
254
|
-
}))
|
|
255
|
-
|
|
256
|
-
this.processedData = points
|
|
257
|
-
|
|
258
|
-
// Get primary color from CSS or theme
|
|
259
|
-
const computedStyle = getComputedStyle(this)
|
|
260
|
-
const defaultPrimaryColor =
|
|
261
|
-
computedStyle.getPropertyValue('--schmancy-sys-color-primary').trim() || '#6750A4'
|
|
262
|
-
const primaryColor = this.getThemeValue('primaryColor', defaultPrimaryColor)
|
|
263
|
-
const [gradientOpacityTop, gradientOpacityBottom] = this.getThemeValue('gradientOpacity', [0.4, 0.05])
|
|
264
|
-
const strokeWidth = this.getThemeValue('strokeWidth', 2)
|
|
265
|
-
const pointRadius = this.getThemeValue('pointRadius', 4)
|
|
266
|
-
const peakRadius = this.getThemeValue('peakRadius', 6)
|
|
267
|
-
|
|
268
|
-
// Draw grid lines
|
|
269
|
-
if (this.showGrid) {
|
|
270
|
-
ctx.strokeStyle = 'rgba(128, 128, 128, 0.15)'
|
|
271
|
-
ctx.lineWidth = 1
|
|
272
|
-
ctx.setLineDash([4, 4])
|
|
273
|
-
|
|
274
|
-
for (let i = 1; i <= 3; i++) {
|
|
275
|
-
const y = padding.top + (chartHeight * i) / 4
|
|
276
|
-
ctx.beginPath()
|
|
277
|
-
ctx.moveTo(padding.left, y)
|
|
278
|
-
ctx.lineTo(width - padding.right, y)
|
|
279
|
-
ctx.stroke()
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
ctx.setLineDash([])
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Create smooth curve path using Catmull-Rom spline
|
|
286
|
-
const curvePath = new Path2D()
|
|
287
|
-
const areaPath = new Path2D()
|
|
288
|
-
|
|
289
|
-
if (points.length >= 2) {
|
|
290
|
-
// Start area path from bottom left
|
|
291
|
-
areaPath.moveTo(points[0].x, padding.top + chartHeight)
|
|
292
|
-
curvePath.moveTo(points[0].x, points[0].y)
|
|
293
|
-
areaPath.lineTo(points[0].x, points[0].y)
|
|
294
|
-
|
|
295
|
-
for (let i = 0; i < points.length - 1; i++) {
|
|
296
|
-
const p0 = points[Math.max(0, i - 1)]
|
|
297
|
-
const p1 = points[i]
|
|
298
|
-
const p2 = points[Math.min(points.length - 1, i + 1)]
|
|
299
|
-
const p3 = points[Math.min(points.length - 1, i + 2)]
|
|
300
|
-
|
|
301
|
-
// Draw curve segments
|
|
302
|
-
const segments = 16
|
|
303
|
-
for (let j = 1; j <= segments; j++) {
|
|
304
|
-
const t = j / segments
|
|
305
|
-
const point = catmullRomSpline(p0, p1, p2, p3, t)
|
|
306
|
-
curvePath.lineTo(point.x, point.y)
|
|
307
|
-
areaPath.lineTo(point.x, point.y)
|
|
308
|
-
}
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
// Close area path
|
|
312
|
-
areaPath.lineTo(points[points.length - 1].x, padding.top + chartHeight)
|
|
313
|
-
areaPath.closePath()
|
|
314
|
-
} else if (points.length === 1) {
|
|
315
|
-
// Single point - draw a dot
|
|
316
|
-
curvePath.arc(points[0].x, points[0].y, pointRadius, 0, Math.PI * 2)
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
// Apply animation clipping
|
|
320
|
-
ctx.save()
|
|
321
|
-
ctx.beginPath()
|
|
322
|
-
ctx.rect(0, 0, padding.left + chartWidth * this.animationProgress, height)
|
|
323
|
-
ctx.clip()
|
|
324
|
-
|
|
325
|
-
// Draw gradient fill
|
|
326
|
-
if (points.length >= 2) {
|
|
327
|
-
const gradient = ctx.createLinearGradient(0, padding.top, 0, padding.top + chartHeight)
|
|
328
|
-
gradient.addColorStop(0, hexToRgba(primaryColor, gradientOpacityTop))
|
|
329
|
-
gradient.addColorStop(1, hexToRgba(primaryColor, gradientOpacityBottom))
|
|
330
|
-
|
|
331
|
-
ctx.fillStyle = gradient
|
|
332
|
-
ctx.fill(areaPath)
|
|
333
|
-
}
|
|
334
|
-
|
|
335
|
-
// Draw stroke
|
|
336
|
-
ctx.strokeStyle = primaryColor
|
|
337
|
-
ctx.lineWidth = strokeWidth
|
|
338
|
-
ctx.lineCap = 'round'
|
|
339
|
-
ctx.lineJoin = 'round'
|
|
340
|
-
ctx.stroke(curvePath)
|
|
341
|
-
|
|
342
|
-
// Draw data points
|
|
343
|
-
points.forEach((point, index) => {
|
|
344
|
-
const pointProgress = (index / (points.length - 1 || 1)) * this.animationProgress
|
|
345
|
-
if (pointProgress < index / (points.length || 1)) return
|
|
346
|
-
|
|
347
|
-
const radius = point.isPeak ? peakRadius - 1 : pointRadius - 1
|
|
348
|
-
const outerRadius = point.isPeak ? peakRadius + 4 : pointRadius + 2
|
|
349
|
-
|
|
350
|
-
// Outer glow for peaks
|
|
351
|
-
if (point.isPeak) {
|
|
352
|
-
ctx.beginPath()
|
|
353
|
-
ctx.arc(point.x, point.y, outerRadius, 0, Math.PI * 2)
|
|
354
|
-
ctx.fillStyle = hexToRgba(primaryColor, 0.2)
|
|
355
|
-
ctx.fill()
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
// Inner dot
|
|
359
|
-
ctx.beginPath()
|
|
360
|
-
ctx.arc(point.x, point.y, radius, 0, Math.PI * 2)
|
|
361
|
-
ctx.fillStyle = primaryColor
|
|
362
|
-
ctx.fill()
|
|
363
|
-
|
|
364
|
-
// White center for peaks
|
|
365
|
-
if (point.isPeak) {
|
|
366
|
-
ctx.beginPath()
|
|
367
|
-
ctx.arc(point.x, point.y, 2, 0, Math.PI * 2)
|
|
368
|
-
ctx.fillStyle = 'white'
|
|
369
|
-
ctx.fill()
|
|
370
|
-
}
|
|
371
|
-
})
|
|
372
|
-
|
|
373
|
-
ctx.restore()
|
|
374
|
-
|
|
375
|
-
// Draw labels
|
|
376
|
-
if (this.showLabels && points.length > 0) {
|
|
377
|
-
ctx.fillStyle = 'rgba(128, 128, 128, 0.8)'
|
|
378
|
-
ctx.font = '11px system-ui, sans-serif'
|
|
379
|
-
ctx.textAlign = 'center'
|
|
380
|
-
ctx.textBaseline = 'top'
|
|
381
|
-
|
|
382
|
-
// Show fewer labels on narrow charts
|
|
383
|
-
const labelStep = width < 400 ? 3 : width < 600 ? 2 : 1
|
|
384
|
-
points.forEach((point, index) => {
|
|
385
|
-
if (index % labelStep === 0) {
|
|
386
|
-
ctx.fillText(point.label, point.x, height - padding.bottom + 8)
|
|
387
|
-
}
|
|
388
|
-
})
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
private formatValue(value: number): string {
|
|
393
|
-
const formatted = value.toFixed(this.valueDecimals)
|
|
394
|
-
return `${this.valuePrefix}${formatted}${this.valueSuffix}`
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
private handlePointerMove = (e: PointerEvent) => {
|
|
398
|
-
if (this.processedData.length === 0 || !this.showTooltip) return
|
|
399
|
-
|
|
400
|
-
const canvas = this.canvasRef.value
|
|
401
|
-
if (!canvas) return
|
|
402
|
-
|
|
403
|
-
const rect = canvas.getBoundingClientRect()
|
|
404
|
-
const x = e.clientX - rect.left
|
|
405
|
-
|
|
406
|
-
// Find closest data point
|
|
407
|
-
let closestPoint: ProcessedDataPoint | null = null
|
|
408
|
-
let minDistance = Infinity
|
|
409
|
-
|
|
410
|
-
this.processedData.forEach(point => {
|
|
411
|
-
const distance = Math.abs(point.x - x)
|
|
412
|
-
if (distance < minDistance) {
|
|
413
|
-
minDistance = distance
|
|
414
|
-
closestPoint = point
|
|
415
|
-
}
|
|
416
|
-
})
|
|
417
|
-
|
|
418
|
-
if (closestPoint && minDistance < 30) {
|
|
419
|
-
this.tooltipData = {
|
|
420
|
-
visible: true,
|
|
421
|
-
x: closestPoint.x,
|
|
422
|
-
y: closestPoint.y,
|
|
423
|
-
label: closestPoint.label,
|
|
424
|
-
value: closestPoint.value,
|
|
425
|
-
metadata: closestPoint.metadata,
|
|
426
|
-
}
|
|
427
|
-
} else {
|
|
428
|
-
this.tooltipData = { ...this.tooltipData, visible: false }
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
private handlePointerLeave = () => {
|
|
433
|
-
this.tooltipData = { ...this.tooltipData, visible: false }
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
private renderMetadata() {
|
|
437
|
-
if (!this.tooltipData.metadata) return ''
|
|
438
|
-
return Object.entries(this.tooltipData.metadata).map(
|
|
439
|
-
([key, value]) => html`
|
|
440
|
-
<schmancy-typography type="body" token="sm" class="text-surface-onVariant">
|
|
441
|
-
${key}: ${String(value)}
|
|
442
|
-
</schmancy-typography>
|
|
443
|
-
`
|
|
444
|
-
)
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
render() {
|
|
448
|
-
if (!this.data || this.data.length === 0) {
|
|
449
|
-
return html``
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
return html`
|
|
453
|
-
<div ${ref(this.containerRef)} class="relative">
|
|
454
|
-
<div class="relative" style="height: ${this.height}px; touch-action: pan-y;">
|
|
455
|
-
<canvas
|
|
456
|
-
${ref(this.canvasRef)}
|
|
457
|
-
class="w-full h-full"
|
|
458
|
-
style="display: block;"
|
|
459
|
-
@pointermove=${this.handlePointerMove}
|
|
460
|
-
@pointerleave=${this.handlePointerLeave}
|
|
461
|
-
></canvas>
|
|
462
|
-
|
|
463
|
-
<!-- Tooltip -->
|
|
464
|
-
${this.showTooltip
|
|
465
|
-
? html`
|
|
466
|
-
<div
|
|
467
|
-
class="absolute pointer-events-none transition-opacity duration-150 ${this.tooltipData.visible
|
|
468
|
-
? 'opacity-100'
|
|
469
|
-
: 'opacity-0'}"
|
|
470
|
-
style="
|
|
471
|
-
left: ${this.tooltipData.x}px;
|
|
472
|
-
top: ${this.tooltipData.y - 60}px;
|
|
473
|
-
transform: translateX(-50%);
|
|
474
|
-
"
|
|
475
|
-
>
|
|
476
|
-
<schmancy-surface elevation="3" rounded="all" class="px-3 py-2 min-w-max">
|
|
477
|
-
<schmancy-typography type="label" token="sm" class="text-surface-onVariant">
|
|
478
|
-
${this.tooltipData.label}
|
|
479
|
-
</schmancy-typography>
|
|
480
|
-
<schmancy-typography type="title" token="md" class="text-surface-on font-semibold">
|
|
481
|
-
${this.formatValue(this.tooltipData.value)}
|
|
482
|
-
</schmancy-typography>
|
|
483
|
-
${this.renderMetadata()}
|
|
484
|
-
</schmancy-surface>
|
|
485
|
-
</div>
|
|
486
|
-
`
|
|
487
|
-
: ''}
|
|
488
|
-
</div>
|
|
489
|
-
</div>
|
|
490
|
-
`
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
declare global {
|
|
495
|
-
interface HTMLElementTagNameMap {
|
|
496
|
-
'schmancy-area-chart': SchmancyAreaChart
|
|
497
|
-
}
|
|
498
|
-
}
|
package/src/charts/index.ts
DELETED