@jarllyng/nostromo 3.1.0
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/base.css +312 -0
- package/dist/chunk-2DNQXAMB.cjs +2 -0
- package/dist/chunk-2DNQXAMB.cjs.map +1 -0
- package/dist/chunk-2JQROMCM.js +2 -0
- package/dist/chunk-2JQROMCM.js.map +1 -0
- package/dist/chunk-3BNGK67W.js +2 -0
- package/dist/chunk-3BNGK67W.js.map +1 -0
- package/dist/chunk-3V3OIZWQ.cjs +2 -0
- package/dist/chunk-3V3OIZWQ.cjs.map +1 -0
- package/dist/chunk-44HISN45.js +2 -0
- package/dist/chunk-44HISN45.js.map +1 -0
- package/dist/chunk-4FSJEW7W.cjs +2 -0
- package/dist/chunk-4FSJEW7W.cjs.map +1 -0
- package/dist/chunk-4PN7OGLX.cjs +2 -0
- package/dist/chunk-4PN7OGLX.cjs.map +1 -0
- package/dist/chunk-4TYVEXRA.cjs +2 -0
- package/dist/chunk-4TYVEXRA.cjs.map +1 -0
- package/dist/chunk-4WFEVNXW.cjs +2 -0
- package/dist/chunk-4WFEVNXW.cjs.map +1 -0
- package/dist/chunk-55N2IT62.cjs +2 -0
- package/dist/chunk-55N2IT62.cjs.map +1 -0
- package/dist/chunk-5PVFLXPO.cjs +3 -0
- package/dist/chunk-5PVFLXPO.cjs.map +1 -0
- package/dist/chunk-6QAYHUNV.js +3 -0
- package/dist/chunk-6QAYHUNV.js.map +1 -0
- package/dist/chunk-7PPAI3MM.cjs +2 -0
- package/dist/chunk-7PPAI3MM.cjs.map +1 -0
- package/dist/chunk-7SPPGTBT.cjs +2 -0
- package/dist/chunk-7SPPGTBT.cjs.map +1 -0
- package/dist/chunk-7W456HZL.js +2 -0
- package/dist/chunk-7W456HZL.js.map +1 -0
- package/dist/chunk-7WEIVLG3.cjs +2 -0
- package/dist/chunk-7WEIVLG3.cjs.map +1 -0
- package/dist/chunk-7YFUAGIW.cjs +2 -0
- package/dist/chunk-7YFUAGIW.cjs.map +1 -0
- package/dist/chunk-ABA7B5DE.js +2 -0
- package/dist/chunk-ABA7B5DE.js.map +1 -0
- package/dist/chunk-AC2JBXHQ.js +2 -0
- package/dist/chunk-AC2JBXHQ.js.map +1 -0
- package/dist/chunk-AHRTNKXE.js +2 -0
- package/dist/chunk-AHRTNKXE.js.map +1 -0
- package/dist/chunk-AVTJE2O2.js +3 -0
- package/dist/chunk-AVTJE2O2.js.map +1 -0
- package/dist/chunk-B2BWBKZA.cjs +2 -0
- package/dist/chunk-B2BWBKZA.cjs.map +1 -0
- package/dist/chunk-BSUHBLZO.cjs +2 -0
- package/dist/chunk-BSUHBLZO.cjs.map +1 -0
- package/dist/chunk-BYV75TDY.cjs +2 -0
- package/dist/chunk-BYV75TDY.cjs.map +1 -0
- package/dist/chunk-BZF3ZOAN.js +3 -0
- package/dist/chunk-BZF3ZOAN.js.map +1 -0
- package/dist/chunk-CEMOHO3Z.js +2 -0
- package/dist/chunk-CEMOHO3Z.js.map +1 -0
- package/dist/chunk-COXN6XBA.js +2 -0
- package/dist/chunk-COXN6XBA.js.map +1 -0
- package/dist/chunk-CVOSWGQZ.js +2 -0
- package/dist/chunk-CVOSWGQZ.js.map +1 -0
- package/dist/chunk-EFCNLYYW.cjs +2 -0
- package/dist/chunk-EFCNLYYW.cjs.map +1 -0
- package/dist/chunk-EGQ2Q37R.cjs +2 -0
- package/dist/chunk-EGQ2Q37R.cjs.map +1 -0
- package/dist/chunk-EIXD3Y4R.js +2 -0
- package/dist/chunk-EIXD3Y4R.js.map +1 -0
- package/dist/chunk-EVRQYWZ3.cjs +2 -0
- package/dist/chunk-EVRQYWZ3.cjs.map +1 -0
- package/dist/chunk-FUENXWR7.cjs +2 -0
- package/dist/chunk-FUENXWR7.cjs.map +1 -0
- package/dist/chunk-G35BR7SK.cjs +2 -0
- package/dist/chunk-G35BR7SK.cjs.map +1 -0
- package/dist/chunk-G5ZSOVJY.cjs +2 -0
- package/dist/chunk-G5ZSOVJY.cjs.map +1 -0
- package/dist/chunk-G6TR5RGR.js +2 -0
- package/dist/chunk-G6TR5RGR.js.map +1 -0
- package/dist/chunk-GUJB555L.js +2 -0
- package/dist/chunk-GUJB555L.js.map +1 -0
- package/dist/chunk-HD3TMQPR.js +2 -0
- package/dist/chunk-HD3TMQPR.js.map +1 -0
- package/dist/chunk-HWZTMVQV.cjs +2 -0
- package/dist/chunk-HWZTMVQV.cjs.map +1 -0
- package/dist/chunk-IOX4WPJL.cjs +2 -0
- package/dist/chunk-IOX4WPJL.cjs.map +1 -0
- package/dist/chunk-ITRGJNWL.cjs +2 -0
- package/dist/chunk-ITRGJNWL.cjs.map +1 -0
- package/dist/chunk-J4VRJVTO.cjs +2 -0
- package/dist/chunk-J4VRJVTO.cjs.map +1 -0
- package/dist/chunk-JEHIMQQZ.js +2 -0
- package/dist/chunk-JEHIMQQZ.js.map +1 -0
- package/dist/chunk-JUOCEYUF.cjs +2 -0
- package/dist/chunk-JUOCEYUF.cjs.map +1 -0
- package/dist/chunk-JZROH43C.js +2 -0
- package/dist/chunk-JZROH43C.js.map +1 -0
- package/dist/chunk-K2JCGDU7.cjs +3 -0
- package/dist/chunk-K2JCGDU7.cjs.map +1 -0
- package/dist/chunk-LR4VUFOQ.js +2 -0
- package/dist/chunk-LR4VUFOQ.js.map +1 -0
- package/dist/chunk-LXQT7FH6.cjs +2 -0
- package/dist/chunk-LXQT7FH6.cjs.map +1 -0
- package/dist/chunk-LYVCB45L.js +2 -0
- package/dist/chunk-LYVCB45L.js.map +1 -0
- package/dist/chunk-M5IBD3KV.js +2 -0
- package/dist/chunk-M5IBD3KV.js.map +1 -0
- package/dist/chunk-MLJZU63I.cjs +2 -0
- package/dist/chunk-MLJZU63I.cjs.map +1 -0
- package/dist/chunk-MLSE5XSB.cjs +3 -0
- package/dist/chunk-MLSE5XSB.cjs.map +1 -0
- package/dist/chunk-MRZOLUSF.js +2 -0
- package/dist/chunk-MRZOLUSF.js.map +1 -0
- package/dist/chunk-MVCGR7JQ.js +2 -0
- package/dist/chunk-MVCGR7JQ.js.map +1 -0
- package/dist/chunk-NLD4R74T.js +2 -0
- package/dist/chunk-NLD4R74T.js.map +1 -0
- package/dist/chunk-OEN63W3G.cjs +2 -0
- package/dist/chunk-OEN63W3G.cjs.map +1 -0
- package/dist/chunk-OUWOPYAX.js +2 -0
- package/dist/chunk-OUWOPYAX.js.map +1 -0
- package/dist/chunk-OZ3RIKZO.cjs +2 -0
- package/dist/chunk-OZ3RIKZO.cjs.map +1 -0
- package/dist/chunk-PEYPRWZP.js +2 -0
- package/dist/chunk-PEYPRWZP.js.map +1 -0
- package/dist/chunk-PMNNV4ML.cjs +2 -0
- package/dist/chunk-PMNNV4ML.cjs.map +1 -0
- package/dist/chunk-PVHTEE5T.cjs +2 -0
- package/dist/chunk-PVHTEE5T.cjs.map +1 -0
- package/dist/chunk-Q6QMSAJR.js +2 -0
- package/dist/chunk-Q6QMSAJR.js.map +1 -0
- package/dist/chunk-QBAURT3I.js +2 -0
- package/dist/chunk-QBAURT3I.js.map +1 -0
- package/dist/chunk-QF5CRDZI.js +2 -0
- package/dist/chunk-QF5CRDZI.js.map +1 -0
- package/dist/chunk-RC2THAIA.js +2 -0
- package/dist/chunk-RC2THAIA.js.map +1 -0
- package/dist/chunk-RPRISB7O.cjs +2 -0
- package/dist/chunk-RPRISB7O.cjs.map +1 -0
- package/dist/chunk-SD4IIQ2I.cjs +2 -0
- package/dist/chunk-SD4IIQ2I.cjs.map +1 -0
- package/dist/chunk-SLGMKBST.js +2 -0
- package/dist/chunk-SLGMKBST.js.map +1 -0
- package/dist/chunk-TGPWW7FC.js +2 -0
- package/dist/chunk-TGPWW7FC.js.map +1 -0
- package/dist/chunk-TJFZAMBB.js +2 -0
- package/dist/chunk-TJFZAMBB.js.map +1 -0
- package/dist/chunk-UL6MF7ES.js +2 -0
- package/dist/chunk-UL6MF7ES.js.map +1 -0
- package/dist/chunk-V77N662N.cjs +2 -0
- package/dist/chunk-V77N662N.cjs.map +1 -0
- package/dist/chunk-VD6S2PE4.js +2 -0
- package/dist/chunk-VD6S2PE4.js.map +1 -0
- package/dist/chunk-VXMDVKAD.js +2 -0
- package/dist/chunk-VXMDVKAD.js.map +1 -0
- package/dist/chunk-WW2DDHCI.js +2 -0
- package/dist/chunk-WW2DDHCI.js.map +1 -0
- package/dist/chunk-XPIBRXTW.cjs +2 -0
- package/dist/chunk-XPIBRXTW.cjs.map +1 -0
- package/dist/chunk-XQUZ7DUN.js +2 -0
- package/dist/chunk-XQUZ7DUN.js.map +1 -0
- package/dist/chunk-YNSODGYK.js +2 -0
- package/dist/chunk-YNSODGYK.js.map +1 -0
- package/dist/chunk-ZC4HJSII.cjs +2 -0
- package/dist/chunk-ZC4HJSII.cjs.map +1 -0
- package/dist/chunk-ZEJAFIOC.js +2 -0
- package/dist/chunk-ZEJAFIOC.js.map +1 -0
- package/dist/chunk-ZQDFYSZB.cjs +2 -0
- package/dist/chunk-ZQDFYSZB.cjs.map +1 -0
- package/dist/chunk-ZYP2PDSX.cjs +2 -0
- package/dist/chunk-ZYP2PDSX.cjs.map +1 -0
- package/dist/components/core/accordion.cjs +2 -0
- package/dist/components/core/accordion.cjs.map +1 -0
- package/dist/components/core/accordion.d.cts +53 -0
- package/dist/components/core/accordion.d.ts +53 -0
- package/dist/components/core/accordion.js +2 -0
- package/dist/components/core/accordion.js.map +1 -0
- package/dist/components/core/alert.cjs +2 -0
- package/dist/components/core/alert.cjs.map +1 -0
- package/dist/components/core/alert.d.cts +29 -0
- package/dist/components/core/alert.d.ts +29 -0
- package/dist/components/core/alert.js +2 -0
- package/dist/components/core/alert.js.map +1 -0
- package/dist/components/core/avatar.cjs +2 -0
- package/dist/components/core/avatar.cjs.map +1 -0
- package/dist/components/core/avatar.d.cts +22 -0
- package/dist/components/core/avatar.d.ts +22 -0
- package/dist/components/core/avatar.js +2 -0
- package/dist/components/core/avatar.js.map +1 -0
- package/dist/components/core/badge.cjs +2 -0
- package/dist/components/core/badge.cjs.map +1 -0
- package/dist/components/core/badge.d.cts +43 -0
- package/dist/components/core/badge.d.ts +43 -0
- package/dist/components/core/badge.js +2 -0
- package/dist/components/core/badge.js.map +1 -0
- package/dist/components/core/breadcrumb.cjs +2 -0
- package/dist/components/core/breadcrumb.cjs.map +1 -0
- package/dist/components/core/breadcrumb.d.cts +43 -0
- package/dist/components/core/breadcrumb.d.ts +43 -0
- package/dist/components/core/breadcrumb.js +2 -0
- package/dist/components/core/breadcrumb.js.map +1 -0
- package/dist/components/core/button.cjs +2 -0
- package/dist/components/core/button.cjs.map +1 -0
- package/dist/components/core/button.d.cts +39 -0
- package/dist/components/core/button.d.ts +39 -0
- package/dist/components/core/button.js +2 -0
- package/dist/components/core/button.js.map +1 -0
- package/dist/components/core/calendar.cjs +2 -0
- package/dist/components/core/calendar.cjs.map +1 -0
- package/dist/components/core/calendar.d.cts +45 -0
- package/dist/components/core/calendar.d.ts +45 -0
- package/dist/components/core/calendar.js +2 -0
- package/dist/components/core/calendar.js.map +1 -0
- package/dist/components/core/card.cjs +2 -0
- package/dist/components/core/card.cjs.map +1 -0
- package/dist/components/core/card.d.cts +26 -0
- package/dist/components/core/card.d.ts +26 -0
- package/dist/components/core/card.js +2 -0
- package/dist/components/core/card.js.map +1 -0
- package/dist/components/core/charts-lazy.cjs +2 -0
- package/dist/components/core/charts-lazy.cjs.map +1 -0
- package/dist/components/core/charts-lazy.d.cts +31 -0
- package/dist/components/core/charts-lazy.d.ts +31 -0
- package/dist/components/core/charts-lazy.js +2 -0
- package/dist/components/core/charts-lazy.js.map +1 -0
- package/dist/components/core/charts.cjs +2 -0
- package/dist/components/core/charts.cjs.map +1 -0
- package/dist/components/core/charts.d.cts +35 -0
- package/dist/components/core/charts.d.ts +35 -0
- package/dist/components/core/charts.js +2 -0
- package/dist/components/core/charts.js.map +1 -0
- package/dist/components/core/checkbox.cjs +2 -0
- package/dist/components/core/checkbox.cjs.map +1 -0
- package/dist/components/core/checkbox.d.cts +31 -0
- package/dist/components/core/checkbox.d.ts +31 -0
- package/dist/components/core/checkbox.js +2 -0
- package/dist/components/core/checkbox.js.map +1 -0
- package/dist/components/core/data-table.cjs +2 -0
- package/dist/components/core/data-table.cjs.map +1 -0
- package/dist/components/core/data-table.d.cts +54 -0
- package/dist/components/core/data-table.d.ts +54 -0
- package/dist/components/core/data-table.js +2 -0
- package/dist/components/core/data-table.js.map +1 -0
- package/dist/components/core/dialog.cjs +2 -0
- package/dist/components/core/dialog.cjs.map +1 -0
- package/dist/components/core/dialog.d.cts +34 -0
- package/dist/components/core/dialog.d.ts +34 -0
- package/dist/components/core/dialog.js +2 -0
- package/dist/components/core/dialog.js.map +1 -0
- package/dist/components/core/error-boundary.cjs +2 -0
- package/dist/components/core/error-boundary.cjs.map +1 -0
- package/dist/components/core/error-boundary.d.cts +35 -0
- package/dist/components/core/error-boundary.d.ts +35 -0
- package/dist/components/core/error-boundary.js +2 -0
- package/dist/components/core/error-boundary.js.map +1 -0
- package/dist/components/core/error-message.cjs +2 -0
- package/dist/components/core/error-message.cjs.map +1 -0
- package/dist/components/core/error-message.d.cts +13 -0
- package/dist/components/core/error-message.d.ts +13 -0
- package/dist/components/core/error-message.js +2 -0
- package/dist/components/core/error-message.js.map +1 -0
- package/dist/components/core/helper-text.cjs +2 -0
- package/dist/components/core/helper-text.cjs.map +1 -0
- package/dist/components/core/helper-text.d.cts +13 -0
- package/dist/components/core/helper-text.d.ts +13 -0
- package/dist/components/core/helper-text.js +2 -0
- package/dist/components/core/helper-text.js.map +1 -0
- package/dist/components/core/icon.cjs +2 -0
- package/dist/components/core/icon.cjs.map +1 -0
- package/dist/components/core/icon.d.cts +19 -0
- package/dist/components/core/icon.d.ts +19 -0
- package/dist/components/core/icon.js +2 -0
- package/dist/components/core/icon.js.map +1 -0
- package/dist/components/core/input.cjs +2 -0
- package/dist/components/core/input.cjs.map +1 -0
- package/dist/components/core/input.d.cts +18 -0
- package/dist/components/core/input.d.ts +18 -0
- package/dist/components/core/input.js +2 -0
- package/dist/components/core/input.js.map +1 -0
- package/dist/components/core/label.cjs +2 -0
- package/dist/components/core/label.cjs.map +1 -0
- package/dist/components/core/label.d.cts +14 -0
- package/dist/components/core/label.d.ts +14 -0
- package/dist/components/core/label.js +2 -0
- package/dist/components/core/label.js.map +1 -0
- package/dist/components/core/pagination.cjs +2 -0
- package/dist/components/core/pagination.cjs.map +1 -0
- package/dist/components/core/pagination.d.cts +32 -0
- package/dist/components/core/pagination.d.ts +32 -0
- package/dist/components/core/pagination.js +2 -0
- package/dist/components/core/pagination.js.map +1 -0
- package/dist/components/core/progress.cjs +2 -0
- package/dist/components/core/progress.cjs.map +1 -0
- package/dist/components/core/progress.d.cts +44 -0
- package/dist/components/core/progress.d.ts +44 -0
- package/dist/components/core/progress.js +2 -0
- package/dist/components/core/progress.js.map +1 -0
- package/dist/components/core/radio-group.cjs +2 -0
- package/dist/components/core/radio-group.cjs.map +1 -0
- package/dist/components/core/radio-group.d.cts +71 -0
- package/dist/components/core/radio-group.d.ts +71 -0
- package/dist/components/core/radio-group.js +2 -0
- package/dist/components/core/radio-group.js.map +1 -0
- package/dist/components/core/select.cjs +2 -0
- package/dist/components/core/select.cjs.map +1 -0
- package/dist/components/core/select.d.cts +41 -0
- package/dist/components/core/select.d.ts +41 -0
- package/dist/components/core/select.js +2 -0
- package/dist/components/core/select.js.map +1 -0
- package/dist/components/core/separator.cjs +2 -0
- package/dist/components/core/separator.cjs.map +1 -0
- package/dist/components/core/separator.d.cts +16 -0
- package/dist/components/core/separator.d.ts +16 -0
- package/dist/components/core/separator.js +2 -0
- package/dist/components/core/separator.js.map +1 -0
- package/dist/components/core/skeleton.cjs +2 -0
- package/dist/components/core/skeleton.cjs.map +1 -0
- package/dist/components/core/skeleton.d.cts +46 -0
- package/dist/components/core/skeleton.d.ts +46 -0
- package/dist/components/core/skeleton.js +2 -0
- package/dist/components/core/skeleton.js.map +1 -0
- package/dist/components/core/switch.cjs +2 -0
- package/dist/components/core/switch.cjs.map +1 -0
- package/dist/components/core/switch.d.cts +21 -0
- package/dist/components/core/switch.d.ts +21 -0
- package/dist/components/core/switch.js +2 -0
- package/dist/components/core/switch.js.map +1 -0
- package/dist/components/core/table.cjs +2 -0
- package/dist/components/core/table.cjs.map +1 -0
- package/dist/components/core/table.d.cts +84 -0
- package/dist/components/core/table.d.ts +84 -0
- package/dist/components/core/table.js +2 -0
- package/dist/components/core/table.js.map +1 -0
- package/dist/components/core/tabs.cjs +2 -0
- package/dist/components/core/tabs.cjs.map +1 -0
- package/dist/components/core/tabs.d.cts +28 -0
- package/dist/components/core/tabs.d.ts +28 -0
- package/dist/components/core/tabs.js +2 -0
- package/dist/components/core/tabs.js.map +1 -0
- package/dist/components/core/textarea.cjs +2 -0
- package/dist/components/core/textarea.cjs.map +1 -0
- package/dist/components/core/textarea.d.cts +18 -0
- package/dist/components/core/textarea.d.ts +18 -0
- package/dist/components/core/textarea.js +2 -0
- package/dist/components/core/textarea.js.map +1 -0
- package/dist/components/core/toast.cjs +2 -0
- package/dist/components/core/toast.cjs.map +1 -0
- package/dist/components/core/toast.d.cts +50 -0
- package/dist/components/core/toast.d.ts +50 -0
- package/dist/components/core/toast.js +2 -0
- package/dist/components/core/toast.js.map +1 -0
- package/dist/components/core/tooltip.cjs +2 -0
- package/dist/components/core/tooltip.cjs.map +1 -0
- package/dist/components/core/tooltip.d.cts +68 -0
- package/dist/components/core/tooltip.d.ts +68 -0
- package/dist/components/core/tooltip.js +2 -0
- package/dist/components/core/tooltip.js.map +1 -0
- package/dist/components/marketing/features.cjs +2 -0
- package/dist/components/marketing/features.cjs.map +1 -0
- package/dist/components/marketing/features.d.cts +35 -0
- package/dist/components/marketing/features.d.ts +35 -0
- package/dist/components/marketing/features.js +2 -0
- package/dist/components/marketing/features.js.map +1 -0
- package/dist/components/marketing/gallery.cjs +2 -0
- package/dist/components/marketing/gallery.cjs.map +1 -0
- package/dist/components/marketing/gallery.d.cts +38 -0
- package/dist/components/marketing/gallery.d.ts +38 -0
- package/dist/components/marketing/gallery.js +2 -0
- package/dist/components/marketing/gallery.js.map +1 -0
- package/dist/components/marketing/hero.cjs +2 -0
- package/dist/components/marketing/hero.cjs.map +1 -0
- package/dist/components/marketing/hero.d.cts +31 -0
- package/dist/components/marketing/hero.d.ts +31 -0
- package/dist/components/marketing/hero.js +2 -0
- package/dist/components/marketing/hero.js.map +1 -0
- package/dist/components/marketing/logo-wall.cjs +2 -0
- package/dist/components/marketing/logo-wall.cjs.map +1 -0
- package/dist/components/marketing/logo-wall.d.cts +44 -0
- package/dist/components/marketing/logo-wall.d.ts +44 -0
- package/dist/components/marketing/logo-wall.js +2 -0
- package/dist/components/marketing/logo-wall.js.map +1 -0
- package/dist/components/marketing/pricing.cjs +2 -0
- package/dist/components/marketing/pricing.cjs.map +1 -0
- package/dist/components/marketing/pricing.d.cts +52 -0
- package/dist/components/marketing/pricing.d.ts +52 -0
- package/dist/components/marketing/pricing.js +2 -0
- package/dist/components/marketing/pricing.js.map +1 -0
- package/dist/components/marketing/testimonials.cjs +2 -0
- package/dist/components/marketing/testimonials.cjs.map +1 -0
- package/dist/components/marketing/testimonials.d.cts +34 -0
- package/dist/components/marketing/testimonials.d.ts +34 -0
- package/dist/components/marketing/testimonials.js +2 -0
- package/dist/components/marketing/testimonials.js.map +1 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +2 -0
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +125 -0
- package/dist/index.d.ts +125 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/lazy.cjs +2 -0
- package/dist/lib/lazy.cjs.map +1 -0
- package/dist/lib/lazy.d.cts +43 -0
- package/dist/lib/lazy.d.ts +43 -0
- package/dist/lib/lazy.js +2 -0
- package/dist/lib/lazy.js.map +1 -0
- package/dist/lib/performance.cjs +2 -0
- package/dist/lib/performance.cjs.map +1 -0
- package/dist/lib/performance.d.cts +52 -0
- package/dist/lib/performance.d.ts +52 -0
- package/dist/lib/performance.js +2 -0
- package/dist/lib/performance.js.map +1 -0
- package/dist/tailwind.css +29 -0
- package/dist/themes/__tests__/themes.test.ts +46 -0
- package/dist/themes/index.ts +50 -0
- package/dist/themes/lv-426.css +342 -0
- package/dist/themes/mother.css +280 -0
- package/dist/themes/nostromo.css +315 -0
- package/dist/themes/sulaco.css +404 -0
- package/dist/themes/utils.ts +105 -0
- package/dist/tokens.css +212 -0
- package/package.json +321 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/label.tsx"],"names":["labelVariants","cva","Label","className","variant","size","weight","props","ref","cn"],"mappings":"uGAIA,IAAMA,EAAgBC,GAAAA,CACpB,wHAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CAAS,kBACT,KAAA,CAAO,uBAAA,CACP,KAAA,CAAO,kBAAA,CACP,OAAA,CAAS,kBAAA,CACT,QAAS,kBAAA,CACT,IAAA,CAAM,eACR,CAAA,CACA,IAAA,CAAM,CACJ,EAAA,CAAI,SAAA,CACJ,OAAA,CAAS,SAAA,CACT,EAAA,CAAI,WACN,EACA,MAAA,CAAQ,CACN,OAAQ,aAAA,CACR,MAAA,CAAQ,cACR,QAAA,CAAU,eAAA,CACV,IAAA,CAAM,WACR,CACF,CAAA,CACA,gBAAiB,CACf,OAAA,CAAS,UACT,IAAA,CAAM,SAAA,CACN,OAAQ,QACV,CACF,CACF,CAAA,CAMMC,CAAAA,CAAc,CAAA,CAAA,UAAA,CAClB,CAAC,CAAE,SAAA,CAAAC,IAAW,OAAA,CAAAC,CAAAA,CAAS,KAAAC,CAAAA,CAAM,MAAA,CAAAC,CAAAA,CAAQ,GAAGC,CAAM,CAAA,CAAGC,IAC/C,CAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,IAAKA,CAAAA,CACL,SAAA,CAAWC,EAAGT,CAAAA,CAAc,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,OAAAC,CAAO,CAAC,EAAGH,GAAS,CAAA,CAChE,GAAGI,CAAAA,CACN,CAEJ,EACAL,CAAAA,CAAM,WAAA,CAAc,OAAA","file":"chunk-LYVCB45L.js","sourcesContent":["import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground',\n error: 'text-destructive',\n success: 'text-success-600',\n warning: 'text-warning-600',\n info: 'text-info-600',\n },\n size: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n weight: 'medium',\n },\n }\n);\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement>,\n VariantProps<typeof labelVariants> {}\n\nconst Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, variant, size, weight, ...props }, ref) => (\n <label\n ref={ref}\n className={cn(labelVariants({ variant, size, weight }), className)}\n {...props}\n />\n )\n);\nLabel.displayName = 'Label';\n\nexport { Label, labelVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import t,{useState,useEffect,useCallback,useRef}from'react';import {cva}from'class-variance-authority';var E=cva("relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50","top-right":"fixed top-4 right-4 z-50","bottom-left":"fixed bottom-4 left-4 z-50","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50","bottom-right":"fixed bottom-4 right-4 z-50"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),m=cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),M=t.createContext(void 0),I=()=>{let i=t.useContext(M);if(!i)throw new Error("useToast must be used within a ToastProvider");return i},X=({children:i})=>{let[d,r]=useState([]),o=useRef(new Map),e=useCallback(s=>{let a=o.current.get(s);a&&(clearTimeout(a),o.current.delete(s)),r(f=>f.filter(l=>l.id!==s));},[]),n=useRef(e);useEffect(()=>{n.current=e;},[e]);let u=useCallback(s=>{let a=Math.random().toString(36).substr(2,9),f={...s,id:a};if(r(l=>[...l,f]),s.duration!==0){let l=setTimeout(()=>{n.current(a),o.current.delete(a);},s.duration||5e3);o.current.set(a,l);}return a},[]),c=useCallback(()=>{o.current.forEach(s=>clearTimeout(s)),o.current.clear(),r([]);},[]);return useEffect(()=>{let s=o.current;return ()=>{s.forEach(a=>clearTimeout(a)),s.clear();}},[]),t.createElement(M.Provider,{value:{toasts:d,addToast:u,removeToast:e,clearToasts:c}},i,t.createElement(H,{toasts:d}))},H=({toasts:i})=>{if(i.length===0)return null;let d=i.reduce((r,o)=>{let e=o.position||"top-right";return r[e]||(r[e]=[]),r[e].push(o),r},{});return t.createElement("div",{className:"fixed inset-0 z-50 pointer-events-none"},Object.entries(d).map(([r,o])=>t.createElement("div",{key:r,className:"pointer-events-none"},o.map((e,n)=>{let{style:u,...c}=e;return t.createElement(S,{key:e.id,...c,style:{...u,transform:`translateY(${n*8}px) ${u?.transform||""}`,marginBottom:n<o.length-1?"8px":"0"}})}))))},V=t.forwardRef(({id:i,title:d,description:r,variant:o="default",position:e="top-right",animation:n="default",duration:u=5e3,onClose:c,action:s,className:a$1,children:f,appearDelay:l=10,animationMs:g=150,...x},k)=>{let[C,y]=useState(l<=0),[T,O]=useState(false);useEffect(()=>{if(l<=0)return;let b=window.setTimeout(()=>y(true),l);return ()=>clearTimeout(b)},[l]);let h=useCallback(()=>{O(true),window.setTimeout(()=>{c?.(),y(false);},g);},[c,g]);useEffect(()=>{if(u>0){let b=window.setTimeout(h,u);return ()=>clearTimeout(b)}},[u,h]);let B=()=>{switch(o){case "success":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};return C?t.createElement("div",{ref:k,className:a(E({variant:o,position:e,animation:n}),T?"opacity-0":"opacity-100","pointer-events-auto",a$1),"data-visible":C?"true":"false","data-leaving":T?"true":"false",style:{transition:`all ${g}ms ease-in-out`,transform:T?"translateX(100%)":x.style?.transform||"translateX(0)",...x.style},...x},t.createElement("div",{className:"flex items-start space-x-3"},B(),t.createElement("div",{className:"flex-1 min-w-0"},d&&t.createElement("div",{className:"text-sm font-medium"},d),r&&t.createElement("div",{className:"mt-1 text-sm opacity-90"},r),f)),s&&t.createElement("button",{type:"button",onClick:s.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500"},s.label),t.createElement("button",{type:"button",onClick:h,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500","aria-label":"Close notification"},t.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})))):null});V.displayName="Toast";var S=a$1(V),A=()=>{let{addToast:i,removeToast:d,clearToasts:r}=I();return {success:(e,n)=>i({variant:"success",title:"Success",description:e,...n}),error:(e,n)=>i({variant:"error",title:"Error",description:e,...n}),warning:(e,n)=>i({variant:"warning",title:"Warning",description:e,...n}),info:(e,n)=>i({variant:"info",title:"Info",description:e,...n}),custom:e=>i(e),dismiss:d,clear:r}};export{E as a,m as b,I as c,X as d,S as e,A as f};//# sourceMappingURL=chunk-M5IBD3KV.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-M5IBD3KV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","useToast","context","ToastProvider","children","toasts","setToasts","useState","timeoutRefs","useRef","removeToast","useCallback","id","timeoutId","prev","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","toastsByPosition","acc","position","positionToasts","index","toastStyle","toastProps","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","handleClose","getIcon","cn","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-M5IBD3KV.js","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50\",\n \"top-center\": \"fixed top-4 left-1/2 -translate-x-1/2 z-50\",\n \"top-right\": \"fixed top-4 right-4 z-50\",\n \"bottom-left\": \"fixed bottom-4 left-4 z-50\",\n \"bottom-center\": \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50\",\n \"bottom-right\": \"fixed bottom-4 right-4 z-50\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const removeToast = useCallback((id: string) => {\n // Clear timeout if it exists\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = Math.random().toString(36).substr(2, 9);\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // Auto remove toast after duration\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n timeoutRefs.current.delete(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n // Clear all timeouts\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n setToasts([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer toasts={toasts} />\n </ToastContext.Provider>\n );\n};\n\n// Toast Container\nconst ToastContainer: React.FC<{ toasts: ToastProps[] }> = ({ toasts }) => {\n if (toasts.length === 0) return null;\n\n // Group toasts by position for stacking\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = toast.position || \"top-right\";\n if (!acc[position]) {\n acc[position] = [];\n }\n acc[position].push(toast);\n return acc;\n },\n {} as Record<string, ToastProps[]>,\n );\n\n return (\n <div className=\"fixed inset-0 z-50 pointer-events-none\">\n {Object.entries(toastsByPosition).map(([position, positionToasts]) => (\n <div key={position} className=\"pointer-events-none\">\n {positionToasts.map((toast, index) => {\n const { style: toastStyle, ...toastProps } = toast;\n return (\n <Toast\n key={toast.id}\n {...toastProps}\n style={{\n ...toastStyle,\n // Stack toasts with offset\n transform: `translateY(${index * 8}px) ${toastStyle?.transform || \"\"}`,\n marginBottom: index < positionToasts.length - 1 ? \"8px\" : \"0\",\n }}\n />\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n ...props\n },\n ref,\n ) => {\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n const handleClose = useCallback(() => {\n setIsLeaving(true);\n window.setTimeout(() => {\n onClose?.();\n setIsVisible(false);\n }, animationMs);\n }, [onClose, animationMs]);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ variant, position, animation }),\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n transform: isLeaving\n ? \"translateX(100%)\"\n : props.style?.transform || \"translateX(0)\",\n ...props.style,\n }}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var e__namespace=/*#__PURE__*/_interopNamespace(e);var V=classVarianceAuthority.cva("grid gap-2",{variants:{orientation:{vertical:"grid-cols-1",horizontal:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4"}},defaultVariants:{orientation:"vertical"}}),w=classVarianceAuthority.cva("peer h-4 w-4 shrink-0 rounded-full border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200",{variants:{variant:{default:"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary",error:"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive",success:"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500"},size:{default:"h-4 w-4",sm:"h-3 w-3",lg:"h-5 w-5"}},defaultVariants:{variant:"default",size:"default"}}),E=e__namespace.forwardRef(({className:u,error:t,helperText:r,label:s,required:d,orientation:p,name:m,defaultValue:o,value:n,onValueChange:l,disabled:b,children:c,...f},v)=>{let g=e__namespace.useId(),h=s?`${g}-label`:void 0,R=r?`${g}-helper`:void 0,y=t?`${g}-error`:void 0,x=a=>{l&&l(a.target.value);};return e__namespace.createElement("div",{className:"space-y-2"},s&&e__namespace.createElement("label",{id:h,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},s,d&&e__namespace.createElement("span",{className:"text-error-500 ml-1"},"*")),e__namespace.createElement("div",{ref:v,className:chunkITRGJNWL_cjs.a(V({orientation:p,className:u})),role:"radiogroup","aria-labelledby":h,"aria-describedby":chunkITRGJNWL_cjs.a(R,y)||void 0,"aria-invalid":t,...f},e__namespace.Children.map(c,a=>{if(e__namespace.isValidElement(a)){let k=n!==void 0,P={name:m,disabled:!!(b??a.props.disabled),variant:t?"error":a.props.variant,...k?{checked:n===a.props.value}:{defaultChecked:o===a.props.value},onChange:x};return e__namespace.cloneElement(a,P)}return a})),r&&e__namespace.createElement("p",{id:R,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",t&&"text-destructive")},r))});E.displayName="RadioGroup";var N=e__namespace.forwardRef(({className:u,variant:t,size:r,value:s,label:d,disabled:p,id:m,onChange:o,...n},l)=>{let b=e__namespace.useId(),c=m||b,f=v=>{o&&o(v);};return e__namespace.createElement("div",{className:"flex items-center space-x-2"},e__namespace.createElement("input",{type:"radio",className:chunkITRGJNWL_cjs.a(w({variant:t,size:r,className:u})),ref:l,id:c,value:s,disabled:p,onChange:f,...n}),d&&e__namespace.createElement("label",{htmlFor:c,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d))});N.displayName="RadioItem";exports.a=V;exports.b=w;exports.c=E;exports.d=N;//# sourceMappingURL=chunk-MLJZU63I.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-MLJZU63I.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/radio-group.tsx"],"names":["radioGroupVariants","cva","radioItemVariants","RadioGroup","e","className","error","helperText","label","required","orientation","name","defaultValue","value","onValueChange","disabled","children","props","ref","radioGroupId","labelId","helperTextId","errorId","handleChange","event","cn","child","isControlled","childProps","RadioItem","variant","radioSize","id","onChange","generatedId","radioId"],"mappings":"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","file":"chunk-MLJZU63I.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst radioGroupVariants = cva(\"grid gap-2\", {\n variants: {\n orientation: {\n vertical: \"grid-cols-1\",\n horizontal: \"grid-cols-2 sm:grid-cols-3 md:grid-cols-4\",\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n});\n\nconst radioItemVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-full border border-border shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground data-[state=checked]:border-primary transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"border-border hover:border-border data-[state=checked]:bg-primary data-[state=checked]:border-primary\",\n error:\n \"border-destructive focus-visible:ring-destructive data-[state=checked]:bg-destructive data-[state=checked]:border-destructive\",\n success:\n \"border-success-500 focus-visible:ring-success-500 data-[state=checked]:bg-success-500 data-[state=checked]:border-success-500\",\n },\n size: {\n default: \"h-4 w-4\",\n sm: \"h-3 w-3\",\n lg: \"h-5 w-5\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface RadioGroupProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof radioGroupVariants> {\n /**\n * Whether the radio group is in an error state\n * @default false\n */\n error?: boolean;\n /**\n * Helper text to display below the radio group\n */\n helperText?: string;\n /**\n * Label text for the radio group\n */\n label?: string;\n /**\n * Whether the radio group is required\n * @default false\n */\n required?: boolean;\n /**\n * The name attribute for all radio buttons in the group\n */\n name?: string;\n /**\n * The default value of the radio group\n */\n defaultValue?: string;\n /**\n * The controlled value of the radio group\n */\n value?: string;\n /**\n * Callback fired when the value changes\n */\n onValueChange?: (value: string) => void;\n /**\n * Whether the radio group is disabled\n * @default false\n */\n disabled?: boolean;\n}\n\nexport interface RadioItemProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof radioItemVariants> {\n /**\n * The value of the radio item\n */\n value: string;\n /**\n * The label for the radio item\n */\n label?: string;\n /**\n * Whether the radio item is disabled\n * @default false\n */\n disabled?: boolean;\n}\n\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n className,\n error,\n helperText,\n label,\n required,\n orientation,\n name,\n defaultValue,\n value,\n onValueChange,\n disabled,\n children,\n ...props\n },\n ref,\n ) => {\n const radioGroupId = React.useId();\n const labelId = label ? `${radioGroupId}-label` : undefined;\n const helperTextId = helperText ? `${radioGroupId}-helper` : undefined;\n const errorId = error ? `${radioGroupId}-error` : undefined;\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onValueChange) {\n onValueChange(event.target.value);\n }\n };\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label\n id={labelId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n <div\n ref={ref}\n className={cn(radioGroupVariants({ orientation, className }))}\n role=\"radiogroup\"\n aria-labelledby={labelId}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n {...props}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement<RadioItemProps>(child)) {\n // Use controlled mode if value is provided, otherwise use uncontrolled\n const isControlled = value !== undefined;\n\n const childProps: Partial<RadioItemProps> = {\n name,\n disabled: Boolean(disabled ?? child.props.disabled),\n variant: error ? \"error\" : child.props.variant,\n ...(isControlled\n ? { checked: value === child.props.value }\n : { defaultChecked: defaultValue === child.props.value }),\n onChange: handleChange,\n };\n\n return React.cloneElement(child, childProps);\n }\n return child;\n })}\n </div>\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n );\n },\n);\nRadioGroup.displayName = \"RadioGroup\";\n\nconst RadioItem = React.forwardRef<HTMLInputElement, RadioItemProps>(\n (\n {\n className,\n variant,\n size: radioSize,\n value,\n label,\n disabled,\n id,\n onChange,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const radioId = id || generatedId;\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(event);\n }\n };\n\n return (\n <div className=\"flex items-center space-x-2\">\n <input\n type=\"radio\"\n className={cn(\n radioItemVariants({ variant, size: radioSize, className }),\n )}\n ref={ref}\n id={radioId}\n value={value}\n disabled={disabled}\n onChange={handleChange}\n {...props}\n />\n {label && (\n <label\n htmlFor={radioId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\nRadioItem.displayName = \"RadioItem\";\n\nexport { RadioGroup, RadioItem, radioGroupVariants, radioItemVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),n=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var n__default=/*#__PURE__*/_interopDefault(n);var L=classVarianceAuthority.cva("border border-border rounded-md overflow-hidden",{variants:{variant:{default:"bg-card",outlined:"border-2 border-border",filled:"bg-muted",ghost:"border-transparent bg-transparent"},size:{sm:"text-sm",md:"text-base",lg:"text-lg"}},defaultVariants:{variant:"default",size:"md"}}),z=classVarianceAuthority.cva("border-b border-border last:border-b-0",{variants:{variant:{default:"",outlined:"border-border",filled:"border-border",ghost:"border-transparent"}},defaultVariants:{variant:"default"}}),B=classVarianceAuthority.cva("flex w-full items-center justify-between py-4 px-6 text-left font-medium transition-colors hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset disabled:opacity-50 disabled:cursor-not-allowed",{variants:{variant:{default:"text-foreground",outlined:"text-foreground",filled:"text-foreground",ghost:"text-foreground"},size:{sm:"py-3 px-4 text-sm",md:"py-4 px-6 text-base",lg:"py-5 px-8 text-lg"}},defaultVariants:{variant:"default",size:"md"}}),K=classVarianceAuthority.cva("overflow-hidden transition-all duration-200 ease-in-out",{variants:{size:{sm:"text-sm",md:"text-base",lg:"text-lg"}},defaultVariants:{size:"md"}}),R=classVarianceAuthority.cva("h-4 w-4 shrink-0 transition-transform duration-200",{variants:{open:{true:"rotate-180",false:"rotate-0"}},defaultVariants:{open:false}}),E=n__default.default.createContext(void 0),N=n__default.default.createContext(null),T=()=>{let t=n__default.default.useContext(E);if(!t)throw new Error("Accordion components must be used within an Accordion");return t},P=()=>{let t=n__default.default.useContext(N);if(!t)throw new Error("Accordion components must be used within an AccordionItem");return t},S=n__default.default.forwardRef(({children:t,type:a="single",collapsible:c=true,value:l,defaultValue:i,onValueChange:o,variant:u="default",size:s="md",className:r,...f},g)=>{let[y,x]=n.useState(()=>i!==void 0?i:a==="single"?"":[]),p=l!==void 0,A=p?l:y,m=n.useCallback(e=>{p||x(e),o?.(e);},[p,o]),d={type:a,value:A,onValueChange:m,variant:u||"default",size:s||"md"};return n__default.default.createElement(E.Provider,{value:d},n__default.default.createElement("div",{ref:g,className:chunkITRGJNWL_cjs.a(L({variant:u,size:s}),r),"data-accordion-root":"true",...f},t))});S.displayName="Accordion";var $=n__default.default.forwardRef(({value:t,children:a,variant:c="default",className:l,disabled:i=false,...o},u)=>{let{variant:s,value:r,type:f,onValueChange:g}=T(),y=c==="default"?s:c,x=n__default.default.useId(),p=`accordion-trigger-${t}-${x}`,A=`accordion-content-${t}-${x}`,m=f==="single"?r===t:Array.isArray(r)&&r.includes(t),d=n.useCallback(()=>{if(!i)if(f==="single")g(m?"":t);else {let C=Array.isArray(r)?r:[];g(m?C.filter(I=>I!==t):[...C,t]);}},[i,m,f,t,r,g]),e={open:m,toggle:d,triggerId:p,contentId:A,value:t,disabled:i};return n__default.default.createElement(N.Provider,{value:e},n__default.default.createElement("div",{ref:u,className:chunkITRGJNWL_cjs.a(z({variant:y}),i&&"opacity-50 cursor-not-allowed",l),"data-value":t,"data-disabled":i,...o},a))});$.displayName="AccordionItem";var O=n__default.default.forwardRef(({children:t,variant:a="default",size:c="md",className:l,disabled:i=false,...o},u)=>{let{open:s,toggle:r,triggerId:f,contentId:g,disabled:y}=P(),{variant:x,size:p}=T(),A=a==="default"?x:a||"default",m=c==="md"?p:c||"md",d=y||i||false;return n__default.default.createElement("button",{...o,ref:u,type:"button",id:f,"aria-controls":g,"aria-expanded":s,"aria-disabled":d,disabled:d,"data-state":s?"open":"closed","data-accordion-trigger":"true",onClick:e=>{"onClick"in o&&o.onClick&&o.onClick(e),!d&&r();},onKeyDown:e=>{if("onKeyDown"in o&&o.onKeyDown&&o.onKeyDown(e),!d){if(e.key==="Enter"||e.key===" "){e.preventDefault(),e.stopPropagation(),r();return}if(e.key==="ArrowDown"||e.key==="ArrowUp"||e.key==="Home"||e.key==="End"){e.preventDefault();let C=e.currentTarget.closest('[data-accordion-root="true"]');if(!C)return;let b=Array.from(C.querySelectorAll('[data-accordion-trigger="true"]')).filter(D=>!D.disabled),M=e.currentTarget,V=b.indexOf(M);if(V===-1)return;let w;if(e.key==="ArrowDown")w=(V+1)%b.length;else if(e.key==="ArrowUp")w=(V-1+b.length)%b.length;else if(e.key==="Home")w=0;else if(e.key==="End")w=b.length-1;else return;b[w]?.focus();}}},className:chunkITRGJNWL_cjs.a(B({variant:A,size:m}),d&&"opacity-50 cursor-not-allowed",l)},n__default.default.createElement("span",{className:"flex-1"},t),n__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a(R({open:s})),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg"},n__default.default.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})))});O.displayName="AccordionTrigger";var j=n__default.default.forwardRef(({children:t,size:a="md",className:c,...l},i)=>{let{open:o,contentId:u,triggerId:s}=P(),{size:r}=T();return n__default.default.createElement("div",{...l,ref:i,id:u,role:"region","aria-labelledby":s,hidden:!o,"data-state":o?"open":"closed",className:chunkITRGJNWL_cjs.a(K({size:a==="md"?r:a}),"overflow-hidden transition-all duration-200 ease-in-out",c)},n__default.default.createElement("div",{className:"px-6 py-4"},t))});j.displayName="AccordionContent";
|
|
2
|
+
exports.a=L;exports.b=z;exports.c=B;exports.d=K;exports.e=R;exports.f=S;exports.g=$;exports.h=O;exports.i=j;//# sourceMappingURL=chunk-MLSE5XSB.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-MLSE5XSB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/accordion.tsx"],"names":["accordionVariants","cva","accordionItemVariants","accordionTriggerVariants","accordionContentVariants","accordionChevronVariants","AccordionContext","React","AccordionItemContext","useAccordionContext","context","useAccordionItemContext","Accordion","children","type","_collapsible","controlledValue","defaultValue","onValueChange","variant","size","className","props","ref","internalValue","setInternalValue","useState","isControlled","value","handleValueChange","useCallback","newValue","contextValue","cn","AccordionItem","disabled","contextVariant","accordionValue","finalVariant","baseId","triggerId","contentId","isOpen","handleToggle","currentValue","v","itemContextValue","AccordionTrigger","open","toggle","itemDisabled","contextSize","finalSize","finalDisabled","root","enabled","btn","current","idx","nextIdx","AccordionContent"],"mappings":"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","file":"chunk-MLSE5XSB.cjs","sourcesContent":["import React, { useState, useCallback } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\n// Accordion variants\nconst accordionVariants = cva(\n 'border border-border rounded-md overflow-hidden',\n {\n variants: {\n variant: {\n default: 'bg-card',\n outlined: 'border-2 border-border',\n filled: 'bg-muted',\n ghost: 'border-transparent bg-transparent'\n },\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'md'\n }\n }\n);\n\nconst accordionItemVariants = cva(\n 'border-b border-border last:border-b-0',\n {\n variants: {\n variant: {\n default: '',\n outlined: 'border-border',\n filled: 'border-border',\n ghost: 'border-transparent'\n }\n },\n defaultVariants: {\n variant: 'default'\n }\n }\n);\n\nconst accordionTriggerVariants = cva(\n 'flex w-full items-center justify-between py-4 px-6 text-left font-medium transition-colors hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring focus:ring-inset disabled:opacity-50 disabled:cursor-not-allowed',\n {\n variants: {\n variant: {\n default: 'text-foreground',\n outlined: 'text-foreground',\n filled: 'text-foreground',\n ghost: 'text-foreground'\n },\n size: {\n sm: 'py-3 px-4 text-sm',\n md: 'py-4 px-6 text-base',\n lg: 'py-5 px-8 text-lg'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'md'\n }\n }\n);\n\nconst accordionContentVariants = cva(\n 'overflow-hidden transition-all duration-200 ease-in-out',\n {\n variants: {\n size: {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n }\n },\n defaultVariants: {\n size: 'md'\n }\n }\n);\n\nconst accordionChevronVariants = cva(\n 'h-4 w-4 shrink-0 transition-transform duration-200',\n {\n variants: {\n open: {\n true: 'rotate-180',\n false: 'rotate-0'\n }\n },\n defaultVariants: {\n open: false\n }\n }\n);\n\n// Types\nexport interface AccordionProps extends VariantProps<typeof accordionVariants> {\n children: React.ReactNode;\n type?: 'single' | 'multiple';\n collapsible?: boolean;\n value?: string | string[];\n defaultValue?: string | string[];\n onValueChange?: (value: string | string[]) => void;\n className?: string;\n}\n\nexport interface AccordionItemProps extends VariantProps<typeof accordionItemVariants> {\n value: string;\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n}\n\nexport interface AccordionTriggerProps extends VariantProps<typeof accordionTriggerVariants>, Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onKeyDown'> {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLButtonElement>) => void;\n}\n\nexport interface AccordionContentProps extends VariantProps<typeof accordionContentVariants> {\n children: React.ReactNode;\n className?: string;\n}\n\n// Accordion Context\ninterface AccordionContextType {\n type: 'single' | 'multiple';\n value: string | string[];\n onValueChange: (value: string | string[]) => void;\n variant: 'default' | 'outlined' | 'filled' | 'ghost';\n size: 'sm' | 'md' | 'lg';\n}\n\n// Accordion Item Context\ninterface AccordionItemContextType {\n open: boolean;\n toggle: () => void;\n triggerId: string;\n contentId: string;\n value: string;\n disabled: boolean;\n}\n\nconst AccordionContext = React.createContext<AccordionContextType | undefined>(undefined);\nconst AccordionItemContext = React.createContext<AccordionItemContextType | null>(null);\n\nconst useAccordionContext = () => {\n const context = React.useContext(AccordionContext);\n if (!context) {\n throw new Error('Accordion components must be used within an Accordion');\n }\n return context;\n};\n\nconst useAccordionItemContext = () => {\n const context = React.useContext(AccordionItemContext);\n if (!context) {\n throw new Error('Accordion components must be used within an AccordionItem');\n }\n return context;\n};\n\n// Main Accordion Component\nexport const Accordion = React.forwardRef<HTMLDivElement, AccordionProps>(\n ({\n children,\n type = 'single',\n collapsible: _collapsible = true,\n value: controlledValue,\n defaultValue,\n onValueChange,\n variant = 'default',\n size = 'md',\n className,\n ...props\n }, ref) => {\n const [internalValue, setInternalValue] = useState<string | string[]>(() => {\n if (defaultValue !== undefined) {\n return defaultValue;\n }\n return type === 'single' ? '' : [];\n });\n \n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : internalValue;\n \n const handleValueChange = useCallback((newValue: string | string[]) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onValueChange?.(newValue);\n }, [isControlled, onValueChange]);\n\n const contextValue: AccordionContextType = {\n type,\n value,\n onValueChange: handleValueChange,\n variant: variant || 'default',\n size: size || 'md'\n };\n\n return (\n <AccordionContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(accordionVariants({ variant, size }), className)}\n data-accordion-root=\"true\"\n {...props}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n }\n);\n\nAccordion.displayName = 'Accordion';\n\n// Accordion Item Component\nexport const AccordionItem = React.forwardRef<HTMLDivElement, AccordionItemProps>(\n ({\n value,\n children,\n variant = 'default',\n className,\n disabled = false,\n ...props\n }, ref) => {\n const { variant: contextVariant, value: accordionValue, type, onValueChange } = useAccordionContext();\n const finalVariant = variant === 'default' ? contextVariant : variant;\n \n // Stable IDs using useId\n const baseId = React.useId();\n const triggerId = `accordion-trigger-${value}-${baseId}`;\n const contentId = `accordion-content-${value}-${baseId}`;\n \n // Determine if this item is open\n const isOpen = type === 'single' \n ? accordionValue === value \n : Array.isArray(accordionValue) && accordionValue.includes(value);\n \n \n const handleToggle = useCallback(() => {\n if (disabled) return;\n \n if (type === 'single') {\n // Toggle: if currently open, close it; if closed, open it\n onValueChange(isOpen ? '' : value);\n } else {\n const currentValue = Array.isArray(accordionValue) ? accordionValue : [];\n if (isOpen) {\n onValueChange(currentValue.filter(v => v !== value));\n } else {\n onValueChange([...currentValue, value]);\n }\n }\n }, [disabled, isOpen, type, value, accordionValue, onValueChange]);\n\n const itemContextValue: AccordionItemContextType = {\n open: isOpen,\n toggle: handleToggle,\n triggerId,\n contentId,\n value,\n disabled\n };\n\n return (\n <AccordionItemContext.Provider value={itemContextValue}>\n <div\n ref={ref}\n className={cn(\n accordionItemVariants({ variant: finalVariant }),\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n data-value={value}\n data-disabled={disabled}\n {...props}\n >\n {children}\n </div>\n </AccordionItemContext.Provider>\n );\n }\n);\n\nAccordionItem.displayName = 'AccordionItem';\n\n// Accordion Trigger Component\nexport const AccordionTrigger = React.forwardRef<HTMLButtonElement, AccordionTriggerProps>(\n ({\n children,\n variant = 'default',\n size = 'md',\n className,\n disabled = false,\n ...props\n }, ref) => {\n const { open, toggle, triggerId, contentId, disabled: itemDisabled } = useAccordionItemContext();\n const { variant: contextVariant, size: contextSize } = useAccordionContext();\n \n const finalVariant = variant === 'default' ? contextVariant : variant || 'default';\n const finalSize = size === 'md' ? contextSize : size || 'md';\n const finalDisabled = itemDisabled || disabled || false;\n\n return (\n <button\n {...props}\n ref={ref}\n type=\"button\"\n id={triggerId}\n aria-controls={contentId}\n aria-expanded={open}\n aria-disabled={finalDisabled}\n disabled={finalDisabled}\n data-state={open ? 'open' : 'closed'}\n data-accordion-trigger=\"true\"\n onClick={(e) => {\n if ('onClick' in props && props.onClick) {\n props.onClick(e as React.MouseEvent<HTMLButtonElement>);\n }\n if (finalDisabled) return;\n toggle();\n }}\n onKeyDown={(e) => {\n if ('onKeyDown' in props && props.onKeyDown) {\n props.onKeyDown(e as React.KeyboardEvent<HTMLButtonElement>);\n }\n if (finalDisabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n toggle();\n return;\n }\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {\n e.preventDefault();\n const root = (e.currentTarget as HTMLElement).closest('[data-accordion-root=\"true\"]');\n if (!root) return;\n const triggers = Array.from(root.querySelectorAll<HTMLButtonElement>('[data-accordion-trigger=\"true\"]'));\n const enabled = triggers.filter(btn => !btn.disabled);\n const current = e.currentTarget as HTMLButtonElement;\n const idx = enabled.indexOf(current);\n if (idx === -1) return;\n \n let nextIdx: number;\n if (e.key === 'ArrowDown') {\n nextIdx = (idx + 1) % enabled.length;\n } else if (e.key === 'ArrowUp') {\n nextIdx = (idx - 1 + enabled.length) % enabled.length;\n } else if (e.key === 'Home') {\n nextIdx = 0;\n } else if (e.key === 'End') {\n nextIdx = enabled.length - 1;\n } else {\n return;\n }\n \n enabled[nextIdx]?.focus();\n }\n }}\n className={cn(\n accordionTriggerVariants({ variant: finalVariant, size: finalSize }),\n finalDisabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n <span className=\"flex-1\">{children}</span>\n <svg\n className={cn(accordionChevronVariants({ open }))}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n );\n }\n);\n\nAccordionTrigger.displayName = 'AccordionTrigger';\n\n// Accordion Content Component\nexport const AccordionContent = React.forwardRef<HTMLDivElement, AccordionContentProps>(\n ({\n children,\n size = 'md',\n className,\n ...props\n }, ref) => {\n const { open, contentId, triggerId } = useAccordionItemContext();\n const { size: contextSize } = useAccordionContext();\n \n const finalSize = size === 'md' ? contextSize : size;\n\n return (\n <div\n {...props}\n ref={ref}\n id={contentId}\n role=\"region\"\n aria-labelledby={triggerId}\n hidden={!open}\n data-state={open ? 'open' : 'closed'}\n className={cn(\n accordionContentVariants({ size: finalSize }), \n 'overflow-hidden transition-all duration-200 ease-in-out',\n className\n )}\n >\n <div className=\"px-6 py-4\">\n {children}\n </div>\n </div>\n );\n }\n);\n\nAccordionContent.displayName = 'AccordionContent';\n\n// Export variants for external use\nexport { accordionVariants, accordionItemVariants, accordionTriggerVariants, accordionContentVariants, accordionChevronVariants };"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import s,{useState,useRef,useCallback,useEffect}from'react';import {cva}from'class-variance-authority';var Y=cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),S=s.createContext(void 0),$=()=>{let c=s.useContext(S);if(!c)throw new Error("Tooltip components must be used within a Tooltip");return c},q=s.forwardRef(({children:c,content:h,trigger:T="hover",open:i,onOpenChange:f,delayDuration:e=700,skipDelayDuration:v=300,disabled:d=false,className:x,contentClassName:u,sideOffset:M=4,alignOffset:C=0,avoidCollisions:E=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:R=false,sticky:L="partial",updatePositionDeps:H,closeOnBlur:D=true,...a$1},N)=>{let[t,l]=useState(false),g=useRef(null),n=useRef(null),r=i!==void 0,y=r?i:t,p=useCallback(_=>{d||(r||l(_),f?.(_));},[d,r,f]),m=useCallback(()=>{g.current!=null&&(clearTimeout(g.current),g.current=null),n.current!=null&&(clearTimeout(n.current),n.current=null);},[]),W=useCallback(()=>{m(),p(true);},[m,p]),B=useCallback(()=>{m(),p(false);},[m,p]),V=useCallback(()=>{m(),!d&&(e>0?g.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,d,e,p]),z=useCallback(()=>{m(),v>0?n.current=window.setTimeout(()=>{p(false);},v):p(false);},[m,v,p]),G=useCallback(()=>{y?z():V();},[y,V,z]),J=useCallback(()=>{y?B():W();},[y,W,B]);useEffect(()=>()=>{m();},[m]);let Q={open:y,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:v,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:D},U=y===true;return s.createElement(S.Provider,{value:Q},s.createElement("div",{ref:N,className:a("relative inline-block",x),"data-open":y,...a$1},c,U?s.createElement(O,{className:u||"",sideOffset:M,alignOffset:C,avoidCollisions:E,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:R,sticky:L,updatePositionDeps:H||[],variant:a$1.variant,size:a$1.size,placement:a$1.placement},h):null))});q.displayName="Tooltip";var A=s.forwardRef(({children:c,asChild:h=true,className:T,...i},f)=>{let{trigger:e,openNow:v,closeNow:d,openWithDelay:x,closeWithDelay:u,toggleNow:M,closeOnBlur:C}=$(),E=useRef(null),w={ref:o=>{E.current=o,typeof f=="function"?f(o):f&&(f.current=o);},className:a(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&x();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&u();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&x();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&u();},onClick:o=>{i.onClick?.(o),e==="click"&&M();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&v();},onBlur:o=>{i.onBlur?.(o),C&&d();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&d();}};return h&&s.isValidElement(c)?s.cloneElement(c,{...c.props||{},...w}):s.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},c)});A.displayName="TooltipTrigger";var O=s.forwardRef(({children:c,variant:h="default",size:T="md",placement:i="top",className:f,sideOffset:e=4,alignOffset:v=0,avoidCollisions:d=true,collisionBoundary:x,collisionPadding:u=8,hideWhenDetached:M=false,sticky:C="partial",updatePositionDeps:E,...w},o)=>{let R=useRef(null),[L,H]=useState({top:0,left:0}),D=useCallback(()=>{if(!R.current)return;let a=R.current,N=a.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),l=a.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},n=0,r=0;switch(i){case "top":n=t.top-l.height-e,r=t.left+t.width/2-l.width/2;break;case "top-start":n=t.top-l.height-e,r=t.left;break;case "top-end":n=t.top-l.height-e,r=t.right-l.width;break;case "bottom":n=t.bottom+e,r=t.left+t.width/2-l.width/2;break;case "bottom-start":n=t.bottom+e,r=t.left;break;case "bottom-end":n=t.bottom+e,r=t.right-l.width;break;case "left":n=t.top+t.height/2-l.height/2,r=t.left-l.width-e;break;case "left-start":n=t.top,r=t.left-l.width-e;break;case "left-end":n=t.bottom-l.height,r=t.left-l.width-e;break;case "right":n=t.top+t.height/2-l.height/2,r=t.right+e;break;case "right-start":n=t.top,r=t.right+e;break;case "right-end":n=t.bottom-l.height,r=t.right+e;break}d&&(r<u?r=u:r+l.width>g.width-u&&(r=g.width-l.width-u),n<u?n=u:n+l.height>g.height-u&&(n=g.height-l.height-u)),H({top:n,left:r});},[i,e,d,u]);return s.useLayoutEffect(()=>{D();let a=()=>D();return window.addEventListener("resize",a),window.addEventListener("scroll",a),()=>{window.removeEventListener("resize",a),window.removeEventListener("scroll",a);}},[D,E]),s.createElement("div",{ref:a=>{R.current=a,typeof o=="function"?o(a):o&&(o.current=a);},role:"tooltip","data-tooltip-instance":"nostromo",className:a(Y({variant:h,size:T,placement:i}),f),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},c,s.createElement("div",{className:a(Z({variant:h,placement:i}))}))});O.displayName="TooltipContent";var tt=({children:c,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>s.createElement("div",{"data-tooltip-provider":true},c),F=a$1(q);F.Trigger=A;F.Content=O;F.Provider=tt;export{Y as a,Z as b,A as c,O as d,tt as e,F as f};//# sourceMappingURL=chunk-MRZOLUSF.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-MRZOLUSF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"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","file":"chunk-MRZOLUSF.js","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n },\n placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n content: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n const shouldRenderContent = open === true;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n }, [updatePosition, updatePositionDeps]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n className={cn(tooltipVariants({ variant, size, placement }), className)}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import*as r from'react';var n=class extends r.Component{constructor(e){super(e),this.state={hasError:false,error:void 0,errorInfo:void 0};}static getDerivedStateFromError(e){return {hasError:true,error:e,errorInfo:void 0}}componentDidCatch(e,o){this.props.onError?.(e,o),this.setState({error:e,errorInfo:o});}resetError=()=>{this.setState({hasError:false,error:void 0,errorInfo:void 0});};render(){if(this.state.hasError){if(this.props.fallback){let e=this.props.fallback;return r.createElement(e,{error:this.state.error,resetError:this.resetError})}return r.createElement("div",{className:"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6"},r.createElement("div",{className:"text-center"},r.createElement("h2",{className:"text-lg font-semibold text-destructive mb-2"},"Something went wrong"),r.createElement("p",{className:"text-sm text-muted-foreground mb-4"},"An unexpected error occurred. Please try again."),r.createElement("button",{onClick:this.resetError,className:"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"},"Try again")),typeof window<"u"&&window.location?.hostname==="localhost"&&this.state.error&&r.createElement("details",{className:"mt-4 w-full max-w-md"},r.createElement("summary",{className:"cursor-pointer text-sm font-medium text-muted-foreground"},"Error Details (Development)"),r.createElement("pre",{className:"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground"},this.state.error.toString(),this.state.errorInfo?.componentStack)))}return this.props.children}};function i(){let[t,e]=r.useState(null),o=r.useCallback(()=>{e(null);},[]),s=r.useCallback(a=>{e(a);},[]);return r.useEffect(()=>{if(t)throw t},[t]),{captureError:s,resetError:o}}export{n as a,i as b};//# sourceMappingURL=chunk-MVCGR7JQ.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-MVCGR7JQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/error-boundary.tsx"],"names":["ErrorBoundary","props","error","errorInfo","FallbackComponent","useErrorHandler","setError","resetError","captureError"],"mappings":"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","file":"chunk-MVCGR7JQ.js","sourcesContent":["import * as React from 'react';\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | undefined;\n errorInfo: React.ErrorInfo | undefined;\n}\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n fallback?: React.ComponentType<{ error: Error | undefined; resetError: () => void }> | undefined;\n onError?: (error: Error, errorInfo: React.ErrorInfo) => void;\n}\n\n/**\n * ErrorBoundary component that catches JavaScript errors anywhere in the child component tree,\n * logs those errors, and displays a fallback UI instead of the component tree that crashed.\n */\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: undefined, errorInfo: undefined };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI\n return { hasError: true, error, errorInfo: undefined };\n }\n\n override componentDidCatch(error: Error, errorInfo: React.ErrorInfo) {\n // Log the error to console in development\n if (typeof window !== 'undefined' && window.location?.hostname === 'localhost') {\n console.error('ErrorBoundary caught an error:', error, errorInfo);\n }\n\n // Call the onError callback if provided\n this.props.onError?.(error, errorInfo);\n\n // Update state with error info\n this.setState({ error, errorInfo });\n }\n\n resetError = () => {\n this.setState({ hasError: false, error: undefined, errorInfo: undefined });\n };\n\n override render() {\n if (this.state.hasError) {\n // Render custom fallback UI if provided\n if (this.props.fallback) {\n const FallbackComponent = this.props.fallback;\n return <FallbackComponent error={this.state.error} resetError={this.resetError} />;\n }\n\n // Default fallback UI\n return (\n <div className=\"flex min-h-[200px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/5 p-6\">\n <div className=\"text-center\">\n <h2 className=\"text-lg font-semibold text-destructive mb-2\">\n Something went wrong\n </h2>\n <p className=\"text-sm text-muted-foreground mb-4\">\n An unexpected error occurred. Please try again.\n </p>\n <button\n onClick={this.resetError}\n className=\"inline-flex items-center justify-center rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n Try again\n </button>\n </div>\n {typeof window !== 'undefined' && window.location?.hostname === 'localhost' && this.state.error && (\n <details className=\"mt-4 w-full max-w-md\">\n <summary className=\"cursor-pointer text-sm font-medium text-muted-foreground\">\n Error Details (Development)\n </summary>\n <pre className=\"mt-2 overflow-auto rounded bg-muted p-2 text-xs text-muted-foreground\">\n {this.state.error.toString()}\n {this.state.errorInfo?.componentStack}\n </pre>\n </details>\n )}\n </div>\n );\n }\n\n return this.props.children;\n }\n}\n\n/**\n * Hook version of ErrorBoundary for functional components\n */\nexport function useErrorHandler() {\n const [error, setError] = React.useState<Error | null>(null);\n\n const resetError = React.useCallback(() => {\n setError(null);\n }, []);\n\n const captureError = React.useCallback((error: Error) => {\n setError(error);\n }, []);\n\n React.useEffect(() => {\n if (error) {\n \n throw error;\n }\n }, [error]);\n\n return { captureError, resetError };\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import e from'react';import {cva}from'class-variance-authority';var C=cva("relative overflow-hidden rounded-full bg-muted",{variants:{size:{sm:"h-1",md:"h-2",lg:"h-3",xl:"h-4"},variant:{default:"bg-muted",primary:"bg-primary/10",success:"bg-success-100",warning:"bg-warning-100",error:"bg-error-100",energy:"bg-gradient-to-r from-cyan-100 to-blue-100",health:"bg-gradient-to-r from-green-100 to-emerald-100",alien:"bg-gradient-to-r from-purple-100 to-pink-100"}},defaultVariants:{size:"md",variant:"default"}}),M=cva("h-full transition-all duration-500 ease-out rounded-full",{variants:{variant:{default:"bg-primary",primary:"bg-primary",success:"bg-success-600",warning:"bg-warning-600",error:"bg-error-600",energy:"bg-gradient-to-r from-cyan-500 to-blue-500 shadow-lg shadow-cyan-500/25",health:"bg-gradient-to-r from-green-500 to-emerald-500 shadow-lg shadow-green-500/25",alien:"bg-gradient-to-r from-purple-500 to-pink-500 shadow-lg shadow-purple-500/25"},animated:{true:"animate-pulse",false:""},glow:{true:"shadow-lg",false:""}},defaultVariants:{variant:"default",animated:false,glow:false}}),y=cva("text-sm font-medium transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",primary:"text-primary",success:"text-success-700",warning:"text-warning-700",error:"text-error-700",energy:"text-cyan-700",health:"text-green-700",alien:"text-purple-700"}},defaultVariants:{variant:"default"}}),x=e.forwardRef(({className:d,value:i,max:u=100,showLabel:m=false,label:n,size:s,variant:r,animated:p=false,glow:c=false,indeterminate:a$1=false,...f},b)=>{let l=Math.min(Math.max(i/u*100,0),100),t=n||`${Math.round(l)}%`;return e.createElement("div",{className:"w-full"},(m||n)&&e.createElement("div",{className:"mb-2 flex justify-between items-center"},e.createElement("span",{className:a(y({variant:r}))},n||"Progress"),m&&e.createElement("span",{className:a(y({variant:r}))},t)),e.createElement("div",{ref:b,className:a(C({size:s,variant:r}),d),role:"progressbar","aria-valuenow":a$1?void 0:i,"aria-valuemin":0,"aria-valuemax":u,"aria-label":n||"Progress",...f},e.createElement("div",{className:a(M({variant:r,animated:p,glow:c}),a$1&&"animate-pulse w-1/3 absolute left-0"),style:a$1?{}:{width:`${l}%`,transition:"width 0.5s ease-out"}}),c&&e.createElement("div",{className:a("absolute inset-0 rounded-full opacity-30 blur-sm",r==="energy"&&"bg-gradient-to-r from-cyan-400 to-blue-400",r==="health"&&"bg-gradient-to-r from-green-400 to-emerald-400",r==="alien"&&"bg-gradient-to-r from-purple-400 to-pink-400",r==="primary"&&"bg-brand-400",r==="success"&&"bg-success-400",r==="warning"&&"bg-warning-400",r==="error"&&"bg-error-400"),style:{width:`${l}%`,transition:"width 0.5s ease-out"}})))});x.displayName="Progress";var E=a$1(x),_=cva("relative inline-flex items-center justify-center",{variants:{size:{sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16",xl:"w-20 h-20"}},defaultVariants:{size:"md"}}),L=cva("transform -rotate-90",{variants:{size:{sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16",xl:"w-20 h-20"}},defaultVariants:{size:"md"}}),v=e.forwardRef(({className:d,value:i,max:u=100,showLabel:m=false,label:n,size:s,variant:r="default",animated:p=false,glow:c=false,strokeWidth:a$1=2,...f},b)=>{let l=Math.min(Math.max(i/u*100,0),100),t=s==="sm"?14:s==="md"?20:s==="lg"?28:36,h=2*Math.PI*t,P=h,k=h-l/100*h,N=()=>{switch(r){case "primary":return "stroke-primary";case "success":return "stroke-success";case "warning":return "stroke-warning";case "error":return "stroke-error";case "energy":return "stroke-cyan-500";case "health":return "stroke-green-500";case "alien":return "stroke-purple-500";default:return "stroke-primary"}},V=()=>{if(!c)return "";switch(r){case "energy":return "drop-shadow-[0_0_8px_rgba(6,182,212,0.5)]";case "health":return "drop-shadow-[0_0_8px_rgba(34,197,94,0.5)]";case "alien":return "drop-shadow-[0_0_8px_rgba(168,85,247,0.5)]";default:return "drop-shadow-[0_0_8px_rgba(59,130,246,0.5)]"}};return e.createElement("div",{ref:b,className:a(_({size:s}),d),role:"progressbar","aria-valuenow":i,"aria-valuemin":0,"aria-valuemax":u,"aria-label":n||"Circular progress",...f},e.createElement("svg",{className:a(L({size:s})),viewBox:`0 0 ${t*2+a$1*2} ${t*2+a$1*2}`},e.createElement("circle",{cx:t+a$1,cy:t+a$1,r:t,stroke:"currentColor",strokeWidth:a$1,fill:"none",className:"text-muted"}),e.createElement("circle",{cx:t+a$1,cy:t+a$1,r:t,stroke:"currentColor",strokeWidth:a$1,fill:"none",strokeLinecap:"round",strokeDasharray:P,strokeDashoffset:k,className:a(N(),V(),p&&"animate-pulse","transition-all duration-500 ease-out")})),m&&e.createElement("div",{className:"absolute inset-0 flex items-center justify-center"},e.createElement("span",{className:a("text-xs font-medium",s==="sm"&&"text-xs",s==="md"&&"text-sm",s==="lg"&&"text-base",s==="xl"&&"text-lg",y({variant:r}))},n||`${Math.round(l)}%`)))});v.displayName="CircularProgress";var j=a$1(v);export{C as a,M as b,y as c,E as d,j as e};//# sourceMappingURL=chunk-NLD4R74T.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-NLD4R74T.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/progress.tsx"],"names":["progressVariants","cva","progressBarVariants","progressLabelVariants","ProgressComponent","React","className","value","max","showLabel","label","size","variant","animated","glow","indeterminate","props","ref","percentage","displayLabel","cn","Progress","memo","circularProgressVariants","circularProgressSvgVariants","CircularProgressComponent","strokeWidth","radius","circumference","strokeDasharray","strokeDashoffset","getStrokeColor","getGlowFilter","CircularProgress"],"mappings":"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","file":"chunk-NLD4R74T.js","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\nconst progressVariants = cva(\"relative overflow-hidden rounded-full bg-muted\", {\n variants: {\n size: {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n xl: \"h-4\",\n },\n variant: {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-100\",\n warning: \"bg-warning-100\",\n error: \"bg-error-100\",\n energy: \"bg-gradient-to-r from-cyan-100 to-blue-100\",\n health: \"bg-gradient-to-r from-green-100 to-emerald-100\",\n alien: \"bg-gradient-to-r from-purple-100 to-pink-100\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n});\n\nconst progressBarVariants = cva(\n \"h-full transition-all duration-500 ease-out rounded-full\",\n {\n variants: {\n variant: {\n default: \"bg-primary\",\n primary: \"bg-primary\",\n success: \"bg-success-600\",\n warning: \"bg-warning-600\",\n error: \"bg-error-600\",\n energy:\n \"bg-gradient-to-r from-cyan-500 to-blue-500 shadow-lg shadow-cyan-500/25\",\n health:\n \"bg-gradient-to-r from-green-500 to-emerald-500 shadow-lg shadow-green-500/25\",\n alien:\n \"bg-gradient-to-r from-purple-500 to-pink-500 shadow-lg shadow-purple-500/25\",\n },\n animated: {\n true: \"animate-pulse\",\n false: \"\",\n },\n glow: {\n true: \"shadow-lg\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n animated: false,\n glow: false,\n },\n },\n);\n\nconst progressLabelVariants = cva(\n \"text-sm font-medium transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n primary: \"text-primary\",\n success: \"text-success-700\",\n warning: \"text-warning-700\",\n error: \"text-error-700\",\n energy: \"text-cyan-700\",\n health: \"text-green-700\",\n alien: \"text-purple-700\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface ProgressProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof progressVariants> {\n value: number;\n max?: number;\n showLabel?: boolean;\n label?: string;\n animated?: boolean;\n glow?: boolean;\n indeterminate?: boolean;\n}\n\nconst ProgressComponent = React.forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n className,\n value,\n max = 100,\n showLabel = false,\n label,\n size,\n variant,\n animated = false,\n glow = false,\n indeterminate = false,\n ...props\n },\n ref,\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const displayLabel = label || `${Math.round(percentage)}%`;\n\n return (\n <div className=\"w-full\">\n {(showLabel || label) && (\n <div className=\"mb-2 flex justify-between items-center\">\n <span className={cn(progressLabelVariants({ variant }))}>\n {label || \"Progress\"}\n </span>\n {showLabel && (\n <span className={cn(progressLabelVariants({ variant }))}>\n {displayLabel}\n </span>\n )}\n </div>\n )}\n\n <div\n ref={ref}\n className={cn(progressVariants({ size, variant }), className)}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label || \"Progress\"}\n {...props}\n >\n <div\n className={cn(\n progressBarVariants({ variant, animated, glow }),\n indeterminate && \"animate-pulse w-1/3 absolute left-0\",\n )}\n style={\n indeterminate\n ? {}\n : {\n width: `${percentage}%`,\n transition: \"width 0.5s ease-out\",\n }\n }\n />\n\n {/* Sci-fi glow effect */}\n {glow && (\n <div\n className={cn(\n \"absolute inset-0 rounded-full opacity-30 blur-sm\",\n variant === \"energy\" &&\n \"bg-gradient-to-r from-cyan-400 to-blue-400\",\n variant === \"health\" &&\n \"bg-gradient-to-r from-green-400 to-emerald-400\",\n variant === \"alien\" &&\n \"bg-gradient-to-r from-purple-400 to-pink-400\",\n variant === \"primary\" && \"bg-brand-400\",\n variant === \"success\" && \"bg-success-400\",\n variant === \"warning\" && \"bg-warning-400\",\n variant === \"error\" && \"bg-error-400\",\n )}\n style={{\n width: `${percentage}%`,\n transition: \"width 0.5s ease-out\",\n }}\n />\n )}\n </div>\n </div>\n );\n },\n);\n\nProgressComponent.displayName = \"Progress\";\n\n// Memoize Progress for performance optimization\nconst Progress = memo(ProgressComponent) as typeof ProgressComponent;\n\n// Circular Progress Component\nconst circularProgressVariants = cva(\n \"relative inline-flex items-center justify-center\",\n {\n variants: {\n size: {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n xl: \"w-20 h-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n },\n);\n\nconst circularProgressSvgVariants = cva(\"transform -rotate-90\", {\n variants: {\n size: {\n sm: \"w-8 h-8\",\n md: \"w-12 h-12\",\n lg: \"w-16 h-16\",\n xl: \"w-20 h-20\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n});\n\nexport interface CircularProgressProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof circularProgressVariants> {\n value: number;\n max?: number;\n showLabel?: boolean;\n label?: string;\n variant?:\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"error\"\n | \"energy\"\n | \"health\"\n | \"alien\";\n animated?: boolean;\n glow?: boolean;\n strokeWidth?: number;\n}\n\nconst CircularProgressComponent = React.forwardRef<\n HTMLDivElement,\n CircularProgressProps\n>(\n (\n {\n className,\n value,\n max = 100,\n showLabel = false,\n label,\n size,\n variant = \"default\",\n animated = false,\n glow = false,\n strokeWidth = 2,\n ...props\n },\n ref,\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n const radius =\n size === \"sm\" ? 14 : size === \"md\" ? 20 : size === \"lg\" ? 28 : 36;\n const circumference = 2 * Math.PI * radius;\n const strokeDasharray = circumference;\n const strokeDashoffset = circumference - (percentage / 100) * circumference;\n\n const getStrokeColor = () => {\n switch (variant) {\n case \"primary\":\n return \"stroke-primary\";\n case \"success\":\n return \"stroke-success\";\n case \"warning\":\n return \"stroke-warning\";\n case \"error\":\n return \"stroke-error\";\n case \"energy\":\n return \"stroke-cyan-500\";\n case \"health\":\n return \"stroke-green-500\";\n case \"alien\":\n return \"stroke-purple-500\";\n default:\n return \"stroke-primary\";\n }\n };\n\n const getGlowFilter = () => {\n if (!glow) return \"\";\n switch (variant) {\n case \"energy\":\n return \"drop-shadow-[0_0_8px_rgba(6,182,212,0.5)]\";\n case \"health\":\n return \"drop-shadow-[0_0_8px_rgba(34,197,94,0.5)]\";\n case \"alien\":\n return \"drop-shadow-[0_0_8px_rgba(168,85,247,0.5)]\";\n default:\n return \"drop-shadow-[0_0_8px_rgba(59,130,246,0.5)]\";\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(circularProgressVariants({ size }), className)}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label || \"Circular progress\"}\n {...props}\n >\n <svg\n className={cn(circularProgressSvgVariants({ size }))}\n viewBox={`0 0 ${radius * 2 + strokeWidth * 2} ${radius * 2 + strokeWidth * 2}`}\n >\n {/* Background circle */}\n <circle\n cx={radius + strokeWidth}\n cy={radius + strokeWidth}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n className=\"text-muted\"\n />\n\n {/* Progress circle */}\n <circle\n cx={radius + strokeWidth}\n cy={radius + strokeWidth}\n r={radius}\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n fill=\"none\"\n strokeLinecap=\"round\"\n strokeDasharray={strokeDasharray}\n strokeDashoffset={strokeDashoffset}\n className={cn(\n getStrokeColor(),\n getGlowFilter(),\n animated && \"animate-pulse\",\n \"transition-all duration-500 ease-out\",\n )}\n />\n </svg>\n\n {/* Center label */}\n {showLabel && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span\n className={cn(\n \"text-xs font-medium\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n size === \"lg\" && \"text-base\",\n size === \"xl\" && \"text-lg\",\n progressLabelVariants({ variant }),\n )}\n >\n {label || `${Math.round(percentage)}%`}\n </span>\n </div>\n )}\n </div>\n );\n },\n);\n\nCircularProgressComponent.displayName = \"CircularProgress\";\n\n// Memoize CircularProgress for performance optimization\nconst CircularProgress = memo(\n CircularProgressComponent,\n) as typeof CircularProgressComponent;\n\nexport {\n Progress,\n CircularProgress,\n progressVariants,\n progressBarVariants,\n progressLabelVariants,\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),r=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var r__default=/*#__PURE__*/_interopDefault(r);var f=classVarianceAuthority.cva("py-16 md:py-24",{variants:{variant:{default:"bg-background",muted:"bg-muted/30",accent:"bg-accent/10"}},defaultVariants:{variant:"default"}}),b=classVarianceAuthority.cva("grid gap-8",{variants:{columns:{1:"grid-cols-1 max-w-md mx-auto",2:"grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto"}},defaultVariants:{columns:3}}),v=classVarianceAuthority.cva("relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200",{variants:{variant:{default:"border-border",accent:"border-accent/20 bg-accent/5",popular:"border-primary/20 bg-primary/5 ring-2 ring-primary/10",muted:"border-muted bg-muted/20"}},defaultVariants:{variant:"default"}}),y=classVarianceAuthority.cva("absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium",{variants:{variant:{default:"bg-primary text-primary-foreground",accent:"bg-accent text-accent-foreground",success:"bg-success-100 text-success-800",warning:"bg-warning-100 text-warning-800"}},defaultVariants:{variant:"default"}}),h=({plans:c,title:s,subtitle:o,columns:l,variant:u,className:g,showYearly:a=false,onToggleBilling:m,...p})=>{let x=(t,d="USD")=>new Intl.NumberFormat("en-US",{style:"currency",currency:d,minimumFractionDigits:0}).format(t);return r__default.default.createElement("section",{className:chunkITRGJNWL_cjs.a(f({variant:u}),g),...p},r__default.default.createElement("div",{className:"container mx-auto px-4"},(s||o)&&r__default.default.createElement("div",{className:"text-center mb-12"},s&&r__default.default.createElement("h2",{className:"text-3xl md:text-4xl font-bold tracking-tight mb-4"},s),o&&r__default.default.createElement("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8"},o),m&&r__default.default.createElement("div",{className:"flex items-center justify-center gap-4 mb-8"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!a&&"text-foreground font-medium")},"Monthly"),r__default.default.createElement("button",{onClick:()=>m(!a),className:"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("inline-block h-4 w-4 transform rounded-full bg-background transition-transform",a?"translate-x-6":"translate-x-1")})),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",a&&"text-foreground font-medium")},"Yearly",r__default.default.createElement("span",{className:"ml-1 text-xs text-success-600"},"(Save 20%)")))),r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(b({columns:l}))},c.map((t,d)=>r__default.default.createElement("div",{key:t.id||d,className:chunkITRGJNWL_cjs.a(v({variant:t.popular?"popular":"default"}),t.popular&&"scale-105")},t.badge&&r__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(y({variant:t.badge.variant}))},t.badge.text),r__default.default.createElement("div",{className:"text-center mb-6"},r__default.default.createElement("h3",{className:"text-2xl font-bold mb-2"},t.name),t.description&&r__default.default.createElement("p",{className:"text-muted-foreground text-sm mb-4"},t.description),r__default.default.createElement("div",{className:"mb-4"},r__default.default.createElement("span",{className:"text-4xl font-bold"},x(a&&t.price.yearly?t.price.yearly:t.price.monthly,t.currency)),r__default.default.createElement("span",{className:"text-muted-foreground ml-1"},"/",t.period||(a?"year":"month")))),r__default.default.createElement("ul",{className:"space-y-3 mb-8"},t.features.map(n=>r__default.default.createElement("li",{key:n.id,className:"flex items-center gap-3"},r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("w-5 h-5 rounded-full flex items-center justify-center text-xs",n.included?"bg-success-100 text-success-600":"bg-muted text-muted-foreground")},n.included?"\u2713":"\u2717"),r__default.default.createElement("span",{className:chunkITRGJNWL_cjs.a("text-sm",!n.included&&"text-muted-foreground line-through")},n.name)))),r__default.default.createElement("button",{className:chunkITRGJNWL_cjs.a("w-full py-3 px-4 rounded-lg font-medium transition-colors",t.popular?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted text-muted-foreground hover:bg-muted/80"),onClick:t.cta.onClick},t.cta.text))))))};exports.a=h;//# sourceMappingURL=chunk-OEN63W3G.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-OEN63W3G.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/pricing.tsx"],"names":["pricingVariants","cva","pricingGridVariants","pricingCardVariants","pricingBadgeVariants","Pricing","plans","title","subtitle","columns","variant","className","showYearly","onToggleBilling","props","formatPrice","price","currency","React","cn","plan","idx","feature"],"mappings":"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","file":"chunk-OEN63W3G.cjs","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst pricingVariants = cva(\n 'py-16 md:py-24',\n {\n variants: {\n variant: {\n default: 'bg-background',\n muted: 'bg-muted/30',\n accent: 'bg-accent/10',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingGridVariants = cva(\n 'grid gap-8',\n {\n variants: {\n columns: {\n 1: 'grid-cols-1 max-w-md mx-auto',\n 2: 'grid-cols-1 md:grid-cols-2 max-w-4xl mx-auto',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3 max-w-6xl mx-auto',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4 max-w-7xl mx-auto',\n },\n },\n defaultVariants: {\n columns: 3,\n },\n }\n);\n\nconst pricingCardVariants = cva(\n 'relative p-8 rounded-lg border bg-card text-card-foreground shadow-sm transition-all duration-200',\n {\n variants: {\n variant: {\n default: 'border-border',\n accent: 'border-accent/20 bg-accent/5',\n popular: 'border-primary/20 bg-primary/5 ring-2 ring-primary/10',\n muted: 'border-muted bg-muted/20',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nconst pricingBadgeVariants = cva(\n 'absolute -top-3 left-1/2 transform -translate-x-1/2 px-3 py-1 rounded-full text-xs font-medium',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground',\n accent: 'bg-accent text-accent-foreground',\n success: 'bg-success-100 text-success-800',\n warning: 'bg-warning-100 text-warning-800',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nexport interface PricingFeature {\n id: string;\n name: string;\n included: boolean;\n}\n\nexport interface PricingPlan {\n id: string;\n name: string;\n description?: string;\n price: {\n monthly: number;\n yearly?: number;\n };\n currency?: string;\n period?: string;\n features: PricingFeature[];\n cta: {\n text: string;\n href?: string;\n onClick?: () => void;\n };\n badge?: {\n text: string;\n variant?: VariantProps<typeof pricingBadgeVariants>['variant'];\n };\n popular?: boolean;\n}\n\nexport interface PricingProps extends VariantProps<typeof pricingVariants> {\n plans: PricingPlan[];\n title?: string;\n subtitle?: string;\n columns?: VariantProps<typeof pricingGridVariants>['columns'];\n className?: string;\n showYearly?: boolean;\n onToggleBilling?: (yearly: boolean) => void;\n}\n\nexport const Pricing: React.FC<PricingProps> = ({\n plans,\n title,\n subtitle,\n columns,\n variant,\n className,\n showYearly = false,\n onToggleBilling,\n ...props\n}) => {\n const formatPrice = (price: number, currency = 'USD') => {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency,\n minimumFractionDigits: 0,\n }).format(price);\n };\n\n return (\n <section className={cn(pricingVariants({ variant }), className)} {...props}>\n <div className=\"container mx-auto px-4\">\n {(title || subtitle) && (\n <div className=\"text-center mb-12\">\n {title && (\n <h2 className=\"text-3xl md:text-4xl font-bold tracking-tight mb-4\">\n {title}\n </h2>\n )}\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n \n {onToggleBilling && (\n <div className=\"flex items-center justify-center gap-4 mb-8\">\n <span className={cn('text-sm', !showYearly && 'text-foreground font-medium')}>\n Monthly\n </span>\n <button\n onClick={() => onToggleBilling(!showYearly)}\n className=\"relative inline-flex h-6 w-11 items-center rounded-full bg-primary transition-colors focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2\"\n >\n <span\n className={cn(\n 'inline-block h-4 w-4 transform rounded-full bg-background transition-transform',\n showYearly ? 'translate-x-6' : 'translate-x-1'\n )}\n />\n </button>\n <span className={cn('text-sm', showYearly && 'text-foreground font-medium')}>\n Yearly\n <span className=\"ml-1 text-xs text-success-600\">\n (Save 20%)\n </span>\n </span>\n </div>\n )}\n </div>\n )}\n \n <div className={cn(pricingGridVariants({ columns }))}>\n {plans.map((plan, idx) => (\n <div\n key={plan.id || idx}\n className={cn(\n pricingCardVariants({ \n variant: plan.popular ? 'popular' : 'default' \n }),\n plan.popular && 'scale-105'\n )}\n >\n {plan.badge && (\n <div className={cn(pricingBadgeVariants({ variant: plan.badge.variant }))}>\n {plan.badge.text}\n </div>\n )}\n \n <div className=\"text-center mb-6\">\n <h3 className=\"text-2xl font-bold mb-2\">{plan.name}</h3>\n {plan.description && (\n <p className=\"text-muted-foreground text-sm mb-4\">\n {plan.description}\n </p>\n )}\n <div className=\"mb-4\">\n <span className=\"text-4xl font-bold\">\n {formatPrice(\n showYearly && plan.price.yearly \n ? plan.price.yearly \n : plan.price.monthly,\n plan.currency\n )}\n </span>\n <span className=\"text-muted-foreground ml-1\">\n /{plan.period || (showYearly ? 'year' : 'month')}\n </span>\n </div>\n </div>\n \n <ul className=\"space-y-3 mb-8\">\n {plan.features.map((feature) => (\n <li key={feature.id} className=\"flex items-center gap-3\">\n <span\n className={cn(\n 'w-5 h-5 rounded-full flex items-center justify-center text-xs',\n feature.included\n ? 'bg-success-100 text-success-600'\n : 'bg-muted text-muted-foreground'\n )}\n >\n {feature.included ? '✓' : '✗'}\n </span>\n <span className={cn(\n 'text-sm',\n !feature.included && 'text-muted-foreground line-through'\n )}>\n {feature.name}\n </span>\n </li>\n ))}\n </ul>\n \n <button\n className={cn(\n 'w-full py-3 px-4 rounded-lg font-medium transition-colors',\n plan.popular\n ? 'bg-primary text-primary-foreground hover:bg-primary/90'\n : 'bg-muted text-muted-foreground hover:bg-muted/80'\n )}\n onClick={plan.cta.onClick}\n >\n {plan.cta.text}\n </button>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-AC2JBXHQ.js';import*as e from'react';import*as a from'@radix-ui/react-switch';import {cva}from'class-variance-authority';var v=cva("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted",{variants:{variant:{default:"data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted focus-visible:ring-ring",error:"data-[state=checked]:bg-destructive data-[state=unchecked]:bg-destructive/20 focus-visible:ring-destructive",success:"data-[state=checked]:bg-success data-[state=unchecked]:bg-success-100 focus-visible:ring-success"},size:{sm:"h-4 w-7",default:"h-6 w-11",lg:"h-8 w-14"}},defaultVariants:{variant:"default",size:"default"}}),w=cva("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0",{variants:{size:{sm:"h-3 w-3 data-[state=checked]:translate-x-3",default:"h-5 w-5 data-[state=checked]:translate-x-5",lg:"h-7 w-7 data-[state=checked]:translate-x-6"}},defaultVariants:{size:"default"}}),k=e.forwardRef(({className:u,children:x,label:c,helperText:r,error:i,required:n,variant:h,size:d,id:m,...f},p)=>{let b=e.useId(),s=m||b,o=r?`${s}-helper`:void 0,g=i?`${s}-error`:void 0;return e.createElement("div",{className:"flex items-center space-x-2"},e.createElement(a.Root,{ref:p,id:s,className:a$1(v({variant:i?"error":h||"default",size:d}),u),"aria-describedby":a$1(o,g)||void 0,"aria-invalid":i,"aria-required":n,...f},e.createElement(a.Thumb,{className:a$1(w({size:d}))})),e.createElement("div",{className:"grid gap-1.5 leading-none"},c&&e.createElement("label",{htmlFor:s,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},c,n&&e.createElement("span",{className:"text-error-500 ml-1"},"*")),r&&e.createElement("p",{id:o,className:a$1("text-sm text-muted-foreground",i&&"text-destructive")},r)))});k.displayName=a.Root.displayName;export{v as a,w as b,k as c};//# sourceMappingURL=chunk-OUWOPYAX.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-OUWOPYAX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/switch.tsx"],"names":["switchVariants","cva","switchThumbVariants","Switch","className","_children","label","helperText","error","required","variant","size","id","props","ref","generatedId","switchId","helperTextId","errorId","cn"],"mappings":"uJAKA,IAAMA,CAAAA,CAAiBC,IACrB,4VAAA,CACA,CACE,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CACE,yFAAA,CACF,KAAA,CACE,6GAAA,CACF,OAAA,CACE,kGACJ,EACA,IAAA,CAAM,CACJ,GAAI,SAAA,CACJ,OAAA,CAAS,WACT,EAAA,CAAI,UACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,EAEMC,CAAAA,CAAsBD,GAAAA,CAC1B,4KAAA,CACA,CACE,QAAA,CAAU,CACR,KAAM,CACJ,EAAA,CAAI,6CACJ,OAAA,CAAS,4CAAA,CACT,GAAI,4CACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,IAAA,CAAM,SACR,CACF,CACF,EAYME,CAAAA,CAAe,CAAA,CAAA,UAAA,CAInB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,QAAA,CAAUC,CAAAA,CACV,KAAA,CAAAC,EACA,UAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,QAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,EAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,IACG,CACH,IAAMC,EAAoB,CAAA,CAAA,KAAA,EAAM,CAC1BC,CAAAA,CAAWJ,CAAAA,EAAMG,CAAAA,CACjBE,CAAAA,CAAeV,EAAa,CAAA,EAAGS,CAAQ,UAAY,MAAA,CACnDE,CAAAA,CAAUV,EAAQ,CAAA,EAAGQ,CAAQ,CAAA,MAAA,CAAA,CAAW,MAAA,CAI9C,OACE,CAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,6BAAA,CAAA,CACb,gBAAiB,CAAA,CAAA,IAAA,CAAhB,CACC,IAAKF,CAAAA,CACL,EAAA,CAAIE,CAAAA,CACJ,SAAA,CAAWG,GAAAA,CACTnB,CAAAA,CAAe,CAAE,OAAA,CARHQ,CAAAA,CAAQ,QAAUE,CAAAA,EAAW,SAAA,CAQF,KAAAC,CAAK,CAAC,CAAA,CAC/CP,CACF,CAAA,CACA,kBAAA,CAAkBe,IAAGF,CAAAA,CAAcC,CAAO,GAAK,MAAA,CAC/C,cAAA,CAAcV,EACd,eAAA,CAAeC,CAAAA,CACd,GAAGI,CAAAA,CAAAA,CAEJ,CAAA,CAAA,aAAA,CAAiB,CAAA,CAAA,KAAA,CAAhB,CACC,SAAA,CAAWM,GAAAA,CAAGjB,EAAoB,CAAE,IAAA,CAAAS,CAAK,CAAC,CAAC,CAAA,CAC7C,CACF,CAAA,CACA,CAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,2BAAA,CAAA,CACZL,GACC,CAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,QAASU,CAAAA,CACT,SAAA,CAAU,4FAAA,CAAA,CAETV,CAAAA,CACAG,CAAAA,EAAY,CAAA,CAAA,aAAA,CAAC,QAAK,SAAA,CAAU,qBAAA,CAAA,CAAsB,GAAC,CACtD,CAAA,CAEDF,GACC,CAAA,CAAA,aAAA,CAAC,GAAA,CAAA,CACC,EAAA,CAAIU,CAAAA,CACJ,SAAA,CAAWE,GAAAA,CACT,gCACAX,CAAAA,EAAS,kBACX,CAAA,CAAA,CAECD,CACH,CAEJ,CACF,CAEJ,CACF,EACAJ,CAAAA,CAAO,WAAA,CAA8B,CAAA,CAAA,IAAA,CAAK,WAAA","file":"chunk-OUWOPYAX.js","sourcesContent":["import * as React from \"react\";\nimport * as SwitchPrimitive from \"@radix-ui/react-switch\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted\",\n {\n variants: {\n variant: {\n default:\n \"data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted focus-visible:ring-ring\",\n error:\n \"data-[state=checked]:bg-destructive data-[state=unchecked]:bg-destructive/20 focus-visible:ring-destructive\",\n success:\n \"data-[state=checked]:bg-success data-[state=unchecked]:bg-success-100 focus-visible:ring-success\",\n },\n size: {\n sm: \"h-4 w-7\",\n default: \"h-6 w-11\",\n lg: \"h-8 w-14\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nconst switchThumbVariants = cva(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0\",\n {\n variants: {\n size: {\n sm: \"h-3 w-3 data-[state=checked]:translate-x-3\",\n default: \"h-5 w-5 data-[state=checked]:translate-x-5\",\n lg: \"h-7 w-7 data-[state=checked]:translate-x-6\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n },\n);\n\nexport interface SwitchProps\n extends\n React.ComponentPropsWithoutRef<typeof SwitchPrimitive.Root>,\n VariantProps<typeof switchVariants> {\n label?: string;\n helperText?: string;\n error?: boolean;\n required?: boolean;\n}\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitive.Root>,\n SwitchProps\n>(\n (\n {\n className,\n children: _children,\n label,\n helperText,\n error,\n required,\n variant,\n size,\n id,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const switchId = id || generatedId;\n const helperTextId = helperText ? `${switchId}-helper` : undefined;\n const errorId = error ? `${switchId}-error` : undefined;\n\n const switchVariant = error ? \"error\" : variant || \"default\";\n\n return (\n <div className=\"flex items-center space-x-2\">\n <SwitchPrimitive.Root\n ref={ref}\n id={switchId}\n className={cn(\n switchVariants({ variant: switchVariant, size }),\n className,\n )}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n aria-required={required}\n {...props}\n >\n <SwitchPrimitive.Thumb\n className={cn(switchThumbVariants({ size }))}\n />\n </SwitchPrimitive.Root>\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <label\n htmlFor={switchId}\n className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n >\n {label}\n {required && <span className=\"text-error-500 ml-1\">*</span>}\n </label>\n )}\n {helperText && (\n <p\n id={helperTextId}\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-destructive\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n </div>\n );\n },\n);\nSwitch.displayName = SwitchPrimitive.Root.displayName;\n\nexport { Switch, switchVariants, switchThumbVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),e=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var e__default=/*#__PURE__*/_interopDefault(e);var c=classVarianceAuthority.cva("animate-pulse rounded-md bg-muted",{variants:{variant:{default:"bg-muted",light:"bg-muted/50",dark:"bg-muted",primary:"bg-primary/10",success:"bg-success-200",warning:"bg-warning-200",error:"bg-error-200"},size:{xs:"h-2",sm:"h-3",md:"h-4",lg:"h-6",xl:"h-8","2xl":"h-12","3xl":"h-16"},shape:{rectangle:"rounded-md",circle:"rounded-full",square:"rounded-lg",pill:"rounded-full"},animation:{pulse:"animate-pulse",wave:"animate-wave",none:"animate-none"}},defaultVariants:{variant:"default",size:"md",shape:"rectangle",animation:"pulse"}}),N=e__default.default.forwardRef(({className:n,children:s,width:a,height:r,variant:t="default",size:o="md",shape:i="rectangle",animation:d="pulse",loading:u=true,...f},h)=>{if(!u&&s)return e__default.default.createElement(e__default.default.Fragment,null,s);let p={width:a||void 0,height:r||void 0};return e__default.default.createElement("div",{ref:h,className:chunkITRGJNWL_cjs.a(c({variant:t,size:o,shape:i,animation:d}),n),style:p,"aria-label":"Loading content",role:"status",...f})});N.displayName="Skeleton";var l=chunk7SPPGTBT_cjs.a(N),k=e__default.default.forwardRef(({className:n,lines:s=3,lastLineWidth:a="75%",spacing:r="md",variant:t="default",animation:o="pulse",loading:i=true,...d},u)=>i?e__default.default.createElement("div",{ref:u,className:chunkITRGJNWL_cjs.a("space-y-2",{none:"space-y-0",sm:"space-y-1",md:"space-y-2",lg:"space-y-3"}[r],n),"aria-label":"Loading text content",role:"status",...d},Array.from({length:s},(h,p)=>e__default.default.createElement("div",{key:p,className:chunkITRGJNWL_cjs.a(c({variant:t,animation:o}),"h-4 rounded-md",p===s-1&&"w-3/4"),style:{width:p===s-1?a:"100%"}}))):null);k.displayName="SkeletonText";var v=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={xs:"h-6 w-6",sm:"h-8 w-8",md:"h-10 w-10",lg:"h-12 w-12",xl:"h-16 w-16","2xl":"h-20 w-20"};return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({variant:a,animation:r}),"rounded-full",d[s],n),"aria-label":"Loading avatar",role:"status",...o})});v.displayName="SkeletonAvatar";var g=e__default.default.forwardRef(({className:n,size:s="md",variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>{if(!t)return null;let d={sm:"h-8 px-3",md:"h-10 px-4",lg:"h-12 px-6"},u={default:"bg-muted",primary:"bg-primary/10",secondary:"bg-secondary",outline:"bg-muted/50 border border-border",ghost:"bg-muted/50"},f=a||"default";return e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a(c({animation:r}),"rounded-md",d[s],u[f],n),"aria-label":"Loading button",role:"status",...o})});g.displayName="SkeletonButton";var y=e__default.default.forwardRef(({className:n,showAvatar:s=true,showActions:a=true,variant:r="default",animation:t="pulse",loading:o=true,...i},d)=>o?e__default.default.createElement("div",{ref:d,className:chunkITRGJNWL_cjs.a("p-6 border border-border rounded-lg bg-card",n),"aria-label":"Loading card content",role:"status",...i},e__default.default.createElement("div",{className:"space-y-4"},e__default.default.createElement("div",{className:"flex items-center space-x-3"},s&&e__default.default.createElement(v,{size:"md",variant:r,animation:t}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:r,animation:t}))),e__default.default.createElement("div",{className:"space-y-2"},e__default.default.createElement(l,{className:"h-4 w-full",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-5/6",variant:r,animation:t}),e__default.default.createElement(l,{className:"h-4 w-4/5",variant:r,animation:t})),a&&e__default.default.createElement("div",{className:"flex space-x-2 pt-4"},e__default.default.createElement(g,{size:"sm",animation:t}),e__default.default.createElement(g,{size:"sm",animation:t})))):null);y.displayName="SkeletonCard";var S=e__default.default.forwardRef(({className:n,variant:s="default",animation:a="pulse",loading:r=true,...t},o)=>r?e__default.default.createElement("div",{ref:o,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading table content",role:"status",...t},e__default.default.createElement("div",{className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})),Array.from({length:5},(i,d)=>e__default.default.createElement("div",{key:d,className:"grid grid-cols-4 gap-4"},e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a}),e__default.default.createElement(l,{className:"h-4",variant:s,animation:a})))):null);S.displayName="SkeletonTable";var w=e__default.default.forwardRef(({className:n,items:s=5,variant:a="default",animation:r="pulse",loading:t=true,...o},i)=>t?e__default.default.createElement("div",{ref:i,className:chunkITRGJNWL_cjs.a("space-y-3",n),"aria-label":"Loading list content",role:"status",...o},Array.from({length:s},(d,u)=>e__default.default.createElement("div",{key:u,className:"flex items-center space-x-3"},e__default.default.createElement(v,{size:"sm",variant:a,animation:r}),e__default.default.createElement("div",{className:"flex-1 space-y-2"},e__default.default.createElement(l,{className:"h-4 w-3/4",variant:a,animation:r}),e__default.default.createElement(l,{className:"h-3 w-1/2",variant:a,animation:r}))))):null);w.displayName="SkeletonList";exports.a=c;exports.b=l;exports.c=k;exports.d=v;exports.e=g;exports.f=y;exports.g=S;exports.h=w;//# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-OZ3RIKZO.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/skeleton.tsx"],"names":["skeletonVariants","cva","SkeletonComponent","React","className","children","width","height","variant","size","shape","animation","loading","props","ref","style","cn","Skeleton","memo","SkeletonText","lines","lastLineWidth","spacing","_","index","SkeletonAvatar","sizeClasses","SkeletonButton","variantClasses","finalVariant","SkeletonCard","showAvatar","showActions","SkeletonTable","SkeletonList","items"],"mappings":"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","file":"chunk-OZ3RIKZO.cjs","sourcesContent":["import React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Skeleton variants\nconst skeletonVariants = cva(\"animate-pulse rounded-md bg-muted\", {\n variants: {\n variant: {\n default: \"bg-muted\",\n light: \"bg-muted/50\",\n dark: \"bg-muted\",\n primary: \"bg-primary/10\",\n success: \"bg-success-200\",\n warning: \"bg-warning-200\",\n error: \"bg-error-200\",\n },\n size: {\n xs: \"h-2\",\n sm: \"h-3\",\n md: \"h-4\",\n lg: \"h-6\",\n xl: \"h-8\",\n \"2xl\": \"h-12\",\n \"3xl\": \"h-16\",\n },\n shape: {\n rectangle: \"rounded-md\",\n circle: \"rounded-full\",\n square: \"rounded-lg\",\n pill: \"rounded-full\",\n },\n animation: {\n pulse: \"animate-pulse\",\n wave: \"animate-wave\",\n none: \"animate-none\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n shape: \"rectangle\",\n animation: \"pulse\",\n },\n});\n\n// Types\nexport interface SkeletonProps extends VariantProps<typeof skeletonVariants> {\n className?: string;\n children?: React.ReactNode;\n width?: string | number;\n height?: string | number;\n lines?: number;\n spacing?: \"none\" | \"sm\" | \"md\" | \"lg\";\n loading?: boolean;\n}\n\nexport interface SkeletonTextProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n lines?: number;\n lastLineWidth?: string | number;\n}\n\nexport interface SkeletonAvatarProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\n}\n\nexport interface SkeletonButtonProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\" | \"variant\"\n> {\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"primary\" | \"secondary\" | \"outline\" | \"ghost\";\n}\n\nexport interface SkeletonCardProps extends Omit<\n SkeletonProps,\n \"shape\" | \"size\"\n> {\n showAvatar?: boolean;\n showActions?: boolean;\n}\n\n// Main Skeleton Component\nconst SkeletonComponent = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n children,\n width,\n height,\n variant = \"default\",\n size = \"md\",\n shape = \"rectangle\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading && children) {\n return <>{children}</>;\n }\n\n const style = {\n width: width || undefined,\n height: height || undefined,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, size, shape, animation }),\n className,\n )}\n style={style}\n aria-label=\"Loading content\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonComponent.displayName = \"Skeleton\";\n\n// Memoize Skeleton for performance optimization\nexport const Skeleton = memo(SkeletonComponent) as typeof SkeletonComponent;\n\n// Skeleton Text Component\nexport const SkeletonText = React.forwardRef<HTMLDivElement, SkeletonTextProps>(\n (\n {\n className,\n lines = 3,\n lastLineWidth = \"75%\",\n spacing = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const spacingClasses = {\n none: \"space-y-0\",\n sm: \"space-y-1\",\n md: \"space-y-2\",\n lg: \"space-y-3\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-2\", spacingClasses[spacing], className)}\n aria-label=\"Loading text content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"h-4 rounded-md\",\n index === lines - 1 && \"w-3/4\",\n )}\n style={{\n width: index === lines - 1 ? lastLineWidth : \"100%\",\n }}\n />\n ))}\n </div>\n );\n },\n);\n\nSkeletonText.displayName = \"SkeletonText\";\n\n// Skeleton Avatar Component\nexport const SkeletonAvatar = React.forwardRef<\n HTMLDivElement,\n SkeletonAvatarProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n xs: \"h-6 w-6\",\n sm: \"h-8 w-8\",\n md: \"h-10 w-10\",\n lg: \"h-12 w-12\",\n xl: \"h-16 w-16\",\n \"2xl\": \"h-20 w-20\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ variant, animation }),\n \"rounded-full\",\n sizeClasses[size],\n className,\n )}\n aria-label=\"Loading avatar\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonAvatar.displayName = \"SkeletonAvatar\";\n\n// Skeleton Button Component\nexport const SkeletonButton = React.forwardRef<\n HTMLDivElement,\n SkeletonButtonProps\n>(\n (\n {\n className,\n size = \"md\",\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n const sizeClasses = {\n sm: \"h-8 px-3\",\n md: \"h-10 px-4\",\n lg: \"h-12 px-6\",\n };\n\n const variantClasses = {\n default: \"bg-muted\",\n primary: \"bg-primary/10\",\n secondary: \"bg-secondary\",\n outline: \"bg-muted/50 border border-border\",\n ghost: \"bg-muted/50\",\n };\n\n const finalVariant = variant || \"default\";\n\n return (\n <div\n ref={ref}\n className={cn(\n skeletonVariants({ animation }),\n \"rounded-md\",\n sizeClasses[size],\n variantClasses[finalVariant],\n className,\n )}\n aria-label=\"Loading button\"\n role=\"status\"\n {...props}\n />\n );\n },\n);\n\nSkeletonButton.displayName = \"SkeletonButton\";\n\n// Skeleton Card Component\nexport const SkeletonCard = React.forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n className,\n showAvatar = true,\n showActions = true,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"p-6 border border-border rounded-lg bg-card\", className)}\n aria-label=\"Loading card content\"\n role=\"status\"\n {...props}\n >\n <div className=\"space-y-4\">\n {/* Header with avatar and title */}\n <div className=\"flex items-center space-x-3\">\n {showAvatar && (\n <SkeletonAvatar\n size=\"md\"\n variant={variant}\n animation={animation}\n />\n )}\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n\n {/* Content */}\n <div className=\"space-y-2\">\n <Skeleton\n className=\"h-4 w-full\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-5/6\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-4 w-4/5\"\n variant={variant}\n animation={animation}\n />\n </div>\n\n {/* Actions */}\n {showActions && (\n <div className=\"flex space-x-2 pt-4\">\n <SkeletonButton size=\"sm\" animation={animation} />\n <SkeletonButton size=\"sm\" animation={animation} />\n </div>\n )}\n </div>\n </div>\n );\n },\n);\n\nSkeletonCard.displayName = \"SkeletonCard\";\n\n// Skeleton Table Component\nexport const SkeletonTable = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading table content\"\n role=\"status\"\n {...props}\n >\n {/* Header */}\n <div className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n\n {/* Rows */}\n {Array.from({ length: 5 }, (_, index) => (\n <div key={index} className=\"grid grid-cols-4 gap-4\">\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n <Skeleton className=\"h-4\" variant={variant} animation={animation} />\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonTable.displayName = \"SkeletonTable\";\n\n// Skeleton List Component\nexport const SkeletonList = React.forwardRef<\n HTMLDivElement,\n SkeletonProps & { items?: number }\n>(\n (\n {\n className,\n items = 5,\n variant = \"default\",\n animation = \"pulse\",\n loading = true,\n ...props\n },\n ref,\n ) => {\n if (!loading) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"space-y-3\", className)}\n aria-label=\"Loading list content\"\n role=\"status\"\n {...props}\n >\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-center space-x-3\">\n <SkeletonAvatar size=\"sm\" variant={variant} animation={animation} />\n <div className=\"flex-1 space-y-2\">\n <Skeleton\n className=\"h-4 w-3/4\"\n variant={variant}\n animation={animation}\n />\n <Skeleton\n className=\"h-3 w-1/2\"\n variant={variant}\n animation={animation}\n />\n </div>\n </div>\n ))}\n </div>\n );\n },\n);\n\nSkeletonList.displayName = \"SkeletonList\";\n\n// Export variants for external use\nexport { skeletonVariants };\n"]}
|