@mhmo91/schmancy 0.4.71 → 0.4.73
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/context.md +2 -3
- package/ai/directives.md +1 -1
- package/ai/steps.md +187 -9
- package/dist/ai/context.md +2 -3
- package/dist/ai/directives.md +1 -1
- package/dist/ai/steps.md +187 -9
- package/dist/{animated-text-rE-SkQgz.cjs → animated-text-CPAqO_J3.cjs} +2 -2
- package/dist/{animated-text-rE-SkQgz.cjs.map → animated-text-CPAqO_J3.cjs.map} +1 -1
- package/dist/{animated-text-CBOMltQE.js → animated-text-Dj3HHUD4.js} +3 -3
- package/dist/{animated-text-CBOMltQE.js.map → animated-text-Dj3HHUD4.js.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-CuO8ztL4.cjs → autocomplete-B3ArCTZl.cjs} +2 -2
- package/dist/{autocomplete-CuO8ztL4.cjs.map → autocomplete-B3ArCTZl.cjs.map} +1 -1
- package/dist/{autocomplete-BAcf_l63.js → autocomplete-kJ7y028b.js} +3 -3
- package/dist/{autocomplete-BAcf_l63.js.map → autocomplete-kJ7y028b.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-D3gNBale.js → avatar-DI5vtg3k.js} +70 -71
- package/dist/avatar-DI5vtg3k.js.map +1 -0
- package/dist/{avatar-N3BODeY1.cjs → avatar-r7OnlyPP.cjs} +3 -3
- package/dist/avatar-r7OnlyPP.cjs.map +1 -0
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-CWXlAq65.cjs → boat-COlWXsv8.cjs} +2 -2
- package/dist/{boat-CWXlAq65.cjs.map → boat-COlWXsv8.cjs.map} +1 -1
- package/dist/{boat-BQoWbDxu.js → boat-Cp8VgFWP.js} +2 -2
- package/dist/{boat-BQoWbDxu.js.map → boat-Cp8VgFWP.js.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-Cbkcvj-3.js} +2 -2
- package/dist/{checkbox-DBO-neG5.js.map → checkbox-Cbkcvj-3.js.map} +1 -1
- package/dist/{checkbox-DIYmuPtk.cjs → checkbox-u355dDEB.cjs} +2 -2
- package/dist/{checkbox-DIYmuPtk.cjs.map → checkbox-u355dDEB.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BYE5hQQr.cjs → chips-BFn88CJs.cjs} +2 -2
- package/dist/{chips-BYE5hQQr.cjs.map → chips-BFn88CJs.cjs.map} +1 -1
- package/dist/{chips-C_7proIN.js → chips-Y5nzkBJw.js} +3 -3
- package/dist/{chips-C_7proIN.js.map → chips-Y5nzkBJw.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-CzcyBpl-.cjs → code-preview-CsQWYHL5.cjs} +3 -3
- package/dist/{code-preview-CzcyBpl-.cjs.map → code-preview-CsQWYHL5.cjs.map} +1 -1
- package/dist/{code-preview-CQ-EAz9F.js → code-preview-D2peRzvQ.js} +3 -3
- package/dist/{code-preview-CQ-EAz9F.js.map → code-preview-D2peRzvQ.js.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-WqwMEh16.js → date-range-DnKu_v9b.js} +4 -4
- package/dist/{date-range-WqwMEh16.js.map → date-range-DnKu_v9b.js.map} +1 -1
- package/dist/{date-range-DCghMsV8.cjs → date-range-Ya1J9HQQ.cjs} +2 -2
- package/dist/{date-range-DCghMsV8.cjs.map → date-range-Ya1J9HQQ.cjs.map} +1 -1
- package/dist/{date-range-inline-Z0ASWN4I.cjs → date-range-inline-CXBrxoim.cjs} +2 -2
- package/dist/{date-range-inline-Z0ASWN4I.cjs.map → date-range-inline-CXBrxoim.cjs.map} +1 -1
- package/dist/{date-range-inline-JgIiOHQM.js → date-range-inline-Q5qz2lG_.js} +3 -3
- package/dist/{date-range-inline-JgIiOHQM.js.map → date-range-inline-Q5qz2lG_.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-LnWlFwkK.js → delay-DVqCtHik.js} +2 -2
- package/dist/delay-DVqCtHik.js.map +1 -0
- package/dist/{delay-Ew4cphs1.cjs → delay-Dl6B_yyv.cjs} +2 -2
- package/dist/delay-Dl6B_yyv.cjs.map +1 -0
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-C01m-iWQ.cjs → details-LZ_GGbW-.cjs} +2 -2
- package/dist/{details-C01m-iWQ.cjs.map → details-LZ_GGbW-.cjs.map} +1 -1
- package/dist/{details-BVEV0hUx.js → details-w1ooWiKA.js} +2 -2
- package/dist/{details-BVEV0hUx.js.map → details-w1ooWiKA.js.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-B7V_S6GR.js} +4 -4
- package/dist/{dialog-content-B_w_iJyW.js.map → dialog-content-B7V_S6GR.js.map} +1 -1
- package/dist/{dialog-content-BFmy9Sbo.cjs → dialog-content-VroTT22f.cjs} +2 -2
- package/dist/{dialog-content-BFmy9Sbo.cjs.map → dialog-content-VroTT22f.cjs.map} +1 -1
- package/dist/{dialog-service-DwJ_7FB3.js → dialog-service-Dpz_NIRP.js} +2 -2
- package/dist/dialog-service-Dpz_NIRP.js.map +1 -0
- package/dist/{dialog-service-DS-aEjlX.cjs → dialog-service-Wna1JO09.cjs} +2 -2
- package/dist/dialog-service-Wna1JO09.cjs.map +1 -0
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/{divider-BWG6TAr2.cjs → divider-CegpMW-2.cjs} +2 -2
- package/dist/{divider-BWG6TAr2.cjs.map → divider-CegpMW-2.cjs.map} +1 -1
- package/dist/{divider-FkKYlJY3.js → divider-OuCqxcUB.js} +3 -3
- package/dist/{divider-FkKYlJY3.js.map → divider-OuCqxcUB.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-BStJGihR.js → dropdown-content-BuKCBydD.js} +3 -3
- package/dist/{dropdown-content-BStJGihR.js.map → dropdown-content-BuKCBydD.js.map} +1 -1
- package/dist/{dropdown-content-m1aSF-Oh.cjs → dropdown-content-f0LuoUKR.cjs} +2 -2
- package/dist/{dropdown-content-m1aSF-Oh.cjs.map → dropdown-content-f0LuoUKR.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-CbZNnzoj.cjs → email-recipients-BlEtpbdr.cjs} +2 -2
- package/dist/{email-recipients-CbZNnzoj.cjs.map → email-recipients-BlEtpbdr.cjs.map} +1 -1
- package/dist/{email-recipients-CpghUhQ1.js → email-recipients-CvSwxcso.js} +7 -7
- package/dist/{email-recipients-CpghUhQ1.js.map → email-recipients-CvSwxcso.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-BNVtJlgu.cjs → flex-Cdv04m_E.cjs} +2 -2
- package/dist/{flex-BNVtJlgu.cjs.map → flex-Cdv04m_E.cjs.map} +1 -1
- package/dist/{flex-C6yj5Sxi.js → flex-HyTTaFX9.js} +2 -2
- package/dist/{flex-C6yj5Sxi.js.map → flex-HyTTaFX9.js.map} +1 -1
- package/dist/{form-C85Qev2L.js → form-BNTXCzQo.js} +2 -2
- package/dist/{form-C85Qev2L.js.map → form-BNTXCzQo.js.map} +1 -1
- package/dist/{form-ns7c4fcj.cjs → form-CXRNS-AS.cjs} +2 -2
- package/dist/{form-ns7c4fcj.cjs.map → form-CXRNS-AS.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-CKb_MTS7.js → formField.mixin-MhetZTeW.js} +2 -2
- package/dist/{formField.mixin-CKb_MTS7.js.map → formField.mixin-MhetZTeW.js.map} +1 -1
- package/dist/{formField.mixin-B3CXBJKX.cjs → formField.mixin-zezhhNIA.cjs} +2 -2
- package/dist/{formField.mixin-B3CXBJKX.cjs.map → formField.mixin-zezhhNIA.cjs.map} +1 -1
- package/dist/{icon-DKPLcbdu.js → icon-C71zn7AW.js} +2 -2
- package/dist/{icon-DKPLcbdu.js.map → icon-C71zn7AW.js.map} +1 -1
- package/dist/{icon-button-DiRex-eZ.cjs → icon-button-CO8rMFUR.cjs} +2 -2
- package/dist/{icon-button-DiRex-eZ.cjs.map → icon-button-CO8rMFUR.cjs.map} +1 -1
- package/dist/{icon-button-CIkRej0r.js → icon-button-KoYGGW6a.js} +3 -3
- package/dist/{icon-button-CIkRej0r.js.map → icon-button-KoYGGW6a.js.map} +1 -1
- package/dist/{icon-DUstfLaC.cjs → icon-e6XggWlw.cjs} +2 -2
- package/dist/{icon-DUstfLaC.cjs.map → icon-e6XggWlw.cjs.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 +216 -215
- package/dist/{input-B7MqsI2h.cjs → input-CFvMe_KR.cjs} +2 -2
- package/dist/{input-B7MqsI2h.cjs.map → input-CFvMe_KR.cjs.map} +1 -1
- package/dist/{input-DODcsAZu.js → input-LTpT28E4.js} +3 -3
- package/dist/{input-DODcsAZu.js.map → input-LTpT28E4.js.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-CAJJTrLl.js} +2 -2
- package/dist/{list-Cx6tpiFE.js.map → list-CAJJTrLl.js.map} +1 -1
- package/dist/{list-DxduK4sb.cjs → list-D2dyHYN9.cjs} +2 -2
- package/dist/{list-DxduK4sb.cjs.map → list-D2dyHYN9.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-B12Y4mEr.cjs → litElement.mixin-4iclDbF3.cjs} +2 -2
- package/dist/{litElement.mixin-B12Y4mEr.cjs.map → litElement.mixin-4iclDbF3.cjs.map} +1 -1
- package/dist/{litElement.mixin-BZ8iGvPl.js → litElement.mixin-SeAIQuRg.js} +2 -2
- package/dist/{litElement.mixin-BZ8iGvPl.js.map → litElement.mixin-SeAIQuRg.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-sgCf8pYD.cjs → map-CMkosiu4.cjs} +2 -2
- package/dist/{map-sgCf8pYD.cjs.map → map-CMkosiu4.cjs.map} +1 -1
- package/dist/{map-dT8yp1iK.js → map-DwMX_LnY.js} +2 -2
- package/dist/{map-dT8yp1iK.js.map → map-DwMX_LnY.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CgH0D5rY.js → media-B98kFRvT.js} +2 -2
- package/dist/{media-CgH0D5rY.js.map → media-B98kFRvT.js.map} +1 -1
- package/dist/{media-CwjupDLj.cjs → media-DxbLFhc5.cjs} +2 -2
- package/dist/{media-CwjupDLj.cjs.map → media-DxbLFhc5.cjs.map} +1 -1
- package/dist/{menu-oZRtmhVd.js → menu-ChMwBut9.js} +3 -3
- package/dist/{menu-oZRtmhVd.js.map → menu-ChMwBut9.js.map} +1 -1
- package/dist/{menu-X25Q7tpY.cjs → menu-DTRbll_X.cjs} +2 -2
- package/dist/{menu-X25Q7tpY.cjs.map → menu-DTRbll_X.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-BiEAwrL6.js} +4 -4
- package/dist/notification-service-BiEAwrL6.js.map +1 -0
- package/dist/{notification-service-kLTt3JtW.cjs → notification-service-h3GuXar7.cjs} +2 -2
- package/dist/notification-service-h3GuXar7.cjs.map +1 -0
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-BnjvURrc.js → notify-1NUgv3Qz.js} +2 -2
- package/dist/{notify-BnjvURrc.js.map → notify-1NUgv3Qz.js.map} +1 -1
- package/dist/{notify-EGStToeW.cjs → notify-CP9929J0.cjs} +2 -2
- package/dist/{notify-EGStToeW.cjs.map → notify-CP9929J0.cjs.map} +1 -1
- package/dist/{option-CD1NSUXu.js → option-DvEFWkrm.js} +2 -2
- package/dist/{option-CD1NSUXu.js.map → option-DvEFWkrm.js.map} +1 -1
- package/dist/{option-D4_WBCWz.cjs → option-VxlQIYFR.cjs} +2 -2
- package/dist/{option-D4_WBCWz.cjs.map → option-VxlQIYFR.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-96Rw6cLf.cjs → payment-card-form-CAPM_YfT.cjs} +2 -2
- package/dist/{payment-card-form-96Rw6cLf.cjs.map → payment-card-form-CAPM_YfT.cjs.map} +1 -1
- package/dist/{payment-card-form-lWlhuDb3.js → payment-card-form-CEd08rns.js} +3 -3
- package/dist/{payment-card-form-lWlhuDb3.js.map → payment-card-form-CEd08rns.js.map} +1 -1
- package/dist/{progress-BkxGzGOm.cjs → progress-Bu8wtPRI.cjs} +2 -2
- package/dist/{progress-BkxGzGOm.cjs.map → progress-Bu8wtPRI.cjs.map} +1 -1
- package/dist/{progress-DGk9tC4y.js → progress-CL4SPk5b.js} +2 -2
- package/dist/{progress-DGk9tC4y.js.map → progress-CL4SPk5b.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-DHM38A7h.js → radio-button-B087BeTl.js} +3 -3
- package/dist/{radio-button-DHM38A7h.js.map → radio-button-B087BeTl.js.map} +1 -1
- package/dist/{radio-button-w9ZxzEPa.cjs → radio-button-vz9nLR-m.cjs} +2 -2
- package/dist/{radio-button-w9ZxzEPa.cjs.map → radio-button-vz9nLR-m.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/route.component-D1xujH8n.js +343 -0
- package/dist/route.component-D1xujH8n.js.map +1 -0
- package/dist/route.component-ke_nkgvP.cjs +12 -0
- package/dist/route.component-ke_nkgvP.cjs.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-CEvpeKIe.js} +12 -12
- package/dist/schmancy-steps-container-CEvpeKIe.js.map +1 -0
- package/dist/{schmancy-steps-container-CPSL_8H0.cjs → schmancy-steps-container-DvSClSo1.cjs} +6 -6
- package/dist/schmancy-steps-container-DvSClSo1.cjs.map +1 -0
- package/dist/{select-CxCcgqW_.cjs → select-4VXPMU8r.cjs} +2 -2
- package/dist/{select-CxCcgqW_.cjs.map → select-4VXPMU8r.cjs.map} +1 -1
- package/dist/{select-bDAzyQOZ.js → select-BoUYZPyl.js} +3 -3
- package/dist/{select-bDAzyQOZ.js.map → select-BoUYZPyl.js.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-pO6PmiAf.js → sheet-C6djCmPV.js} +4 -4
- package/dist/{sheet-pO6PmiAf.js.map → sheet-C6djCmPV.js.map} +1 -1
- package/dist/{sheet-Bm0ukLXt.cjs → sheet-IfHxyIo_.cjs} +2 -2
- package/dist/{sheet-Bm0ukLXt.cjs.map → sheet-IfHxyIo_.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-DV9xNhS8.cjs → sheet.service-DR9KJfMa.cjs} +2 -2
- package/dist/sheet.service-DR9KJfMa.cjs.map +1 -0
- package/dist/{sheet.service-ieSXeqCj.js → sheet.service-DZGMoIHy.js} +2 -2
- package/dist/sheet.service-DZGMoIHy.js.map +1 -0
- package/dist/{slider-BwXXp74f.cjs → slider-BfNNQ6qI.cjs} +2 -2
- package/dist/{slider-BwXXp74f.cjs.map → slider-BfNNQ6qI.cjs.map} +1 -1
- package/dist/{slider-CxZGMYF-.js → slider-DERHNjqI.js} +3 -3
- package/dist/{slider-CxZGMYF-.js.map → slider-DERHNjqI.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-b3VWC6It.js → spinner-BOdUWwXq.js} +2 -2
- package/dist/{spinner-b3VWC6It.js.map → spinner-BOdUWwXq.js.map} +1 -1
- package/dist/{spinner-nN77H00p.cjs → spinner-Bip-lfsc.cjs} +2 -2
- package/dist/{spinner-nN77H00p.cjs.map → spinner-Bip-lfsc.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-Cm8zYK5d.cjs → surface--Nh6Q896.cjs} +2 -2
- package/dist/{surface-Cm8zYK5d.cjs.map → surface--Nh6Q896.cjs.map} +1 -1
- package/dist/{surface-C2WjztRc.js → surface-CyhVK7JG.js} +2 -2
- package/dist/{surface-C2WjztRc.js.map → surface-CyhVK7JG.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-Dp7npAuy.js → table-DnPQ0zCd.js} +2 -2
- package/dist/{table-Dp7npAuy.js.map → table-DnPQ0zCd.js.map} +1 -1
- package/dist/{table-BfhuaB9J.cjs → table-x9dbc3AY.cjs} +2 -2
- package/dist/{table-BfhuaB9J.cjs.map → table-x9dbc3AY.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-CA-wWRoe.cjs → tabs-compatibility-D3HfZRKv.cjs} +2 -2
- package/dist/{tabs-compatibility-CA-wWRoe.cjs.map → tabs-compatibility-D3HfZRKv.cjs.map} +1 -1
- package/dist/{tabs-compatibility-U4cq8X3I.js → tabs-compatibility-Dazz1g0Q.js} +2 -2
- package/dist/{tabs-compatibility-U4cq8X3I.js.map → tabs-compatibility-Dazz1g0Q.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Bwf86oi5.cjs +2 -0
- package/dist/{tailwind.mixin-BlZIIaOE.cjs.map → tailwind.mixin-Bwf86oi5.cjs.map} +1 -1
- package/dist/tailwind.mixin-kvywknTU.js +43 -0
- package/dist/{tailwind.mixin-D2DVHS9V.js.map → tailwind.mixin-kvywknTU.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BRNj3tvi.js → textarea-bHJFDEva.js} +2 -2
- package/dist/{textarea-BRNj3tvi.js.map → textarea-bHJFDEva.js.map} +1 -1
- package/dist/{textarea-CxZKoXaU.cjs → textarea-xRo6a5-Y.cjs} +2 -2
- package/dist/{textarea-CxZKoXaU.cjs.map → textarea-xRo6a5-Y.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-BPFuZSBY.js} +2 -2
- package/dist/{theme-button-N_Wt3bos.js.map → theme-button-BPFuZSBY.js.map} +1 -1
- package/dist/{theme-button-MrIoOFEB.cjs → theme-button-lvD9uCTZ.cjs} +2 -2
- package/dist/{theme-button-MrIoOFEB.cjs.map → theme-button-lvD9uCTZ.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-6VfET_t-.js → theme.component-C-PfGTcN.js} +2 -2
- package/dist/{theme.component-6VfET_t-.js.map → theme.component-C-PfGTcN.js.map} +1 -1
- package/dist/{theme.component-B_EubPsq.cjs → theme.component-DkcM8QzH.cjs} +2 -2
- package/dist/{theme.component-B_EubPsq.cjs.map → theme.component-DkcM8QzH.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-DR_4m9Cc.js → timezone-BDSbTYTk.js} +3 -3
- package/dist/{timezone-DR_4m9Cc.js.map → timezone-BDSbTYTk.js.map} +1 -1
- package/dist/{timezone-BVd9UEba.cjs → timezone-OLjylRB7.cjs} +2 -2
- package/dist/{timezone-BVd9UEba.cjs.map → timezone-OLjylRB7.cjs.map} +1 -1
- package/dist/{tooltip-BpPHc8Wr.js → tooltip-CWiU3SEA.js} +2 -2
- package/dist/{tooltip-BpPHc8Wr.js.map → tooltip-CWiU3SEA.js.map} +1 -1
- package/dist/{tooltip-DOQVLRaH.cjs → tooltip-iM0cfzsV.cjs} +2 -2
- package/dist/{tooltip-DOQVLRaH.cjs.map → tooltip-iM0cfzsV.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-BANkyLn7.cjs → tree-CXIrKI2O.cjs} +2 -2
- package/dist/{tree-BANkyLn7.cjs.map → tree-CXIrKI2O.cjs.map} +1 -1
- package/dist/{tree-C5zu8wXc.js → tree-JUf2hHiW.js} +2 -2
- package/dist/{tree-C5zu8wXc.js.map → tree-JUf2hHiW.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-CdztqkoR.js → typewriter-DQuULTla.js} +4 -4
- package/dist/{typewriter-CdztqkoR.js.map → typewriter-DQuULTla.js.map} +1 -1
- package/dist/{typewriter-DS0D0UZM.cjs → typewriter-YW7NGa6H.cjs} +2 -2
- package/dist/{typewriter-DS0D0UZM.cjs.map → typewriter-YW7NGa6H.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-C8vZfuLF.cjs → typography-CkLztts5.cjs} +2 -2
- package/dist/{typography-C8vZfuLF.cjs.map → typography-CkLztts5.cjs.map} +1 -1
- package/dist/{typography-o9FJ6Lzo.js → typography-kXb173Io.js} +2 -2
- package/dist/{typography-o9FJ6Lzo.js.map → typography-kXb173Io.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/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.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.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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.service-DR9KJfMa.cjs","sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdefaultIfEmpty,\n\tdelay,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.component'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\thandleHistory?: boolean // Controls browser back button behavior\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet?: SchmancySheet\n\ttheme?: HTMLElement\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// Track sheet components for retrieval\n\tprivate sheetComponents = new Map<string, HTMLElement>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupSheetDismissLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\t// First check for existing sheet\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Then find theme container\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\t// Determine uid - use provided uid or component tagName\n\t\t\t\t\t\t\t\tconst uid = target.uid ?? target.component.tagName\n\n\t\t\t\t\t\t\t\t// First ask for existing sheet\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t// Then ask for theme container\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\n\t\t\t\tmap(([existingSheet, theme, target]) => {\n\t\t\t\t\tlet sheet = existingSheet?.sheet\n\t\t\t\t\tlet targetContainer: HTMLElement\n\n\t\t\t\t\tif (sheet) {\n\t\t\t\t\t\t// Use existing sheet\n\t\t\t\t\t\ttargetContainer = sheet.parentElement as HTMLElement\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Determine container - use theme from discovery or fallback\n\t\t\t\t\t\ttargetContainer = theme || (document.querySelector('schmancy-theme') as HTMLElement) || document.body\n\n\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\tconst uid = target.uid ?? target.component.tagName\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget.lock && sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\t// Use the dynamic position function here\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', String(target.persist))\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\n\t\t\t\t\t// Handle history logic if the property exists\n\t\t\t\t\tif (target.handleHistory !== undefined) {\n\t\t\t\t\t\tsheet.setAttribute('handleHistory', String(target.handleHistory))\n\t\t\t\t\t}\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Call onBeforeOpen callback if provided\n\t\t\t\t\tif (target.onBeforeOpen) {\n\t\t\t\t\t\ttarget.onBeforeOpen(target.component)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle HTMLElement components\n\t\t\t\t\tconst assignedElements = sheet?.shadowRoot?.querySelector('slot')?.assignedElements() || []\n\n\t\t\t\t\tconst existingComponent = assignedElements.find(e => (e as HTMLElement).tagName === target.component.tagName)\n\n\t\t\t\t\tif (!existingComponent) {\n\t\t\t\t\t\t// Need to append the component\n\t\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t\t} else {\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tconst uid =\n\t\t\t\t\t\ttarget.uid ?? (target.component instanceof HTMLElement ? target.component.tagName : `sheet-${Date.now()}`)\n\t\t\t\t\tthis.activeSheets.add(uid)\n\t\t\t\t\tthis.sheetComponents.set(uid, target.component)\n\n\t\t\t\t\t// Handle history integration - default to true if not specified\n\t\t\t\t\tconst shouldHandleHistory = target.handleHistory !== false\n\n\t\t\t\t\tif (shouldHandleHistory) {\n\t\t\t\t\t\t// Use history state to track this specific sheet\n\t\t\t\t\t\tconst historyState = {\n\t\t\t\t\t\t\tschmancySheet: true,\n\t\t\t\t\t\t\tuid: uid,\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Push a new history state\n\t\t\t\t\t\thistory.pushState(historyState, '', window.location.href)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call onAfterOpen callback if provided\n\t\t\t\t\tif (target.onAfterOpen) {\n\t\t\t\t\t\ttarget.onAfterOpen(target.component)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up close event listener (always, not just for new sheets)\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(_ => {\n\t\t\t\t\t\t\t// Use the sheet reference directly, not e.target\n\t\t\t\t\t\t\tconst sheetElement = sheet as SchmancySheet\n\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tif (sheetElement) {\n\t\t\t\t\t\t\t\tconst uid = sheetElement.getAttribute('uid')\n\t\t\t\t\t\t\t\tif (uid) {\n\t\t\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\t\t\tthis.sheetComponents.delete(uid)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\t\tconst persistAttr = sheetElement.getAttribute('persist')\n\t\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\t\tsheetElement.remove()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the sheet closing/dismissal logic\n\t */\n\tprivate setupSheetDismissLogic() {\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response, uid]) => {\n\t\t\t\t\tif (response?.sheet) {\n\t\t\t\t\t\tresponse.sheet.closeSheet()\n\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t} else {\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\tthis.$dismiss.next(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n\t/**\n\t * Gets the component instance for a given sheet\n\t * @param uid - The unique identifier of the sheet\n\t * @returns The component instance, or undefined if not found\n\t */\n\tgetComponent<T extends HTMLElement = HTMLElement>(uid: string): T | undefined {\n\t\treturn this.sheetComponents.get(uid) as T | undefined\n\t}\n}\nexport const sheet = new BottomSheetService()\n"],"names":["SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","constructor","this","bottomSheet","Subject","$dismiss","activeSheets","Set","sheetComponents","Map","popStateListenerActive","setupSheetOpeningLogic","setupSheetDismissLogic","setupPopStateListener","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","ThemeHereIAm","theme","of","target","tap","uid","component","tagName","dispatchEvent","CustomEvent","bubbles","composed","ThemeWhereAreYou","existingSheet","targetContainer","parentElement","document","querySelector","body","createElement","setAttribute","appendChild","lock","position","innerWidth","title","persist","String","header","handleHistory","style","overflow","delay","onBeforeOpen","shadowRoot","assignedElements","find","HTMLElement","Date","now","add","set","historyState","schmancySheet","timestamp","history","pushState","location","href","onAfterOpen","take","subscribe","_","sheetElement","getAttribute","delete","persistAttr","remove","mergeMap","response","closeSheet","event","size","lastSheet","Array","from","pop","dismiss","state","sheetsArray","length","next","has","closeAll","forEach","get"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Subject as l, switchMap as v, forkJoin as w, fromEvent as a, of as S, takeUntil as c, timer as d, map as r, defaultIfEmpty as m, tap as h, delay as u, take as y, mergeMap as g } from "rxjs";
|
|
2
|
-
import { a as A, T as E } from "./theme.component-
|
|
2
|
+
import { a as A, T as E } from "./theme.component-C-PfGTcN.js";
|
|
3
3
|
var C = ((e) => (e.Side = "side", e.Bottom = "bottom", e))(C || {});
|
|
4
4
|
const b = "are-you-there-sheet", f = "yes-here", k = new class {
|
|
5
5
|
constructor() {
|
|
@@ -84,4 +84,4 @@ export {
|
|
|
84
84
|
f as b,
|
|
85
85
|
k as s
|
|
86
86
|
};
|
|
87
|
-
//# sourceMappingURL=sheet.service-
|
|
87
|
+
//# sourceMappingURL=sheet.service-DZGMoIHy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.service-DZGMoIHy.js","sources":["../src/sheet/sheet.service.ts"],"sourcesContent":["import {\n\tdefaultIfEmpty,\n\tdelay,\n\tforkJoin,\n\tfromEvent,\n\tmap,\n\tmergeMap,\n\tof,\n\tSubject,\n\tswitchMap,\n\ttake,\n\ttakeUntil,\n\ttap,\n\ttimer,\n} from 'rxjs'\nimport { ThemeHereIAm, ThemeHereIAmEvent, ThemeWhereAreYou } from '../theme/theme.component'\nimport SchmancySheet from './sheet'\n\nexport enum SchmancySheetPosition {\n\tSide = 'side',\n\tBottom = 'bottom',\n}\n\nexport type SheetConfig = {\n\tcomponent: HTMLElement\n\tuid?: string\n\tposition?: SchmancySheetPosition\n\tpersist?: boolean\n\tclose?: () => void\n\tlock?: boolean // Controls both ESC and overlay click dismissal\n\thandleHistory?: boolean // Controls browser back button behavior\n\ttitle?: string\n\theader?: 'hidden' | 'visible'\n\tonBeforeOpen?: (component: HTMLElement) => void\n\tonAfterOpen?: (component: HTMLElement) => void\n}\n\n// Keep old name for backward compatibility\ntype BottomSheeetTarget = SheetConfig\n\n// Events for communication between bottom-sheet component and bottom-sheet.service\nexport type SheetWhereAreYouRickyEvent = CustomEvent<{\n\tuid: string\n}>\nexport const SheetWhereAreYouRicky = 'are-you-there-sheet'\n\nexport type SheetHereMortyEvent = CustomEvent<{\n\tsheet?: SchmancySheet\n\ttheme?: HTMLElement\n}>\nexport const SheetHereMorty = 'yes-here'\n\n// Function to determine the position based on screen size\nconst getPosition = (): SchmancySheetPosition => {\n\treturn window.innerWidth >= 768 ? SchmancySheetPosition.Side : SchmancySheetPosition.Bottom // Adjust 768 as needed for your breakpoint\n}\n\nclass BottomSheetService {\n\tbottomSheet = new Subject<BottomSheeetTarget>()\n\t$dismiss = new Subject<string>()\n\t// Track currently open sheets\n\tprivate activeSheets = new Set<string>()\n\t// Track sheet components for retrieval\n\tprivate sheetComponents = new Map<string, HTMLElement>()\n\t// To track if we've set up the popstate listener\n\tprivate popStateListenerActive = false\n\n\tconstructor() {\n\t\tthis.setupSheetOpeningLogic()\n\t\tthis.setupSheetDismissLogic()\n\t\tthis.setupPopStateListener()\n\t}\n\n\t/**\n\t * Sets up the main sheet opening logic\n\t */\n\tprivate setupSheetOpeningLogic() {\n\t\tthis.bottomSheet\n\t\t\t.pipe(\n\t\t\t\tswitchMap(target =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\t// First check for existing sheet\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\t// Then find theme container\n\t\t\t\t\t\tfromEvent<ThemeHereIAmEvent>(window, ThemeHereIAm).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(50)),\n\t\t\t\t\t\t\tmap(e => e.detail.theme),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(target).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\t// Determine uid - use provided uid or component tagName\n\t\t\t\t\t\t\t\tconst uid = target.uid ?? target.component.tagName\n\n\t\t\t\t\t\t\t\t// First ask for existing sheet\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(SheetWhereAreYouRicky, {\n\t\t\t\t\t\t\t\t\t\tdetail: { uid },\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t// Then ask for theme container\n\t\t\t\t\t\t\t\twindow.dispatchEvent(\n\t\t\t\t\t\t\t\t\tnew CustomEvent(ThemeWhereAreYou, {\n\t\t\t\t\t\t\t\t\t\tbubbles: true,\n\t\t\t\t\t\t\t\t\t\tcomposed: true,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\n\t\t\t\tmap(([existingSheet, theme, target]) => {\n\t\t\t\t\tlet sheet = existingSheet?.sheet\n\t\t\t\t\tlet targetContainer: HTMLElement\n\n\t\t\t\t\tif (sheet) {\n\t\t\t\t\t\t// Use existing sheet\n\t\t\t\t\t\ttargetContainer = sheet.parentElement as HTMLElement\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Determine container - use theme from discovery or fallback\n\t\t\t\t\t\ttargetContainer = theme || (document.querySelector('schmancy-theme') as HTMLElement) || document.body\n\n\t\t\t\t\t\t// Create new sheet\n\t\t\t\t\t\tconst uid = target.uid ?? target.component.tagName\n\t\t\t\t\t\tsheet = document.createElement('schmancy-sheet')\n\t\t\t\t\t\tsheet.setAttribute('uid', uid)\n\t\t\t\t\t\ttargetContainer.appendChild(sheet)\n\t\t\t\t\t}\n\n\t\t\t\t\ttarget.lock && sheet.setAttribute('lock', 'true')\n\n\t\t\t\t\t// Use the dynamic position function here\n\t\t\t\t\tconst position = target.position || getPosition()\n\t\t\t\t\tsheet.setAttribute('position', position)\n\n\t\t\t\t\ttarget.title && sheet.setAttribute('title', target.title)\n\t\t\t\t\ttarget.persist && sheet.setAttribute('persist', String(target.persist))\n\t\t\t\t\ttarget.header && sheet.setAttribute('header', target.header)\n\n\t\t\t\t\t// Handle history logic if the property exists\n\t\t\t\t\tif (target.handleHistory !== undefined) {\n\t\t\t\t\t\tsheet.setAttribute('handleHistory', String(target.handleHistory))\n\t\t\t\t\t}\n\n\t\t\t\t\tdocument.body.style.overflow = 'hidden' // lock the scroll of the host\n\t\t\t\t\treturn { target, sheet: sheet as SchmancySheet }\n\t\t\t\t}),\n\t\t\t\tdelay(20),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\t// Call onBeforeOpen callback if provided\n\t\t\t\t\tif (target.onBeforeOpen) {\n\t\t\t\t\t\ttarget.onBeforeOpen(target.component)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Handle HTMLElement components\n\t\t\t\t\tconst assignedElements = sheet?.shadowRoot?.querySelector('slot')?.assignedElements() || []\n\n\t\t\t\t\tconst existingComponent = assignedElements.find(e => (e as HTMLElement).tagName === target.component.tagName)\n\n\t\t\t\t\tif (!existingComponent) {\n\t\t\t\t\t\t// Need to append the component\n\t\t\t\t\t\tsheet?.appendChild(target.component)\n\t\t\t\t\t} else {\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tdelay(1),\n\t\t\t\ttap(({ target, sheet }) => {\n\t\t\t\t\tsheet?.setAttribute('open', 'true')\n\n\t\t\t\t\t// Add to active sheets tracking\n\t\t\t\t\tconst uid =\n\t\t\t\t\t\ttarget.uid ?? (target.component instanceof HTMLElement ? target.component.tagName : `sheet-${Date.now()}`)\n\t\t\t\t\tthis.activeSheets.add(uid)\n\t\t\t\t\tthis.sheetComponents.set(uid, target.component)\n\n\t\t\t\t\t// Handle history integration - default to true if not specified\n\t\t\t\t\tconst shouldHandleHistory = target.handleHistory !== false\n\n\t\t\t\t\tif (shouldHandleHistory) {\n\t\t\t\t\t\t// Use history state to track this specific sheet\n\t\t\t\t\t\tconst historyState = {\n\t\t\t\t\t\t\tschmancySheet: true,\n\t\t\t\t\t\t\tuid: uid,\n\t\t\t\t\t\t\ttimestamp: Date.now(),\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Push a new history state\n\t\t\t\t\t\thistory.pushState(historyState, '', window.location.href)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Call onAfterOpen callback if provided\n\t\t\t\t\tif (target.onAfterOpen) {\n\t\t\t\t\t\ttarget.onAfterOpen(target.component)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Set up close event listener (always, not just for new sheets)\n\t\t\t\t\tfromEvent<CustomEvent>(sheet, 'close')\n\t\t\t\t\t\t.pipe(take(1))\n\t\t\t\t\t\t.pipe(delay(300))\n\t\t\t\t\t\t.subscribe(_ => {\n\t\t\t\t\t\t\t// Use the sheet reference directly, not e.target\n\t\t\t\t\t\t\tconst sheetElement = sheet as SchmancySheet\n\n\t\t\t\t\t\t\t// Remove from active sheets tracking\n\t\t\t\t\t\t\tif (sheetElement) {\n\t\t\t\t\t\t\t\tconst uid = sheetElement.getAttribute('uid')\n\t\t\t\t\t\t\t\tif (uid) {\n\t\t\t\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t\t\t\t\tthis.sheetComponents.delete(uid)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Only keep sheet if persist is explicitly set to a truthy value\n\t\t\t\t\t\t\t\tconst persistAttr = sheetElement.getAttribute('persist')\n\t\t\t\t\t\t\t\tconst shouldRemove = !persistAttr || persistAttr === 'false'\n\n\t\t\t\t\t\t\t\tif (shouldRemove) {\n\t\t\t\t\t\t\t\t\tsheetElement.remove()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'auto' // unlock the scroll of the host\n\t\t\t\t\t\t})\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the sheet closing/dismissal logic\n\t */\n\tprivate setupSheetDismissLogic() {\n\t\tthis.$dismiss\n\t\t\t.pipe(\n\t\t\t\tmergeMap(uid =>\n\t\t\t\t\tforkJoin([\n\t\t\t\t\t\tfromEvent<SheetHereMortyEvent>(window, SheetHereMorty).pipe(\n\t\t\t\t\t\t\ttakeUntil(timer(100)),\n\t\t\t\t\t\t\tmap(e => e.detail),\n\t\t\t\t\t\t\tdefaultIfEmpty(undefined),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tof(uid).pipe(\n\t\t\t\t\t\t\ttap(() => {\n\t\t\t\t\t\t\t\twindow.dispatchEvent(new CustomEvent(SheetWhereAreYouRicky, { detail: { uid } }))\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t),\n\t\t\t\t\t]),\n\t\t\t\t),\n\t\t\t\ttap(([response, uid]) => {\n\t\t\t\t\tif (response?.sheet) {\n\t\t\t\t\t\tresponse.sheet.closeSheet()\n\t\t\t\t\t\tthis.activeSheets.delete(uid)\n\t\t\t\t\t} else {\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.subscribe()\n\t}\n\n\t/**\n\t * Sets up the popstate listener to handle browser back button\n\t */\n\tprivate setupPopStateListener() {\n\t\tif (this.popStateListenerActive) return\n\n\t\tfromEvent<PopStateEvent>(window, 'popstate').subscribe(event => {\n\t\t\t// If we have active sheets, close the most recently opened one\n\t\t\tif (this.activeSheets.size > 0) {\n\t\t\t\t// Get the last sheet (Set maintains insertion order)\n\t\t\t\tconst lastSheet = Array.from(this.activeSheets).pop()\n\t\t\t\tif (lastSheet) {\n\t\t\t\t\tthis.dismiss(lastSheet)\n\n\t\t\t\t\t// Prevent default navigation behavior by pushing a new state\n\t\t\t\t\t// This effectively cancels out the back navigation\n\t\t\t\t\tif (event.state && event.state.schmancySheet) {\n\t\t\t\t\t\thistory.pushState({}, '', window.location.href)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tthis.popStateListenerActive = true\n\t}\n\n\t/**\n\t * Dismiss a sheet by uid, or dismiss the most recently opened sheet if no uid provided\n\t */\n\tdismiss(uid?: string) {\n\t\tif (!uid && this.activeSheets.size > 0) {\n\t\t\t// Get the last sheet opened (Set maintains insertion order)\n\t\t\tconst sheetsArray = Array.from(this.activeSheets)\n\t\t\tuid = sheetsArray[sheetsArray.length - 1]\n\t\t}\n\n\t\tif (uid) {\n\t\t\tthis.$dismiss.next(uid)\n\t\t}\n\t}\n\n\t/**\n\t * Open a sheet with the given target configuration\n\t */\n\topen(target: BottomSheeetTarget) {\n\t\tthis.bottomSheet.next(target)\n\t}\n\n\t/**\n\t * Check if a sheet is currently open by uid\n\t */\n\tisOpen(uid: string): boolean {\n\t\treturn this.activeSheets.has(uid)\n\t}\n\n\t/**\n\t * Close all open sheets\n\t */\n\tcloseAll() {\n\t\t// Copy the set to avoid modification during iteration\n\t\tArray.from(this.activeSheets).forEach(uid => {\n\t\t\tthis.dismiss(uid)\n\t\t})\n\t}\n\n\t/**\n\t * Gets the component instance for a given sheet\n\t * @param uid - The unique identifier of the sheet\n\t * @returns The component instance, or undefined if not found\n\t */\n\tgetComponent<T extends HTMLElement = HTMLElement>(uid: string): T | undefined {\n\t\treturn this.sheetComponents.get(uid) as T | undefined\n\t}\n}\nexport const sheet = new BottomSheetService()\n"],"names":["SchmancySheetPosition","SheetWhereAreYouRicky","SheetHereMorty","sheet","constructor","this","bottomSheet","Subject","$dismiss","activeSheets","Set","sheetComponents","Map","popStateListenerActive","setupSheetOpeningLogic","setupSheetDismissLogic","setupPopStateListener","pipe","switchMap","forkJoin","fromEvent","window","takeUntil","timer","map","e","detail","defaultIfEmpty","ThemeHereIAm","theme","of","target","tap","uid","component","tagName","dispatchEvent","CustomEvent","bubbles","composed","ThemeWhereAreYou","existingSheet","targetContainer","parentElement","document","querySelector","body","createElement","setAttribute","appendChild","lock","position","innerWidth","title","persist","String","header","handleHistory","style","overflow","delay","onBeforeOpen","shadowRoot","assignedElements","find","HTMLElement","Date","now","add","set","historyState","schmancySheet","timestamp","history","pushState","location","href","onAfterOpen","take","subscribe","_","sheetElement","getAttribute","delete","persistAttr","remove","mergeMap","response","closeSheet","event","size","lastSheet","Array","from","pop","dismiss","state","sheetsArray","length","next","has","closeAll","forEach","get"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const u=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("./litElement.mixin-
|
|
1
|
+
"use strict";const u=require("rxjs");require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const p=require("./litElement.mixin-4iclDbF3.cjs");require("./tailwind.mixin-Bwf86oi5.cjs");const o=require("lit/decorators.js"),d=require("lit"),m=require("lit/directives/cache.js"),S=require("rxjs/operators");var f=Object.defineProperty,v=Object.getOwnPropertyDescriptor,c=(t,s,i,l)=>{for(var r,e=l>1?void 0:l?v(s,i):s,n=t.length-1;n>=0;n--)(r=t[n])&&(e=(l?r(s,i,e):r(e))||e);return l&&e&&f(s,i,e),e};exports.SchmancySlide=class extends p.$LitElement(d.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
scroll-snap-align: center; /* If your slider uses scroll-snap */
|
|
@@ -80,4 +80,4 @@
|
|
|
80
80
|
</div>
|
|
81
81
|
</div>
|
|
82
82
|
`}},a([o.state()],exports.SchmancySlider.prototype,"selectedIndex",2),a([o.property({type:Boolean})],exports.SchmancySlider.prototype,"showArrows",2),a([o.query("#slider")],exports.SchmancySlider.prototype,"slider",2),a([o.query("slot")],exports.SchmancySlider.prototype,"defaultSlot",2),exports.SchmancySlider=a([o.customElement("schmancy-slider")],exports.SchmancySlider);
|
|
83
|
-
//# sourceMappingURL=slider-
|
|
83
|
+
//# sourceMappingURL=slider-BfNNQ6qI.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider-BwXXp74f.cjs","sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`) {\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends $LitElement(css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`) {\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"names":["SchmancySlide","$LitElement","css","constructor","super","arguments","this","type","src","alt","controls","autoplay","loop","muted","fit","render","html","cache","renderSlide","__decorateClass","property","String","prototype","Boolean","customElement","SchmancySlider","selectedIndex","showArrows","slider","scrollLeft","fromEvent","pipe","throttleTime","trailing","subscribe","updateSelectedIndexOnScroll","slides","defaultSlot","assignedElements","flatten","length","oldIndex","sliderCenter","clientWidth","closestIndex","closestDistance","Infinity","forEach","slide","index","itemCenter","offsetLeft","distance","Math","abs","dispatchEvent","CustomEvent","detail","newIndex","scrollTo","left","behavior","onPrevClick","goToSlide","onNextClick","map","_","isSelected","state","query"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider-BfNNQ6qI.cjs","sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`) {\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends $LitElement(css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`) {\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"names":["SchmancySlide","$LitElement","css","constructor","super","arguments","this","type","src","alt","controls","autoplay","loop","muted","fit","render","html","cache","renderSlide","__decorateClass","property","String","prototype","Boolean","customElement","SchmancySlider","selectedIndex","showArrows","slider","scrollLeft","fromEvent","pipe","throttleTime","trailing","subscribe","updateSelectedIndexOnScroll","slides","defaultSlot","assignedElements","flatten","length","oldIndex","sliderCenter","clientWidth","closestIndex","closestDistance","Infinity","forEach","slide","index","itemCenter","offsetLeft","distance","Math","abs","dispatchEvent","CustomEvent","detail","newIndex","scrollTo","left","behavior","onPrevClick","goToSlide","onNextClick","map","_","isSelected","state","query"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { fromEvent as g } from "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { $ as f } from "./litElement.mixin-
|
|
5
|
-
import "./tailwind.mixin-
|
|
4
|
+
import { $ as f } from "./litElement.mixin-SeAIQuRg.js";
|
|
5
|
+
import "./tailwind.mixin-kvywknTU.js";
|
|
6
6
|
import { property as d, customElement as m, state as x, query as y } from "lit/decorators.js";
|
|
7
7
|
import { css as v, html as c } from "lit";
|
|
8
8
|
import { cache as S } from "lit/directives/cache.js";
|
|
@@ -158,4 +158,4 @@ export {
|
|
|
158
158
|
i as S,
|
|
159
159
|
h as a
|
|
160
160
|
};
|
|
161
|
-
//# sourceMappingURL=slider-
|
|
161
|
+
//# sourceMappingURL=slider-DERHNjqI.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slider-CxZGMYF-.js","sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`) {\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends $LitElement(css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`) {\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"names":["SchmancySlide","$LitElement","css","constructor","super","arguments","this","type","src","alt","controls","autoplay","loop","muted","fit","render","html","cache","renderSlide","__decorateClass","property","String","prototype","Boolean","customElement","SchmancySlider","selectedIndex","showArrows","slider","scrollLeft","fromEvent","pipe","throttleTime","trailing","subscribe","updateSelectedIndexOnScroll","slides","defaultSlot","assignedElements","flatten","length","oldIndex","sliderCenter","clientWidth","closestIndex","closestDistance","Infinity","forEach","slide","index","itemCenter","offsetLeft","distance","Math","abs","dispatchEvent","CustomEvent","detail","newIndex","scrollTo","left","behavior","onPrevClick","goToSlide","onNextClick","map","_","isSelected","state","query"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"slider-DERHNjqI.js","sources":["../src/slider/slide.ts","../src/slider/slider.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { cache } from 'lit/directives/cache.js'\n\n/**\n * Supported slide \"types.\"\n * - 'image': Renders an <img>\n * - 'video': Renders a <video>\n * - 'content': Renders a <slot> (the default)\n */\ntype SlideType = 'image' | 'video' | 'content'\n\n/**\n * Allowed values for the 'fit' property,\n * which maps to CSS object-fit.\n */\ntype ObjectFit = 'cover' | 'contain' | 'fill' | 'scale-down' | 'none'\n\n@customElement('schmancy-slide')\nexport class SchmancySlide extends $LitElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tscroll-snap-align: center; /* If your slider uses scroll-snap */\n\t}\n\n\t.slide {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tobject-fit: var(--object-fit, cover);\n\t}\n`) {\n\t/**\n\t * Determines how this slide should be rendered.\n\t * Defaults to 'content' if not provided.\n\t */\n\t@property({ type: String }) type: SlideType = 'content'\n\n\t/**\n\t * Source for images or videos (if `type` is 'image' or 'video').\n\t */\n\t@property({ type: String }) src: string = ''\n\n\t/**\n\t * Alternate text for images.\n\t */\n\t@property({ type: String }) alt: string = ''\n\n\t/**\n\t * Whether to show default video controls (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) controls = true\n\n\t/**\n\t * Whether the video should autoplay (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) autoplay = false\n\n\t/**\n\t * Whether the video should loop (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) loop = false\n\n\t/**\n\t * Whether the video is muted (if `type` is 'video').\n\t */\n\t@property({ type: Boolean }) muted = false\n\n\t/**\n\t * CSS `object-fit` property, applied to images/videos.\n\t */\n\t@property({ type: String }) fit: ObjectFit = 'cover'\n\n\trender() {\n\t\treturn html` <div style=\"--object-fit: ${this.fit}\">${cache(this.renderSlide())}</div> `\n\t}\n\n\tprivate renderSlide() {\n\t\tswitch (this.type) {\n\t\t\tcase 'image':\n\t\t\t\treturn html` <img class=\"slide\" src=\"${this.src}\" alt=\"${this.alt}\" loading=\"lazy\" /> `\n\t\t\tcase 'video':\n\t\t\t\treturn html`\n\t\t\t\t\t<video\n\t\t\t\t\t\tclass=\"slide\"\n\t\t\t\t\t\tsrc=\"${this.src}\"\n\t\t\t\t\t\t?controls=\"${this.controls}\"\n\t\t\t\t\t\t?autoplay=\"${this.autoplay}\"\n\t\t\t\t\t\t?loop=\"${this.loop}\"\n\t\t\t\t\t\t?muted=\"${this.muted}\"\n\t\t\t\t\t>\n\t\t\t\t\t\tYour browser does not support HTML video.\n\t\t\t\t\t</video>\n\t\t\t\t`\n\t\t\tcase 'content':\n\t\t\tdefault:\n\t\t\t\treturn html`<slot></slot>`\n\t\t}\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slide': SchmancySlide\n\t}\n}\n","import { $LitElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { fromEvent } from 'rxjs'\nimport { throttleTime } from 'rxjs/operators'\n\n@customElement('schmancy-slider')\nexport class SchmancySlider extends $LitElement(css`\n\t.slider {\n\t\t/* Lay out slides horizontally, one after another */\n\t\tdisplay: flex;\n\t\toverflow-x: auto;\n\n\t\t/* Optional: scroll snapping */\n\t\tscroll-snap-type: x mandatory;\n\n\t\t/* Hide scrollbars */\n\t\t-ms-overflow-style: none; /* IE and Edge */\n\t\tscrollbar-width: none; /* Firefox */\n\t}\n\t.slider::-webkit-scrollbar {\n\t\tdisplay: none; /* Chrome, Safari, Opera */\n\t}\n\n\t/* \n Ensure each slide takes up the full slider width.\n \"schmancy-slide\" is the child custom element.\n */\n\t::slotted(schmancy-slide) {\n\t\tflex: 0 0 100%;\n\t\tbox-sizing: border-box;\n\t}\n`) {\n\t/**\n\t * Currently centered slide index\n\t */\n\t@state() private selectedIndex: number = 0\n\n\t/**\n\t * If true, renders next/prev buttons\n\t */\n\t@property({ type: Boolean }) showArrows: boolean = true\n\n\t@query('#slider') private slider!: HTMLDivElement\n\t@query('slot') private defaultSlot!: HTMLSlotElement\n\n\tprotected firstUpdated() {\n\t\t// Start at leftmost position\n\t\tthis.slider.scrollLeft = 0\n\n\t\t// Throttle scroll events to update selected index\n\t\tfromEvent(this.slider, 'scroll')\n\t\t\t.pipe(throttleTime(100, undefined, { trailing: true }))\n\t\t\t.subscribe(() => {\n\t\t\t\tthis.updateSelectedIndexOnScroll()\n\t\t\t})\n\t}\n\n\tprivate updateSelectedIndexOnScroll() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides.length) return\n\n\t\tconst oldIndex = this.selectedIndex\n\n\t\t// Center of the slider’s visible area\n\t\tconst sliderCenter = this.slider.scrollLeft + this.slider.clientWidth / 2\n\n\t\tlet closestIndex = 0\n\t\tlet closestDistance = Infinity\n\n\t\tslides.forEach((slide, index) => {\n\t\t\tconst itemStart = (slide as HTMLElement).offsetLeft\n\t\t\tconst itemCenter = itemStart + slide.clientWidth / 2\n\t\t\tconst distance = Math.abs(sliderCenter - itemCenter)\n\n\t\t\tif (distance < closestDistance) {\n\t\t\t\tclosestDistance = distance\n\t\t\t\tclosestIndex = index\n\t\t\t}\n\t\t})\n\n\t\tthis.selectedIndex = closestIndex\n\n\t\t// If the index changed, dispatch event\n\t\tif (this.selectedIndex !== oldIndex) {\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('slide-changed', {\n\t\t\t\t\tdetail: { index: this.selectedIndex },\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate goToSlide(newIndex: number) {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (!slides[newIndex]) return\n\n\t\tthis.slider.scrollTo({\n\t\t\tleft: (slides[newIndex] as HTMLElement).offsetLeft,\n\t\t\tbehavior: 'smooth',\n\t\t})\n\t}\n\n\tprivate onPrevClick() {\n\t\tthis.goToSlide(this.selectedIndex - 1)\n\t}\n\n\tprivate onNextClick() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\t\tif (this.selectedIndex < slides.length - 1) {\n\t\t\tthis.goToSlide(this.selectedIndex + 1)\n\t\t}\n\t}\n\n\trender() {\n\t\tconst slides = this.defaultSlot?.assignedElements({ flatten: true }) ?? []\n\n\t\treturn html`\n\t\t\t<div class=\"relative inset-0\">\n\t\t\t\t<!-- The scrollable track -->\n\t\t\t\t<div class=\"slider\" id=\"slider\">\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\n\t\t\t\t<!-- Next/Prev Buttons (Optional) -->\n\t\t\t\t${this.showArrows\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute left-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onPrevClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === 0}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_left\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t\t<schmancy-icon-button\n\t\t\t\t\t\t\t\tclass=\"absolute right-2 top-1/2 -translate-y-1/2\"\n\t\t\t\t\t\t\t\t@click=${this.onNextClick}\n\t\t\t\t\t\t\t\t?disabled=${this.selectedIndex === slides.length - 1}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tchevron_right\n\t\t\t\t\t\t\t</schmancy-icon-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t: null}\n\n\t\t\t\t<!-- Dots / indicators -->\n\t\t\t\t<div class=\"absolute bottom-4 left-1/2 -translate-x-1/2 flex space-x-2\">\n\t\t\t\t\t${slides.map((_, index) => {\n\t\t\t\t\t\tconst isSelected = index === this.selectedIndex\n\t\t\t\t\t\treturn html`\n\t\t\t\t\t\t\t<schmancy-button .variant=${isSelected ? 'filled tonal' : 'outlined'} class=\"rounded-full \">\n\t\t\t\t\t\t\t</schmancy-button>\n\t\t\t\t\t\t`\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-slider': SchmancySlider\n\t}\n}\n"],"names":["SchmancySlide","$LitElement","css","constructor","super","arguments","this","type","src","alt","controls","autoplay","loop","muted","fit","render","html","cache","renderSlide","__decorateClass","property","String","prototype","Boolean","customElement","SchmancySlider","selectedIndex","showArrows","slider","scrollLeft","fromEvent","pipe","throttleTime","trailing","subscribe","updateSelectedIndexOnScroll","slides","defaultSlot","assignedElements","flatten","length","oldIndex","sliderCenter","clientWidth","closestIndex","closestDistance","Infinity","forEach","slide","index","itemCenter","offsetLeft","distance","Math","abs","dispatchEvent","CustomEvent","detail","newIndex","scrollTo","left","behavior","onPrevClick","goToSlide","onNextClick","map","_","isSelected","state","query"],"mappings":"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"}
|
package/dist/slider.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./slider-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./slider-BfNNQ6qI.cjs");Object.defineProperty(exports,"SchmancySlide",{enumerable:!0,get:()=>e.SchmancySlide}),Object.defineProperty(exports,"SchmancySlider",{enumerable:!0,get:()=>e.SchmancySlider});
|
|
2
2
|
//# sourceMappingURL=slider.cjs.map
|
package/dist/slider.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "rxjs";
|
|
2
2
|
import "lit/directives/class-map.js";
|
|
3
3
|
import "lit/directives/style-map.js";
|
|
4
|
-
import { T as d } from "./tailwind.mixin-
|
|
4
|
+
import { T as d } from "./tailwind.mixin-kvywknTU.js";
|
|
5
5
|
import { customElement as y, property as l } from "lit/decorators.js";
|
|
6
6
|
import { css as u, html as p } from "lit";
|
|
7
7
|
var v = Object.getOwnPropertyDescriptor;
|
|
@@ -132,4 +132,4 @@ let n = class extends d(u`
|
|
|
132
132
|
}
|
|
133
133
|
};
|
|
134
134
|
c([l({ type: String, reflect: !0 })], n.prototype, "color", 2), c([l({ type: Number })], n.prototype, "size", 2), c([l({ type: Boolean })], n.prototype, "glass", 2), n = c([y("schmancy-spinner")], n);
|
|
135
|
-
//# sourceMappingURL=spinner-
|
|
135
|
+
//# sourceMappingURL=spinner-BOdUWwXq.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-
|
|
1
|
+
{"version":3,"file":"spinner-BOdUWwXq.js","sources":["../src/busy/busy.ts","../src/busy/spinner.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-busy')\nexport default class SchmancyBusy extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline;\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tpointer-events: all;\n\t\tz-index: 50;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<!-- Clean overlay with subtle backdrop -->\n\t\t\t<div class=\"absolute inset-0 flex items-center justify-center bg-surface-container/10 backdrop-blur-xs rounded-[inherit]\">\n\t\t\t\t<!-- Content container with clean surface -->\n\t\t\t\t<div class=\"relative flex items-center justify-center p-4\">\n\t\t\t\t\t\n\t\t\t\t\t<!-- Content slot -->\n\t\t\t\t\t<div class=\"relative z-10\">\n\t\t\t\t\t\t<slot>\n\t\t\t\t\t\t\t<!-- Default spinner if no content provided -->\n\t\t\t\t\t\t\t<schmancy-spinner size=\"32px\"></schmancy-spinner>\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-busy': SchmancyBusy\n\t}\n}","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-spinner')\nexport default class SchmnacySpinner extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tcolor: var(--schmancy-sys-color-primary-default);\n\t}\n\n\t:host([color=\"primary\"]) {\n\t\tcolor: var(--schmancy-sys-color-primary-default);\n\t}\n\n\t:host([color=\"secondary\"]) {\n\t\tcolor: var(--schmancy-sys-color-secondary-default);\n\t}\n\n\t:host([color=\"tertiary\"]) {\n\t\tcolor: var(--schmancy-sys-color-tertiary-default);\n\t}\n\n\t:host([color=\"error\"]) {\n\t\tcolor: var(--schmancy-sys-color-error-default);\n\t}\n\n\t:host([color=\"success\"]) {\n\t\tcolor: var(--schmancy-sys-color-success-default);\n\t}\n\n\t:host([color=\"surface\"]) {\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\n\t:host([color=\"surface-variant\"]) {\n\t\tcolor: var(--schmancy-sys-color-surface-onVariant);\n\t}\n\n\t.spinner {\n\t\tanimation: spin 1s linear infinite;\n\t\tanimation-direction: reverse;\n\t}\n\n\t@keyframes spin {\n\t\tfrom {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n`) {\n\t@property({ type: String, reflect: true }) color: 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'surface' | 'surface-variant' = 'primary'\n\t@property({ type: Number }) size: number = 6\n\t@property({ type: Boolean }) glass: boolean = false\n\n\tprotected render(): unknown {\n\t\t// Use Tailwind sizing system: size-4 = 1rem = 16px\n\t\t// Each unit is 0.25rem, so size 4 = 1rem, size 6 = 1.5rem, etc.\n\t\t// Fallback to size 6 (24px) if value is invalid\n\t\tconst validSize = typeof this.size === 'number' && !isNaN(this.size) ? this.size : 6\n\t\tconst sizeInRem = `${validSize * 0.25}rem`\n\t\tconst style = {\n\t\t\twidth: sizeInRem,\n\t\t\theight: sizeInRem,\n\t\t}\n\t\t\n\t\treturn this.glass ? html`\n\t\t\t<div class=\"spinner relative\" style=${this.styleMap(style)}>\n\t\t\t\t<!-- Glass container with Apple-style effect -->\n\t\t\t\t<div class=\"absolute inset-0 rounded-full backdrop-blur-xl backdrop-saturate-150 \n\t\t\t\t\t\t\tbg-surface-container/20 \n\t\t\t\t\t\t\tshadow-[inset_0_1px_1px_0_rgba(255,255,255,0.2)]\n\t\t\t\t\t\t\tborder border-outline/30\"></div>\n\t\t\t\t\n\t\t\t\t<!-- Spinner SVG -->\n\t\t\t\t<svg fill=\"none\" viewBox=\"0 0 16 16\" aria-hidden=\"true\" role=\"img\" \n\t\t\t\t\t style=\"width: 100%; height: 100%;\" class=\"relative z-10\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\".7\"\n\t\t\t\t\t\td=\"M8 15A7 7 0 108 1a7 7 0 000 14v0z\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path d=\"M15 8a7 7 0 01-7 7\" stroke=\"currentColor\" stroke-width=\"2\"></path>\n\t\t\t\t\t<path d=\"M8 12a4 4 0 100-8 4 4 0 000 8z\" fill=\"currentColor\" opacity=\"0.8\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t` : html`\n\t\t\t<div class=\"spinner\" style=${this.styleMap(style)}>\n\t\t\t\t<svg fill=\"none\" viewBox=\"0 0 16 16\" aria-hidden=\"true\" role=\"img\" style=\"width: 100%; height: 100%;\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\".5\"\n\t\t\t\t\t\td=\"M8 15A7 7 0 108 1a7 7 0 000 14v0z\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path d=\"M15 8a7 7 0 01-7 7\" stroke=\"currentColor\" stroke-width=\"2\"></path>\n\t\t\t\t\t<path d=\"M8 12a4 4 0 100-8 4 4 0 000 8z\" fill=\"currentColor\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-spinner': SchmnacySpinner\n\t}\n}\n"],"names":["SchmancyBusy","TailwindElement","css","render","html","customElement","SchmnacySpinner","super","arguments","this","color","size","glass","sizeInRem","isNaN","style","width","height","styleMap","__decorateClass","property","type","String","reflect","prototype","Number","Boolean"],"mappings":";;;;;;;AAKA,IAAqBA,IAArB,cAA0CC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAS/C,SAAAC;AACT,WAAOC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAgBR;AAAA;AA1BoBJ;;;GAArB,CADCK,EAAc,mBACML,CAAAA;;;;;ACArB,IAAqBM,IAArB,cAA6CL,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA7D,EAAA;AAAA,EAAA;AAAAK,UAAAA,GAAAC,SAAAA,GAgD4CC,KAAAC,QAAoG,WACnHD,KAAAE,OAAe,GACdF,KAAAG;EAAiB;AAAA,EAEpC,SAAAT;AAIT,UACMU,IAA2B,QADM,OAAdJ,KAAKE,QAAS,YAAaG,MAAML,KAAKE,IAAAA,IAAoB,IAAZF,KAAKE,QAC1D,OACZI,IAAQ,EACbC,OAAOH,GACPI,QAAQJ;AAGT,WAAOJ,KAAKG,QAAQR;AAAAA,yCACmBK,KAAKS,SAASH,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAoBjDX;AAAAA,gCAC0BK,KAAKS,SAASH,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAa7C;AAAA;AAlD2CI,EAAA,CAA1CC,EAAS,EAAEC,MAAMC,QAAQC,SAAAA,GAAS,CAAA,CAAA,GAhDfjB,EAgDuBkB,WAAA,SAAA,CAAA,GACfL,EAAA,CAA3BC,EAAS,EAAEC,MAAMI,OAAAA,CAAAA,CAAAA,GAjDEnB,EAiDQkB,WAAA,QAAA,CAAA,GACCL,EAAA,CAA5BC,EAAS,EAAEC,MAAMK,QAAAA,CAAAA,CAAAA,GAlDEpB,EAkDSkB,WAAA,SAAA,CAAA,GAlDTlB,IAArBa,EAAA,CADCd,EAAc,kBAAA,CAAA,GACMC,CAAAA;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-
|
|
1
|
+
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const d=require("./tailwind.mixin-Bwf86oi5.cjs"),n=require("lit/decorators.js"),c=require("lit");var y=Object.getOwnPropertyDescriptor;let h=class extends d.TailwindElement(c.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: inline;
|
|
4
4
|
position: absolute;
|
|
@@ -103,4 +103,4 @@
|
|
|
103
103
|
</svg>
|
|
104
104
|
</div>
|
|
105
105
|
`}};p([n.property({type:String,reflect:!0})],l.prototype,"color",2),p([n.property({type:Number})],l.prototype,"size",2),p([n.property({type:Boolean})],l.prototype,"glass",2),l=p([n.customElement("schmancy-spinner")],l);
|
|
106
|
-
//# sourceMappingURL=spinner-
|
|
106
|
+
//# sourceMappingURL=spinner-Bip-lfsc.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-
|
|
1
|
+
{"version":3,"file":"spinner-Bip-lfsc.cjs","sources":["../src/busy/busy.ts","../src/busy/spinner.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n@customElement('schmancy-busy')\nexport default class SchmancyBusy extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline;\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tpointer-events: all;\n\t\tz-index: 50;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`\n\t\t\t<!-- Clean overlay with subtle backdrop -->\n\t\t\t<div class=\"absolute inset-0 flex items-center justify-center bg-surface-container/10 backdrop-blur-xs rounded-[inherit]\">\n\t\t\t\t<!-- Content container with clean surface -->\n\t\t\t\t<div class=\"relative flex items-center justify-center p-4\">\n\t\t\t\t\t\n\t\t\t\t\t<!-- Content slot -->\n\t\t\t\t\t<div class=\"relative z-10\">\n\t\t\t\t\t\t<slot>\n\t\t\t\t\t\t\t<!-- Default spinner if no content provided -->\n\t\t\t\t\t\t\t<schmancy-spinner size=\"32px\"></schmancy-spinner>\n\t\t\t\t\t\t</slot>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-busy': SchmancyBusy\n\t}\n}","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('schmancy-spinner')\nexport default class SchmnacySpinner extends TailwindElement(css`\n\t:host {\n\t\tdisplay: inline-block;\n\t\tcolor: var(--schmancy-sys-color-primary-default);\n\t}\n\n\t:host([color=\"primary\"]) {\n\t\tcolor: var(--schmancy-sys-color-primary-default);\n\t}\n\n\t:host([color=\"secondary\"]) {\n\t\tcolor: var(--schmancy-sys-color-secondary-default);\n\t}\n\n\t:host([color=\"tertiary\"]) {\n\t\tcolor: var(--schmancy-sys-color-tertiary-default);\n\t}\n\n\t:host([color=\"error\"]) {\n\t\tcolor: var(--schmancy-sys-color-error-default);\n\t}\n\n\t:host([color=\"success\"]) {\n\t\tcolor: var(--schmancy-sys-color-success-default);\n\t}\n\n\t:host([color=\"surface\"]) {\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\n\t:host([color=\"surface-variant\"]) {\n\t\tcolor: var(--schmancy-sys-color-surface-onVariant);\n\t}\n\n\t.spinner {\n\t\tanimation: spin 1s linear infinite;\n\t\tanimation-direction: reverse;\n\t}\n\n\t@keyframes spin {\n\t\tfrom {\n\t\t\ttransform: rotate(0deg);\n\t\t}\n\t\tto {\n\t\t\ttransform: rotate(360deg);\n\t\t}\n\t}\n`) {\n\t@property({ type: String, reflect: true }) color: 'primary' | 'secondary' | 'tertiary' | 'error' | 'success' | 'surface' | 'surface-variant' = 'primary'\n\t@property({ type: Number }) size: number = 6\n\t@property({ type: Boolean }) glass: boolean = false\n\n\tprotected render(): unknown {\n\t\t// Use Tailwind sizing system: size-4 = 1rem = 16px\n\t\t// Each unit is 0.25rem, so size 4 = 1rem, size 6 = 1.5rem, etc.\n\t\t// Fallback to size 6 (24px) if value is invalid\n\t\tconst validSize = typeof this.size === 'number' && !isNaN(this.size) ? this.size : 6\n\t\tconst sizeInRem = `${validSize * 0.25}rem`\n\t\tconst style = {\n\t\t\twidth: sizeInRem,\n\t\t\theight: sizeInRem,\n\t\t}\n\t\t\n\t\treturn this.glass ? html`\n\t\t\t<div class=\"spinner relative\" style=${this.styleMap(style)}>\n\t\t\t\t<!-- Glass container with Apple-style effect -->\n\t\t\t\t<div class=\"absolute inset-0 rounded-full backdrop-blur-xl backdrop-saturate-150 \n\t\t\t\t\t\t\tbg-surface-container/20 \n\t\t\t\t\t\t\tshadow-[inset_0_1px_1px_0_rgba(255,255,255,0.2)]\n\t\t\t\t\t\t\tborder border-outline/30\"></div>\n\t\t\t\t\n\t\t\t\t<!-- Spinner SVG -->\n\t\t\t\t<svg fill=\"none\" viewBox=\"0 0 16 16\" aria-hidden=\"true\" role=\"img\" \n\t\t\t\t\t style=\"width: 100%; height: 100%;\" class=\"relative z-10\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\".7\"\n\t\t\t\t\t\td=\"M8 15A7 7 0 108 1a7 7 0 000 14v0z\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path d=\"M15 8a7 7 0 01-7 7\" stroke=\"currentColor\" stroke-width=\"2\"></path>\n\t\t\t\t\t<path d=\"M8 12a4 4 0 100-8 4 4 0 000 8z\" fill=\"currentColor\" opacity=\"0.8\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t` : html`\n\t\t\t<div class=\"spinner\" style=${this.styleMap(style)}>\n\t\t\t\t<svg fill=\"none\" viewBox=\"0 0 16 16\" aria-hidden=\"true\" role=\"img\" style=\"width: 100%; height: 100%;\">\n\t\t\t\t\t<path\n\t\t\t\t\t\topacity=\".5\"\n\t\t\t\t\t\td=\"M8 15A7 7 0 108 1a7 7 0 000 14v0z\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t></path>\n\t\t\t\t\t<path d=\"M15 8a7 7 0 01-7 7\" stroke=\"currentColor\" stroke-width=\"2\"></path>\n\t\t\t\t\t<path d=\"M8 12a4 4 0 100-8 4 4 0 000 8z\" fill=\"currentColor\"></path>\n\t\t\t\t</svg>\n\t\t\t</div>\n\t\t`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-spinner': SchmnacySpinner\n\t}\n}\n"],"names":["SchmancyBusy","TailwindElement","css","render","html","customElement","SchmnacySpinner","super","arguments","this","color","size","glass","sizeInRem","isNaN","style","width","height","styleMap","__decorateClass","property","type","String","reflect","prototype","Number","Boolean"],"mappings":"kPAKA,IAAqBA,EAArB,cAA0CC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAS/C,QAAAC,CACT,OAAOC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAgBR,CAAA,EA1BoBJ,wGAArB,CADCK,EAAAA,cAAc,eAAA,CAAA,EACML,mMCArB,IAAqBM,EAArB,cAA6CL,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA7D,CAAA,CAAA,cAAAK,MAAAA,GAAAC,SAAAA,EAgD4CC,KAAAC,MAAoG,UACnHD,KAAAE,KAAe,EACdF,KAAAG,QAAiB,CAEpC,QAAAT,CAIT,MACMU,EAA2B,KADM,OAAdJ,KAAKE,MAAS,UAAaG,MAAML,KAAKE,IAAAA,EAAoB,EAAZF,KAAKE,MAC1D,MACZI,EAAQ,CACbC,MAAOH,EACPI,OAAQJ,CAAAA,EAGT,OAAOJ,KAAKG,MAAQR,EAAAA;AAAAA,yCACmBK,KAAKS,SAASH,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAoBjDX,EAAAA;AAAAA,gCAC0BK,KAAKS,SAASH,CAAAA,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAa7C,CAAA,EAlD2CI,EAAA,CAA1CC,EAAAA,SAAS,CAAEC,KAAMC,OAAQC,QAAAA,EAAS,CAAA,CAAA,EAhDfjB,EAgDuBkB,UAAA,QAAA,CAAA,EACfL,EAAA,CAA3BC,WAAS,CAAEC,KAAMI,MAAAA,CAAAA,CAAAA,EAjDEnB,EAiDQkB,UAAA,OAAA,CAAA,EACCL,EAAA,CAA5BC,WAAS,CAAEC,KAAMK,OAAAA,CAAAA,CAAAA,EAlDEpB,EAkDSkB,UAAA,QAAA,CAAA,EAlDTlB,EAArBa,EAAA,CADCd,EAAAA,cAAc,kBAAA,CAAA,EACMC,CAAAA"}
|
package/dist/steps.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./schmancy-steps-container-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./schmancy-steps-container-DvSClSo1.cjs");Object.defineProperty(exports,"SchmancyStep",{enumerable:!0,get:()=>e.SchmancyStep}),Object.defineProperty(exports,"SchmancyStepsContainer",{enumerable:!0,get:()=>e.SchmancyStepsContainer}),exports.StepsController=e.StepsController,exports.stepsContext=e.stepsContext;
|
|
2
2
|
//# sourceMappingURL=steps.cjs.map
|
package/dist/steps.js
CHANGED
package/dist/store.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./context-object-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./context-object-bNADqf9U.cjs"),e=require("./selector-hook-cqmAutda.cjs");exports.BaseStore=r.BaseStore,exports.IndexedDBStorageManager=r.IndexedDBStorageManager,exports.LocalStorageManager=r.LocalStorageManager,exports.MemoryStorageManager=r.MemoryStorageManager,exports.SchmancyArrayStore=r.SchmancyArrayStore,exports.SchmancyStoreObject=r.SchmancyStoreObject,exports.SessionStorageManager=r.SessionStorageManager,exports.StoreError=r.StoreError,exports.createStorageManager=r.createStorageManager,exports.compareValues=e.compareValues,exports.createArrayContext=e.createArrayContext,exports.createCollectionSelector=e.createCollectionSelector,exports.createCompoundSelector=e.createCompoundSelector,exports.createContext=e.createContext,exports.createCountSelector=e.createCountSelector,exports.createEntriesSelector=e.createEntriesSelector,exports.createFilterSelector=e.createFilterSelector,exports.createFindSelector=e.createFindSelector,exports.createItemSelector=e.createItemSelector,exports.createItemsSelector=e.createItemsSelector,exports.createKeysSelector=e.createKeysSelector,exports.createMapSelector=e.createMapSelector,exports.createOptimizedSelector=e.createOptimizedSelector,exports.createSelector=e.createSelector,exports.createSortSelector=e.createSortSelector,exports.createTestArrayContext=e.createTestArrayContext,exports.filterArray=e.filterArray,exports.filterArrayItems=e.filterArrayItems,exports.filterMap=e.filterMap,exports.filterMapItems=e.filterMapItems,exports.getFieldValue=e.getFieldValue,exports.isArray=e.isArray,exports.isDate=e.isDate,exports.isIterable=e.isIterable,exports.isMap=e.isMap,exports.isNil=e.isNil,exports.isNumber=e.isNumber,exports.isPlainObject=e.isPlainObject,exports.isSet=e.isSet,exports.isString=e.isString,exports.select=e.select,exports.selectItem=e.selectItem;
|
|
2
2
|
//# sourceMappingURL=store.cjs.map
|
package/dist/store.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as r, I as t, L as s, M as c, S as o, a as l, b as S, d as i, c as n } from "./context-object-
|
|
2
|
-
import { p as g, a as y, v as M, G as p, c as d, E as I, z as f, C as x, B as A, x as C, w as b, y as u, D as B, F, u as h, A as j, b as D, r as E, d as O, q as z, f as L, g as N, i as V, j as k, k as q, l as v, o as w, h as G, n as K, m as P, e as T, s as H, t as J } from "./selector-hook-
|
|
1
|
+
import { B as r, I as t, L as s, M as c, S as o, a as l, b as S, d as i, c as n } from "./context-object-u5gBaozZ.js";
|
|
2
|
+
import { p as g, a as y, v as M, G as p, c as d, E as I, z as f, C as x, B as A, x as C, w as b, y as u, D as B, F, u as h, A as j, b as D, r as E, d as O, q as z, f as L, g as N, i as V, j as k, k as q, l as v, o as w, h as G, n as K, m as P, e as T, s as H, t as J } from "./selector-hook-ChImS_JT.js";
|
|
3
3
|
export {
|
|
4
4
|
r as BaseStore,
|
|
5
5
|
t as IndexedDBStorageManager,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";const u=require("./provide-BxZ2kn_p.cjs"),i=require("./tailwind.mixin-
|
|
1
|
+
"use strict";const u=require("./provide-BxZ2kn_p.cjs"),i=require("./tailwind.mixin-Bwf86oi5.cjs"),l=require("lit"),r=require("lit/decorators.js");var d=Object.defineProperty,p=Object.getOwnPropertyDescriptor,c=(h,e,a,s)=>{for(var t,o=s>1?void 0:s?p(e,a):e,n=h.length-1;n>=0;n--)(t=h[n])&&(o=(s?t(e,a,o):t(o))||o);return s&&o&&d(e,a,o),o};const y=u.n("surface");exports.SchmancySurface=class extends i.TailwindElement(l.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
box-sizing: border-box;
|
|
@@ -87,4 +87,4 @@
|
|
|
87
87
|
color: var(--schmancy-sys-color-surface-on);
|
|
88
88
|
}
|
|
89
89
|
`){constructor(){super(...arguments),this.fill="auto",this.rounded="none",this.type="container",this.elevation=0}render(){return l.html`<slot></slot>`}},c([r.property({type:String,reflect:!0})],exports.SchmancySurface.prototype,"fill",2),c([r.property({reflect:!0})],exports.SchmancySurface.prototype,"rounded",2),c([u.e({context:y}),r.property({reflect:!0})],exports.SchmancySurface.prototype,"type",2),c([r.property({type:Number,reflect:!0})],exports.SchmancySurface.prototype,"elevation",2),exports.SchmancySurface=c([r.customElement("schmancy-surface")],exports.SchmancySurface),exports.SchmancySurfaceTypeContext=y;
|
|
90
|
-
//# sourceMappingURL=surface
|
|
90
|
+
//# sourceMappingURL=surface--Nh6Q896.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface
|
|
1
|
+
{"version":3,"file":"surface--Nh6Q896.cjs","sources":["../src/surface/surface.ts"],"sourcesContent":["import { createContext, provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/tailwind.mixin'\nimport { TSurfaceColor } from '@schmancy/types'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n\nexport type SchmancySurfaceFill = 'all' | 'width' | 'height' | 'auto'\n/**\n * `<schmancy-surface>` component\n *\n * This component renders a styled container that adapts its dimensions based on the `fill` property.\n * It supports various rounding options, elevation levels, and applies background and text color classes\n * based on the specified surface variant. Additionally, when the `scroller` property is true, the component\n * enables internal scrolling by applying overflow and scroll-behavior styles.\n *\n * @element schmancy-surface\n * @slot - Default slot for projecting child content.\n *\n * @example\n * <schmancy-surface fill=\"all\" rounded=\"all\" elevation=\"3\" type=\"surfaceBright\" scroller>\n * <p>Your scrollable content here</p>\n * </schmancy-surface>\n */\n@customElement('schmancy-surface')\nexport class SchmancySurface extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tbox-sizing: border-box;\n\t}\n\t\n\t/* Fill styles */\n\t:host([fill='all']) {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\t:host([fill='width']) {\n\t\twidth: 100%;\n\t}\n\t:host([fill='height']) {\n\t\theight: 100%;\n\t}\n\t\n\t/* Rounded corner styles */\n\t:host([rounded='none']) {\n\t\tborder-radius: 0;\n\t}\n\t:host([rounded='top']) {\n\t\tborder-radius: 8px 8px 0 0;\n\t}\n\t:host([rounded='left']) {\n\t\tborder-radius: 8px 0 0 8px;\n\t}\n\t:host([rounded='right']) {\n\t\tborder-radius: 0 8px 8px 0;\n\t}\n\t:host([rounded='bottom']) {\n\t\tborder-radius: 0 0 8px 8px;\n\t}\n\t:host([rounded='all']) {\n\t\tborder-radius: 8px;\n\t}\n\t\n\t/* Elevation styles */\n\t:host([elevation='1']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-1);\n\t}\n\t:host([elevation='2']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-2);\n\t}\n\t:host([elevation='3']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t}\n\t:host([elevation='4']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-4);\n\t}\n\t:host([elevation='5']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-5);\n\t}\n\t\n\t/* Surface type styles - background and text colors */\n\t:host([type='surface']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-default);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='surfaceDim']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-dim);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='surfaceBright']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-bright);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerLowest']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-lowest);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerLow']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-low);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='container']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerHigh']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-high);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerHighest']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-highest);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n`) {\n\t/**\n\t * Fill the width and/or height of the parent container.\n\t * Options: 'all', 'width', 'height', 'auto'.\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: 'all' | 'width' | 'height' | 'auto' = 'auto'\n\n\t/**\n\t * Specifies the rounding style of the component's corners.\n\t * Options: 'none', 'top', 'left', 'right', 'bottom', 'all'.\n\t * @default 'none'\n\t */\n\t@property({ reflect: true })\n\trounded: 'none' | 'top' | 'left' | 'right' | 'bottom' | 'all' = 'none'\n\n\t/**\n\t * Specifies the surface type for styling.\n\t * Provided to descendant components via context.\n\t * Options: 'surface', 'surfaceDim', 'surfaceBright', 'containerLowest',\n\t * 'containerLow', 'container', 'containerHigh', 'containerHighest'.\n\t * @default 'container'\n\t */\n\t@provide({ context: SchmancySurfaceTypeContext })\n\t@property({ reflect: true })\n\ttype: TSurfaceColor = 'container'\n\n\t/**\n\t * Defines the elevation level (shadow depth) of the surface.\n\t * Valid values: 0, 1, 2, 3, 4, 5.\n\t * @default 0\n\t */\n\t@property({ type: Number, reflect: true })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-surface': SchmancySurface\n\t}\n}"],"names":["SchmancySurfaceTypeContext","createContext","SchmancySurface","TailwindElement","css","super","arguments","this","fill","rounded","type","elevation","render","html","__decorateClass","property","String","reflect","prototype","provide","context","Number","customElement"],"mappings":"kVAMO,MAAMA,EAA6BC,EAAAA,EAA6B,SAAA,EAoB1DC,QAAAA,gBAAN,cAA8BC,EAAAA,gBAAgBC,EAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA9C,CAAA,CAAA,cAAAC,MAAAA,GAAAC,SAAAA,EA+FNC,KAAAC,KAA4C,OAQ5CD,KAAAE,QAAgE,OAWhEF,KAAAG,KAAsB,YAQtBH,KAAAI,UAAmC,CAAA,CAEzB,QAAAC,CACT,OAAOC,EAAAA,mBACR,CAAA,EA/BAC,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMM,OAAQC,UAAS,CAAA,CAAA,EA9FvBf,wBA+FZgB,UAAA,OAAA,GAQAJ,EAAA,CADCC,WAAS,CAAEE,UAAS,CAAA,CAAA,EAtGTf,wBAuGZgB,UAAA,UAAA,CAAA,EAWAJ,EAAA,CAFCK,IAAQ,CAAEC,QAASpB,CAAAA,CAAAA,EACnBe,WAAS,CAAEE,UAAS,CAAA,CAAA,EAjHTf,wBAkHZgB,UAAA,OAAA,GAQAJ,EAAA,CADCC,EAAAA,SAAS,CAAEL,KAAMW,OAAQJ,QAAAA,MAzHdf,wBA0HZgB,UAAA,YAAA,CAAA,EA1HYhB,QAAAA,gBAANY,EAAA,CADNQ,EAAAA,cAAc,qBACFpB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { e as y, n as i } from "./provide-tcktw8xB.js";
|
|
2
|
-
import { T as d } from "./tailwind.mixin-
|
|
2
|
+
import { T as d } from "./tailwind.mixin-kvywknTU.js";
|
|
3
3
|
import { css as u, html as p } from "lit";
|
|
4
4
|
import { property as t, customElement as f } from "lit/decorators.js";
|
|
5
5
|
var m = Object.defineProperty, v = Object.getOwnPropertyDescriptor, s = (h, e, a, c) => {
|
|
@@ -108,4 +108,4 @@ export {
|
|
|
108
108
|
b as S,
|
|
109
109
|
r as a
|
|
110
110
|
};
|
|
111
|
-
//# sourceMappingURL=surface-
|
|
111
|
+
//# sourceMappingURL=surface-CyhVK7JG.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"surface-
|
|
1
|
+
{"version":3,"file":"surface-CyhVK7JG.js","sources":["../src/surface/surface.ts"],"sourcesContent":["import { createContext, provide } from '@lit/context'\nimport { TailwindElement } from '@mixins/tailwind.mixin'\nimport { TSurfaceColor } from '@schmancy/types'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nexport const SchmancySurfaceTypeContext = createContext<TSurfaceColor>('surface')\n\nexport type SchmancySurfaceFill = 'all' | 'width' | 'height' | 'auto'\n/**\n * `<schmancy-surface>` component\n *\n * This component renders a styled container that adapts its dimensions based on the `fill` property.\n * It supports various rounding options, elevation levels, and applies background and text color classes\n * based on the specified surface variant. Additionally, when the `scroller` property is true, the component\n * enables internal scrolling by applying overflow and scroll-behavior styles.\n *\n * @element schmancy-surface\n * @slot - Default slot for projecting child content.\n *\n * @example\n * <schmancy-surface fill=\"all\" rounded=\"all\" elevation=\"3\" type=\"surfaceBright\" scroller>\n * <p>Your scrollable content here</p>\n * </schmancy-surface>\n */\n@customElement('schmancy-surface')\nexport class SchmancySurface extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tbox-sizing: border-box;\n\t}\n\t\n\t/* Fill styles */\n\t:host([fill='all']) {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t}\n\t:host([fill='width']) {\n\t\twidth: 100%;\n\t}\n\t:host([fill='height']) {\n\t\theight: 100%;\n\t}\n\t\n\t/* Rounded corner styles */\n\t:host([rounded='none']) {\n\t\tborder-radius: 0;\n\t}\n\t:host([rounded='top']) {\n\t\tborder-radius: 8px 8px 0 0;\n\t}\n\t:host([rounded='left']) {\n\t\tborder-radius: 8px 0 0 8px;\n\t}\n\t:host([rounded='right']) {\n\t\tborder-radius: 0 8px 8px 0;\n\t}\n\t:host([rounded='bottom']) {\n\t\tborder-radius: 0 0 8px 8px;\n\t}\n\t:host([rounded='all']) {\n\t\tborder-radius: 8px;\n\t}\n\t\n\t/* Elevation styles */\n\t:host([elevation='1']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-1);\n\t}\n\t:host([elevation='2']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-2);\n\t}\n\t:host([elevation='3']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-3);\n\t}\n\t:host([elevation='4']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-4);\n\t}\n\t:host([elevation='5']) {\n\t\tbox-shadow: var(--schmancy-sys-elevation-5);\n\t}\n\t\n\t/* Surface type styles - background and text colors */\n\t:host([type='surface']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-default);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='surfaceDim']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-dim);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='surfaceBright']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-bright);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerLowest']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-lowest);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerLow']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-low);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='container']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerHigh']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-high);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n\t:host([type='containerHighest']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-highest);\n\t\tcolor: var(--schmancy-sys-color-surface-on);\n\t}\n`) {\n\t/**\n\t * Fill the width and/or height of the parent container.\n\t * Options: 'all', 'width', 'height', 'auto'.\n\t * @default 'auto'\n\t */\n\t@property({ type: String, reflect: true })\n\tfill: 'all' | 'width' | 'height' | 'auto' = 'auto'\n\n\t/**\n\t * Specifies the rounding style of the component's corners.\n\t * Options: 'none', 'top', 'left', 'right', 'bottom', 'all'.\n\t * @default 'none'\n\t */\n\t@property({ reflect: true })\n\trounded: 'none' | 'top' | 'left' | 'right' | 'bottom' | 'all' = 'none'\n\n\t/**\n\t * Specifies the surface type for styling.\n\t * Provided to descendant components via context.\n\t * Options: 'surface', 'surfaceDim', 'surfaceBright', 'containerLowest',\n\t * 'containerLow', 'container', 'containerHigh', 'containerHighest'.\n\t * @default 'container'\n\t */\n\t@provide({ context: SchmancySurfaceTypeContext })\n\t@property({ reflect: true })\n\ttype: TSurfaceColor = 'container'\n\n\t/**\n\t * Defines the elevation level (shadow depth) of the surface.\n\t * Valid values: 0, 1, 2, 3, 4, 5.\n\t * @default 0\n\t */\n\t@property({ type: Number, reflect: true })\n\televation: 0 | 1 | 2 | 3 | 4 | 5 = 0\n\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-surface': SchmancySurface\n\t}\n}"],"names":["SchmancySurfaceTypeContext","createContext","SchmancySurface","TailwindElement","css","super","arguments","this","fill","rounded","type","elevation","render","html","__decorateClass","property","String","reflect","prototype","provide","context","Number","customElement"],"mappings":";;;;;;;;AAMO,MAAMA,IAA6BC,EAA6B,SAAA;AAoBhE,IAAMC,IAAN,cAA8BC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,CAA9C,EAAA;AAAA,EAAA;AAAAC,UAAAA,GAAAC,SAAAA,GA+FNC,KAAAC,OAA4C,QAQ5CD,KAAAE,UAAgE,QAWhEF,KAAAG,OAAsB,aAQtBH,KAAAI,YAAmC;AAAA,EAAA;AAAA,EAEzB,SAAAC;AACT,WAAOC;AAAAA,EACR;AAAA;AA/BAC,EAAA,CADCC,EAAS,EAAEL,MAAMM,QAAQC,SAAAA,GAAS,CAAA,CAAA,GA9FvBf,EA+FZgB,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEE,SAAAA,GAAS,CAAA,CAAA,GAtGTf,EAuGZgB,WAAA,WAAA,CAAA,GAWAJ,EAAA,CAFCK,EAAQ,EAAEC,SAASpB,EAAAA,CAAAA,GACnBe,EAAS,EAAEE,SAAAA,GAAS,CAAA,CAAA,GAjHTf,EAkHZgB,WAAA,QAAA,CAAA,GAQAJ,EAAA,CADCC,EAAS,EAAEL,MAAMW,QAAQJ,SAAAA,QAzHdf,EA0HZgB,WAAA,aAAA,CAAA,GA1HYhB,IAANY,EAAA,CADNQ,EAAc,kBAAA,CAAA,GACFpB;"}
|
package/dist/surface.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./surface
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./surface--Nh6Q896.cjs");Object.defineProperty(exports,"SchmancySurface",{enumerable:!0,get:()=>e.SchmancySurface}),exports.SchmancySurfaceTypeContext=e.SchmancySurfaceTypeContext;
|
|
2
2
|
//# sourceMappingURL=surface.cjs.map
|
package/dist/surface.js
CHANGED
|
@@ -4,7 +4,7 @@ import { property as f } from "lit/decorators/property.js";
|
|
|
4
4
|
import { directive as H, PartType as W } from "lit/directive.js";
|
|
5
5
|
import { AsyncDirective as q } from "lit/async-directive.js";
|
|
6
6
|
import { repeat as U } from "lit/directives/repeat.js";
|
|
7
|
-
import { $ as D } from "./litElement.mixin-
|
|
7
|
+
import { $ as D } from "./litElement.mixin-SeAIQuRg.js";
|
|
8
8
|
import { property as _, customElement as M, state as x } from "lit/decorators.js";
|
|
9
9
|
var G = Object.defineProperty, J = Object.getOwnPropertyDescriptor, w = (s, t, e, i) => {
|
|
10
10
|
for (var r, l = i > 1 ? void 0 : i ? J(t, e) : t, o = s.length - 1; o >= 0; o--) (r = s[o]) && (l = (i ? r(t, e, l) : r(l)) || l);
|
|
@@ -556,4 +556,4 @@ export {
|
|
|
556
556
|
v as S,
|
|
557
557
|
u as a
|
|
558
558
|
};
|
|
559
|
-
//# sourceMappingURL=table-
|
|
559
|
+
//# sourceMappingURL=table-DnPQ0zCd.js.map
|