@mhmo91/schmancy 0.5.26 → 0.5.28
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/checkbox.md +93 -52
- package/dist/ai/checkbox.md +93 -52
- package/dist/{animated-text-BF-_41Hw.js → animated-text-Bn8-ILmB.js} +3 -3
- package/dist/{animated-text-BF-_41Hw.js.map → animated-text-Bn8-ILmB.js.map} +1 -1
- package/dist/{animated-text-D7XcIPvJ.cjs → animated-text-vdNivzdc.cjs} +2 -2
- package/dist/{animated-text-D7XcIPvJ.cjs.map → animated-text-vdNivzdc.cjs.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-C1EzgnER.cjs → area.component-DwPL6bdo.cjs} +2 -2
- package/dist/{area.component-C1EzgnER.cjs.map → area.component-DwPL6bdo.cjs.map} +1 -1
- package/dist/{area.component-C5wZ7yAA.js → area.component-pd24G8zW.js} +3 -3
- package/dist/{area.component-C5wZ7yAA.js.map → area.component-pd24G8zW.js.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-C2KCl8gZ.js → autocomplete-BlhAOtex.js} +4 -4
- package/dist/{autocomplete-C2KCl8gZ.js.map → autocomplete-BlhAOtex.js.map} +1 -1
- package/dist/{autocomplete-Dp2pvQ1J.cjs → autocomplete-GW91jVqw.cjs} +2 -2
- package/dist/{autocomplete-Dp2pvQ1J.cjs.map → autocomplete-GW91jVqw.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-BISA1L6R.js → avatar-BYEYf6j6.js} +50 -50
- package/dist/{avatar-BISA1L6R.js.map → avatar-BYEYf6j6.js.map} +1 -1
- package/dist/{avatar-dRvfep6e.cjs → avatar-CLMPaFdx.cjs} +2 -2
- package/dist/{avatar-dRvfep6e.cjs.map → avatar-CLMPaFdx.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-B7y4ZeDv.cjs → boat-DNmaFlxD.cjs} +2 -2
- package/dist/{boat-B7y4ZeDv.cjs.map → boat-DNmaFlxD.cjs.map} +1 -1
- package/dist/{boat-BDARBzjf.js → boat-dSTPix8t.js} +2 -2
- package/dist/{boat-BDARBzjf.js.map → boat-dSTPix8t.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-Dyj95Cob.cjs → checkbox-BJ5aqrKY.cjs} +2 -2
- package/dist/{checkbox-Dyj95Cob.cjs.map → checkbox-BJ5aqrKY.cjs.map} +1 -1
- package/dist/{checkbox-Bo5DWgmR.js → checkbox-CU2tyEL0.js} +2 -2
- package/dist/{checkbox-Bo5DWgmR.js.map → checkbox-CU2tyEL0.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-BkLf1Tjt.js → code-preview-KDpn0Q3T.js} +2 -2
- package/dist/{code-preview-BkLf1Tjt.js.map → code-preview-KDpn0Q3T.js.map} +1 -1
- package/dist/{code-preview-Ci4_9dyI.cjs → code-preview-fda91FDi.cjs} +2 -2
- package/dist/{code-preview-Ci4_9dyI.cjs.map → code-preview-fda91FDi.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-BzJ_GFAW.cjs → date-range-0nOdLk-l.cjs} +2 -2
- package/dist/{date-range-BzJ_GFAW.cjs.map → date-range-0nOdLk-l.cjs.map} +1 -1
- package/dist/{date-range-inline-egzlYgWB.cjs → date-range-inline-UoP6EDug.cjs} +2 -2
- package/dist/{date-range-inline-egzlYgWB.cjs.map → date-range-inline-UoP6EDug.cjs.map} +1 -1
- package/dist/{date-range-inline-C5gZQxPv.js → date-range-inline-b0yYxPn_.js} +3 -3
- package/dist/{date-range-inline-C5gZQxPv.js.map → date-range-inline-b0yYxPn_.js.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/{date-range-BriVhMyA.js → date-range-yd-FnXRe.js} +3 -3
- package/dist/{date-range-BriVhMyA.js.map → date-range-yd-FnXRe.js.map} +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-3A6yeHgq.js → delay-CE9VOJBG.js} +2 -2
- package/dist/{delay-3A6yeHgq.js.map → delay-CE9VOJBG.js.map} +1 -1
- package/dist/{delay-9mVh_ncQ.cjs → delay-CaOsI0yP.cjs} +2 -2
- package/dist/{delay-9mVh_ncQ.cjs.map → delay-CaOsI0yP.cjs.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/details-B_kKG0Du.cjs +143 -0
- package/dist/details-B_kKG0Du.cjs.map +1 -0
- package/dist/details-m-njXkGl.js +210 -0
- package/dist/details-m-njXkGl.js.map +1 -0
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-B9OkO5fD.cjs → dialog-content-B5MUa6uq.cjs} +2 -2
- package/dist/{dialog-content-B9OkO5fD.cjs.map → dialog-content-B5MUa6uq.cjs.map} +1 -1
- package/dist/{dialog-content-B2mWmFZf.js → dialog-content-BireCTdH.js} +3 -3
- package/dist/{dialog-content-B2mWmFZf.js.map → dialog-content-BireCTdH.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-gwQsKA8E.js → divider-CMaqpnia.js} +3 -3
- package/dist/{divider-gwQsKA8E.js.map → divider-CMaqpnia.js.map} +1 -1
- package/dist/{divider-7QB9lkg8.cjs → divider-DekMH80a.cjs} +2 -2
- package/dist/{divider-7QB9lkg8.cjs.map → divider-DekMH80a.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-wWiQrGbJ.js → dropdown-content-CViuccZ6.js} +3 -3
- package/dist/{dropdown-content-wWiQrGbJ.js.map → dropdown-content-CViuccZ6.js.map} +1 -1
- package/dist/{dropdown-content-B8jF14WR.cjs → dropdown-content-eXth59vX.cjs} +2 -2
- package/dist/{dropdown-content-B8jF14WR.cjs.map → dropdown-content-eXth59vX.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-BerOPRSS.js → email-recipients-BSopuO1J.js} +5 -5
- package/dist/{email-recipients-BerOPRSS.js.map → email-recipients-BSopuO1J.js.map} +1 -1
- package/dist/{email-recipients-DDPOQ6GR.cjs → email-recipients-DNcWf4_1.cjs} +2 -2
- package/dist/{email-recipients-DDPOQ6GR.cjs.map → email-recipients-DNcWf4_1.cjs.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-A9QGoIZO.cjs → flex-CE0IKjR4.cjs} +2 -2
- package/dist/{flex-A9QGoIZO.cjs.map → flex-CE0IKjR4.cjs.map} +1 -1
- package/dist/{flex-CMaGJmsr.js → flex-Czj-zqJQ.js} +2 -2
- package/dist/{flex-CMaGJmsr.js.map → flex-Czj-zqJQ.js.map} +1 -1
- package/dist/{form-TwzAo9l7.js → form-CAvvBQiv.js} +2 -2
- package/dist/{form-TwzAo9l7.js.map → form-CAvvBQiv.js.map} +1 -1
- package/dist/{form-B1MHwY2q.cjs → form-OUNdJnUW.cjs} +2 -2
- package/dist/{form-B1MHwY2q.cjs.map → form-OUNdJnUW.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-BnEz6ZwN.cjs → formField.mixin-Bu0ygAbE.cjs} +2 -2
- package/dist/{formField.mixin-BnEz6ZwN.cjs.map → formField.mixin-Bu0ygAbE.cjs.map} +1 -1
- package/dist/{formField.mixin-BssBYPia.js → formField.mixin-DlYLC82X.js} +2 -2
- package/dist/{formField.mixin-BssBYPia.js.map → formField.mixin-DlYLC82X.js.map} +1 -1
- package/dist/{icon-BAcc1N7i.cjs → icon-BwhQbcAk.cjs} +2 -2
- package/dist/{icon-BAcc1N7i.cjs.map → icon-BwhQbcAk.cjs.map} +1 -1
- package/dist/{icon-Bc-fZOsV.js → icon-D0EaNtwd.js} +2 -2
- package/dist/{icon-Bc-fZOsV.js.map → icon-D0EaNtwd.js.map} +1 -1
- package/dist/{icon-button-u2JxLUVz.cjs → icon-button-BrRSVzzx.cjs} +2 -2
- package/dist/{icon-button-u2JxLUVz.cjs.map → icon-button-BrRSVzzx.cjs.map} +1 -1
- package/dist/{icon-button-bMlXZsaD.js → icon-button-CGMdsmXS.js} +3 -3
- package/dist/{icon-button-bMlXZsaD.js.map → icon-button-CGMdsmXS.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +49 -49
- package/dist/{input-CBpMXWq5.js → input-DZYN1TnY.js} +3 -3
- package/dist/{input-CBpMXWq5.js.map → input-DZYN1TnY.js.map} +1 -1
- package/dist/{input-chip-BdOr_Bst.js → input-chip-CNLkwei6.js} +2 -2
- package/dist/{input-chip-BdOr_Bst.js.map → input-chip-CNLkwei6.js.map} +1 -1
- package/dist/{input-chip-BOD5fjLj.cjs → input-chip-Cf25jEob.cjs} +2 -2
- package/dist/{input-chip-BOD5fjLj.cjs.map → input-chip-Cf25jEob.cjs.map} +1 -1
- package/dist/{input-64Amkh7B.cjs → input-lzxE1e5L.cjs} +2 -2
- package/dist/{input-64Amkh7B.cjs.map → input-lzxE1e5L.cjs.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-kbaJkd6g.js → list-Cqo45m_h.js} +2 -2
- package/dist/{list-kbaJkd6g.js.map → list-Cqo45m_h.js.map} +1 -1
- package/dist/{list-D_RsjBt7.cjs → list-rGx4YHgo.cjs} +2 -2
- package/dist/{list-D_RsjBt7.cjs.map → list-rGx4YHgo.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BjvDNbpd.js → litElement.mixin-B0Rsd4Km.js} +2 -2
- package/dist/{litElement.mixin-BjvDNbpd.js.map → litElement.mixin-B0Rsd4Km.js.map} +1 -1
- package/dist/{litElement.mixin-wU3TW8NU.cjs → litElement.mixin-DUiUa087.cjs} +2 -2
- package/dist/{litElement.mixin-wU3TW8NU.cjs.map → litElement.mixin-DUiUa087.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-C3aSKiL1.cjs → map-8DhybTup.cjs} +2 -2
- package/dist/{map-C3aSKiL1.cjs.map → map-8DhybTup.cjs.map} +1 -1
- package/dist/{map-DhyZmeSW.js → map-DWf43TA1.js} +2 -2
- package/dist/{map-DhyZmeSW.js.map → map-DWf43TA1.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/media-BVKgZzK_.js +243 -0
- package/dist/media-BVKgZzK_.js.map +1 -0
- package/dist/media-BZwiyJto.cjs +152 -0
- package/dist/media-BZwiyJto.cjs.map +1 -0
- package/dist/{menu-BWAj2ToG.js → menu-CGaCEOer.js} +3 -3
- package/dist/{menu-BWAj2ToG.js.map → menu-CGaCEOer.js.map} +1 -1
- package/dist/{menu-GScOP0tp.cjs → menu-D8qP_e7D.cjs} +2 -2
- package/dist/{menu-GScOP0tp.cjs.map → menu-D8qP_e7D.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/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/{navigation-rail-DpffIkNR.cjs → navigation-rail-BzMOzaFm.cjs} +77 -39
- package/dist/navigation-rail-BzMOzaFm.cjs.map +1 -0
- package/dist/{navigation-rail-Cwhii1Km.js → navigation-rail-CjBw96pi.js} +88 -50
- package/dist/navigation-rail-CjBw96pi.js.map +1 -0
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-CiS9cxNM.cjs → notification-service-DCmDSvc-.cjs} +2 -2
- package/dist/{notification-service-CiS9cxNM.cjs.map → notification-service-DCmDSvc-.cjs.map} +1 -1
- package/dist/{notification-service-D9FrcaYV.js → notification-service-Dv4oQi_Z.js} +4 -4
- package/dist/{notification-service-D9FrcaYV.js.map → notification-service-Dv4oQi_Z.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-CHdshRyb.js → notify-COuaNTJP.js} +2 -2
- package/dist/{notify-CHdshRyb.js.map → notify-COuaNTJP.js.map} +1 -1
- package/dist/{notify-BmlPVAHr.cjs → notify-XY2e8y_a.cjs} +2 -2
- package/dist/{notify-BmlPVAHr.cjs.map → notify-XY2e8y_a.cjs.map} +1 -1
- package/dist/{option-DYw6IjKG.js → option-CSSmqUBi.js} +2 -2
- package/dist/{option-DYw6IjKG.js.map → option-CSSmqUBi.js.map} +1 -1
- package/dist/{option-DA812L2R.cjs → option-q-dig7LF.cjs} +2 -2
- package/dist/{option-DA812L2R.cjs.map → option-q-dig7LF.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-DI7uO_75.cjs → payment-card-form-C8bWa_hh.cjs} +2 -2
- package/dist/{payment-card-form-DI7uO_75.cjs.map → payment-card-form-C8bWa_hh.cjs.map} +1 -1
- package/dist/{payment-card-form-K2w6cCIE.js → payment-card-form-CWboYwqO.js} +3 -3
- package/dist/{payment-card-form-K2w6cCIE.js.map → payment-card-form-CWboYwqO.js.map} +1 -1
- package/dist/{progress-DDWci51w.cjs → progress-CP2lpJsl.cjs} +2 -2
- package/dist/{progress-DDWci51w.cjs.map → progress-CP2lpJsl.cjs.map} +1 -1
- package/dist/{progress-CHHtHq7e.js → progress-Cci0dXzp.js} +2 -2
- package/dist/{progress-CHHtHq7e.js.map → progress-Cci0dXzp.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-BFWrUvoQ.cjs → radio-button-CU-lMs92.cjs} +2 -2
- package/dist/{radio-button-BFWrUvoQ.cjs.map → radio-button-CU-lMs92.cjs.map} +1 -1
- package/dist/{radio-button-Uzt9IgG3.js → radio-button-DFbfVgox.js} +3 -3
- package/dist/{radio-button-Uzt9IgG3.js.map → radio-button-DFbfVgox.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-DCIjNVl9.cjs → schmancy-steps-container-CQY1zmws.cjs} +2 -2
- package/dist/{schmancy-steps-container-DCIjNVl9.cjs.map → schmancy-steps-container-CQY1zmws.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-fxA9vvA6.js → schmancy-steps-container-vW7r1ZTL.js} +2 -2
- package/dist/{schmancy-steps-container-fxA9vvA6.js.map → schmancy-steps-container-vW7r1ZTL.js.map} +1 -1
- package/dist/{select-HByOFIgf.cjs → select-Be8HIqWu.cjs} +2 -2
- package/dist/{select-HByOFIgf.cjs.map → select-Be8HIqWu.cjs.map} +1 -1
- package/dist/{select-s2RGXov_.js → select-BkGodZaS.js} +3 -3
- package/dist/{select-s2RGXov_.js.map → select-BkGodZaS.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-CHMqdnPC.js → sheet-DECb9whB.js} +3 -3
- package/dist/{sheet-CHMqdnPC.js.map → sheet-DECb9whB.js.map} +1 -1
- package/dist/{sheet-B3SYJ5bI.cjs → sheet-dK5UPVjp.cjs} +2 -2
- package/dist/{sheet-B3SYJ5bI.cjs.map → sheet-dK5UPVjp.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-B5sg-McD.js → slider-BhFc1oRj.js} +3 -3
- package/dist/{slider-B5sg-McD.js.map → slider-BhFc1oRj.js.map} +1 -1
- package/dist/{slider-C34Lp0Ns.cjs → slider-CP3JRaWR.cjs} +2 -2
- package/dist/{slider-C34Lp0Ns.cjs.map → slider-CP3JRaWR.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-D2zUun1n.cjs → spinner-BD8cXVK_.cjs} +2 -2
- package/dist/{spinner-D2zUun1n.cjs.map → spinner-BD8cXVK_.cjs.map} +1 -1
- package/dist/{spinner-CsdQec_Y.js → spinner-DGyRYqUZ.js} +2 -2
- package/dist/{spinner-CsdQec_Y.js.map → spinner-DGyRYqUZ.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{suggestion-chip-jPIhloJG.cjs → suggestion-chip-BPCzI7GW.cjs} +9 -8
- package/dist/suggestion-chip-BPCzI7GW.cjs.map +1 -0
- package/dist/{suggestion-chip-BE4I1i8Z.js → suggestion-chip-CASXKYnD.js} +17 -16
- package/dist/suggestion-chip-CASXKYnD.js.map +1 -0
- package/dist/surface-C3V23wh9.js +140 -0
- package/dist/surface-C3V23wh9.js.map +1 -0
- package/dist/surface-ClIDhSRv.cjs +119 -0
- package/dist/surface-ClIDhSRv.cjs.map +1 -0
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-CzHvHTwO.cjs → table-1New2HBS.cjs} +2 -2
- package/dist/{table-CzHvHTwO.cjs.map → table-1New2HBS.cjs.map} +1 -1
- package/dist/{table-Zvpbmts7.js → table-CLA3cxIk.js} +2 -2
- package/dist/{table-Zvpbmts7.js.map → table-CLA3cxIk.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-BIwTX2f5.cjs → tabs-compatibility-DDtYFCUj.cjs} +2 -2
- package/dist/{tabs-compatibility-BIwTX2f5.cjs.map → tabs-compatibility-DDtYFCUj.cjs.map} +1 -1
- package/dist/{tabs-compatibility-BRxG6DfR.js → tabs-compatibility-RMzYuSJ1.js} +2 -2
- package/dist/{tabs-compatibility-BRxG6DfR.js.map → tabs-compatibility-RMzYuSJ1.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-CFrLBtkD.cjs +2 -0
- package/dist/{tailwind.mixin-CvLC4LGm.cjs.map → tailwind.mixin-CFrLBtkD.cjs.map} +1 -1
- package/dist/tailwind.mixin-CZKT1dUr.js +43 -0
- package/dist/{tailwind.mixin-DXMWx0zN.js.map → tailwind.mixin-CZKT1dUr.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BmfkGMl_.js → textarea-B4DXG5Sg.js} +2 -2
- package/dist/{textarea-BmfkGMl_.js.map → textarea-B4DXG5Sg.js.map} +1 -1
- package/dist/{textarea-BStwsU5t.cjs → textarea-ChDsPBZz.cjs} +2 -2
- package/dist/{textarea-BStwsU5t.cjs.map → textarea-ChDsPBZz.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-C0aKpjew.js → theme-button-DGjG_shg.js} +2 -2
- package/dist/{theme-button-C0aKpjew.js.map → theme-button-DGjG_shg.js.map} +1 -1
- package/dist/{theme-button-8UOIxNBy.cjs → theme-button-qzDX0i9Q.cjs} +2 -2
- package/dist/{theme-button-8UOIxNBy.cjs.map → theme-button-qzDX0i9Q.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-BvUi2mvO.cjs → theme.component-Blc_4wu9.cjs} +2 -2
- package/dist/{theme.component-BvUi2mvO.cjs.map → theme.component-Blc_4wu9.cjs.map} +1 -1
- package/dist/{theme.component-DPfWc8Tz.js → theme.component-C3r_-QqQ.js} +2 -2
- package/dist/{theme.component-DPfWc8Tz.js.map → theme.component-C3r_-QqQ.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-CyWZzj5y.js → timezone-BkE20wzQ.js} +3 -3
- package/dist/{timezone-CyWZzj5y.js.map → timezone-BkE20wzQ.js.map} +1 -1
- package/dist/{timezone-BqVai0NU.cjs → timezone-wWfEuXrb.cjs} +2 -2
- package/dist/{timezone-BqVai0NU.cjs.map → timezone-wWfEuXrb.cjs.map} +1 -1
- package/dist/{tooltip-B3OI6L58.cjs → tooltip-DLadXXnP.cjs} +2 -2
- package/dist/{tooltip-B3OI6L58.cjs.map → tooltip-DLadXXnP.cjs.map} +1 -1
- package/dist/{tooltip-ADFA2Hhl.js → tooltip-UtpbXzQX.js} +2 -2
- package/dist/{tooltip-ADFA2Hhl.js.map → tooltip-UtpbXzQX.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-Dn_LFln3.cjs → tree-Brtho3Eu.cjs} +2 -2
- package/dist/{tree-Dn_LFln3.cjs.map → tree-Brtho3Eu.cjs.map} +1 -1
- package/dist/{tree-B8U0nKLT.js → tree-VkXtw2P8.js} +2 -2
- package/dist/{tree-B8U0nKLT.js.map → tree-VkXtw2P8.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-D16QiY6_.cjs → typewriter-CEgaw_pR.cjs} +2 -2
- package/dist/{typewriter-D16QiY6_.cjs.map → typewriter-CEgaw_pR.cjs.map} +1 -1
- package/dist/{typewriter-eEIOUfNO.js → typewriter-CsReDsYS.js} +4 -4
- package/dist/{typewriter-eEIOUfNO.js.map → typewriter-CsReDsYS.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-BuYmtWlY.js → typography-D_bM5DW7.js} +2 -2
- package/dist/{typography-BuYmtWlY.js.map → typography-D_bM5DW7.js.map} +1 -1
- package/dist/{typography-9tbZm7OD.cjs → typography-NurK7F-8.cjs} +2 -2
- package/dist/{typography-9tbZm7OD.cjs.map → typography-NurK7F-8.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/card/card.d.ts +5 -1
- package/types/src/details/details.d.ts +4 -4
- package/dist/details-BVo7N1R-.cjs +0 -161
- package/dist/details-BVo7N1R-.cjs.map +0 -1
- package/dist/details-b0374YYL.js +0 -228
- package/dist/details-b0374YYL.js.map +0 -1
- package/dist/media-CXD15d1H.js +0 -261
- package/dist/media-CXD15d1H.js.map +0 -1
- package/dist/media-DPyw2ILI.cjs +0 -177
- package/dist/media-DPyw2ILI.cjs.map +0 -1
- package/dist/navigation-rail-Cwhii1Km.js.map +0 -1
- package/dist/navigation-rail-DpffIkNR.cjs.map +0 -1
- package/dist/suggestion-chip-BE4I1i8Z.js.map +0 -1
- package/dist/suggestion-chip-jPIhloJG.cjs.map +0 -1
- package/dist/surface-D8fzaQOr.cjs +0 -90
- package/dist/surface-D8fzaQOr.cjs.map +0 -1
- package/dist/surface-QCZ627r4.js +0 -111
- package/dist/surface-QCZ627r4.js.map +0 -1
- package/dist/tailwind.mixin-CvLC4LGm.cjs +0 -2
- package/dist/tailwind.mixin-DXMWx0zN.js +0 -43
package/dist/media-CXD15d1H.js
DELETED
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
import "rxjs";
|
|
2
|
-
import { classMap as v } from "lit/directives/class-map.js";
|
|
3
|
-
import "lit/directives/style-map.js";
|
|
4
|
-
import { customElement as u, property as d, state as y } from "lit/decorators.js";
|
|
5
|
-
import { T as f } from "./tailwind.mixin-DXMWx0zN.js";
|
|
6
|
-
import { css as b, html as h, LitElement as w } from "lit";
|
|
7
|
-
import { ifDefined as x } from "lit/directives/if-defined.js";
|
|
8
|
-
var k = Object.getOwnPropertyDescriptor;
|
|
9
|
-
let m = class extends f(b`
|
|
10
|
-
:host {
|
|
11
|
-
display: flex;
|
|
12
|
-
gap: 0.5rem;
|
|
13
|
-
padding: 0.5rem 1rem;
|
|
14
|
-
align-items: center;
|
|
15
|
-
justify-content: flex-end;
|
|
16
|
-
}
|
|
17
|
-
`) {
|
|
18
|
-
render() {
|
|
19
|
-
return h`<slot></slot>`;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
m = ((e, s, r, i) => {
|
|
23
|
-
for (var o, t = i > 1 ? void 0 : i ? k(s, r) : s, a = e.length - 1; a >= 0; a--) (o = e[a]) && (t = o(t) || t);
|
|
24
|
-
return t;
|
|
25
|
-
})([u("schmancy-card-action")], m);
|
|
26
|
-
var O = Object.defineProperty, $ = Object.getOwnPropertyDescriptor, n = (e, s, r, i) => {
|
|
27
|
-
for (var o, t = i > 1 ? void 0 : i ? $(s, r) : s, a = e.length - 1; a >= 0; a--) (o = e[a]) && (t = (i ? o(s, r, t) : o(t)) || t);
|
|
28
|
-
return i && t && O(s, r, t), t;
|
|
29
|
-
};
|
|
30
|
-
let l = class extends f(b`
|
|
31
|
-
:host {
|
|
32
|
-
display: block;
|
|
33
|
-
position: relative;
|
|
34
|
-
border-radius: 12px; /* M3 spec: 12px for cards */
|
|
35
|
-
transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);
|
|
36
|
-
outline: none;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* Type-specific base styles */
|
|
40
|
-
:host([type='elevated']) {
|
|
41
|
-
background-color: var(--schmancy-sys-color-surface-low);
|
|
42
|
-
box-shadow: var(--shadow-1);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
:host([type='filled']) {
|
|
46
|
-
background-color: var(--schmancy-sys-color-surface-highest);
|
|
47
|
-
box-shadow: var(--shadow-0);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
:host([type='outlined']) {
|
|
51
|
-
background-color: var(--schmancy-sys-color-surface-default);
|
|
52
|
-
border: 1px solid var(--schmancy-sys-color-outlineVariant);
|
|
53
|
-
box-shadow: var(--shadow-0);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/* Interactive state */
|
|
57
|
-
:host([interactive]) {
|
|
58
|
-
cursor: pointer;
|
|
59
|
-
-webkit-tap-highlight-color: transparent;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/* Elevated interactive states */
|
|
63
|
-
:host([type='elevated'][interactive]:hover:not([disabled])) {
|
|
64
|
-
box-shadow: var(--shadow-2);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
:host([type='elevated'][dragged]) {
|
|
68
|
-
box-shadow: var(--shadow-3);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/* Filled interactive states */
|
|
72
|
-
:host([type='filled'][interactive]:hover:not([disabled])) {
|
|
73
|
-
box-shadow: var(--shadow-1);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
:host([type='filled'][dragged]) {
|
|
77
|
-
box-shadow: var(--shadow-3);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/* Outlined interactive states */
|
|
81
|
-
:host([type='outlined'][interactive]:hover:not([disabled])) {
|
|
82
|
-
box-shadow: var(--shadow-1);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
:host([type='outlined'][dragged]) {
|
|
86
|
-
box-shadow: var(--shadow-3);
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/* Disabled state */
|
|
90
|
-
:host([disabled]) {
|
|
91
|
-
pointer-events: none;
|
|
92
|
-
opacity: 0.38;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/* Focus ring */
|
|
96
|
-
:host([interactive]:focus-visible:not([disabled])) {
|
|
97
|
-
outline: 2px solid var(--schmancy-sys-color-primary-default);
|
|
98
|
-
outline-offset: 2px;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/* Ripple effect animation */
|
|
102
|
-
@keyframes ripple {
|
|
103
|
-
to {
|
|
104
|
-
transform: scale(4);
|
|
105
|
-
opacity: 0;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
`) {
|
|
109
|
-
constructor() {
|
|
110
|
-
super(...arguments), this.type = "elevated", this.interactive = !1, this.disabled = !1, this.dragged = !1, this.role = "article", this.ariaLabel = "", this.pressed = !1, this.ripples = [], this.nextRippleId = 0, this.handleClick = (e) => {
|
|
111
|
-
if (this.disabled || !this.interactive) return;
|
|
112
|
-
const s = this.getBoundingClientRect(), r = e.clientX - s.left, i = e.clientY - s.top, o = this.nextRippleId++;
|
|
113
|
-
this.ripples = [...this.ripples, { x: r, y: i, id: o }], setTimeout(() => {
|
|
114
|
-
this.ripples = this.ripples.filter((t) => t.id !== o);
|
|
115
|
-
}, 600), this.href && (this.target === "_blank" ? window.open(this.href, "_blank") : window.location.href = this.href), this.dispatchEvent(new CustomEvent("schmancy-click", { detail: { value: this.type }, bubbles: !0, composed: !0 }));
|
|
116
|
-
}, this.handleKeyDown = (e) => {
|
|
117
|
-
if (!this.disabled && this.interactive && (e.key === "Enter" || e.key === " ")) {
|
|
118
|
-
e.preventDefault(), this.pressed = !0, this.setAttribute("pressed", "");
|
|
119
|
-
const s = this.getBoundingClientRect(), r = s.width / 2, i = s.height / 2, o = this.nextRippleId++;
|
|
120
|
-
this.ripples = [...this.ripples, { x: r, y: i, id: o }], setTimeout(() => {
|
|
121
|
-
this.ripples = this.ripples.filter((t) => t.id !== o);
|
|
122
|
-
}, 600), this.href && (this.target === "_blank" ? window.open(this.href, "_blank") : window.location.href = this.href), this.dispatchEvent(new CustomEvent("schmancy-click", { detail: { value: this.type }, bubbles: !0, composed: !0 }));
|
|
123
|
-
}
|
|
124
|
-
}, this.handleKeyUp = (e) => {
|
|
125
|
-
e.key !== "Enter" && e.key !== " " || (this.pressed = !1, this.removeAttribute("pressed"));
|
|
126
|
-
}, this.handleMouseDown = () => {
|
|
127
|
-
!this.disabled && this.interactive && (this.pressed = !0, this.setAttribute("pressed", ""));
|
|
128
|
-
}, this.handleMouseUp = () => {
|
|
129
|
-
this.pressed = !1, this.removeAttribute("pressed");
|
|
130
|
-
}, this.handleMouseLeave = () => {
|
|
131
|
-
this.pressed = !1, this.removeAttribute("pressed");
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
connectedCallback() {
|
|
135
|
-
super.connectedCallback(), this.interactive && !this.disabled && (this.setAttribute("tabindex", "0"), this.role && this.role !== "article" || (this.role = this.href ? "link" : "button"));
|
|
136
|
-
}
|
|
137
|
-
updated(e) {
|
|
138
|
-
super.updated(e), (e.has("interactive") || e.has("disabled")) && (this.interactive && !this.disabled ? (this.setAttribute("tabindex", "0"), this.role && this.role !== "article" || (this.role = this.href ? "link" : "button")) : (this.removeAttribute("tabindex"), this.role !== "button" && this.role !== "link" || (this.role = "article")));
|
|
139
|
-
}
|
|
140
|
-
getStateLayerOpacity() {
|
|
141
|
-
return !this.interactive || this.disabled ? "opacity-0" : this.pressed ? "opacity-[0.1]" : "opacity-0 hover:opacity-[0.08] focus-visible:opacity-[0.1]";
|
|
142
|
-
}
|
|
143
|
-
render() {
|
|
144
|
-
const e = v({ "relative w-full h-full rounded-xl": !0, "cursor-pointer": this.interactive && !this.disabled }), s = v({ "absolute inset-0 rounded-xl pointer-events-none transition-opacity duration-200 bg-surface-on": !0, [this.getStateLayerOpacity()]: !0 });
|
|
145
|
-
return h`
|
|
146
|
-
<div
|
|
147
|
-
class=${e}
|
|
148
|
-
@click=${this.handleClick}
|
|
149
|
-
@keydown=${this.handleKeyDown}
|
|
150
|
-
@keyup=${this.handleKeyUp}
|
|
151
|
-
@mousedown=${this.handleMouseDown}
|
|
152
|
-
@mouseup=${this.handleMouseUp}
|
|
153
|
-
@mouseleave=${this.handleMouseLeave}
|
|
154
|
-
aria-label=${x(this.ariaLabel)}
|
|
155
|
-
aria-disabled=${this.disabled ? "true" : "false"}
|
|
156
|
-
>
|
|
157
|
-
<!-- State layer for hover/focus/pressed states -->
|
|
158
|
-
<div class=${s}></div>
|
|
159
|
-
|
|
160
|
-
<!-- Ripple container for click effects -->
|
|
161
|
-
${this.interactive ? h`
|
|
162
|
-
<div class="absolute inset-0 rounded-xl overflow-hidden pointer-events-none">
|
|
163
|
-
${this.ripples.map((r) => h`
|
|
164
|
-
<span
|
|
165
|
-
class="absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none"
|
|
166
|
-
style="
|
|
167
|
-
left: ${r.x}px;
|
|
168
|
-
top: ${r.y}px;
|
|
169
|
-
width: 20px;
|
|
170
|
-
height: 20px;
|
|
171
|
-
margin-left: -10px;
|
|
172
|
-
margin-top: -10px;
|
|
173
|
-
"
|
|
174
|
-
></span>
|
|
175
|
-
`)}
|
|
176
|
-
</div>
|
|
177
|
-
` : ""}
|
|
178
|
-
|
|
179
|
-
<!-- Card content -->
|
|
180
|
-
<div class="relative h-full w-full rounded-xl">
|
|
181
|
-
<slot></slot>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
`;
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
l.shadowRootOptions = { ...w.shadowRootOptions, mode: "open", delegatesFocus: !0 }, n([d({ reflect: !0 })], l.prototype, "type", 2), n([d({ type: Boolean, reflect: !0 })], l.prototype, "interactive", 2), n([d({ type: Boolean, reflect: !0 })], l.prototype, "disabled", 2), n([d({ type: Boolean, reflect: !0 })], l.prototype, "dragged", 2), n([d()], l.prototype, "href", 2), n([d()], l.prototype, "target", 2), n([d({ attribute: "role" })], l.prototype, "role", 2), n([d({ attribute: "aria-label" })], l.prototype, "ariaLabel", 2), n([y()], l.prototype, "pressed", 2), n([y()], l.prototype, "ripples", 2), l = n([u("schmancy-card")], l);
|
|
188
|
-
var j = Object.getOwnPropertyDescriptor;
|
|
189
|
-
let g = class extends f(b`
|
|
190
|
-
:host {
|
|
191
|
-
display: block;
|
|
192
|
-
padding: 1rem;
|
|
193
|
-
}
|
|
194
|
-
`) {
|
|
195
|
-
render() {
|
|
196
|
-
return h`<slot></slot>`;
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
g = ((e, s, r, i) => {
|
|
200
|
-
for (var o, t = i > 1 ? void 0 : i ? j(s, r) : s, a = e.length - 1; a >= 0; a--) (o = e[a]) && (t = o(t) || t);
|
|
201
|
-
return t;
|
|
202
|
-
})([u("schmancy-card-content")], g);
|
|
203
|
-
var D = Object.defineProperty, A = Object.getOwnPropertyDescriptor, p = (e, s, r, i) => {
|
|
204
|
-
for (var o, t = i > 1 ? void 0 : i ? A(s, r) : s, a = e.length - 1; a >= 0; a--) (o = e[a]) && (t = (i ? o(s, r, t) : o(t)) || t);
|
|
205
|
-
return i && t && D(s, r, t), t;
|
|
206
|
-
};
|
|
207
|
-
let c = class extends f(b`
|
|
208
|
-
:host {
|
|
209
|
-
display: block;
|
|
210
|
-
position: relative;
|
|
211
|
-
height: 200px;
|
|
212
|
-
overflow: hidden;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/* Allow height to be overridden when used in flex/grid layouts */
|
|
216
|
-
:host-context(.h-full) {
|
|
217
|
-
height: 100%;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
::slotted(img),
|
|
221
|
-
img {
|
|
222
|
-
width: 100%;
|
|
223
|
-
height: 100%;
|
|
224
|
-
object-position: center;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/* Object fit styles based on fit attribute */
|
|
228
|
-
:host([fit="contain"]) img,
|
|
229
|
-
:host([fit="contain"]) ::slotted(img) {
|
|
230
|
-
object-fit: contain;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
:host([fit="cover"]) img,
|
|
234
|
-
:host([fit="cover"]) ::slotted(img) {
|
|
235
|
-
object-fit: cover;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
:host([fit="fill"]) img,
|
|
239
|
-
:host([fit="fill"]) ::slotted(img) {
|
|
240
|
-
object-fit: fill;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
:host([fit="none"]) img,
|
|
244
|
-
:host([fit="none"]) ::slotted(img) {
|
|
245
|
-
object-fit: none;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
:host([fit="scale-down"]) img,
|
|
249
|
-
:host([fit="scale-down"]) ::slotted(img) {
|
|
250
|
-
object-fit: scale-down;
|
|
251
|
-
}
|
|
252
|
-
`) {
|
|
253
|
-
constructor() {
|
|
254
|
-
super(...arguments), this.src = "", this.fit = "contain", this.alt = "";
|
|
255
|
-
}
|
|
256
|
-
render() {
|
|
257
|
-
return this.src ? h`<img src="${this.src}" alt="${this.alt}" />` : h`<slot></slot>`;
|
|
258
|
-
}
|
|
259
|
-
};
|
|
260
|
-
p([d({ type: String, reflect: !0 })], c.prototype, "src", 2), p([d({ type: String, reflect: !0 })], c.prototype, "fit", 2), p([d({ type: String })], c.prototype, "alt", 2), c = p([u("schmancy-card-media")], c);
|
|
261
|
-
//# sourceMappingURL=media-CXD15d1H.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-CXD15d1H.js","sources":["../src/card/actions.ts","../src/card/card.ts","../src/card/content.ts","../src/card/media.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-action\n * @slot - The content of the action\n */\n@customElement('schmancy-card-action')\nexport default class SchmancyCardAction extends TailwindElement(css`\n\t:host {\n\t\tdisplay: flex;\n\t\tgap: 0.5rem;\n\t\tpadding: 0.5rem 1rem;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-action': SchmancyCardAction\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\n@customElement('schmancy-card')\nexport default class SchmancyCard extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tborder-radius: 12px; /* M3 spec: 12px for cards */\n\t\ttransition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);\n\t\toutline: none;\n\t}\n\n\t/* Type-specific base styles */\n\t:host([type='elevated']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-low);\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='filled']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-highest);\n\t\tbox-shadow: var(--shadow-0);\n\t}\n\n\t:host([type='outlined']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-default);\n\t\tborder: 1px solid var(--schmancy-sys-color-outlineVariant);\n\t\tbox-shadow: var(--shadow-0);\n\t}\n\n\t/* Interactive state */\n\t:host([interactive]) {\n\t\tcursor: pointer;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\n\t/* Elevated interactive states */\n\t:host([type='elevated'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-2);\n\t}\n\n\t:host([type='elevated'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Filled interactive states */\n\t:host([type='filled'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='filled'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Outlined interactive states */\n\t:host([type='outlined'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='outlined'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Disabled state */\n\t:host([disabled]) {\n\t\tpointer-events: none;\n\t\topacity: 0.38;\n\t}\n\n\t/* Focus ring */\n\t:host([interactive]:focus-visible:not([disabled])) {\n\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\n\t\toutline-offset: 2px;\n\t}\n\n\t/* Ripple effect animation */\n\t@keyframes ripple {\n\t\tto {\n\t\t\ttransform: scale(4);\n\t\t\topacity: 0;\n\t\t}\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t/**\n\t * The visual style of the card.\n\t * @default 'elevated'\n\t */\n\t@property({ reflect: true })\n\ttype: 'elevated' | 'filled' | 'outlined' = 'elevated'\n\n\t/**\n\t * Makes the card interactive (clickable).\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tinteractive = false\n\n\t/**\n\t * Disables the card.\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled = false\n\n\t/**\n\t * Indicates the card is being dragged.\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdragged = false\n\n\t/**\n\t * URL to navigate to when card is clicked (makes it act like a link).\n\t */\n\t@property()\n\thref?: string\n\n\t/**\n\t * Target for the link navigation.\n\t */\n\t@property()\n\ttarget?: string\n\n\t/**\n\t * ARIA role for accessibility.\n\t */\n\t@property({ attribute: 'role' })\n\toverride role = 'article'\n\n\t/**\n\t * ARIA label for accessibility.\n\t */\n\t@property({ attribute: 'aria-label' })\n\toverride ariaLabel: string = ''\n\n\t// Internal state for interaction feedback\n\t@state() pressed = false\n\t@state() private ripples: Array<{ x: number; y: number; id: number }> = []\n\n\tprivate nextRippleId = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set appropriate ARIA attributes for interactive cards\n\t\tif (this.interactive && !this.disabled) {\n\t\t\tthis.setAttribute('tabindex', '0')\n\t\t\tif (!this.role || this.role === 'article') {\n\t\t\t\tthis.role = this.href ? 'link' : 'button'\n\t\t\t}\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, any>) {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Update ARIA attributes when interactive or disabled state changes\n\t\tif (changedProperties.has('interactive') || changedProperties.has('disabled')) {\n\t\t\tif (this.interactive && !this.disabled) {\n\t\t\t\tthis.setAttribute('tabindex', '0')\n\t\t\t\tif (!this.role || this.role === 'article') {\n\t\t\t\t\tthis.role = this.href ? 'link' : 'button'\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.removeAttribute('tabindex')\n\t\t\t\tif (this.role === 'button' || this.role === 'link') {\n\t\t\t\t\tthis.role = 'article'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleClick = (e: MouseEvent) => {\n\t\tif (this.disabled || !this.interactive) return\n\n\t\t// Add ripple effect at click position\n\t\tconst rect = this.getBoundingClientRect()\n\t\tconst x = e.clientX - rect.left\n\t\tconst y = e.clientY - rect.top\n\t\tconst id = this.nextRippleId++\n\n\t\tthis.ripples = [...this.ripples, { x, y, id }]\n\n\t\t// Remove ripple after animation completes\n\t\tsetTimeout(() => {\n\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\n\t\t}, 600)\n\n\t\t// Navigate if href is provided\n\t\tif (this.href) {\n\t\t\tif (this.target === '_blank') {\n\t\t\t\twindow.open(this.href, '_blank')\n\t\t\t} else {\n\t\t\t\twindow.location.href = this.href\n\t\t\t}\n\t\t}\n\n\t\t// Dispatch click event for parent components to handle\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('schmancy-click', {\n\t\t\t\tdetail: { value: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\tif (this.disabled || !this.interactive) return\n\n\t\t// Activate on Enter or Space for keyboard navigation\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\tthis.pressed = true\n\t\t\tthis.setAttribute('pressed', '')\n\n\t\t\t// Simulate click\n\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\tconst x = rect.width / 2\n\t\t\tconst y = rect.height / 2\n\t\t\tconst id = this.nextRippleId++\n\n\t\t\tthis.ripples = [...this.ripples, { x, y, id }]\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\n\t\t\t}, 600)\n\n\t\t\tif (this.href) {\n\t\t\t\tif (this.target === '_blank') {\n\t\t\t\t\twindow.open(this.href, '_blank')\n\t\t\t\t} else {\n\t\t\t\t\twindow.location.href = this.href\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-click', {\n\t\t\t\t\tdetail: { value: this.type },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate handleKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\tthis.pressed = false\n\t\t\tthis.removeAttribute('pressed')\n\t\t}\n\t}\n\n\tprivate handleMouseDown = () => {\n\t\tif (this.disabled || !this.interactive) return\n\t\tthis.pressed = true\n\t\tthis.setAttribute('pressed', '')\n\t}\n\n\tprivate handleMouseUp = () => {\n\t\tthis.pressed = false\n\t\tthis.removeAttribute('pressed')\n\t}\n\n\tprivate handleMouseLeave = () => {\n\t\tthis.pressed = false\n\t\tthis.removeAttribute('pressed')\n\t}\n\n\t// Get the classes for state layer based on current state\n\tprivate getStateLayerOpacity(): string {\n\t\tif (!this.interactive || this.disabled) return 'opacity-0'\n\t\tif (this.pressed) return 'opacity-[0.1]' // M3 pressed: 0.1\n\t\treturn 'opacity-0 hover:opacity-[0.08] focus-visible:opacity-[0.1]' // M3 hover: 0.08, focus: 0.1\n\t}\n\n\tprotected render() {\n\t\tconst containerClasses = classMap({\n\t\t\t'relative w-full h-full rounded-xl': true,\n\t\t\t'cursor-pointer': this.interactive && !this.disabled,\n\t\t})\n\n\t\tconst stateLayerClasses = classMap({\n\t\t\t'absolute inset-0 rounded-xl pointer-events-none transition-opacity duration-200 bg-surface-on': true,\n\t\t\t[this.getStateLayerOpacity()]: true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${containerClasses}\n\t\t\t\t@click=${this.handleClick}\n\t\t\t\t@keydown=${this.handleKeyDown}\n\t\t\t\t@keyup=${this.handleKeyUp}\n\t\t\t\t@mousedown=${this.handleMouseDown}\n\t\t\t\t@mouseup=${this.handleMouseUp}\n\t\t\t\t@mouseleave=${this.handleMouseLeave}\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\taria-disabled=${this.disabled ? 'true' : 'false'}\n\t\t\t>\n\t\t\t\t<!-- State layer for hover/focus/pressed states -->\n\t\t\t\t<div class=${stateLayerClasses}></div>\n\n\t\t\t\t<!-- Ripple container for click effects -->\n\t\t\t\t${this.interactive\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"absolute inset-0 rounded-xl overflow-hidden pointer-events-none\">\n\t\t\t\t\t\t\t\t${this.ripples.map(\n\t\t\t\t\t\t\t\t\tripple => html`\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclass=\"absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none\"\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\t\t\t\t\tleft: ${ripple.x}px;\n\t\t\t\t\t\t\t\t\t\t\t\ttop: ${ripple.y}px;\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\t\t\t\t\t\t\theight: 20px;\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-left: -10px;\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: -10px;\n\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t></span>\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</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\n\t\t\t\t<!-- Card content -->\n\t\t\t\t<div class=\"relative h-full w-full rounded-xl\">\n\t\t\t\t\t<slot></slot>\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-card': SchmancyCard\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-content\n */\n@customElement('schmancy-card-content')\nexport default class SchmancyCardContent extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-content': SchmancyCardContent\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-media\n */\n@customElement('schmancy-card-media')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\theight: 200px;\n\t\toverflow: hidden;\n\t}\n\t\n\t/* Allow height to be overridden when used in flex/grid layouts */\n\t:host-context(.h-full) {\n\t\theight: 100%;\n\t}\n\t\n\t::slotted(img),\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-position: center;\n\t}\n\t\n\t/* Object fit styles based on fit attribute */\n\t:host([fit=\"contain\"]) img,\n\t:host([fit=\"contain\"]) ::slotted(img) {\n\t\tobject-fit: contain;\n\t}\n\t\n\t:host([fit=\"cover\"]) img,\n\t:host([fit=\"cover\"]) ::slotted(img) {\n\t\tobject-fit: cover;\n\t}\n\t\n\t:host([fit=\"fill\"]) img,\n\t:host([fit=\"fill\"]) ::slotted(img) {\n\t\tobject-fit: fill;\n\t}\n\t\n\t:host([fit=\"none\"]) img,\n\t:host([fit=\"none\"]) ::slotted(img) {\n\t\tobject-fit: none;\n\t}\n\t\n\t:host([fit=\"scale-down\"]) img,\n\t:host([fit=\"scale-down\"]) ::slotted(img) {\n\t\tobject-fit: scale-down;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tsrc: string = ''\n\n\t@property({ type: String, reflect: true })\n\tfit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain'\n\t\n\t@property({ type: String })\n\talt: string = ''\n\n\tprotected render(): unknown {\n\t\t// If src is provided, render an img element\n\t\t// Otherwise, allow users to slot their own content\n\t\treturn this.src \n\t\t\t? html`<img src=\"${this.src}\" alt=\"${this.alt}\" />` \n\t\t\t: html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-media': SchmancyCardMedia\n\t}\n}\n"],"names":["SchmancyCardAction","TailwindElement","css","render","html","customElement","SchmancyCard","super","arguments","this","type","interactive","disabled","dragged","role","ariaLabel","pressed","ripples","nextRippleId","handleClick","e","rect","getBoundingClientRect","x","clientX","left","y","clientY","top","id","setTimeout","filter","r","href","target","window","open","location","dispatchEvent","CustomEvent","detail","value","bubbles","composed","handleKeyDown","key","preventDefault","setAttribute","width","height","handleKeyUp","removeAttribute","handleMouseDown","handleMouseUp","handleMouseLeave","connectedCallback","changedProperties","updated","has","containerClasses","classMap","stateLayerClasses","getStateLayerOpacity","ifDefined","map","ripple","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","reflect","prototype","Boolean","attribute","state","SchmancyCardContent","SchmancyCardMedia","constructor","src","fit","alt","String"],"mappings":";;;;;;;;AASA,IAAqBA,IAArB,cAAgDC,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EASrD,SAAAC;AACT,WAAOC;AAAAA,EACR;;AAXoBJ;;;GAArB,CADCK,EAAc,sBAAA,CAAA,GACML;;;;;ACFrB,IAAqBM,IAArB,cAA0CL,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,CAA1D,EAAA;AAAA,EAAA;AAAAK,UAAAA,GAAAC,SAAAA,GA0FCC,KAAAC,OAA2C,YAO3CD,KAAAE,cAAAA,IAOAF,KAAAG,WAAAA,IAOAH,KAAAI,UAAAA,IAkBAJ,KAASK,OAAO,WAMhBL,KAASM,YAAoB,IAGpBN,KAAAO,cACAP,KAAQQ,UAAuD,CAAA,GAExER,KAAQS,eAAe,GAiCvBT,KAAQU,cAAeC,CAAAA,MAAAA;AACtB,UAAIX,KAAKG,YAAAA,CAAaH,KAAKE,YAAa;AAGxC,YAAMU,IAAOZ,KAAKa,sBAAAA,GACZC,IAAIH,EAAEI,UAAUH,EAAKI,MACrBC,IAAIN,EAAEO,UAAUN,EAAKO,KACrBC,IAAKpB,KAAKS;AAEhBT,WAAKQ,UAAU,IAAIR,KAAKQ,SAAS,EAAEM,GAAAA,GAAGG,GAAAA,GAAGG,IAAAA,EAAAA,CAAAA,GAGzCC,WAAW;AACVrB,aAAKQ,UAAUR,KAAKQ,QAAQc,OAAOC,OAAKA,EAAEH,OAAOA,CAAAA;AAAAA,MAAAA,GAC/C,GAAA,GAGCpB,KAAKwB,SACJxB,KAAKyB,WAAW,WACnBC,OAAOC,KAAK3B,KAAKwB,MAAM,QAAA,IAEvBE,OAAOE,SAASJ,OAAOxB,KAAKwB,OAK9BxB,KAAK6B,cACJ,IAAIC,YAAY,kBAAkB,EACjCC,QAAQ,EAAEC,OAAOhC,KAAKC,QACtBgC,SAAAA,IACAC,aAAU,CAAA,CAAA;AAAA,IAAA,GAKblC,KAAQmC,gBAAiBxB,CAAAA,MAAAA;AACxB,WAAIX,KAAKG,YAAaH,KAAKE,gBAGvBS,EAAEyB,QAAQ,WAAWzB,EAAEyB,QAAQ,MAAK;AACvCzB,QAAAA,EAAE0B,eAAAA,GACFrC,KAAKO,UAAAA,IACLP,KAAKsC,aAAa,WAAW,EAAA;AAG7B,cAAM1B,IAAOZ,KAAKa,sBAAAA,GACZC,IAAIF,EAAK2B,QAAQ,GACjBtB,IAAIL,EAAK4B,SAAS,GAClBpB,IAAKpB,KAAKS;AAEhBT,aAAKQ,UAAU,CAAA,GAAIR,KAAKQ,SAAS,EAAEM,GAAAA,GAAGG,GAAAA,GAAGG,UAEzCC,WAAW,MAAA;AACVrB,eAAKQ,UAAUR,KAAKQ,QAAQc,OAAOC,OAAKA,EAAEH,OAAOA,CAAAA;AAAAA,QAAAA,GAC/C,MAECpB,KAAKwB,SACJxB,KAAKyB,WAAW,WACnBC,OAAOC,KAAK3B,KAAKwB,MAAM,QAAA,IAEvBE,OAAOE,SAASJ,OAAOxB,KAAKwB,OAI9BxB,KAAK6B,cACJ,IAAIC,YAAY,kBAAkB,EACjCC,QAAQ,EAAEC,OAAOhC,KAAKC,KAAAA,GACtBgC,SAAAA,IACAC,UAAAA,GAAU,CAAA,CAAA;AAAA,MAGb;AAAA,IAAA,GAGDlC,KAAQyC,cAAe9B,CAAAA,MAAAA;AACR,MAAVA,EAAEyB,QAAQ,WAAWzB,EAAEyB,QAAQ,QAClCpC,KAAKO,UAAAA,IACLP,KAAK0C,gBAAgB,SAAA;AAAA,IAAA,GAIvB1C,KAAQ2C,kBAAkB,MAAA;AAAA,OACrB3C,KAAKG,YAAaH,KAAKE,gBAC3BF,KAAKO,cACLP,KAAKsC,aAAa,WAAW,EAAA;AAAA,IAAA,GAG9BtC,KAAQ4C,gBAAgB,MAAA;AACvB5C,WAAKO,UAAAA,IACLP,KAAK0C,gBAAgB;OAGtB1C,KAAQ6C,mBAAmB;AAC1B7C,WAAKO,UAAAA,IACLP,KAAK0C,gBAAgB,SAAA;AAAA,IAAA;AAAA,EACtB;AAAA,EA9HA,oBAAAI;AACChD,UAAMgD,qBAGF9C,KAAKE,eAAAA,CAAgBF,KAAKG,aAC7BH,KAAKsC,aAAa,YAAY,MACzBtC,KAAKK,QAAQL,KAAKK,SAAS,cAC/BL,KAAKK,OAAOL,KAAKwB,OAAO,SAAS;AAAA,EAGpC;AAAA,EAEA,QAAQuB,GAAAA;AACPjD,UAAMkD,QAAQD,CAAAA,IAGVA,EAAkBE,IAAI,aAAA,KAAkBF,EAAkBE,IAAI,UAAA,OAC7DjD,KAAKE,eAAAA,CAAgBF,KAAKG,YAC7BH,KAAKsC,aAAa,YAAY,GAAA,GACzBtC,KAAKK,QAAQL,KAAKK,SAAS,cAC/BL,KAAKK,OAAOL,KAAKwB,OAAO,SAAS,cAGlCxB,KAAK0C,gBAAgB,UAAA,GACjB1C,KAAKK,SAAS,YAAYL,KAAKK,SAAS,WAC3CL,KAAKK,OAAO;AAAA,EAIhB;AAAA,EAoGQ;AACP,WAAA,CAAKL,KAAKE,eAAeF,KAAKG,WAAiB,cAC3CH,KAAKO,UAAgB,kBAClB;AAAA,EACR;AAAA,EAEU,SAAAb;AACT,UAAMwD,IAAmBC,EAAS,EACjC,qCAAA,IACA,kBAAkBnD,KAAKE,gBAAgBF,KAAKG,SAAAA,CAAAA,GAGvCiD,IAAoBD,EAAS,EAClC,qGACA,CAACnD,KAAKqD,qBAAAA,CAAAA,GAAAA,GAAyB,CAAA;AAGhC,WAAO1D;AAAAA;AAAAA,YAEGuD,CAAAA;AAAAA,aACClD,KAAKU,WAAAA;AAAAA,eACHV,KAAKmC,aAAAA;AAAAA,aACPnC,KAAKyC,WAAAA;AAAAA,iBACDzC,KAAK2C,eAAAA;AAAAA,eACP3C,KAAK4C,aAAAA;AAAAA,kBACF5C,KAAK6C,gBAAAA;AAAAA,iBACNS,EAAUtD,KAAKM,SAAAA,CAAAA;AAAAA,oBACZN,KAAKG,WAAW,SAAS,OAAA;AAAA;AAAA;AAAA,iBAG5BiD,CAAAA;AAAAA;AAAAA;AAAAA,MAGXpD,KAAKE,cACJP;AAAAA;AAAAA,UAEGK,KAAKQ,QAAQ+C,IACdC,CAAAA,MAAU7D;AAAAA;AAAAA;AAAAA;AAAAA,oBAIC6D,EAAO1C,CAAAA;AAAAA,mBACR0C,EAAOvC,CAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;;UAWnB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQN;AAAA;AA7UoBpB,EA+EH4D,oBAAoB,EAAA,GACjCC,EAAWD,mBACdE,MAAM,QACNC,gBAAAA,GAAgB,GAQjBC,EAAA,CADCC,EAAS,EAAEC,YAAS,CAAA,CAAA,GAzFDlE,EA0FpBmE,WAAA,QAAA,CAAA,GAOAH,EAAA,CADCC,EAAS,EAAE7D,MAAMgE,SAASF,SAAAA,GAAS,CAAA,CAAA,GAhGhBlE,EAiGpBmE,WAAA,eAAA,CAAA,GAOAH,EAAA,CADCC,EAAS,EAAE7D,MAAMgE,SAASF,SAAAA,GAAS,CAAA,CAAA,GAvGhBlE,EAwGpBmE,WAAA,YAAA,CAAA,GAOAH,EAAA,CADCC,EAAS,EAAE7D,MAAMgE,SAASF,SAAAA,GAAS,CAAA,CAAA,GA9GhBlE,EA+GpBmE,WAAA,WAAA,CAAA,GAMAH,EAAA,CADCC,EAAAA,CAAAA,GApHmBjE,EAqHpBmE,WAAA,QAAA,CAAA,GAMAH,EAAA,CADCC,EAAAA,CAAAA,GA1HmBjE,EA2HpBmE,WAAA,UAAA,CAAA,GAMSH,EAAA,CADRC,EAAS,EAAEI,WAAW,OAAA,CAAA,CAAA,GAhIHrE,EAiIXmE,WAAA,QAAA,CAAA,GAMAH,EAAA,CADRC,EAAS,EAAEI,WAAW,aAAA,CAAA,CAAA,GAtIHrE,EAuIXmE,WAAA,aAAA,IAGAH,EAAA,CAARM,EAAAA,CAAAA,GA1ImBtE,EA0IXmE,WAAA,WAAA,CAAA,GACQH,EAAA,CAAhBM,EAAAA,CAAAA,GA3ImBtE,EA2IHmE,WAAA,WAAA,CAAA,GA3IGnE,IAArBgE,EAAA,CADCjE,EAAc,eAAA,CAAA,GACMC,CAAAA;;ACCrB,IAAqBuE,IAArB,cAAiD5E,EAAgBC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;EAMtD,SAAAC;AACT,WAAOC;AAAAA,EACR;;AARoByE;;;GAArB,CADCxE,EAAc,uBAAA,CAAA,GACMwE;;;;;ACArB,IAAqBC,IAArB,cAA+C7E,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,CAA/D,EAAA;AAAA,EAAA,cAAA6E;AAAAxE,UAAAA,GAAAC,SAAAA,GA+CCC,KAAAuE,MAAc,IAGdvE,KAAAwE,MAA4D,WAG5DxE,KAAAyE,MAAc;AAAA,EAAA;AAAA,EAEJ,SAAA/E;AAGT,WAAOM,KAAKuE,MACT5E,cAAiBK,KAAKuE,GAAAA,UAAavE,KAAKyE,GAAAA,SACxC9E;AAAAA,EACJ;AAAA;AAdAkE,EAAA,CADCC,EAAS,EAAE7D,MAAMyE,QAAQX,SAAAA,GAAS,CAAA,CAAA,GA9CfM,EA+CpBL,WAAA,OAAA,CAAA,GAGAH,EAAA,CADCC,EAAS,EAAE7D,MAAMyE,QAAQX,SAAAA,QAjDNM,EAkDpBL,WAAA,OAAA,CAAA,GAGAH,EAAA,CADCC,EAAS,EAAE7D,MAAMyE,OAAAA,CAAAA,CAAAA,GApDEL,EAqDpBL,WAAA,OAAA,CAAA,GArDoBK,IAArBR,EAAA,CADCjE,EAAc,qBAAA,CAAA,GACMyE,CAAAA;"}
|
package/dist/media-DPyw2ILI.cjs
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
"use strict";require("rxjs");const y=require("lit/directives/class-map.js");require("lit/directives/style-map.js");const a=require("lit/decorators.js"),u=require("./tailwind.mixin-CvLC4LGm.cjs"),h=require("lit"),f=require("lit/directives/if-defined.js");var m=Object.getOwnPropertyDescriptor;let b=class extends u.TailwindElement(h.css`
|
|
2
|
-
:host {
|
|
3
|
-
display: flex;
|
|
4
|
-
gap: 0.5rem;
|
|
5
|
-
padding: 0.5rem 1rem;
|
|
6
|
-
align-items: center;
|
|
7
|
-
justify-content: flex-end;
|
|
8
|
-
}
|
|
9
|
-
`){render(){return h.html`<slot></slot>`}};b=((t,s,r,i)=>{for(var o,e=i>1?void 0:i?m(s,r):s,l=t.length-1;l>=0;l--)(o=t[l])&&(e=o(e)||e);return e})([a.customElement("schmancy-card-action")],b);var g=Object.defineProperty,w=Object.getOwnPropertyDescriptor,d=(t,s,r,i)=>{for(var o,e=i>1?void 0:i?w(s,r):s,l=t.length-1;l>=0;l--)(o=t[l])&&(e=(i?o(s,r,e):o(e))||e);return i&&e&&g(s,r,e),e};let n=class extends u.TailwindElement(h.css`
|
|
10
|
-
:host {
|
|
11
|
-
display: block;
|
|
12
|
-
position: relative;
|
|
13
|
-
border-radius: 12px; /* M3 spec: 12px for cards */
|
|
14
|
-
transition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);
|
|
15
|
-
outline: none;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/* Type-specific base styles */
|
|
19
|
-
:host([type='elevated']) {
|
|
20
|
-
background-color: var(--schmancy-sys-color-surface-low);
|
|
21
|
-
box-shadow: var(--shadow-1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
:host([type='filled']) {
|
|
25
|
-
background-color: var(--schmancy-sys-color-surface-highest);
|
|
26
|
-
box-shadow: var(--shadow-0);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
:host([type='outlined']) {
|
|
30
|
-
background-color: var(--schmancy-sys-color-surface-default);
|
|
31
|
-
border: 1px solid var(--schmancy-sys-color-outlineVariant);
|
|
32
|
-
box-shadow: var(--shadow-0);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/* Interactive state */
|
|
36
|
-
:host([interactive]) {
|
|
37
|
-
cursor: pointer;
|
|
38
|
-
-webkit-tap-highlight-color: transparent;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/* Elevated interactive states */
|
|
42
|
-
:host([type='elevated'][interactive]:hover:not([disabled])) {
|
|
43
|
-
box-shadow: var(--shadow-2);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
:host([type='elevated'][dragged]) {
|
|
47
|
-
box-shadow: var(--shadow-3);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/* Filled interactive states */
|
|
51
|
-
:host([type='filled'][interactive]:hover:not([disabled])) {
|
|
52
|
-
box-shadow: var(--shadow-1);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
:host([type='filled'][dragged]) {
|
|
56
|
-
box-shadow: var(--shadow-3);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/* Outlined interactive states */
|
|
60
|
-
:host([type='outlined'][interactive]:hover:not([disabled])) {
|
|
61
|
-
box-shadow: var(--shadow-1);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
:host([type='outlined'][dragged]) {
|
|
65
|
-
box-shadow: var(--shadow-3);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
/* Disabled state */
|
|
69
|
-
:host([disabled]) {
|
|
70
|
-
pointer-events: none;
|
|
71
|
-
opacity: 0.38;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* Focus ring */
|
|
75
|
-
:host([interactive]:focus-visible:not([disabled])) {
|
|
76
|
-
outline: 2px solid var(--schmancy-sys-color-primary-default);
|
|
77
|
-
outline-offset: 2px;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/* Ripple effect animation */
|
|
81
|
-
@keyframes ripple {
|
|
82
|
-
to {
|
|
83
|
-
transform: scale(4);
|
|
84
|
-
opacity: 0;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
`){constructor(){super(...arguments),this.type="elevated",this.interactive=!1,this.disabled=!1,this.dragged=!1,this.role="article",this.ariaLabel="",this.pressed=!1,this.ripples=[],this.nextRippleId=0,this.handleClick=t=>{if(this.disabled||!this.interactive)return;const s=this.getBoundingClientRect(),r=t.clientX-s.left,i=t.clientY-s.top,o=this.nextRippleId++;this.ripples=[...this.ripples,{x:r,y:i,id:o}],setTimeout(()=>{this.ripples=this.ripples.filter(e=>e.id!==o)},600),this.href&&(this.target==="_blank"?window.open(this.href,"_blank"):window.location.href=this.href),this.dispatchEvent(new CustomEvent("schmancy-click",{detail:{value:this.type},bubbles:!0,composed:!0}))},this.handleKeyDown=t=>{if(!this.disabled&&this.interactive&&(t.key==="Enter"||t.key===" ")){t.preventDefault(),this.pressed=!0,this.setAttribute("pressed","");const s=this.getBoundingClientRect(),r=s.width/2,i=s.height/2,o=this.nextRippleId++;this.ripples=[...this.ripples,{x:r,y:i,id:o}],setTimeout(()=>{this.ripples=this.ripples.filter(e=>e.id!==o)},600),this.href&&(this.target==="_blank"?window.open(this.href,"_blank"):window.location.href=this.href),this.dispatchEvent(new CustomEvent("schmancy-click",{detail:{value:this.type},bubbles:!0,composed:!0}))}},this.handleKeyUp=t=>{t.key!=="Enter"&&t.key!==" "||(this.pressed=!1,this.removeAttribute("pressed"))},this.handleMouseDown=()=>{!this.disabled&&this.interactive&&(this.pressed=!0,this.setAttribute("pressed",""))},this.handleMouseUp=()=>{this.pressed=!1,this.removeAttribute("pressed")},this.handleMouseLeave=()=>{this.pressed=!1,this.removeAttribute("pressed")}}connectedCallback(){super.connectedCallback(),this.interactive&&!this.disabled&&(this.setAttribute("tabindex","0"),this.role&&this.role!=="article"||(this.role=this.href?"link":"button"))}updated(t){super.updated(t),(t.has("interactive")||t.has("disabled"))&&(this.interactive&&!this.disabled?(this.setAttribute("tabindex","0"),this.role&&this.role!=="article"||(this.role=this.href?"link":"button")):(this.removeAttribute("tabindex"),this.role!=="button"&&this.role!=="link"||(this.role="article")))}getStateLayerOpacity(){return!this.interactive||this.disabled?"opacity-0":this.pressed?"opacity-[0.1]":"opacity-0 hover:opacity-[0.08] focus-visible:opacity-[0.1]"}render(){const t=y.classMap({"relative w-full h-full rounded-xl":!0,"cursor-pointer":this.interactive&&!this.disabled}),s=y.classMap({"absolute inset-0 rounded-xl pointer-events-none transition-opacity duration-200 bg-surface-on":!0,[this.getStateLayerOpacity()]:!0});return h.html`
|
|
88
|
-
<div
|
|
89
|
-
class=${t}
|
|
90
|
-
@click=${this.handleClick}
|
|
91
|
-
@keydown=${this.handleKeyDown}
|
|
92
|
-
@keyup=${this.handleKeyUp}
|
|
93
|
-
@mousedown=${this.handleMouseDown}
|
|
94
|
-
@mouseup=${this.handleMouseUp}
|
|
95
|
-
@mouseleave=${this.handleMouseLeave}
|
|
96
|
-
aria-label=${f.ifDefined(this.ariaLabel)}
|
|
97
|
-
aria-disabled=${this.disabled?"true":"false"}
|
|
98
|
-
>
|
|
99
|
-
<!-- State layer for hover/focus/pressed states -->
|
|
100
|
-
<div class=${s}></div>
|
|
101
|
-
|
|
102
|
-
<!-- Ripple container for click effects -->
|
|
103
|
-
${this.interactive?h.html`
|
|
104
|
-
<div class="absolute inset-0 rounded-xl overflow-hidden pointer-events-none">
|
|
105
|
-
${this.ripples.map(r=>h.html`
|
|
106
|
-
<span
|
|
107
|
-
class="absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none"
|
|
108
|
-
style="
|
|
109
|
-
left: ${r.x}px;
|
|
110
|
-
top: ${r.y}px;
|
|
111
|
-
width: 20px;
|
|
112
|
-
height: 20px;
|
|
113
|
-
margin-left: -10px;
|
|
114
|
-
margin-top: -10px;
|
|
115
|
-
"
|
|
116
|
-
></span>
|
|
117
|
-
`)}
|
|
118
|
-
</div>
|
|
119
|
-
`:""}
|
|
120
|
-
|
|
121
|
-
<!-- Card content -->
|
|
122
|
-
<div class="relative h-full w-full rounded-xl">
|
|
123
|
-
<slot></slot>
|
|
124
|
-
</div>
|
|
125
|
-
</div>
|
|
126
|
-
`}};n.shadowRootOptions={...h.LitElement.shadowRootOptions,mode:"open",delegatesFocus:!0},d([a.property({reflect:!0})],n.prototype,"type",2),d([a.property({type:Boolean,reflect:!0})],n.prototype,"interactive",2),d([a.property({type:Boolean,reflect:!0})],n.prototype,"disabled",2),d([a.property({type:Boolean,reflect:!0})],n.prototype,"dragged",2),d([a.property()],n.prototype,"href",2),d([a.property()],n.prototype,"target",2),d([a.property({attribute:"role"})],n.prototype,"role",2),d([a.property({attribute:"aria-label"})],n.prototype,"ariaLabel",2),d([a.state()],n.prototype,"pressed",2),d([a.state()],n.prototype,"ripples",2),n=d([a.customElement("schmancy-card")],n);var x=Object.getOwnPropertyDescriptor;let v=class extends u.TailwindElement(h.css`
|
|
127
|
-
:host {
|
|
128
|
-
display: block;
|
|
129
|
-
padding: 1rem;
|
|
130
|
-
}
|
|
131
|
-
`){render(){return h.html`<slot></slot>`}};v=((t,s,r,i)=>{for(var o,e=i>1?void 0:i?x(s,r):s,l=t.length-1;l>=0;l--)(o=t[l])&&(e=o(e)||e);return e})([a.customElement("schmancy-card-content")],v);var k=Object.defineProperty,E=Object.getOwnPropertyDescriptor,c=(t,s,r,i)=>{for(var o,e=i>1?void 0:i?E(s,r):s,l=t.length-1;l>=0;l--)(o=t[l])&&(e=(i?o(s,r,e):o(e))||e);return i&&e&&k(s,r,e),e};let p=class extends u.TailwindElement(h.css`
|
|
132
|
-
:host {
|
|
133
|
-
display: block;
|
|
134
|
-
position: relative;
|
|
135
|
-
height: 200px;
|
|
136
|
-
overflow: hidden;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/* Allow height to be overridden when used in flex/grid layouts */
|
|
140
|
-
:host-context(.h-full) {
|
|
141
|
-
height: 100%;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
::slotted(img),
|
|
145
|
-
img {
|
|
146
|
-
width: 100%;
|
|
147
|
-
height: 100%;
|
|
148
|
-
object-position: center;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/* Object fit styles based on fit attribute */
|
|
152
|
-
:host([fit="contain"]) img,
|
|
153
|
-
:host([fit="contain"]) ::slotted(img) {
|
|
154
|
-
object-fit: contain;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
:host([fit="cover"]) img,
|
|
158
|
-
:host([fit="cover"]) ::slotted(img) {
|
|
159
|
-
object-fit: cover;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
:host([fit="fill"]) img,
|
|
163
|
-
:host([fit="fill"]) ::slotted(img) {
|
|
164
|
-
object-fit: fill;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
:host([fit="none"]) img,
|
|
168
|
-
:host([fit="none"]) ::slotted(img) {
|
|
169
|
-
object-fit: none;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
:host([fit="scale-down"]) img,
|
|
173
|
-
:host([fit="scale-down"]) ::slotted(img) {
|
|
174
|
-
object-fit: scale-down;
|
|
175
|
-
}
|
|
176
|
-
`){constructor(){super(...arguments),this.src="",this.fit="contain",this.alt=""}render(){return this.src?h.html`<img src="${this.src}" alt="${this.alt}" />`:h.html`<slot></slot>`}};c([a.property({type:String,reflect:!0})],p.prototype,"src",2),c([a.property({type:String,reflect:!0})],p.prototype,"fit",2),c([a.property({type:String})],p.prototype,"alt",2),p=c([a.customElement("schmancy-card-media")],p);
|
|
177
|
-
//# sourceMappingURL=media-DPyw2ILI.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-DPyw2ILI.cjs","sources":["../src/card/actions.ts","../src/card/card.ts","../src/card/content.ts","../src/card/media.ts"],"sourcesContent":["import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-action\n * @slot - The content of the action\n */\n@customElement('schmancy-card-action')\nexport default class SchmancyCardAction extends TailwindElement(css`\n\t:host {\n\t\tdisplay: flex;\n\t\tgap: 0.5rem;\n\t\tpadding: 0.5rem 1rem;\n\t\talign-items: center;\n\t\tjustify-content: flex-end;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-action': SchmancyCardAction\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\nimport { classMap } from 'lit/directives/class-map.js'\nimport { ifDefined } from 'lit/directives/if-defined.js'\n\n@customElement('schmancy-card')\nexport default class SchmancyCard extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\tborder-radius: 12px; /* M3 spec: 12px for cards */\n\t\ttransition: box-shadow 200ms cubic-bezier(0.2, 0, 0, 1);\n\t\toutline: none;\n\t}\n\n\t/* Type-specific base styles */\n\t:host([type='elevated']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-low);\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='filled']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-highest);\n\t\tbox-shadow: var(--shadow-0);\n\t}\n\n\t:host([type='outlined']) {\n\t\tbackground-color: var(--schmancy-sys-color-surface-default);\n\t\tborder: 1px solid var(--schmancy-sys-color-outlineVariant);\n\t\tbox-shadow: var(--shadow-0);\n\t}\n\n\t/* Interactive state */\n\t:host([interactive]) {\n\t\tcursor: pointer;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\n\t/* Elevated interactive states */\n\t:host([type='elevated'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-2);\n\t}\n\n\t:host([type='elevated'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Filled interactive states */\n\t:host([type='filled'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='filled'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Outlined interactive states */\n\t:host([type='outlined'][interactive]:hover:not([disabled])) {\n\t\tbox-shadow: var(--shadow-1);\n\t}\n\n\t:host([type='outlined'][dragged]) {\n\t\tbox-shadow: var(--shadow-3);\n\t}\n\n\t/* Disabled state */\n\t:host([disabled]) {\n\t\tpointer-events: none;\n\t\topacity: 0.38;\n\t}\n\n\t/* Focus ring */\n\t:host([interactive]:focus-visible:not([disabled])) {\n\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\n\t\toutline-offset: 2px;\n\t}\n\n\t/* Ripple effect animation */\n\t@keyframes ripple {\n\t\tto {\n\t\t\ttransform: scale(4);\n\t\t\topacity: 0;\n\t\t}\n\t}\n`) {\n\tprotected static shadowRootOptions = {\n\t\t...LitElement.shadowRootOptions,\n\t\tmode: 'open',\n\t\tdelegatesFocus: true,\n\t}\n\n\t/**\n\t * The visual style of the card.\n\t * @default 'elevated'\n\t */\n\t@property({ reflect: true })\n\ttype: 'elevated' | 'filled' | 'outlined' = 'elevated'\n\n\t/**\n\t * Makes the card interactive (clickable).\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tinteractive = false\n\n\t/**\n\t * Disables the card.\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdisabled = false\n\n\t/**\n\t * Indicates the card is being dragged.\n\t * @default false\n\t */\n\t@property({ type: Boolean, reflect: true })\n\tdragged = false\n\n\t/**\n\t * URL to navigate to when card is clicked (makes it act like a link).\n\t */\n\t@property()\n\thref?: string\n\n\t/**\n\t * Target for the link navigation.\n\t */\n\t@property()\n\ttarget?: string\n\n\t/**\n\t * ARIA role for accessibility.\n\t */\n\t@property({ attribute: 'role' })\n\toverride role = 'article'\n\n\t/**\n\t * ARIA label for accessibility.\n\t */\n\t@property({ attribute: 'aria-label' })\n\toverride ariaLabel: string = ''\n\n\t// Internal state for interaction feedback\n\t@state() pressed = false\n\t@state() private ripples: Array<{ x: number; y: number; id: number }> = []\n\n\tprivate nextRippleId = 0\n\n\tconnectedCallback() {\n\t\tsuper.connectedCallback()\n\n\t\t// Set appropriate ARIA attributes for interactive cards\n\t\tif (this.interactive && !this.disabled) {\n\t\t\tthis.setAttribute('tabindex', '0')\n\t\t\tif (!this.role || this.role === 'article') {\n\t\t\t\tthis.role = this.href ? 'link' : 'button'\n\t\t\t}\n\t\t}\n\t}\n\n\tupdated(changedProperties: Map<string, any>) {\n\t\tsuper.updated(changedProperties)\n\n\t\t// Update ARIA attributes when interactive or disabled state changes\n\t\tif (changedProperties.has('interactive') || changedProperties.has('disabled')) {\n\t\t\tif (this.interactive && !this.disabled) {\n\t\t\t\tthis.setAttribute('tabindex', '0')\n\t\t\t\tif (!this.role || this.role === 'article') {\n\t\t\t\t\tthis.role = this.href ? 'link' : 'button'\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis.removeAttribute('tabindex')\n\t\t\t\tif (this.role === 'button' || this.role === 'link') {\n\t\t\t\t\tthis.role = 'article'\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate handleClick = (e: MouseEvent) => {\n\t\tif (this.disabled || !this.interactive) return\n\n\t\t// Add ripple effect at click position\n\t\tconst rect = this.getBoundingClientRect()\n\t\tconst x = e.clientX - rect.left\n\t\tconst y = e.clientY - rect.top\n\t\tconst id = this.nextRippleId++\n\n\t\tthis.ripples = [...this.ripples, { x, y, id }]\n\n\t\t// Remove ripple after animation completes\n\t\tsetTimeout(() => {\n\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\n\t\t}, 600)\n\n\t\t// Navigate if href is provided\n\t\tif (this.href) {\n\t\t\tif (this.target === '_blank') {\n\t\t\t\twindow.open(this.href, '_blank')\n\t\t\t} else {\n\t\t\t\twindow.location.href = this.href\n\t\t\t}\n\t\t}\n\n\t\t// Dispatch click event for parent components to handle\n\t\tthis.dispatchEvent(\n\t\t\tnew CustomEvent('schmancy-click', {\n\t\t\t\tdetail: { value: this.type },\n\t\t\t\tbubbles: true,\n\t\t\t\tcomposed: true,\n\t\t\t}),\n\t\t)\n\t}\n\n\tprivate handleKeyDown = (e: KeyboardEvent) => {\n\t\tif (this.disabled || !this.interactive) return\n\n\t\t// Activate on Enter or Space for keyboard navigation\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\te.preventDefault()\n\t\t\tthis.pressed = true\n\t\t\tthis.setAttribute('pressed', '')\n\n\t\t\t// Simulate click\n\t\t\tconst rect = this.getBoundingClientRect()\n\t\t\tconst x = rect.width / 2\n\t\t\tconst y = rect.height / 2\n\t\t\tconst id = this.nextRippleId++\n\n\t\t\tthis.ripples = [...this.ripples, { x, y, id }]\n\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.ripples = this.ripples.filter(r => r.id !== id)\n\t\t\t}, 600)\n\n\t\t\tif (this.href) {\n\t\t\t\tif (this.target === '_blank') {\n\t\t\t\t\twindow.open(this.href, '_blank')\n\t\t\t\t} else {\n\t\t\t\t\twindow.location.href = this.href\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.dispatchEvent(\n\t\t\t\tnew CustomEvent('schmancy-click', {\n\t\t\t\t\tdetail: { value: this.type },\n\t\t\t\t\tbubbles: true,\n\t\t\t\t\tcomposed: true,\n\t\t\t\t}),\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate handleKeyUp = (e: KeyboardEvent) => {\n\t\tif (e.key === 'Enter' || e.key === ' ') {\n\t\t\tthis.pressed = false\n\t\t\tthis.removeAttribute('pressed')\n\t\t}\n\t}\n\n\tprivate handleMouseDown = () => {\n\t\tif (this.disabled || !this.interactive) return\n\t\tthis.pressed = true\n\t\tthis.setAttribute('pressed', '')\n\t}\n\n\tprivate handleMouseUp = () => {\n\t\tthis.pressed = false\n\t\tthis.removeAttribute('pressed')\n\t}\n\n\tprivate handleMouseLeave = () => {\n\t\tthis.pressed = false\n\t\tthis.removeAttribute('pressed')\n\t}\n\n\t// Get the classes for state layer based on current state\n\tprivate getStateLayerOpacity(): string {\n\t\tif (!this.interactive || this.disabled) return 'opacity-0'\n\t\tif (this.pressed) return 'opacity-[0.1]' // M3 pressed: 0.1\n\t\treturn 'opacity-0 hover:opacity-[0.08] focus-visible:opacity-[0.1]' // M3 hover: 0.08, focus: 0.1\n\t}\n\n\tprotected render() {\n\t\tconst containerClasses = classMap({\n\t\t\t'relative w-full h-full rounded-xl': true,\n\t\t\t'cursor-pointer': this.interactive && !this.disabled,\n\t\t})\n\n\t\tconst stateLayerClasses = classMap({\n\t\t\t'absolute inset-0 rounded-xl pointer-events-none transition-opacity duration-200 bg-surface-on': true,\n\t\t\t[this.getStateLayerOpacity()]: true,\n\t\t})\n\n\t\treturn html`\n\t\t\t<div\n\t\t\t\tclass=${containerClasses}\n\t\t\t\t@click=${this.handleClick}\n\t\t\t\t@keydown=${this.handleKeyDown}\n\t\t\t\t@keyup=${this.handleKeyUp}\n\t\t\t\t@mousedown=${this.handleMouseDown}\n\t\t\t\t@mouseup=${this.handleMouseUp}\n\t\t\t\t@mouseleave=${this.handleMouseLeave}\n\t\t\t\taria-label=${ifDefined(this.ariaLabel)}\n\t\t\t\taria-disabled=${this.disabled ? 'true' : 'false'}\n\t\t\t>\n\t\t\t\t<!-- State layer for hover/focus/pressed states -->\n\t\t\t\t<div class=${stateLayerClasses}></div>\n\n\t\t\t\t<!-- Ripple container for click effects -->\n\t\t\t\t${this.interactive\n\t\t\t\t\t? html`\n\t\t\t\t\t\t\t<div class=\"absolute inset-0 rounded-xl overflow-hidden pointer-events-none\">\n\t\t\t\t\t\t\t\t${this.ripples.map(\n\t\t\t\t\t\t\t\t\tripple => html`\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tclass=\"absolute rounded-full scale-0 animate-[ripple_600ms_linear] bg-surface-on opacity-[0.12] pointer-events-none\"\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"\n\t\t\t\t\t\t\t\t\t\t\t\tleft: ${ripple.x}px;\n\t\t\t\t\t\t\t\t\t\t\t\ttop: ${ripple.y}px;\n\t\t\t\t\t\t\t\t\t\t\t\twidth: 20px;\n\t\t\t\t\t\t\t\t\t\t\t\theight: 20px;\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-left: -10px;\n\t\t\t\t\t\t\t\t\t\t\t\tmargin-top: -10px;\n\t\t\t\t\t\t\t\t\t\t\t\"\n\t\t\t\t\t\t\t\t\t\t></span>\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</div>\n\t\t\t\t\t\t`\n\t\t\t\t\t: ''}\n\n\t\t\t\t<!-- Card content -->\n\t\t\t\t<div class=\"relative h-full w-full rounded-xl\">\n\t\t\t\t\t<slot></slot>\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-card': SchmancyCard\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-content\n */\n@customElement('schmancy-card-content')\nexport default class SchmancyCardContent extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tpadding: 1rem;\n\t}\n`) {\n\tprotected render(): unknown {\n\t\treturn html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-content': SchmancyCardContent\n\t}\n}\n","import { TailwindElement } from '@mixins/index'\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n/**\n * @element schmancy-card-media\n */\n@customElement('schmancy-card-media')\nexport default class SchmancyCardMedia extends TailwindElement(css`\n\t:host {\n\t\tdisplay: block;\n\t\tposition: relative;\n\t\theight: 200px;\n\t\toverflow: hidden;\n\t}\n\t\n\t/* Allow height to be overridden when used in flex/grid layouts */\n\t:host-context(.h-full) {\n\t\theight: 100%;\n\t}\n\t\n\t::slotted(img),\n\timg {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-position: center;\n\t}\n\t\n\t/* Object fit styles based on fit attribute */\n\t:host([fit=\"contain\"]) img,\n\t:host([fit=\"contain\"]) ::slotted(img) {\n\t\tobject-fit: contain;\n\t}\n\t\n\t:host([fit=\"cover\"]) img,\n\t:host([fit=\"cover\"]) ::slotted(img) {\n\t\tobject-fit: cover;\n\t}\n\t\n\t:host([fit=\"fill\"]) img,\n\t:host([fit=\"fill\"]) ::slotted(img) {\n\t\tobject-fit: fill;\n\t}\n\t\n\t:host([fit=\"none\"]) img,\n\t:host([fit=\"none\"]) ::slotted(img) {\n\t\tobject-fit: none;\n\t}\n\t\n\t:host([fit=\"scale-down\"]) img,\n\t:host([fit=\"scale-down\"]) ::slotted(img) {\n\t\tobject-fit: scale-down;\n\t}\n`) {\n\t@property({ type: String, reflect: true })\n\tsrc: string = ''\n\n\t@property({ type: String, reflect: true })\n\tfit: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain'\n\t\n\t@property({ type: String })\n\talt: string = ''\n\n\tprotected render(): unknown {\n\t\t// If src is provided, render an img element\n\t\t// Otherwise, allow users to slot their own content\n\t\treturn this.src \n\t\t\t? html`<img src=\"${this.src}\" alt=\"${this.alt}\" />` \n\t\t\t: html`<slot></slot>`\n\t}\n}\n\ndeclare global {\n\tinterface HTMLElementTagNameMap {\n\t\t'schmancy-card-media': SchmancyCardMedia\n\t}\n}\n"],"names":["SchmancyCardAction","TailwindElement","css","render","html","customElement","SchmancyCard","super","arguments","this","type","interactive","disabled","dragged","role","ariaLabel","pressed","ripples","nextRippleId","handleClick","e","rect","getBoundingClientRect","x","clientX","left","y","clientY","top","id","setTimeout","filter","r","href","target","window","open","location","dispatchEvent","CustomEvent","detail","value","bubbles","composed","handleKeyDown","key","preventDefault","setAttribute","width","height","handleKeyUp","removeAttribute","handleMouseDown","handleMouseUp","handleMouseLeave","connectedCallback","changedProperties","updated","has","containerClasses","classMap","stateLayerClasses","getStateLayerOpacity","ifDefined","map","ripple","shadowRootOptions","LitElement","mode","delegatesFocus","__decorateClass","property","reflect","prototype","Boolean","attribute","state","SchmancyCardContent","SchmancyCardMedia","constructor","src","fit","alt","String"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-rail-Cwhii1Km.js","sources":["../src/navigation-rail/navigation-rail-item.ts","../src/navigation-rail/navigation-rail.ts"],"sourcesContent":["import { $LitElement } from '@mixins/index'\r\nimport { css, html, PropertyValues } from 'lit'\r\nimport { customElement, property, state } from 'lit/decorators.js'\r\nimport { when } from 'lit/directives/when.js'\r\nimport { BehaviorSubject, fromEvent, merge, takeUntil } from 'rxjs'\r\nimport { tap, delay, distinctUntilChanged } from 'rxjs/operators'\r\n\r\nexport type NavigationRailItemClickEvent = CustomEvent<{\r\n\ticon: string\r\n\tlabel: string\r\n\tvalue: string\r\n\tactive: boolean\r\n}>\r\n\r\n/**\r\n * Material Design 3 Navigation Rail Item Component\r\n * @see https://m3.material.io/components/navigation-rail/overview\r\n *\r\n * `<schmancy-navigation-rail-item>` component\r\n *\r\n * Individual navigation item for use within a navigation rail.\r\n * Represents a single destination or action with an icon and optional label.\r\n *\r\n * @element schmancy-navigation-rail-item\r\n * @slot icon - Slot for the navigation item icon (e.g., schmancy-icon)\r\n * @slot - Default slot for custom content\r\n * @slot badge - Custom badge content\r\n *\r\n * @fires navigate - When the item is clicked\r\n *\r\n * @csspart container - The main item container\r\n * @csspart indicator - The active indicator\r\n * @csspart icon - The icon container\r\n * @csspart label - The label text\r\n * @csspart badge - The badge element\r\n *\r\n * @example\r\n * <schmancy-navigation-rail-item\r\n * icon=\"home\"\r\n * label=\"Home\"\r\n * value=\"/home\"\r\n * badge=\"3\"\r\n * active>\r\n * </schmancy-navigation-rail-item>\r\n *\r\n * @example\r\n * <!-- Using 'selected' alias -->\r\n * <schmancy-navigation-rail-item\r\n * icon=\"settings\"\r\n * label=\"Settings\"\r\n * value=\"/settings\"\r\n * selected>\r\n * </schmancy-navigation-rail-item>\r\n *\r\n * @example\r\n * <!-- With custom icon -->\r\n * <schmancy-navigation-rail-item label=\"Dashboard\">\r\n * <schmancy-icon slot=\"icon\">dashboard</schmancy-icon>\r\n * </schmancy-navigation-rail-item>\r\n */\r\n@customElement('schmancy-navigation-rail-item')\r\nexport class SchmancyNavigationRailItem extends $LitElement(css`\r\n\t:host {\r\n\t\tdisplay: block;\r\n\t\tposition: relative;\r\n\t\toutline: none;\r\n\t\t--rail-item-height: 56px;\r\n\t\t--rail-item-icon-size: 24px;\r\n\t\t--rail-item-show-label: block;\r\n\t}\r\n\r\n\t.container {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tmin-height: var(--rail-item-height);\r\n\t\twidth: 100%;\r\n\t\tborder-radius: 16px;\r\n\t\tcursor: pointer;\r\n\t\tposition: relative;\r\n\t\tbox-sizing: border-box;\r\n\t\tcolor: var(--schmancy-sys-color-surface-onVariant);\r\n\t\tuser-select: none;\r\n\t\ttransition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n\t\tpadding: 12px 0;\r\n\t\tgap: 4px;\r\n\t}\r\n\r\n\t/* Hover state */\r\n\t.container:hover {\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-highest);\r\n\t}\r\n\r\n\t/* Focus state */\r\n\t:host(:focus-visible) .container {\r\n\t\toutline: 2px solid var(--schmancy-sys-color-primary-default);\r\n\t\toutline-offset: 2px;\r\n\t}\r\n\r\n\t/* Active indicator - positioned behind icon only */\r\n\t.icon-container {\r\n\t\tposition: relative;\r\n\t}\r\n\r\n\t.indicator {\r\n\t\tposition: absolute;\r\n\t\ttop: 50%;\r\n\t\tleft: 50%;\r\n\t\ttransform: translate(-50%, -50%) scale(0);\r\n\t\twidth: 56px;\r\n\t\theight: 32px;\r\n\t\tborder-radius: 16px;\r\n\t\tbackground-color: var(--schmancy-sys-color-secondary-container);\r\n\t\ttransition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);\r\n\t\tz-index: 0;\r\n\t}\r\n\r\n\t:host([active]) .indicator,\r\n\t:host([selected]) .indicator {\r\n\t\ttransform: translate(-50%, -50%) scale(1);\r\n\t}\r\n\r\n\t:host([active]) .container,\r\n\t:host([selected]) .container {\r\n\t\tcolor: var(--schmancy-sys-color-secondary-onContainer);\r\n\t}\r\n\r\n\r\n\t/* Icon styles */\r\n\t.icon-container {\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\twidth: auto;\r\n\t\tmin-width: 56px;\r\n\t\theight: 32px;\r\n\t\tflex-shrink: 0;\r\n\t\tposition: relative;\r\n\t\tz-index: 1;\r\n\t}\r\n\r\n\t.icon {\r\n\t\tfont-family: 'Material Symbols Outlined';\r\n\t\tfont-size: var(--rail-item-icon-size);\r\n\t\tline-height: 1;\r\n\t\tposition: relative;\r\n\t\tz-index: 1;\r\n\t\tfont-variation-settings:\r\n\t\t\t'FILL' 0,\r\n\t\t\t'wght' 400,\r\n\t\t\t'GRAD' 0,\r\n\t\t\t'opsz' 24;\r\n\t}\r\n\r\n\t:host([active]) .icon,\r\n\t:host([selected]) .icon {\r\n\t\tfont-variation-settings:\r\n\t\t\t'FILL' 1,\r\n\t\t\t'wght' 400,\r\n\t\t\t'GRAD' 0,\r\n\t\t\t'opsz' 24;\r\n\t}\r\n\r\n\t/* Label styles */\r\n\t.label {\r\n\t\tfont-size: 12px;\r\n\t\tfont-weight: 500;\r\n\t\tline-height: 16px;\r\n\t\ttext-align: center;\r\n\t\toverflow: hidden;\r\n\t\ttext-overflow: ellipsis;\r\n\t\twhite-space: nowrap;\r\n\t\tz-index: 1;\r\n\t\tdisplay: var(--rail-item-show-label, block);\r\n\t\tmax-width: 56px;\r\n\t\tpadding: 0 4px;\r\n\t}\r\n\r\n\r\n\t/* Badge styles */\r\n\t.badge {\r\n\t\tposition: absolute;\r\n\t\ttop: 8px;\r\n\t\tright: 12px;\r\n\t\tmin-width: 16px;\r\n\t\theight: 16px;\r\n\t\tborder-radius: 8px;\r\n\t\tbackground-color: var(--schmancy-sys-color-error-default);\r\n\t\tcolor: var(--schmancy-sys-color-error-on);\r\n\t\tfont-size: 11px;\r\n\t\tfont-weight: 600;\r\n\t\tdisplay: flex;\r\n\t\talign-items: center;\r\n\t\tjustify-content: center;\r\n\t\tpadding: 0 4px;\r\n\t\tbox-sizing: border-box;\r\n\t\tz-index: 2;\r\n\t\tanimation: badge-pulse 2s infinite;\r\n\t}\r\n\r\n\t@keyframes badge-pulse {\r\n\t\t0%, 100% { transform: scale(1); }\r\n\t\t50% { transform: scale(1.1); }\r\n\t}\r\n\r\n\t/* Nested items (for sub-navigation) */\r\n\t:host([nested]) {\r\n\t\t--rail-item-height: 48px;\r\n\t\t--rail-item-icon-size: 20px;\r\n\t}\r\n\r\n\t:host([nested]) .container {\r\n\t\tpadding-left: 32px;\r\n\t}\r\n\r\n\t/* Disabled state */\r\n\t:host([disabled]) {\r\n\t\tpointer-events: none;\r\n\t\topacity: 0.38;\r\n\t}\r\n\r\n\t/* Ripple effect */\r\n\t.ripple {\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\tright: 0;\r\n\t\tbottom: 0;\r\n\t\tborder-radius: inherit;\r\n\t\toverflow: hidden;\r\n\t\tz-index: 0;\r\n\t}\r\n\r\n\t.ripple::before {\r\n\t\tcontent: '';\r\n\t\tposition: absolute;\r\n\t\ttop: 50%;\r\n\t\tleft: 50%;\r\n\t\twidth: 0;\r\n\t\theight: 0;\r\n\t\tborder-radius: 50%;\r\n\t\tbackground: currentColor;\r\n\t\topacity: 0;\r\n\t\ttransform: translate(-50%, -50%);\r\n\t\ttransition: width 0.6s, height 0.6s, opacity 0.6s;\r\n\t}\r\n\r\n\t:host(:active) .ripple::before {\r\n\t\twidth: 200%;\r\n\t\theight: 200%;\r\n\t\topacity: 0.12;\r\n\t}\r\n\r\n\t/* Tooltip styles (shown via title attribute) */\r\n\t:host([title]:hover)::after {\r\n\t\tcontent: attr(title);\r\n\t\tposition: absolute;\r\n\t\tleft: calc(100% + 8px);\r\n\t\ttop: 50%;\r\n\t\ttransform: translateY(-50%);\r\n\t\tbackground: var(--schmancy-sys-color-inverseSurface);\r\n\t\tcolor: var(--schmancy-sys-color-inverseOnSurface);\r\n\t\tpadding: 4px 8px;\r\n\t\tborder-radius: 4px;\r\n\t\tfont-size: 12px;\r\n\t\twhite-space: nowrap;\r\n\t\tz-index: 1000;\r\n\t\tpointer-events: none;\r\n\t\tanimation: tooltip-fade-in 0.2s ease;\r\n\t}\r\n\r\n\t@keyframes tooltip-fade-in {\r\n\t\tfrom {\r\n\t\t\topacity: 0;\r\n\t\t\ttransform: translateY(-50%) translateX(-4px);\r\n\t\t}\r\n\t\tto {\r\n\t\t\topacity: 1;\r\n\t\t\ttransform: translateY(-50%) translateX(0);\r\n\t\t}\r\n\t}\r\n\r\n\t/* Group item styles */\r\n\t:host([group]) {\r\n\t\tmargin-bottom: 8px;\r\n\t}\r\n\r\n\t:host([group])::after {\r\n\t\tcontent: '';\r\n\t\tposition: absolute;\r\n\t\tbottom: -4px;\r\n\t\tleft: 12px;\r\n\t\tright: 12px;\r\n\t\theight: 1px;\r\n\t\tbackground: var(--schmancy-sys-color-outlineVariant);\r\n\t\topacity: 0.12;\r\n\t}\r\n`) {\r\n\t// Observable state\r\n\tprivate hovering$ = new BehaviorSubject<boolean>(false)\r\n\tprivate pressing$ = new BehaviorSubject<boolean>(false)\r\n\tprivate active$ = new BehaviorSubject<boolean>(false)\r\n\r\n\t// Properties\r\n\t/**\r\n\t * Icon name (Material Symbols icon)\r\n\t */\r\n\t@property({ type: String })\r\n\ticon = ''\r\n\r\n\t/**\r\n\t * Label text for the navigation item\r\n\t */\r\n\t@property({ type: String })\r\n\tlabel = ''\r\n\r\n\t/**\r\n\t * Value associated with this item (useful for routing)\r\n\t */\r\n\t@property({ type: String })\r\n\tvalue = ''\r\n\r\n\t/**\r\n\t * Whether this item is currently active/selected\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\tget active() { return this.active$.value }\r\n\tset active(value: boolean) {\r\n\t\tthis.active$.next(value)\r\n\t}\r\n\r\n\t/**\r\n\t * Whether this item is currently selected (alias for active)\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\tget selected() { return this.active }\r\n\tset selected(value: boolean) { this.active = value }\r\n\r\n\t/**\r\n\t * Badge text or number to display\r\n\t */\r\n\t@property({ type: String })\r\n\tbadge = ''\r\n\r\n\t/**\r\n\t * Badge variant\r\n\t */\r\n\t@property({ type: String })\r\n\tbadgeVariant: 'error' | 'primary' | 'secondary' = 'error'\r\n\r\n\t/**\r\n\t * Whether to show the label (controlled by parent rail)\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, attribute: 'show-label' })\r\n\tshowLabel = false\r\n\r\n\t/**\r\n\t * Whether this item is disabled\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\tdisabled = false\r\n\r\n\t/**\r\n\t * Whether this is a nested item (sub-navigation)\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\tnested = false\r\n\r\n\t/**\r\n\t * Whether this item represents a group separator\r\n\t * @default false\r\n\t */\r\n\t@property({ type: Boolean, reflect: true })\r\n\tgroup = false\r\n\r\n\t// State\r\n\t@state()\r\n\tprivate showRipple = false\r\n\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t\t// Set up hover tracking\r\n\t\tmerge(\r\n\t\t\tfromEvent(this, 'mouseenter').pipe(tap(() => this.hovering$.next(true))),\r\n\t\t\tfromEvent(this, 'mouseleave').pipe(tap(() => this.hovering$.next(false)))\r\n\t\t).pipe(takeUntil(this.disconnecting)).subscribe()\r\n\r\n\t\t// Set up press tracking\r\n\t\tmerge(\r\n\t\t\tfromEvent(this, 'mousedown').pipe(tap(() => this.pressing$.next(true))),\r\n\t\t\tfromEvent(this, 'mouseup').pipe(tap(() => this.pressing$.next(false))),\r\n\t\t\tfromEvent(this, 'mouseleave').pipe(tap(() => this.pressing$.next(false)))\r\n\t\t).pipe(takeUntil(this.disconnecting)).subscribe()\r\n\r\n\r\n\t\t// Ripple effect\r\n\t\tthis.pressing$.pipe(\r\n\t\t\ttap(pressing => {\r\n\t\t\t\tif (pressing && !this.disabled) {\r\n\t\t\t\t\tthis.showRipple = true\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tdelay(600),\r\n\t\t\ttap(() => this.showRipple = false),\r\n\t\t\ttakeUntil(this.disconnecting)\r\n\t\t).subscribe()\r\n\r\n\t\t// Subscribe to active state changes for reactive updates\r\n\t\tthis.active$.pipe(\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\ttap((isActive) => {\r\n\t\t\t\tthis.requestUpdate()\r\n\t\t\t\t// Update ARIA attributes reactively\r\n\t\t\t\tthis.setAttribute('aria-selected', String(isActive))\r\n\t\t\t\tthis.setAttribute('tabindex', isActive ? '0' : '-1')\r\n\t\t\t}),\r\n\t\t\ttakeUntil(this.disconnecting)\r\n\t\t).subscribe()\r\n\r\n\t\t// Set ARIA attributes\r\n\t\tthis.setAttribute('role', 'listitem')\r\n\t\tif (!this.hasAttribute('tabindex')) {\r\n\t\t\tthis.setAttribute('tabindex', this.active ? '0' : '-1')\r\n\t\t}\r\n\t}\r\n\r\n\tupdated(changedProperties: PropertyValues) {\r\n\t\tsuper.updated(changedProperties)\r\n\r\n\t\t// Active state is now handled by the BehaviorSubject subscription\r\n\t\t// So we don't need to duplicate it here\r\n\r\n\t\tif (changedProperties.has('disabled')) {\r\n\t\t\tthis.setAttribute('aria-disabled', String(this.disabled))\r\n\t\t}\r\n\r\n\t\tif (changedProperties.has('label')) {\r\n\t\t\tthis.setAttribute('aria-label', this.label)\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handle click events\r\n\t */\r\n\tprivate handleClick(event: Event) {\r\n\t\tif (this.disabled) {\r\n\t\t\tevent.preventDefault()\r\n\t\t\tevent.stopPropagation()\r\n\t\t\treturn\r\n\t\t}\r\n\r\n\t\t// Emit navigate event with the value\r\n\t\tthis.dispatchEvent(new CustomEvent('navigate', {\r\n\t\t\tdetail: this.value || this.label,\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t}))\r\n\r\n\t\t// Visual feedback is handled by the ripple effect in connectedCallback\r\n\t\t// The parent rail will confirm and update via activeIndex\r\n\t}\r\n\r\n\t/**\r\n\t * Handle keyboard events\r\n\t */\r\n\tprivate handleKeyDown(event: KeyboardEvent) {\r\n\t\tif (this.disabled) return\r\n\r\n\t\tif (event.key === 'Enter' || event.key === ' ') {\r\n\t\t\tevent.preventDefault()\r\n\t\t\tthis.click()\r\n\t\t}\r\n\t}\r\n\r\n\tprotected render() {\r\n\t\tconst hasCustomIcon = this.querySelector('[slot=\"icon\"]')\r\n\t\tconst hasCustomContent = this.querySelector(':not([slot])')\r\n\t\tconst hasCustomBadge = this.querySelector('[slot=\"badge\"]')\r\n\r\n\t\tconst containerClasses = {\r\n\t\t\tcontainer: true,\r\n\t\t\trippling: this.showRipple\r\n\t\t}\r\n\r\n\t\tconst badgeStyles = {\r\n\t\t\t'background-color': `var(--schmancy-sys-color-${this.badgeVariant}-default)`,\r\n\t\t\t'color': `var(--schmancy-sys-color-${this.badgeVariant}-on)`\r\n\t\t}\r\n\r\n\t\treturn html`\r\n\t\t\t<div\r\n\t\t\t\tclass=${this.classMap(containerClasses)}\r\n\t\t\t\tpart=\"container\"\r\n\t\t\t\t@click=${this.handleClick}\r\n\t\t\t\t@keydown=${this.handleKeyDown}\r\n\t\t\t>\r\n\t\t\t\t<span class=\"ripple\" aria-hidden=\"true\"></span>\r\n\r\n\t\t\t\t${when(hasCustomContent,\r\n\t\t\t\t\t() => html`<slot></slot>`,\r\n\t\t\t\t\t() => html`\r\n\t\t\t\t\t\t<div class=\"icon-container\" part=\"icon\">\r\n\t\t\t\t\t\t\t<span class=\"indicator\" part=\"indicator\" aria-hidden=\"true\"></span>\r\n\t\t\t\t\t\t\t${when(hasCustomIcon,\r\n\t\t\t\t\t\t\t\t() => html`<slot name=\"icon\"></slot>`,\r\n\t\t\t\t\t\t\t\t() => when(this.icon,\r\n\t\t\t\t\t\t\t\t\t() => html`<span class=\"icon\">${this.icon}</span>`\r\n\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t\t${when(this.label,\r\n\t\t\t\t\t\t\t() => html`<span class=\"label\" part=\"label\">${this.label}</span>`\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t`\r\n\t\t\t\t)}\r\n\r\n\t\t\t\t${when(this.badge,\r\n\t\t\t\t\t() => html`\r\n\t\t\t\t\t\t${when(hasCustomBadge,\r\n\t\t\t\t\t\t\t() => html`<slot name=\"badge\"></slot>`,\r\n\t\t\t\t\t\t\t() => html`\r\n\t\t\t\t\t\t\t\t<span\r\n\t\t\t\t\t\t\t\t\tclass=\"badge\"\r\n\t\t\t\t\t\t\t\t\tpart=\"badge\"\r\n\t\t\t\t\t\t\t\t\tstyle=${this.styleMap(badgeStyles)}\r\n\t\t\t\t\t\t\t\t\taria-label=\"${this.badge} notifications\"\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t${this.badge}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t`\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t`\r\n\t\t\t\t)}\r\n\t\t\t</div>\r\n\t\t`\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-navigation-rail-item': SchmancyNavigationRailItem\r\n\t}\r\n}","import { $LitElement } from '@mixins/index'\r\nimport { css, html, PropertyValues } from 'lit'\r\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js'\r\nimport { BehaviorSubject, takeUntil } from 'rxjs'\r\nimport { distinctUntilChanged, tap } from 'rxjs/operators'\r\nimport { SchmancyNavigationRailItem } from './navigation-rail-item'\r\n\r\nexport type NavigateEvent = CustomEvent<string>\r\n\r\nexport type NavigationRailMenuClickEvent = CustomEvent<void>\r\n\r\nexport type NavigationRailFabClickEvent = CustomEvent<void>\r\n\r\nexport type LabelVisibility = 'all' | 'selected' | 'none'\r\n\r\n/**\r\n * Material Design 3 Navigation Rail Component\r\n * @see https://m3.material.io/components/navigation-rail/overview\r\n *\r\n * `<schmancy-navigation-rail>` component\r\n *\r\n * A Material Design 3 vertical navigation component positioned on the left side of an application.\r\n * Navigation rails provide access to between 3-7 primary destinations with a compact footprint.\r\n *\r\n * @element schmancy-navigation-rail\r\n * @slot fab - Slot for a floating action button at the top\r\n * @slot menu - Slot for a menu icon or button below the FAB\r\n * @slot header - Custom header content slot\r\n * @slot footer - Custom footer content slot\r\n * @slot - Default slot for navigation rail items\r\n *\r\n * @fires navigate - When a navigation item is selected\r\n * @fires menu-click - When the menu button is clicked\r\n * @fires fab-click - When the FAB is clicked\r\n *\r\n * @csspart rail - The main rail container\r\n * @csspart header - The header section\r\n * @csspart nav - The navigation items container\r\n * @csspart footer - The footer section\r\n *\r\n * @example\r\n * <schmancy-navigation-rail activeIndex=\"0\">\r\n * <schmancy-button slot=\"fab\" variant=\"filled\" aria-label=\"Compose\">\r\n * <schmancy-icon>add</schmancy-icon>\r\n * </schmancy-button>\r\n * <schmancy-button slot=\"menu\" variant=\"text\" aria-label=\"Menu\">\r\n * <schmancy-icon>menu</schmancy-icon>\r\n * </schmancy-button>\r\n * <schmancy-navigation-rail-item icon=\"home\" label=\"Home\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"search\" label=\"Search\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"favorite\" label=\"Favorites\" badge=\"3\"></schmancy-navigation-rail-item>\r\n * <schmancy-navigation-rail-item icon=\"settings\" label=\"Settings\"></schmancy-navigation-rail-item>\r\n * </schmancy-navigation-rail>\r\n */\r\n@customElement('schmancy-navigation-rail')\r\nexport class SchmancyNavigationRail extends $LitElement(css`\r\n\t:host {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\twidth: 80px;\r\n\t\theight: 100%;\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-container);\r\n\t\tcolor: var(--schmancy-sys-color-surface-on);\r\n\t\tbox-sizing: border-box;\r\n\t\tposition: relative;\r\n\t\toverflow: visible;\r\n\t}\r\n\r\n\t/* Rail container */\r\n\t.rail {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\theight: 100%;\r\n\t\tpadding: 8px 12px;\r\n\t\tgap: 4px;\r\n\t\tbox-sizing: border-box;\r\n\t}\r\n\r\n\t/* Header section */\r\n\t.header {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tgap: 4px;\r\n\t\tmargin-bottom: 8px;\r\n\t}\r\n\r\n\t/* Navigation container */\r\n\t.nav {\r\n\t\tflex: 1;\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\tgap: 4px;\r\n\t\toverflow-y: auto;\r\n\t\toverflow-x: hidden;\r\n\t\tscrollbar-width: thin;\r\n\t\tscrollbar-color: var(--schmancy-sys-color-surface-onVariant) transparent;\r\n\t}\r\n\r\n\t.nav::-webkit-scrollbar {\r\n\t\twidth: 4px;\r\n\t}\r\n\r\n\t.nav::-webkit-scrollbar-track {\r\n\t\tbackground: transparent;\r\n\t}\r\n\r\n\t.nav::-webkit-scrollbar-thumb {\r\n\t\tbackground-color: var(--schmancy-sys-color-surface-onVariant);\r\n\t\tborder-radius: 2px;\r\n\t\topacity: 0.5;\r\n\t}\r\n\r\n\t/* Footer section */\r\n\t.footer {\r\n\t\tdisplay: flex;\r\n\t\tflex-direction: column;\r\n\t\talign-items: center;\r\n\t\tgap: 4px;\r\n\t\tmargin-top: auto;\r\n\t\tpadding-top: 8px;\r\n\t}\r\n\r\n\t/* FAB styles */\r\n\t::slotted([slot=\"fab\"]) {\r\n\t\tmargin-bottom: 8px;\r\n\t}\r\n\r\n\t/* Menu button styles */\r\n\t::slotted([slot=\"menu\"]) {\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\r\n\t/* Alignment variants */\r\n\t:host([alignment=\"top\"]) .nav {\r\n\t\tjustify-content: flex-start;\r\n\t}\r\n\r\n\t:host([alignment=\"center\"]) .nav {\r\n\t\tjustify-content: center;\r\n\t}\r\n\r\n\t:host([alignment=\"bottom\"]) .nav {\r\n\t\tjustify-content: flex-end;\r\n\t}\r\n\r\n\t/* Label visibility states */\r\n\t:host([label-visibility=\"none\"]) ::slotted(schmancy-navigation-rail-item) {\r\n\t\t--rail-item-show-label: none;\r\n\t}\r\n\r\n\t:host([label-visibility=\"selected\"]) ::slotted(schmancy-navigation-rail-item:not([active])) {\r\n\t\t--rail-item-show-label: none;\r\n\t}\r\n\r\n\r\n\t/* Group header styles */\r\n\t::slotted(.group-header) {\r\n\t\tpadding: 8px 12px;\r\n\t\tfont-size: 12px;\r\n\t\tfont-weight: 500;\r\n\t\tcolor: var(--schmancy-sys-color-surface-onVariant);\r\n\t\ttext-transform: uppercase;\r\n\t\tletter-spacing: 0.1em;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow: hidden;\r\n\t\ttext-overflow: ellipsis;\r\n\t}\r\n\r\n\t/* Divider styles */\r\n\t::slotted(schmancy-divider) {\r\n\t\tmargin: 8px 0;\r\n\t}\r\n\r\n\t/* Responsive behavior */\r\n\t@media (max-width: 768px) {\r\n\t\t:host {\r\n\t\t\twidth: 56px;\r\n\t\t}\r\n\r\n\t\t.rail {\r\n\t\t\tpadding: 8px;\r\n\t\t}\r\n\t}\r\n`) {\r\n\t// Observable state\r\n\tprivate activeIndex$ = new BehaviorSubject<number>(-1)\r\n\r\n\t// Properties\r\n\t/**\r\n\t * The currently active item index\r\n\t * @default -1\r\n\t */\r\n\t@property({ type: Number })\r\n\tget activeIndex() { return this.activeIndex$.value }\r\n\tset activeIndex(value: number) { this.activeIndex$.next(value) }\r\n\r\n\t/**\r\n\t * The currently active item value (for programmatic selection)\r\n\t */\r\n\t@property({ type: String })\r\n\tget activeValue() { return this._activeValue }\r\n\tset activeValue(value: string) {\r\n\t\tthis._activeValue = value\r\n\t\tthis.updateActiveByValue(value)\r\n\t}\r\n\tprivate _activeValue = ''\r\n\r\n\t/**\r\n\t * When to show labels for navigation items\r\n\t * 'all' - Always show labels for all items\r\n\t * 'selected' - Only show label for selected item\r\n\t * 'none' - Never show labels\r\n\t * @default 'all'\r\n\t */\r\n\t@property({ type: String, attribute: 'label-visibility', reflect: true })\r\n\tlabelVisibility: LabelVisibility = 'all'\r\n\r\n\t/**\r\n\t * Alignment of navigation items\r\n\t * @default 'top'\r\n\t */\r\n\t@property({ type: String, reflect: true })\r\n\talignment: 'top' | 'center' | 'bottom' = 'top'\r\n\r\n\t/**\r\n\t * Show tooltips when labels are hidden\r\n\t * @default true\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tshowTooltips = true\r\n\r\n\t/**\r\n\t * Enable keyboard navigation\r\n\t * @default true\r\n\t */\r\n\t@property({ type: Boolean })\r\n\tkeyboardNavigation = true\r\n\r\n\t// State\r\n\t@state()\r\n\tprivate focusedIndex = -1\r\n\r\n\t// Queries\r\n\r\n\t@queryAssignedElements({ flatten: true })\r\n\tprivate allElements!: Element[]\r\n\r\n\tprivate get navigationItems(): SchmancyNavigationRailItem[] {\r\n\t\treturn this.allElements.filter(\r\n\t\t\tel => el.tagName === 'SCHMANCY-NAVIGATION-RAIL-ITEM'\r\n\t\t) as SchmancyNavigationRailItem[]\r\n\t}\r\n\r\n\tconnectedCallback() {\r\n\t\tsuper.connectedCallback()\r\n\r\n\t\t// Set up keyboard navigation if enabled\r\n\t\tif (this.keyboardNavigation) {\r\n\t\t\tthis.addEventListener('keydown', this.handleKeyDown)\r\n\t\t}\r\n\r\n\t\t// Subscribe to active index changes with distinct values only\r\n\t\tthis.activeIndex$.pipe(\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\ttap(index => this.updateActiveStates(index)),\r\n\t\t\ttakeUntil(this.disconnecting)\r\n\t\t).subscribe()\r\n\r\n\t\t// Listen for navigate events from child items\r\n\t\tthis.setupNavigateListener()\r\n\r\n\t\t// Set up label visibility\r\n\t\tthis.updateLabelVisibility()\r\n\r\n\t\t// Update ARIA attributes\r\n\t\tthis.setAttribute('role', 'navigation')\r\n\t\tthis.setAttribute('aria-label', 'Main navigation')\r\n\t}\r\n\r\n\tupdated(changedProperties: PropertyValues) {\r\n\t\tsuper.updated(changedProperties)\r\n\r\n\t\tif (changedProperties.has('labelVisibility')) {\r\n\t\t\tthis.updateLabelVisibility()\r\n\t\t}\r\n\r\n\t\tif (changedProperties.has('activeValue')) {\r\n\t\t\tthis.updateActiveByValue(this.activeValue)\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateActiveStates(index: number) {\r\n\t\tthis.navigationItems.forEach((item, i) => {\r\n\t\t\tconst isActive = i === index\r\n\t\t\titem.active = isActive\r\n\t\t\titem.setAttribute('aria-selected', String(isActive))\r\n\t\t\titem.setAttribute('tabindex', isActive ? '0' : '-1')\r\n\r\n\t\t\t// Update activeValue when index changes\r\n\t\t\tif (isActive) {\r\n\t\t\t\tthis._activeValue = item.value || item.label || ''\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate updateActiveByValue(value: string) {\r\n\t\tconst index = this.navigationItems.findIndex(\r\n\t\t\titem => item.getAttribute('value') === value || item.label === value\r\n\t\t)\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.activeIndex = index\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprivate updateLabelVisibility() {\r\n\t\tthis.navigationItems.forEach((item, i) => {\r\n\t\t\tconst shouldShowLabel =\r\n\t\t\t\tthis.labelVisibility === 'all' ||\r\n\t\t\t\t(this.labelVisibility === 'selected' && i === this.activeIndex)\r\n\r\n\t\t\titem.showLabel = shouldShowLabel\r\n\r\n\t\t\t// Add tooltips when labels are hidden\r\n\t\t\tif (this.showTooltips && !shouldShowLabel && item.label) {\r\n\t\t\t\titem.setAttribute('title', item.label)\r\n\t\t\t} else {\r\n\t\t\t\titem.removeAttribute('title')\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\r\n\tprivate handleKeyDown(event: KeyboardEvent) {\r\n\t\tconst items = this.navigationItems\r\n\t\tif (items.length === 0) return\r\n\r\n\t\tlet newIndex = this.focusedIndex >= 0 ? this.focusedIndex : this.activeIndex\r\n\r\n\t\tswitch (event.key) {\r\n\t\t\tcase 'ArrowDown':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = (newIndex + 1) % items.length\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ArrowUp':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = newIndex <= 0 ? items.length - 1 : newIndex - 1\r\n\t\t\t\tbreak\r\n\t\t\tcase 'Home':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = 0\r\n\t\t\t\tbreak\r\n\t\t\tcase 'End':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tnewIndex = items.length - 1\r\n\t\t\t\tbreak\r\n\t\t\tcase 'Enter':\r\n\t\t\tcase ' ':\r\n\t\t\t\tevent.preventDefault()\r\n\t\t\t\tif (newIndex >= 0) {\r\n\t\t\t\t\titems[newIndex].click()\r\n\t\t\t\t}\r\n\t\t\t\treturn\r\n\t\t\tdefault:\r\n\t\t\t\treturn\r\n\t\t}\r\n\r\n\t\tthis.focusedIndex = newIndex\r\n\t\titems[newIndex].focus()\r\n\t}\r\n\r\n\tprivate handleFabClick(event: Event) {\r\n\t\tevent.stopPropagation()\r\n\t\tthis.dispatchEvent(new CustomEvent('fab-click', {\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t}))\r\n\t}\r\n\r\n\tprivate handleMenuClick(event: Event) {\r\n\t\tevent.stopPropagation()\r\n\t\tthis.dispatchEvent(new CustomEvent('menu-click', {\r\n\t\t\tbubbles: true,\r\n\t\t\tcomposed: true\r\n\t\t}))\r\n\t}\r\n\r\n\tprotected render() {\r\n\t\treturn html`\r\n\t\t\t<div class=\"rail\" part=\"rail\">\r\n\t\t\t\t<div class=\"header\" part=\"header\">\r\n\t\t\t\t\t<slot name=\"fab\" @click=${this.handleFabClick}></slot>\r\n\t\t\t\t\t<slot name=\"menu\" @click=${this.handleMenuClick}></slot>\r\n\t\t\t\t\t<slot name=\"header\"></slot>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<nav class=\"nav\" part=\"nav\" role=\"list\">\r\n\t\t\t\t\t<slot @slotchange=${this.handleSlotChange}></slot>\r\n\t\t\t\t</nav>\r\n\r\n\t\t\t\t<div class=\"footer\" part=\"footer\">\r\n\t\t\t\t\t<slot name=\"footer\"></slot>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t`\r\n\t}\r\n\r\n\r\n\tprivate setupNavigateListener() {\r\n\t\t// Listen for navigate events from child items\r\n\t\tthis.addEventListener('navigate', (e: Event) => {\r\n\t\t\tif (e instanceof CustomEvent) {\r\n\t\t\t\tconst value = e.detail\r\n\t\t\t\t// Find the item that dispatched the event and update active state\r\n\t\t\t\tconst itemIndex = this.navigationItems.findIndex(\r\n\t\t\t\t\titem => item.value === value || item.label === value\r\n\t\t\t\t)\r\n\t\t\t\tif (itemIndex >= 0) {\r\n\t\t\t\t\tthis.activeIndex = itemIndex\r\n\t\t\t\t\tthis._activeValue = value\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tprivate handleSlotChange() {\r\n\t\t// Update items when slot content changes\r\n\t\tthis.updateLabelVisibility()\r\n\t\tthis.updateActiveStates(this.activeIndex)\r\n\r\n\t\t// Set ARIA attributes on items\r\n\t\tthis.navigationItems.forEach((item, index) => {\r\n\t\t\titem.setAttribute('role', 'listitem')\r\n\t\t\tif (!item.hasAttribute('tabindex')) {\r\n\t\t\t\titem.setAttribute('tabindex', index === this.activeIndex ? '0' : '-1')\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n}\r\n\r\ndeclare global {\r\n\tinterface HTMLElementTagNameMap {\r\n\t\t'schmancy-navigation-rail': SchmancyNavigationRail\r\n\t}\r\n}"],"names":["SchmancyNavigationRailItem","$LitElement","css","constructor","super","arguments","this","hovering$","BehaviorSubject","pressing$","active$","icon","label","value","badge","badgeVariant","showLabel","disabled","nested","group","showRipple","active","next","selected","connectedCallback","merge","fromEvent","pipe","tap","takeUntil","disconnecting","subscribe","pressing","delay","distinctUntilChanged","isActive","requestUpdate","setAttribute","String","hasAttribute","changedProperties","updated","has","event","preventDefault","stopPropagation","dispatchEvent","CustomEvent","detail","bubbles","composed","key","click","render","hasCustomIcon","querySelector","hasCustomContent","hasCustomBadge","containerClasses","container","rippling","badgeStyles","color","html","classMap","handleClick","handleKeyDown","when","styleMap","__decorateClass","property","type","prototype","Boolean","reflect","attribute","state","customElement","SchmancyNavigationRail","activeIndex$","_activeValue","labelVisibility","alignment","showTooltips","keyboardNavigation","focusedIndex","activeIndex","activeValue","updateActiveByValue","navigationItems","allElements","filter","el","tagName","addEventListener","index","updateActiveStates","setupNavigateListener","updateLabelVisibility","forEach","item","i","findIndex","getAttribute","shouldShowLabel","removeAttribute","items","length","newIndex","focus","handleFabClick","handleMenuClick","handleSlotChange","e","itemIndex","Number","queryAssignedElements","flatten"],"mappings":";;;;;;;;;;;;;AA6DO,IAAMA,IAAN,cAAyCC,EAAYC;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;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;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA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"}
|