@mhmo91/schmancy 0.10.4 → 0.10.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.
- package/custom-elements.json +43 -949
- package/dist/agent/{flow-CaPi2G8y.js.map → flow-3RrZM-e7.js.map} +1 -1
- package/dist/agent/schmancy.agent.js +3817 -6527
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +10 -680
- package/dist/agent/{vendor-jsqr-r7GNh4P3.js.map → vendor-jsqr-BUVwyoGC.js.map} +1 -1
- package/dist/agent/{vendor-material-color-Be96dpGE.js.map → vendor-material-color-33Mj762T.js.map} +1 -1
- package/dist/{area-DHVANBbr.js → area-CIZZ5tbB.js} +1 -1
- package/dist/{area-DHVANBbr.js.map → area-CIZZ5tbB.js.map} +1 -1
- package/dist/{area-ZupIezvU.cjs → area-oZjYJlUy.cjs} +1 -1
- package/dist/{area-ZupIezvU.cjs.map → area-oZjYJlUy.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-pHvsyfbH.js → autocomplete-C1oDLuol.js} +2 -2
- package/dist/{autocomplete-pHvsyfbH.js.map → autocomplete-C1oDLuol.js.map} +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs → autocomplete-X20i6D62.cjs} +1 -1
- package/dist/{autocomplete-Bn525CTp.cjs.map → autocomplete-X20i6D62.cjs.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-IyEtsNI4.cjs → boat-CUx58Gwe.cjs} +1 -1
- package/dist/{boat-IyEtsNI4.cjs.map → boat-CUx58Gwe.cjs.map} +1 -1
- package/dist/{boat-_Yv3M6YM.js → boat-CpE0yAlK.js} +2 -2
- package/dist/{boat-_Yv3M6YM.js.map → boat-CpE0yAlK.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-Ck2IXJ4r.js → busy-C9n-DUY4.js} +1 -1
- package/dist/{busy-Ck2IXJ4r.js.map → busy-C9n-DUY4.js.map} +1 -1
- package/dist/{busy-CjM39APN.cjs → busy-D1DKZhgV.cjs} +1 -1
- package/dist/{busy-CjM39APN.cjs.map → busy-D1DKZhgV.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 +3 -3
- package/dist/{card-DUWZmMHc.js → card-B3hN-qzk.js} +1 -1
- package/dist/{card-DUWZmMHc.js.map → card-B3hN-qzk.js.map} +1 -1
- package/dist/{card-DIxDuuth.cjs → card-DZJ7qjf2.cjs} +1 -1
- package/dist/{card-DIxDuuth.cjs.map → card-DZJ7qjf2.cjs.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 +1 -1
- package/dist/{checkbox-DPS1mWG-.js → checkbox-CvmB1ev9.js} +1 -1
- package/dist/{checkbox-DPS1mWG-.js.map → checkbox-CvmB1ev9.js.map} +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs → checkbox-DapdzDow.cjs} +1 -1
- package/dist/{checkbox-CGdFXuWQ.cjs.map → checkbox-DapdzDow.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-UoFbwmlG.cjs → chips-7g6mWRuh.cjs} +1 -1
- package/dist/{chips-UoFbwmlG.cjs.map → chips-7g6mWRuh.cjs.map} +1 -1
- package/dist/{chips-BnnXQSA-.js → chips-C8Y3_3ke.js} +4 -4
- package/dist/{chips-BnnXQSA-.js.map → chips-C8Y3_3ke.js.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/{context-daN5G6HS.cjs.map → context-BpCETidA.cjs.map} +1 -1
- package/dist/{context-Bdu1xt0W.js.map → context-DJTJnSK4.js.map} +1 -1
- package/dist/{date-range-DOstCIg8.js → date-range-DdcaPX7C.js} +99 -113
- package/dist/date-range-DdcaPX7C.js.map +1 -0
- package/dist/date-range-ZfUl4duV.cjs +131 -0
- package/dist/date-range-ZfUl4duV.cjs.map +1 -0
- package/dist/{date-range-inline-4P7zqeVe.cjs → date-range-inline-D-d7N6bh.cjs} +1 -1
- package/dist/{date-range-inline-4P7zqeVe.cjs.map → date-range-inline-D-d7N6bh.cjs.map} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js → date-range-inline-QQmIWhZ4.js} +1 -1
- package/dist/{date-range-inline-BVycTWLb.js.map → date-range-inline-QQmIWhZ4.js.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-BJBbZOO6.cjs → details-3rL6UQU8.cjs} +1 -1
- package/dist/{details-BJBbZOO6.cjs.map → details-3rL6UQU8.cjs.map} +1 -1
- package/dist/{details-DPc5GxPa.js → details-Dpjh-XnJ.js} +2 -2
- package/dist/{details-DPc5GxPa.js.map → details-Dpjh-XnJ.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-BvJsmSPH.js → divider-BdfEKQsH.js} +1 -1
- package/dist/{divider-BvJsmSPH.js.map → divider-BdfEKQsH.js.map} +1 -1
- package/dist/{divider-DPT3XnG5.cjs → divider-CutXDz3F.cjs} +1 -1
- package/dist/{divider-DPT3XnG5.cjs.map → divider-CutXDz3F.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-CTqBWVXo.cjs → expand-DM6zfZf7.cjs} +1 -1
- package/dist/{expand-CTqBWVXo.cjs.map → expand-DM6zfZf7.cjs.map} +1 -1
- package/dist/{expand-BMzocdtj.js → expand-DrgMPJbu.js} +2 -2
- package/dist/{expand-BMzocdtj.js.map → expand-DrgMPJbu.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-BeHlUhzv.js → extra-B6gFu4_1.js} +1 -1
- package/dist/{extra-BeHlUhzv.js.map → extra-B6gFu4_1.js.map} +1 -1
- package/dist/{extra-h_cuxRII.cjs → extra-DJRYaOXe.cjs} +1 -1
- package/dist/{extra-h_cuxRII.cjs.map → extra-DJRYaOXe.cjs.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-CTc1xxqH.js → float-1iihPek5.js} +1 -1
- package/dist/{float-CTc1xxqH.js.map → float-1iihPek5.js.map} +1 -1
- package/dist/{float-CwVBs11k.cjs → float-Ckyk85XG.cjs} +1 -1
- package/dist/{float-CwVBs11k.cjs.map → float-Ckyk85XG.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-BtwOBMZ9.js.map → form-BF1c3Dk1.js.map} +1 -1
- package/dist/{form-CSJp687X.cjs.map → form-DeO5XX3b.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-1ARKIsx9.js.map → hashContent-BU6jl5ih.js.map} +1 -1
- package/dist/{hashContent-Bp5S6T4U.cjs.map → hashContent-Bobsobip.cjs.map} +1 -1
- package/dist/{icons-qEQW4pjM.cjs → icons-CV-fiGcW.cjs} +1 -1
- package/dist/{icons-qEQW4pjM.cjs.map → icons-CV-fiGcW.cjs.map} +1 -1
- package/dist/{icons-BbCVrcas.js → icons-DUkcTZAY.js} +2 -2
- package/dist/{icons-BbCVrcas.js.map → icons-DUkcTZAY.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BJfDIEJf.js → iframe-C9tj7F6Y.js} +1 -1
- package/dist/{iframe-BJfDIEJf.js.map → iframe-C9tj7F6Y.js.map} +1 -1
- package/dist/{iframe-D6HTruav.cjs → iframe-DF97oGtZ.cjs} +1 -1
- package/dist/{iframe-D6HTruav.cjs.map → iframe-DF97oGtZ.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 +70 -76
- package/dist/{input-LTK3cctF.js → input-DE7x223Y.js} +1 -1
- package/dist/{input-LTK3cctF.js.map → input-DE7x223Y.js.map} +1 -1
- package/dist/{input-U26axtcs.cjs → input-TW9G3n7X.cjs} +1 -1
- package/dist/{input-U26axtcs.cjs.map → input-TW9G3n7X.cjs.map} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js → input-chip-BdoaVw_D.js} +1 -1
- package/dist/{input-chip-Ch-aCs3c.js.map → input-chip-BdoaVw_D.js.map} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs → input-chip-Do48eI5r.cjs} +1 -1
- package/dist/{input-chip-CADXt0X5.cjs.map → input-chip-Do48eI5r.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-C4xmnU4n.js → layout-CXPNsUIo.js} +1 -1
- package/dist/{layout-C4xmnU4n.js.map → layout-CXPNsUIo.js.map} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs → layout-Zhe7wSZ_.cjs} +1 -1
- package/dist/{layout-Dmh6fxh0.cjs.map → layout-Zhe7wSZ_.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{lightbox-DqG2z3Cn.js → lightbox-DcutIyjx.js} +2 -2
- package/dist/{lightbox-DqG2z3Cn.js.map → lightbox-DcutIyjx.js.map} +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs → lightbox-sPfnYzjJ.cjs} +1 -1
- package/dist/{lightbox-DbYUSfVl.cjs.map → lightbox-sPfnYzjJ.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-D6-_E5ZD.js → list-BWrtrdgs.js} +1 -1
- package/dist/{list-D6-_E5ZD.js.map → list-BWrtrdgs.js.map} +1 -1
- package/dist/{list-CLX4sSAw.cjs → list-C4vasUly.cjs} +1 -1
- package/dist/{list-CLX4sSAw.cjs.map → list-C4vasUly.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{magnetic-BH0TsofV.cjs.map → magnetic-BJgB1dVi.cjs.map} +1 -1
- package/dist/{magnetic-BZGFxAWG.js.map → magnetic-YwCNvtbB.js.map} +1 -1
- package/dist/{map-WXeVkx2K.cjs → map-BAQ9FEB6.cjs} +1 -1
- package/dist/{map-WXeVkx2K.cjs.map → map-BAQ9FEB6.cjs.map} +1 -1
- package/dist/{map-Dhy3ta9v.js → map-CEreveeI.js} +1 -1
- package/dist/{map-Dhy3ta9v.js.map → map-CEreveeI.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/menu-3yXDZusj.cjs +23 -0
- package/dist/menu-3yXDZusj.cjs.map +1 -0
- package/dist/menu-CxChOxWT.js +62 -0
- package/dist/menu-CxChOxWT.js.map +1 -0
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins-Db7gjDah.cjs +298 -0
- package/dist/{mixins-De3xfjrm.cjs.map → mixins-Db7gjDah.cjs.map} +1 -1
- package/dist/mixins-Dw6hVfy-.js +627 -0
- package/dist/{mixins-CcIWET41.js.map → mixins-Dw6hVfy-.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-D_PQjBSf.cjs → notification-DKYy9qVe.cjs} +1 -1
- package/dist/{notification-D_PQjBSf.cjs.map → notification-DKYy9qVe.cjs.map} +1 -1
- package/dist/{notification-CVLqQ8c_.js → notification-ycbUBbOu.js} +2 -2
- package/dist/{notification-CVLqQ8c_.js.map → notification-ycbUBbOu.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-rm4HebVs.js → option-DtOhMd3k.js} +1 -1
- package/dist/{option-rm4HebVs.js.map → option-DtOhMd3k.js.map} +1 -1
- package/dist/{option-DDU_goh1.cjs → option-zgVge3BH.cjs} +1 -1
- package/dist/{option-DDU_goh1.cjs.map → option-zgVge3BH.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-stack-CAQno0CK.js.map → overlay-stack-DCDS17uj.js.map} +1 -1
- package/dist/{overlay-stack-BprhAE9a.cjs.map → overlay-stack-DPIe_aYv.cjs.map} +1 -1
- package/dist/overlay.cjs +5 -53
- package/dist/overlay.cjs.map +1 -1
- package/dist/overlay.confirm-body-AFqYBqrI.js +104 -0
- package/dist/overlay.confirm-body-AFqYBqrI.js.map +1 -0
- package/dist/overlay.confirm-body-DctQLDao.cjs +49 -0
- package/dist/overlay.confirm-body-DctQLDao.cjs.map +1 -0
- package/dist/overlay.js +120 -360
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.service-B9On2-Aa.js +146 -0
- package/dist/overlay.service-B9On2-Aa.js.map +1 -0
- package/dist/overlay.service-k2nCE4pi.cjs +1 -0
- package/dist/overlay.service-k2nCE4pi.cjs.map +1 -0
- package/dist/page.cjs +1 -1
- package/dist/page.js +4 -4
- package/dist/{payment-card-form-C0dHYZIv.js → payment-card-form-Be1-OVlL.js} +1 -1
- package/dist/{payment-card-form-C0dHYZIv.js.map → payment-card-form-Be1-OVlL.js.map} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs → payment-card-form-CNnGePG4.cjs} +1 -1
- package/dist/{payment-card-form-DNvmZxs4.cjs.map → payment-card-form-CNnGePG4.cjs.map} +1 -1
- package/dist/payment-card-form.cjs +1 -1
- package/dist/payment-card-form.js +1 -1
- package/dist/{progress-BRerM5Bn.js → progress-BFWzmTlz.js} +1 -1
- package/dist/{progress-BRerM5Bn.js.map → progress-BFWzmTlz.js.map} +1 -1
- package/dist/{progress-U3LQkpM2.cjs → progress-C4TGG2eN.cjs} +1 -1
- package/dist/{progress-U3LQkpM2.cjs.map → progress-C4TGG2eN.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js → radio-group-DTNAW5dd.js} +1 -1
- package/dist/{radio-group-BZ2WoOXJ.js.map → radio-group-DTNAW5dd.js.map} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs → radio-group-xLRp1g57.cjs} +1 -1
- package/dist/{radio-group-D7mm-yvJ.cjs.map → radio-group-xLRp1g57.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-d-ivVN84.js.map → rxjs-utils-BK8VMe3K.js.map} +1 -1
- package/dist/{rxjs-utils-Csnks202.cjs.map → rxjs-utils-DhOKenkS.cjs.map} +1 -1
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{scroll-qL-HkMdP.js → scroll-BCmdqSQU.js} +1 -1
- package/dist/{scroll-qL-HkMdP.js.map → scroll-BCmdqSQU.js.map} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs → scroll-Bdgb-vRy.cjs} +1 -1
- package/dist/{scroll-DJTjNIT_.cjs.map → scroll-Bdgb-vRy.cjs.map} +1 -1
- package/dist/{select-CnPXUeSf.js → select-COGARE0b.js} +2 -2
- package/dist/{select-CnPXUeSf.js.map → select-COGARE0b.js.map} +1 -1
- package/dist/{select-BvA7v-gL.cjs → select-Cv5t_PT3.cjs} +1 -1
- package/dist/{select-BvA7v-gL.cjs.map → select-Cv5t_PT3.cjs.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 +3 -6
- package/dist/skills/SKILL.md +13 -9
- package/dist/skills/schmancy/INDEX.md +3 -6
- package/dist/skills/schmancy/SKILL.md +13 -9
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs → splash-screen-B8rFbjqT.cjs} +1 -1
- package/dist/{splash-screen-BDt4PInk.cjs.map → splash-screen-B8rFbjqT.cjs.map} +1 -1
- package/dist/{splash-screen-C8JCqX5L.js → splash-screen-DbGbGttg.js} +1 -1
- package/dist/{splash-screen-C8JCqX5L.js.map → splash-screen-DbGbGttg.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-CqdnWGgr.js → src-YRir9pOP.js} +162 -162
- package/dist/src-YRir9pOP.js.map +1 -0
- package/dist/{src-CpRNClhg.cjs → src-b8D-Ec-Q.cjs} +13 -13
- package/dist/src-b8D-Ec-Q.cjs.map +1 -0
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-C8jQy8Ym.js → surface-BE7sGTBt.js} +1 -1
- package/dist/{surface-C8jQy8Ym.js.map → surface-BE7sGTBt.js.map} +1 -1
- package/dist/{surface-Du2Y4vXd.cjs → surface-BvudRtf5.cjs} +1 -1
- package/dist/{surface-Du2Y4vXd.cjs.map → surface-BvudRtf5.cjs.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-0RfeCa00.cjs → tabs-C0XKld1Z.cjs} +1 -1
- package/dist/{tabs-0RfeCa00.cjs.map → tabs-C0XKld1Z.cjs.map} +1 -1
- package/dist/{tabs-Cyahh9Q6.js → tabs-DIzCRsA3.js} +1 -1
- package/dist/{tabs-Cyahh9Q6.js.map → tabs-DIzCRsA3.js.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-jqRrLxmo.cjs → textarea-BCDCGCJd.cjs} +1 -1
- package/dist/{textarea-jqRrLxmo.cjs.map → textarea-BCDCGCJd.cjs.map} +1 -1
- package/dist/{textarea-CXCcTVnf.js → textarea-UbZzBwqm.js} +1 -1
- package/dist/{textarea-CXCcTVnf.js.map → textarea-UbZzBwqm.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-CIsI-sFj.cjs +181 -0
- package/dist/{theme-Hjz9sCN-.cjs.map → theme-CIsI-sFj.cjs.map} +1 -1
- package/dist/{theme-2KZW2Rfs.js → theme-Qh-yPEPL.js} +3 -4
- package/dist/{theme-2KZW2Rfs.js.map → theme-Qh-yPEPL.js.map} +1 -1
- package/dist/{theme-button-9uF1eoHz.js → theme-button-CjTnfs9x.js} +1 -1
- package/dist/{theme-button-9uF1eoHz.js.map → theme-button-CjTnfs9x.js.map} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs → theme-button-Dv1D_Vil.cjs} +1 -1
- package/dist/{theme-button-C7QIbke1.cjs.map → theme-button-Dv1D_Vil.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-D9l33b-M.cjs.map → theme.interface-BeW-sz_g.cjs.map} +1 -1
- package/dist/{theme.interface-DnVNre4O.js.map → theme.interface-v7SkAnDH.js.map} +1 -1
- package/dist/theme.js +5 -6
- package/dist/theme.service-Cfk88qHK.cjs +1 -0
- package/dist/theme.service-Cfk88qHK.cjs.map +1 -0
- package/dist/{theme.service-CmbOGMA8.js → theme.service-DIUo1mBP.js} +13 -14
- package/dist/theme.service-DIUo1mBP.js.map +1 -0
- package/dist/timeline.cjs +1 -1
- package/dist/timeline.js +1 -1
- 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-hp-DnFf5.js → utils-BfOze6Tk.js} +1 -1
- package/dist/{utils-hp-DnFf5.js.map → utils-BfOze6Tk.js.map} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs → utils-CJ9y2Jz9.cjs} +1 -1
- package/dist/{utils-Cr-YO4Np.cjs.map → utils-CJ9y2Jz9.cjs.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-DtUOWiAj.cjs → window-9HOUXrTU.cjs} +1 -1
- package/dist/{window-DtUOWiAj.cjs.map → window-9HOUXrTU.cjs.map} +1 -1
- package/dist/{window-C7yY9yp5.js → window-B_55dzk0.js} +3 -3
- package/dist/{window-C7yY9yp5.js.map → window-B_55dzk0.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -2
- package/skills/schmancy/INDEX.md +3 -6
- package/skills/schmancy/SKILL.md +13 -9
- package/src/content-drawer/drawer.ts +24 -7
- package/src/content-drawer/events.ts +6 -0
- package/src/content-drawer/sheet.ts +13 -12
- package/src/date-range/date-range-dialog.ts +4 -4
- package/src/date-range/date-range.ts +35 -53
- package/src/index.ts +0 -4
- package/src/menu/menu-item.ts +7 -2
- package/src/menu/menu.ts +24 -20
- package/types/src/content-drawer/drawer.d.ts +2 -0
- package/types/src/content-drawer/events.d.ts +6 -0
- package/types/src/content-drawer/sheet.d.ts +6 -5
- package/types/src/date-range/date-range.d.ts +1 -5
- package/types/src/index.d.ts +0 -4
- package/types/src/menu/menu-item.d.ts +1 -0
- package/types/src/menu/menu.d.ts +9 -7
- package/dist/agent/vendor-highlight-CHJZQQB7.js +0 -2178
- package/dist/agent/vendor-highlight-CHJZQQB7.js.map +0 -1
- package/dist/code-highlight-CMilN0B8.cjs +0 -190
- package/dist/code-highlight-CMilN0B8.cjs.map +0 -1
- package/dist/code-highlight-kFUJ1Eet.js +0 -296
- package/dist/code-highlight-kFUJ1Eet.js.map +0 -1
- package/dist/code-highlight.cjs +0 -1
- package/dist/code-highlight.js +0 -2
- package/dist/date-range-BIyrzTRZ.cjs +0 -131
- package/dist/date-range-BIyrzTRZ.cjs.map +0 -1
- package/dist/date-range-DOstCIg8.js.map +0 -1
- package/dist/dialog-service-DI9PPy4H.js +0 -193
- package/dist/dialog-service-DI9PPy4H.js.map +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs +0 -1
- package/dist/dialog-service-DJd5L0f5.cjs.map +0 -1
- package/dist/dialog.cjs +0 -89
- package/dist/dialog.cjs.map +0 -1
- package/dist/dialog.js +0 -419
- package/dist/dialog.js.map +0 -1
- package/dist/mailbox-Ct6iYe-4.cjs +0 -1140
- package/dist/mailbox-Ct6iYe-4.cjs.map +0 -1
- package/dist/mailbox-DsPII8HR.js +0 -1596
- package/dist/mailbox-DsPII8HR.js.map +0 -1
- package/dist/mailbox.cjs +0 -1
- package/dist/mailbox.js +0 -2
- package/dist/menu-Bhd3EapX.js +0 -56
- package/dist/menu-Bhd3EapX.js.map +0 -1
- package/dist/menu-Cg2aaDjs.cjs +0 -23
- package/dist/menu-Cg2aaDjs.cjs.map +0 -1
- package/dist/mixins-CcIWET41.js +0 -627
- package/dist/mixins-De3xfjrm.cjs +0 -298
- package/dist/sheet-BRL07BB4.js +0 -170
- package/dist/sheet-BRL07BB4.js.map +0 -1
- package/dist/sheet-BYQJAHQn.cjs +0 -35
- package/dist/sheet-BYQJAHQn.cjs.map +0 -1
- package/dist/sheet.cjs +0 -1
- package/dist/sheet.js +0 -3
- package/dist/sheet.service-B25bsrYG.cjs +0 -1
- package/dist/sheet.service-B25bsrYG.cjs.map +0 -1
- package/dist/sheet.service-SPQ8oLCi.js +0 -86
- package/dist/sheet.service-SPQ8oLCi.js.map +0 -1
- package/dist/skills/code-highlight.md +0 -47
- package/dist/skills/dialog.md +0 -69
- package/dist/skills/mailbox.md +0 -102
- package/dist/skills/schmancy/code-highlight.md +0 -47
- package/dist/skills/schmancy/dialog.md +0 -69
- package/dist/skills/schmancy/mailbox.md +0 -102
- package/dist/skills/schmancy/sheet.md +0 -76
- package/dist/skills/sheet.md +0 -76
- package/dist/src-CpRNClhg.cjs.map +0 -1
- package/dist/src-CqdnWGgr.js.map +0 -1
- package/dist/theme-Hjz9sCN-.cjs +0 -181
- package/dist/theme.events-Cv7N4Toe.js +0 -2
- package/dist/theme.events-Cv7N4Toe.js.map +0 -1
- package/dist/theme.events-DM4H5F2d.cjs +0 -1
- package/dist/theme.events-DM4H5F2d.cjs.map +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs +0 -1
- package/dist/theme.service-BrUbGoeQ.cjs.map +0 -1
- package/dist/theme.service-CmbOGMA8.js.map +0 -1
- package/skills/schmancy/code-highlight.md +0 -47
- package/skills/schmancy/dialog.md +0 -69
- package/skills/schmancy/mailbox.md +0 -102
- package/skills/schmancy/sheet.md +0 -76
- 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/dialog/dialog-base.mixin.ts +0 -576
- package/src/dialog/dialog-events.ts +0 -17
- package/src/dialog/dialog-service.ts +0 -494
- package/src/dialog/dialog.component.ts +0 -414
- package/src/dialog/index.ts +0 -3
- package/src/mailbox/README.md +0 -128
- package/src/mailbox/email-editor.ts +0 -1077
- 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 -297
- 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/sheet/hook.ts +0 -40
- package/src/sheet/index.ts +0 -2
- package/src/sheet/sheet.service.ts +0 -245
- package/src/sheet/sheet.ts +0 -238
- 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/dialog/dialog-base.mixin.d.ts +0 -30
- package/types/src/dialog/dialog-events.d.ts +0 -13
- package/types/src/dialog/dialog-service.d.ts +0 -91
- package/types/src/dialog/dialog.component.d.ts +0 -150
- package/types/src/dialog/index.d.ts +0 -3
- 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/sheet/hook.d.ts +0 -5
- package/types/src/sheet/index.d.ts +0 -2
- package/types/src/sheet/sheet.d.ts +0 -29
- package/types/src/sheet/sheet.service.d.ts +0 -65
- /package/dist/agent/{flow-CaPi2G8y.js → flow-3RrZM-e7.js} +0 -0
- /package/dist/agent/{vendor-jsqr-r7GNh4P3.js → vendor-jsqr-BUVwyoGC.js} +0 -0
- /package/dist/agent/{vendor-material-color-Be96dpGE.js → vendor-material-color-33Mj762T.js} +0 -0
- /package/dist/{context-daN5G6HS.cjs → context-BpCETidA.cjs} +0 -0
- /package/dist/{context-Bdu1xt0W.js → context-DJTJnSK4.js} +0 -0
- /package/dist/{form-BtwOBMZ9.js → form-BF1c3Dk1.js} +0 -0
- /package/dist/{form-CSJp687X.cjs → form-DeO5XX3b.cjs} +0 -0
- /package/dist/{hashContent-1ARKIsx9.js → hashContent-BU6jl5ih.js} +0 -0
- /package/dist/{hashContent-Bp5S6T4U.cjs → hashContent-Bobsobip.cjs} +0 -0
- /package/dist/{magnetic-BH0TsofV.cjs → magnetic-BJgB1dVi.cjs} +0 -0
- /package/dist/{magnetic-BZGFxAWG.js → magnetic-YwCNvtbB.js} +0 -0
- /package/dist/{overlay-stack-CAQno0CK.js → overlay-stack-DCDS17uj.js} +0 -0
- /package/dist/{overlay-stack-BprhAE9a.cjs → overlay-stack-DPIe_aYv.cjs} +0 -0
- /package/dist/{rxjs-utils-d-ivVN84.js → rxjs-utils-BK8VMe3K.js} +0 -0
- /package/dist/{rxjs-utils-Csnks202.cjs → rxjs-utils-DhOKenkS.cjs} +0 -0
- /package/dist/{theme.interface-D9l33b-M.cjs → theme.interface-BeW-sz_g.cjs} +0 -0
- /package/dist/{theme.interface-DnVNre4O.js → theme.interface-v7SkAnDH.js} +0 -0
package/src/mailbox/index.ts
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schmancy Mailbox Components
|
|
3
|
-
*
|
|
4
|
-
* Comprehensive email composition and management system
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// Export types
|
|
8
|
-
export * from './types'
|
|
9
|
-
|
|
10
|
-
// Export components
|
|
11
|
-
export { SchmancyMailbox } from './mailbox'
|
|
12
|
-
export { SchmancyEmailEditor } from './email-editor'
|
|
13
|
-
export { SchmancyEmailViewer } from './email-viewer'
|
|
14
|
-
export { SchmancyEmailRecipients } from './email-recipients'
|
|
15
|
-
export { SchmancyEmailLayoutSelector } from './email-layout-selector'
|
|
16
|
-
|
|
17
|
-
// Re-export key types for convenience
|
|
18
|
-
export type {
|
|
19
|
-
EmailTemplate,
|
|
20
|
-
EmailAttachment,
|
|
21
|
-
EmailComposeConfig,
|
|
22
|
-
SendEmailRequest,
|
|
23
|
-
SendEmailResponse,
|
|
24
|
-
ImportSource,
|
|
25
|
-
EmailCampaign,
|
|
26
|
-
EmailRecipient,
|
|
27
|
-
MailboxState,
|
|
28
|
-
CurrentComposeState,
|
|
29
|
-
BoatState,
|
|
30
|
-
EmailPreviewMode
|
|
31
|
-
} from './types'
|
package/src/mailbox/mailbox.ts
DELETED
|
@@ -1,364 +0,0 @@
|
|
|
1
|
-
import { SchmancyElement } from '@mixins/index'
|
|
2
|
-
import { html, css } from 'lit'
|
|
3
|
-
import { customElement, property, state } from 'lit/decorators.js'
|
|
4
|
-
import { when } from 'lit/directives/when.js'
|
|
5
|
-
import type {
|
|
6
|
-
EmailTemplate,
|
|
7
|
-
EmailAttachment,
|
|
8
|
-
EmailComposeConfig,
|
|
9
|
-
SendEmailRequest,
|
|
10
|
-
ImportSource
|
|
11
|
-
} from './types'
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Main mailbox component that orchestrates the entire email composition flow
|
|
15
|
-
*
|
|
16
|
-
* Features:
|
|
17
|
-
* - Responsive layout with composer and preview panels
|
|
18
|
-
* - Recipients management with floating boat interface
|
|
19
|
-
* - Template selection and content editing
|
|
20
|
-
* - Attachment handling
|
|
21
|
-
* - Email validation and sending
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```html
|
|
25
|
-
* <schmancy-mailbox
|
|
26
|
-
* .config=${{ sendEndpoint: '/api/send-email' }}
|
|
27
|
-
* .templates=${emailTemplates}
|
|
28
|
-
* .importSources=${recipientSources}
|
|
29
|
-
* ></schmancy-mailbox>
|
|
30
|
-
* ```
|
|
31
|
-
*/
|
|
32
|
-
@customElement('schmancy-mailbox')
|
|
33
|
-
export class SchmancyMailbox extends SchmancyElement {
|
|
34
|
-
static styles = [css`
|
|
35
|
-
:host {
|
|
36
|
-
display: block;
|
|
37
|
-
height: 100%;
|
|
38
|
-
}
|
|
39
|
-
`]
|
|
40
|
-
|
|
41
|
-
/** Configuration for endpoints and handlers */
|
|
42
|
-
@property({ type: Object }) config: EmailComposeConfig = {}
|
|
43
|
-
|
|
44
|
-
/** Available email templates */
|
|
45
|
-
@property({ type: Array }) templates: EmailTemplate[] = []
|
|
46
|
-
|
|
47
|
-
/** Import sources for recipients panel */
|
|
48
|
-
@property({ type: Array }) importSources: ImportSource[] = []
|
|
49
|
-
|
|
50
|
-
/** Disable all interactions */
|
|
51
|
-
@property({ type: Boolean }) disabled = false
|
|
52
|
-
|
|
53
|
-
/** Recipients panel title */
|
|
54
|
-
@property({ type: String }) recipientsTitle = 'Recipients'
|
|
55
|
-
|
|
56
|
-
/** Empty state title for recipients */
|
|
57
|
-
@property({ type: String }) recipientsEmptyTitle = 'No recipients yet'
|
|
58
|
-
|
|
59
|
-
/** Empty state message for recipients */
|
|
60
|
-
@property({ type: String }) recipientsEmptyMessage = 'Import from sources or upload a CSV'
|
|
61
|
-
|
|
62
|
-
/** Enable CSV import functionality */
|
|
63
|
-
@property({ type: Boolean }) enableCsvImport = true
|
|
64
|
-
|
|
65
|
-
/** Enable drag and drop for files */
|
|
66
|
-
@property({ type: Boolean }) enableDragDrop = true
|
|
67
|
-
|
|
68
|
-
/** Email composition state */
|
|
69
|
-
@state() private recipients: string[] = []
|
|
70
|
-
@state() private selectedRecipients: string[] = []
|
|
71
|
-
@state() private subject = ''
|
|
72
|
-
@state() private body = ''
|
|
73
|
-
@state() private templateId: string | null = null
|
|
74
|
-
@state() private attachments: EmailAttachment[] = []
|
|
75
|
-
@state() private isSending = false
|
|
76
|
-
|
|
77
|
-
connectedCallback() {
|
|
78
|
-
super.connectedCallback()
|
|
79
|
-
this.setSending(this.disabled)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
updated(changedProperties: Map<string, unknown>) {
|
|
83
|
-
super.updated(changedProperties)
|
|
84
|
-
|
|
85
|
-
// Sync sending state
|
|
86
|
-
if (changedProperties.has('disabled')) {
|
|
87
|
-
this.setSending(this.disabled)
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/** Handle emails imported from various sources */
|
|
92
|
-
private handleEmailsImported = (event: CustomEvent) => {
|
|
93
|
-
const { emails } = event.detail
|
|
94
|
-
|
|
95
|
-
// Add unique emails to recipients list
|
|
96
|
-
const uniqueEmails = [...new Set([...this.recipients, ...emails])]
|
|
97
|
-
const newEmails = emails.filter((email: string) => !this.recipients.includes(email))
|
|
98
|
-
|
|
99
|
-
this.recipients = uniqueEmails
|
|
100
|
-
|
|
101
|
-
// Auto-select imported emails
|
|
102
|
-
this.selectedRecipients = [...new Set([...this.selectedRecipients, ...newEmails])]
|
|
103
|
-
|
|
104
|
-
// Dispatch event to parent
|
|
105
|
-
this.dispatchEvent(new CustomEvent('emails-imported', {
|
|
106
|
-
detail: { emails: newEmails, source: event.detail.source },
|
|
107
|
-
bubbles: true,
|
|
108
|
-
composed: true
|
|
109
|
-
}))
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/** Handle individual recipient removal */
|
|
113
|
-
private handleRecipientRemoved = (event: CustomEvent) => {
|
|
114
|
-
const { email } = event.detail
|
|
115
|
-
this.recipients = this.recipients.filter(e => e !== email)
|
|
116
|
-
this.selectedRecipients = this.selectedRecipients.filter(e => e !== email)
|
|
117
|
-
|
|
118
|
-
this.dispatchEvent(new CustomEvent('recipient-removed', {
|
|
119
|
-
detail: { email },
|
|
120
|
-
bubbles: true,
|
|
121
|
-
composed: true
|
|
122
|
-
}))
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/** Handle clearing all recipients */
|
|
126
|
-
private handleRecipientsCleared = () => {
|
|
127
|
-
this.recipients = []
|
|
128
|
-
this.selectedRecipients = []
|
|
129
|
-
|
|
130
|
-
this.dispatchEvent(new CustomEvent('recipients-cleared', {
|
|
131
|
-
bubbles: true,
|
|
132
|
-
composed: true
|
|
133
|
-
}))
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/** Handle recipient selection changes */
|
|
137
|
-
private handleSelectionChanged = (event: CustomEvent) => {
|
|
138
|
-
const { selectedEmails } = event.detail
|
|
139
|
-
this.selectedRecipients = selectedEmails
|
|
140
|
-
|
|
141
|
-
this.dispatchEvent(new CustomEvent('selection-changed', {
|
|
142
|
-
detail: { selectedEmails },
|
|
143
|
-
bubbles: true,
|
|
144
|
-
composed: true
|
|
145
|
-
}))
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/** Handle composer content changes */
|
|
149
|
-
private handleEditorChange = (event: CustomEvent) => {
|
|
150
|
-
const { subject, body, templateId, attachments } = event.detail
|
|
151
|
-
this.subject = subject
|
|
152
|
-
this.body = body
|
|
153
|
-
this.templateId = templateId
|
|
154
|
-
this.attachments = attachments
|
|
155
|
-
|
|
156
|
-
this.dispatchEvent(new CustomEvent('compose-changed', {
|
|
157
|
-
detail: { subject, body, templateId, attachments },
|
|
158
|
-
bubbles: true,
|
|
159
|
-
composed: true
|
|
160
|
-
}))
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/** Handle email sending */
|
|
164
|
-
private handleSend = async () => {
|
|
165
|
-
// Validation
|
|
166
|
-
if (this.selectedRecipients.length === 0) {
|
|
167
|
-
this.dispatchEvent(new CustomEvent('send-error', {
|
|
168
|
-
detail: { error: 'Please select at least one recipient' },
|
|
169
|
-
bubbles: true,
|
|
170
|
-
composed: true
|
|
171
|
-
}))
|
|
172
|
-
return
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
if (!this.subject.trim()) {
|
|
176
|
-
this.dispatchEvent(new CustomEvent('send-error', {
|
|
177
|
-
detail: { error: 'Please enter a subject' },
|
|
178
|
-
bubbles: true,
|
|
179
|
-
composed: true
|
|
180
|
-
}))
|
|
181
|
-
return
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
if (!this.body.trim()) {
|
|
185
|
-
this.dispatchEvent(new CustomEvent('send-error', {
|
|
186
|
-
detail: { error: 'Please enter a message body' },
|
|
187
|
-
bubbles: true,
|
|
188
|
-
composed: true
|
|
189
|
-
}))
|
|
190
|
-
return
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
this.isSending = true
|
|
194
|
-
|
|
195
|
-
try {
|
|
196
|
-
const request: SendEmailRequest = {
|
|
197
|
-
recipients: this.selectedRecipients,
|
|
198
|
-
subject: this.subject,
|
|
199
|
-
body: this.body,
|
|
200
|
-
attachments: this.attachments,
|
|
201
|
-
templateId: this.templateId
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Dispatch event for parent to handle
|
|
205
|
-
this.dispatchEvent(new CustomEvent('send-email', {
|
|
206
|
-
detail: { request },
|
|
207
|
-
bubbles: true,
|
|
208
|
-
composed: true
|
|
209
|
-
}))
|
|
210
|
-
|
|
211
|
-
} catch (error) {
|
|
212
|
-
this.dispatchEvent(new CustomEvent('send-error', {
|
|
213
|
-
detail: { error: error instanceof Error ? error.message : 'Failed to send email' },
|
|
214
|
-
bubbles: true,
|
|
215
|
-
composed: true
|
|
216
|
-
}))
|
|
217
|
-
} finally {
|
|
218
|
-
this.isSending = false
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Public API methods for external control
|
|
223
|
-
|
|
224
|
-
/** Add recipients programmatically */
|
|
225
|
-
public addRecipients(emails: string[]) {
|
|
226
|
-
const uniqueEmails = [...new Set([...this.recipients, ...emails])]
|
|
227
|
-
const newEmails = emails.filter(email => !this.recipients.includes(email))
|
|
228
|
-
|
|
229
|
-
this.recipients = uniqueEmails
|
|
230
|
-
this.selectedRecipients = [...new Set([...this.selectedRecipients, ...newEmails])]
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/** Set email subject */
|
|
234
|
-
public setSubject(subject: string) {
|
|
235
|
-
this.subject = subject
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
/** Set email body */
|
|
239
|
-
public setBody(body: string) {
|
|
240
|
-
this.body = body
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/** Set selected template */
|
|
244
|
-
public setTemplate(templateId: string | null) {
|
|
245
|
-
this.templateId = templateId
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/** Clear all compose data */
|
|
249
|
-
public clearCompose() {
|
|
250
|
-
this.recipients = []
|
|
251
|
-
this.selectedRecipients = []
|
|
252
|
-
this.subject = ''
|
|
253
|
-
this.body = ''
|
|
254
|
-
this.templateId = null
|
|
255
|
-
this.attachments = []
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/** Set sending state */
|
|
259
|
-
public setSending(sending: boolean) {
|
|
260
|
-
this.isSending = sending
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
render() {
|
|
264
|
-
const canSend = this.selectedRecipients.length > 0 &&
|
|
265
|
-
this.subject.trim() &&
|
|
266
|
-
this.body.trim() &&
|
|
267
|
-
!this.isSending &&
|
|
268
|
-
!this.disabled
|
|
269
|
-
|
|
270
|
-
return html`
|
|
271
|
-
<!-- Main Layout Container -->
|
|
272
|
-
<div class="flex flex-col h-full gap-6 p-6">
|
|
273
|
-
|
|
274
|
-
<!-- Main Content Section: Composer and Preview -->
|
|
275
|
-
<div class="flex flex-col xl:flex-row gap-6 flex-1 min-h-0">
|
|
276
|
-
|
|
277
|
-
<!-- Composer Section - Full width on mobile/tablet, half on large screens -->
|
|
278
|
-
<div class="w-full xl:w-1/2 min-h-0 flex flex-col">
|
|
279
|
-
<schmancy-email-editor
|
|
280
|
-
.subject=${this.subject}
|
|
281
|
-
.body=${this.body}
|
|
282
|
-
.templates=${this.templates}
|
|
283
|
-
.attachments=${this.attachments}
|
|
284
|
-
.disabled=${this.disabled}
|
|
285
|
-
.config=${this.config}
|
|
286
|
-
@editor-change=${this.handleEditorChange}
|
|
287
|
-
class="h-full"
|
|
288
|
-
></schmancy-email-editor>
|
|
289
|
-
</div>
|
|
290
|
-
|
|
291
|
-
<!-- Preview Section - Full width on mobile/tablet, half on large screens -->
|
|
292
|
-
<div class="w-full xl:w-1/2 min-h-0 flex flex-col">
|
|
293
|
-
<schmancy-email-viewer
|
|
294
|
-
.subject=${this.subject}
|
|
295
|
-
.body=${this.body}
|
|
296
|
-
.recipients=${this.selectedRecipients}
|
|
297
|
-
.attachments=${this.attachments}
|
|
298
|
-
class="h-full"
|
|
299
|
-
></schmancy-email-viewer>
|
|
300
|
-
</div>
|
|
301
|
-
|
|
302
|
-
</div>
|
|
303
|
-
|
|
304
|
-
<!-- Send Section - Sticky bottom bar -->
|
|
305
|
-
<div class="shrink-0">
|
|
306
|
-
<schmancy-surface
|
|
307
|
-
type="subtle"
|
|
308
|
-
rounded="all"
|
|
309
|
-
class="p-4"
|
|
310
|
-
>
|
|
311
|
-
<div class="flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4">
|
|
312
|
-
<!-- Send Info -->
|
|
313
|
-
<div class="flex flex-col gap-1">
|
|
314
|
-
<schmancy-typography type="body" token="sm" class="font-medium">
|
|
315
|
-
${this.selectedRecipients.length} recipient${this.selectedRecipients.length === 1 ? '' : 's'} selected
|
|
316
|
-
</schmancy-typography>
|
|
317
|
-
${when(this.attachments.length > 0, () => html`
|
|
318
|
-
<schmancy-typography type="body" token="xs">
|
|
319
|
-
${this.attachments.length} attachment${this.attachments.length === 1 ? '' : 's'}
|
|
320
|
-
</schmancy-typography>
|
|
321
|
-
`)}
|
|
322
|
-
</div>
|
|
323
|
-
|
|
324
|
-
<!-- Send Button -->
|
|
325
|
-
<schmancy-button
|
|
326
|
-
variant="filled"
|
|
327
|
-
?disabled=${!canSend}
|
|
328
|
-
@click=${this.handleSend}
|
|
329
|
-
class="w-full sm:w-auto"
|
|
330
|
-
>
|
|
331
|
-
<schmancy-icon slot="prefix" size="18px">send</schmancy-icon>
|
|
332
|
-
${this.isSending ? 'Sending...' : 'Send Email'}
|
|
333
|
-
</schmancy-button>
|
|
334
|
-
</div>
|
|
335
|
-
</schmancy-surface>
|
|
336
|
-
</div>
|
|
337
|
-
|
|
338
|
-
</div>
|
|
339
|
-
|
|
340
|
-
<!-- Recipients Panel as Floating Boat -->
|
|
341
|
-
<schmancy-email-recipients
|
|
342
|
-
.recipients=${this.recipients}
|
|
343
|
-
.selectedRecipients=${this.selectedRecipients}
|
|
344
|
-
.importSources=${this.importSources}
|
|
345
|
-
.disabled=${this.disabled}
|
|
346
|
-
.enableCsvImport=${this.enableCsvImport}
|
|
347
|
-
.enableDragDrop=${this.enableDragDrop}
|
|
348
|
-
.title=${this.recipientsTitle}
|
|
349
|
-
.emptyStateTitle=${this.recipientsEmptyTitle}
|
|
350
|
-
.emptyStateMessage=${this.recipientsEmptyMessage}
|
|
351
|
-
@emails-imported=${this.handleEmailsImported}
|
|
352
|
-
@recipient-removed=${this.handleRecipientRemoved}
|
|
353
|
-
@recipients-cleared=${this.handleRecipientsCleared}
|
|
354
|
-
@selection-changed=${this.handleSelectionChanged}
|
|
355
|
-
></schmancy-email-recipients>
|
|
356
|
-
`
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
declare global {
|
|
361
|
-
interface HTMLElementTagNameMap {
|
|
362
|
-
'schmancy-mailbox': SchmancyMailbox
|
|
363
|
-
}
|
|
364
|
-
}
|
package/src/mailbox/types.ts
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mailbox component types and interfaces
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Email template definition
|
|
7
|
-
*/
|
|
8
|
-
export interface EmailTemplate {
|
|
9
|
-
id: string
|
|
10
|
-
name: string
|
|
11
|
-
subject: string
|
|
12
|
-
body: string
|
|
13
|
-
isDefault?: boolean
|
|
14
|
-
createdAt?: Date | string
|
|
15
|
-
category?: string
|
|
16
|
-
description?: string
|
|
17
|
-
thumbnail?: string
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Email attachment definition
|
|
22
|
-
*/
|
|
23
|
-
export interface EmailAttachment {
|
|
24
|
-
id: string
|
|
25
|
-
file: File
|
|
26
|
-
name: string
|
|
27
|
-
size: number
|
|
28
|
-
type: string
|
|
29
|
-
url?: string // For attachments that have been uploaded
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Configuration for email composer component
|
|
34
|
-
*/
|
|
35
|
-
export interface EmailComposeConfig {
|
|
36
|
-
/** Endpoint for sending emails */
|
|
37
|
-
sendEndpoint?: string
|
|
38
|
-
/** Endpoint for fetching templates */
|
|
39
|
-
templatesEndpoint?: string
|
|
40
|
-
/** Endpoint for uploading files */
|
|
41
|
-
uploadEndpoint?: string
|
|
42
|
-
/** Function to authenticate requests */
|
|
43
|
-
authenticateRequest?: (request: RequestInit) => RequestInit
|
|
44
|
-
/** Custom upload handler for attachments */
|
|
45
|
-
uploadHandler?: (file: File) => Promise<string>
|
|
46
|
-
/** Custom image upload handler */
|
|
47
|
-
imageUploadHandler?: (file: File) => Promise<string>
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Email send request structure
|
|
52
|
-
*/
|
|
53
|
-
export interface SendEmailRequest {
|
|
54
|
-
recipients: string[]
|
|
55
|
-
subject: string
|
|
56
|
-
body: string
|
|
57
|
-
attachments: EmailAttachment[]
|
|
58
|
-
templateId?: string | null
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* Email send response structure
|
|
63
|
-
*/
|
|
64
|
-
export interface SendEmailResponse {
|
|
65
|
-
success: boolean
|
|
66
|
-
message: string
|
|
67
|
-
campaignId?: string
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Import source definition for recipients panel
|
|
72
|
-
*/
|
|
73
|
-
export interface ImportSource {
|
|
74
|
-
id: string
|
|
75
|
-
label: string
|
|
76
|
-
icon: string
|
|
77
|
-
handler: () => void
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* CSV parsing result
|
|
82
|
-
*/
|
|
83
|
-
export interface CsvParseResult {
|
|
84
|
-
validEmails: string[]
|
|
85
|
-
invalidEmails: string[]
|
|
86
|
-
totalRows: number
|
|
87
|
-
duplicates: string[]
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Email recipient status
|
|
92
|
-
*/
|
|
93
|
-
export type EmailRecipientStatus = 'pending' | 'sent' | 'failed'
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Email recipient definition
|
|
97
|
-
*/
|
|
98
|
-
export interface EmailRecipient {
|
|
99
|
-
email: string
|
|
100
|
-
name?: string
|
|
101
|
-
status: EmailRecipientStatus
|
|
102
|
-
error?: string
|
|
103
|
-
sentAt?: Date | string
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Email campaign definition
|
|
108
|
-
*/
|
|
109
|
-
export interface EmailCampaign {
|
|
110
|
-
id?: string
|
|
111
|
-
subject: string
|
|
112
|
-
body: string
|
|
113
|
-
plainText?: string
|
|
114
|
-
recipients: EmailRecipient[]
|
|
115
|
-
status: 'draft' | 'sent' | 'failed' | 'sending'
|
|
116
|
-
createdAt?: Date | string
|
|
117
|
-
sentAt?: Date | string
|
|
118
|
-
createdBy?: string
|
|
119
|
-
templateId?: string
|
|
120
|
-
attachments?: EmailAttachment[]
|
|
121
|
-
stats?: {
|
|
122
|
-
totalRecipients: number
|
|
123
|
-
sent: number
|
|
124
|
-
failed: number
|
|
125
|
-
batches?: number
|
|
126
|
-
retries?: number
|
|
127
|
-
opened?: number
|
|
128
|
-
clicked?: number
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Mailbox state for context management
|
|
134
|
-
*/
|
|
135
|
-
export interface MailboxState {
|
|
136
|
-
campaigns: EmailCampaign[]
|
|
137
|
-
templates: EmailTemplate[]
|
|
138
|
-
loading: boolean
|
|
139
|
-
error: string | null
|
|
140
|
-
currentCampaign: Partial<EmailCampaign> | null
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Current compose state for context management
|
|
145
|
-
*/
|
|
146
|
-
export interface CurrentComposeState {
|
|
147
|
-
selectedEmails: string[]
|
|
148
|
-
subject: string
|
|
149
|
-
body: string
|
|
150
|
-
templateId: string | null
|
|
151
|
-
attachments: EmailAttachment[]
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
/**
|
|
155
|
-
* Email compose events
|
|
156
|
-
*/
|
|
157
|
-
export type EmailComposeEvents = {
|
|
158
|
-
'emails-imported': CustomEvent<{ emails: string[]; source: string }>
|
|
159
|
-
'recipient-removed': CustomEvent<{ email: string }>
|
|
160
|
-
'recipients-cleared': CustomEvent<{}>
|
|
161
|
-
'selection-changed': CustomEvent<{ selectedEmails: string[] }>
|
|
162
|
-
'compose-changed': CustomEvent<{
|
|
163
|
-
subject: string
|
|
164
|
-
body: string
|
|
165
|
-
templateId: string | null
|
|
166
|
-
attachments: EmailAttachment[]
|
|
167
|
-
}>
|
|
168
|
-
'send-email': CustomEvent<{ request: SendEmailRequest }>
|
|
169
|
-
'send-error': CustomEvent<{ error: string }>
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Boat state options for recipients panel
|
|
174
|
-
*/
|
|
175
|
-
export type BoatState = 'collapsed' | 'expanded'
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Email preview view modes
|
|
179
|
-
*/
|
|
180
|
-
export type EmailPreviewMode = 'html' | 'plaintext'
|
package/src/sheet/hook.ts
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
// @watch decorator
|
|
2
|
-
//
|
|
3
|
-
// Runs when an observed property changes, e.g. @property or @state, but before the component updates.
|
|
4
|
-
//
|
|
5
|
-
// To wait for an update to complete after a change occurs, use `await this.updateComplete` in the handler. To start
|
|
6
|
-
// watching after the initial update/render, use `{ waitUntilFirstUpdate: true }` or `this.hasUpdated` in the handler.
|
|
7
|
-
//
|
|
8
|
-
// Usage:
|
|
9
|
-
//
|
|
10
|
-
// @watch('propName')
|
|
11
|
-
// handlePropChange(oldValue, newValue) {
|
|
12
|
-
// ...
|
|
13
|
-
// }
|
|
14
|
-
//
|
|
15
|
-
interface WatchOptions {
|
|
16
|
-
waitUntilFirstUpdate?: boolean
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export function on(propName: string, options?: WatchOptions) {
|
|
20
|
-
return (protoOrDescriptor: any, name: string): any => {
|
|
21
|
-
const { willUpdate } = protoOrDescriptor
|
|
22
|
-
|
|
23
|
-
options = Object.assign({ waitUntilFirstUpdate: false }, options) as WatchOptions
|
|
24
|
-
|
|
25
|
-
protoOrDescriptor.willUpdate = function (changedProps: Map<string, any>) {
|
|
26
|
-
willUpdate.call(this, changedProps)
|
|
27
|
-
|
|
28
|
-
if (changedProps.has(propName)) {
|
|
29
|
-
const oldValue = changedProps.get(propName)
|
|
30
|
-
const newValue = this[propName]
|
|
31
|
-
|
|
32
|
-
if (oldValue !== newValue) {
|
|
33
|
-
if (!options?.waitUntilFirstUpdate || this.hasUpdated) {
|
|
34
|
-
this[name](oldValue, newValue)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
package/src/sheet/index.ts
DELETED