@mhmo91/schmancy 0.4.72 → 0.4.74
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/ai/area.md +525 -108
- package/ai/busy.md +2 -1
- package/ai/button.md +4 -0
- package/ai/code-highlight.md +2 -1
- package/ai/content-drawer.md +2 -1
- package/ai/context.md +7 -2
- package/ai/countries.md +2 -1
- package/ai/date-range-inline.md +262 -0
- package/ai/date-range.md +2 -1
- package/ai/details.md +194 -0
- package/ai/dialog.md +2 -1
- package/ai/directives.md +2 -1
- package/ai/form.md +10 -10
- package/ai/list.md +10 -9
- package/ai/mailbox.md +530 -0
- package/ai/map.md +2 -1
- package/ai/notification.md +14 -12
- package/ai/payment-card-form.md +2 -1
- package/ai/sheet.md +6 -4
- package/ai/steps.md +193 -9
- package/ai/store.md +8 -4
- package/ai/surface.md +2 -1
- package/ai/teleport.md +2 -1
- package/ai/theme.md +690 -8
- package/ai/timezone.md +2 -1
- package/ai/typography.md +2 -1
- package/dist/ai/area.md +525 -108
- package/dist/ai/busy.md +2 -1
- package/dist/ai/button.md +4 -0
- package/dist/ai/code-highlight.md +2 -1
- package/dist/ai/content-drawer.md +2 -1
- package/dist/ai/context.md +7 -2
- package/dist/ai/countries.md +2 -1
- package/dist/ai/date-range-inline.md +262 -0
- package/dist/ai/date-range.md +2 -1
- package/dist/ai/details.md +194 -0
- package/dist/ai/dialog.md +2 -1
- package/dist/ai/directives.md +2 -1
- package/dist/ai/form.md +10 -10
- package/dist/ai/list.md +10 -9
- package/dist/ai/mailbox.md +530 -0
- package/dist/ai/map.md +2 -1
- package/dist/ai/notification.md +14 -12
- package/dist/ai/payment-card-form.md +2 -1
- package/dist/ai/sheet.md +6 -4
- package/dist/ai/steps.md +193 -9
- package/dist/ai/store.md +8 -4
- package/dist/ai/surface.md +2 -1
- package/dist/ai/teleport.md +2 -1
- package/dist/ai/theme.md +690 -8
- package/dist/ai/timezone.md +2 -1
- package/dist/ai/typography.md +2 -1
- package/dist/{animated-text-CBOMltQE.js → animated-text-CqpyC7Y0.js} +3 -3
- package/dist/{animated-text-CBOMltQE.js.map → animated-text-CqpyC7Y0.js.map} +1 -1
- package/dist/{animated-text-rE-SkQgz.cjs → animated-text-DlRt6Q09.cjs} +2 -2
- package/dist/{animated-text-rE-SkQgz.cjs.map → animated-text-DlRt6Q09.cjs.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +14 -13
- package/dist/{autocomplete-BAcf_l63.js → autocomplete-B-oKMH7m.js} +3 -3
- package/dist/{autocomplete-BAcf_l63.js.map → autocomplete-B-oKMH7m.js.map} +1 -1
- package/dist/{autocomplete-CuO8ztL4.cjs → autocomplete-BOGG_9iL.cjs} +2 -2
- package/dist/{autocomplete-CuO8ztL4.cjs.map → autocomplete-BOGG_9iL.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-D3gNBale.js → avatar-U5IpwJuj.js} +70 -71
- package/dist/avatar-U5IpwJuj.js.map +1 -0
- package/dist/{avatar-N3BODeY1.cjs → avatar-qkIAB2cX.cjs} +3 -3
- package/dist/avatar-qkIAB2cX.cjs.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-BQoWbDxu.js → boat-CdR5Pqik.js} +2 -2
- package/dist/{boat-BQoWbDxu.js.map → boat-CdR5Pqik.js.map} +1 -1
- package/dist/{boat-CWXlAq65.cjs → boat-DMKcZpZb.cjs} +2 -2
- package/dist/{boat-CWXlAq65.cjs.map → boat-DMKcZpZb.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +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.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-DBO-neG5.js → checkbox-CVwU3M4h.js} +2 -2
- package/dist/{checkbox-DBO-neG5.js.map → checkbox-CVwU3M4h.js.map} +1 -1
- package/dist/{checkbox-DIYmuPtk.cjs → checkbox-DP_zX786.cjs} +2 -2
- package/dist/{checkbox-DIYmuPtk.cjs.map → checkbox-DP_zX786.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BYE5hQQr.cjs → chips-BuMUH3zA.cjs} +2 -2
- package/dist/{chips-BYE5hQQr.cjs.map → chips-BuMUH3zA.cjs.map} +1 -1
- package/dist/{chips-C_7proIN.js → chips-DcCUwYBu.js} +3 -3
- package/dist/{chips-C_7proIN.js.map → chips-DcCUwYBu.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-CQ-EAz9F.js → code-preview-CIXEd04f.js} +2 -2
- package/dist/{code-preview-CQ-EAz9F.js.map → code-preview-CIXEd04f.js.map} +1 -1
- package/dist/{code-preview-CzcyBpl-.cjs → code-preview-CdCzzZTX.cjs} +2 -2
- package/dist/{code-preview-CzcyBpl-.cjs.map → code-preview-CdCzzZTX.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{context-object-K_1gDFu-.cjs → context-object-bNADqf9U.cjs} +2 -2
- package/dist/{context-object-K_1gDFu-.cjs.map → context-object-bNADqf9U.cjs.map} +1 -1
- package/dist/{context-object-CDDP4bTk.js → context-object-u5gBaozZ.js} +46 -32
- package/dist/{context-object-CDDP4bTk.js.map → context-object-u5gBaozZ.js.map} +1 -1
- package/dist/{date-range-DCghMsV8.cjs → date-range-CvD9zwK9.cjs} +2 -2
- package/dist/{date-range-DCghMsV8.cjs.map → date-range-CvD9zwK9.cjs.map} +1 -1
- package/dist/{date-range-inline-JgIiOHQM.js → date-range-inline-5QP9av94.js} +3 -3
- package/dist/{date-range-inline-JgIiOHQM.js.map → date-range-inline-5QP9av94.js.map} +1 -1
- package/dist/{date-range-inline-Z0ASWN4I.cjs → date-range-inline-CP_a_w01.cjs} +2 -2
- package/dist/{date-range-inline-Z0ASWN4I.cjs.map → date-range-inline-CP_a_w01.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-WqwMEh16.js → date-range-lJ_fPY4v.js} +4 -4
- package/dist/{date-range-WqwMEh16.js.map → date-range-lJ_fPY4v.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-LnWlFwkK.js → delay-BM1jk7XF.js} +2 -2
- package/dist/delay-BM1jk7XF.js.map +1 -0
- package/dist/{delay-Ew4cphs1.cjs → delay-CB0Wohe7.cjs} +2 -2
- package/dist/delay-CB0Wohe7.cjs.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-BVEV0hUx.js → details-B9JrXrCO.js} +2 -2
- package/dist/{details-BVEV0hUx.js.map → details-B9JrXrCO.js.map} +1 -1
- package/dist/{details-C01m-iWQ.cjs → details-C22WoRWP.cjs} +2 -2
- package/dist/{details-C01m-iWQ.cjs.map → details-C22WoRWP.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-B_w_iJyW.js → dialog-content-BHR9cUJ-.js} +4 -4
- package/dist/{dialog-content-B_w_iJyW.js.map → dialog-content-BHR9cUJ-.js.map} +1 -1
- package/dist/{dialog-content-BFmy9Sbo.cjs → dialog-content-CpxWMPlh.cjs} +2 -2
- package/dist/{dialog-content-BFmy9Sbo.cjs.map → dialog-content-CpxWMPlh.cjs.map} +1 -1
- package/dist/{dialog-service-DwJ_7FB3.js → dialog-service-DwhuICgc.js} +2 -2
- package/dist/dialog-service-DwhuICgc.js.map +1 -0
- package/dist/dialog-service-juvsgc5X.cjs +2 -0
- package/dist/dialog-service-juvsgc5X.cjs.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/{divider-FkKYlJY3.js → divider-Cz4g_Ept.js} +3 -3
- package/dist/{divider-FkKYlJY3.js.map → divider-Cz4g_Ept.js.map} +1 -1
- package/dist/{divider-BWG6TAr2.cjs → divider-DAg0oW4T.cjs} +2 -2
- package/dist/{divider-BWG6TAr2.cjs.map → divider-DAg0oW4T.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-BStJGihR.js → dropdown-content-Bto1swKT.js} +3 -3
- package/dist/{dropdown-content-BStJGihR.js.map → dropdown-content-Bto1swKT.js.map} +1 -1
- package/dist/{dropdown-content-m1aSF-Oh.cjs → dropdown-content-QvR9QvT0.cjs} +2 -2
- package/dist/{dropdown-content-m1aSF-Oh.cjs.map → dropdown-content-QvR9QvT0.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-CpghUhQ1.js → email-recipients-C9Yx0eML.js} +7 -7
- package/dist/{email-recipients-CpghUhQ1.js.map → email-recipients-C9Yx0eML.js.map} +1 -1
- package/dist/{email-recipients-CbZNnzoj.cjs → email-recipients-aEI5Hz1y.cjs} +2 -2
- package/dist/{email-recipients-CbZNnzoj.cjs.map → email-recipients-aEI5Hz1y.cjs.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-C6yj5Sxi.js → flex-8Zt64KfZ.js} +2 -2
- package/dist/{flex-C6yj5Sxi.js.map → flex-8Zt64KfZ.js.map} +1 -1
- package/dist/{flex-BNVtJlgu.cjs → flex-BWZv2xik.cjs} +2 -2
- package/dist/{flex-BNVtJlgu.cjs.map → flex-BWZv2xik.cjs.map} +1 -1
- package/dist/{form-ns7c4fcj.cjs → form-BH43OMu3.cjs} +2 -2
- package/dist/{form-ns7c4fcj.cjs.map → form-BH43OMu3.cjs.map} +1 -1
- package/dist/{form-C85Qev2L.js → form-DeoSuBtM.js} +2 -2
- package/dist/{form-C85Qev2L.js.map → form-DeoSuBtM.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-CKb_MTS7.js → formField.mixin-BaPL0TYo.js} +2 -2
- package/dist/{formField.mixin-CKb_MTS7.js.map → formField.mixin-BaPL0TYo.js.map} +1 -1
- package/dist/{formField.mixin-B3CXBJKX.cjs → formField.mixin-Dta3OeAY.cjs} +2 -2
- package/dist/{formField.mixin-B3CXBJKX.cjs.map → formField.mixin-Dta3OeAY.cjs.map} +1 -1
- package/dist/{icon-DKPLcbdu.js → icon-B0JNrBfq.js} +2 -2
- package/dist/{icon-DKPLcbdu.js.map → icon-B0JNrBfq.js.map} +1 -1
- package/dist/{icon-DUstfLaC.cjs → icon-DY2pBLIU.cjs} +2 -2
- package/dist/{icon-DUstfLaC.cjs.map → icon-DY2pBLIU.cjs.map} +1 -1
- package/dist/{icon-button-DiRex-eZ.cjs → icon-button-D1GjgM8z.cjs} +2 -2
- package/dist/{icon-button-DiRex-eZ.cjs.map → icon-button-D1GjgM8z.cjs.map} +1 -1
- package/dist/{icon-button-CIkRej0r.js → icon-button-OZM1xg0D.js} +3 -3
- package/dist/{icon-button-CIkRej0r.js.map → icon-button-OZM1xg0D.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index-CCi1otmh.cjs +2 -0
- package/dist/{index-DyJ0oDpR.cjs.map → index-CCi1otmh.cjs.map} +1 -1
- package/dist/index-CW6PhEkx.js +17 -0
- package/dist/{index-CuY8m6ta.js.map → index-CW6PhEkx.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +221 -218
- package/dist/index.js.map +1 -1
- package/dist/{input-DODcsAZu.js → input-CkvjCut5.js} +3 -3
- package/dist/{input-DODcsAZu.js.map → input-CkvjCut5.js.map} +1 -1
- package/dist/{input-B7MqsI2h.cjs → input-lUWuO40Q.cjs} +2 -2
- package/dist/{input-B7MqsI2h.cjs.map → input-lUWuO40Q.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-Cx6tpiFE.js → list-5rw56k73.js} +2 -2
- package/dist/{list-Cx6tpiFE.js.map → list-5rw56k73.js.map} +1 -1
- package/dist/{list-DxduK4sb.cjs → list-CIt75CB5.cjs} +2 -2
- package/dist/{list-DxduK4sb.cjs.map → list-CIt75CB5.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B12Y4mEr.cjs → litElement.mixin-BLa7fWsS.cjs} +2 -2
- package/dist/{litElement.mixin-B12Y4mEr.cjs.map → litElement.mixin-BLa7fWsS.cjs.map} +1 -1
- package/dist/{litElement.mixin-BZ8iGvPl.js → litElement.mixin-BZErt4H3.js} +2 -2
- package/dist/{litElement.mixin-BZ8iGvPl.js.map → litElement.mixin-BZErt4H3.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-sgCf8pYD.cjs → map-BY_0W4ER.cjs} +2 -2
- package/dist/{map-sgCf8pYD.cjs.map → map-BY_0W4ER.cjs.map} +1 -1
- package/dist/{map-dT8yp1iK.js → map-BrguuFGa.js} +2 -2
- package/dist/{map-dT8yp1iK.js.map → map-BrguuFGa.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CgH0D5rY.js → media-CLz2t5zS.js} +2 -2
- package/dist/{media-CgH0D5rY.js.map → media-CLz2t5zS.js.map} +1 -1
- package/dist/{media-CwjupDLj.cjs → media-D6ZtvTjC.cjs} +2 -2
- package/dist/{media-CwjupDLj.cjs.map → media-D6ZtvTjC.cjs.map} +1 -1
- package/dist/{menu-oZRtmhVd.js → menu-CgDSJpDV.js} +3 -3
- package/dist/{menu-oZRtmhVd.js.map → menu-CgDSJpDV.js.map} +1 -1
- package/dist/{menu-X25Q7tpY.cjs → menu-DWD_IywE.cjs} +2 -2
- package/dist/{menu-X25Q7tpY.cjs.map → menu-DWD_IywE.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-y0T4rXdS.js → notification-service-1HGYK2tM.js} +4 -4
- package/dist/notification-service-1HGYK2tM.js.map +1 -0
- package/dist/{notification-service-kLTt3JtW.cjs → notification-service-A3reAJZQ.cjs} +2 -2
- package/dist/notification-service-A3reAJZQ.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-BnjvURrc.js → notify-Bt-KiLeP.js} +2 -2
- package/dist/{notify-BnjvURrc.js.map → notify-Bt-KiLeP.js.map} +1 -1
- package/dist/{notify-EGStToeW.cjs → notify-CVbsMt75.cjs} +2 -2
- package/dist/{notify-EGStToeW.cjs.map → notify-CVbsMt75.cjs.map} +1 -1
- package/dist/{option-D4_WBCWz.cjs → option-Cd0TxMBE.cjs} +2 -2
- package/dist/{option-D4_WBCWz.cjs.map → option-Cd0TxMBE.cjs.map} +1 -1
- package/dist/{option-CD1NSUXu.js → option-DvSZ0D0R.js} +2 -2
- package/dist/{option-CD1NSUXu.js.map → option-DvSZ0D0R.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-lWlhuDb3.js → payment-card-form-C6wrIT_X.js} +3 -3
- package/dist/{payment-card-form-lWlhuDb3.js.map → payment-card-form-C6wrIT_X.js.map} +1 -1
- package/dist/{payment-card-form-96Rw6cLf.cjs → payment-card-form-CJkWQ3j4.cjs} +2 -2
- package/dist/{payment-card-form-96Rw6cLf.cjs.map → payment-card-form-CJkWQ3j4.cjs.map} +1 -1
- package/dist/{progress-BkxGzGOm.cjs → progress-D0iWLtHk.cjs} +2 -2
- package/dist/{progress-BkxGzGOm.cjs.map → progress-D0iWLtHk.cjs.map} +1 -1
- package/dist/{progress-DGk9tC4y.js → progress-pOL6OHwT.js} +2 -2
- package/dist/{progress-DGk9tC4y.js.map → progress-pOL6OHwT.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-DHM38A7h.js → radio-button-C-t6JJsj.js} +3 -3
- package/dist/{radio-button-DHM38A7h.js.map → radio-button-C-t6JJsj.js.map} +1 -1
- package/dist/{radio-button-w9ZxzEPa.cjs → radio-button-CSV7-ftB.cjs} +2 -2
- package/dist/{radio-button-w9ZxzEPa.cjs.map → radio-button-CSV7-ftB.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/route.component-DaBx0B3g.cjs +12 -0
- package/dist/route.component-DaBx0B3g.cjs.map +1 -0
- package/dist/route.component-DlVlAMWF.js +341 -0
- package/dist/route.component-DlVlAMWF.js.map +1 -0
- package/dist/rxjs-utils.cjs +1 -1
- package/dist/rxjs-utils.js +1 -1
- package/dist/{schmancy-steps-container-WYO4SOrb.js → schmancy-steps-container-AIJ2_ZSN.js} +12 -12
- package/dist/schmancy-steps-container-AIJ2_ZSN.js.map +1 -0
- package/dist/{schmancy-steps-container-CPSL_8H0.cjs → schmancy-steps-container-CgzGlBCk.cjs} +6 -6
- package/dist/schmancy-steps-container-CgzGlBCk.cjs.map +1 -0
- package/dist/{select-bDAzyQOZ.js → select-CwJ4OuVo.js} +3 -3
- package/dist/{select-bDAzyQOZ.js.map → select-CwJ4OuVo.js.map} +1 -1
- package/dist/{select-CxCcgqW_.cjs → select-GBaqnfMC.cjs} +2 -2
- package/dist/{select-CxCcgqW_.cjs.map → select-GBaqnfMC.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{selector-hook-CIpuCUbr.js → selector-hook-ChImS_JT.js} +2 -2
- package/dist/{selector-hook-CIpuCUbr.js.map → selector-hook-ChImS_JT.js.map} +1 -1
- package/dist/{selector-hook-DB8RFC1y.cjs → selector-hook-cqmAutda.cjs} +2 -2
- package/dist/{selector-hook-DB8RFC1y.cjs.map → selector-hook-cqmAutda.cjs.map} +1 -1
- package/dist/{sheet-Bm0ukLXt.cjs → sheet-CXd47YKG.cjs} +2 -2
- package/dist/{sheet-Bm0ukLXt.cjs.map → sheet-CXd47YKG.cjs.map} +1 -1
- package/dist/{sheet-pO6PmiAf.js → sheet-fT1oxKgG.js} +4 -4
- package/dist/{sheet-pO6PmiAf.js.map → sheet-fT1oxKgG.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/sheet.service-BxvWBGsJ.cjs +2 -0
- package/dist/sheet.service-BxvWBGsJ.cjs.map +1 -0
- package/dist/{sheet.service-ieSXeqCj.js → sheet.service-lXqUf6n5.js} +2 -2
- package/dist/sheet.service-lXqUf6n5.js.map +1 -0
- package/dist/{slider-CxZGMYF-.js → slider-CYsku-3b.js} +3 -3
- package/dist/{slider-CxZGMYF-.js.map → slider-CYsku-3b.js.map} +1 -1
- package/dist/{slider-BwXXp74f.cjs → slider-DxSzFbQe.cjs} +2 -2
- package/dist/{slider-BwXXp74f.cjs.map → slider-DxSzFbQe.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-b3VWC6It.js → spinner-CrK1E8LD.js} +2 -2
- package/dist/{spinner-b3VWC6It.js.map → spinner-CrK1E8LD.js.map} +1 -1
- package/dist/{spinner-nN77H00p.cjs → spinner-DrG_NQpx.cjs} +2 -2
- package/dist/{spinner-nN77H00p.cjs.map → spinner-DrG_NQpx.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/store.cjs +1 -1
- package/dist/store.js +2 -2
- package/dist/{surface-C2WjztRc.js → surface-C64YekDh.js} +2 -2
- package/dist/{surface-C2WjztRc.js.map → surface-C64YekDh.js.map} +1 -1
- package/dist/{surface-Cm8zYK5d.cjs → surface-DVNi8l6T.cjs} +2 -2
- package/dist/{surface-Cm8zYK5d.cjs.map → surface-DVNi8l6T.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-BfhuaB9J.cjs → table-B3WKGYlu.cjs} +2 -2
- package/dist/{table-BfhuaB9J.cjs.map → table-B3WKGYlu.cjs.map} +1 -1
- package/dist/{table-Dp7npAuy.js → table-DmrYZ1hR.js} +2 -2
- package/dist/{table-Dp7npAuy.js.map → table-DmrYZ1hR.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-CA-wWRoe.cjs → tabs-compatibility-Ds7SEeST.cjs} +2 -2
- package/dist/{tabs-compatibility-CA-wWRoe.cjs.map → tabs-compatibility-Ds7SEeST.cjs.map} +1 -1
- package/dist/{tabs-compatibility-U4cq8X3I.js → tabs-compatibility-Uetjk25R.js} +2 -2
- package/dist/{tabs-compatibility-U4cq8X3I.js.map → tabs-compatibility-Uetjk25R.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-B6ADeWOc.js +43 -0
- package/dist/{tailwind.mixin-D2DVHS9V.js.map → tailwind.mixin-B6ADeWOc.js.map} +1 -1
- package/dist/tailwind.mixin-df9KoZ9x.cjs +2 -0
- package/dist/{tailwind.mixin-BlZIIaOE.cjs.map → tailwind.mixin-df9KoZ9x.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BRNj3tvi.js → textarea-B1Tng7F9.js} +2 -2
- package/dist/{textarea-BRNj3tvi.js.map → textarea-B1Tng7F9.js.map} +1 -1
- package/dist/{textarea-CxZKoXaU.cjs → textarea-QKNA3oAQ.cjs} +2 -2
- package/dist/{textarea-CxZKoXaU.cjs.map → textarea-QKNA3oAQ.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-N_Wt3bos.js → theme-button-CYEhS3ub.js} +2 -2
- package/dist/{theme-button-N_Wt3bos.js.map → theme-button-CYEhS3ub.js.map} +1 -1
- package/dist/{theme-button-MrIoOFEB.cjs → theme-button-CoCFS3Rx.cjs} +2 -2
- package/dist/{theme-button-MrIoOFEB.cjs.map → theme-button-CoCFS3Rx.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.component-C12jLwtB.cjs +3 -0
- package/dist/theme.component-C12jLwtB.cjs.map +1 -0
- package/dist/{theme.component-6VfET_t-.js → theme.component-Df731_fn.js} +247 -171
- package/dist/theme.component-Df731_fn.js.map +1 -0
- package/dist/theme.events-CPSLaOlR.js +6 -0
- package/dist/theme.events-CPSLaOlR.js.map +1 -0
- package/dist/theme.events-Car6U_SQ.cjs +2 -0
- package/dist/theme.events-Car6U_SQ.cjs.map +1 -0
- package/dist/theme.interface-C5Kj6WjD.js.map +1 -1
- package/dist/theme.interface-Xg5Zi46a.cjs.map +1 -1
- package/dist/theme.js +9 -7
- package/dist/theme.js.map +1 -1
- package/dist/{timezone-BVd9UEba.cjs → timezone-B7bscKFN.cjs} +2 -2
- package/dist/{timezone-BVd9UEba.cjs.map → timezone-B7bscKFN.cjs.map} +1 -1
- package/dist/{timezone-DR_4m9Cc.js → timezone-CdtCVjMF.js} +3 -3
- package/dist/{timezone-DR_4m9Cc.js.map → timezone-CdtCVjMF.js.map} +1 -1
- package/dist/{tooltip-DOQVLRaH.cjs → tooltip-CjoNCIvr.cjs} +2 -2
- package/dist/{tooltip-DOQVLRaH.cjs.map → tooltip-CjoNCIvr.cjs.map} +1 -1
- package/dist/{tooltip-BpPHc8Wr.js → tooltip-JVkexTyf.js} +2 -2
- package/dist/{tooltip-BpPHc8Wr.js.map → tooltip-JVkexTyf.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-BANkyLn7.cjs → tree-Be48ABq4.cjs} +2 -2
- package/dist/{tree-BANkyLn7.cjs.map → tree-Be48ABq4.cjs.map} +1 -1
- package/dist/{tree-C5zu8wXc.js → tree-CaqiNcJJ.js} +2 -2
- package/dist/{tree-C5zu8wXc.js.map → tree-CaqiNcJJ.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-CdztqkoR.js → typewriter-CoMrmwFJ.js} +8 -8
- package/dist/{typewriter-CdztqkoR.js.map → typewriter-CoMrmwFJ.js.map} +1 -1
- package/dist/{typewriter-DS0D0UZM.cjs → typewriter-DCYDScE9.cjs} +2 -2
- package/dist/{typewriter-DS0D0UZM.cjs.map → typewriter-DCYDScE9.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-C8vZfuLF.cjs → typography-BQg6J2hD.cjs} +2 -2
- package/dist/{typography-C8vZfuLF.cjs.map → typography-BQg6J2hD.cjs.map} +1 -1
- package/dist/{typography-o9FJ6Lzo.js → typography-DkJagEoF.js} +2 -2
- package/dist/{typography-o9FJ6Lzo.js.map → typography-DkJagEoF.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/area/area.component.d.ts +25 -5
- package/types/src/area/index.d.ts +1 -0
- package/types/src/area/route.component.d.ts +43 -0
- package/types/src/area/route.test.d.ts +20 -0
- package/types/src/steps/schmancy-steps-container.d.ts +9 -0
- package/types/src/store/context-collection.d.ts +26 -2
- package/types/src/theme/context.d.ts +24 -0
- package/types/src/theme/index.d.ts +2 -0
- package/types/src/theme/theme.component.d.ts +49 -6
- package/types/src/theme/theme.events.d.ts +55 -0
- package/types/src/theme/theme.interface.d.ts +36 -0
- package/types/src/theme/theme.service.d.ts +261 -0
- package/dist/area.component-C86pi_TT.js +0 -283
- package/dist/area.component-C86pi_TT.js.map +0 -1
- package/dist/area.component-nX_dCv4R.cjs +0 -8
- package/dist/area.component-nX_dCv4R.cjs.map +0 -1
- package/dist/avatar-D3gNBale.js.map +0 -1
- package/dist/avatar-N3BODeY1.cjs.map +0 -1
- package/dist/delay-Ew4cphs1.cjs.map +0 -1
- package/dist/delay-LnWlFwkK.js.map +0 -1
- package/dist/dialog-service-DS-aEjlX.cjs +0 -2
- package/dist/dialog-service-DS-aEjlX.cjs.map +0 -1
- package/dist/dialog-service-DwJ_7FB3.js.map +0 -1
- package/dist/index-CuY8m6ta.js +0 -19
- package/dist/index-DyJ0oDpR.cjs +0 -2
- package/dist/notification-service-kLTt3JtW.cjs.map +0 -1
- package/dist/notification-service-y0T4rXdS.js.map +0 -1
- package/dist/schmancy-steps-container-CPSL_8H0.cjs.map +0 -1
- package/dist/schmancy-steps-container-WYO4SOrb.js.map +0 -1
- package/dist/sheet.service-DV9xNhS8.cjs +0 -2
- package/dist/sheet.service-DV9xNhS8.cjs.map +0 -1
- package/dist/sheet.service-ieSXeqCj.js.map +0 -1
- package/dist/tailwind.mixin-BlZIIaOE.cjs +0 -2
- package/dist/tailwind.mixin-D2DVHS9V.js +0 -43
- package/dist/theme.component-6VfET_t-.js.map +0 -1
- package/dist/theme.component-B_EubPsq.cjs +0 -3
- package/dist/theme.component-B_EubPsq.cjs.map +0 -1
package/dist/ai/list.md
CHANGED
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
@click=${handleClick}>
|
|
29
29
|
|
|
30
30
|
<!-- Content structure -->
|
|
31
|
-
<div slot="
|
|
31
|
+
<div slot="leading">
|
|
32
32
|
<schmancy-icon icon="home"></schmancy-icon>
|
|
33
33
|
</div>
|
|
34
34
|
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<div>Secondary Text</div>
|
|
38
38
|
</div>
|
|
39
39
|
|
|
40
|
-
<div slot="
|
|
40
|
+
<div slot="trailing">
|
|
41
41
|
<schmancy-badge>42</schmancy-badge>
|
|
42
42
|
</div>
|
|
43
43
|
</schmancy-list-item>
|
|
@@ -48,7 +48,8 @@
|
|
|
48
48
|
|
|
49
49
|
// List Context
|
|
50
50
|
// For creating controlled lists and handling selection
|
|
51
|
-
import { ListContext } from 'schmancy/
|
|
51
|
+
import { ListContext } from '@schmancy/index';
|
|
52
|
+
// Or specific import: import { ListContext } from '@schmancy/list';
|
|
52
53
|
|
|
53
54
|
const listContext = new ListContext({
|
|
54
55
|
selectable: true, // Enable selection
|
|
@@ -61,15 +62,15 @@ const listContext = new ListContext({
|
|
|
61
62
|
// Simple navigation list
|
|
62
63
|
<schmancy-list interactive>
|
|
63
64
|
<schmancy-list-item>
|
|
64
|
-
<schmancy-icon slot="
|
|
65
|
+
<schmancy-icon slot="leading" icon="home"></schmancy-icon>
|
|
65
66
|
Dashboard
|
|
66
67
|
</schmancy-list-item>
|
|
67
68
|
<schmancy-list-item>
|
|
68
|
-
<schmancy-icon slot="
|
|
69
|
+
<schmancy-icon slot="leading" icon="settings"></schmancy-icon>
|
|
69
70
|
Settings
|
|
70
71
|
</schmancy-list-item>
|
|
71
72
|
<schmancy-list-item>
|
|
72
|
-
<schmancy-icon slot="
|
|
73
|
+
<schmancy-icon slot="leading" icon="person"></schmancy-icon>
|
|
73
74
|
Profile
|
|
74
75
|
</schmancy-list-item>
|
|
75
76
|
</schmancy-list>
|
|
@@ -91,7 +92,7 @@ const listContext = new ListContext({
|
|
|
91
92
|
<div>Item Two</div>
|
|
92
93
|
<div>Description for item two</div>
|
|
93
94
|
</div>
|
|
94
|
-
<div slot="
|
|
95
|
+
<div slot="trailing">
|
|
95
96
|
<schmancy-badge>New</schmancy-badge>
|
|
96
97
|
</div>
|
|
97
98
|
</schmancy-list-item>
|
|
@@ -109,7 +110,7 @@ const listContext = new ListContext({
|
|
|
109
110
|
${items.map(item => html`
|
|
110
111
|
<schmancy-list-item value=${item.id}>
|
|
111
112
|
${item.icon ? html`
|
|
112
|
-
<schmancy-icon slot="
|
|
113
|
+
<schmancy-icon slot="leading" icon=${item.icon}></schmancy-icon>
|
|
113
114
|
` : ''}
|
|
114
115
|
|
|
115
116
|
<div slot="main">
|
|
@@ -118,7 +119,7 @@ const listContext = new ListContext({
|
|
|
118
119
|
</div>
|
|
119
120
|
|
|
120
121
|
${item.badge ? html`
|
|
121
|
-
<div slot="
|
|
122
|
+
<div slot="trailing">
|
|
122
123
|
<schmancy-badge>${item.badge}</schmancy-badge>
|
|
123
124
|
</div>
|
|
124
125
|
` : ''}
|
|
@@ -0,0 +1,530 @@
|
|
|
1
|
+
# Schmancy Mailbox - AI Reference
|
|
2
|
+
|
|
3
|
+
```js
|
|
4
|
+
// Import
|
|
5
|
+
import '@schmancy/index' // For all Schmancy components
|
|
6
|
+
// Or specific import: import '@schmancy/mailbox'
|
|
7
|
+
|
|
8
|
+
// Main Mailbox Component
|
|
9
|
+
<schmancy-mailbox
|
|
10
|
+
.config="${emailConfig}" // Email configuration
|
|
11
|
+
.templates="${emailTemplates}" // Available email templates
|
|
12
|
+
.importSources="${recipientSources}" // Recipient import sources
|
|
13
|
+
disabled? // Disable all interactions
|
|
14
|
+
recipientsTitle="Recipients" // Recipients panel title
|
|
15
|
+
recipientsEmptyTitle="No recipients yet" // Empty state title
|
|
16
|
+
recipientsEmptyMessage="Import or upload CSV" // Empty state message
|
|
17
|
+
enableCsvImport? // Enable CSV import (default: true)
|
|
18
|
+
enableDragDrop? // Enable drag and drop (default: true)
|
|
19
|
+
@email-sent=${handleEmailSent} // Email sent successfully
|
|
20
|
+
@email-error=${handleEmailError}> // Email send error
|
|
21
|
+
</schmancy-mailbox>
|
|
22
|
+
|
|
23
|
+
// Supporting Components
|
|
24
|
+
<schmancy-email-editor // Rich text email editor
|
|
25
|
+
content="${emailBody}"
|
|
26
|
+
@content-change=${handleContentChange}>
|
|
27
|
+
</schmancy-email-editor>
|
|
28
|
+
|
|
29
|
+
<schmancy-email-viewer // Email preview
|
|
30
|
+
.emailData="${emailData}">
|
|
31
|
+
</schmancy-email-viewer>
|
|
32
|
+
|
|
33
|
+
<schmancy-email-recipients // Recipients management
|
|
34
|
+
.recipients="${recipients}"
|
|
35
|
+
.importSources="${sources}"
|
|
36
|
+
@recipients-change=${handleRecipientsChange}>
|
|
37
|
+
</schmancy-email-recipients>
|
|
38
|
+
|
|
39
|
+
<schmancy-email-layout-selector // Template selection
|
|
40
|
+
.templates="${templates}"
|
|
41
|
+
@template-select=${handleTemplateSelect}>
|
|
42
|
+
</schmancy-email-layout-selector>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Configuration
|
|
46
|
+
|
|
47
|
+
### Email Configuration Object
|
|
48
|
+
```typescript
|
|
49
|
+
const emailConfig: EmailComposeConfig = {
|
|
50
|
+
sendEndpoint: '/api/send-email',
|
|
51
|
+
templatesEndpoint: '/api/templates',
|
|
52
|
+
uploadEndpoint: '/api/upload',
|
|
53
|
+
authenticateRequest: (request) => ({
|
|
54
|
+
...request,
|
|
55
|
+
headers: {
|
|
56
|
+
...request.headers,
|
|
57
|
+
'Authorization': `Bearer ${getAuthToken()}`
|
|
58
|
+
}
|
|
59
|
+
}),
|
|
60
|
+
uploadHandler: async (file) => {
|
|
61
|
+
// Custom file upload logic
|
|
62
|
+
const formData = new FormData()
|
|
63
|
+
formData.append('file', file)
|
|
64
|
+
const response = await fetch('/api/upload', {
|
|
65
|
+
method: 'POST',
|
|
66
|
+
body: formData
|
|
67
|
+
})
|
|
68
|
+
const result = await response.json()
|
|
69
|
+
return result.url
|
|
70
|
+
},
|
|
71
|
+
imageUploadHandler: async (file) => {
|
|
72
|
+
// Custom image upload for email content
|
|
73
|
+
return await uploadToImageService(file)
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Data Types
|
|
79
|
+
|
|
80
|
+
### Email Template
|
|
81
|
+
```typescript
|
|
82
|
+
interface EmailTemplate {
|
|
83
|
+
id: string
|
|
84
|
+
name: string
|
|
85
|
+
subject: string
|
|
86
|
+
body: string
|
|
87
|
+
isDefault?: boolean
|
|
88
|
+
createdAt?: Date | string
|
|
89
|
+
category?: string
|
|
90
|
+
description?: string
|
|
91
|
+
thumbnail?: string
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Email Attachment
|
|
96
|
+
```typescript
|
|
97
|
+
interface EmailAttachment {
|
|
98
|
+
id: string
|
|
99
|
+
file: File
|
|
100
|
+
name: string
|
|
101
|
+
size: number
|
|
102
|
+
type: string
|
|
103
|
+
url?: string // For uploaded attachments
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Import Source
|
|
108
|
+
```typescript
|
|
109
|
+
interface ImportSource {
|
|
110
|
+
id: string
|
|
111
|
+
label: string
|
|
112
|
+
icon: string
|
|
113
|
+
handler: () => void
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Usage Examples
|
|
118
|
+
|
|
119
|
+
### Basic Email Composer
|
|
120
|
+
```html
|
|
121
|
+
<schmancy-mailbox
|
|
122
|
+
.config="${{
|
|
123
|
+
sendEndpoint: '/api/emails/send'
|
|
124
|
+
}}"
|
|
125
|
+
.templates="${emailTemplates}"
|
|
126
|
+
@email-sent=${this.handleEmailSent}
|
|
127
|
+
@email-error=${this.handleEmailError}>
|
|
128
|
+
</schmancy-mailbox>
|
|
129
|
+
|
|
130
|
+
<script>
|
|
131
|
+
const emailTemplates = [
|
|
132
|
+
{
|
|
133
|
+
id: 'welcome',
|
|
134
|
+
name: 'Welcome Email',
|
|
135
|
+
subject: 'Welcome to Our Platform!',
|
|
136
|
+
body: '<h1>Welcome!</h1><p>Thank you for joining us.</p>',
|
|
137
|
+
isDefault: true
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: 'newsletter',
|
|
141
|
+
name: 'Newsletter Template',
|
|
142
|
+
subject: 'Monthly Newsletter',
|
|
143
|
+
body: '<h2>This Month\'s Updates</h2><p>Here\'s what\'s new...</p>'
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
|
|
147
|
+
function handleEmailSent(e) {
|
|
148
|
+
const { campaignId, recipients } = e.detail
|
|
149
|
+
console.log(`Email sent to ${recipients.length} recipients`)
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function handleEmailError(e) {
|
|
153
|
+
const { error, recipients } = e.detail
|
|
154
|
+
console.error('Email send failed:', error)
|
|
155
|
+
}
|
|
156
|
+
</script>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Newsletter System
|
|
160
|
+
```html
|
|
161
|
+
<schmancy-mailbox
|
|
162
|
+
.config="${{
|
|
163
|
+
sendEndpoint: '/api/newsletter/send',
|
|
164
|
+
templatesEndpoint: '/api/newsletter/templates',
|
|
165
|
+
uploadEndpoint: '/api/media/upload'
|
|
166
|
+
}}"
|
|
167
|
+
.templates="${newsletterTemplates}"
|
|
168
|
+
.importSources="${subscriberSources}"
|
|
169
|
+
recipientsTitle="Subscribers"
|
|
170
|
+
recipientsEmptyTitle="No subscribers loaded"
|
|
171
|
+
recipientsEmptyMessage="Import from your subscriber lists">
|
|
172
|
+
</schmancy-mailbox>
|
|
173
|
+
|
|
174
|
+
<script>
|
|
175
|
+
const subscriberSources = [
|
|
176
|
+
{
|
|
177
|
+
id: 'mailchimp',
|
|
178
|
+
label: 'Import from Mailchimp',
|
|
179
|
+
icon: 'mail',
|
|
180
|
+
handler: () => importFromMailchimp()
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
id: 'database',
|
|
184
|
+
label: 'Load from Database',
|
|
185
|
+
icon: 'database',
|
|
186
|
+
handler: () => loadSubscribersFromDB()
|
|
187
|
+
}
|
|
188
|
+
]
|
|
189
|
+
|
|
190
|
+
async function importFromMailchimp() {
|
|
191
|
+
const subscribers = await fetch('/api/mailchimp/subscribers').then(r => r.json())
|
|
192
|
+
// Handle import logic
|
|
193
|
+
}
|
|
194
|
+
</script>
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
### Event Announcements
|
|
198
|
+
```html
|
|
199
|
+
<div class="mailbox-container">
|
|
200
|
+
<h2>Send Event Announcement</h2>
|
|
201
|
+
|
|
202
|
+
<schmancy-mailbox
|
|
203
|
+
.config="${eventEmailConfig}"
|
|
204
|
+
.templates="${eventTemplates}"
|
|
205
|
+
.importSources="${attendeeSources}"
|
|
206
|
+
recipientsTitle="Event Attendees"
|
|
207
|
+
enableCsvImport
|
|
208
|
+
enableDragDrop
|
|
209
|
+
@email-sent=${handleAnnouncementSent}>
|
|
210
|
+
</schmancy-mailbox>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
<script>
|
|
214
|
+
const eventEmailConfig = {
|
|
215
|
+
sendEndpoint: '/api/events/send-announcement',
|
|
216
|
+
uploadHandler: async (file) => {
|
|
217
|
+
// Upload to event media storage
|
|
218
|
+
return await uploadEventMedia(file)
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const eventTemplates = [
|
|
223
|
+
{
|
|
224
|
+
id: 'reminder',
|
|
225
|
+
name: 'Event Reminder',
|
|
226
|
+
subject: 'Reminder: {{eventName}} is tomorrow!',
|
|
227
|
+
body: eventReminderTemplate
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
id: 'update',
|
|
231
|
+
name: 'Event Update',
|
|
232
|
+
subject: 'Important Update: {{eventName}}',
|
|
233
|
+
body: eventUpdateTemplate
|
|
234
|
+
}
|
|
235
|
+
]
|
|
236
|
+
|
|
237
|
+
const attendeeSources = [
|
|
238
|
+
{
|
|
239
|
+
id: 'registered',
|
|
240
|
+
label: 'All Registered Attendees',
|
|
241
|
+
icon: 'people',
|
|
242
|
+
handler: () => loadRegisteredAttendees()
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
id: 'vip',
|
|
246
|
+
label: 'VIP Attendees Only',
|
|
247
|
+
icon: 'star',
|
|
248
|
+
handler: () => loadVipAttendees()
|
|
249
|
+
}
|
|
250
|
+
]
|
|
251
|
+
</script>
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### Marketing Campaign
|
|
255
|
+
```html
|
|
256
|
+
<schmancy-card>
|
|
257
|
+
<div slot="header">
|
|
258
|
+
<h3>New Marketing Campaign</h3>
|
|
259
|
+
</div>
|
|
260
|
+
|
|
261
|
+
<div slot="content">
|
|
262
|
+
<schmancy-mailbox
|
|
263
|
+
.config="${marketingConfig}"
|
|
264
|
+
.templates="${campaignTemplates}"
|
|
265
|
+
.importSources="${customerSources}"
|
|
266
|
+
recipientsTitle="Target Customers"
|
|
267
|
+
recipientsEmptyTitle="No customers selected"
|
|
268
|
+
recipientsEmptyMessage="Import customer segments or upload lists"
|
|
269
|
+
@email-sent=${trackCampaignSuccess}
|
|
270
|
+
@email-error=${handleCampaignError}>
|
|
271
|
+
</schmancy-mailbox>
|
|
272
|
+
</div>
|
|
273
|
+
</schmancy-card>
|
|
274
|
+
|
|
275
|
+
<script>
|
|
276
|
+
const marketingConfig = {
|
|
277
|
+
sendEndpoint: '/api/marketing/send-campaign',
|
|
278
|
+
templatesEndpoint: '/api/marketing/templates',
|
|
279
|
+
uploadEndpoint: '/api/marketing/upload',
|
|
280
|
+
authenticateRequest: (request) => ({
|
|
281
|
+
...request,
|
|
282
|
+
headers: {
|
|
283
|
+
...request.headers,
|
|
284
|
+
'Authorization': `Bearer ${getMarketingToken()}`,
|
|
285
|
+
'X-Campaign-Source': 'web-dashboard'
|
|
286
|
+
}
|
|
287
|
+
})
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
function trackCampaignSuccess(e) {
|
|
291
|
+
const { campaignId, recipients } = e.detail
|
|
292
|
+
analytics.track('Campaign Sent', {
|
|
293
|
+
campaignId,
|
|
294
|
+
recipientCount: recipients.length,
|
|
295
|
+
source: 'mailbox-component'
|
|
296
|
+
})
|
|
297
|
+
}
|
|
298
|
+
</script>
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
## Individual Components
|
|
302
|
+
|
|
303
|
+
### Email Editor
|
|
304
|
+
```html
|
|
305
|
+
<schmancy-email-editor
|
|
306
|
+
content="${emailContent}"
|
|
307
|
+
placeholder="Write your email content..."
|
|
308
|
+
@content-change=${(e) => this.emailContent = e.detail.content}
|
|
309
|
+
@image-upload=${handleImageUpload}>
|
|
310
|
+
</schmancy-email-editor>
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Email Viewer (Preview)
|
|
314
|
+
```html
|
|
315
|
+
<schmancy-email-viewer
|
|
316
|
+
.emailData="${{
|
|
317
|
+
subject: 'Test Email',
|
|
318
|
+
body: '<p>Email content here</p>',
|
|
319
|
+
recipients: ['user@example.com'],
|
|
320
|
+
attachments: []
|
|
321
|
+
}}">
|
|
322
|
+
</schmancy-email-viewer>
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Recipients Management
|
|
326
|
+
```html
|
|
327
|
+
<schmancy-email-recipients
|
|
328
|
+
.recipients="${recipientList}"
|
|
329
|
+
.importSources="${importSources}"
|
|
330
|
+
enableCsvImport
|
|
331
|
+
enableDragDrop
|
|
332
|
+
@recipients-change=${handleRecipientsUpdate}
|
|
333
|
+
@csv-import=${handleCsvImport}>
|
|
334
|
+
</schmancy-email-recipients>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
### Template Selector
|
|
338
|
+
```html
|
|
339
|
+
<schmancy-email-layout-selector
|
|
340
|
+
.templates="${availableTemplates}"
|
|
341
|
+
selectedId="${currentTemplateId}"
|
|
342
|
+
@template-select=${(e) => this.currentTemplateId = e.detail.templateId}>
|
|
343
|
+
</schmancy-email-layout-selector>
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
## Events
|
|
347
|
+
|
|
348
|
+
### Main Mailbox Events
|
|
349
|
+
```typescript
|
|
350
|
+
// Email sent successfully
|
|
351
|
+
@email-sent: CustomEvent<{
|
|
352
|
+
campaignId: string
|
|
353
|
+
recipients: string[]
|
|
354
|
+
templateId?: string
|
|
355
|
+
}>
|
|
356
|
+
|
|
357
|
+
// Email send error
|
|
358
|
+
@email-error: CustomEvent<{
|
|
359
|
+
error: string
|
|
360
|
+
recipients: string[]
|
|
361
|
+
details?: any
|
|
362
|
+
}>
|
|
363
|
+
|
|
364
|
+
// Template selected
|
|
365
|
+
@template-change: CustomEvent<{
|
|
366
|
+
templateId: string
|
|
367
|
+
template: EmailTemplate
|
|
368
|
+
}>
|
|
369
|
+
|
|
370
|
+
// Recipients updated
|
|
371
|
+
@recipients-change: CustomEvent<{
|
|
372
|
+
recipients: string[]
|
|
373
|
+
added: string[]
|
|
374
|
+
removed: string[]
|
|
375
|
+
}>
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
## Advanced Configuration
|
|
379
|
+
|
|
380
|
+
### Custom Upload Handlers
|
|
381
|
+
```typescript
|
|
382
|
+
const advancedConfig: EmailComposeConfig = {
|
|
383
|
+
sendEndpoint: '/api/emails/send',
|
|
384
|
+
|
|
385
|
+
// Custom file upload with progress
|
|
386
|
+
uploadHandler: async (file: File) => {
|
|
387
|
+
return new Promise((resolve, reject) => {
|
|
388
|
+
const formData = new FormData()
|
|
389
|
+
formData.append('file', file)
|
|
390
|
+
|
|
391
|
+
const xhr = new XMLHttpRequest()
|
|
392
|
+
|
|
393
|
+
xhr.upload.onprogress = (e) => {
|
|
394
|
+
const progress = (e.loaded / e.total) * 100
|
|
395
|
+
// Update progress indicator
|
|
396
|
+
updateUploadProgress(progress)
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
xhr.onload = () => {
|
|
400
|
+
if (xhr.status === 200) {
|
|
401
|
+
const response = JSON.parse(xhr.responseText)
|
|
402
|
+
resolve(response.url)
|
|
403
|
+
} else {
|
|
404
|
+
reject(new Error('Upload failed'))
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
xhr.open('POST', '/api/upload')
|
|
409
|
+
xhr.send(formData)
|
|
410
|
+
})
|
|
411
|
+
},
|
|
412
|
+
|
|
413
|
+
// Custom image handler for rich text editor
|
|
414
|
+
imageUploadHandler: async (file: File) => {
|
|
415
|
+
const imageUrl = await uploadToImageCDN(file)
|
|
416
|
+
return imageUrl
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
// Add authentication headers
|
|
420
|
+
authenticateRequest: (request: RequestInit) => ({
|
|
421
|
+
...request,
|
|
422
|
+
headers: {
|
|
423
|
+
...request.headers,
|
|
424
|
+
'Authorization': `Bearer ${getAuthToken()}`,
|
|
425
|
+
'X-API-Key': getApiKey(),
|
|
426
|
+
'Content-Type': 'application/json'
|
|
427
|
+
}
|
|
428
|
+
})
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### Template Variables
|
|
433
|
+
```html
|
|
434
|
+
<!-- Templates support variable substitution -->
|
|
435
|
+
<script>
|
|
436
|
+
const templateWithVariables = {
|
|
437
|
+
id: 'personalized',
|
|
438
|
+
name: 'Personalized Email',
|
|
439
|
+
subject: 'Hello {{firstName}}, welcome to {{companyName}}!',
|
|
440
|
+
body: `
|
|
441
|
+
<h1>Welcome {{firstName}}!</h1>
|
|
442
|
+
<p>Thank you for joining {{companyName}}.</p>
|
|
443
|
+
<p>Your account: {{email}}</p>
|
|
444
|
+
<p>Next event: {{nextEventDate}}</p>
|
|
445
|
+
`
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// Variables are automatically replaced when sending
|
|
449
|
+
const emailData = {
|
|
450
|
+
firstName: 'John',
|
|
451
|
+
companyName: 'Acme Corp',
|
|
452
|
+
email: 'john@example.com',
|
|
453
|
+
nextEventDate: '2024-06-15'
|
|
454
|
+
}
|
|
455
|
+
</script>
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
## Integration Examples
|
|
459
|
+
|
|
460
|
+
### With Form Validation
|
|
461
|
+
```html
|
|
462
|
+
<schmancy-form @submit=${handleSendEmail}>
|
|
463
|
+
<schmancy-input
|
|
464
|
+
label="Campaign Name"
|
|
465
|
+
name="campaignName"
|
|
466
|
+
required>
|
|
467
|
+
</schmancy-input>
|
|
468
|
+
|
|
469
|
+
<schmancy-mailbox
|
|
470
|
+
.config="${emailConfig}"
|
|
471
|
+
.templates="${templates}"
|
|
472
|
+
@email-sent=${handleSuccess}
|
|
473
|
+
@email-error=${handleError}>
|
|
474
|
+
</schmancy-mailbox>
|
|
475
|
+
|
|
476
|
+
<div slot="actions">
|
|
477
|
+
<schmancy-button type="submit" variant="filled">
|
|
478
|
+
Send Campaign
|
|
479
|
+
</schmancy-button>
|
|
480
|
+
</div>
|
|
481
|
+
</schmancy-form>
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
### With Analytics
|
|
485
|
+
```html
|
|
486
|
+
<schmancy-mailbox
|
|
487
|
+
.config="${emailConfig}"
|
|
488
|
+
@email-sent=${(e) => {
|
|
489
|
+
// Track successful sends
|
|
490
|
+
analytics.track('Email Campaign Sent', {
|
|
491
|
+
recipients: e.detail.recipients.length,
|
|
492
|
+
templateId: e.detail.templateId
|
|
493
|
+
})
|
|
494
|
+
}}
|
|
495
|
+
@template-change=${(e) => {
|
|
496
|
+
// Track template usage
|
|
497
|
+
analytics.track('Email Template Selected', {
|
|
498
|
+
templateId: e.detail.templateId
|
|
499
|
+
})
|
|
500
|
+
}}>
|
|
501
|
+
</schmancy-mailbox>
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
## Related Components
|
|
505
|
+
|
|
506
|
+
- **[Button](./button.md)** - Send and action buttons
|
|
507
|
+
- **[Card](./card.md)** - Container for mailbox interface
|
|
508
|
+
- **[Form](./form.md)** - Form integration
|
|
509
|
+
- **[Input](./input.md)** - Subject and recipient inputs
|
|
510
|
+
- **[Dialog](./dialog.md)** - Confirmation dialogs
|
|
511
|
+
- **[Progress](./progress.md)** - Upload and send progress
|
|
512
|
+
- **[Notification](./notification.md)** - Success/error messages
|
|
513
|
+
|
|
514
|
+
## Use Cases
|
|
515
|
+
|
|
516
|
+
1. **Newsletter Systems** - Send newsletters to subscribers
|
|
517
|
+
2. **Event Management** - Send announcements and reminders
|
|
518
|
+
3. **Marketing Campaigns** - Customer email campaigns
|
|
519
|
+
4. **Transactional Emails** - Order confirmations, receipts
|
|
520
|
+
5. **Internal Communications** - Company announcements
|
|
521
|
+
6. **Customer Support** - Bulk support notifications
|
|
522
|
+
7. **Educational Platforms** - Course updates and announcements
|
|
523
|
+
|
|
524
|
+
## Performance Considerations
|
|
525
|
+
|
|
526
|
+
- **Large Recipient Lists**: Component handles large lists with virtual scrolling
|
|
527
|
+
- **File Uploads**: Supports chunked uploads for large attachments
|
|
528
|
+
- **Template Caching**: Templates are cached for better performance
|
|
529
|
+
- **Batch Sending**: Automatically batches large email sends
|
|
530
|
+
- **Progressive Enhancement**: Works without JavaScript for basic functionality
|
package/dist/ai/map.md
CHANGED
package/dist/ai/notification.md
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
## Core Notification Service
|
|
4
4
|
|
|
5
5
|
```js
|
|
6
|
-
import { $notify } from '@
|
|
6
|
+
import { $notify } from '@schmancy/index'
|
|
7
|
+
// Or specific import: import { $notify } from '@schmancy/notification'
|
|
7
8
|
|
|
8
9
|
// Display notification methods
|
|
9
10
|
$notify.info(message?, options?) -> string // Returns notification ID
|
|
@@ -41,7 +42,8 @@ $notify.customDuration(message, duration, options)
|
|
|
41
42
|
The `notify()` operator wraps observables with automatic notification lifecycle management.
|
|
42
43
|
|
|
43
44
|
```js
|
|
44
|
-
import { notify } from '@
|
|
45
|
+
import { notify } from '@schmancy/index'
|
|
46
|
+
// Or specific import: import { notify } from '@schmancy/notification'
|
|
45
47
|
|
|
46
48
|
// Basic usage - minimal configuration
|
|
47
49
|
someApiCall().pipe(
|
|
@@ -115,27 +117,27 @@ fileUpload().pipe(
|
|
|
115
117
|
### Notification Container
|
|
116
118
|
|
|
117
119
|
```html
|
|
118
|
-
<
|
|
120
|
+
<schmancy-notification-container
|
|
119
121
|
position="top-right|top-left|bottom-right|bottom-left|top-center|bottom-center"
|
|
120
|
-
max-visible-notifications="2"
|
|
121
|
-
play-sound="true|false"
|
|
122
|
+
max-visible-notifications="2"
|
|
123
|
+
play-sound="true|false"
|
|
122
124
|
audio-volume="0.1">
|
|
123
|
-
</
|
|
125
|
+
</schmancy-notification-container>
|
|
124
126
|
```
|
|
125
127
|
|
|
126
128
|
### Individual Notification (used internally)
|
|
127
129
|
|
|
128
130
|
```html
|
|
129
|
-
<
|
|
131
|
+
<schmancy-notification
|
|
130
132
|
title="Title"
|
|
131
133
|
message="Message text"
|
|
132
134
|
type="info|success|warning|error"
|
|
133
|
-
duration="5000"
|
|
135
|
+
duration="5000"
|
|
134
136
|
closable="true"
|
|
135
137
|
play-sound="true"
|
|
136
|
-
show-progress="false"
|
|
138
|
+
show-progress="false"
|
|
137
139
|
@close>
|
|
138
|
-
</
|
|
140
|
+
</schmancy-notification>
|
|
139
141
|
```
|
|
140
142
|
|
|
141
143
|
## Examples
|
|
@@ -176,11 +178,11 @@ upload(file).pipe(
|
|
|
176
178
|
Add the notification container once in your app layout:
|
|
177
179
|
|
|
178
180
|
```html
|
|
179
|
-
<
|
|
181
|
+
<schmancy-notification-container
|
|
180
182
|
position="top-right"
|
|
181
183
|
max-visible-notifications="3"
|
|
182
184
|
play-sound="true">
|
|
183
|
-
</
|
|
185
|
+
</schmancy-notification-container>
|
|
184
186
|
```
|
|
185
187
|
|
|
186
188
|
## Progress Indication
|