@mhmo91/schmancy 0.2.195 → 0.2.196
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/animated-text.md +114 -0
- package/ai/card.md +162 -131
- package/ai/circular-progress.md +91 -0
- package/ai/date-range.md +142 -0
- package/ai/delay.md +158 -0
- package/ai/divider.md +153 -0
- package/ai/index.md +42 -3
- package/ai/nav-drawer.md +206 -0
- package/ai/option.md +173 -0
- package/ai/slider.md +227 -0
- package/ai/steps.md +231 -0
- package/ai/surface.md +139 -200
- package/ai/teleport.md +196 -0
- package/ai/theme-button.md +173 -0
- package/ai/theme.md +241 -0
- package/ai/typewriter.md +217 -0
- package/dist/ai/animated-text.md +114 -0
- package/dist/ai/card.md +162 -131
- package/dist/ai/circular-progress.md +91 -0
- package/dist/ai/date-range.md +142 -0
- package/dist/ai/delay.md +158 -0
- package/dist/ai/divider.md +153 -0
- package/dist/ai/index.md +42 -3
- package/dist/ai/nav-drawer.md +206 -0
- package/dist/ai/option.md +173 -0
- package/dist/ai/slider.md +227 -0
- package/dist/ai/steps.md +231 -0
- package/dist/ai/surface.md +139 -200
- package/dist/ai/teleport.md +196 -0
- package/dist/ai/theme-button.md +173 -0
- package/dist/ai/theme.md +241 -0
- package/dist/ai/typewriter.md +217 -0
- package/dist/{animated-text-Bu9wh3wv.cjs → animated-text-DnX2TopW.cjs} +2 -2
- package/dist/{animated-text-Bu9wh3wv.cjs.map → animated-text-DnX2TopW.cjs.map} +1 -1
- package/dist/{animated-text-Ci7M0QTx.js → animated-text-jv1yAwLh.js} +3 -3
- package/dist/{animated-text-Ci7M0QTx.js.map → animated-text-jv1yAwLh.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-eJJ_wryh.js → area.component-DMD20wqd.js} +3 -3
- package/dist/{area.component-eJJ_wryh.js.map → area.component-DMD20wqd.js.map} +1 -1
- package/dist/{area.component-Cg9dqZJ5.cjs → area.component-Vs2WGXgk.cjs} +2 -2
- package/dist/{area.component-Cg9dqZJ5.cjs.map → area.component-Vs2WGXgk.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-BH7nQbid.cjs → autocomplete-BrAxEJJq.cjs} +2 -2
- package/dist/{autocomplete-BH7nQbid.cjs.map → autocomplete-BrAxEJJq.cjs.map} +1 -1
- package/dist/{autocomplete-D9n1MeKT.js → autocomplete-OS61ngsy.js} +3 -3
- package/dist/{autocomplete-D9n1MeKT.js.map → autocomplete-OS61ngsy.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-Bg-rdjAe.cjs → avatar-CEdv8DJY.cjs} +2 -2
- package/dist/{avatar-Bg-rdjAe.cjs.map → avatar-CEdv8DJY.cjs.map} +1 -1
- package/dist/{avatar-B4lSs4z5.js → avatar-CUHTDenQ.js} +41 -41
- package/dist/{avatar-B4lSs4z5.js.map → avatar-CUHTDenQ.js.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.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-y37-tGrk.js → checkbox-CVXRiSWP.js} +2 -2
- package/dist/{checkbox-y37-tGrk.js.map → checkbox-CVXRiSWP.js.map} +1 -1
- package/dist/{checkbox-CgL23smr.cjs → checkbox-Chd-COYm.cjs} +2 -2
- package/dist/{checkbox-CgL23smr.cjs.map → checkbox-Chd-COYm.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CKST7ug-.cjs → chips-Bx9gSvN1.cjs} +2 -2
- package/dist/{chips-CKST7ug-.cjs.map → chips-Bx9gSvN1.cjs.map} +1 -1
- package/dist/{chips-Ndwt1V4b.js → chips-Dx_erk55.js} +3 -3
- package/dist/{chips-Ndwt1V4b.js.map → chips-Dx_erk55.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/{circular-progress-vokDGjmG.js → circular-progress-BQnGvbss.js} +3 -3
- package/dist/{circular-progress-vokDGjmG.js.map → circular-progress-BQnGvbss.js.map} +1 -1
- package/dist/{circular-progress-BDmc1zlm.cjs → circular-progress-CNBah5dz.cjs} +2 -2
- package/dist/{circular-progress-BDmc1zlm.cjs.map → circular-progress-CNBah5dz.cjs.map} +1 -1
- package/dist/circular-progress.cjs +1 -1
- package/dist/circular-progress.js +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-DfZz3ifP.cjs → date-range-Cq0diVSY.cjs} +4 -3
- package/dist/{date-range-DfZz3ifP.cjs.map → date-range-Cq0diVSY.cjs.map} +1 -1
- package/dist/{date-range-CpDVPn_v.js → date-range-wxdt6Ha0.js} +5 -4
- package/dist/date-range-wxdt6Ha0.js.map +1 -0
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-ASLyLkQL.cjs → delay-BzkhDhs0.cjs} +2 -2
- package/dist/{delay-ASLyLkQL.cjs.map → delay-BzkhDhs0.cjs.map} +1 -1
- package/dist/{delay-CG5SRrzF.js → delay-Ds5suSsc.js} +2 -2
- package/dist/{delay-CG5SRrzF.js.map → delay-Ds5suSsc.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{dialog-content-D88EcY6L.cjs → dialog-content-CJY69qfC.cjs} +2 -2
- package/dist/{dialog-content-D88EcY6L.cjs.map → dialog-content-CJY69qfC.cjs.map} +1 -1
- package/dist/{dialog-content-BoPviBAt.js → dialog-content-DFJnYzff.js} +3 -3
- package/dist/{dialog-content-BoPviBAt.js.map → dialog-content-DFJnYzff.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +1 -1
- package/dist/{divider-N7GWgK6o.js → divider-C3w1_-N1.js} +3 -3
- package/dist/{divider-N7GWgK6o.js.map → divider-C3w1_-N1.js.map} +1 -1
- package/dist/{divider-C38JDYss.cjs → divider-CFzbCFsr.cjs} +2 -2
- package/dist/{divider-C38JDYss.cjs.map → divider-CFzbCFsr.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-DmO_yIVb.js → dropdown-content-BGFYBXcx.js} +3 -3
- package/dist/{dropdown-content-DmO_yIVb.js.map → dropdown-content-BGFYBXcx.js.map} +1 -1
- package/dist/{dropdown-content-rH8awIRA.cjs → dropdown-content-PaMOJphI.cjs} +2 -2
- package/dist/{dropdown-content-rH8awIRA.cjs.map → dropdown-content-PaMOJphI.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-CXYfL6bE.js → flex-Cy4Stl_1.js} +2 -2
- package/dist/{flex-CXYfL6bE.js.map → flex-Cy4Stl_1.js.map} +1 -1
- package/dist/{flex-wYuewqrr.cjs → flex-DP5O5644.cjs} +2 -2
- package/dist/{flex-wYuewqrr.cjs.map → flex-DP5O5644.cjs.map} +1 -1
- package/dist/{form-q3JZjWez.js → form-BQamcLFL.js} +2 -2
- package/dist/{form-q3JZjWez.js.map → form-BQamcLFL.js.map} +1 -1
- package/dist/{form-CNWWdhT_.cjs → form-CG3kns69.cjs} +2 -2
- package/dist/{form-CNWWdhT_.cjs.map → form-CG3kns69.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icon-pLQWXzo8.js → icon-Cd4p9jRB.js} +3 -3
- package/dist/{icon-pLQWXzo8.js.map → icon-Cd4p9jRB.js.map} +1 -1
- package/dist/{icon-QnmfHtfT.cjs → icon-CilwMTXB.cjs} +2 -2
- package/dist/{icon-QnmfHtfT.cjs.map → icon-CilwMTXB.cjs.map} +1 -1
- package/dist/{icon-button-DOTB_28y.js → icon-button-By17is4V.js} +3 -3
- package/dist/{icon-button-DOTB_28y.js.map → icon-button-By17is4V.js.map} +1 -1
- package/dist/{icon-button-oAOX71_s.cjs → icon-button-C4Hf63hY.cjs} +2 -2
- package/dist/{icon-button-oAOX71_s.cjs.map → icon-button-C4Hf63hY.cjs.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 +39 -39
- package/dist/{input-CCniOtAr.cjs → input-BIi0rS2t.cjs} +2 -2
- package/dist/{input-CCniOtAr.cjs.map → input-BIi0rS2t.cjs.map} +1 -1
- package/dist/{input-DeJitVSV.js → input-C8OAokVe.js} +2 -2
- package/dist/{input-DeJitVSV.js.map → input-C8OAokVe.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-Ca79GGNH.js → list-BC3OE3Pu.js} +2 -2
- package/dist/{list-Ca79GGNH.js.map → list-BC3OE3Pu.js.map} +1 -1
- package/dist/{list-Ad-24MHW.cjs → list-jFsCubuy.cjs} +2 -2
- package/dist/{list-Ad-24MHW.cjs.map → list-jFsCubuy.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BoUiP2tU.js → litElement.mixin-C6PzcPXd.js} +2 -2
- package/dist/{litElement.mixin-BoUiP2tU.js.map → litElement.mixin-C6PzcPXd.js.map} +1 -1
- package/dist/{litElement.mixin-qOTYSaNG.cjs → litElement.mixin-Cypiq-N-.cjs} +2 -2
- package/dist/{litElement.mixin-qOTYSaNG.cjs.map → litElement.mixin-Cypiq-N-.cjs.map} +1 -1
- package/dist/{menu-6Wum4ysc.cjs → menu-CDjqdEd6.cjs} +2 -2
- package/dist/{menu-6Wum4ysc.cjs.map → menu-CDjqdEd6.cjs.map} +1 -1
- package/dist/{menu-Dd_X9oET.js → menu-n_Doj-bW.js} +3 -3
- package/dist/{menu-Dd_X9oET.js.map → menu-n_Doj-bW.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-CrNyAbmv.cjs → notification-service--VLqOJJg.cjs} +2 -2
- package/dist/{notification-service-CrNyAbmv.cjs.map → notification-service--VLqOJJg.cjs.map} +1 -1
- package/dist/{notification-service-C-9IqObm.js → notification-service-DHIhgWQr.js} +3 -3
- package/dist/{notification-service-C-9IqObm.js.map → notification-service-DHIhgWQr.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BbBbwrJq.cjs → option-B359EBiZ.cjs} +2 -2
- package/dist/{option-BbBbwrJq.cjs.map → option-B359EBiZ.cjs.map} +1 -1
- package/dist/{option-DVSXUJ96.js → option-oyyjCwnL.js} +2 -2
- package/dist/{option-DVSXUJ96.js.map → option-oyyjCwnL.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-R5wNWHAv.cjs → payment-card-form-B-ZAsSED.cjs} +2 -2
- package/dist/{payment-card-form-R5wNWHAv.cjs.map → payment-card-form-B-ZAsSED.cjs.map} +1 -1
- package/dist/{payment-card-form-CTjgVoJK.js → payment-card-form-BSueaw97.js} +3 -3
- package/dist/{payment-card-form-CTjgVoJK.js.map → payment-card-form-BSueaw97.js.map} +1 -1
- package/dist/{radio-button-BDAW1Euc.js → radio-button-84TD7rpH.js} +2 -2
- package/dist/{radio-button-BDAW1Euc.js.map → radio-button-84TD7rpH.js.map} +1 -1
- package/dist/{radio-button-Cg1JobXT.cjs → radio-button-BO6mIWCi.cjs} +2 -2
- package/dist/{radio-button-Cg1JobXT.cjs.map → radio-button-BO6mIWCi.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-BAPIxl4s.cjs → schmancy-steps-container-Cfq8OsWt.cjs} +2 -2
- package/dist/{schmancy-steps-container-BAPIxl4s.cjs.map → schmancy-steps-container-Cfq8OsWt.cjs.map} +1 -1
- package/dist/{schmancy-steps-container--d7VK-QR.js → schmancy-steps-container-Lo4d27n3.js} +2 -2
- package/dist/{schmancy-steps-container--d7VK-QR.js.map → schmancy-steps-container-Lo4d27n3.js.map} +1 -1
- package/dist/{select-DfbOOZtm.js → select-B-zgP_v6.js} +3 -3
- package/dist/{select-DfbOOZtm.js.map → select-B-zgP_v6.js.map} +1 -1
- package/dist/{select-CnjO7DLl.cjs → select-DhEVsWh6.cjs} +2 -2
- package/dist/{select-CnjO7DLl.cjs.map → select-DhEVsWh6.cjs.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-Ds0Fp0lM.cjs → sheet-BEWq40cN.cjs} +2 -2
- package/dist/{sheet-Ds0Fp0lM.cjs.map → sheet-BEWq40cN.cjs.map} +1 -1
- package/dist/{sheet-DhbKM9gJ.js → sheet-DDY4pbD4.js} +3 -3
- package/dist/{sheet-DhbKM9gJ.js.map → sheet-DDY4pbD4.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +1 -1
- package/dist/{slider-Ba3AEh2W.js → slider--irxEv_B.js} +3 -3
- package/dist/{slider-Ba3AEh2W.js.map → slider--irxEv_B.js.map} +1 -1
- package/dist/{slider-CSOzhUhA.cjs → slider-De-H5fe8.cjs} +2 -2
- package/dist/{slider-CSOzhUhA.cjs.map → slider-De-H5fe8.cjs.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-BgeQqlFU.js → spinner-Bl9n09Z5.js} +3 -3
- package/dist/{spinner-BgeQqlFU.js.map → spinner-Bl9n09Z5.js.map} +1 -1
- package/dist/{spinner-llMfjiIc.cjs → spinner-DNz1IjmL.cjs} +2 -2
- package/dist/{spinner-llMfjiIc.cjs.map → spinner-DNz1IjmL.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-CT2g8fDM.cjs → surface-BAEUiWcq.cjs} +2 -2
- package/dist/{surface-CT2g8fDM.cjs.map → surface-BAEUiWcq.cjs.map} +1 -1
- package/dist/{surface-UcsAmLj5.js → surface-h9dLHMTm.js} +2 -2
- package/dist/{surface-UcsAmLj5.js.map → surface-h9dLHMTm.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-DuUlrDCu.js → table-CxazXBjI.js} +2 -2
- package/dist/{table-DuUlrDCu.js.map → table-CxazXBjI.js.map} +1 -1
- package/dist/{table-CSBhQ-pa.cjs → table-Dn07ykGG.cjs} +2 -2
- package/dist/{table-CSBhQ-pa.cjs.map → table-Dn07ykGG.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-BVFHArgV.js → tabs-compatibility-B8I0vg7Y.js} +2 -2
- package/dist/{tabs-compatibility-BVFHArgV.js.map → tabs-compatibility-B8I0vg7Y.js.map} +1 -1
- package/dist/{tabs-compatibility-Bt3coGzN.cjs → tabs-compatibility-BrTxeSS-.cjs} +2 -2
- package/dist/{tabs-compatibility-Bt3coGzN.cjs.map → tabs-compatibility-BrTxeSS-.cjs.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-Du4i6vQR.js +43 -0
- package/dist/{tailwind.mixin-C71e_LC1.js.map → tailwind.mixin-Du4i6vQR.js.map} +1 -1
- package/dist/tailwind.mixin-qyIcoDLk.cjs +2 -0
- package/dist/{tailwind.mixin-CFCJhe5p.cjs.map → tailwind.mixin-qyIcoDLk.cjs.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-B8eIpYa-.js → textarea-DibCLxC2.js} +2 -2
- package/dist/{textarea-B8eIpYa-.js.map → textarea-DibCLxC2.js.map} +1 -1
- package/dist/{textarea-CtCk_1Fq.cjs → textarea-pMec4Wpg.cjs} +2 -2
- package/dist/{textarea-CtCk_1Fq.cjs.map → textarea-pMec4Wpg.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-DQe5uOxU.cjs → theme-button-CG1w_waw.cjs} +2 -2
- package/dist/{theme-button-DQe5uOxU.cjs.map → theme-button-CG1w_waw.cjs.map} +1 -1
- package/dist/{theme-button-TEzhKUy6.js → theme-button-irLEczd5.js} +2 -2
- package/dist/{theme-button-TEzhKUy6.js.map → theme-button-irLEczd5.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-DiTpToTC.js → theme.component-CMM8Xws2.js} +2 -2
- package/dist/{theme.component-DiTpToTC.js.map → theme.component-CMM8Xws2.js.map} +1 -1
- package/dist/{theme.component-Be6M74nN.cjs → theme.component-CpRuySmd.cjs} +2 -2
- package/dist/{theme.component-Be6M74nN.cjs.map → theme.component-CpRuySmd.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-CBSuTrU2.js → timezone-DIrmlnD6.js} +3 -3
- package/dist/{timezone-CBSuTrU2.js.map → timezone-DIrmlnD6.js.map} +1 -1
- package/dist/{timezone-C1aR24i0.cjs → timezone-n5GflDRe.cjs} +2 -2
- package/dist/{timezone-C1aR24i0.cjs.map → timezone-n5GflDRe.cjs.map} +1 -1
- package/dist/{tooltip-DYcXTtFy.cjs → tooltip-0vIcVm5-.cjs} +2 -2
- package/dist/{tooltip-DYcXTtFy.cjs.map → tooltip-0vIcVm5-.cjs.map} +1 -1
- package/dist/{tooltip-DYQW9R3I.js → tooltip-N_B-vsDa.js} +2 -2
- package/dist/{tooltip-DYQW9R3I.js.map → tooltip-N_B-vsDa.js.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-nsSIkdNT.js → tree-2Hf2X0Hv.js} +2 -2
- package/dist/{tree-nsSIkdNT.js.map → tree-2Hf2X0Hv.js.map} +1 -1
- package/dist/{tree-D-rTjnPs.cjs → tree-Q8AMxJxP.cjs} +2 -2
- package/dist/{tree-D-rTjnPs.cjs.map → tree-Q8AMxJxP.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-Cj0R-RDa.cjs → typewriter-CsL-NfYC.cjs} +2 -2
- package/dist/{typewriter-Cj0R-RDa.cjs.map → typewriter-CsL-NfYC.cjs.map} +1 -1
- package/dist/{typewriter-DrYb6_FB.js → typewriter-bqbNKczJ.js} +4 -4
- package/dist/{typewriter-DrYb6_FB.js.map → typewriter-bqbNKczJ.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-DMj2H_lZ.js → typography-CbrvouLo.js} +2 -2
- package/dist/{typography-DMj2H_lZ.js.map → typography-CbrvouLo.js.map} +1 -1
- package/dist/{typography-B0Kj2XoC.cjs → typography-Hlts-hzc.cjs} +2 -2
- package/dist/{typography-B0Kj2XoC.cjs.map → typography-Hlts-hzc.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/dist/date-range-CpDVPn_v.js.map +0 -1
- package/dist/tailwind.mixin-C71e_LC1.js +0 -43
- package/dist/tailwind.mixin-CFCJhe5p.cjs +0 -2
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
# Option Component
|
|
2
|
+
|
|
3
|
+
A versatile option element designed for use with select dropdowns and autocomplete components, providing accessible and interactive selection items.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!-- Basic option -->
|
|
9
|
+
<schmancy-option value="1">Option One</schmancy-option>
|
|
10
|
+
|
|
11
|
+
<!-- Option with custom label -->
|
|
12
|
+
<schmancy-option value="us" label="United States"></schmancy-option>
|
|
13
|
+
|
|
14
|
+
<!-- Option with icon -->
|
|
15
|
+
<schmancy-option value="email" icon="✉️">Email Notifications</schmancy-option>
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Properties
|
|
19
|
+
|
|
20
|
+
| Property | Type | Default | Description |
|
|
21
|
+
|----------|------|---------|-------------|
|
|
22
|
+
| `value` | `string` | `''` | The value when selected |
|
|
23
|
+
| `label` | `string` | `''` | Display label (defaults to text content) |
|
|
24
|
+
| `selected` | `boolean` | `false` | Whether option is selected |
|
|
25
|
+
| `disabled` | `boolean` | `false` | Whether option is disabled |
|
|
26
|
+
| `group` | `string` | `''` | Optional group name |
|
|
27
|
+
| `icon` | `string` | `''` | Optional icon/emoji |
|
|
28
|
+
|
|
29
|
+
## Events
|
|
30
|
+
|
|
31
|
+
### option-select
|
|
32
|
+
Fired when option is clicked or selected via keyboard.
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
interface OptionSelectEvent {
|
|
36
|
+
detail: {
|
|
37
|
+
value: string;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Examples
|
|
43
|
+
|
|
44
|
+
### In Select Component
|
|
45
|
+
```html
|
|
46
|
+
<schmancy-select placeholder="Choose country">
|
|
47
|
+
<schmancy-option value="us" icon="🇺🇸">United States</schmancy-option>
|
|
48
|
+
<schmancy-option value="uk" icon="🇬🇧">United Kingdom</schmancy-option>
|
|
49
|
+
<schmancy-option value="ca" icon="🇨🇦">Canada</schmancy-option>
|
|
50
|
+
<schmancy-option value="au" icon="🇦🇺">Australia</schmancy-option>
|
|
51
|
+
</schmancy-select>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Grouped Options
|
|
55
|
+
```html
|
|
56
|
+
<schmancy-select>
|
|
57
|
+
<!-- North America -->
|
|
58
|
+
<schmancy-option value="us" group="North America">United States</schmancy-option>
|
|
59
|
+
<schmancy-option value="ca" group="North America">Canada</schmancy-option>
|
|
60
|
+
<schmancy-option value="mx" group="North America">Mexico</schmancy-option>
|
|
61
|
+
|
|
62
|
+
<!-- Europe -->
|
|
63
|
+
<schmancy-option value="uk" group="Europe">United Kingdom</schmancy-option>
|
|
64
|
+
<schmancy-option value="de" group="Europe">Germany</schmancy-option>
|
|
65
|
+
<schmancy-option value="fr" group="Europe">France</schmancy-option>
|
|
66
|
+
</schmancy-select>
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### With Status Indicators
|
|
70
|
+
```html
|
|
71
|
+
<schmancy-autocomplete>
|
|
72
|
+
<schmancy-option value="active" icon="🟢">Active</schmancy-option>
|
|
73
|
+
<schmancy-option value="pending" icon="🟡">Pending</schmancy-option>
|
|
74
|
+
<schmancy-option value="inactive" icon="🔴">Inactive</schmancy-option>
|
|
75
|
+
<schmancy-option value="archived" icon="📦" disabled>Archived</schmancy-option>
|
|
76
|
+
</schmancy-autocomplete>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Dynamic Options
|
|
80
|
+
```html
|
|
81
|
+
${users.map(user => html`
|
|
82
|
+
<schmancy-option
|
|
83
|
+
value="${user.id}"
|
|
84
|
+
label="${user.name}"
|
|
85
|
+
?disabled="${!user.active}"
|
|
86
|
+
>
|
|
87
|
+
<span class="flex items-center gap-2">
|
|
88
|
+
<schmancy-avatar size="xs" name="${user.name}"></schmancy-avatar>
|
|
89
|
+
<span>
|
|
90
|
+
<div>${user.name}</div>
|
|
91
|
+
<div class="text-xs opacity-70">${user.email}</div>
|
|
92
|
+
</span>
|
|
93
|
+
</span>
|
|
94
|
+
</schmancy-option>
|
|
95
|
+
`)}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Features
|
|
99
|
+
|
|
100
|
+
### Automatic Value Assignment
|
|
101
|
+
- If no value is provided, uses text content
|
|
102
|
+
- If no label is provided, uses text content or value
|
|
103
|
+
|
|
104
|
+
### Keyboard Navigation
|
|
105
|
+
- `Space` or `Enter` to select
|
|
106
|
+
- Full keyboard accessibility
|
|
107
|
+
|
|
108
|
+
### Visual States
|
|
109
|
+
- Hover highlighting
|
|
110
|
+
- Selected state with checkmark
|
|
111
|
+
- Disabled state with reduced opacity
|
|
112
|
+
- Focus ring for keyboard navigation
|
|
113
|
+
|
|
114
|
+
### Unique IDs
|
|
115
|
+
Automatically generates unique IDs for accessibility if not provided.
|
|
116
|
+
|
|
117
|
+
## Styling
|
|
118
|
+
|
|
119
|
+
The component uses semantic design tokens:
|
|
120
|
+
|
|
121
|
+
```css
|
|
122
|
+
/* Default state */
|
|
123
|
+
.hover:bg-surface-high
|
|
124
|
+
|
|
125
|
+
/* Selected state */
|
|
126
|
+
.bg-primary-container
|
|
127
|
+
.text-primary-onContainer
|
|
128
|
+
|
|
129
|
+
/* Custom styling */
|
|
130
|
+
schmancy-option {
|
|
131
|
+
--option-padding-y: 0.5rem;
|
|
132
|
+
--option-padding-x: 0.75rem;
|
|
133
|
+
--option-border-radius: 0.25rem;
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Accessibility
|
|
138
|
+
|
|
139
|
+
- `role="option"` for semantic meaning
|
|
140
|
+
- `aria-selected` state management
|
|
141
|
+
- `aria-disabled` for disabled options
|
|
142
|
+
- Keyboard event handling
|
|
143
|
+
- Focus management
|
|
144
|
+
|
|
145
|
+
## Integration
|
|
146
|
+
|
|
147
|
+
Options are designed to work seamlessly with:
|
|
148
|
+
- `schmancy-select` - Dropdown selection
|
|
149
|
+
- `schmancy-autocomplete` - Filtered selection
|
|
150
|
+
- Custom dropdown components
|
|
151
|
+
|
|
152
|
+
## Best Practices
|
|
153
|
+
|
|
154
|
+
1. **Clear Values**: Use meaningful, unique values
|
|
155
|
+
2. **Icons**: Use icons to improve scannability
|
|
156
|
+
3. **Groups**: Group related options together
|
|
157
|
+
4. **Labels**: Provide clear, concise labels
|
|
158
|
+
5. **Disabled State**: Clearly indicate why options are disabled
|
|
159
|
+
|
|
160
|
+
## Related Components
|
|
161
|
+
|
|
162
|
+
- [Select](./select.md) - Dropdown selector
|
|
163
|
+
- [Autocomplete](./autocomplete.md) - Searchable selector
|
|
164
|
+
- [List](./list.md) - Similar list item pattern
|
|
165
|
+
- [Menu](./menu.md) - Menu items
|
|
166
|
+
|
|
167
|
+
## Use Cases
|
|
168
|
+
|
|
169
|
+
1. **Form Selects**: Country, state, category selection
|
|
170
|
+
2. **Settings**: Preference options
|
|
171
|
+
3. **Filters**: Data filtering options
|
|
172
|
+
4. **Status Selection**: Workflow states
|
|
173
|
+
5. **User Selection**: Team member pickers
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# Slider Component
|
|
2
|
+
|
|
3
|
+
A smooth, touch-friendly carousel component for displaying content in slides with navigation controls and indicators.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!-- Basic image slider -->
|
|
9
|
+
<schmancy-slider>
|
|
10
|
+
<schmancy-slide type="image" src="/image1.jpg" alt="Slide 1"></schmancy-slide>
|
|
11
|
+
<schmancy-slide type="image" src="/image2.jpg" alt="Slide 2"></schmancy-slide>
|
|
12
|
+
<schmancy-slide type="image" src="/image3.jpg" alt="Slide 3"></schmancy-slide>
|
|
13
|
+
</schmancy-slider>
|
|
14
|
+
|
|
15
|
+
<!-- Content slider -->
|
|
16
|
+
<schmancy-slider showArrows>
|
|
17
|
+
<schmancy-slide>
|
|
18
|
+
<schmancy-card>
|
|
19
|
+
<h3>Feature One</h3>
|
|
20
|
+
<p>Description of the first feature...</p>
|
|
21
|
+
</schmancy-card>
|
|
22
|
+
</schmancy-slide>
|
|
23
|
+
<schmancy-slide>
|
|
24
|
+
<schmancy-card>
|
|
25
|
+
<h3>Feature Two</h3>
|
|
26
|
+
<p>Description of the second feature...</p>
|
|
27
|
+
</schmancy-card>
|
|
28
|
+
</schmancy-slide>
|
|
29
|
+
</schmancy-slider>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Components
|
|
33
|
+
|
|
34
|
+
### schmancy-slider
|
|
35
|
+
The main container that handles slide navigation and controls.
|
|
36
|
+
|
|
37
|
+
**Properties:**
|
|
38
|
+
| Property | Type | Default | Description |
|
|
39
|
+
|----------|------|---------|-------------|
|
|
40
|
+
| `showArrows` | `boolean` | `true` | Show navigation arrows |
|
|
41
|
+
|
|
42
|
+
**Events:**
|
|
43
|
+
- `slide-changed`: Fired when active slide changes with `{ detail: { index: number } }`
|
|
44
|
+
|
|
45
|
+
### schmancy-slide
|
|
46
|
+
Individual slide component supporting various content types.
|
|
47
|
+
|
|
48
|
+
**Properties:**
|
|
49
|
+
| Property | Type | Default | Description |
|
|
50
|
+
|----------|------|---------|-------------|
|
|
51
|
+
| `type` | `'image' \| 'video' \| 'content'` | `'content'` | Slide content type |
|
|
52
|
+
| `src` | `string` | `''` | Source for image/video |
|
|
53
|
+
| `alt` | `string` | `''` | Alt text for images |
|
|
54
|
+
| `controls` | `boolean` | `true` | Show video controls |
|
|
55
|
+
| `autoplay` | `boolean` | `false` | Autoplay video |
|
|
56
|
+
| `loop` | `boolean` | `false` | Loop video |
|
|
57
|
+
| `muted` | `boolean` | `false` | Mute video |
|
|
58
|
+
| `fit` | `'cover' \| 'contain' \| 'fill' \| 'scale-down' \| 'none'` | `'cover'` | Object fit style |
|
|
59
|
+
|
|
60
|
+
## Examples
|
|
61
|
+
|
|
62
|
+
### Product Gallery
|
|
63
|
+
```html
|
|
64
|
+
<schmancy-slider class="h-96">
|
|
65
|
+
${products.map(product => html`
|
|
66
|
+
<schmancy-slide type="image"
|
|
67
|
+
src="${product.image}"
|
|
68
|
+
alt="${product.name}"
|
|
69
|
+
fit="contain"
|
|
70
|
+
></schmancy-slide>
|
|
71
|
+
`)}
|
|
72
|
+
</schmancy-slider>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### Testimonials Carousel
|
|
76
|
+
```html
|
|
77
|
+
<schmancy-slider showArrows>
|
|
78
|
+
${testimonials.map(testimonial => html`
|
|
79
|
+
<schmancy-slide>
|
|
80
|
+
<div class="p-8 text-center">
|
|
81
|
+
<schmancy-avatar
|
|
82
|
+
src="${testimonial.avatar}"
|
|
83
|
+
name="${testimonial.name}"
|
|
84
|
+
size="lg"
|
|
85
|
+
class="mx-auto mb-4"
|
|
86
|
+
></schmancy-avatar>
|
|
87
|
+
<blockquote class="text-lg italic mb-4">
|
|
88
|
+
"${testimonial.quote}"
|
|
89
|
+
</blockquote>
|
|
90
|
+
<cite class="text-sm">
|
|
91
|
+
- ${testimonial.name}, ${testimonial.role}
|
|
92
|
+
</cite>
|
|
93
|
+
</div>
|
|
94
|
+
</schmancy-slide>
|
|
95
|
+
`)}
|
|
96
|
+
</schmancy-slider>
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### Video Showcase
|
|
100
|
+
```html
|
|
101
|
+
<schmancy-slider>
|
|
102
|
+
<schmancy-slide
|
|
103
|
+
type="video"
|
|
104
|
+
src="/demo-video-1.mp4"
|
|
105
|
+
controls
|
|
106
|
+
muted
|
|
107
|
+
autoplay
|
|
108
|
+
></schmancy-slide>
|
|
109
|
+
<schmancy-slide
|
|
110
|
+
type="video"
|
|
111
|
+
src="/demo-video-2.mp4"
|
|
112
|
+
controls
|
|
113
|
+
></schmancy-slide>
|
|
114
|
+
</schmancy-slider>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Mixed Content Slider
|
|
118
|
+
```html
|
|
119
|
+
<schmancy-slider>
|
|
120
|
+
<!-- Welcome slide -->
|
|
121
|
+
<schmancy-slide>
|
|
122
|
+
<div class="flex items-center justify-center h-full p-8">
|
|
123
|
+
<div class="text-center">
|
|
124
|
+
<h1 class="text-4xl mb-4">Welcome</h1>
|
|
125
|
+
<p>Swipe to explore our features</p>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</schmancy-slide>
|
|
129
|
+
|
|
130
|
+
<!-- Feature image -->
|
|
131
|
+
<schmancy-slide type="image" src="/feature.jpg" alt="Main Feature"></schmancy-slide>
|
|
132
|
+
|
|
133
|
+
<!-- Video demo -->
|
|
134
|
+
<schmancy-slide type="video" src="/demo.mp4" controls></schmancy-slide>
|
|
135
|
+
|
|
136
|
+
<!-- Call to action -->
|
|
137
|
+
<schmancy-slide>
|
|
138
|
+
<div class="flex items-center justify-center h-full">
|
|
139
|
+
<schmancy-button variant="filled" size="lg">
|
|
140
|
+
Get Started
|
|
141
|
+
</schmancy-button>
|
|
142
|
+
</div>
|
|
143
|
+
</schmancy-slide>
|
|
144
|
+
</schmancy-slider>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Features
|
|
148
|
+
|
|
149
|
+
### Smooth Scrolling
|
|
150
|
+
- Native scroll behavior with CSS scroll-snap
|
|
151
|
+
- Touch and mouse support
|
|
152
|
+
- Keyboard navigation ready
|
|
153
|
+
|
|
154
|
+
### Navigation Controls
|
|
155
|
+
- Previous/Next arrow buttons
|
|
156
|
+
- Automatic disable at bounds
|
|
157
|
+
- Dot indicators showing current position
|
|
158
|
+
|
|
159
|
+
### Responsive Design
|
|
160
|
+
- Slides automatically fill container width
|
|
161
|
+
- Hidden scrollbars for clean appearance
|
|
162
|
+
- Works on all device sizes
|
|
163
|
+
|
|
164
|
+
### Performance
|
|
165
|
+
- Lazy loading for images
|
|
166
|
+
- Throttled scroll events
|
|
167
|
+
- Efficient slide position detection
|
|
168
|
+
|
|
169
|
+
## Styling
|
|
170
|
+
|
|
171
|
+
```css
|
|
172
|
+
/* Container styling */
|
|
173
|
+
schmancy-slider {
|
|
174
|
+
height: 400px; /* Set explicit height */
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Custom arrow positioning */
|
|
178
|
+
schmancy-slider::part(prev-button) {
|
|
179
|
+
left: 1rem;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
schmancy-slider::part(next-button) {
|
|
183
|
+
right: 1rem;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* Indicator customization */
|
|
187
|
+
schmancy-slider::part(indicators) {
|
|
188
|
+
bottom: 2rem;
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Navigation Methods
|
|
193
|
+
|
|
194
|
+
```javascript
|
|
195
|
+
// Get slider element
|
|
196
|
+
const slider = document.querySelector('schmancy-slider');
|
|
197
|
+
|
|
198
|
+
// Listen for slide changes
|
|
199
|
+
slider.addEventListener('slide-changed', (e) => {
|
|
200
|
+
console.log('Current slide:', e.detail.index);
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
// Programmatically navigate (if exposed)
|
|
204
|
+
// slider.goToSlide(2);
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
## Best Practices
|
|
208
|
+
|
|
209
|
+
1. **Height**: Always set explicit height on slider container
|
|
210
|
+
2. **Images**: Optimize images for web delivery
|
|
211
|
+
3. **Accessibility**: Provide meaningful alt text
|
|
212
|
+
4. **Performance**: Limit number of slides for better performance
|
|
213
|
+
5. **Touch**: Ensure adequate touch targets on mobile
|
|
214
|
+
|
|
215
|
+
## Related Components
|
|
216
|
+
|
|
217
|
+
- [Card](./card.md) - Content containers for slides
|
|
218
|
+
- [Button](./button.md) - Navigation controls
|
|
219
|
+
- [Surface](./surface.md) - Slide backgrounds
|
|
220
|
+
|
|
221
|
+
## Use Cases
|
|
222
|
+
|
|
223
|
+
1. **Product Galleries**: E-commerce product images
|
|
224
|
+
2. **Hero Sections**: Landing page carousels
|
|
225
|
+
3. **Testimonials**: Customer feedback showcase
|
|
226
|
+
4. **Tutorials**: Step-by-step guides
|
|
227
|
+
5. **Media Galleries**: Photo and video collections
|
package/dist/ai/steps.md
ADDED
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Steps Component
|
|
2
|
+
|
|
3
|
+
A powerful stepper component for guiding users through multi-step processes with progress tracking, navigation control, and flexible content management.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<!-- Basic steps -->
|
|
9
|
+
<schmancy-steps-container currentStep="1">
|
|
10
|
+
<schmancy-step position="1" title="Account Setup">
|
|
11
|
+
<schmancy-input label="Email" type="email"></schmancy-input>
|
|
12
|
+
<schmancy-input label="Password" type="password"></schmancy-input>
|
|
13
|
+
</schmancy-step>
|
|
14
|
+
|
|
15
|
+
<schmancy-step position="2" title="Profile Details">
|
|
16
|
+
<schmancy-input label="Full Name"></schmancy-input>
|
|
17
|
+
<schmancy-input label="Phone"></schmancy-input>
|
|
18
|
+
</schmancy-step>
|
|
19
|
+
|
|
20
|
+
<schmancy-step position="3" title="Review">
|
|
21
|
+
<p>Review your information and submit</p>
|
|
22
|
+
<schmancy-button variant="filled">Complete</schmancy-button>
|
|
23
|
+
</schmancy-step>
|
|
24
|
+
</schmancy-steps-container>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Components
|
|
28
|
+
|
|
29
|
+
### schmancy-steps-container
|
|
30
|
+
The parent container managing step state and navigation.
|
|
31
|
+
|
|
32
|
+
**Properties:**
|
|
33
|
+
| Property | Type | Default | Description |
|
|
34
|
+
|----------|------|---------|-------------|
|
|
35
|
+
| `currentStep` | `number` | `1` | Currently active step (1-based) |
|
|
36
|
+
|
|
37
|
+
### schmancy-step
|
|
38
|
+
Individual step component with content and metadata.
|
|
39
|
+
|
|
40
|
+
**Properties:**
|
|
41
|
+
| Property | Type | Default | Description |
|
|
42
|
+
|----------|------|---------|-------------|
|
|
43
|
+
| `position` | `number` | `1` | Step position (1-based) |
|
|
44
|
+
| `title` | `string` | `''` | Step title |
|
|
45
|
+
| `description` | `string` | `''` | Optional step description |
|
|
46
|
+
| `completed` | `boolean` | `false` | Explicitly mark as complete |
|
|
47
|
+
| `lockBack` | `boolean` | `false` | Prevent navigation to previous steps |
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
|
|
51
|
+
### Checkout Process
|
|
52
|
+
```html
|
|
53
|
+
<schmancy-steps-container currentStep="2">
|
|
54
|
+
<schmancy-step position="1" title="Cart" description="Review your items">
|
|
55
|
+
<schmancy-list>
|
|
56
|
+
${cartItems.map(item => html`
|
|
57
|
+
<schmancy-list-item>
|
|
58
|
+
${item.name} - $${item.price}
|
|
59
|
+
</schmancy-list-item>
|
|
60
|
+
`)}
|
|
61
|
+
</schmancy-list>
|
|
62
|
+
</schmancy-step>
|
|
63
|
+
|
|
64
|
+
<schmancy-step position="2" title="Shipping" description="Enter delivery address">
|
|
65
|
+
<schmancy-form>
|
|
66
|
+
<schmancy-input label="Street Address"></schmancy-input>
|
|
67
|
+
<schmancy-input label="City"></schmancy-input>
|
|
68
|
+
<schmancy-select label="State">
|
|
69
|
+
<!-- State options -->
|
|
70
|
+
</schmancy-select>
|
|
71
|
+
<schmancy-input label="ZIP Code"></schmancy-input>
|
|
72
|
+
</schmancy-form>
|
|
73
|
+
</schmancy-step>
|
|
74
|
+
|
|
75
|
+
<schmancy-step position="3" title="Payment" description="Payment information">
|
|
76
|
+
<schmancy-payment-card-form></schmancy-payment-card-form>
|
|
77
|
+
</schmancy-step>
|
|
78
|
+
|
|
79
|
+
<schmancy-step position="4" title="Confirm" description="Review and place order">
|
|
80
|
+
<div class="summary">
|
|
81
|
+
<!-- Order summary -->
|
|
82
|
+
</div>
|
|
83
|
+
<schmancy-button variant="filled" @click="${placeOrder}">
|
|
84
|
+
Place Order
|
|
85
|
+
</schmancy-button>
|
|
86
|
+
</schmancy-step>
|
|
87
|
+
</schmancy-steps-container>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Onboarding Flow
|
|
91
|
+
```html
|
|
92
|
+
<schmancy-steps-container>
|
|
93
|
+
<schmancy-step position="1" title="Welcome" completed>
|
|
94
|
+
<div class="text-center p-8">
|
|
95
|
+
<h2>Welcome to Our Platform!</h2>
|
|
96
|
+
<p>Let's get you set up in just a few steps.</p>
|
|
97
|
+
<schmancy-button @click="${nextStep}">Get Started</schmancy-button>
|
|
98
|
+
</div>
|
|
99
|
+
</schmancy-step>
|
|
100
|
+
|
|
101
|
+
<schmancy-step position="2" title="Connect Accounts" lockBack>
|
|
102
|
+
<p>Connect your social accounts for better integration:</p>
|
|
103
|
+
<div class="space-y-2">
|
|
104
|
+
<schmancy-button variant="outlined" width="full">
|
|
105
|
+
<schmancy-icon slot="start">facebook</schmancy-icon>
|
|
106
|
+
Connect Facebook
|
|
107
|
+
</schmancy-button>
|
|
108
|
+
<schmancy-button variant="outlined" width="full">
|
|
109
|
+
<schmancy-icon slot="start">twitter</schmancy-icon>
|
|
110
|
+
Connect Twitter
|
|
111
|
+
</schmancy-button>
|
|
112
|
+
</div>
|
|
113
|
+
</schmancy-step>
|
|
114
|
+
|
|
115
|
+
<schmancy-step position="3" title="Preferences">
|
|
116
|
+
<h3>Customize your experience:</h3>
|
|
117
|
+
<schmancy-checkbox label="Email notifications"></schmancy-checkbox>
|
|
118
|
+
<schmancy-checkbox label="Weekly digest"></schmancy-checkbox>
|
|
119
|
+
<schmancy-checkbox label="Product updates"></schmancy-checkbox>
|
|
120
|
+
</schmancy-step>
|
|
121
|
+
</schmancy-steps-container>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Form Wizard
|
|
125
|
+
```html
|
|
126
|
+
<schmancy-steps-container currentStep="1">
|
|
127
|
+
<schmancy-step position="1" title="Basic Info">
|
|
128
|
+
<schmancy-form>
|
|
129
|
+
<schmancy-input label="Company Name" required></schmancy-input>
|
|
130
|
+
<schmancy-select label="Industry" required>
|
|
131
|
+
<schmancy-option value="tech">Technology</schmancy-option>
|
|
132
|
+
<schmancy-option value="finance">Finance</schmancy-option>
|
|
133
|
+
<schmancy-option value="healthcare">Healthcare</schmancy-option>
|
|
134
|
+
</schmancy-select>
|
|
135
|
+
<schmancy-textarea label="Description"></schmancy-textarea>
|
|
136
|
+
</schmancy-form>
|
|
137
|
+
</schmancy-step>
|
|
138
|
+
|
|
139
|
+
<schmancy-step position="2" title="Contact Details">
|
|
140
|
+
<schmancy-form>
|
|
141
|
+
<schmancy-input label="Contact Name"></schmancy-input>
|
|
142
|
+
<schmancy-input label="Email" type="email"></schmancy-input>
|
|
143
|
+
<schmancy-input label="Phone" type="tel"></schmancy-input>
|
|
144
|
+
</schmancy-form>
|
|
145
|
+
</schmancy-step>
|
|
146
|
+
|
|
147
|
+
<schmancy-step position="3" title="Additional Info">
|
|
148
|
+
<schmancy-form>
|
|
149
|
+
<schmancy-date-range
|
|
150
|
+
.dateFrom="${{ label: 'Founded', value: '' }}"
|
|
151
|
+
.dateTo="${{ label: 'Current', value: '' }}"
|
|
152
|
+
></schmancy-date-range>
|
|
153
|
+
<schmancy-input label="Number of Employees" type="number"></schmancy-input>
|
|
154
|
+
</schmancy-form>
|
|
155
|
+
</schmancy-step>
|
|
156
|
+
</schmancy-steps-container>
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Features
|
|
160
|
+
|
|
161
|
+
### Visual States
|
|
162
|
+
- **Complete**: Checkmark icon, can navigate back
|
|
163
|
+
- **Current**: Active indicator, expanded content
|
|
164
|
+
- **Upcoming**: Grayed out, not clickable
|
|
165
|
+
|
|
166
|
+
### Navigation Control
|
|
167
|
+
- Click completed steps to go back
|
|
168
|
+
- `lockBack` prevents backward navigation
|
|
169
|
+
- Automatic step expansion/collapse
|
|
170
|
+
|
|
171
|
+
### Flexible Layout
|
|
172
|
+
- Steps grow to show content when active
|
|
173
|
+
- Smooth transitions between steps
|
|
174
|
+
- Responsive design
|
|
175
|
+
|
|
176
|
+
### Context System
|
|
177
|
+
Uses Lit Context API for state management between container and steps.
|
|
178
|
+
|
|
179
|
+
## Styling
|
|
180
|
+
|
|
181
|
+
```css
|
|
182
|
+
/* Custom step styling */
|
|
183
|
+
schmancy-step {
|
|
184
|
+
--step-connector-color: var(--schmancy-sys-color-tertiary-default);
|
|
185
|
+
--step-inactive-color: #9CA3AF;
|
|
186
|
+
--step-icon-size: 1.25rem;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* Active step content spacing */
|
|
190
|
+
schmancy-step[position="2"] {
|
|
191
|
+
--step-content-padding: 2rem;
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Programmatic Control
|
|
196
|
+
|
|
197
|
+
```javascript
|
|
198
|
+
// Get container reference
|
|
199
|
+
const stepsContainer = document.querySelector('schmancy-steps-container');
|
|
200
|
+
|
|
201
|
+
// Change current step
|
|
202
|
+
stepsContainer.currentStep = 3;
|
|
203
|
+
|
|
204
|
+
// Listen for step changes
|
|
205
|
+
stepsContainer.addEventListener('step-change', (e) => {
|
|
206
|
+
console.log('Step changed to:', e.detail.step);
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Best Practices
|
|
211
|
+
|
|
212
|
+
1. **Clear Titles**: Use descriptive, action-oriented titles
|
|
213
|
+
2. **Progress Saving**: Save user progress between sessions
|
|
214
|
+
3. **Validation**: Validate before allowing step progression
|
|
215
|
+
4. **Mobile**: Ensure steps work well on small screens
|
|
216
|
+
5. **Accessibility**: Provide clear navigation cues
|
|
217
|
+
|
|
218
|
+
## Related Components
|
|
219
|
+
|
|
220
|
+
- [Form](./form.md) - Form integration
|
|
221
|
+
- [Button](./button.md) - Navigation controls
|
|
222
|
+
- [List](./list.md) - Step content lists
|
|
223
|
+
- [Typography](./typography.md) - Step labels
|
|
224
|
+
|
|
225
|
+
## Use Cases
|
|
226
|
+
|
|
227
|
+
1. **Checkout Flows**: E-commerce purchase process
|
|
228
|
+
2. **Onboarding**: New user setup
|
|
229
|
+
3. **Form Wizards**: Complex multi-page forms
|
|
230
|
+
4. **Tutorials**: Step-by-step guides
|
|
231
|
+
5. **Configuration**: Multi-step setup processes
|