erp-pro-ui 0.2.5 → 0.2.7
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/dist/accordion.cjs +1 -1
- package/dist/accordion.mjs +1 -1
- package/dist/alert.cjs +1 -1
- package/dist/alert.mjs +1 -1
- package/dist/animated-content.cjs +1 -1
- package/dist/animated-content.mjs +1 -1
- package/dist/ascii-text.cjs +1 -1
- package/dist/ascii-text.mjs +1 -1
- package/dist/background-gradient-animation.cjs +1 -1
- package/dist/background-gradient-animation.mjs +1 -1
- package/dist/button-hover-border-gradient.cjs +1 -1
- package/dist/button-hover-border-gradient.mjs +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.mjs +1 -1
- package/dist/calendar.cjs +1 -1
- package/dist/calendar.mjs +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.mjs +1 -1
- package/dist/carousel.cjs +1 -1
- package/dist/carousel.mjs +1 -1
- package/dist/catalog.cjs +21 -0
- package/dist/catalog.cjs.map +1 -1
- package/dist/catalog.d.ts +37 -1
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.mjs +21 -0
- package/dist/catalog.mjs.map +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.mjs +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.mjs +1 -1
- package/dist/chip.cjs +1 -1
- package/dist/chip.mjs +1 -1
- package/dist/chroma-grid.cjs +1 -1
- package/dist/chroma-grid.mjs +1 -1
- package/dist/chunks/{drawer-DaoAXL-w.mjs → Drawer-BhTTQV8Q.mjs} +2 -2
- package/dist/chunks/{drawer-DaoAXL-w.mjs.map → Drawer-BhTTQV8Q.mjs.map} +1 -1
- package/dist/chunks/{drawer-D07dGN6R.cjs → Drawer-C_DLqrus.cjs} +2 -3
- package/dist/chunks/{drawer-D07dGN6R.cjs.map → Drawer-C_DLqrus.cjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-BtTOri-A.mjs → DropdownMenu-B18BI5l7.mjs} +2 -2
- package/dist/chunks/{DropdownMenu-BtTOri-A.mjs.map → DropdownMenu-B18BI5l7.mjs.map} +1 -1
- package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs → DropdownMenu-CEmlmX7P.cjs} +2 -3
- package/dist/chunks/{DropdownMenu-BDrNYO-D.cjs.map → DropdownMenu-CEmlmX7P.cjs.map} +1 -1
- package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs → HoverBorderGradient-CGKcviEd.mjs} +2 -2
- package/dist/chunks/{HoverBorderGradient-NbdXeLgC.mjs.map → HoverBorderGradient-CGKcviEd.mjs.map} +1 -1
- package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs → HoverBorderGradient-DTKasFZO.cjs} +2 -3
- package/dist/chunks/{HoverBorderGradient-9pfvBoHR.cjs.map → HoverBorderGradient-DTKasFZO.cjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs → SunToMoonButton-DIMK53fW.mjs} +2 -2
- package/dist/chunks/{SunToMoonButton-BkEfkElJ.mjs.map → SunToMoonButton-DIMK53fW.mjs.map} +1 -1
- package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs → SunToMoonButton-DUuIqw22.cjs} +2 -3
- package/dist/chunks/{SunToMoonButton-jS4BJD9q.cjs.map → SunToMoonButton-DUuIqw22.cjs.map} +1 -1
- package/dist/chunks/{Tooltip-DD30yj3A.cjs → Tooltip-1yPGRJ2Q.cjs} +10 -8
- package/dist/chunks/Tooltip-1yPGRJ2Q.cjs.map +1 -0
- package/dist/chunks/{Tooltip-DK3B879v.mjs → Tooltip-CEj-I4JO.mjs} +10 -7
- package/dist/chunks/Tooltip-CEj-I4JO.mjs.map +1 -0
- package/dist/chunks/{accordion-6zxJUYXr.mjs → accordion-Cf-Q3rec.mjs} +2 -2
- package/dist/chunks/{accordion-6zxJUYXr.mjs.map → accordion-Cf-Q3rec.mjs.map} +1 -1
- package/dist/chunks/{accordion-CmB6EidC.cjs → accordion-X4PNqWkW.cjs} +2 -3
- package/dist/chunks/{accordion-CmB6EidC.cjs.map → accordion-X4PNqWkW.cjs.map} +1 -1
- package/dist/chunks/{alert-C5KEeQqh.cjs → alert-BEMULPIi.cjs} +2 -3
- package/dist/chunks/{alert-C5KEeQqh.cjs.map → alert-BEMULPIi.cjs.map} +1 -1
- package/dist/chunks/{alert-XVmYJgds.mjs → alert-GImBqaCY.mjs} +2 -2
- package/dist/chunks/{alert-XVmYJgds.mjs.map → alert-GImBqaCY.mjs.map} +1 -1
- package/dist/chunks/{animated-content-bK6xp-vc.mjs → animated-content-Bp-Yt0_7.mjs} +1 -1
- package/dist/chunks/{animated-content-bK6xp-vc.mjs.map → animated-content-Bp-Yt0_7.mjs.map} +1 -1
- package/dist/chunks/{animated-content-CLsFnjgr.cjs → animated-content-tSHXDZq2.cjs} +1 -2
- package/dist/chunks/{animated-content-CLsFnjgr.cjs.map → animated-content-tSHXDZq2.cjs.map} +1 -1
- package/dist/chunks/{ascii-text-BFnpVur6.cjs → ascii-text-Ctua6ucZ.cjs} +2 -2
- package/dist/chunks/{ascii-text-BFnpVur6.cjs.map → ascii-text-Ctua6ucZ.cjs.map} +1 -1
- package/dist/chunks/{ascii-text-Bdy4C5rU.mjs → ascii-text-QyP7JU7g.mjs} +1 -1
- package/dist/chunks/{ascii-text-Bdy4C5rU.mjs.map → ascii-text-QyP7JU7g.mjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs → background-gradient-animation-CZUD_aq2.mjs} +2 -2
- package/dist/chunks/{background-gradient-animation-BR9wx6Z8.mjs.map → background-gradient-animation-CZUD_aq2.mjs.map} +1 -1
- package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs → background-gradient-animation-PvM0i88k.cjs} +2 -3
- package/dist/chunks/{background-gradient-animation-CiNdmA61.cjs.map → background-gradient-animation-PvM0i88k.cjs.map} +1 -1
- package/dist/chunks/{button-A6UTvrOu.mjs → button-CAU9ej3h.mjs} +3 -2
- package/dist/chunks/button-CAU9ej3h.mjs.map +1 -0
- package/dist/chunks/{button-C4MXPxsC.cjs → button-D2ZYmVda.cjs} +3 -3
- package/dist/chunks/button-D2ZYmVda.cjs.map +1 -0
- package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs → button-hover-border-gradient-D12Zjmd3.cjs} +2 -3
- package/dist/chunks/{button-hover-border-gradient-ssmwU5-U.cjs.map → button-hover-border-gradient-D12Zjmd3.cjs.map} +1 -1
- package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs → button-hover-border-gradient-VNEg4V0o.mjs} +2 -2
- package/dist/chunks/{button-hover-border-gradient-DnFvjNNw.mjs.map → button-hover-border-gradient-VNEg4V0o.mjs.map} +1 -1
- package/dist/chunks/calendar-BlUhssD4.mjs +203 -0
- package/dist/chunks/calendar-BlUhssD4.mjs.map +1 -0
- package/dist/chunks/calendar-CdKKhdx5.cjs +208 -0
- package/dist/chunks/calendar-CdKKhdx5.cjs.map +1 -0
- package/dist/chunks/{card-RrT68nvu.cjs → card-C_Qr7E6E.cjs} +1 -2
- package/dist/chunks/{card-RrT68nvu.cjs.map → card-C_Qr7E6E.cjs.map} +1 -1
- package/dist/chunks/{card-BId1_zHw.mjs → card-DYHDNCPK.mjs} +1 -1
- package/dist/chunks/{card-BId1_zHw.mjs.map → card-DYHDNCPK.mjs.map} +1 -1
- package/dist/chunks/{carousel-Cv0m1Pp5.cjs → carousel-DtOJEbEU.cjs} +4 -5
- package/dist/chunks/{carousel-Cv0m1Pp5.cjs.map → carousel-DtOJEbEU.cjs.map} +1 -1
- package/dist/chunks/{carousel-Dd4rp-jr.mjs → carousel-eeqWZZHE.mjs} +4 -4
- package/dist/chunks/{carousel-Dd4rp-jr.mjs.map → carousel-eeqWZZHE.mjs.map} +1 -1
- package/dist/chunks/chartStyles-2mTluDoo.cjs +108 -0
- package/dist/chunks/chartStyles-2mTluDoo.cjs.map +1 -0
- package/dist/chunks/chartStyles-DrHVYS5N.mjs +55 -0
- package/dist/chunks/chartStyles-DrHVYS5N.mjs.map +1 -0
- package/dist/chunks/{charts-BmIV-mJy.cjs → charts-DMu4zp8j.cjs} +43 -94
- package/dist/chunks/charts-DMu4zp8j.cjs.map +1 -0
- package/dist/chunks/{charts-DkVu0rFc.mjs → charts-DlskmT1J.mjs} +3 -54
- package/dist/chunks/charts-DlskmT1J.mjs.map +1 -0
- package/dist/chunks/{checkbox-3aB7XC9_.mjs → checkbox-D7EJQbqC.mjs} +1 -1
- package/dist/chunks/{checkbox-3aB7XC9_.mjs.map → checkbox-D7EJQbqC.mjs.map} +1 -1
- package/dist/chunks/{checkbox-D8ivRZ1x.cjs → checkbox-Lw2UqyNE.cjs} +1 -2
- package/dist/chunks/{checkbox-D8ivRZ1x.cjs.map → checkbox-Lw2UqyNE.cjs.map} +1 -1
- package/dist/chunks/{chip-B0YzBwkz.cjs → chip-D5i9VT9O.cjs} +4 -5
- package/dist/chunks/{chip-B0YzBwkz.cjs.map → chip-D5i9VT9O.cjs.map} +1 -1
- package/dist/chunks/{chip-CqcdcSs2.mjs → chip-DBlSQcqR.mjs} +4 -4
- package/dist/chunks/{chip-CqcdcSs2.mjs.map → chip-DBlSQcqR.mjs.map} +1 -1
- package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs → chroma-grid-CTDtdFUm.cjs} +2 -3
- package/dist/chunks/{chroma-grid-DcZ9f4Ui.cjs.map → chroma-grid-CTDtdFUm.cjs.map} +1 -1
- package/dist/chunks/{chroma-grid-opB2DBtS.mjs → chroma-grid-DuLTfGVP.mjs} +2 -2
- package/dist/chunks/{chroma-grid-opB2DBtS.mjs.map → chroma-grid-DuLTfGVP.mjs.map} +1 -1
- package/dist/chunks/{color-palette-pLh6En3n.cjs → color-palette-DQQ9UV0N.cjs} +2 -2
- package/dist/chunks/{color-palette-pLh6En3n.cjs.map → color-palette-DQQ9UV0N.cjs.map} +1 -1
- package/dist/chunks/{color-palette-C3lesasJ.mjs → color-palette-G1HUXWJP.mjs} +1 -1
- package/dist/chunks/{color-palette-C3lesasJ.mjs.map → color-palette-G1HUXWJP.mjs.map} +1 -1
- package/dist/chunks/{combobox-CtNrGmuR.cjs → combobox-CkNzH1YV.cjs} +6 -6
- package/dist/chunks/{combobox-CtNrGmuR.cjs.map → combobox-CkNzH1YV.cjs.map} +1 -1
- package/dist/chunks/{combobox-B6yk5U82.mjs → combobox-xNmFFHd6.mjs} +5 -5
- package/dist/chunks/{combobox-B6yk5U82.mjs.map → combobox-xNmFFHd6.mjs.map} +1 -1
- package/dist/chunks/dashboard-cards-Bww66_5K.cjs +6570 -0
- package/dist/chunks/dashboard-cards-Bww66_5K.cjs.map +1 -0
- package/dist/chunks/dashboard-cards-lnifLEyj.mjs +6385 -0
- package/dist/chunks/dashboard-cards-lnifLEyj.mjs.map +1 -0
- package/dist/chunks/{data-table-fAEuevPn.cjs → data-table-BCVbzkLo.cjs} +48 -37
- package/dist/chunks/data-table-BCVbzkLo.cjs.map +1 -0
- package/dist/chunks/{data-table-Dtf6lKpp.mjs → data-table-C25KHEn4.mjs} +47 -36
- package/dist/chunks/data-table-C25KHEn4.mjs.map +1 -0
- package/dist/chunks/date-picker--cqsgsIV.mjs +587 -0
- package/dist/chunks/date-picker--cqsgsIV.mjs.map +1 -0
- package/dist/chunks/date-picker-BJQdFyqr.cjs +592 -0
- package/dist/chunks/date-picker-BJQdFyqr.cjs.map +1 -0
- package/dist/chunks/{dialog-DSyq6MS3.mjs → dialog-BHIeG3Sg.mjs} +3 -3
- package/dist/chunks/{dialog-DSyq6MS3.mjs.map → dialog-BHIeG3Sg.mjs.map} +1 -1
- package/dist/chunks/{dialog-J2ZTSTpL.cjs → dialog-CLKU0cXX.cjs} +3 -4
- package/dist/chunks/{dialog-J2ZTSTpL.cjs.map → dialog-CLKU0cXX.cjs.map} +1 -1
- package/dist/chunks/draggable-grid-2L_eHKfp.cjs +245 -0
- package/dist/chunks/draggable-grid-2L_eHKfp.cjs.map +1 -0
- package/dist/chunks/draggable-grid-IuCMSOsE.mjs +240 -0
- package/dist/chunks/draggable-grid-IuCMSOsE.mjs.map +1 -0
- package/dist/chunks/event-calendar-CO2doGJW.mjs +1191 -0
- package/dist/chunks/event-calendar-CO2doGJW.mjs.map +1 -0
- package/dist/chunks/event-calendar-CvficOuV.cjs +1208 -0
- package/dist/chunks/event-calendar-CvficOuV.cjs.map +1 -0
- package/dist/chunks/{form-X6Vyaavl.cjs → form-DARN6jtX.cjs} +1 -2
- package/dist/chunks/{form-X6Vyaavl.cjs.map → form-DARN6jtX.cjs.map} +1 -1
- package/dist/chunks/{form-CtZ6U-_B.mjs → form-DNuFklNR.mjs} +1 -1
- package/dist/chunks/{form-CtZ6U-_B.mjs.map → form-DNuFklNR.mjs.map} +1 -1
- package/dist/chunks/{gradual-blur-C6NOnjTw.cjs → gradual-blur-BBLbpXD4.cjs} +2 -3
- package/dist/chunks/{gradual-blur-C6NOnjTw.cjs.map → gradual-blur-BBLbpXD4.cjs.map} +1 -1
- package/dist/chunks/{gradual-blur-DXfxpCdB.mjs → gradual-blur-BPx2MSWI.mjs} +2 -2
- package/dist/chunks/{gradual-blur-DXfxpCdB.mjs.map → gradual-blur-BPx2MSWI.mjs.map} +1 -1
- package/dist/chunks/{hover-card-C88rU-nW.mjs → hover-card-BkVHGXz6.mjs} +1 -1
- package/dist/chunks/{hover-card-C88rU-nW.mjs.map → hover-card-BkVHGXz6.mjs.map} +1 -1
- package/dist/chunks/{hover-card--rplmsA_.cjs → hover-card-DwZFtu8w.cjs} +1 -2
- package/dist/chunks/{hover-card--rplmsA_.cjs.map → hover-card-DwZFtu8w.cjs.map} +1 -1
- package/dist/chunks/{icons-CRanVZB1.cjs → icons-Ci8yEvvF.cjs} +1 -2
- package/dist/chunks/{icons-CRanVZB1.cjs.map → icons-Ci8yEvvF.cjs.map} +1 -1
- package/dist/chunks/{icons-bx3nrxNv.mjs → icons-CkVHNbbN.mjs} +1 -1
- package/dist/chunks/{icons-bx3nrxNv.mjs.map → icons-CkVHNbbN.mjs.map} +1 -1
- package/dist/chunks/{input-Bqo9Q5zF.mjs → input-B-XSdnfh.mjs} +4 -4
- package/dist/chunks/{input-Bqo9Q5zF.mjs.map → input-B-XSdnfh.mjs.map} +1 -1
- package/dist/chunks/{input-DkCPyWXi.cjs → input-EH7x0pQY.cjs} +4 -5
- package/dist/chunks/{input-DkCPyWXi.cjs.map → input-EH7x0pQY.cjs.map} +1 -1
- package/dist/chunks/{label-Drxg0cG2.mjs → label-CcsncrKQ.mjs} +1 -1
- package/dist/chunks/{label-Drxg0cG2.mjs.map → label-CcsncrKQ.mjs.map} +1 -1
- package/dist/chunks/{label-BKzqfAAq.cjs → label-Du-5H7wd.cjs} +1 -2
- package/dist/chunks/{label-BKzqfAAq.cjs.map → label-Du-5H7wd.cjs.map} +1 -1
- package/dist/chunks/{loading-Dtosnb4A.mjs → loading-2Lh_355V.mjs} +2 -2
- package/dist/chunks/{loading-Dtosnb4A.mjs.map → loading-2Lh_355V.mjs.map} +1 -1
- package/dist/chunks/{loading-BiM4mKh6.cjs → loading-DeGHTDO2.cjs} +2 -3
- package/dist/chunks/{loading-BiM4mKh6.cjs.map → loading-DeGHTDO2.cjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs → multi-select-combobox-BOdKmPj2.mjs} +4 -4
- package/dist/chunks/{multi-select-combobox-Do23ZfOQ.mjs.map → multi-select-combobox-BOdKmPj2.mjs.map} +1 -1
- package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs → multi-select-combobox-PPYRcaPg.cjs} +5 -5
- package/dist/chunks/{multi-select-combobox-C0DoDzxQ.cjs.map → multi-select-combobox-PPYRcaPg.cjs.map} +1 -1
- package/dist/chunks/{otp-input-JOysxKfD.mjs → otp-input--_itTXaL.mjs} +1 -1
- package/dist/chunks/{otp-input-JOysxKfD.mjs.map → otp-input--_itTXaL.mjs.map} +1 -1
- package/dist/chunks/{otp-input-CkhV-sGl.cjs → otp-input-Dgw_47Z7.cjs} +1 -2
- package/dist/chunks/{otp-input-CkhV-sGl.cjs.map → otp-input-Dgw_47Z7.cjs.map} +1 -1
- package/dist/chunks/{overlay-DNnZywyR.cjs → overlay-15EzdrIu.cjs} +1 -2
- package/dist/chunks/{overlay-DNnZywyR.cjs.map → overlay-15EzdrIu.cjs.map} +1 -1
- package/dist/chunks/{overlay-BzkUmjQ-.mjs → overlay-BMbhF-EC.mjs} +1 -1
- package/dist/chunks/{overlay-BzkUmjQ-.mjs.map → overlay-BMbhF-EC.mjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs → password-strength-meter-Be1c-dnK.cjs} +2 -3
- package/dist/chunks/{password-strength-meter-DCi_BP7e.cjs.map → password-strength-meter-Be1c-dnK.cjs.map} +1 -1
- package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs → password-strength-meter-Q1Qr-4tz.mjs} +2 -2
- package/dist/chunks/{password-strength-meter-BsvqQBAg.mjs.map → password-strength-meter-Q1Qr-4tz.mjs.map} +1 -1
- package/dist/chunks/{progress-bar-CYaBO_lS.cjs → progress-bar-BsnX079N.cjs} +3 -3
- package/dist/chunks/{progress-bar-CYaBO_lS.cjs.map → progress-bar-BsnX079N.cjs.map} +1 -1
- package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs → progress-bar-l5WpbpZf.mjs} +2 -2
- package/dist/chunks/{progress-bar-DQ5ZKk2Y.mjs.map → progress-bar-l5WpbpZf.mjs.map} +1 -1
- package/dist/chunks/{radio-CuiM_gDv.mjs → radio-B94_TGtz.mjs} +2 -2
- package/dist/chunks/{radio-CuiM_gDv.mjs.map → radio-B94_TGtz.mjs.map} +1 -1
- package/dist/chunks/{radio-zx9xEW_C.cjs → radio-W_NiS_dO.cjs} +2 -3
- package/dist/chunks/{radio-zx9xEW_C.cjs.map → radio-W_NiS_dO.cjs.map} +1 -1
- package/dist/chunks/{select-bZ9WqLOc.cjs → select-C5lkcrSB.cjs} +5 -6
- package/dist/chunks/{select-bZ9WqLOc.cjs.map → select-C5lkcrSB.cjs.map} +1 -1
- package/dist/chunks/{select-CUaSNR09.mjs → select-DnSSxddm.mjs} +5 -5
- package/dist/chunks/{select-CUaSNR09.mjs.map → select-DnSSxddm.mjs.map} +1 -1
- package/dist/chunks/{sidebar-Dhf_Arae.mjs → sidebar-C3Sx87wD.mjs} +10 -11
- package/dist/chunks/{sidebar-Dhf_Arae.mjs.map → sidebar-C3Sx87wD.mjs.map} +1 -1
- package/dist/chunks/{sidebar-3i4mGE6T.cjs → sidebar-DDRWkz5k.cjs} +10 -12
- package/dist/chunks/{sidebar-3i4mGE6T.cjs.map → sidebar-DDRWkz5k.cjs.map} +1 -1
- package/dist/chunks/{skeleton-DCBGLNAZ.cjs → skeleton-B2u9c1xJ.cjs} +2 -3
- package/dist/chunks/{skeleton-DCBGLNAZ.cjs.map → skeleton-B2u9c1xJ.cjs.map} +1 -1
- package/dist/chunks/{skeleton-nH1eAN96.mjs → skeleton-DVAlrOq2.mjs} +2 -2
- package/dist/chunks/{skeleton-nH1eAN96.mjs.map → skeleton-DVAlrOq2.mjs.map} +1 -1
- package/dist/chunks/{spinners-g6_Up5Rb.mjs → spinners-BQtIp2ov.mjs} +2 -2
- package/dist/chunks/{spinners-g6_Up5Rb.mjs.map → spinners-BQtIp2ov.mjs.map} +1 -1
- package/dist/chunks/{spinners-C9acUulz.cjs → spinners-BiebALzS.cjs} +2 -3
- package/dist/chunks/{spinners-C9acUulz.cjs.map → spinners-BiebALzS.cjs.map} +1 -1
- package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs → splash-cursor-8b7ORB2k.cjs} +2 -3
- package/dist/chunks/{splash-cursor-BqG7ClsJ.cjs.map → splash-cursor-8b7ORB2k.cjs.map} +1 -1
- package/dist/chunks/{splash-cursor-N4FdnkOa.mjs → splash-cursor-CeZffMed.mjs} +2 -2
- package/dist/chunks/{splash-cursor-N4FdnkOa.mjs.map → splash-cursor-CeZffMed.mjs.map} +1 -1
- package/dist/chunks/{spotlight-card-BmsqC7wm.cjs → spotlight-card-BQjp7hO1.cjs} +2 -3
- package/dist/chunks/{spotlight-card-BmsqC7wm.cjs.map → spotlight-card-BQjp7hO1.cjs.map} +1 -1
- package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs → spotlight-card-DiPtBCAK.mjs} +2 -2
- package/dist/chunks/{spotlight-card-D9Z3nTmb.mjs.map → spotlight-card-DiPtBCAK.mjs.map} +1 -1
- package/dist/chunks/{stepper-DepvEGfr.cjs → stepper-BuhQfQTH.cjs} +5 -6
- package/dist/chunks/{stepper-DepvEGfr.cjs.map → stepper-BuhQfQTH.cjs.map} +1 -1
- package/dist/chunks/{stepper-Jv5OS1nY.mjs → stepper-CVNcexxq.mjs} +5 -5
- package/dist/chunks/{stepper-Jv5OS1nY.mjs.map → stepper-CVNcexxq.mjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs → sun-to-moon-button-BzYGFhrg.cjs} +4 -5
- package/dist/chunks/{sun-to-moon-button-PwgTPsTW.cjs.map → sun-to-moon-button-BzYGFhrg.cjs.map} +1 -1
- package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs → sun-to-moon-button-CRXBMFZb.mjs} +4 -4
- package/dist/chunks/{sun-to-moon-button-BJtBEaa3.mjs.map → sun-to-moon-button-CRXBMFZb.mjs.map} +1 -1
- package/dist/chunks/{switch-X3l8xnle.cjs → switch-CEoT3MgX.cjs} +1 -2
- package/dist/chunks/{switch-X3l8xnle.cjs.map → switch-CEoT3MgX.cjs.map} +1 -1
- package/dist/chunks/{switch-iPsN1NS2.mjs → switch-DUnNe4xP.mjs} +1 -1
- package/dist/chunks/{switch-iPsN1NS2.mjs.map → switch-DUnNe4xP.mjs.map} +1 -1
- package/dist/chunks/{textarea-CGRl2hrM.cjs → textarea-Bschfj24.cjs} +2 -3
- package/dist/chunks/{textarea-CGRl2hrM.cjs.map → textarea-Bschfj24.cjs.map} +1 -1
- package/dist/chunks/{textarea-Bdo-Trvi.mjs → textarea-CfeKo5HA.mjs} +2 -2
- package/dist/chunks/{textarea-Bdo-Trvi.mjs.map → textarea-CfeKo5HA.mjs.map} +1 -1
- package/dist/chunks/{theme-koPrLKQv.mjs → theme-BXML6jHE.mjs} +1 -1
- package/dist/chunks/{theme-koPrLKQv.mjs.map → theme-BXML6jHE.mjs.map} +1 -1
- package/dist/chunks/{theme-D6B-FaoE.cjs → theme-BzTaXYZ8.cjs} +1 -2
- package/dist/chunks/{theme-D6B-FaoE.cjs.map → theme-BzTaXYZ8.cjs.map} +1 -1
- package/dist/chunks/{toast-BcBidy5n.mjs → toast-D1W0BvoH.mjs} +2 -2
- package/dist/chunks/{toast-BcBidy5n.mjs.map → toast-D1W0BvoH.mjs.map} +1 -1
- package/dist/chunks/{toast-DiFgv3IL.cjs → toast-DL8svc6q.cjs} +2 -3
- package/dist/chunks/{toast-DiFgv3IL.cjs.map → toast-DL8svc6q.cjs.map} +1 -1
- package/dist/chunks/{truncated-text-BIXqNfOL.cjs → truncated-text-D0t4atw5.cjs} +3 -3
- package/dist/chunks/{truncated-text-BIXqNfOL.cjs.map → truncated-text-D0t4atw5.cjs.map} +1 -1
- package/dist/chunks/{truncated-text-C9t9o9IA.mjs → truncated-text-DIkg-8Vo.mjs} +2 -2
- package/dist/chunks/{truncated-text-C9t9o9IA.mjs.map → truncated-text-DIkg-8Vo.mjs.map} +1 -1
- package/dist/chunks/{typography-LwwY_MOy.cjs → typography-C5fYwhp2.cjs} +3 -3
- package/dist/chunks/{typography-LwwY_MOy.cjs.map → typography-C5fYwhp2.cjs.map} +1 -1
- package/dist/chunks/{typography-Ct-jDJP3.mjs → typography-Czi7t5y4.mjs} +2 -2
- package/dist/chunks/{typography-Ct-jDJP3.mjs.map → typography-Czi7t5y4.mjs.map} +1 -1
- package/dist/chunks/{utils-LRbEQHYs.cjs → utils-CoA0q63n.cjs} +84 -4
- package/dist/chunks/utils-CoA0q63n.cjs.map +1 -0
- package/dist/chunks/{utils-7S0u48mU.mjs → utils-Dc7j29ec.mjs} +84 -4
- package/dist/chunks/utils-Dc7j29ec.mjs.map +1 -0
- package/dist/color-palette.cjs +1 -1
- package/dist/color-palette.mjs +1 -1
- package/dist/combobox.cjs +1 -1
- package/dist/combobox.mjs +1 -1
- package/dist/components/data-display/charts/chartPalette.d.ts +1 -1
- package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/AIFeatureAdoptionCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts +30 -0
- package/dist/components/data-display/dashboard-cards/AIInsightsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/AcquisitionChannelCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts +49 -0
- package/dist/components/data-display/dashboard-cards/BarBreakdownCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/CustomerLifecycleCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts +25 -0
- package/dist/components/data-display/dashboard-cards/DeviceSalesCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts +143 -0
- package/dist/components/data-display/dashboard-cards/EarningReportsTabsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts +43 -0
- package/dist/components/data-display/dashboard-cards/EarningsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/ExpensesCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts +78 -0
- package/dist/components/data-display/dashboard-cards/FinancialPLCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts +30 -0
- package/dist/components/data-display/dashboard-cards/IncomeExpenseCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts +44 -0
- package/dist/components/data-display/dashboard-cards/InventoryCards.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts +45 -0
- package/dist/components/data-display/dashboard-cards/PaymentSummaryCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts +26 -0
- package/dist/components/data-display/dashboard-cards/RevenueGrowthCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts +36 -0
- package/dist/components/data-display/dashboard-cards/SalesHeatmapCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/SalesOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/SeatUtilizationCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/ShipmentStatisticsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts +24 -0
- package/dist/components/data-display/dashboard-cards/StockAvailabilityCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts +23 -0
- package/dist/components/data-display/dashboard-cards/SubscriptionHealthCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts +25 -0
- package/dist/components/data-display/dashboard-cards/SupportTrackerCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/ToolUsageOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts +23 -0
- package/dist/components/data-display/dashboard-cards/TopPlansCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts +42 -0
- package/dist/components/data-display/dashboard-cards/TopSellingItemsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts +22 -0
- package/dist/components/data-display/dashboard-cards/TopToolsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts +18 -0
- package/dist/components/data-display/dashboard-cards/TopicsCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts +20 -0
- package/dist/components/data-display/dashboard-cards/VehicleConditionCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts +21 -0
- package/dist/components/data-display/dashboard-cards/VehiclesOverviewCard.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts +63 -0
- package/dist/components/data-display/dashboard-cards/_PLCardHeader.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts +33 -0
- package/dist/components/data-display/dashboard-cards/_PLCharts.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts +11 -0
- package/dist/components/data-display/dashboard-cards/_PLKpiStrip.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts +9 -0
- package/dist/components/data-display/dashboard-cards/_PLOverview.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts +8 -0
- package/dist/components/data-display/dashboard-cards/_TabTooltip.d.ts.map +1 -0
- package/dist/components/data-display/dashboard-cards/index.d.ts +57 -0
- package/dist/components/data-display/dashboard-cards/index.d.ts.map +1 -1
- package/dist/components/data-display/data-table/DataTable.d.ts.map +1 -1
- package/dist/components/data-display/data-table/DataTableControls.d.ts.map +1 -1
- package/dist/components/data-display/event-calendar/AddEventPanel.d.ts +11 -0
- package/dist/components/data-display/event-calendar/AddEventPanel.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/CalendarHeader.d.ts +13 -0
- package/dist/components/data-display/event-calendar/CalendarHeader.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts +13 -0
- package/dist/components/data-display/event-calendar/CalendarSidebar.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventCalendar.d.ts +3 -0
- package/dist/components/data-display/event-calendar/EventCalendar.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts +10 -0
- package/dist/components/data-display/event-calendar/EventDetailDrawer.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventFilterList.d.ts +9 -0
- package/dist/components/data-display/event-calendar/EventFilterList.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/EventPill.d.ts +10 -0
- package/dist/components/data-display/event-calendar/EventPill.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts +9 -0
- package/dist/components/data-display/event-calendar/MiniCalendarPicker.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/calendarUtils.d.ts +27 -0
- package/dist/components/data-display/event-calendar/calendarUtils.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/index.d.ts +4 -0
- package/dist/components/data-display/event-calendar/index.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/types.d.ts +52 -0
- package/dist/components/data-display/event-calendar/types.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/DayView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/DayView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/ListView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/ListView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/MonthView.d.ts +11 -0
- package/dist/components/data-display/event-calendar/views/MonthView.d.ts.map +1 -0
- package/dist/components/data-display/event-calendar/views/WeekView.d.ts +10 -0
- package/dist/components/data-display/event-calendar/views/WeekView.d.ts.map +1 -0
- package/dist/components/forms/button/Button.d.ts.map +1 -1
- package/dist/components/forms/calendar/Calendar.d.ts +1 -1
- package/dist/components/forms/calendar/Calendar.d.ts.map +1 -1
- package/dist/components/forms/calendar/types.d.ts +6 -0
- package/dist/components/forms/calendar/types.d.ts.map +1 -1
- package/dist/components/forms/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/components/layout/draggable-grid/DraggableGrid.d.ts +20 -0
- package/dist/components/layout/draggable-grid/DraggableGrid.d.ts.map +1 -0
- package/dist/components/layout/draggable-grid/index.d.ts +3 -0
- package/dist/components/layout/draggable-grid/index.d.ts.map +1 -0
- package/dist/components/navigation/sidebar/DashboardSidebarShell.d.ts.map +1 -1
- package/dist/components/overlays/tooltip/Tooltip.d.ts +3 -1
- package/dist/components/overlays/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/dashboard-cards.cjs +33 -0
- package/dist/dashboard-cards.d.ts +2 -0
- package/dist/dashboard-cards.mjs +2 -0
- package/dist/data-table.cjs +1 -1
- package/dist/data-table.mjs +1 -1
- package/dist/date-picker.cjs +1 -1
- package/dist/date-picker.mjs +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.mjs +1 -1
- package/dist/docs.cjs +44 -0
- package/dist/docs.cjs.map +1 -1
- package/dist/docs.d.ts.map +1 -1
- package/dist/docs.mjs +44 -0
- package/dist/docs.mjs.map +1 -1
- package/dist/draggable-grid.cjs +3 -0
- package/dist/draggable-grid.d.ts +2 -0
- package/dist/draggable-grid.mjs +2 -0
- package/dist/drawer.cjs +2 -2
- package/dist/drawer.mjs +1 -1
- package/dist/event-calendar.cjs +5 -0
- package/dist/event-calendar.d.ts +2 -0
- package/dist/event-calendar.mjs +2 -0
- package/dist/form.cjs +1 -1
- package/dist/form.mjs +1 -1
- package/dist/gradual-blur.cjs +1 -1
- package/dist/gradual-blur.mjs +1 -1
- package/dist/hover-border-gradient.cjs +1 -1
- package/dist/hover-border-gradient.mjs +1 -1
- package/dist/hover-card.cjs +1 -1
- package/dist/hover-card.mjs +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.mjs +1 -1
- package/dist/index.cjs +91 -332
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +57 -329
- package/dist/index.mjs.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.mjs +1 -1
- package/dist/label.cjs +1 -1
- package/dist/label.mjs +1 -1
- package/dist/loading.cjs +1 -1
- package/dist/loading.mjs +1 -1
- package/dist/multi-select-combobox.cjs +1 -1
- package/dist/multi-select-combobox.mjs +1 -1
- package/dist/otp-input.cjs +1 -1
- package/dist/otp-input.mjs +1 -1
- package/dist/password-strength-meter.cjs +1 -1
- package/dist/password-strength-meter.mjs +1 -1
- package/dist/progress-bar.cjs +1 -1
- package/dist/progress-bar.mjs +1 -1
- package/dist/radio.cjs +1 -1
- package/dist/radio.mjs +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.mjs +1 -1
- package/dist/sidebar.cjs +1 -1
- package/dist/sidebar.mjs +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.mjs +1 -1
- package/dist/spinners.cjs +1 -1
- package/dist/spinners.mjs +1 -1
- package/dist/splash-cursor.cjs +1 -1
- package/dist/splash-cursor.mjs +1 -1
- package/dist/spotlight-card.cjs +1 -1
- package/dist/spotlight-card.mjs +1 -1
- package/dist/stepper.cjs +1 -1
- package/dist/stepper.mjs +1 -1
- package/dist/sun-to-moon-button.cjs +2 -2
- package/dist/sun-to-moon-button.mjs +2 -2
- package/dist/switch.cjs +1 -1
- package/dist/switch.mjs +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.mjs +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.mjs +1 -1
- package/dist/toast.cjs +1 -1
- package/dist/toast.mjs +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.mjs +1 -1
- package/dist/truncated-text.cjs +1 -1
- package/dist/truncated-text.mjs +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.mjs +1 -1
- package/dist/utils.cjs +1 -1
- package/dist/utils.mjs +1 -1
- package/package.json +44 -11
- package/dist/chunks/Tooltip-DD30yj3A.cjs.map +0 -1
- package/dist/chunks/Tooltip-DK3B879v.mjs.map +0 -1
- package/dist/chunks/button-A6UTvrOu.mjs.map +0 -1
- package/dist/chunks/button-C4MXPxsC.cjs.map +0 -1
- package/dist/chunks/calendar-5XzPqKbE.mjs +0 -178
- package/dist/chunks/calendar-5XzPqKbE.mjs.map +0 -1
- package/dist/chunks/calendar-CQJgQ5H_.cjs +0 -184
- package/dist/chunks/calendar-CQJgQ5H_.cjs.map +0 -1
- package/dist/chunks/charts-BmIV-mJy.cjs.map +0 -1
- package/dist/chunks/charts-DkVu0rFc.mjs.map +0 -1
- package/dist/chunks/data-table-Dtf6lKpp.mjs.map +0 -1
- package/dist/chunks/data-table-fAEuevPn.cjs.map +0 -1
- package/dist/chunks/date-picker-BmQ0rgwH.mjs +0 -228
- package/dist/chunks/date-picker-BmQ0rgwH.mjs.map +0 -1
- package/dist/chunks/date-picker-qpUZMtZC.cjs +0 -234
- package/dist/chunks/date-picker-qpUZMtZC.cjs.map +0 -1
- package/dist/chunks/utils-7S0u48mU.mjs.map +0 -1
- package/dist/chunks/utils-LRbEQHYs.cjs.map +0 -1
- /package/dist/chunks/{chunk-B_GkZjkl.cjs → chunk-D6vf50IK.cjs} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as mergeClassNames } from "./utils-
|
|
1
|
+
import { n as mergeClassNames } from "./utils-Dc7j29ec.mjs";
|
|
2
2
|
import { forwardRef } from "react";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
//#region src/components/data-display/skeleton/Skeleton.tsx
|
|
@@ -365,4 +365,4 @@ SkeletonListItem.displayName = "SkeletonListItem";
|
|
|
365
365
|
//#endregion
|
|
366
366
|
export { SkeletonImage as a, SkeletonTableRow as c, SkeletonCard as i, SkeletonText as l, SkeletonAvatar as n, SkeletonListItem as o, SkeletonButton as r, SkeletonMetricCard as s, Skeleton as t };
|
|
367
367
|
|
|
368
|
-
//# sourceMappingURL=skeleton-
|
|
368
|
+
//# sourceMappingURL=skeleton-DVAlrOq2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton-nH1eAN96.mjs","names":[],"sources":["../../src/components/data-display/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\nexport type SkeletonTone =\n | \"default\"\n | \"subtle\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\nexport type SkeletonRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SkeletonSpeed = \"slow\" | \"normal\" | \"fast\";\n\ntype SkeletonCssVariables = CSSProperties &\n Record<\n \"--ui-skeleton-base\" | \"--ui-skeleton-highlight\" | \"--ui-skeleton-duration\",\n string\n >;\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius override */\n borderRadius?: number | string;\n /** Semantic radius preset */\n radius?: SkeletonRadius;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n /** Animation speed preset or custom duration */\n speed?: SkeletonSpeed | number | string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"variant\" | \"width\" | \"height\"\n> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nexport interface SkeletonMetricCardProps {\n /** Whether to show a compact trend badge */\n showTrend?: boolean;\n /** Whether to render spark bars */\n showChart?: boolean;\n /** Number of spark bars */\n chartBars?: number;\n /** Width for the value block */\n valueWidth?: number | string;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"ui-skeleton-pulse\",\n wave: \"ui-skeleton-wave\",\n none: \"\",\n};\n\nconst radiusStyles: Record<SkeletonRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst variantStyles: Record<SkeletonVariant, SkeletonRadius> = {\n text: \"sm\",\n circular: \"full\",\n rectangular: \"none\",\n rounded: \"md\",\n};\n\nconst speedStyles: Record<SkeletonSpeed, string> = {\n slow: \"2.4s\",\n normal: \"1.6s\",\n fast: \"1.05s\",\n};\n\nconst toneStyles: Record<SkeletonTone, { base: string; highlight: string }> = {\n default: {\n base: \"var(--ds-color-bg-ds-surface-3)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 54%, var(--ds-color-bg-canvas))\",\n },\n subtle: {\n base: \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 72%, var(--ds-color-bg-canvas))\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 42%, var(--ds-color-bg-canvas))\",\n },\n accent: {\n base: \"var(--ds-color-accent-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-accent-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n success: {\n base: \"var(--ds-color-success-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-success-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n warning: {\n base: \"var(--ds-color-warning-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-warning-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n danger: {\n base: \"var(--ds-color-danger-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-danger-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n info: {\n base: \"var(--ds-color-info-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-info-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n};\n\nfunction resolveDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction resolveDuration(value: SkeletonProps[\"speed\"]): string {\n if (typeof value === \"number\") {\n return `${value}ms`;\n }\n\n if (typeof value === \"string\" && value in speedStyles) {\n return speedStyles[value as SkeletonSpeed];\n }\n\n return value ?? speedStyles.normal;\n}\n\nfunction getDimensionStyle({\n variant,\n width,\n height,\n borderRadius,\n}: {\n variant: SkeletonVariant;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n}): CSSProperties {\n const nextStyle: CSSProperties = {};\n const resolvedWidth = resolveDimension(width);\n const resolvedHeight = resolveDimension(height);\n const resolvedBorderRadius = resolveDimension(borderRadius);\n\n if (resolvedWidth) {\n nextStyle.width = resolvedWidth;\n } else if (variant === \"text\") {\n nextStyle.width = \"100%\";\n }\n\n if (resolvedHeight) {\n nextStyle.height = resolvedHeight;\n } else if (variant === \"text\") {\n nextStyle.height = \"1em\";\n } else if (variant === \"circular\") {\n nextStyle.width = nextStyle.width || \"40px\";\n nextStyle.height = nextStyle.width;\n }\n\n if (resolvedBorderRadius) {\n nextStyle.borderRadius = resolvedBorderRadius;\n }\n\n return nextStyle;\n}\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n radius,\n tone = \"default\",\n speed = \"normal\",\n className,\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n style,\n [\"aria-hidden\"]: ariaHidden,\n ...rest\n },\n ref,\n ) => {\n const toneStyle = toneStyles[tone];\n const sharedStyle: SkeletonCssVariables = {\n \"--ui-skeleton-base\": toneStyle.base,\n \"--ui-skeleton-highlight\": toneStyle.highlight,\n \"--ui-skeleton-duration\": resolveDuration(speed),\n ...style,\n };\n const effectiveRadius = radius ?? variantStyles[variant];\n const sharedClassName = mergeClassNames(\n \"relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0\",\n radiusStyles[effectiveRadius],\n animationStyles[animation],\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"flex flex-col\", className)}\n style={{\n ...style,\n gap: resolveDimension(lineGap),\n width: resolveDimension(width) ?? style?.width,\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={sharedClassName}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({\n variant,\n width:\n index === lines - 1 ? lastLineWidth : (width ?? \"100%\"),\n height,\n borderRadius,\n }),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(sharedClassName, className)}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({ variant, width, height, borderRadius }),\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref,\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className,\n animation = \"pulse\",\n tone = \"default\",\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-1 shadow-sm\",\n className,\n )}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n tone={tone}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} tone={tone} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n tone={tone}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n tone={tone}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n tone={tone}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Metric Card Component\nconst SkeletonMetricCard = forwardRef<HTMLDivElement, SkeletonMetricCardProps>(\n (\n {\n showTrend = true,\n showChart = true,\n chartBars = 7,\n valueWidth = \"52%\",\n className,\n animation = \"wave\",\n tone = \"accent\",\n },\n ref,\n ) => {\n const chartHeights = [36, 52, 46, 72, 64, 84, 68, 78];\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"rounded-md border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1 space-y-3\">\n <Skeleton\n width=\"34%\"\n height={11}\n animation={animation}\n tone=\"subtle\"\n />\n <Skeleton\n width={valueWidth}\n height={28}\n animation={animation}\n tone={tone}\n radius=\"md\"\n />\n <Skeleton\n width=\"44%\"\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n\n {showTrend ? (\n <div className=\"rounded-full border border-ds-border-2 bg-ds-surface-1 px-3 py-2\">\n <Skeleton\n width={54}\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n ) : null}\n </div>\n\n {showChart ? (\n <div className=\"mt-5 flex h-20 items-end gap-2\">\n {Array.from({ length: chartBars }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width=\"100%\"\n height={`${chartHeights[index % chartHeights.length]}%`}\n animation={animation}\n tone={tone}\n className=\"flex-1\"\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSkeletonMetricCard.displayName = \"SkeletonMetricCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n const sharedWidth =\n columns <= 1 ? \"100%\" : `${Math.floor(72 / (columns - 1))}%`;\n\n return (\n <div ref={ref} className={`flex items-center gap-4 py-3 ${className}`}>\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"28%\" : sharedWidth}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={`flex items-center gap-3 py-3 ${className}`}>\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n },\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonMetricCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skeleton-DVAlrOq2.mjs","names":[],"sources":["../../src/components/data-display/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from \"react\";\nimport type { ComponentPropsWithoutRef, CSSProperties } from \"react\";\n\nimport { mergeClassNames } from \"../../../utils\";\n\nexport type SkeletonVariant = \"text\" | \"circular\" | \"rectangular\" | \"rounded\";\nexport type SkeletonAnimation = \"pulse\" | \"wave\" | \"none\";\nexport type SkeletonTone =\n | \"default\"\n | \"subtle\"\n | \"accent\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"info\";\nexport type SkeletonRadius = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SkeletonSpeed = \"slow\" | \"normal\" | \"fast\";\n\ntype SkeletonCssVariables = CSSProperties &\n Record<\n \"--ui-skeleton-base\" | \"--ui-skeleton-highlight\" | \"--ui-skeleton-duration\",\n string\n >;\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"children\"\n> {\n /** The variant shape of the skeleton */\n variant?: SkeletonVariant;\n /** The animation type */\n animation?: SkeletonAnimation;\n /** Width of the skeleton */\n width?: number | string;\n /** Height of the skeleton */\n height?: number | string;\n /** Border radius override */\n borderRadius?: number | string;\n /** Semantic radius preset */\n radius?: SkeletonRadius;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n /** Animation speed preset or custom duration */\n speed?: SkeletonSpeed | number | string;\n /** Number of lines for text variant */\n lines?: number;\n /** Gap between lines */\n lineGap?: number | string;\n /** Whether the last line should be shorter */\n lastLineWidth?: number | string;\n}\n\nexport interface SkeletonTextProps extends Omit<SkeletonProps, \"variant\"> {\n /** Number of text lines */\n lines?: number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"variant\" | \"width\" | \"height\"\n> {\n /** Size of the avatar */\n size?: number | string;\n}\n\nexport interface SkeletonCardProps {\n /** Whether to show image placeholder */\n showImage?: boolean;\n /** Image height */\n imageHeight?: number | string;\n /** Number of text lines */\n lines?: number;\n /** Whether to show avatar */\n showAvatar?: boolean;\n /** Whether to show action buttons */\n showActions?: boolean;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nexport interface SkeletonMetricCardProps {\n /** Whether to show a compact trend badge */\n showTrend?: boolean;\n /** Whether to render spark bars */\n showChart?: boolean;\n /** Number of spark bars */\n chartBars?: number;\n /** Width for the value block */\n valueWidth?: number | string;\n /** Custom className */\n className?: string;\n /** Animation type */\n animation?: SkeletonAnimation;\n /** Semantic tone preset */\n tone?: SkeletonTone;\n}\n\nconst animationStyles: Record<SkeletonAnimation, string> = {\n pulse: \"ui-skeleton-pulse\",\n wave: \"ui-skeleton-wave\",\n none: \"\",\n};\n\nconst radiusStyles: Record<SkeletonRadius, string> = {\n none: \"rounded-none\",\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n full: \"rounded-full\",\n};\n\nconst variantStyles: Record<SkeletonVariant, SkeletonRadius> = {\n text: \"sm\",\n circular: \"full\",\n rectangular: \"none\",\n rounded: \"md\",\n};\n\nconst speedStyles: Record<SkeletonSpeed, string> = {\n slow: \"2.4s\",\n normal: \"1.6s\",\n fast: \"1.05s\",\n};\n\nconst toneStyles: Record<SkeletonTone, { base: string; highlight: string }> = {\n default: {\n base: \"var(--ds-color-bg-ds-surface-3)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 54%, var(--ds-color-bg-canvas))\",\n },\n subtle: {\n base: \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 72%, var(--ds-color-bg-canvas))\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-bg-ds-surface-3) 42%, var(--ds-color-bg-canvas))\",\n },\n accent: {\n base: \"var(--ds-color-accent-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-accent-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n success: {\n base: \"var(--ds-color-success-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-success-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n warning: {\n base: \"var(--ds-color-warning-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-warning-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n danger: {\n base: \"var(--ds-color-danger-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-danger-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n info: {\n base: \"var(--ds-color-info-subtle)\",\n highlight:\n \"color-mix(in oklch, var(--ds-color-info-subtle) 48%, var(--ds-color-bg-canvas))\",\n },\n};\n\nfunction resolveDimension(value?: number | string): string | undefined {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction resolveDuration(value: SkeletonProps[\"speed\"]): string {\n if (typeof value === \"number\") {\n return `${value}ms`;\n }\n\n if (typeof value === \"string\" && value in speedStyles) {\n return speedStyles[value as SkeletonSpeed];\n }\n\n return value ?? speedStyles.normal;\n}\n\nfunction getDimensionStyle({\n variant,\n width,\n height,\n borderRadius,\n}: {\n variant: SkeletonVariant;\n width?: number | string;\n height?: number | string;\n borderRadius?: number | string;\n}): CSSProperties {\n const nextStyle: CSSProperties = {};\n const resolvedWidth = resolveDimension(width);\n const resolvedHeight = resolveDimension(height);\n const resolvedBorderRadius = resolveDimension(borderRadius);\n\n if (resolvedWidth) {\n nextStyle.width = resolvedWidth;\n } else if (variant === \"text\") {\n nextStyle.width = \"100%\";\n }\n\n if (resolvedHeight) {\n nextStyle.height = resolvedHeight;\n } else if (variant === \"text\") {\n nextStyle.height = \"1em\";\n } else if (variant === \"circular\") {\n nextStyle.width = nextStyle.width || \"40px\";\n nextStyle.height = nextStyle.width;\n }\n\n if (resolvedBorderRadius) {\n nextStyle.borderRadius = resolvedBorderRadius;\n }\n\n return nextStyle;\n}\n\n// Base Skeleton Component\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = \"text\",\n animation = \"pulse\",\n width,\n height,\n borderRadius,\n radius,\n tone = \"default\",\n speed = \"normal\",\n className,\n lines = 1,\n lineGap = 8,\n lastLineWidth = \"80%\",\n style,\n [\"aria-hidden\"]: ariaHidden,\n ...rest\n },\n ref,\n ) => {\n const toneStyle = toneStyles[tone];\n const sharedStyle: SkeletonCssVariables = {\n \"--ui-skeleton-base\": toneStyle.base,\n \"--ui-skeleton-highlight\": toneStyle.highlight,\n \"--ui-skeleton-duration\": resolveDuration(speed),\n ...style,\n };\n const effectiveRadius = radius ?? variantStyles[variant];\n const sharedClassName = mergeClassNames(\n \"relative overflow-hidden bg-[var(--ui-skeleton-base)] pointer-events-none select-none shrink-0\",\n radiusStyles[effectiveRadius],\n animationStyles[animation],\n );\n\n if (variant === \"text\" && lines > 1) {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\"flex flex-col\", className)}\n style={{\n ...style,\n gap: resolveDimension(lineGap),\n width: resolveDimension(width) ?? style?.width,\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n >\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={sharedClassName}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({\n variant,\n width:\n index === lines - 1 ? lastLineWidth : (width ?? \"100%\"),\n height,\n borderRadius,\n }),\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(sharedClassName, className)}\n style={{\n ...sharedStyle,\n ...getDimensionStyle({ variant, width, height, borderRadius }),\n }}\n aria-hidden={ariaHidden ?? true}\n data-animation={animation}\n data-tone={tone}\n {...rest}\n />\n );\n },\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n// Skeleton Text Component\nconst SkeletonText = forwardRef<HTMLDivElement, SkeletonTextProps>(\n ({ lines = 3, ...props }, ref) => {\n return <Skeleton ref={ref} variant=\"text\" lines={lines} {...props} />;\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nconst SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeValue = typeof size === \"number\" ? `${size}px` : size;\n\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={sizeValue}\n height={sizeValue}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nconst SkeletonButton = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\"> & { size?: \"sm\" | \"md\" | \"lg\" }\n>(({ size = \"md\", animation = \"pulse\", className = \"\", ...props }, ref) => {\n const sizeStyles = {\n sm: { width: 80, height: 32 },\n md: { width: 100, height: 40 },\n lg: { width: 120, height: 48 },\n };\n\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={sizeStyles[size].width}\n height={sizeStyles[size].height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n});\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Image Component\nconst SkeletonImage = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, \"variant\">\n>(\n (\n {\n width = \"100%\",\n height = 200,\n animation = \"pulse\",\n className = \"\",\n ...props\n },\n ref,\n ) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"rounded\"\n width={width}\n height={height}\n animation={animation}\n className={className}\n {...props}\n />\n );\n },\n);\n\nSkeletonImage.displayName = \"SkeletonImage\";\n\n// Skeleton Card Component\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showImage = true,\n imageHeight = 200,\n lines = 3,\n showAvatar = false,\n showActions = false,\n className,\n animation = \"pulse\",\n tone = \"default\",\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"overflow-hidden rounded-md border border-ds-border-2 bg-ds-surface-1 shadow-sm\",\n className,\n )}\n >\n {showImage && (\n <SkeletonImage\n height={imageHeight}\n animation={animation}\n borderRadius={0}\n tone={tone}\n />\n )}\n\n <div className=\"p-4 flex flex-col gap-4\">\n {showAvatar && (\n <div className=\"flex items-center gap-3\">\n <SkeletonAvatar size={40} animation={animation} tone={tone} />\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"60%\"\n height={14}\n animation={animation}\n tone={tone}\n />\n <Skeleton\n variant=\"text\"\n width=\"40%\"\n height={12}\n animation={animation}\n tone={tone}\n className=\"mt-2\"\n />\n </div>\n </div>\n )}\n\n <SkeletonText\n lines={lines}\n animation={animation}\n height={14}\n lineGap={10}\n tone={tone}\n />\n\n {showActions && (\n <div className=\"flex gap-3 mt-2\">\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n <SkeletonButton size=\"sm\" animation={animation} tone={tone} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Metric Card Component\nconst SkeletonMetricCard = forwardRef<HTMLDivElement, SkeletonMetricCardProps>(\n (\n {\n showTrend = true,\n showChart = true,\n chartBars = 7,\n valueWidth = \"52%\",\n className,\n animation = \"wave\",\n tone = \"accent\",\n },\n ref,\n ) => {\n const chartHeights = [36, 52, 46, 72, 64, 84, 68, 78];\n\n return (\n <div\n ref={ref}\n className={mergeClassNames(\n \"rounded-md border border-ds-border-2 bg-ds-surface-1 p-4 shadow-sm\",\n className,\n )}\n >\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1 space-y-3\">\n <Skeleton\n width=\"34%\"\n height={11}\n animation={animation}\n tone=\"subtle\"\n />\n <Skeleton\n width={valueWidth}\n height={28}\n animation={animation}\n tone={tone}\n radius=\"md\"\n />\n <Skeleton\n width=\"44%\"\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n\n {showTrend ? (\n <div className=\"rounded-full border border-ds-border-2 bg-ds-surface-1 px-3 py-2\">\n <Skeleton\n width={54}\n height={12}\n animation={animation}\n tone=\"subtle\"\n />\n </div>\n ) : null}\n </div>\n\n {showChart ? (\n <div className=\"mt-5 flex h-20 items-end gap-2\">\n {Array.from({ length: chartBars }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"rounded\"\n width=\"100%\"\n height={`${chartHeights[index % chartHeights.length]}%`}\n animation={animation}\n tone={tone}\n className=\"flex-1\"\n />\n ))}\n </div>\n ) : null}\n </div>\n );\n },\n);\n\nSkeletonMetricCard.displayName = \"SkeletonMetricCard\";\n\n// Skeleton Table Row Component\nconst SkeletonTableRow = forwardRef<\n HTMLDivElement,\n { columns?: number; animation?: SkeletonAnimation; className?: string }\n>(({ columns = 4, animation = \"pulse\", className = \"\" }, ref) => {\n const sharedWidth =\n columns <= 1 ? \"100%\" : `${Math.floor(72 / (columns - 1))}%`;\n\n return (\n <div ref={ref} className={`flex items-center gap-4 py-3 ${className}`}>\n {Array.from({ length: columns }).map((_, index) => (\n <Skeleton\n key={index}\n variant=\"text\"\n width={index === 0 ? \"28%\" : sharedWidth}\n height={16}\n animation={animation}\n />\n ))}\n </div>\n );\n});\n\nSkeletonTableRow.displayName = \"SkeletonTableRow\";\n\n// Skeleton List Item Component\nconst SkeletonListItem = forwardRef<\n HTMLDivElement,\n {\n showAvatar?: boolean;\n showSecondaryText?: boolean;\n showAction?: boolean;\n animation?: SkeletonAnimation;\n className?: string;\n }\n>(\n (\n {\n showAvatar = true,\n showSecondaryText = true,\n showAction = false,\n animation = \"pulse\",\n className = \"\",\n },\n ref,\n ) => {\n return (\n <div ref={ref} className={`flex items-center gap-3 py-3 ${className}`}>\n {showAvatar && <SkeletonAvatar size={48} animation={animation} />}\n <div className=\"flex-1\">\n <Skeleton\n variant=\"text\"\n width=\"70%\"\n height={16}\n animation={animation}\n />\n {showSecondaryText && (\n <Skeleton\n variant=\"text\"\n width=\"50%\"\n height={14}\n animation={animation}\n className=\"mt-2\"\n />\n )}\n </div>\n {showAction && <SkeletonButton size=\"sm\" animation={animation} />}\n </div>\n );\n },\n);\n\nSkeletonListItem.displayName = \"SkeletonListItem\";\n\nexport default Skeleton;\nexport {\n Skeleton,\n SkeletonText,\n SkeletonAvatar,\n SkeletonButton,\n SkeletonImage,\n SkeletonCard,\n SkeletonMetricCard,\n SkeletonTableRow,\n SkeletonListItem,\n};\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as AudioWaveIcon } from "./icons-
|
|
1
|
+
import { g as AudioWaveIcon } from "./icons-CkVHNbbN.mjs";
|
|
2
2
|
import { jsx } from "react/jsx-runtime";
|
|
3
3
|
//#region src/components/spinners/Audio.tsx
|
|
4
4
|
var Audio = ({ className = void 0, ...props }) => /* @__PURE__ */ jsx(AudioWaveIcon, {
|
|
@@ -8,4 +8,4 @@ var Audio = ({ className = void 0, ...props }) => /* @__PURE__ */ jsx(AudioWaveI
|
|
|
8
8
|
//#endregion
|
|
9
9
|
export { Audio as t };
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=spinners-
|
|
11
|
+
//# sourceMappingURL=spinners-BQtIp2ov.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinners-
|
|
1
|
+
{"version":3,"file":"spinners-BQtIp2ov.mjs","names":[],"sources":["../../src/components/spinners/Audio.tsx"],"sourcesContent":["import { AudioWaveIcon } from \"../icons\";\n\nconst Audio = ({\n className = undefined, // String\n ...props\n}) => (\n <AudioWaveIcon\n className={`svg-loaders-svg${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n);\n\nexport { Audio };\n"],"mappings":";;;AAEA,IAAM,SAAS,EACb,YAAY,KAAA,GACZ,GAAG,YAEH,oBAAC,eAAD;CACE,WAAW,kBAAkB,YAAY,IAAI,cAAc;CAC3D,GAAI;AACL,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const require_icons = require("./icons-CRanVZB1.cjs");
|
|
1
|
+
const require_icons = require("./icons-Ci8yEvvF.cjs");
|
|
3
2
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
4
3
|
//#region src/components/spinners/Audio.tsx
|
|
5
4
|
var Audio = ({ className = void 0, ...props }) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_icons.AudioWaveIcon, {
|
|
@@ -14,4 +13,4 @@ Object.defineProperty(exports, "Audio", {
|
|
|
14
13
|
}
|
|
15
14
|
});
|
|
16
15
|
|
|
17
|
-
//# sourceMappingURL=spinners-
|
|
16
|
+
//# sourceMappingURL=spinners-BiebALzS.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinners-
|
|
1
|
+
{"version":3,"file":"spinners-BiebALzS.cjs","names":[],"sources":["../../src/components/spinners/Audio.tsx"],"sourcesContent":["import { AudioWaveIcon } from \"../icons\";\n\nconst Audio = ({\n className = undefined, // String\n ...props\n}) => (\n <AudioWaveIcon\n className={`svg-loaders-svg${className ? ` ${className}` : \"\"}`}\n {...props}\n />\n);\n\nexport { Audio };\n"],"mappings":";;;AAEA,IAAM,SAAS,EACb,YAAY,KAAA,GACZ,GAAG,YAEH,iBAAA,GAAA,kBAAA,KAAC,cAAA,eAAD;CACE,WAAW,kBAAkB,YAAY,IAAI,cAAc;CAC3D,GAAI;AACL,CAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const require_utils = require("./utils-LRbEQHYs.cjs");
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
3
2
|
let react = require("react");
|
|
4
3
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
4
|
let framer_motion = require("framer-motion");
|
|
@@ -276,4 +275,4 @@ Object.defineProperty(exports, "SplashCursor", {
|
|
|
276
275
|
}
|
|
277
276
|
});
|
|
278
277
|
|
|
279
|
-
//# sourceMappingURL=splash-cursor-
|
|
278
|
+
//# sourceMappingURL=splash-cursor-8b7ORB2k.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash-cursor-BqG7ClsJ.cjs","names":[],"sources":["../../src/components/effects/splash-cursor/SplashCursor.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SplashCursorProps, Particle } from \"./types\";\n\nconst sizeConfig = {\n sm: { base: 20, variance: 10 },\n md: { base: 40, variance: 20 },\n lg: { base: 60, variance: 30 },\n xl: { base: 100, variance: 50 },\n};\n\nconst defaultColors = [\n \"var(--ds-color-accent)\",\n \"var(--ds-color-accent-hover)\",\n \"var(--ds-color-info)\",\n \"var(--ds-color-success)\",\n \"var(--ds-color-warning)\",\n \"var(--ds-color-danger)\",\n];\n\nexport const SplashCursor = ({\n className,\n color,\n secondaryColor,\n size = \"md\",\n particleCount = 12,\n enabled = true,\n blur = 0,\n opacity = 0.6,\n duration = 800,\n smooth = true,\n smoothFactor = 0.15,\n style,\n children,\n variant = \"splash\",\n}: SplashCursorProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [particles, setParticles] = useState<Particle[]>([]);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n const [smoothPos, setSmoothPos] = useState({ x: 0, y: 0 });\n const [isInside, setIsInside] = useState(false);\n const particleIdRef = useRef<number>(0);\n const animationFrameRef = useRef<number | undefined>(undefined);\n\n // Smooth cursor following\n useEffect(() => {\n if (!smooth || !enabled) return;\n\n const animate = () => {\n setSmoothPos((prev) => ({\n x: prev.x + (mousePos.x - prev.x) * smoothFactor,\n y: prev.y + (mousePos.y - prev.y) * smoothFactor,\n }));\n animationFrameRef.current = requestAnimationFrame(animate);\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [mousePos, smooth, smoothFactor, enabled]);\n\n const getRandomColor = useCallback(() => {\n if (color && secondaryColor) {\n return Math.random() > 0.5 ? color : secondaryColor;\n }\n if (color) return color;\n return defaultColors[Math.floor(Math.random() * defaultColors.length)];\n }, [color, secondaryColor]);\n\n const createParticles = useCallback(\n (x: number, y: number) => {\n const config = sizeConfig[size];\n const newParticles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (Math.PI * 2 * i) / particleCount;\n const distance =\n variant === \"ripple\" ? config.base : Math.random() * config.variance;\n\n newParticles.push({\n id: particleIdRef.current++,\n x: x + Math.cos(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n y: y + Math.sin(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n size: config.base * 0.3 + Math.random() * config.base * 0.4,\n opacity: opacity * (0.5 + Math.random() * 0.5),\n color: getRandomColor(),\n });\n }\n\n setParticles((prev) => [...prev.slice(-50), ...newParticles]);\n\n // Remove particles after animation\n setTimeout(() => {\n setParticles((prev) =>\n prev.filter((p) => !newParticles.find((np) => np.id === p.id)),\n );\n }, duration);\n },\n [size, particleCount, opacity, duration, getRandomColor, variant],\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n setMousePos({ x, y });\n\n // Create splash effect on movement\n if (variant === \"splash\" || variant === \"trail\") {\n if (Math.random() > (variant === \"trail\" ? 0.7 : 0.85)) {\n createParticles(x, y);\n }\n }\n },\n [enabled, createParticles, variant],\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create burst effect on click\n createParticles(x, y);\n if (variant === \"ripple\") {\n setTimeout(() => createParticles(x, y), 100);\n setTimeout(() => createParticles(x, y), 200);\n }\n },\n [enabled, createParticles, variant],\n );\n\n const getParticleAnimation = (particle: Particle) => {\n const config = sizeConfig[size];\n\n switch (variant) {\n case \"glow\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 2, opacity: 0 },\n exit: { scale: 3, opacity: 0 },\n };\n case \"trail\":\n return {\n initial: { scale: 1, opacity: particle.opacity, y: 0 },\n animate: { scale: 0.5, opacity: 0, y: 20 },\n exit: { scale: 0, opacity: 0 },\n };\n case \"ripple\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 4, opacity: 0 },\n exit: { scale: 5, opacity: 0 },\n };\n default: // splash\n const angle = Math.random() * Math.PI * 2;\n const distance = config.base + Math.random() * config.variance;\n return {\n initial: { scale: 0, opacity: particle.opacity, x: 0, y: 0 },\n animate: {\n scale: [0, 1.2, 0.8],\n opacity: [particle.opacity, particle.opacity * 0.8, 0],\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n },\n exit: { scale: 0, opacity: 0 },\n };\n }\n };\n\n const cursorPos = smooth ? smoothPos : mousePos;\n const glowColor =\n color && secondaryColor\n ? `color-mix(in srgb, ${color} 60%, ${secondaryColor})`\n : color\n ? `color-mix(in srgb, ${color} 35%, transparent)`\n : \"color-mix(in srgb, var(--ds-color-accent) 35%, transparent)\";\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative overflow-hidden\", className)}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsInside(true)}\n onMouseLeave={() => setIsInside(false)}\n onClick={handleClick}\n >\n {/* Cursor glow effect */}\n {enabled && isInside && variant === \"glow\" && (\n <motion.div\n className=\"pointer-events-none absolute z-10\"\n style={{\n left: cursorPos.x,\n top: cursorPos.y,\n width: sizeConfig[size].base * 2,\n height: sizeConfig[size].base * 2,\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${glowColor} 0%, transparent 70%)`,\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n />\n )}\n\n {/* Particles */}\n <AnimatePresence>\n {enabled &&\n particles.map((particle) => {\n const animation = getParticleAnimation(particle);\n return (\n <motion.div\n key={particle.id}\n className=\"pointer-events-none absolute rounded-full z-20\"\n style={{\n left: particle.x,\n top: particle.y,\n width: particle.size,\n height: particle.size,\n backgroundColor: particle.color,\n transform: \"translate(-50%, -50%)\",\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n {...animation}\n transition={{\n duration: duration / 1000,\n ease: \"easeOut\",\n }}\n />\n );\n })}\n </AnimatePresence>\n\n {/* Children content */}\n <div className=\"relative z-0\">{children}</div>\n </div>\n );\n};\n\nSplashCursor.displayName = \"SplashCursor\";\n\nexport default SplashCursor;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"splash-cursor-8b7ORB2k.cjs","names":[],"sources":["../../src/components/effects/splash-cursor/SplashCursor.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SplashCursorProps, Particle } from \"./types\";\n\nconst sizeConfig = {\n sm: { base: 20, variance: 10 },\n md: { base: 40, variance: 20 },\n lg: { base: 60, variance: 30 },\n xl: { base: 100, variance: 50 },\n};\n\nconst defaultColors = [\n \"var(--ds-color-accent)\",\n \"var(--ds-color-accent-hover)\",\n \"var(--ds-color-info)\",\n \"var(--ds-color-success)\",\n \"var(--ds-color-warning)\",\n \"var(--ds-color-danger)\",\n];\n\nexport const SplashCursor = ({\n className,\n color,\n secondaryColor,\n size = \"md\",\n particleCount = 12,\n enabled = true,\n blur = 0,\n opacity = 0.6,\n duration = 800,\n smooth = true,\n smoothFactor = 0.15,\n style,\n children,\n variant = \"splash\",\n}: SplashCursorProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [particles, setParticles] = useState<Particle[]>([]);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n const [smoothPos, setSmoothPos] = useState({ x: 0, y: 0 });\n const [isInside, setIsInside] = useState(false);\n const particleIdRef = useRef<number>(0);\n const animationFrameRef = useRef<number | undefined>(undefined);\n\n // Smooth cursor following\n useEffect(() => {\n if (!smooth || !enabled) return;\n\n const animate = () => {\n setSmoothPos((prev) => ({\n x: prev.x + (mousePos.x - prev.x) * smoothFactor,\n y: prev.y + (mousePos.y - prev.y) * smoothFactor,\n }));\n animationFrameRef.current = requestAnimationFrame(animate);\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [mousePos, smooth, smoothFactor, enabled]);\n\n const getRandomColor = useCallback(() => {\n if (color && secondaryColor) {\n return Math.random() > 0.5 ? color : secondaryColor;\n }\n if (color) return color;\n return defaultColors[Math.floor(Math.random() * defaultColors.length)];\n }, [color, secondaryColor]);\n\n const createParticles = useCallback(\n (x: number, y: number) => {\n const config = sizeConfig[size];\n const newParticles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (Math.PI * 2 * i) / particleCount;\n const distance =\n variant === \"ripple\" ? config.base : Math.random() * config.variance;\n\n newParticles.push({\n id: particleIdRef.current++,\n x: x + Math.cos(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n y: y + Math.sin(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n size: config.base * 0.3 + Math.random() * config.base * 0.4,\n opacity: opacity * (0.5 + Math.random() * 0.5),\n color: getRandomColor(),\n });\n }\n\n setParticles((prev) => [...prev.slice(-50), ...newParticles]);\n\n // Remove particles after animation\n setTimeout(() => {\n setParticles((prev) =>\n prev.filter((p) => !newParticles.find((np) => np.id === p.id)),\n );\n }, duration);\n },\n [size, particleCount, opacity, duration, getRandomColor, variant],\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n setMousePos({ x, y });\n\n // Create splash effect on movement\n if (variant === \"splash\" || variant === \"trail\") {\n if (Math.random() > (variant === \"trail\" ? 0.7 : 0.85)) {\n createParticles(x, y);\n }\n }\n },\n [enabled, createParticles, variant],\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create burst effect on click\n createParticles(x, y);\n if (variant === \"ripple\") {\n setTimeout(() => createParticles(x, y), 100);\n setTimeout(() => createParticles(x, y), 200);\n }\n },\n [enabled, createParticles, variant],\n );\n\n const getParticleAnimation = (particle: Particle) => {\n const config = sizeConfig[size];\n\n switch (variant) {\n case \"glow\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 2, opacity: 0 },\n exit: { scale: 3, opacity: 0 },\n };\n case \"trail\":\n return {\n initial: { scale: 1, opacity: particle.opacity, y: 0 },\n animate: { scale: 0.5, opacity: 0, y: 20 },\n exit: { scale: 0, opacity: 0 },\n };\n case \"ripple\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 4, opacity: 0 },\n exit: { scale: 5, opacity: 0 },\n };\n default: // splash\n const angle = Math.random() * Math.PI * 2;\n const distance = config.base + Math.random() * config.variance;\n return {\n initial: { scale: 0, opacity: particle.opacity, x: 0, y: 0 },\n animate: {\n scale: [0, 1.2, 0.8],\n opacity: [particle.opacity, particle.opacity * 0.8, 0],\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n },\n exit: { scale: 0, opacity: 0 },\n };\n }\n };\n\n const cursorPos = smooth ? smoothPos : mousePos;\n const glowColor =\n color && secondaryColor\n ? `color-mix(in srgb, ${color} 60%, ${secondaryColor})`\n : color\n ? `color-mix(in srgb, ${color} 35%, transparent)`\n : \"color-mix(in srgb, var(--ds-color-accent) 35%, transparent)\";\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative overflow-hidden\", className)}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsInside(true)}\n onMouseLeave={() => setIsInside(false)}\n onClick={handleClick}\n >\n {/* Cursor glow effect */}\n {enabled && isInside && variant === \"glow\" && (\n <motion.div\n className=\"pointer-events-none absolute z-10\"\n style={{\n left: cursorPos.x,\n top: cursorPos.y,\n width: sizeConfig[size].base * 2,\n height: sizeConfig[size].base * 2,\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${glowColor} 0%, transparent 70%)`,\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n />\n )}\n\n {/* Particles */}\n <AnimatePresence>\n {enabled &&\n particles.map((particle) => {\n const animation = getParticleAnimation(particle);\n return (\n <motion.div\n key={particle.id}\n className=\"pointer-events-none absolute rounded-full z-20\"\n style={{\n left: particle.x,\n top: particle.y,\n width: particle.size,\n height: particle.size,\n backgroundColor: particle.color,\n transform: \"translate(-50%, -50%)\",\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n {...animation}\n transition={{\n duration: duration / 1000,\n ease: \"easeOut\",\n }}\n />\n );\n })}\n </AnimatePresence>\n\n {/* Children content */}\n <div className=\"relative z-0\">{children}</div>\n </div>\n );\n};\n\nSplashCursor.displayName = \"SplashCursor\";\n\nexport default SplashCursor;\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as mergeClassNames } from "./utils-
|
|
1
|
+
import { n as mergeClassNames } from "./utils-Dc7j29ec.mjs";
|
|
2
2
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { AnimatePresence, motion } from "framer-motion";
|
|
@@ -270,4 +270,4 @@ SplashCursor.displayName = "SplashCursor";
|
|
|
270
270
|
//#endregion
|
|
271
271
|
export { SplashCursor as t };
|
|
272
272
|
|
|
273
|
-
//# sourceMappingURL=splash-cursor-
|
|
273
|
+
//# sourceMappingURL=splash-cursor-CeZffMed.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splash-cursor-N4FdnkOa.mjs","names":[],"sources":["../../src/components/effects/splash-cursor/SplashCursor.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SplashCursorProps, Particle } from \"./types\";\n\nconst sizeConfig = {\n sm: { base: 20, variance: 10 },\n md: { base: 40, variance: 20 },\n lg: { base: 60, variance: 30 },\n xl: { base: 100, variance: 50 },\n};\n\nconst defaultColors = [\n \"var(--ds-color-accent)\",\n \"var(--ds-color-accent-hover)\",\n \"var(--ds-color-info)\",\n \"var(--ds-color-success)\",\n \"var(--ds-color-warning)\",\n \"var(--ds-color-danger)\",\n];\n\nexport const SplashCursor = ({\n className,\n color,\n secondaryColor,\n size = \"md\",\n particleCount = 12,\n enabled = true,\n blur = 0,\n opacity = 0.6,\n duration = 800,\n smooth = true,\n smoothFactor = 0.15,\n style,\n children,\n variant = \"splash\",\n}: SplashCursorProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [particles, setParticles] = useState<Particle[]>([]);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n const [smoothPos, setSmoothPos] = useState({ x: 0, y: 0 });\n const [isInside, setIsInside] = useState(false);\n const particleIdRef = useRef<number>(0);\n const animationFrameRef = useRef<number | undefined>(undefined);\n\n // Smooth cursor following\n useEffect(() => {\n if (!smooth || !enabled) return;\n\n const animate = () => {\n setSmoothPos((prev) => ({\n x: prev.x + (mousePos.x - prev.x) * smoothFactor,\n y: prev.y + (mousePos.y - prev.y) * smoothFactor,\n }));\n animationFrameRef.current = requestAnimationFrame(animate);\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [mousePos, smooth, smoothFactor, enabled]);\n\n const getRandomColor = useCallback(() => {\n if (color && secondaryColor) {\n return Math.random() > 0.5 ? color : secondaryColor;\n }\n if (color) return color;\n return defaultColors[Math.floor(Math.random() * defaultColors.length)];\n }, [color, secondaryColor]);\n\n const createParticles = useCallback(\n (x: number, y: number) => {\n const config = sizeConfig[size];\n const newParticles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (Math.PI * 2 * i) / particleCount;\n const distance =\n variant === \"ripple\" ? config.base : Math.random() * config.variance;\n\n newParticles.push({\n id: particleIdRef.current++,\n x: x + Math.cos(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n y: y + Math.sin(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n size: config.base * 0.3 + Math.random() * config.base * 0.4,\n opacity: opacity * (0.5 + Math.random() * 0.5),\n color: getRandomColor(),\n });\n }\n\n setParticles((prev) => [...prev.slice(-50), ...newParticles]);\n\n // Remove particles after animation\n setTimeout(() => {\n setParticles((prev) =>\n prev.filter((p) => !newParticles.find((np) => np.id === p.id)),\n );\n }, duration);\n },\n [size, particleCount, opacity, duration, getRandomColor, variant],\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n setMousePos({ x, y });\n\n // Create splash effect on movement\n if (variant === \"splash\" || variant === \"trail\") {\n if (Math.random() > (variant === \"trail\" ? 0.7 : 0.85)) {\n createParticles(x, y);\n }\n }\n },\n [enabled, createParticles, variant],\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create burst effect on click\n createParticles(x, y);\n if (variant === \"ripple\") {\n setTimeout(() => createParticles(x, y), 100);\n setTimeout(() => createParticles(x, y), 200);\n }\n },\n [enabled, createParticles, variant],\n );\n\n const getParticleAnimation = (particle: Particle) => {\n const config = sizeConfig[size];\n\n switch (variant) {\n case \"glow\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 2, opacity: 0 },\n exit: { scale: 3, opacity: 0 },\n };\n case \"trail\":\n return {\n initial: { scale: 1, opacity: particle.opacity, y: 0 },\n animate: { scale: 0.5, opacity: 0, y: 20 },\n exit: { scale: 0, opacity: 0 },\n };\n case \"ripple\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 4, opacity: 0 },\n exit: { scale: 5, opacity: 0 },\n };\n default: // splash\n const angle = Math.random() * Math.PI * 2;\n const distance = config.base + Math.random() * config.variance;\n return {\n initial: { scale: 0, opacity: particle.opacity, x: 0, y: 0 },\n animate: {\n scale: [0, 1.2, 0.8],\n opacity: [particle.opacity, particle.opacity * 0.8, 0],\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n },\n exit: { scale: 0, opacity: 0 },\n };\n }\n };\n\n const cursorPos = smooth ? smoothPos : mousePos;\n const glowColor =\n color && secondaryColor\n ? `color-mix(in srgb, ${color} 60%, ${secondaryColor})`\n : color\n ? `color-mix(in srgb, ${color} 35%, transparent)`\n : \"color-mix(in srgb, var(--ds-color-accent) 35%, transparent)\";\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative overflow-hidden\", className)}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsInside(true)}\n onMouseLeave={() => setIsInside(false)}\n onClick={handleClick}\n >\n {/* Cursor glow effect */}\n {enabled && isInside && variant === \"glow\" && (\n <motion.div\n className=\"pointer-events-none absolute z-10\"\n style={{\n left: cursorPos.x,\n top: cursorPos.y,\n width: sizeConfig[size].base * 2,\n height: sizeConfig[size].base * 2,\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${glowColor} 0%, transparent 70%)`,\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n />\n )}\n\n {/* Particles */}\n <AnimatePresence>\n {enabled &&\n particles.map((particle) => {\n const animation = getParticleAnimation(particle);\n return (\n <motion.div\n key={particle.id}\n className=\"pointer-events-none absolute rounded-full z-20\"\n style={{\n left: particle.x,\n top: particle.y,\n width: particle.size,\n height: particle.size,\n backgroundColor: particle.color,\n transform: \"translate(-50%, -50%)\",\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n {...animation}\n transition={{\n duration: duration / 1000,\n ease: \"easeOut\",\n }}\n />\n );\n })}\n </AnimatePresence>\n\n {/* Children content */}\n <div className=\"relative z-0\">{children}</div>\n </div>\n );\n};\n\nSplashCursor.displayName = \"SplashCursor\";\n\nexport default SplashCursor;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"splash-cursor-CeZffMed.mjs","names":[],"sources":["../../src/components/effects/splash-cursor/SplashCursor.tsx"],"sourcesContent":["import { useState, useEffect, useRef, useCallback } from \"react\";\nimport { motion, AnimatePresence } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SplashCursorProps, Particle } from \"./types\";\n\nconst sizeConfig = {\n sm: { base: 20, variance: 10 },\n md: { base: 40, variance: 20 },\n lg: { base: 60, variance: 30 },\n xl: { base: 100, variance: 50 },\n};\n\nconst defaultColors = [\n \"var(--ds-color-accent)\",\n \"var(--ds-color-accent-hover)\",\n \"var(--ds-color-info)\",\n \"var(--ds-color-success)\",\n \"var(--ds-color-warning)\",\n \"var(--ds-color-danger)\",\n];\n\nexport const SplashCursor = ({\n className,\n color,\n secondaryColor,\n size = \"md\",\n particleCount = 12,\n enabled = true,\n blur = 0,\n opacity = 0.6,\n duration = 800,\n smooth = true,\n smoothFactor = 0.15,\n style,\n children,\n variant = \"splash\",\n}: SplashCursorProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [particles, setParticles] = useState<Particle[]>([]);\n const [mousePos, setMousePos] = useState({ x: 0, y: 0 });\n const [smoothPos, setSmoothPos] = useState({ x: 0, y: 0 });\n const [isInside, setIsInside] = useState(false);\n const particleIdRef = useRef<number>(0);\n const animationFrameRef = useRef<number | undefined>(undefined);\n\n // Smooth cursor following\n useEffect(() => {\n if (!smooth || !enabled) return;\n\n const animate = () => {\n setSmoothPos((prev) => ({\n x: prev.x + (mousePos.x - prev.x) * smoothFactor,\n y: prev.y + (mousePos.y - prev.y) * smoothFactor,\n }));\n animationFrameRef.current = requestAnimationFrame(animate);\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [mousePos, smooth, smoothFactor, enabled]);\n\n const getRandomColor = useCallback(() => {\n if (color && secondaryColor) {\n return Math.random() > 0.5 ? color : secondaryColor;\n }\n if (color) return color;\n return defaultColors[Math.floor(Math.random() * defaultColors.length)];\n }, [color, secondaryColor]);\n\n const createParticles = useCallback(\n (x: number, y: number) => {\n const config = sizeConfig[size];\n const newParticles: Particle[] = [];\n\n for (let i = 0; i < particleCount; i++) {\n const angle = (Math.PI * 2 * i) / particleCount;\n const distance =\n variant === \"ripple\" ? config.base : Math.random() * config.variance;\n\n newParticles.push({\n id: particleIdRef.current++,\n x: x + Math.cos(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n y: y + Math.sin(angle) * distance * (variant === \"ripple\" ? 0 : 1),\n size: config.base * 0.3 + Math.random() * config.base * 0.4,\n opacity: opacity * (0.5 + Math.random() * 0.5),\n color: getRandomColor(),\n });\n }\n\n setParticles((prev) => [...prev.slice(-50), ...newParticles]);\n\n // Remove particles after animation\n setTimeout(() => {\n setParticles((prev) =>\n prev.filter((p) => !newParticles.find((np) => np.id === p.id)),\n );\n }, duration);\n },\n [size, particleCount, opacity, duration, getRandomColor, variant],\n );\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n setMousePos({ x, y });\n\n // Create splash effect on movement\n if (variant === \"splash\" || variant === \"trail\") {\n if (Math.random() > (variant === \"trail\" ? 0.7 : 0.85)) {\n createParticles(x, y);\n }\n }\n },\n [enabled, createParticles, variant],\n );\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!enabled || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n\n // Create burst effect on click\n createParticles(x, y);\n if (variant === \"ripple\") {\n setTimeout(() => createParticles(x, y), 100);\n setTimeout(() => createParticles(x, y), 200);\n }\n },\n [enabled, createParticles, variant],\n );\n\n const getParticleAnimation = (particle: Particle) => {\n const config = sizeConfig[size];\n\n switch (variant) {\n case \"glow\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 2, opacity: 0 },\n exit: { scale: 3, opacity: 0 },\n };\n case \"trail\":\n return {\n initial: { scale: 1, opacity: particle.opacity, y: 0 },\n animate: { scale: 0.5, opacity: 0, y: 20 },\n exit: { scale: 0, opacity: 0 },\n };\n case \"ripple\":\n return {\n initial: { scale: 0, opacity: particle.opacity },\n animate: { scale: 4, opacity: 0 },\n exit: { scale: 5, opacity: 0 },\n };\n default: // splash\n const angle = Math.random() * Math.PI * 2;\n const distance = config.base + Math.random() * config.variance;\n return {\n initial: { scale: 0, opacity: particle.opacity, x: 0, y: 0 },\n animate: {\n scale: [0, 1.2, 0.8],\n opacity: [particle.opacity, particle.opacity * 0.8, 0],\n x: Math.cos(angle) * distance,\n y: Math.sin(angle) * distance,\n },\n exit: { scale: 0, opacity: 0 },\n };\n }\n };\n\n const cursorPos = smooth ? smoothPos : mousePos;\n const glowColor =\n color && secondaryColor\n ? `color-mix(in srgb, ${color} 60%, ${secondaryColor})`\n : color\n ? `color-mix(in srgb, ${color} 35%, transparent)`\n : \"color-mix(in srgb, var(--ds-color-accent) 35%, transparent)\";\n\n return (\n <div\n ref={containerRef}\n className={mergeClassNames(\"relative overflow-hidden\", className)}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsInside(true)}\n onMouseLeave={() => setIsInside(false)}\n onClick={handleClick}\n >\n {/* Cursor glow effect */}\n {enabled && isInside && variant === \"glow\" && (\n <motion.div\n className=\"pointer-events-none absolute z-10\"\n style={{\n left: cursorPos.x,\n top: cursorPos.y,\n width: sizeConfig[size].base * 2,\n height: sizeConfig[size].base * 2,\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${glowColor} 0%, transparent 70%)`,\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n initial={{ scale: 0, opacity: 0 }}\n animate={{ scale: 1, opacity: 1 }}\n exit={{ scale: 0, opacity: 0 }}\n />\n )}\n\n {/* Particles */}\n <AnimatePresence>\n {enabled &&\n particles.map((particle) => {\n const animation = getParticleAnimation(particle);\n return (\n <motion.div\n key={particle.id}\n className=\"pointer-events-none absolute rounded-full z-20\"\n style={{\n left: particle.x,\n top: particle.y,\n width: particle.size,\n height: particle.size,\n backgroundColor: particle.color,\n transform: \"translate(-50%, -50%)\",\n filter: blur ? `blur(${blur}px)` : undefined,\n }}\n {...animation}\n transition={{\n duration: duration / 1000,\n ease: \"easeOut\",\n }}\n />\n );\n })}\n </AnimatePresence>\n\n {/* Children content */}\n <div className=\"relative z-0\">{children}</div>\n </div>\n );\n};\n\nSplashCursor.displayName = \"SplashCursor\";\n\nexport default SplashCursor;\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const require_utils = require("./utils-LRbEQHYs.cjs");
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
3
2
|
let react = require("react");
|
|
4
3
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
4
|
let framer_motion = require("framer-motion");
|
|
@@ -107,4 +106,4 @@ Object.defineProperty(exports, "SpotlightCard", {
|
|
|
107
106
|
}
|
|
108
107
|
});
|
|
109
108
|
|
|
110
|
-
//# sourceMappingURL=spotlight-card-
|
|
109
|
+
//# sourceMappingURL=spotlight-card-BQjp7hO1.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotlight-card-
|
|
1
|
+
{"version":3,"file":"spotlight-card-BQjp7hO1.cjs","names":[],"sources":["../../src/components/effects/spotlight-card/SpotlightCard.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SpotlightCardProps } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n};\n\nconst paddingMap = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-5\",\n lg: \"p-7\",\n xl: \"p-10\",\n};\n\nconst variantStyles = {\n glass: `\n bg-ds-surface-1/70\n backdrop-blur-2xl\n border border-ds-border-2/60\n shadow-xl\n `,\n solid: `\n bg-ds-surface-1\n border border-ds-border-2\n shadow-lg\n `,\n outlined: `\n bg-transparent\n border-2 border-ds-border-2\n `,\n};\n\nexport const SpotlightCard = ({\n children,\n className,\n spotlightColor = \"rgba(115, 103, 240, 0.15)\",\n spotlightSize = 350,\n spotlightEnabled = true,\n variant = \"glass\",\n borderRadius = \"xl\",\n padding = \"md\",\n hoverScale = true,\n style,\n onClick,\n}: SpotlightCardProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current || !spotlightEnabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n const spotlightStyle =\n spotlightEnabled && isHovered\n ? {\n background: `radial-gradient(${spotlightSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor}, transparent 80%)`,\n }\n : {};\n\n return (\n <motion.div\n ref={containerRef}\n className={mergeClassNames(\n \"relative overflow-hidden transition-all duration-300\",\n borderRadiusMap[borderRadius],\n paddingMap[padding],\n variantStyles[variant],\n onClick && \"cursor-pointer\",\n className,\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={onClick}\n whileHover={hoverScale ? { scale: 1.02 } : undefined}\n whileTap={onClick ? { scale: 0.98 } : undefined}\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\n >\n {/* Spotlight overlay */}\n {spotlightEnabled && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={spotlightStyle}\n initial={{ opacity: 0 }}\n animate={{ opacity: isHovered ? 1 : 0 }}\n transition={{ duration: 0.3 }}\n />\n )}\n\n {/* Border glow effect */}\n {spotlightEnabled && isHovered && (\n <motion.div\n className={mergeClassNames(\n \"pointer-events-none absolute inset-0 z-0\",\n borderRadiusMap[borderRadius],\n )}\n style={{\n background: `radial-gradient(${spotlightSize * 0.6}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor.replace(\"0.15\", \"0.3\")}, transparent 70%)`,\n filter: \"blur(20px)\",\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </motion.div>\n );\n};\n\nSpotlightCard.displayName = \"SpotlightCard\";\n\nexport default SpotlightCard;\n"],"mappings":";;;;;AAKA,IAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;AACR;AAEA,IAAM,aAAa;CACjB,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAM,gBAAgB;CACpB,OAAO;;;;;;CAMP,OAAO;;;;;CAKP,UAAU;;;;AAIZ;AAEA,IAAa,iBAAiB,EAC5B,UACA,WACA,iBAAiB,6BACjB,gBAAgB,KAChB,mBAAmB,MACnB,UAAU,SACV,eAAe,MACf,UAAU,MACV,aAAa,MACb,OACA,cACwB;CACxB,MAAM,gBAAA,GAAA,MAAA,QAAsC,IAAI;CAChD,MAAM,CAAC,eAAe,qBAAA,GAAA,MAAA,UAA6B;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC;CACjE,MAAM,CAAC,WAAW,iBAAA,GAAA,MAAA,UAAyB,KAAK;CAEhD,MAAM,mBAAmB,MAAwC;EAC/D,IAAI,CAAC,aAAa,WAAW,CAAC,kBAAkB;EAChD,MAAM,OAAO,aAAa,QAAQ,sBAAsB;EACxD,iBAAiB;GACf,GAAG,EAAE,UAAU,KAAK;GACpB,GAAG,EAAE,UAAU,KAAK;EACtB,CAAC;CACH;CAEA,MAAM,yBAAyB;EAC7B,aAAa,IAAI;CACnB;CAEA,MAAM,yBAAyB;EAC7B,aAAa,KAAK;CACpB;CAEA,MAAM,iBACJ,oBAAoB,YAChB,EACE,YAAY,mBAAmB,cAAc,eAAe,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,oBACxH,IACA,CAAC;CAEP,OACE,iBAAA,GAAA,kBAAA,MAAC,cAAA,OAAO,KAAR;EACE,KAAK;EACL,WAAW,cAAA,gBACT,wDACA,gBAAgB,eAChB,WAAW,UACX,cAAc,UACd,WAAW,kBACX,SACF;EACO;EACP,aAAa;EACb,cAAc;EACd,cAAc;EACL;EACT,YAAY,aAAa,EAAE,OAAO,KAAK,IAAI,KAAA;EAC3C,UAAU,UAAU,EAAE,OAAO,IAAK,IAAI,KAAA;EACtC,YAAY;GAAE,MAAM;GAAU,WAAW;GAAK,SAAS;EAAG;YAjB5D;GAoBG,oBACC,iBAAA,GAAA,kBAAA,KAAC,cAAA,OAAO,KAAR;IACE,WAAU;IACV,OAAO;IACP,SAAS,EAAE,SAAS,EAAE;IACtB,SAAS,EAAE,SAAS,YAAY,IAAI,EAAE;IACtC,YAAY,EAAE,UAAU,GAAI;GAC7B,CAAA;GAIF,oBAAoB,aACnB,iBAAA,GAAA,kBAAA,KAAC,cAAA,OAAO,KAAR;IACE,WAAW,cAAA,gBACT,4CACA,gBAAgB,aAClB;IACA,OAAO;KACL,YAAY,mBAAmB,gBAAgB,GAAI,eAAe,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,QAAQ,QAAQ,KAAK,EAAE;KACnJ,QAAQ;IACV;IACA,SAAS,EAAE,SAAS,EAAE;IACtB,SAAS,EAAE,SAAS,EAAE;IACtB,YAAY,EAAE,UAAU,GAAI;GAC7B,CAAA;GAIH,iBAAA,GAAA,kBAAA,KAAC,OAAD;IAAK,WAAU;IAAiB;GAAc,CAAA;EACpC;;AAEhB;AAEA,cAAc,cAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as mergeClassNames } from "./utils-
|
|
1
|
+
import { n as mergeClassNames } from "./utils-Dc7j29ec.mjs";
|
|
2
2
|
import { useRef, useState } from "react";
|
|
3
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { motion } from "framer-motion";
|
|
@@ -101,4 +101,4 @@ SpotlightCard.displayName = "SpotlightCard";
|
|
|
101
101
|
//#endregion
|
|
102
102
|
export { SpotlightCard as t };
|
|
103
103
|
|
|
104
|
-
//# sourceMappingURL=spotlight-card-
|
|
104
|
+
//# sourceMappingURL=spotlight-card-DiPtBCAK.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spotlight-card-
|
|
1
|
+
{"version":3,"file":"spotlight-card-DiPtBCAK.mjs","names":[],"sources":["../../src/components/effects/spotlight-card/SpotlightCard.tsx"],"sourcesContent":["import { useState, useRef } from \"react\";\nimport { motion } from \"framer-motion\";\nimport { mergeClassNames } from \"../../../utils\";\nimport type { SpotlightCardProps } from \"./types\";\n\nconst borderRadiusMap = {\n sm: \"rounded-sm\",\n md: \"rounded-md\",\n lg: \"rounded-lg\",\n xl: \"rounded-xl\",\n \"2xl\": \"rounded-2xl\",\n full: \"rounded-full\",\n};\n\nconst paddingMap = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-5\",\n lg: \"p-7\",\n xl: \"p-10\",\n};\n\nconst variantStyles = {\n glass: `\n bg-ds-surface-1/70\n backdrop-blur-2xl\n border border-ds-border-2/60\n shadow-xl\n `,\n solid: `\n bg-ds-surface-1\n border border-ds-border-2\n shadow-lg\n `,\n outlined: `\n bg-transparent\n border-2 border-ds-border-2\n `,\n};\n\nexport const SpotlightCard = ({\n children,\n className,\n spotlightColor = \"rgba(115, 103, 240, 0.15)\",\n spotlightSize = 350,\n spotlightEnabled = true,\n variant = \"glass\",\n borderRadius = \"xl\",\n padding = \"md\",\n hoverScale = true,\n style,\n onClick,\n}: SpotlightCardProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseMove = (e: React.MouseEvent<HTMLDivElement>) => {\n if (!containerRef.current || !spotlightEnabled) return;\n const rect = containerRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n const spotlightStyle =\n spotlightEnabled && isHovered\n ? {\n background: `radial-gradient(${spotlightSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor}, transparent 80%)`,\n }\n : {};\n\n return (\n <motion.div\n ref={containerRef}\n className={mergeClassNames(\n \"relative overflow-hidden transition-all duration-300\",\n borderRadiusMap[borderRadius],\n paddingMap[padding],\n variantStyles[variant],\n onClick && \"cursor-pointer\",\n className,\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onClick={onClick}\n whileHover={hoverScale ? { scale: 1.02 } : undefined}\n whileTap={onClick ? { scale: 0.98 } : undefined}\n transition={{ type: \"spring\", stiffness: 400, damping: 25 }}\n >\n {/* Spotlight overlay */}\n {spotlightEnabled && (\n <motion.div\n className=\"pointer-events-none absolute inset-0 z-0\"\n style={spotlightStyle}\n initial={{ opacity: 0 }}\n animate={{ opacity: isHovered ? 1 : 0 }}\n transition={{ duration: 0.3 }}\n />\n )}\n\n {/* Border glow effect */}\n {spotlightEnabled && isHovered && (\n <motion.div\n className={mergeClassNames(\n \"pointer-events-none absolute inset-0 z-0\",\n borderRadiusMap[borderRadius],\n )}\n style={{\n background: `radial-gradient(${spotlightSize * 0.6}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor.replace(\"0.15\", \"0.3\")}, transparent 70%)`,\n filter: \"blur(20px)\",\n }}\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n )}\n\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </motion.div>\n );\n};\n\nSpotlightCard.displayName = \"SpotlightCard\";\n\nexport default SpotlightCard;\n"],"mappings":";;;;;AAKA,IAAM,kBAAkB;CACtB,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,OAAO;CACP,MAAM;AACR;AAEA,IAAM,aAAa;CACjB,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN;AAEA,IAAM,gBAAgB;CACpB,OAAO;;;;;;CAMP,OAAO;;;;;CAKP,UAAU;;;;AAIZ;AAEA,IAAa,iBAAiB,EAC5B,UACA,WACA,iBAAiB,6BACjB,gBAAgB,KAChB,mBAAmB,MACnB,UAAU,SACV,eAAe,MACf,UAAU,MACV,aAAa,MACb,OACA,cACwB;CACxB,MAAM,eAAe,OAAuB,IAAI;CAChD,MAAM,CAAC,eAAe,oBAAoB,SAAS;EAAE,GAAG;EAAG,GAAG;CAAE,CAAC;CACjE,MAAM,CAAC,WAAW,gBAAgB,SAAS,KAAK;CAEhD,MAAM,mBAAmB,MAAwC;EAC/D,IAAI,CAAC,aAAa,WAAW,CAAC,kBAAkB;EAChD,MAAM,OAAO,aAAa,QAAQ,sBAAsB;EACxD,iBAAiB;GACf,GAAG,EAAE,UAAU,KAAK;GACpB,GAAG,EAAE,UAAU,KAAK;EACtB,CAAC;CACH;CAEA,MAAM,yBAAyB;EAC7B,aAAa,IAAI;CACnB;CAEA,MAAM,yBAAyB;EAC7B,aAAa,KAAK;CACpB;CAEA,MAAM,iBACJ,oBAAoB,YAChB,EACE,YAAY,mBAAmB,cAAc,eAAe,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,oBACxH,IACA,CAAC;CAEP,OACE,qBAAC,OAAO,KAAR;EACE,KAAK;EACL,WAAW,gBACT,wDACA,gBAAgB,eAChB,WAAW,UACX,cAAc,UACd,WAAW,kBACX,SACF;EACO;EACP,aAAa;EACb,cAAc;EACd,cAAc;EACL;EACT,YAAY,aAAa,EAAE,OAAO,KAAK,IAAI,KAAA;EAC3C,UAAU,UAAU,EAAE,OAAO,IAAK,IAAI,KAAA;EACtC,YAAY;GAAE,MAAM;GAAU,WAAW;GAAK,SAAS;EAAG;YAjB5D;GAoBG,oBACC,oBAAC,OAAO,KAAR;IACE,WAAU;IACV,OAAO;IACP,SAAS,EAAE,SAAS,EAAE;IACtB,SAAS,EAAE,SAAS,YAAY,IAAI,EAAE;IACtC,YAAY,EAAE,UAAU,GAAI;GAC7B,CAAA;GAIF,oBAAoB,aACnB,oBAAC,OAAO,KAAR;IACE,WAAW,gBACT,4CACA,gBAAgB,aAClB;IACA,OAAO;KACL,YAAY,mBAAmB,gBAAgB,GAAI,eAAe,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,QAAQ,QAAQ,KAAK,EAAE;KACnJ,QAAQ;IACV;IACA,SAAS,EAAE,SAAS,EAAE;IACtB,SAAS,EAAE,SAAS,EAAE;IACtB,YAAY,EAAE,UAAU,GAAI;GAC7B,CAAA;GAIH,oBAAC,OAAD;IAAK,WAAU;IAAiB;GAAc,CAAA;EACpC;;AAEhB;AAEA,cAAc,cAAc"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
require("./
|
|
2
|
-
const
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const require_button = require("./button-C4MXPxsC.cjs");
|
|
1
|
+
const require_utils = require("./utils-CoA0q63n.cjs");
|
|
2
|
+
const require_truncated_text = require("./truncated-text-D0t4atw5.cjs");
|
|
3
|
+
const require_icons = require("./icons-Ci8yEvvF.cjs");
|
|
4
|
+
const require_button = require("./button-D2ZYmVda.cjs");
|
|
6
5
|
let react = require("react");
|
|
7
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
8
7
|
let framer_motion = require("framer-motion");
|
|
@@ -729,4 +728,4 @@ Object.defineProperty(exports, "StepperWizardStep", {
|
|
|
729
728
|
}
|
|
730
729
|
});
|
|
731
730
|
|
|
732
|
-
//# sourceMappingURL=stepper-
|
|
731
|
+
//# sourceMappingURL=stepper-BuhQfQTH.cjs.map
|