@mhmo91/schmancy 0.5.19 → 0.5.21
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/navigation-bar-item.md +25 -13
- package/ai/navigation-rail.md +475 -0
- package/dist/ai/navigation-bar-item.md +25 -13
- package/dist/ai/navigation-rail.md +475 -0
- package/dist/{animated-text-L4rVnRqB.cjs → animated-text-Bic7z7SI.cjs} +2 -2
- package/dist/{animated-text-L4rVnRqB.cjs.map → animated-text-Bic7z7SI.cjs.map} +1 -1
- package/dist/{animated-text-DbBKOAWI.js → animated-text-CLEr78FV.js} +3 -3
- package/dist/{animated-text-DbBKOAWI.js.map → animated-text-CLEr78FV.js.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-DsBt1CIM.cjs → area.component-BrvNYy7Z.cjs} +2 -2
- package/dist/{area.component-DsBt1CIM.cjs.map → area.component-BrvNYy7Z.cjs.map} +1 -1
- package/dist/{area.component-eV-v6J5C.js → area.component-tIK_P5JR.js} +3 -3
- package/dist/{area.component-eV-v6J5C.js.map → area.component-tIK_P5JR.js.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-CTQ6eqYl.js → autocomplete-BG5HqWvt.js} +4 -4
- package/dist/{autocomplete-CTQ6eqYl.js.map → autocomplete-BG5HqWvt.js.map} +1 -1
- package/dist/{autocomplete-DnX6sEMg.cjs → autocomplete-BJ_0fG9s.cjs} +2 -2
- package/dist/{autocomplete-DnX6sEMg.cjs.map → autocomplete-BJ_0fG9s.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-BAaUCxc-.js → avatar--NfBgxWj.js} +50 -50
- package/dist/{avatar-BAaUCxc-.js.map → avatar--NfBgxWj.js.map} +1 -1
- package/dist/{avatar-DwqCiKOy.cjs → avatar-BT1w6myH.cjs} +2 -2
- package/dist/{avatar-DwqCiKOy.cjs.map → avatar-BT1w6myH.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-CQyUVpLW.js → boat-BdJ1jyK_.js} +2 -2
- package/dist/{boat-CQyUVpLW.js.map → boat-BdJ1jyK_.js.map} +1 -1
- package/dist/{boat-BbF0BpAl.cjs → boat-DP98_5qG.cjs} +2 -2
- package/dist/{boat-BbF0BpAl.cjs.map → boat-DP98_5qG.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-7annHqhF.js → checkbox-4mBWkzKG.js} +2 -2
- package/dist/{checkbox-7annHqhF.js.map → checkbox-4mBWkzKG.js.map} +1 -1
- package/dist/{checkbox-CI4CDpoS.cjs → checkbox-CIMDI5hW.cjs} +2 -2
- package/dist/{checkbox-CI4CDpoS.cjs.map → checkbox-CIMDI5hW.cjs.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-zE_SbNNO.cjs → code-preview-CHuRZ9cY.cjs} +2 -2
- package/dist/{code-preview-zE_SbNNO.cjs.map → code-preview-CHuRZ9cY.cjs.map} +1 -1
- package/dist/{code-preview-Y783aZ7J.js → code-preview-DrB-Y8dn.js} +2 -2
- package/dist/{code-preview-Y783aZ7J.js.map → code-preview-DrB-Y8dn.js.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-Bh2x7nlc.cjs → date-range-B0yz-_Zv.cjs} +2 -2
- package/dist/{date-range-Bh2x7nlc.cjs.map → date-range-B0yz-_Zv.cjs.map} +1 -1
- package/dist/{date-range-BtFn7iGs.js → date-range-CM-5J_JO.js} +3 -3
- package/dist/{date-range-BtFn7iGs.js.map → date-range-CM-5J_JO.js.map} +1 -1
- package/dist/{date-range-inline-BnGPY5ZY.js → date-range-inline-CPI4EyL0.js} +3 -3
- package/dist/{date-range-inline-BnGPY5ZY.js.map → date-range-inline-CPI4EyL0.js.map} +1 -1
- package/dist/{date-range-inline-C_6N7yca.cjs → date-range-inline-P8P2ixg1.cjs} +2 -2
- package/dist/{date-range-inline-C_6N7yca.cjs.map → date-range-inline-P8P2ixg1.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-DgBkfK3a.cjs → delay-1aTGz1ZH.cjs} +2 -2
- package/dist/{delay-DgBkfK3a.cjs.map → delay-1aTGz1ZH.cjs.map} +1 -1
- package/dist/{delay-DafLdRaR.js → delay-Lg_7K_Vi.js} +2 -2
- package/dist/{delay-DafLdRaR.js.map → delay-Lg_7K_Vi.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-89R5QI1S.js → details-gUvX6sxc.js} +2 -2
- package/dist/{details-89R5QI1S.js.map → details-gUvX6sxc.js.map} +1 -1
- package/dist/{details-DpodqE31.cjs → details-uxsPpjMp.cjs} +2 -2
- package/dist/{details-DpodqE31.cjs.map → details-uxsPpjMp.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-S6k16Le_.cjs → dialog-content-CvVd9EwS.cjs} +2 -2
- package/dist/{dialog-content-S6k16Le_.cjs.map → dialog-content-CvVd9EwS.cjs.map} +1 -1
- package/dist/{dialog-content-CGt4hZZn.js → dialog-content-DKLDmgfz.js} +3 -3
- package/dist/{dialog-content-CGt4hZZn.js.map → dialog-content-DKLDmgfz.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-CUFy4oEY.cjs → divider-CHGffGro.cjs} +2 -2
- package/dist/{divider-CUFy4oEY.cjs.map → divider-CHGffGro.cjs.map} +1 -1
- package/dist/{divider-dTggJNS0.js → divider-EvBnlb2a.js} +3 -3
- package/dist/{divider-dTggJNS0.js.map → divider-EvBnlb2a.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-D7dvNRRR.cjs → dropdown-content-FVKimBQR.cjs} +2 -2
- package/dist/{dropdown-content-D7dvNRRR.cjs.map → dropdown-content-FVKimBQR.cjs.map} +1 -1
- package/dist/{dropdown-content-Bty4mF1A.js → dropdown-content-NGBIkvdR.js} +3 -3
- package/dist/{dropdown-content-Bty4mF1A.js.map → dropdown-content-NGBIkvdR.js.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-Tb0UBtjf.js → email-recipients-CXFSIsL-.js} +5 -5
- package/dist/{email-recipients-Tb0UBtjf.js.map → email-recipients-CXFSIsL-.js.map} +1 -1
- package/dist/{email-recipients-DKDl1Qlt.cjs → email-recipients-DxqCC99q.cjs} +2 -2
- package/dist/{email-recipients-DKDl1Qlt.cjs.map → email-recipients-DxqCC99q.cjs.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-CYF9ejQL.js → flex-Cm4nZM9q.js} +2 -2
- package/dist/{flex-CYF9ejQL.js.map → flex-Cm4nZM9q.js.map} +1 -1
- package/dist/{flex-zkXsvBw6.cjs → flex-DisTVvBI.cjs} +2 -2
- package/dist/{flex-zkXsvBw6.cjs.map → flex-DisTVvBI.cjs.map} +1 -1
- package/dist/{form-DdQgacXw.js → form-BU9TBjfk.js} +2 -2
- package/dist/{form-DdQgacXw.js.map → form-BU9TBjfk.js.map} +1 -1
- package/dist/{form-D-CgyzE3.cjs → form-SMbhjYsC.cjs} +2 -2
- package/dist/{form-D-CgyzE3.cjs.map → form-SMbhjYsC.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-C7xna5S7.cjs → formField.mixin-DYkeOpES.cjs} +2 -2
- package/dist/{formField.mixin-C7xna5S7.cjs.map → formField.mixin-DYkeOpES.cjs.map} +1 -1
- package/dist/{formField.mixin-Cc6iv6e6.js → formField.mixin-DxhnL3Kb.js} +2 -2
- package/dist/{formField.mixin-Cc6iv6e6.js.map → formField.mixin-DxhnL3Kb.js.map} +1 -1
- package/dist/{icon-CFM5r0Fm.cjs → icon-BT_1B5_G.cjs} +2 -2
- package/dist/{icon-CFM5r0Fm.cjs.map → icon-BT_1B5_G.cjs.map} +1 -1
- package/dist/{icon-CYqOQBoE.js → icon-Cgd3NUcv.js} +2 -2
- package/dist/{icon-CYqOQBoE.js.map → icon-Cgd3NUcv.js.map} +1 -1
- package/dist/{icon-button-Bf_dCRHx.cjs → icon-button-C5hq1cKD.cjs} +2 -2
- package/dist/{icon-button-Bf_dCRHx.cjs.map → icon-button-C5hq1cKD.cjs.map} +1 -1
- package/dist/{icon-button-BSCcuC7U.js → icon-button-DsjqusZz.js} +3 -3
- package/dist/{icon-button-BSCcuC7U.js.map → icon-button-DsjqusZz.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-CNs7L8A9.js → input-Bj4MTOC9.js} +3 -3
- package/dist/{input-CNs7L8A9.js.map → input-Bj4MTOC9.js.map} +1 -1
- package/dist/{input-D9B5aydv.cjs → input-D3qmQZ-Y.cjs} +2 -2
- package/dist/{input-D9B5aydv.cjs.map → input-D3qmQZ-Y.cjs.map} +1 -1
- package/dist/{input-chip-Bu8DLVMh.cjs → input-chip-CbD-eDs-.cjs} +2 -2
- package/dist/{input-chip-Bu8DLVMh.cjs.map → input-chip-CbD-eDs-.cjs.map} +1 -1
- package/dist/{input-chip-CPNF4szF.js → input-chip-DiThsRoi.js} +2 -2
- package/dist/{input-chip-CPNF4szF.js.map → input-chip-DiThsRoi.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-Ds8oKtEs.cjs → list-5Y_CGGJF.cjs} +2 -2
- package/dist/{list-Ds8oKtEs.cjs.map → list-5Y_CGGJF.cjs.map} +1 -1
- package/dist/{list-Cp-TE18p.js → list-CAFpmXsb.js} +2 -2
- package/dist/{list-Cp-TE18p.js.map → list-CAFpmXsb.js.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-7HEBIRUp.js → litElement.mixin-Bv6DGuhe.js} +2 -2
- package/dist/{litElement.mixin-7HEBIRUp.js.map → litElement.mixin-Bv6DGuhe.js.map} +1 -1
- package/dist/{litElement.mixin-DIoywlzp.cjs → litElement.mixin-rWG9s46P.cjs} +2 -2
- package/dist/{litElement.mixin-DIoywlzp.cjs.map → litElement.mixin-rWG9s46P.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-DRCyozDz.cjs → map-bTOQf8Jm.cjs} +2 -2
- package/dist/{map-DRCyozDz.cjs.map → map-bTOQf8Jm.cjs.map} +1 -1
- package/dist/{map-CaTzsyI7.js → map-yv8FB9mG.js} +2 -2
- package/dist/{map-CaTzsyI7.js.map → map-yv8FB9mG.js.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-Xr5pO0WU.js → media-CA52MXd3.js} +2 -2
- package/dist/{media-Xr5pO0WU.js.map → media-CA52MXd3.js.map} +1 -1
- package/dist/{media-DdzYh2k5.cjs → media-CPIoKlRw.cjs} +2 -2
- package/dist/{media-DdzYh2k5.cjs.map → media-CPIoKlRw.cjs.map} +1 -1
- package/dist/{menu-C-Lvh3cn.js → menu-BKO9PgJq.js} +3 -3
- package/dist/{menu-C-Lvh3cn.js.map → menu-BKO9PgJq.js.map} +1 -1
- package/dist/{menu-S_OxKAxt.cjs → menu-Cak8SbFx.cjs} +2 -2
- package/dist/{menu-S_OxKAxt.cjs.map → menu-Cak8SbFx.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-C8OOb0V3.js +564 -0
- package/dist/navigation-rail-C8OOb0V3.js.map +1 -0
- package/dist/navigation-rail-D1iYDMy2.cjs +415 -0
- package/dist/navigation-rail-D1iYDMy2.cjs.map +1 -0
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +1 -1
- package/dist/{notification-service-Bi9hRE33.cjs → notification-service-DaXxcXyj.cjs} +2 -2
- package/dist/{notification-service-Bi9hRE33.cjs.map → notification-service-DaXxcXyj.cjs.map} +1 -1
- package/dist/{notification-service-36m9Setj.js → notification-service-jfBwJ2TN.js} +4 -4
- package/dist/{notification-service-36m9Setj.js.map → notification-service-jfBwJ2TN.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-BcimHn85.js → notify-C5gy3egX.js} +2 -2
- package/dist/{notify-BcimHn85.js.map → notify-C5gy3egX.js.map} +1 -1
- package/dist/{notify-BLdA7aAa.cjs → notify-Dd5h2l-v.cjs} +2 -2
- package/dist/{notify-BLdA7aAa.cjs.map → notify-Dd5h2l-v.cjs.map} +1 -1
- package/dist/{option-C9QLuFcY.cjs → option-C6PwIhut.cjs} +2 -2
- package/dist/{option-C9QLuFcY.cjs.map → option-C6PwIhut.cjs.map} +1 -1
- package/dist/{option-DwEBerwR.js → option-D7b-uGff.js} +2 -2
- package/dist/{option-DwEBerwR.js.map → option-D7b-uGff.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-DGdRK0yK.cjs → payment-card-form-DTfoZiiN.cjs} +2 -2
- package/dist/{payment-card-form-DGdRK0yK.cjs.map → payment-card-form-DTfoZiiN.cjs.map} +1 -1
- package/dist/{payment-card-form-B1uZ9JUa.js → payment-card-form-xwk5dfeQ.js} +3 -3
- package/dist/{payment-card-form-B1uZ9JUa.js.map → payment-card-form-xwk5dfeQ.js.map} +1 -1
- package/dist/{progress-B3hQmGMa.js → progress-D-5gThOU.js} +2 -2
- package/dist/{progress-B3hQmGMa.js.map → progress-D-5gThOU.js.map} +1 -1
- package/dist/{progress-DQwzTPYM.cjs → progress-sFt6EeRy.cjs} +2 -2
- package/dist/{progress-DQwzTPYM.cjs.map → progress-sFt6EeRy.cjs.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-DDE3kwPV.js → radio-button-CZq8Z-V-.js} +3 -3
- package/dist/{radio-button-DDE3kwPV.js.map → radio-button-CZq8Z-V-.js.map} +1 -1
- package/dist/{radio-button-CJhEZw8n.cjs → radio-button-Cc5fCDdU.cjs} +2 -2
- package/dist/{radio-button-CJhEZw8n.cjs.map → radio-button-Cc5fCDdU.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-COzUZD-d.cjs → schmancy-steps-container-Cb-cUZWP.cjs} +2 -2
- package/dist/{schmancy-steps-container-COzUZD-d.cjs.map → schmancy-steps-container-Cb-cUZWP.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-Bk6YDDXz.js → schmancy-steps-container-DkPckhRw.js} +2 -2
- package/dist/{schmancy-steps-container-Bk6YDDXz.js.map → schmancy-steps-container-DkPckhRw.js.map} +1 -1
- package/dist/{select-BKkGETee.js → select-BxlDe36e.js} +27 -21
- package/dist/select-BxlDe36e.js.map +1 -0
- package/dist/select-Cod_lOwT.cjs +57 -0
- package/dist/select-Cod_lOwT.cjs.map +1 -0
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-_Nwjk8tC.js → sheet-BscruHZw.js} +3 -3
- package/dist/{sheet-_Nwjk8tC.js.map → sheet-BscruHZw.js.map} +1 -1
- package/dist/{sheet-_3iJjzla.cjs → sheet-ZHVITumf.cjs} +2 -2
- package/dist/{sheet-_3iJjzla.cjs.map → sheet-ZHVITumf.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-CvoNTGfb.cjs → slider-BKUCiMOV.cjs} +2 -2
- package/dist/{slider-CvoNTGfb.cjs.map → slider-BKUCiMOV.cjs.map} +1 -1
- package/dist/{slider-BawxkW-m.js → slider-gBHyj2TC.js} +3 -3
- package/dist/{slider-BawxkW-m.js.map → slider-gBHyj2TC.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-CreHceHO.cjs → spinner-CiRbCC74.cjs} +2 -2
- package/dist/{spinner-CreHceHO.cjs.map → spinner-CiRbCC74.cjs.map} +1 -1
- package/dist/{spinner-BSaeqgVi.js → spinner-DZ3oE5cQ.js} +2 -2
- package/dist/{spinner-BSaeqgVi.js.map → spinner-DZ3oE5cQ.js.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{suggestion-chip-DgR-hY9P.cjs → suggestion-chip-AVshmS4V.cjs} +2 -2
- package/dist/{suggestion-chip-DgR-hY9P.cjs.map → suggestion-chip-AVshmS4V.cjs.map} +1 -1
- package/dist/{suggestion-chip-Ca9HEISE.js → suggestion-chip-CxQK5dcP.js} +3 -3
- package/dist/{suggestion-chip-Ca9HEISE.js.map → suggestion-chip-CxQK5dcP.js.map} +1 -1
- package/dist/{surface-DssJvvqY.js → surface-C4Lkv6Xu.js} +2 -2
- package/dist/{surface-DssJvvqY.js.map → surface-C4Lkv6Xu.js.map} +1 -1
- package/dist/{surface-FlpARbmi.cjs → surface-DTqeD1NX.cjs} +2 -2
- package/dist/{surface-FlpARbmi.cjs.map → surface-DTqeD1NX.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DbGq1vlq.cjs → table-CGB_dR8H.cjs} +2 -2
- package/dist/{table-DbGq1vlq.cjs.map → table-CGB_dR8H.cjs.map} +1 -1
- package/dist/{table-DcgdSj1D.js → table-D320TllW.js} +2 -2
- package/dist/{table-DcgdSj1D.js.map → table-D320TllW.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-Lffxgw0G.cjs → tabs-compatibility-C1ifLAs_.cjs} +2 -2
- package/dist/{tabs-compatibility-Lffxgw0G.cjs.map → tabs-compatibility-C1ifLAs_.cjs.map} +1 -1
- package/dist/{tabs-compatibility-yIZW7NeR.js → tabs-compatibility-DNkcL6dE.js} +2 -2
- package/dist/{tabs-compatibility-yIZW7NeR.js.map → tabs-compatibility-DNkcL6dE.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-9XFzAXGw.js +43 -0
- package/dist/{tailwind.mixin-Dj-xh5c5.js.map → tailwind.mixin-9XFzAXGw.js.map} +1 -1
- package/dist/tailwind.mixin-ChrVaJHF.cjs +2 -0
- package/dist/{tailwind.mixin-Dwm4EWu8.cjs.map → tailwind.mixin-ChrVaJHF.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-CwYuTsPD.cjs → textarea-1QvQzHKm.cjs} +2 -2
- package/dist/{textarea-CwYuTsPD.cjs.map → textarea-1QvQzHKm.cjs.map} +1 -1
- package/dist/{textarea-BQ94zdoX.js → textarea-B2U316Um.js} +2 -2
- package/dist/{textarea-BQ94zdoX.js.map → textarea-B2U316Um.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-CvJH2BwY.cjs → theme-button-B0n3kSd_.cjs} +2 -2
- package/dist/{theme-button-CvJH2BwY.cjs.map → theme-button-B0n3kSd_.cjs.map} +1 -1
- package/dist/{theme-button-CKt6f6kw.js → theme-button-zUYywyWx.js} +2 -2
- package/dist/{theme-button-CKt6f6kw.js.map → theme-button-zUYywyWx.js.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-DhaisaKD.cjs → theme.component-BLKJxyFX.cjs} +2 -2
- package/dist/{theme.component-DhaisaKD.cjs.map → theme.component-BLKJxyFX.cjs.map} +1 -1
- package/dist/{theme.component-DcPhAbxK.js → theme.component-DpPMKf8l.js} +2 -2
- package/dist/{theme.component-DcPhAbxK.js.map → theme.component-DpPMKf8l.js.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-D7Ufhjog.cjs → timezone-DRSCR7bi.cjs} +2 -2
- package/dist/{timezone-D7Ufhjog.cjs.map → timezone-DRSCR7bi.cjs.map} +1 -1
- package/dist/{timezone-ikqEpkrq.js → timezone-DhLUcYcX.js} +3 -3
- package/dist/{timezone-ikqEpkrq.js.map → timezone-DhLUcYcX.js.map} +1 -1
- package/dist/{tooltip-Cod-ciP6.cjs → tooltip-B4nvmANO.cjs} +2 -2
- package/dist/{tooltip-Cod-ciP6.cjs.map → tooltip-B4nvmANO.cjs.map} +1 -1
- package/dist/{tooltip-DQeBYmkT.js → tooltip-tFxYzDct.js} +2 -2
- package/dist/{tooltip-DQeBYmkT.js.map → tooltip-tFxYzDct.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-BL71j34m.js → tree-C9gLZE_E.js} +2 -2
- package/dist/{tree-BL71j34m.js.map → tree-C9gLZE_E.js.map} +1 -1
- package/dist/{tree-DNJ-QNmK.cjs → tree-CRjGBeHH.cjs} +2 -2
- package/dist/{tree-DNJ-QNmK.cjs.map → tree-CRjGBeHH.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-KPl30p8k.js → typewriter-DN9HiCBW.js} +4 -4
- package/dist/{typewriter-KPl30p8k.js.map → typewriter-DN9HiCBW.js.map} +1 -1
- package/dist/{typewriter-HY8FFj0-.cjs → typewriter-VGsKEZOj.cjs} +2 -2
- package/dist/{typewriter-HY8FFj0-.cjs.map → typewriter-VGsKEZOj.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-D5Mf_MlW.js → typography-MN7P8my2.js} +2 -2
- package/dist/{typography-D5Mf_MlW.js.map → typography-MN7P8my2.js.map} +1 -1
- package/dist/{typography-eyw2Cqu6.cjs → typography-XN-pEi3Q.cjs} +2 -2
- package/dist/{typography-eyw2Cqu6.cjs.map → typography-XN-pEi3Q.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/navigation-rail/index.d.ts +1 -1
- package/types/src/navigation-rail/navigation-rail-item.d.ts +89 -9
- package/types/src/navigation-rail/navigation-rail.d.ts +77 -9
- package/types/src/select/select.d.ts +2 -0
- package/dist/navigation-rail-item-CCuC37Dx.cjs +0 -116
- package/dist/navigation-rail-item-CCuC37Dx.cjs.map +0 -1
- package/dist/navigation-rail-item-CZKWN1Ki.js +0 -151
- package/dist/navigation-rail-item-CZKWN1Ki.js.map +0 -1
- package/dist/select-BKkGETee.js.map +0 -1
- package/dist/select-Cc96IjOA.cjs +0 -57
- package/dist/select-Cc96IjOA.cjs.map +0 -1
- package/dist/tailwind.mixin-Dj-xh5c5.js +0 -43
- package/dist/tailwind.mixin-Dwm4EWu8.cjs +0 -2
|
@@ -52,7 +52,7 @@ The `<schmancy-navigation-bar-item>` component represents an individual navigati
|
|
|
52
52
|
## Events
|
|
53
53
|
|
|
54
54
|
### bar-item-click
|
|
55
|
-
Fired when the item is clicked
|
|
55
|
+
Fired when the item is clicked.
|
|
56
56
|
|
|
57
57
|
```javascript
|
|
58
58
|
item.addEventListener('bar-item-click', (event) => {
|
|
@@ -68,9 +68,9 @@ Standard focus and blur events for accessibility.
|
|
|
68
68
|
## Features
|
|
69
69
|
|
|
70
70
|
### RxJS-Powered Interactions
|
|
71
|
-
- **Click handling**: Uses RxJS observables
|
|
72
|
-
- **Ripple effects**: Immediate visual feedback
|
|
73
|
-
- **Keyboard support**: Enter and Space keys properly handled
|
|
71
|
+
- **Click handling**: Uses RxJS observables for instant navigation events
|
|
72
|
+
- **Ripple effects**: Immediate visual feedback on interaction
|
|
73
|
+
- **Keyboard support**: Enter and Space keys properly handled
|
|
74
74
|
- **State management**: BehaviorSubject for reactive active state updates
|
|
75
75
|
|
|
76
76
|
### Full Clickable Area
|
|
@@ -140,8 +140,15 @@ schmancy-navigation-bar-item::part(button) {
|
|
|
140
140
|
Programmatically set the active state of the item.
|
|
141
141
|
|
|
142
142
|
```javascript
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
// In Lit component - use property binding
|
|
144
|
+
@state() isActive = true;
|
|
145
|
+
|
|
146
|
+
render() {
|
|
147
|
+
return html`
|
|
148
|
+
<schmancy-navigation-bar-item ?active=${this.isActive}>
|
|
149
|
+
</schmancy-navigation-bar-item>
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
145
152
|
```
|
|
146
153
|
|
|
147
154
|
## Integration Example
|
|
@@ -189,7 +196,7 @@ class AppNavigation extends LitElement {
|
|
|
189
196
|
## Accessibility
|
|
190
197
|
|
|
191
198
|
### Keyboard Support
|
|
192
|
-
- `Enter` / `Space` - Activate the item
|
|
199
|
+
- `Enter` / `Space` - Activate the item instantly
|
|
193
200
|
- Full focus management with visual indicators
|
|
194
201
|
- `aria-pressed` attribute reflects active state
|
|
195
202
|
- `aria-label` for badge notifications
|
|
@@ -203,7 +210,7 @@ class AppNavigation extends LitElement {
|
|
|
203
210
|
|
|
204
211
|
### RxJS Observables
|
|
205
212
|
- Efficient event handling with proper cleanup
|
|
206
|
-
-
|
|
213
|
+
- Instant navigation events for responsive interaction
|
|
207
214
|
- Immediate ripple feedback for better UX
|
|
208
215
|
- Memory-safe with `takeUntil(this.disconnecting)`
|
|
209
216
|
|
|
@@ -225,11 +232,16 @@ class AppNavigation extends LitElement {
|
|
|
225
232
|
|
|
226
233
|
### Dynamic Badges
|
|
227
234
|
```javascript
|
|
228
|
-
//
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
235
|
+
// In Lit component - use declarative binding
|
|
236
|
+
@state() notificationCount = 0;
|
|
237
|
+
|
|
238
|
+
render() {
|
|
239
|
+
return html`
|
|
240
|
+
<schmancy-navigation-bar-item
|
|
241
|
+
badge=${this.notificationCount > 0 ? String(this.notificationCount) : ''}
|
|
242
|
+
></schmancy-navigation-bar-item>
|
|
243
|
+
`;
|
|
244
|
+
}
|
|
233
245
|
```
|
|
234
246
|
|
|
235
247
|
### Conditional Rendering
|
|
@@ -0,0 +1,475 @@
|
|
|
1
|
+
# Navigation Rail Component
|
|
2
|
+
|
|
3
|
+
**Material Design 3 Reference:** https://m3.material.io/components/navigation-rail/overview
|
|
4
|
+
|
|
5
|
+
A Material Design 3 compliant vertical navigation component that provides access to primary destinations in an application. The navigation rail is positioned on the left side of the screen with a fixed 80px width and offers a compact, ergonomic way to navigate between 3-7 primary sections.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import '@schmancy/navigation-rail'
|
|
11
|
+
import '@schmancy/navigation-rail/navigation-rail-item'
|
|
12
|
+
|
|
13
|
+
// Or import from main package
|
|
14
|
+
import { SchmancyNavigationRail, SchmancyNavigationRailItem } from '@schmancy'
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Basic Usage
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<schmancy-navigation-rail activeIndex="0">
|
|
21
|
+
<schmancy-navigation-rail-item
|
|
22
|
+
icon="home"
|
|
23
|
+
label="Home"
|
|
24
|
+
value="/home">
|
|
25
|
+
</schmancy-navigation-rail-item>
|
|
26
|
+
|
|
27
|
+
<schmancy-navigation-rail-item
|
|
28
|
+
icon="search"
|
|
29
|
+
label="Search"
|
|
30
|
+
value="/search">
|
|
31
|
+
</schmancy-navigation-rail-item>
|
|
32
|
+
|
|
33
|
+
<schmancy-navigation-rail-item
|
|
34
|
+
icon="favorites"
|
|
35
|
+
label="Favorites"
|
|
36
|
+
value="/favorites">
|
|
37
|
+
</schmancy-navigation-rail-item>
|
|
38
|
+
</schmancy-navigation-rail>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Navigation Rail Component
|
|
42
|
+
|
|
43
|
+
### Properties
|
|
44
|
+
|
|
45
|
+
| Property | Type | Default | Description |
|
|
46
|
+
|----------|------|---------|-------------|
|
|
47
|
+
| `activeIndex` | `number` | `-1` | The currently active item index |
|
|
48
|
+
| `activeValue` | `string` | `''` | The currently active item value (for programmatic selection) |
|
|
49
|
+
| `labelVisibility` | `'all' \| 'selected' \| 'none'` | `'all'` | When to show labels for navigation items |
|
|
50
|
+
| `alignment` | `'top' \| 'center' \| 'bottom'` | `'top'` | Vertical alignment of navigation items |
|
|
51
|
+
| `showTooltips` | `boolean` | `true` | Show tooltips when labels are hidden |
|
|
52
|
+
| `keyboardNavigation` | `boolean` | `true` | Enable keyboard navigation with arrow keys |
|
|
53
|
+
|
|
54
|
+
### Slots
|
|
55
|
+
|
|
56
|
+
| Slot | Description |
|
|
57
|
+
|------|-------------|
|
|
58
|
+
| `fab` | Floating Action Button at the top of the rail |
|
|
59
|
+
| `menu` | Menu button below the FAB |
|
|
60
|
+
| `header` | Custom header content |
|
|
61
|
+
| `footer` | Custom footer content |
|
|
62
|
+
| (default) | Navigation rail items |
|
|
63
|
+
|
|
64
|
+
### Events
|
|
65
|
+
|
|
66
|
+
| Event | Detail | Description |
|
|
67
|
+
|-------|--------|-------------|
|
|
68
|
+
| `navigate` | `string` | Fired when a navigation item is selected, detail contains the value |
|
|
69
|
+
| `fab-click` | `void` | Fired when the FAB is clicked |
|
|
70
|
+
| `menu-click` | `void` | Fired when the menu button is clicked |
|
|
71
|
+
|
|
72
|
+
### CSS Custom Properties
|
|
73
|
+
|
|
74
|
+
| Property | Default | Description |
|
|
75
|
+
|----------|---------|-------------|
|
|
76
|
+
| `--rail-width` | `80px` | Fixed width of the rail |
|
|
77
|
+
| `--rail-width-mobile` | `56px` | Width on mobile devices |
|
|
78
|
+
|
|
79
|
+
### Methods
|
|
80
|
+
|
|
81
|
+
| Method | Description |
|
|
82
|
+
|--------|-------------|
|
|
83
|
+
| None | Component is controlled via properties and events |
|
|
84
|
+
|
|
85
|
+
## Navigation Rail Item Component
|
|
86
|
+
|
|
87
|
+
### Properties
|
|
88
|
+
|
|
89
|
+
| Property | Type | Default | Description |
|
|
90
|
+
|----------|------|---------|-------------|
|
|
91
|
+
| `icon` | `string` | `''` | Material Symbols icon name |
|
|
92
|
+
| `label` | `string` | `''` | Label text for the navigation item |
|
|
93
|
+
| `value` | `string` | `''` | Value associated with this item (useful for routing) |
|
|
94
|
+
| `active` | `boolean` | `false` | Whether this item is currently active/selected |
|
|
95
|
+
| `selected` | `boolean` | `false` | Alias for `active` property |
|
|
96
|
+
| `badge` | `string` | `''` | Badge text or number to display |
|
|
97
|
+
| `badgeVariant` | `'error' \| 'primary' \| 'secondary'` | `'error'` | Badge color variant |
|
|
98
|
+
| `showLabel` | `boolean` | `false` | Whether to show the label (controlled by parent rail) |
|
|
99
|
+
| `disabled` | `boolean` | `false` | Whether this item is disabled |
|
|
100
|
+
| `nested` | `boolean` | `false` | Whether this is a nested sub-navigation item |
|
|
101
|
+
| `group` | `boolean` | `false` | Whether this item represents a group separator |
|
|
102
|
+
|
|
103
|
+
### Slots
|
|
104
|
+
|
|
105
|
+
| Slot | Description |
|
|
106
|
+
|------|-------------|
|
|
107
|
+
| `icon` | Custom icon content (e.g., `<schmancy-icon>`) |
|
|
108
|
+
| `badge` | Custom badge content |
|
|
109
|
+
| (default) | Custom content that replaces the entire item |
|
|
110
|
+
|
|
111
|
+
### Events
|
|
112
|
+
|
|
113
|
+
| Event | Detail | Description |
|
|
114
|
+
|-------|--------|-------------|
|
|
115
|
+
| `navigate` | `string` | Fired when the item is clicked, detail contains the value |
|
|
116
|
+
|
|
117
|
+
### CSS Custom Properties
|
|
118
|
+
|
|
119
|
+
| Property | Default | Description |
|
|
120
|
+
|----------|---------|-------------|
|
|
121
|
+
| `--rail-item-height` | `56px` | Item height |
|
|
122
|
+
| `--rail-item-icon-size` | `24px` | Icon size |
|
|
123
|
+
| `--rail-item-padding` | `12px` | Item padding |
|
|
124
|
+
| `--rail-item-gap` | `4px` | Gap between icon and label |
|
|
125
|
+
|
|
126
|
+
## Examples
|
|
127
|
+
|
|
128
|
+
### With FAB and Menu Button
|
|
129
|
+
|
|
130
|
+
```html
|
|
131
|
+
<schmancy-navigation-rail
|
|
132
|
+
activeIndex="0"
|
|
133
|
+
labelVisibility="selected"
|
|
134
|
+
@navigation-change=${this.handleNavigation}
|
|
135
|
+
@fab-click=${this.handleFabClick}
|
|
136
|
+
@menu-click=${this.handleMenuClick}
|
|
137
|
+
>
|
|
138
|
+
<!-- Floating Action Button -->
|
|
139
|
+
<schmancy-button
|
|
140
|
+
slot="fab"
|
|
141
|
+
variant="filled"
|
|
142
|
+
aria-label="Compose"
|
|
143
|
+
>
|
|
144
|
+
<schmancy-icon>edit</schmancy-icon>
|
|
145
|
+
</schmancy-button>
|
|
146
|
+
|
|
147
|
+
<!-- Menu Button -->
|
|
148
|
+
<schmancy-button
|
|
149
|
+
slot="menu"
|
|
150
|
+
variant="text"
|
|
151
|
+
aria-label="Menu"
|
|
152
|
+
>
|
|
153
|
+
<schmancy-icon>menu</schmancy-icon>
|
|
154
|
+
</schmancy-button>
|
|
155
|
+
|
|
156
|
+
<!-- Navigation Items -->
|
|
157
|
+
<schmancy-navigation-rail-item
|
|
158
|
+
icon="inbox"
|
|
159
|
+
label="Inbox"
|
|
160
|
+
value="/inbox"
|
|
161
|
+
badge="12"
|
|
162
|
+
></schmancy-navigation-rail-item>
|
|
163
|
+
|
|
164
|
+
<schmancy-navigation-rail-item
|
|
165
|
+
icon="send"
|
|
166
|
+
label="Sent"
|
|
167
|
+
value="/sent"
|
|
168
|
+
></schmancy-navigation-rail-item>
|
|
169
|
+
|
|
170
|
+
<schmancy-navigation-rail-item
|
|
171
|
+
icon="drafts"
|
|
172
|
+
label="Drafts"
|
|
173
|
+
value="/drafts"
|
|
174
|
+
badge="3"
|
|
175
|
+
badgeVariant="secondary"
|
|
176
|
+
></schmancy-navigation-rail-item>
|
|
177
|
+
</schmancy-navigation-rail>
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### With Groups and Dividers
|
|
181
|
+
|
|
182
|
+
```html
|
|
183
|
+
<schmancy-navigation-rail activeValue="dashboard">
|
|
184
|
+
<!-- Primary Navigation -->
|
|
185
|
+
<schmancy-navigation-rail-item
|
|
186
|
+
icon="dashboard"
|
|
187
|
+
label="Dashboard"
|
|
188
|
+
value="dashboard"
|
|
189
|
+
></schmancy-navigation-rail-item>
|
|
190
|
+
|
|
191
|
+
<schmancy-navigation-rail-item
|
|
192
|
+
icon="analytics"
|
|
193
|
+
label="Analytics"
|
|
194
|
+
value="analytics"
|
|
195
|
+
></schmancy-navigation-rail-item>
|
|
196
|
+
|
|
197
|
+
<!-- Divider -->
|
|
198
|
+
<schmancy-divider></schmancy-divider>
|
|
199
|
+
|
|
200
|
+
<!-- Secondary Navigation -->
|
|
201
|
+
<schmancy-navigation-rail-item
|
|
202
|
+
icon="folder"
|
|
203
|
+
label="Files"
|
|
204
|
+
value="files"
|
|
205
|
+
></schmancy-navigation-rail-item>
|
|
206
|
+
|
|
207
|
+
<schmancy-navigation-rail-item
|
|
208
|
+
icon="people"
|
|
209
|
+
label="Team"
|
|
210
|
+
value="team"
|
|
211
|
+
></schmancy-navigation-rail-item>
|
|
212
|
+
|
|
213
|
+
<!-- Footer Items -->
|
|
214
|
+
<div slot="footer">
|
|
215
|
+
<schmancy-navigation-rail-item
|
|
216
|
+
icon="settings"
|
|
217
|
+
label="Settings"
|
|
218
|
+
value="settings"
|
|
219
|
+
></schmancy-navigation-rail-item>
|
|
220
|
+
|
|
221
|
+
<schmancy-navigation-rail-item
|
|
222
|
+
icon="account_circle"
|
|
223
|
+
label="Profile"
|
|
224
|
+
value="profile"
|
|
225
|
+
></schmancy-navigation-rail-item>
|
|
226
|
+
</div>
|
|
227
|
+
</schmancy-navigation-rail>
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Rail with Custom Icons
|
|
231
|
+
|
|
232
|
+
```html
|
|
233
|
+
<schmancy-navigation-rail
|
|
234
|
+
labelVisibility="selected"
|
|
235
|
+
showTooltips
|
|
236
|
+
>
|
|
237
|
+
<schmancy-navigation-rail-item label="Home">
|
|
238
|
+
<schmancy-icon slot="icon" fill="1">home</schmancy-icon>
|
|
239
|
+
</schmancy-navigation-rail-item>
|
|
240
|
+
|
|
241
|
+
<schmancy-navigation-rail-item label="Explore">
|
|
242
|
+
<schmancy-icon slot="icon" variant="rounded">explore</schmancy-icon>
|
|
243
|
+
</schmancy-navigation-rail-item>
|
|
244
|
+
|
|
245
|
+
<schmancy-navigation-rail-item label="Notifications" badge="New">
|
|
246
|
+
<schmancy-icon slot="icon" weight="600">notifications</schmancy-icon>
|
|
247
|
+
</schmancy-navigation-rail-item>
|
|
248
|
+
</schmancy-navigation-rail>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Programmatic Control
|
|
252
|
+
|
|
253
|
+
```typescript
|
|
254
|
+
import { SchmancyNavigationRail } from '@schmancy/navigation-rail'
|
|
255
|
+
|
|
256
|
+
class MyApp extends LitElement {
|
|
257
|
+
@query('schmancy-navigation-rail')
|
|
258
|
+
navigationRail!: SchmancyNavigationRail
|
|
259
|
+
|
|
260
|
+
// Select by index
|
|
261
|
+
selectHome() {
|
|
262
|
+
this.navigationRail.activeIndex = 0
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// Select by value
|
|
266
|
+
selectByRoute(route: string) {
|
|
267
|
+
this.navigationRail.activeValue = route
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
// Handle navigation
|
|
271
|
+
handleNavigationChange(event: CustomEvent<string>) {
|
|
272
|
+
const value = event.detail
|
|
273
|
+
console.log(`Navigated to: ${value}`)
|
|
274
|
+
|
|
275
|
+
// Update route
|
|
276
|
+
this.router.navigate(value)
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
// Change label visibility programmatically
|
|
280
|
+
toggleLabels() {
|
|
281
|
+
this.navigationRail.labelVisibility =
|
|
282
|
+
this.navigationRail.labelVisibility === 'all' ? 'none' : 'all'
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
render() {
|
|
286
|
+
return html`
|
|
287
|
+
<schmancy-navigation-rail
|
|
288
|
+
@navigate=${this.handleNavigationChange}
|
|
289
|
+
>
|
|
290
|
+
<!-- items -->
|
|
291
|
+
</schmancy-navigation-rail>
|
|
292
|
+
`
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### With Router Integration
|
|
298
|
+
|
|
299
|
+
```typescript
|
|
300
|
+
import { Router } from '@vaadin/router'
|
|
301
|
+
|
|
302
|
+
class AppShell extends LitElement {
|
|
303
|
+
@state() currentRoute = '/'
|
|
304
|
+
|
|
305
|
+
firstUpdated() {
|
|
306
|
+
// Listen to router changes
|
|
307
|
+
window.addEventListener('vaadin-router-location-changed', (e) => {
|
|
308
|
+
this.currentRoute = e.detail.location.pathname
|
|
309
|
+
})
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
handleNavigation(event: CustomEvent<string>) {
|
|
313
|
+
Router.go(event.detail)
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
render() {
|
|
317
|
+
return html`
|
|
318
|
+
<schmancy-navigation-rail
|
|
319
|
+
.activeValue=${this.currentRoute}
|
|
320
|
+
@navigate=${this.handleNavigation}
|
|
321
|
+
labelVisibility="selected"
|
|
322
|
+
>
|
|
323
|
+
<schmancy-navigation-rail-item
|
|
324
|
+
icon="home"
|
|
325
|
+
label="Home"
|
|
326
|
+
value="/"
|
|
327
|
+
></schmancy-navigation-rail-item>
|
|
328
|
+
|
|
329
|
+
<schmancy-navigation-rail-item
|
|
330
|
+
icon="dashboard"
|
|
331
|
+
label="Dashboard"
|
|
332
|
+
value="/dashboard"
|
|
333
|
+
></schmancy-navigation-rail-item>
|
|
334
|
+
|
|
335
|
+
<schmancy-navigation-rail-item
|
|
336
|
+
icon="settings"
|
|
337
|
+
label="Settings"
|
|
338
|
+
value="/settings"
|
|
339
|
+
></schmancy-navigation-rail-item>
|
|
340
|
+
</schmancy-navigation-rail>
|
|
341
|
+
|
|
342
|
+
<main>
|
|
343
|
+
<slot></slot> <!-- Router outlet -->
|
|
344
|
+
</main>
|
|
345
|
+
`
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
## Accessibility
|
|
351
|
+
|
|
352
|
+
The navigation rail components are fully accessible:
|
|
353
|
+
|
|
354
|
+
- **ARIA Roles**: Navigation container has `role="navigation"`, items have `role="listitem"`
|
|
355
|
+
- **Keyboard Navigation**:
|
|
356
|
+
- `ArrowUp/ArrowDown` - Navigate between items
|
|
357
|
+
- `Home/End` - Jump to first/last item
|
|
358
|
+
- `Enter/Space` - Select focused item
|
|
359
|
+
- `Tab` - Move focus in/out of rail
|
|
360
|
+
- **Screen Readers**: Proper ARIA labels and live regions
|
|
361
|
+
- **Focus Management**: Clear focus indicators and proper tab order
|
|
362
|
+
- **High Contrast**: Supports Windows High Contrast Mode
|
|
363
|
+
|
|
364
|
+
## Responsive Behavior
|
|
365
|
+
|
|
366
|
+
The navigation rail adapts to different screen sizes:
|
|
367
|
+
|
|
368
|
+
- **Desktop** (>1024px): Full 80px width, shows all features
|
|
369
|
+
- **Tablet** (768-1024px): Reduced padding, optional label visibility
|
|
370
|
+
- **Mobile** (<768px): Collapses to 56px, icons only
|
|
371
|
+
- **Landscape Phone**: Reduced vertical spacing
|
|
372
|
+
|
|
373
|
+
## Theming
|
|
374
|
+
|
|
375
|
+
The navigation rail uses Schmancy theme tokens:
|
|
376
|
+
|
|
377
|
+
```css
|
|
378
|
+
/* Custom theming */
|
|
379
|
+
schmancy-navigation-rail {
|
|
380
|
+
/* Colors */
|
|
381
|
+
--schmancy-sys-color-surface-container: #f5f5f5;
|
|
382
|
+
--schmancy-sys-color-secondary-container: #e3f2fd;
|
|
383
|
+
|
|
384
|
+
/* Dimensions */
|
|
385
|
+
--rail-width: 80px;
|
|
386
|
+
--rail-width-mobile: 56px;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/* Dark theme */
|
|
390
|
+
@media (prefers-color-scheme: dark) {
|
|
391
|
+
schmancy-navigation-rail {
|
|
392
|
+
--schmancy-sys-color-surface-container: #1e1e1e;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
## Best Practices
|
|
398
|
+
|
|
399
|
+
1. **Item Count**: Use 3-7 primary destinations for optimal usability
|
|
400
|
+
2. **Icons**: Use clear, recognizable Material Symbols icons
|
|
401
|
+
3. **Labels**: Keep labels short and descriptive (1-2 words)
|
|
402
|
+
4. **Hierarchy**: Place most important items at the top
|
|
403
|
+
5. **Badges**: Use sparingly for important notifications
|
|
404
|
+
6. **FAB**: Only include if there's a clear primary action
|
|
405
|
+
7. **Label Visibility**: Use 'selected' for most cases, 'all' for better discoverability
|
|
406
|
+
8. **Mobile**: Consider using bottom navigation bar on mobile instead
|
|
407
|
+
|
|
408
|
+
## Migration Guide
|
|
409
|
+
|
|
410
|
+
### From Navigation Drawer
|
|
411
|
+
|
|
412
|
+
```html
|
|
413
|
+
<!-- Before: Navigation Drawer -->
|
|
414
|
+
<schmancy-nav-drawer>
|
|
415
|
+
<div slot="header">App Name</div>
|
|
416
|
+
<schmancy-list>
|
|
417
|
+
<schmancy-list-item>Home</schmancy-list-item>
|
|
418
|
+
</schmancy-list>
|
|
419
|
+
</schmancy-nav-drawer>
|
|
420
|
+
|
|
421
|
+
<!-- After: Navigation Rail -->
|
|
422
|
+
<schmancy-navigation-rail>
|
|
423
|
+
<div slot="header">
|
|
424
|
+
<schmancy-icon>logo</schmancy-icon>
|
|
425
|
+
</div>
|
|
426
|
+
<schmancy-navigation-rail-item
|
|
427
|
+
icon="home"
|
|
428
|
+
label="Home"
|
|
429
|
+
></schmancy-navigation-rail-item>
|
|
430
|
+
</schmancy-navigation-rail>
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### From Tab Bar
|
|
434
|
+
|
|
435
|
+
```html
|
|
436
|
+
<!-- Before: Tab Bar -->
|
|
437
|
+
<schmancy-tabs>
|
|
438
|
+
<schmancy-tab>Home</schmancy-tab>
|
|
439
|
+
<schmancy-tab>Search</schmancy-tab>
|
|
440
|
+
</schmancy-tabs>
|
|
441
|
+
|
|
442
|
+
<!-- After: Navigation Rail -->
|
|
443
|
+
<schmancy-navigation-rail labelVisibility="always">
|
|
444
|
+
<schmancy-navigation-rail-item
|
|
445
|
+
icon="home"
|
|
446
|
+
label="Home"
|
|
447
|
+
></schmancy-navigation-rail-item>
|
|
448
|
+
<schmancy-navigation-rail-item
|
|
449
|
+
icon="search"
|
|
450
|
+
label="Search"
|
|
451
|
+
></schmancy-navigation-rail-item>
|
|
452
|
+
</schmancy-navigation-rail>
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
## Performance Considerations
|
|
456
|
+
|
|
457
|
+
- **Lazy Loading**: Navigation rail supports lazy loading of route components
|
|
458
|
+
- **Virtual Scrolling**: Automatically enabled for rails with many items
|
|
459
|
+
- **CSS Containment**: Uses CSS containment for optimal rendering
|
|
460
|
+
- **Event Delegation**: Efficient event handling for all items
|
|
461
|
+
|
|
462
|
+
## Browser Support
|
|
463
|
+
|
|
464
|
+
- Chrome 90+
|
|
465
|
+
- Firefox 88+
|
|
466
|
+
- Safari 14+
|
|
467
|
+
- Edge 90+
|
|
468
|
+
|
|
469
|
+
## Related Components
|
|
470
|
+
|
|
471
|
+
- `schmancy-navigation-bar` - Bottom navigation for mobile
|
|
472
|
+
- `schmancy-nav-drawer` - Full navigation drawer
|
|
473
|
+
- `schmancy-tabs` - Horizontal tab navigation
|
|
474
|
+
- `schmancy-button` - For FAB and menu buttons
|
|
475
|
+
- `schmancy-icon` - For navigation icons
|
|
@@ -52,7 +52,7 @@ The `<schmancy-navigation-bar-item>` component represents an individual navigati
|
|
|
52
52
|
## Events
|
|
53
53
|
|
|
54
54
|
### bar-item-click
|
|
55
|
-
Fired when the item is clicked
|
|
55
|
+
Fired when the item is clicked.
|
|
56
56
|
|
|
57
57
|
```javascript
|
|
58
58
|
item.addEventListener('bar-item-click', (event) => {
|
|
@@ -68,9 +68,9 @@ Standard focus and blur events for accessibility.
|
|
|
68
68
|
## Features
|
|
69
69
|
|
|
70
70
|
### RxJS-Powered Interactions
|
|
71
|
-
- **Click handling**: Uses RxJS observables
|
|
72
|
-
- **Ripple effects**: Immediate visual feedback
|
|
73
|
-
- **Keyboard support**: Enter and Space keys properly handled
|
|
71
|
+
- **Click handling**: Uses RxJS observables for instant navigation events
|
|
72
|
+
- **Ripple effects**: Immediate visual feedback on interaction
|
|
73
|
+
- **Keyboard support**: Enter and Space keys properly handled
|
|
74
74
|
- **State management**: BehaviorSubject for reactive active state updates
|
|
75
75
|
|
|
76
76
|
### Full Clickable Area
|
|
@@ -140,8 +140,15 @@ schmancy-navigation-bar-item::part(button) {
|
|
|
140
140
|
Programmatically set the active state of the item.
|
|
141
141
|
|
|
142
142
|
```javascript
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
// In Lit component - use property binding
|
|
144
|
+
@state() isActive = true;
|
|
145
|
+
|
|
146
|
+
render() {
|
|
147
|
+
return html`
|
|
148
|
+
<schmancy-navigation-bar-item ?active=${this.isActive}>
|
|
149
|
+
</schmancy-navigation-bar-item>
|
|
150
|
+
`;
|
|
151
|
+
}
|
|
145
152
|
```
|
|
146
153
|
|
|
147
154
|
## Integration Example
|
|
@@ -189,7 +196,7 @@ class AppNavigation extends LitElement {
|
|
|
189
196
|
## Accessibility
|
|
190
197
|
|
|
191
198
|
### Keyboard Support
|
|
192
|
-
- `Enter` / `Space` - Activate the item
|
|
199
|
+
- `Enter` / `Space` - Activate the item instantly
|
|
193
200
|
- Full focus management with visual indicators
|
|
194
201
|
- `aria-pressed` attribute reflects active state
|
|
195
202
|
- `aria-label` for badge notifications
|
|
@@ -203,7 +210,7 @@ class AppNavigation extends LitElement {
|
|
|
203
210
|
|
|
204
211
|
### RxJS Observables
|
|
205
212
|
- Efficient event handling with proper cleanup
|
|
206
|
-
-
|
|
213
|
+
- Instant navigation events for responsive interaction
|
|
207
214
|
- Immediate ripple feedback for better UX
|
|
208
215
|
- Memory-safe with `takeUntil(this.disconnecting)`
|
|
209
216
|
|
|
@@ -225,11 +232,16 @@ class AppNavigation extends LitElement {
|
|
|
225
232
|
|
|
226
233
|
### Dynamic Badges
|
|
227
234
|
```javascript
|
|
228
|
-
//
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
235
|
+
// In Lit component - use declarative binding
|
|
236
|
+
@state() notificationCount = 0;
|
|
237
|
+
|
|
238
|
+
render() {
|
|
239
|
+
return html`
|
|
240
|
+
<schmancy-navigation-bar-item
|
|
241
|
+
badge=${this.notificationCount > 0 ? String(this.notificationCount) : ''}
|
|
242
|
+
></schmancy-navigation-bar-item>
|
|
243
|
+
`;
|
|
244
|
+
}
|
|
233
245
|
```
|
|
234
246
|
|
|
235
247
|
### Conditional Rendering
|