@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,2 @@
|
|
|
1
|
+
import {b}from'./chunk-AVTJE2O2.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useState,useRef,useMemo,useEffect}from'react';import*as v from'@radix-ui/react-popover';import {cva}from'class-variance-authority';import {format,getDay,startOfMonth,getDaysInMonth,isSameDay,isWithinInterval,startOfDay,endOfDay,isBefore,isAfter}from'date-fns';var ye=cva("inline-block rounded-lg border bg-background shadow-lg",{variants:{variant:{default:"border-border bg-card",outline:"border-2 border-border",ghost:"border-transparent bg-transparent shadow-none"},size:{sm:"p-2",md:"p-3",lg:"p-4"}},defaultVariants:{variant:"default",size:"md"}}),we=cva("flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"hover:bg-muted text-foreground",selected:"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold",range:"bg-primary/10 text-primary hover:bg-primary/20 font-medium",today:"border-2 border-primary text-foreground font-semibold",outside:"text-muted-foreground",disabled:"text-muted-foreground/50 cursor-not-allowed"},size:{sm:"h-7 w-7 text-xs",md:"h-9 w-9 text-sm",lg:"h-11 w-11 text-base"}},defaultVariants:{variant:"default",size:"md"}}),W=n=>getDaysInMonth(n),xe=(n,o)=>{let s=getDay(startOfMonth(n));return o===1?s===0?6:s-1:s},h=(n,o)=>!n||!o?false:isSameDay(n,o),Ce=(n,o,s)=>!o&&!s?false:o&&s?isWithinInterval(startOfDay(n),{start:startOfDay(o),end:endOfDay(s)}):o?!isBefore(startOfDay(n),startOfDay(o)):s?!isAfter(startOfDay(n),endOfDay(s)):false,_=(n,o,s,V,N)=>!!(o&&isBefore(startOfDay(n),startOfDay(o))||s&&isAfter(startOfDay(n),endOfDay(s))||V?.some(Y=>h(Y,n))||N?.includes(getDay(n))),C=(n,o="en-US")=>n?format(n,"MMM d, yyyy"):"",ke=(n,o,s="en-US")=>!n&&!o?"":n&&o?`${C(n,s)} - ${C(o,s)}`:n?C(n,s):o?C(o,s):"",Fe=(n,o="en-US")=>n.length===0?"":n.length===1?C(n[0],o):`${n.length} dates selected`,Ne=a.forwardRef(({mode:n="single",value:o,defaultValue:s,onChange:V,minDate:N,maxDate:Y,disabledDates:A,disabledDays:H,locale:y="en-US",placeholder:X,label:I,error:L,helperText:U,className:Z,inputClassName:R,calendarClassName:ee,variant:te,size:K,showOutsideDays:k=true,firstDayOfWeek:P=1,...ne},re)=>{let[F,w]=useState(false),[i,D]=useState(new Date),[p,m]=useState(null),ae=useRef(null),$=useRef(new Map),[oe,se]=useState(s),j=o!==void 0,l=j?o:oe;a.useLayoutEffect(()=>{if(F&&!p){let e=new Date;e.setHours(0,0,0,0),m(e);}},[F,p]);let x=e=>{j||se(e),V?.(e);},z=e=>{if(!_(e,N,Y,A,H)){if(n==="single")x(e),w(false);else if(n==="range"){let r=l;if(!r?.from||r.from&&r.to)x({from:e});else {let t=r.from,d=e;d<t?x({from:d,to:t}):x({from:t,to:d}),w(false);}}else if(n==="multiple"){let r=l||[],t=r.findIndex(d=>h(d,e));t>=0?x(r.filter((d,u)=>u!==t)):x([...r,e]);}}},ie=useMemo(()=>{if(!l)return "";if(n==="single")return C(l,y);if(n==="range"){let e=l;return ke(e.from,e.to,y)}else return Fe(l,y)},[l,n,y]),le=useMemo(()=>{let e=[],r=new Date;r.setHours(0,0,0,0);let t=xe(i,P),d=W(i);if(k&&t>0){let u=new Date(i.getFullYear(),i.getMonth()-1),g=W(u);for(let c=g-t+1;c<=g;c++){let f=new Date(u.getFullYear(),u.getMonth(),c);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}for(let u=1;u<=d;u++){let g=new Date(i.getFullYear(),i.getMonth(),u);e.push({date:g,isCurrentMonth:true,isToday:h(g,r)});}if(k){let u=42-e.length,g=new Date(i.getFullYear(),i.getMonth()+1);for(let c=1;c<=u;c++){let f=new Date(g.getFullYear(),g.getMonth(),c);e.push({date:f,isCurrentMonth:false,isToday:h(f,r)});}}return e},[i,k,P]),ue=()=>{D(new Date(i.getFullYear(),i.getMonth()-1,1));},de=()=>{D(new Date(i.getFullYear(),i.getMonth()+1,1));},fe=()=>{let e=new Date;D(e),m(e);},ge=(e,r)=>{if(e.key==="Enter"||e.key===" "){e.preventDefault(),z(r);return}if(e.key==="ArrowRight"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+1),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowLeft"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-1),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowDown"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()+7),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="ArrowUp"){e.preventDefault();let t=new Date(r);t.setDate(t.getDate()-7),m(t),t.getMonth()!==i.getMonth()&&D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Home"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth(),1);m(t);return}if(e.key==="End"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,0);m(t);return}if(e.key==="PageUp"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()-1,r.getDate());m(t),D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="PageDown"){e.preventDefault();let t=new Date(r.getFullYear(),r.getMonth()+1,r.getDate());m(t),D(new Date(t.getFullYear(),t.getMonth(),1));return}if(e.key==="Escape"){e.preventDefault(),w(false);return}};useEffect(()=>{if(p&&F){let e=`${p.getFullYear()}-${p.getMonth()}-${p.getDate()}`,r=$.current.get(e);r&&r.focus();}},[p,F]);let De=useMemo(()=>{let e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"];return P===1?[...e.slice(1),e[0]]:e},[P]),me=i.toLocaleDateString(y,{month:"long",year:"numeric"});return a.createElement("div",{ref:re,className:a$1("w-full",Z),...ne},a.createElement(v.Root,{open:F,onOpenChange:w},a.createElement("div",{className:"space-y-2"},I&&a.createElement("label",{className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},I),a.createElement(v.Trigger,{asChild:true},a.createElement("button",{type:"button",className:a$1("flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background","placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2","disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left",L?"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500":"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary","h-10",R),onClick:()=>w(true),onFocus:()=>w(true),"aria-label":I||"Open calendar","aria-invalid":L},ie||a.createElement("span",{className:"text-muted-foreground"},X||"Select date..."))),U&&a.createElement("p",{className:a$1("text-sm text-muted-foreground",L&&"text-error-600")},U)),a.createElement(v.Portal,null,a.createElement(v.Content,{className:a$1("z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2"),sideOffset:5,align:"start"},a.createElement("div",{ref:ae,className:a$1(ye({variant:te,size:K}),ee),role:"application","aria-label":"Calendar"},a.createElement("div",{className:"flex items-center justify-between mb-4"},a.createElement("div",{className:"flex items-center gap-2"},a.createElement(b,{variant:"ghost",size:"sm",onClick:ue,"aria-label":"Previous month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"}))),a.createElement("h3",{className:"text-sm font-semibold text-popover-foreground","data-testid":"calendar-month-year"},me),a.createElement(b,{variant:"ghost",size:"sm",onClick:de,"aria-label":"Next month"},a.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},a.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})))),a.createElement(b,{variant:"ghost",size:"sm",onClick:fe,className:"text-xs"},"Today")),a.createElement("div",{className:"grid grid-cols-7 gap-1 mb-2"},De.map(e=>a.createElement("div",{key:e,className:"text-center text-xs font-medium text-muted-foreground"},e))),a.createElement("div",{className:"grid grid-cols-7 gap-1"},le.map((e,r)=>{let t=n==="single"?h(e.date,l):n==="range"?Ce(e.date,l?.from,l?.to):l?.some(f=>h(f,e.date)),d=_(e.date,N,Y,A,H),u=n==="range"&&l?.from&&!l?.to&&e.date>=l.from,g=`${e.date.getFullYear()}-${e.date.getMonth()}-${e.date.getDate()}`,c=p&&h(e.date,p);return a.createElement("button",{key:`${e.date.getTime()}-${r}`,ref:f=>{f?$.current.set(g,f):$.current.delete(g);},type:"button",onClick:()=>{k&&!e.isCurrentMonth?(D(new Date(e.date.getFullYear(),e.date.getMonth(),1)),setTimeout(()=>z(e.date),0)):z(e.date);},onKeyDown:f=>ge(f,e.date),disabled:d||(k?false:!e.isCurrentMonth),className:a$1(we({variant:t?"selected":u?"range":e.isToday?"today":e.isCurrentMonth?d?"disabled":"default":"outside",size:K}),!e.isCurrentMonth&&"opacity-50",c&&"ring-2 ring-brand-500 ring-offset-2 z-10"),"aria-label":e.date.toLocaleDateString(y,{weekday:"long",year:"numeric",month:"long",day:"numeric"}),"aria-selected":t,"aria-disabled":d,tabIndex:c?0:-1},e.date.getDate())})),n==="range"&&l?.from&&!l?.to&&a.createElement("div",{className:"mt-4 pt-4 border-t border-border"},a.createElement("p",{className:"text-xs text-muted-foreground text-center"},"Select end date")))))))});Ne.displayName="Calendar";export{ye as a,we as b,Ne as c};//# sourceMappingURL=chunk-PEYPRWZP.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-PEYPRWZP.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/calendar.tsx"],"names":["calendarVariants","cva","calendarDayVariants","getDaysInMonth","date","dateFnsGetDaysInMonth","getFirstDayOfMonth","firstDayOfWeek","firstDay","getDay","startOfMonth","isSameDay","date1","date2","dateFnsIsSameDay","isDateInRange","from","to","isWithinInterval","startOfDay","endOfDay","isBefore","isAfter","isDateDisabled","minDate","maxDate","disabledDates","disabledDays","d","formatDate","_locale","dateFnsFormat","formatDateRange","locale","formatMultipleDates","dates","Calendar","React","mode","value","defaultValue","onChange","placeholder","label","error","helperText","className","inputClassName","calendarClassName","variant","size","showOutsideDays","props","ref","open","setOpen","useState","currentMonth","setCurrentMonth","focusedDate","setFocusedDate","calendarRef","useRef","dayButtonRefs","internalValue","setInternalValue","isControlled","calendarValue","today","handleValueChange","newValue","handleDateClick","rangeValue","multipleValue","dateIndex","_","i","displayValue","useMemo","range","calendarDays","days","daysInMonth","prevMonth","daysInPrevMonth","remainingDays","nextMonth","goToPreviousMonth","goToNextMonth","goToToday","handleKeyDown","nextDate","prevDate","lastDay","useEffect","dateKey","button","dayNames","names","monthYearDisplay","cn","Button","day","index","isSelected","isDisabled","isInRange","isFocused","el","e"],"mappings":"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","file":"chunk-PEYPRWZP.js","sourcesContent":["import React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport * as Popover from \"@radix-ui/react-popover\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n getDaysInMonth as dateFnsGetDaysInMonth,\n startOfMonth,\n getDay,\n isSameDay as dateFnsIsSameDay,\n isWithinInterval,\n isBefore,\n isAfter,\n format as dateFnsFormat,\n startOfDay,\n endOfDay,\n} from \"date-fns\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"./button\";\n\n// Calendar variants\nconst calendarVariants = cva(\n \"inline-block rounded-lg border bg-background shadow-lg\",\n {\n variants: {\n variant: {\n default: \"border-border bg-card\",\n outline: \"border-2 border-border\",\n ghost: \"border-transparent bg-transparent shadow-none\",\n },\n size: {\n sm: \"p-2\",\n md: \"p-3\",\n lg: \"p-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst calendarDayVariants = cva(\n \"flex items-center justify-center rounded-md font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"hover:bg-muted text-foreground\",\n selected:\n \"bg-primary text-primary-foreground hover:bg-primary/90 font-semibold\",\n range: \"bg-primary/10 text-primary hover:bg-primary/20 font-medium\",\n today: \"border-2 border-primary text-foreground font-semibold\",\n outside: \"text-muted-foreground\",\n disabled: \"text-muted-foreground/50 cursor-not-allowed\",\n },\n size: {\n sm: \"h-7 w-7 text-xs\",\n md: \"h-9 w-9 text-sm\",\n lg: \"h-11 w-11 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nexport type CalendarMode = \"single\" | \"range\" | \"multiple\";\n\nexport interface CalendarProps extends VariantProps<typeof calendarVariants> {\n mode?: CalendarMode;\n value?: Date | Date[] | { from?: Date; to?: Date };\n defaultValue?: Date | Date[] | { from?: Date; to?: Date };\n onChange?: (\n value: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDates?: Date[];\n disabledDays?: number[]; // 0 = Sunday, 1 = Monday, etc.\n locale?: string;\n placeholder?: string;\n label?: string;\n error?: boolean;\n helperText?: string;\n className?: string;\n inputClassName?: string;\n calendarClassName?: string;\n showOutsideDays?: boolean;\n firstDayOfWeek?: 0 | 1; // 0 = Sunday, 1 = Monday\n}\n\n// Helper functions using date-fns for robust date manipulation\nconst getDaysInMonth = (date: Date): number => {\n return dateFnsGetDaysInMonth(date);\n};\n\nconst getFirstDayOfMonth = (date: Date, firstDayOfWeek: 0 | 1): number => {\n // Use date-fns getDay for consistent day-of-week calculation\n const firstDay = getDay(startOfMonth(date));\n // Convert Sunday (0) to Monday-first (6) if needed\n // Sunday = 0, Monday = 1, ..., Saturday = 6\n // For Monday-first: Sunday becomes 6, Monday becomes 0, etc.\n return firstDayOfWeek === 1 ? (firstDay === 0 ? 6 : firstDay - 1) : firstDay;\n};\n\nconst isSameDay = (\n date1: Date | undefined,\n date2: Date | undefined,\n): boolean => {\n if (!date1 || !date2) return false;\n return dateFnsIsSameDay(date1, date2);\n};\n\nconst isDateInRange = (date: Date, from?: Date, to?: Date): boolean => {\n if (!from && !to) return false;\n if (from && to) {\n // Use date-fns isWithinInterval for proper date range checking\n return isWithinInterval(startOfDay(date), {\n start: startOfDay(from),\n end: endOfDay(to),\n });\n }\n if (from) return !isBefore(startOfDay(date), startOfDay(from));\n if (to) return !isAfter(startOfDay(date), endOfDay(to));\n return false;\n};\n\nconst isDateDisabled = (\n date: Date,\n minDate?: Date,\n maxDate?: Date,\n disabledDates?: Date[],\n disabledDays?: number[],\n): boolean => {\n if (minDate && isBefore(startOfDay(date), startOfDay(minDate))) return true;\n if (maxDate && isAfter(startOfDay(date), endOfDay(maxDate))) return true;\n if (disabledDates?.some((d) => isSameDay(d, date))) return true;\n if (disabledDays?.includes(getDay(date))) return true;\n return false;\n};\n\nconst formatDate = (\n date: Date | undefined,\n _locale: string = \"en-US\",\n): string => {\n if (!date) return \"\";\n // Use date-fns format for consistent formatting\n // Note: date-fns uses locale objects, but we'll use a simple format for now\n // For full locale support, import locale from 'date-fns/locale'\n // Locale parameter is kept for API compatibility but not yet used\n return dateFnsFormat(date, \"MMM d, yyyy\");\n};\n\nconst formatDateRange = (\n from?: Date,\n to?: Date,\n locale: string = \"en-US\",\n): string => {\n if (!from && !to) return \"\";\n if (from && to) {\n return `${formatDate(from, locale)} - ${formatDate(to, locale)}`;\n }\n if (from) return formatDate(from, locale);\n if (to) return formatDate(to, locale);\n return \"\";\n};\n\nconst formatMultipleDates = (\n dates: Date[],\n _locale: string = \"en-US\",\n): string => {\n if (dates.length === 0) return \"\";\n if (dates.length === 1) return formatDate(dates[0], _locale);\n return `${dates.length} dates selected`;\n};\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n mode = \"single\",\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n locale = \"en-US\",\n placeholder,\n label,\n error,\n helperText,\n className,\n inputClassName,\n calendarClassName,\n variant,\n size,\n showOutsideDays = true,\n firstDayOfWeek = 1,\n ...props\n },\n ref,\n ) => {\n const [open, setOpen] = useState(false);\n const [currentMonth, setCurrentMonth] = useState(new Date());\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const calendarRef = useRef<HTMLDivElement>(null);\n const dayButtonRefs = useRef<Map<string, HTMLButtonElement>>(new Map());\n\n // Controlled vs uncontrolled\n const [internalValue, setInternalValue] = useState<\n Date | Date[] | { from?: Date; to?: Date } | undefined\n >(defaultValue);\n\n const isControlled = value !== undefined;\n const calendarValue = isControlled ? value : internalValue;\n\n // Set focused date when calendar opens\n React.useLayoutEffect(() => {\n if (open && !focusedDate) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n setFocusedDate(today);\n }\n }, [open, focusedDate]);\n\n // Handle value changes\n const handleValueChange = (\n newValue: Date | Date[] | { from?: Date; to?: Date } | undefined,\n ) => {\n if (!isControlled) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n // Handle date selection\n const handleDateClick = (date: Date) => {\n if (isDateDisabled(date, minDate, maxDate, disabledDates, disabledDays)) {\n return;\n }\n\n if (mode === \"single\") {\n handleValueChange(date);\n setOpen(false);\n } else if (mode === \"range\") {\n const rangeValue = calendarValue as\n | { from?: Date; to?: Date }\n | undefined;\n if (!rangeValue?.from || (rangeValue.from && rangeValue.to)) {\n // Start new range\n handleValueChange({ from: date });\n } else {\n // Complete range\n const from = rangeValue.from;\n const to = date;\n if (to < from) {\n handleValueChange({ from: to, to: from });\n } else {\n handleValueChange({ from, to });\n }\n setOpen(false);\n }\n } else if (mode === \"multiple\") {\n const multipleValue = (calendarValue as Date[]) || [];\n const dateIndex = multipleValue.findIndex((d) => isSameDay(d, date));\n if (dateIndex >= 0) {\n // Remove date\n handleValueChange(multipleValue.filter((_, i) => i !== dateIndex));\n } else {\n // Add date\n handleValueChange([...multipleValue, date]);\n }\n }\n };\n\n // Get display value\n const displayValue = useMemo(() => {\n if (!calendarValue) return \"\";\n\n if (mode === \"single\") {\n return formatDate(calendarValue as Date, locale);\n } else if (mode === \"range\") {\n const range = calendarValue as { from?: Date; to?: Date };\n return formatDateRange(range.from, range.to, locale);\n } else {\n return formatMultipleDates(calendarValue as Date[], locale);\n }\n }, [calendarValue, mode, locale]);\n\n // Generate calendar days\n const calendarDays = useMemo(() => {\n const days: Array<{\n date: Date;\n isCurrentMonth: boolean;\n isToday: boolean;\n }> = [];\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n\n const firstDay = getFirstDayOfMonth(currentMonth, firstDayOfWeek);\n const daysInMonth = getDaysInMonth(currentMonth);\n\n // Previous month days\n if (showOutsideDays && firstDay > 0) {\n const prevMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() - 1,\n );\n const daysInPrevMonth = getDaysInMonth(prevMonth);\n for (\n let i = daysInPrevMonth - firstDay + 1;\n i <= daysInPrevMonth;\n i++\n ) {\n const date = new Date(\n prevMonth.getFullYear(),\n prevMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n const date = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: true,\n isToday: isSameDay(date, today),\n });\n }\n\n // Next month days\n if (showOutsideDays) {\n const remainingDays = 42 - days.length; // 6 weeks * 7 days\n const nextMonth = new Date(\n currentMonth.getFullYear(),\n currentMonth.getMonth() + 1,\n );\n for (let i = 1; i <= remainingDays; i++) {\n const date = new Date(\n nextMonth.getFullYear(),\n nextMonth.getMonth(),\n i,\n );\n days.push({\n date,\n isCurrentMonth: false,\n isToday: isSameDay(date, today),\n });\n }\n }\n\n return days;\n }, [currentMonth, showOutsideDays, firstDayOfWeek]);\n\n // Navigate months\n const goToPreviousMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1, 1),\n );\n };\n\n const goToNextMonth = () => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1),\n );\n };\n\n const goToToday = () => {\n const today = new Date();\n setCurrentMonth(today);\n setFocusedDate(today);\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent, date: Date) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleDateClick(date);\n return;\n }\n\n if (e.key === \"ArrowRight\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 1);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowLeft\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 1);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n const nextDate = new Date(date);\n nextDate.setDate(nextDate.getDate() + 7);\n setFocusedDate(nextDate);\n // Update month if needed\n if (nextDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(nextDate.getFullYear(), nextDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"ArrowUp\") {\n e.preventDefault();\n const prevDate = new Date(date);\n prevDate.setDate(prevDate.getDate() - 7);\n setFocusedDate(prevDate);\n // Update month if needed\n if (prevDate.getMonth() !== currentMonth.getMonth()) {\n setCurrentMonth(\n new Date(prevDate.getFullYear(), prevDate.getMonth(), 1),\n );\n }\n return;\n }\n\n if (e.key === \"Home\") {\n e.preventDefault();\n const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);\n setFocusedDate(firstDay);\n return;\n }\n\n if (e.key === \"End\") {\n e.preventDefault();\n const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n setFocusedDate(lastDay);\n return;\n }\n\n if (e.key === \"PageUp\") {\n e.preventDefault();\n const prevMonth = new Date(\n date.getFullYear(),\n date.getMonth() - 1,\n date.getDate(),\n );\n setFocusedDate(prevMonth);\n setCurrentMonth(\n new Date(prevMonth.getFullYear(), prevMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"PageDown\") {\n e.preventDefault();\n const nextMonth = new Date(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n setFocusedDate(nextMonth);\n setCurrentMonth(\n new Date(nextMonth.getFullYear(), nextMonth.getMonth(), 1),\n );\n return;\n }\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setOpen(false);\n return;\n }\n };\n\n // Focus management\n useEffect(() => {\n if (focusedDate && open) {\n const dateKey = `${focusedDate.getFullYear()}-${focusedDate.getMonth()}-${focusedDate.getDate()}`;\n const button = dayButtonRefs.current.get(dateKey);\n if (button) {\n button.focus();\n }\n }\n }, [focusedDate, open]);\n\n // Day names\n const dayNames = useMemo(() => {\n const names = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n if (firstDayOfWeek === 1) {\n return [...names.slice(1), names[0]];\n }\n return names;\n }, [firstDayOfWeek]);\n\n // Month/year display\n const monthYearDisplay = currentMonth.toLocaleDateString(locale, {\n month: \"long\",\n year: \"numeric\",\n });\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n <Popover.Root open={open} onOpenChange={setOpen}>\n <div className=\"space-y-2\">\n {label && (\n <label className=\"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\">\n {label}\n </label>\n )}\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n className={cn(\n \"flex w-full rounded-md border bg-background px-3 py-2 text-sm ring-offset-background\",\n \"placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n \"disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200 text-left\",\n error\n ? \"border-error-500 shadow-sm hover:border-error-600 focus-visible:ring-error-500/20 focus-visible:border-error-500\"\n : \"border-border shadow-sm hover:border-primary focus-visible:ring-ring/20 focus-visible:border-primary\",\n \"h-10\",\n inputClassName,\n )}\n onClick={() => setOpen(true)}\n onFocus={() => setOpen(true)}\n aria-label={label || \"Open calendar\"}\n aria-invalid={error}\n >\n {displayValue || (\n <span className=\"text-muted-foreground\">\n {placeholder || \"Select date...\"}\n </span>\n )}\n </button>\n </Popover.Trigger>\n {helperText && (\n <p\n className={cn(\n \"text-sm text-muted-foreground\",\n error && \"text-error-600\",\n )}\n >\n {helperText}\n </p>\n )}\n </div>\n\n <Popover.Portal>\n <Popover.Content\n className={cn(\n \"z-50 w-auto rounded-lg border bg-popover p-4 shadow-lg\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out\",\n \"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n \"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95\",\n \"data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2\",\n \"data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n )}\n sideOffset={5}\n align=\"start\"\n >\n <div\n ref={calendarRef}\n className={cn(\n calendarVariants({ variant, size }),\n calendarClassName,\n )}\n role=\"application\"\n aria-label=\"Calendar\"\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToPreviousMonth}\n aria-label=\"Previous month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </Button>\n\n <h3\n className=\"text-sm font-semibold text-popover-foreground\"\n data-testid=\"calendar-month-year\"\n >\n {monthYearDisplay}\n </h3>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToNextMonth}\n aria-label=\"Next month\"\n >\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </Button>\n </div>\n\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={goToToday}\n className=\"text-xs\"\n >\n Today\n </Button>\n </div>\n\n {/* Day names */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {dayNames.map((day) => (\n <div\n key={day}\n className=\"text-center text-xs font-medium text-muted-foreground\"\n >\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar grid */}\n <div className=\"grid grid-cols-7 gap-1\">\n {calendarDays.map((day, index) => {\n const isSelected =\n mode === \"single\"\n ? isSameDay(day.date, calendarValue as Date | undefined)\n : mode === \"range\"\n ? isDateInRange(\n day.date,\n (calendarValue as { from?: Date; to?: Date })\n ?.from,\n (calendarValue as { from?: Date; to?: Date })?.to,\n )\n : (calendarValue as Date[])?.some((d) =>\n isSameDay(d, day.date),\n );\n\n const isDisabled = isDateDisabled(\n day.date,\n minDate,\n maxDate,\n disabledDates,\n disabledDays,\n );\n\n const isInRange =\n mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to &&\n day.date >=\n (calendarValue as { from?: Date; to?: Date }).from!;\n\n const dateKey = `${day.date.getFullYear()}-${day.date.getMonth()}-${day.date.getDate()}`;\n const isFocused =\n focusedDate && isSameDay(day.date, focusedDate);\n\n return (\n <button\n key={`${day.date.getTime()}-${index}`}\n ref={(el) => {\n if (el) {\n dayButtonRefs.current.set(dateKey, el);\n } else {\n dayButtonRefs.current.delete(dateKey);\n }\n }}\n type=\"button\"\n onClick={() => {\n if (showOutsideDays && !day.isCurrentMonth) {\n // Navigate to the month of the clicked date\n setCurrentMonth(\n new Date(\n day.date.getFullYear(),\n day.date.getMonth(),\n 1,\n ),\n );\n // Then select the date\n setTimeout(() => handleDateClick(day.date), 0);\n } else {\n handleDateClick(day.date);\n }\n }}\n onKeyDown={(e) => handleKeyDown(e, day.date)}\n disabled={\n isDisabled ||\n (showOutsideDays ? false : !day.isCurrentMonth)\n }\n className={cn(\n calendarDayVariants({\n variant: isSelected\n ? \"selected\"\n : isInRange\n ? \"range\"\n : day.isToday\n ? \"today\"\n : !day.isCurrentMonth\n ? \"outside\"\n : isDisabled\n ? \"disabled\"\n : \"default\",\n size,\n }),\n !day.isCurrentMonth && \"opacity-50\",\n isFocused &&\n \"ring-2 ring-brand-500 ring-offset-2 z-10\",\n )}\n aria-label={day.date.toLocaleDateString(locale, {\n weekday: \"long\",\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n })}\n aria-selected={isSelected}\n aria-disabled={isDisabled}\n tabIndex={isFocused ? 0 : -1}\n >\n {day.date.getDate()}\n </button>\n );\n })}\n </div>\n\n {/* Footer for range mode */}\n {mode === \"range\" &&\n (calendarValue as { from?: Date; to?: Date })?.from &&\n !(calendarValue as { from?: Date; to?: Date })?.to && (\n <div className=\"mt-4 pt-4 border-t border-border\">\n <p className=\"text-xs text-muted-foreground text-center\">\n Select end date\n </p>\n </div>\n )}\n </div>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </div>\n );\n },\n);\n\nCalendar.displayName = \"Calendar\";\n\nexport { calendarVariants, calendarDayVariants };\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 _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 h=classVarianceAuthority.cva("rounded-lg border transition-all duration-200",{variants:{variant:{default:["border-border shadow-sm bg-card text-card-foreground","hover:shadow-md hover:border-border"],elevated:["border-border shadow-lg bg-card text-card-foreground","hover:shadow-xl hover:border-border"],outlined:["border-2 border-border shadow-none bg-card text-card-foreground","hover:border-primary hover:shadow-sm","focus-within:border-primary focus-within:shadow-sm"],filled:["border-border bg-muted text-card-foreground","hover:bg-muted/80 hover:shadow-sm"],interactive:["border-border shadow-sm cursor-pointer bg-card text-card-foreground","hover:shadow-md hover:border-primary hover:scale-[1.02]","active:scale-[0.98] active:shadow-sm"],subtle:["border-border bg-muted/50 text-muted-foreground","hover:bg-muted hover:border-border"]},size:{sm:"p-3",default:"p-4 sm:p-6",lg:"p-6 sm:p-8",xl:"p-8 sm:p-10",none:"p-0"}},defaultVariants:{variant:"default",size:"default"}}),i=e__namespace.forwardRef(({className:r,variant:t,size:a,...f},b)=>e__namespace.createElement("div",{ref:b,className:chunkITRGJNWL_cjs.a(h({variant:t,size:a,className:r})),...f}));i.displayName="Card";var n=e__namespace.forwardRef(({className:r,...t},a)=>e__namespace.createElement("div",{ref:a,className:chunkITRGJNWL_cjs.a("flex flex-col space-y-1.5 p-4 sm:p-6 pb-3",r),...t}));n.displayName="CardHeader";var m=e__namespace.forwardRef(({className:r,...t},a)=>e__namespace.createElement("h3",{ref:a,className:chunkITRGJNWL_cjs.a("text-xl sm:text-2xl font-semibold leading-none tracking-tight",r),...t}));m.displayName="CardTitle";var c=e__namespace.forwardRef(({className:r,...t},a)=>e__namespace.createElement("p",{ref:a,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",r),...t}));c.displayName="CardDescription";var p=e__namespace.forwardRef(({className:r,...t},a)=>e__namespace.createElement("div",{ref:a,className:chunkITRGJNWL_cjs.a("p-4 sm:p-6 pt-0",r),...t}));p.displayName="CardContent";var l=e__namespace.forwardRef(({className:r,...t},a)=>e__namespace.createElement("div",{ref:a,className:chunkITRGJNWL_cjs.a("flex items-center p-4 sm:p-6 pt-3",r),...t}));l.displayName="CardFooter";var d=chunk7SPPGTBT_cjs.a(i);d.Header=n;d.Title=m;d.Description=c;d.Content=p;d.Footer=l;exports.a=h;exports.b=n;exports.c=m;exports.d=c;exports.e=p;exports.f=l;exports.g=d;//# sourceMappingURL=chunk-PMNNV4ML.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-PMNNV4ML.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/card.tsx"],"names":["cardVariants","cva","CardComponent","e","className","variant","size","props","ref","cn","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Card","memo"],"mappings":"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","file":"chunk-PMNNV4ML.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\nconst cardVariants = cva(\n // Base styles with improved spacing and transitions\n \"rounded-lg border transition-all duration-200\",\n {\n variants: {\n variant: {\n // Enhanced default with better depth\n default: [\n \"border-border shadow-sm bg-card text-card-foreground\",\n \"hover:shadow-md hover:border-border\",\n ],\n // Enhanced elevated with better shadow\n elevated: [\n \"border-border shadow-lg bg-card text-card-foreground\",\n \"hover:shadow-xl hover:border-border\",\n ],\n // Enhanced outlined with better focus\n outlined: [\n \"border-2 border-border shadow-none bg-card text-card-foreground\",\n \"hover:border-primary hover:shadow-sm\",\n \"focus-within:border-primary focus-within:shadow-sm\",\n ],\n // Enhanced filled with better contrast\n filled: [\n \"border-border bg-muted text-card-foreground\",\n \"hover:bg-muted/80 hover:shadow-sm\",\n ],\n // Enhanced interactive with better feedback\n interactive: [\n \"border-border shadow-sm cursor-pointer bg-card text-card-foreground\",\n \"hover:shadow-md hover:border-primary hover:scale-[1.02]\",\n \"active:scale-[0.98] active:shadow-sm\",\n ],\n // Subtle variant for less prominent cards\n subtle: [\n \"border-border bg-muted/50 text-muted-foreground\",\n \"hover:bg-muted hover:border-border\",\n ],\n },\n size: {\n // Improved spacing for consistency\n sm: \"p-3\",\n default: \"p-4 sm:p-6\",\n lg: \"p-6 sm:p-8\",\n xl: \"p-8 sm:p-10\",\n none: \"p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface CardProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof cardVariants> {}\n\nconst CardComponent = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant, size, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(cardVariants({ variant, size, className }))}\n {...props}\n />\n ),\n);\nCardComponent.displayName = \"Card\";\n\n// Enhanced subcomponents with improved spacing\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-4 sm:p-6 pb-3\", className)}\n {...props}\n />\n));\nCardHeader.displayName = \"CardHeader\";\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-xl sm:text-2xl font-semibold leading-none tracking-tight\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n));\nCardDescription.displayName = \"CardDescription\";\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-4 sm:p-6 pt-0\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-4 sm:p-6 pt-3\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n\nexport {\n CardHeader,\n CardFooter,\n CardTitle,\n CardDescription,\n CardContent,\n cardVariants,\n};\n\n// Memoize Card for performance optimization (after all subcomponents are defined)\nconst Card = memo(CardComponent) as typeof CardComponent & {\n Header: typeof CardHeader;\n Title: typeof CardTitle;\n Description: typeof CardDescription;\n Content: typeof CardContent;\n Footer: typeof CardFooter;\n};\n\n// Attach subcomponents to Card for compound component pattern\nCard.Header = CardHeader;\nCard.Title = CardTitle;\nCard.Description = CardDescription;\nCard.Content = CardContent;\nCard.Footer = CardFooter;\n\nexport { Card };\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 c=classVarianceAuthority.cva("fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg duration-300 transition-all",{variants:{variant:{default:"border-border shadow-lg hover:shadow-xl",elevated:"border-border shadow-xl hover:shadow-2xl",outlined:"border-2 border-border shadow-md hover:border-primary hover:shadow-lg",filled:"border-border bg-muted shadow-md hover:shadow-lg",destructive:"border-error-200 bg-error-50 shadow-lg hover:shadow-xl"},size:{default:"max-w-lg sm:max-w-xl md:max-w-2xl lg:max-w-4xl",sm:"max-w-sm sm:max-w-md",lg:"max-w-2xl sm:max-w-3xl md:max-w-4xl lg:max-w-5xl",xl:"max-w-4xl sm:max-w-5xl md:max-w-6xl lg:max-w-7xl",full:"max-w-[95vw] sm:max-w-[90vw]"},animation:{default:"animate-in fade-in-0 zoom-in-95 duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",size:"default",animation:"default"}}),f=classVarianceAuthority.cva("fixed inset-0 z-40 transition-all duration-300",{variants:{variant:{default:"bg-black/50 backdrop-blur-sm",subtle:"bg-black/30 backdrop-blur-none",strong:"bg-black/70 backdrop-blur-md",colored:"bg-brand-500/20 backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),w=({open:a,onOpenChange:t,children:o,backdropVariant:n="default"})=>(e__namespace.useEffect(()=>{let i=l=>{l.key==="Escape"&&a&&t?.(false);};return a&&(document.addEventListener("keydown",i),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",i),document.body.style.overflow="unset";}},[a,t]),a?e__namespace.createElement("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4"},e__namespace.createElement("div",{className:chunkITRGJNWL_cjs.a(f({variant:n})),onClick:()=>t?.(false)}),e__namespace.createElement("div",{className:"relative z-50 w-full"},o)):null),g=e__namespace.forwardRef(({className:a,children:t,onClose:o,variant:n,size:i,animation:l,...d},m)=>e__namespace.createElement("div",{ref:m,className:chunkITRGJNWL_cjs.a(c({variant:n,size:i,animation:l}),"p-4 sm:p-6 sm:rounded-lg",a),...d},t,e__namespace.createElement("button",{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",onClick:o},e__namespace.createElement("span",{className:"sr-only"},"Close"),e__namespace.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},e__namespace.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))));g.displayName="DialogContent";var p=e__namespace.forwardRef(({className:a,...t},o)=>e__namespace.createElement("div",{ref:o,className:chunkITRGJNWL_cjs.a("flex flex-col space-y-1.5 text-center sm:text-left",a),...t}));p.displayName="DialogHeader";var u=e__namespace.forwardRef(({className:a,...t},o)=>e__namespace.createElement("h2",{ref:o,className:chunkITRGJNWL_cjs.a("text-lg font-semibold leading-none tracking-tight",a),...t}));u.displayName="DialogTitle";var x=e__namespace.forwardRef(({className:a,...t},o)=>e__namespace.createElement("p",{ref:o,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",a),...t}));x.displayName="DialogDescription";exports.a=c;exports.b=f;exports.c=w;exports.d=g;exports.e=p;exports.f=u;exports.g=x;//# sourceMappingURL=chunk-PVHTEE5T.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-PVHTEE5T.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/dialog.tsx"],"names":["dialogVariants","cva","backdropVariants","Dialog","open","onOpenChange","children","backdropVariant","e","handleEscape","cn","DialogContent","className","onClose","variant","size","animation","props","ref","DialogHeader","DialogTitle","DialogDescription"],"mappings":"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","file":"chunk-PVHTEE5T.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst dialogVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg duration-300 transition-all\",\n {\n variants: {\n variant: {\n default: \"border-border shadow-lg hover:shadow-xl\",\n elevated: \"border-border shadow-xl hover:shadow-2xl\",\n outlined: \"border-2 border-border shadow-md hover:border-primary hover:shadow-lg\",\n filled: \"border-border bg-muted shadow-md hover:shadow-lg\",\n destructive: \"border-error-200 bg-error-50 shadow-lg hover:shadow-xl\",\n },\n size: {\n default: \"max-w-lg sm:max-w-xl md:max-w-2xl lg:max-w-4xl\",\n sm: \"max-w-sm sm:max-w-md\",\n lg: \"max-w-2xl sm:max-w-3xl md:max-w-4xl lg:max-w-5xl\",\n xl: \"max-w-4xl sm:max-w-5xl md:max-w-6xl lg:max-w-7xl\",\n full: \"max-w-[95vw] sm:max-w-[90vw]\",\n },\n animation: {\n default: \"animate-in fade-in-0 zoom-in-95 duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n animation: \"default\",\n },\n }\n);\n\nconst backdropVariants = cva(\n \"fixed inset-0 z-40 transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"bg-black/50 backdrop-blur-sm\",\n subtle: \"bg-black/30 backdrop-blur-none\",\n strong: \"bg-black/70 backdrop-blur-md\",\n colored: \"bg-brand-500/20 backdrop-blur-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface DialogProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n backdropVariant?: VariantProps<typeof backdropVariants>['variant'];\n}\n\nexport interface DialogContentProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dialogVariants> {\n onClose?: () => void;\n}\n\nexport interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport interface DialogTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport interface DialogDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst Dialog: React.FC<DialogProps> = ({ open, onOpenChange, children, backdropVariant = \"default\" }) => {\n React.useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && open) {\n onOpenChange?.(false);\n }\n };\n\n if (open) {\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [open, onOpenChange]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div\n className={cn(backdropVariants({ variant: backdropVariant }))}\n onClick={() => onOpenChange?.(false)}\n />\n <div className=\"relative z-50 w-full\">\n {children}\n </div>\n </div>\n );\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, onClose, variant, size, animation, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n dialogVariants({ variant, size, animation }),\n \"p-4 sm:p-6 sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <button\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n onClick={onClose}\n >\n <span className=\"sr-only\">Close</span>\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n )\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(\n ({ className, ...props }, ref) => (\n <h2\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nexport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, dialogVariants, backdropVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-AC2JBXHQ.js';import*as a from'react';import {cva}from'class-variance-authority';import {CaretLeft,DotsThree,CaretRight}from'phosphor-react';var E=cva("flex items-center justify-center space-x-1",{variants:{variant:{default:"",compact:"space-x-0.5"},size:{default:"h-9",sm:"h-8",lg:"h-10"}},defaultVariants:{variant:"default",size:"default"}}),i=cva("inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"border border-input bg-background hover:bg-accent hover:text-accent-foreground",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 w-9",sm:"h-8 w-8 text-xs",lg:"h-10 w-10",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),k=a.forwardRef(({className:o,currentPage:e,totalPages:t,onPageChange:b,showFirstLast:v=true,showPrevNext:y=true,maxVisiblePages:c=5,disabled:r=false,variant:R,size:l,...w},P)=>{let m=n=>{r||n<1||n>t||n===e||b(n);},f=(()=>{if(t<=c)return Array.from({length:t},(L,N)=>N+1);let n=Math.floor(c/2),u=Math.max(1,e-n),h=Math.min(t,u+c-1);return h-u+1<c&&(u=Math.max(1,h-c+1)),Array.from({length:h-u+1},(L,N)=>u+N)})(),C=f[0]>1,M=f[f.length-1]<t;return a.createElement("nav",{ref:P,"aria-label":"Pagination",className:a$1(E({variant:R,size:l}),o),...w},a.createElement("ul",{className:"flex items-center space-x-1"},v&&a.createElement("li",null,a.createElement("button",{onClick:()=>m(1),disabled:r||e===1,className:a$1(i({variant:"outline",size:l})),"aria-label":"Go to first page"},a.createElement("span",{className:"sr-only"},"First"),a.createElement(CaretLeft,{className:"h-4 w-4"}),a.createElement(CaretLeft,{className:"h-4 w-4 -ml-1"}))),y&&a.createElement("li",null,a.createElement("button",{onClick:()=>m(e-1),disabled:r||e===1,className:a$1(i({variant:"outline",size:l})),"aria-label":"Go to previous page"},a.createElement("span",{className:"sr-only"},"Previous"),a.createElement(CaretLeft,{className:"h-4 w-4"}))),C&&a.createElement("li",null,a.createElement("span",{className:"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground"},a.createElement(DotsThree,{className:"h-4 w-4"}),a.createElement("span",{className:"sr-only"},"More pages before"))),f.map(n=>a.createElement("li",{key:n},a.createElement("button",{onClick:()=>m(n),disabled:r,className:a$1(i({variant:n===e?"default":"outline",size:l}),n===e&&"bg-primary text-primary-foreground hover:bg-primary/90"),"aria-label":`Go to page ${n}`,"aria-current":n===e?"page":void 0},n))),M&&a.createElement("li",null,a.createElement("span",{className:"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground"},a.createElement(DotsThree,{className:"h-4 w-4"}),a.createElement("span",{className:"sr-only"},"More pages after"))),y&&a.createElement("li",null,a.createElement("button",{onClick:()=>m(e+1),disabled:r||e===t,className:a$1(i({variant:"outline",size:l})),"aria-label":"Go to next page"},a.createElement("span",{className:"sr-only"},"Next"),a.createElement(CaretRight,{className:"h-4 w-4"}))),v&&a.createElement("li",null,a.createElement("button",{onClick:()=>m(t),disabled:r||e===t,className:a$1(i({variant:"outline",size:l})),"aria-label":"Go to last page"},a.createElement("span",{className:"sr-only"},"Last"),a.createElement(CaretRight,{className:"h-4 w-4"}),a.createElement(CaretRight,{className:"h-4 w-4 -ml-1"})))))});k.displayName="Pagination";var T=a.forwardRef(({className:o,...e},t)=>a.createElement("ul",{ref:t,className:a$1("flex flex-row items-center gap-1",o),...e}));T.displayName="PaginationContent";var H=a.forwardRef(({className:o,...e},t)=>a.createElement("li",{ref:t,className:a$1("",o),...e}));H.displayName="PaginationItem";var G=a.forwardRef(({className:o,isActive:e,...t},b)=>a.createElement("button",{ref:b,className:a$1(i({variant:e?"default":"outline",size:"default"}),e&&"bg-primary text-primary-foreground hover:bg-primary/90",o),"aria-current":e?"page":void 0,...t}));G.displayName="PaginationLink";var V=a.forwardRef(({className:o,...e},t)=>a.createElement("button",{ref:t,className:a$1(i({variant:"outline",size:"default"}),o),"aria-label":"Go to previous page",...e},a.createElement(CaretLeft,{className:"h-4 w-4"}),a.createElement("span",{className:"sr-only"},"Previous")));V.displayName="PaginationPrevious";var W=a.forwardRef(({className:o,...e},t)=>a.createElement("button",{ref:t,className:a$1(i({variant:"outline",size:"default"}),o),"aria-label":"Go to next page",...e},a.createElement(CaretRight,{className:"h-4 w-4"}),a.createElement("span",{className:"sr-only"},"Next")));W.displayName="PaginationNext";var j=a.forwardRef(({className:o,...e},t)=>a.createElement("span",{ref:t,className:a$1("flex h-9 w-9 items-center justify-center",o),...e},a.createElement(DotsThree,{className:"h-4 w-4"}),a.createElement("span",{className:"sr-only"},"More pages")));j.displayName="PaginationEllipsis";export{E as a,i as b,k as c,T as d,H as e,G as f,V as g,W as h,j as i};//# sourceMappingURL=chunk-Q6QMSAJR.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-Q6QMSAJR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/pagination.tsx"],"names":["paginationVariants","cva","paginationItemVariants","Pagination","className","currentPage","totalPages","onPageChange","showFirstLast","showPrevNext","maxVisiblePages","disabled","variant","size","props","ref","handlePageChange","page","visiblePages","_","i","half","start","end","showStartEllipsis","showEndEllipsis","cn","CaretLeft","DotsThree","CaretRight","PaginationContent","PaginationItem","PaginationLink","isActive","PaginationPrevious","PaginationNext","PaginationEllipsis"],"mappings":"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","file":"chunk-Q6QMSAJR.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { CaretLeft, CaretRight, DotsThree } from \"phosphor-react\";\n\nconst paginationVariants = cva(\n \"flex items-center justify-center space-x-1\",\n {\n variants: {\n variant: {\n default: \"\",\n compact: \"space-x-0.5\",\n },\n size: {\n default: \"h-9\",\n sm: \"h-8\",\n lg: \"h-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nconst paginationItemVariants = cva(\n \"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n outline: \"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 w-9\",\n sm: \"h-8 w-8 text-xs\",\n lg: \"h-10 w-10\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n);\n\nexport interface PaginationProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof paginationVariants> {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n maxVisiblePages?: number;\n disabled?: boolean;\n}\n\nconst Pagination = React.forwardRef<HTMLElement, PaginationProps>(\n (\n {\n className,\n currentPage,\n totalPages,\n onPageChange,\n showFirstLast = true,\n showPrevNext = true,\n maxVisiblePages = 5,\n disabled = false,\n variant,\n size,\n ...props\n },\n ref\n ) => {\n const handlePageChange = (page: number) => {\n if (disabled || page < 1 || page > totalPages || page === currentPage) {\n return;\n }\n onPageChange(page);\n };\n\n const getVisiblePages = () => {\n if (totalPages <= maxVisiblePages) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const half = Math.floor(maxVisiblePages / 2);\n let start = Math.max(1, currentPage - half);\n let end = Math.min(totalPages, start + maxVisiblePages - 1);\n\n if (end - start + 1 < maxVisiblePages) {\n start = Math.max(1, end - maxVisiblePages + 1);\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n };\n\n const visiblePages = getVisiblePages();\n const showStartEllipsis = visiblePages[0]! > 1;\n const showEndEllipsis = visiblePages[visiblePages.length - 1]! < totalPages;\n\n return (\n <nav\n ref={ref}\n aria-label=\"Pagination\"\n className={cn(paginationVariants({ variant, size }), className)}\n {...props}\n >\n <ul className=\"flex items-center space-x-1\">\n {showFirstLast && (\n <li>\n <button\n onClick={() => handlePageChange(1)}\n disabled={disabled || currentPage === 1}\n className={cn(paginationItemVariants({ variant: \"outline\", size }))}\n aria-label=\"Go to first page\"\n >\n <span className=\"sr-only\">First</span>\n <CaretLeft className=\"h-4 w-4\" />\n <CaretLeft className=\"h-4 w-4 -ml-1\" />\n </button>\n </li>\n )}\n\n {showPrevNext && (\n <li>\n <button\n onClick={() => handlePageChange(currentPage - 1)}\n disabled={disabled || currentPage === 1}\n className={cn(paginationItemVariants({ variant: \"outline\", size }))}\n aria-label=\"Go to previous page\"\n >\n <span className=\"sr-only\">Previous</span>\n <CaretLeft className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n\n {showStartEllipsis && (\n <li>\n <span className=\"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground\">\n <DotsThree className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages before</span>\n </span>\n </li>\n )}\n\n {visiblePages.map((page) => (\n <li key={page}>\n <button\n onClick={() => handlePageChange(page)}\n disabled={disabled}\n className={cn(\n paginationItemVariants({\n variant: page === currentPage ? \"default\" : \"outline\",\n size,\n }),\n page === currentPage && \"bg-primary text-primary-foreground hover:bg-primary/90\"\n )}\n aria-label={`Go to page ${page}`}\n aria-current={page === currentPage ? \"page\" : undefined}\n >\n {page}\n </button>\n </li>\n ))}\n\n {showEndEllipsis && (\n <li>\n <span className=\"flex items-center justify-center h-9 w-9 text-sm text-muted-foreground\">\n <DotsThree className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages after</span>\n </span>\n </li>\n )}\n\n {showPrevNext && (\n <li>\n <button\n onClick={() => handlePageChange(currentPage + 1)}\n disabled={disabled || currentPage === totalPages}\n className={cn(paginationItemVariants({ variant: \"outline\", size }))}\n aria-label=\"Go to next page\"\n >\n <span className=\"sr-only\">Next</span>\n <CaretRight className=\"h-4 w-4\" />\n </button>\n </li>\n )}\n\n {showFirstLast && (\n <li>\n <button\n onClick={() => handlePageChange(totalPages)}\n disabled={disabled || currentPage === totalPages}\n className={cn(paginationItemVariants({ variant: \"outline\", size }))}\n aria-label=\"Go to last page\"\n >\n <span className=\"sr-only\">Last</span>\n <CaretRight className=\"h-4 w-4\" />\n <CaretRight className=\"h-4 w-4 -ml-1\" />\n </button>\n </li>\n )}\n </ul>\n </nav>\n );\n }\n);\nPagination.displayName = \"Pagination\";\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n));\nPaginationContent.displayName = \"PaginationContent\";\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n));\nPaginationItem.displayName = \"PaginationItem\";\n\nconst PaginationLink = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\"> & {\n isActive?: boolean;\n }\n>(({ className, isActive, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(\n paginationItemVariants({\n variant: isActive ? \"default\" : \"outline\",\n size: \"default\",\n }),\n isActive && \"bg-primary text-primary-foreground hover:bg-primary/90\",\n className\n )}\n aria-current={isActive ? \"page\" : undefined}\n {...props}\n />\n));\nPaginationLink.displayName = \"PaginationLink\";\n\nconst PaginationPrevious = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\">\n>(({ className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(paginationItemVariants({ variant: \"outline\", size: \"default\" }), className)}\n aria-label=\"Go to previous page\"\n {...props}\n >\n <CaretLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Previous</span>\n </button>\n));\nPaginationPrevious.displayName = \"PaginationPrevious\";\n\nconst PaginationNext = React.forwardRef<\n HTMLButtonElement,\n React.ComponentPropsWithoutRef<\"button\">\n>(({ className, ...props }, ref) => (\n <button\n ref={ref}\n className={cn(paginationItemVariants({ variant: \"outline\", size: \"default\" }), className)}\n aria-label=\"Go to next page\"\n {...props}\n >\n <CaretRight className=\"h-4 w-4\" />\n <span className=\"sr-only\">Next</span>\n </button>\n));\nPaginationNext.displayName = \"PaginationNext\";\n\nconst PaginationEllipsis = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <DotsThree className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n));\nPaginationEllipsis.displayName = \"PaginationEllipsis\";\n\nexport {\n Pagination,\n PaginationContent,\n PaginationItem,\n PaginationLink,\n PaginationPrevious,\n PaginationNext,\n PaginationEllipsis,\n paginationVariants,\n paginationItemVariants,\n};\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-MVCGR7JQ.js';import*as e from'react';function d({children:r,fallback:t,errorFallback:n}){return e.createElement(a,{fallback:n?({error:a,resetError:o})=>a?e.createElement(n,{error:a,retry:o}):null:void 0},e.createElement(e.Suspense,{fallback:t?e.createElement(t,null):e.createElement(l,null)},r))}function l(){return e.createElement("div",{className:"flex items-center justify-center p-4"},e.createElement("div",{className:"h-6 w-6 animate-spin rounded-full border-2 border-primary border-t-transparent"}))}function p(r,t){let n=e.forwardRef((a,o)=>e.createElement(d,{fallback:t?.fallback,errorFallback:t?.errorFallback},e.createElement(r,a)));return n.displayName=`withLazyLoading(${r.displayName||r.name})`,n}function f(r){let[t,n]=e.useState(false),a=e.useRef(null);return e.useEffect(()=>{let o=a.current;if(!o)return;let c=new IntersectionObserver(([s])=>{s?.isIntersecting&&(n(true),c.disconnect());},{rootMargin:r?.rootMargin||"50px",threshold:r?.threshold||.1});return c.observe(o),()=>c.disconnect()},[r?.rootMargin,r?.threshold]),{ref:a,isVisible:t}}function m({children:r,fallback:t,...n}){let{ref:a,isVisible:o}=f(n);return e.createElement("div",{ref:a},o?r:t||e.createElement(l,null))}export{d as a,p as b,f as c,m as d};//# sourceMappingURL=chunk-QBAURT3I.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-QBAURT3I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/lazy.tsx"],"names":["LazyComponent","children","Fallback","ErrorFallback","ErrorBoundary","error","resetError","DefaultLoadingFallback","withLazyLoading","Component","options","WrappedComponent","props","_ref","useLazyLoading","isVisible","setIsVisible","ref","element","observer","entry","LazyInView","fallback"],"mappings":"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","file":"chunk-QBAURT3I.js","sourcesContent":["import * as React from 'react';\nimport { ErrorBoundary } from '../components/core/error-boundary';\n\ninterface LazyComponentProps {\n children: React.ReactNode;\n fallback?: React.ComponentType | undefined;\n errorFallback?: React.ComponentType<{ error: Error; retry: () => void }> | undefined;\n}\n\n/**\n * Lazy loading wrapper component with error boundary and loading fallback\n */\nexport function LazyComponent({ \n children, \n fallback: Fallback,\n errorFallback: ErrorFallback \n}: LazyComponentProps) {\n return (\n <ErrorBoundary\n fallback={ErrorFallback ? ({ error, resetError }) => {\n if (!error) return null;\n return <ErrorFallback error={error} retry={resetError} />;\n } : undefined}\n >\n <React.Suspense fallback={Fallback ? <Fallback /> : <DefaultLoadingFallback />}>\n {children}\n </React.Suspense>\n </ErrorBoundary>\n );\n}\n\n/**\n * Default loading fallback component\n */\nfunction DefaultLoadingFallback() {\n return (\n <div className=\"flex items-center justify-center p-4\">\n <div className=\"h-6 w-6 animate-spin rounded-full border-2 border-primary border-t-transparent\" />\n </div>\n );\n}\n\n/**\n * Higher-order component for lazy loading with error boundary\n */\nexport function withLazyLoading<P extends object>(\n Component: React.ComponentType<P>,\n options?: {\n fallback?: React.ComponentType;\n errorFallback?: React.ComponentType<{ error: Error; retry: () => void }>;\n }\n) {\n const WrappedComponent = React.forwardRef<unknown, P>((props, _ref) => (\n <LazyComponent\n fallback={options?.fallback}\n errorFallback={options?.errorFallback}\n >\n {React.createElement(Component, props as P & { ref?: React.Ref<unknown> })}\n </LazyComponent>\n ));\n \n WrappedComponent.displayName = `withLazyLoading(${Component.displayName || Component.name})`;\n \n return WrappedComponent;\n}\n\n/**\n * Hook for lazy loading with intersection observer\n */\nexport function useLazyLoading(options?: {\n rootMargin?: string;\n threshold?: number;\n}) {\n const [isVisible, setIsVisible] = React.useState(false);\n const ref = React.useRef<HTMLElement>(null);\n\n React.useEffect(() => {\n const element = ref.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry?.isIntersecting) {\n setIsVisible(true);\n observer.disconnect();\n }\n },\n {\n rootMargin: options?.rootMargin || '50px',\n threshold: options?.threshold || 0.1,\n }\n );\n\n observer.observe(element);\n\n return () => observer.disconnect();\n }, [options?.rootMargin, options?.threshold]);\n\n return { ref, isVisible };\n}\n\n/**\n * Lazy loading component that only renders when in viewport\n */\nexport function LazyInView({ \n children, \n fallback,\n ...options \n}: {\n children: React.ReactNode;\n fallback?: React.ReactNode;\n} & Parameters<typeof useLazyLoading>[0]) {\n const { ref, isVisible } = useLazyLoading(options);\n\n return (\n <div ref={ref as React.RefObject<HTMLDivElement>}>\n {isVisible ? children : (fallback || <DefaultLoadingFallback />)}\n </div>\n );\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var c=cva("fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg duration-300 transition-all",{variants:{variant:{default:"border-border shadow-lg hover:shadow-xl",elevated:"border-border shadow-xl hover:shadow-2xl",outlined:"border-2 border-border shadow-md hover:border-primary hover:shadow-lg",filled:"border-border bg-muted shadow-md hover:shadow-lg",destructive:"border-error-200 bg-error-50 shadow-lg hover:shadow-xl"},size:{default:"max-w-lg sm:max-w-xl md:max-w-2xl lg:max-w-4xl",sm:"max-w-sm sm:max-w-md",lg:"max-w-2xl sm:max-w-3xl md:max-w-4xl lg:max-w-5xl",xl:"max-w-4xl sm:max-w-5xl md:max-w-6xl lg:max-w-7xl",full:"max-w-[95vw] sm:max-w-[90vw]"},animation:{default:"animate-in fade-in-0 zoom-in-95 duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",size:"default",animation:"default"}}),f=cva("fixed inset-0 z-40 transition-all duration-300",{variants:{variant:{default:"bg-black/50 backdrop-blur-sm",subtle:"bg-black/30 backdrop-blur-none",strong:"bg-black/70 backdrop-blur-md",colored:"bg-brand-500/20 backdrop-blur-sm"}},defaultVariants:{variant:"default"}}),w=({open:a$1,onOpenChange:t,children:o,backdropVariant:n="default"})=>(e.useEffect(()=>{let i=l=>{l.key==="Escape"&&a$1&&t?.(false);};return a$1&&(document.addEventListener("keydown",i),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",i),document.body.style.overflow="unset";}},[a$1,t]),a$1?e.createElement("div",{className:"fixed inset-0 z-50 flex items-center justify-center p-4"},e.createElement("div",{className:a(f({variant:n})),onClick:()=>t?.(false)}),e.createElement("div",{className:"relative z-50 w-full"},o)):null),g=e.forwardRef(({className:a$1,children:t,onClose:o,variant:n,size:i,animation:l,...d},m)=>e.createElement("div",{ref:m,className:a(c({variant:n,size:i,animation:l}),"p-4 sm:p-6 sm:rounded-lg",a$1),...d},t,e.createElement("button",{className:"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none",onClick:o},e.createElement("span",{className:"sr-only"},"Close"),e.createElement("svg",{className:"h-4 w-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})))));g.displayName="DialogContent";var p=e.forwardRef(({className:a$1,...t},o)=>e.createElement("div",{ref:o,className:a("flex flex-col space-y-1.5 text-center sm:text-left",a$1),...t}));p.displayName="DialogHeader";var u=e.forwardRef(({className:a$1,...t},o)=>e.createElement("h2",{ref:o,className:a("text-lg font-semibold leading-none tracking-tight",a$1),...t}));u.displayName="DialogTitle";var x=e.forwardRef(({className:a$1,...t},o)=>e.createElement("p",{ref:o,className:a("text-sm text-muted-foreground",a$1),...t}));x.displayName="DialogDescription";export{c as a,f as b,w as c,g as d,p as e,u as f,x as g};//# sourceMappingURL=chunk-QF5CRDZI.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-QF5CRDZI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/dialog.tsx"],"names":["dialogVariants","cva","backdropVariants","Dialog","open","onOpenChange","children","backdropVariant","handleEscape","e","cn","DialogContent","className","onClose","variant","size","animation","props","ref","DialogHeader","DialogTitle","DialogDescription"],"mappings":"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","file":"chunk-QF5CRDZI.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst dialogVariants = cva(\n \"fixed left-[50%] top-[50%] z-50 grid w-full translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background shadow-lg duration-300 transition-all\",\n {\n variants: {\n variant: {\n default: \"border-border shadow-lg hover:shadow-xl\",\n elevated: \"border-border shadow-xl hover:shadow-2xl\",\n outlined: \"border-2 border-border shadow-md hover:border-primary hover:shadow-lg\",\n filled: \"border-border bg-muted shadow-md hover:shadow-lg\",\n destructive: \"border-error-200 bg-error-50 shadow-lg hover:shadow-xl\",\n },\n size: {\n default: \"max-w-lg sm:max-w-xl md:max-w-2xl lg:max-w-4xl\",\n sm: \"max-w-sm sm:max-w-md\",\n lg: \"max-w-2xl sm:max-w-3xl md:max-w-4xl lg:max-w-5xl\",\n xl: \"max-w-4xl sm:max-w-5xl md:max-w-6xl lg:max-w-7xl\",\n full: \"max-w-[95vw] sm:max-w-[90vw]\",\n },\n animation: {\n default: \"animate-in fade-in-0 zoom-in-95 duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n animation: \"default\",\n },\n }\n);\n\nconst backdropVariants = cva(\n \"fixed inset-0 z-40 transition-all duration-300\",\n {\n variants: {\n variant: {\n default: \"bg-black/50 backdrop-blur-sm\",\n subtle: \"bg-black/30 backdrop-blur-none\",\n strong: \"bg-black/70 backdrop-blur-md\",\n colored: \"bg-brand-500/20 backdrop-blur-sm\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n);\n\nexport interface DialogProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: React.ReactNode;\n backdropVariant?: VariantProps<typeof backdropVariants>['variant'];\n}\n\nexport interface DialogContentProps \n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dialogVariants> {\n onClose?: () => void;\n}\n\nexport interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport interface DialogTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nexport interface DialogDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst Dialog: React.FC<DialogProps> = ({ open, onOpenChange, children, backdropVariant = \"default\" }) => {\n React.useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && open) {\n onOpenChange?.(false);\n }\n };\n\n if (open) {\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [open, onOpenChange]);\n\n if (!open) return null;\n\n return (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4\">\n <div\n className={cn(backdropVariants({ variant: backdropVariant }))}\n onClick={() => onOpenChange?.(false)}\n />\n <div className=\"relative z-50 w-full\">\n {children}\n </div>\n </div>\n );\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, onClose, variant, size, animation, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n dialogVariants({ variant, size, animation }),\n \"p-4 sm:p-6 sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <button\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none\"\n onClick={onClose}\n >\n <span className=\"sr-only\">Close</span>\n <svg\n className=\"h-4 w-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n </div>\n )\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n )\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(\n ({ className, ...props }, ref) => (\n <h2\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n);\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n);\nDialogDescription.displayName = \"DialogDescription\";\n\nexport { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, dialogVariants, backdropVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AC2JBXHQ.js';import t from'react';import {cva}from'class-variance-authority';var k=cva("grid gap-8 items-center",{variants:{columns:{2:"grid-cols-1 sm:grid-cols-2",3:"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",4:"grid-cols-2 sm:grid-cols-3 lg:grid-cols-4",5:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5",6:"grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6"},spacing:{sm:"gap-4",md:"gap-6",lg:"gap-8",xl:"gap-12"},alignment:{center:"justify-items-center",start:"justify-items-start",end:"justify-items-end"}},defaultVariants:{columns:4,spacing:"md",alignment:"center"}}),L=cva("flex items-center justify-center p-4 rounded-lg transition-all duration-300",{variants:{variant:{default:"bg-muted/30 hover:bg-muted/50",ghost:"hover:bg-muted/30",outline:"border border-border hover:border-border/80",filled:"bg-muted hover:bg-muted/80"},hover:{none:"",scale:"hover:scale-105",lift:"hover:-translate-y-1",glow:"hover:shadow-lg hover:shadow-primary/20"},size:{sm:"h-16",md:"h-20",lg:"h-24",xl:"h-28"}},defaultVariants:{variant:"default",hover:"scale",size:"md"}}),P=cva("max-w-full max-h-full object-contain",{variants:{filter:{none:"",grayscale:"grayscale hover:grayscale-0 transition-all duration-300",opacity:"opacity-60 hover:opacity-100 transition-opacity duration-300",blur:"blur-sm hover:blur-0 transition-all duration-300"}},defaultVariants:{filter:"grayscale"}}),z=({logos:i,title:d="Trusted by",subtitle:l,className:g,itemClassName:c,columns:u=4,spacing:p="md",alignment:f="center",showTitle:h=true,itemVariant:v="default",itemHover:y="scale",itemSize:b="md",imageFilter:x="grayscale",onLogoClick:V,showCount:w=false,maxLogos:r,...N})=>{let s=r?i.slice(0,r):i,m=e=>{e.url&&window.open(e.url,"_blank","noopener,noreferrer"),V?.(e);};return t.createElement("section",{className:a("py-12 md:py-16",g),...N},h&&t.createElement("div",{className:"text-center mb-8 md:mb-12"},t.createElement("h2",{className:"text-2xl md:text-3xl font-bold text-foreground mb-2"},d),l&&t.createElement("p",{className:"text-muted-foreground text-lg"},l),w&&t.createElement("p",{className:"text-sm text-muted-foreground mt-2"},s.length," ",s.length===1?"partner":"partners")),t.createElement("div",{className:a(k({columns:u,spacing:p,alignment:f}))},s.map((e,I)=>t.createElement("div",{key:e.id||I,className:a(L({variant:v,hover:y,size:b}),c),role:e.url?"link":"img",tabIndex:e.url?0:void 0,onClick:()=>m(e),onKeyDown:n=>{e.url&&(n.key==="Enter"||n.key===" ")&&(n.preventDefault(),m(e));},"aria-label":e.url?`Visit ${e.name} website`:`Logo of ${e.name}`,title:e.name},t.createElement("img",{src:e.logo,alt:e.alt||`${e.name} logo`,className:a(P({filter:x})),width:e.width,height:e.height,loading:"lazy"})))),r&&i.length>r&&t.createElement("div",{className:"text-center mt-8"},t.createElement("p",{className:"text-sm text-muted-foreground"},"+",i.length-r," more partners")))},$=z;export{z as a,$ as b};//# sourceMappingURL=chunk-RC2THAIA.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-RC2THAIA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/marketing/logo-wall.tsx"],"names":["logoWallVariants","cva","logoItemVariants","logoImageVariants","LogoWall","logos","title","subtitle","className","itemClassName","columns","spacing","alignment","showTitle","itemVariant","itemHover","itemSize","imageFilter","onLogoClick","showCount","maxLogos","props","displayLogos","handleLogoClick","logo","React","cn","idx","e","logo_wall_default"],"mappings":"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","file":"chunk-RC2THAIA.js","sourcesContent":["import React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\n\nconst logoWallVariants = cva(\n 'grid gap-8 items-center',\n {\n variants: {\n columns: {\n 2: 'grid-cols-1 sm:grid-cols-2',\n 3: 'grid-cols-1 sm:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-2 sm:grid-cols-3 lg:grid-cols-4',\n 5: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5',\n 6: 'grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6',\n },\n spacing: {\n sm: 'gap-4',\n md: 'gap-6',\n lg: 'gap-8',\n xl: 'gap-12',\n },\n alignment: {\n center: 'justify-items-center',\n start: 'justify-items-start',\n end: 'justify-items-end',\n },\n },\n defaultVariants: {\n columns: 4,\n spacing: 'md',\n alignment: 'center',\n },\n }\n);\n\nconst logoItemVariants = cva(\n 'flex items-center justify-center p-4 rounded-lg transition-all duration-300',\n {\n variants: {\n variant: {\n default: 'bg-muted/30 hover:bg-muted/50',\n ghost: 'hover:bg-muted/30',\n outline: 'border border-border hover:border-border/80',\n filled: 'bg-muted hover:bg-muted/80',\n },\n hover: {\n none: '',\n scale: 'hover:scale-105',\n lift: 'hover:-translate-y-1',\n glow: 'hover:shadow-lg hover:shadow-primary/20',\n },\n size: {\n sm: 'h-16',\n md: 'h-20',\n lg: 'h-24',\n xl: 'h-28',\n },\n },\n defaultVariants: {\n variant: 'default',\n hover: 'scale',\n size: 'md',\n },\n }\n);\n\nconst logoImageVariants = cva(\n 'max-w-full max-h-full object-contain',\n {\n variants: {\n filter: {\n none: '',\n grayscale: 'grayscale hover:grayscale-0 transition-all duration-300',\n opacity: 'opacity-60 hover:opacity-100 transition-opacity duration-300',\n blur: 'blur-sm hover:blur-0 transition-all duration-300',\n },\n },\n defaultVariants: {\n filter: 'grayscale',\n },\n }\n);\n\nexport interface LogoItem {\n id: string;\n name: string;\n logo: string;\n url?: string;\n alt?: string;\n width?: number;\n height?: number;\n}\n\nexport interface LogoWallProps extends VariantProps<typeof logoWallVariants> {\n logos: LogoItem[];\n title?: string;\n subtitle?: string;\n className?: string;\n itemClassName?: string;\n showTitle?: boolean;\n itemVariant?: VariantProps<typeof logoItemVariants>['variant'];\n itemHover?: VariantProps<typeof logoItemVariants>['hover'];\n itemSize?: VariantProps<typeof logoItemVariants>['size'];\n imageFilter?: VariantProps<typeof logoImageVariants>['filter'];\n onLogoClick?: (logo: LogoItem) => void;\n showCount?: boolean;\n maxLogos?: number;\n}\n\nexport const LogoWall: React.FC<LogoWallProps> = ({\n logos,\n title = \"Trusted by\",\n subtitle,\n className,\n itemClassName,\n columns = 4,\n spacing = 'md',\n alignment = 'center',\n showTitle = true,\n itemVariant = 'default',\n itemHover = 'scale',\n itemSize = 'md',\n imageFilter = 'grayscale',\n onLogoClick,\n showCount = false,\n maxLogos,\n ...props\n}) => {\n const displayLogos = maxLogos ? logos.slice(0, maxLogos) : logos;\n\n const handleLogoClick = (logo: LogoItem) => {\n if (logo.url) {\n window.open(logo.url, '_blank', 'noopener,noreferrer');\n }\n onLogoClick?.(logo);\n };\n\n return (\n <section className={cn('py-12 md:py-16', className)} {...props}>\n {showTitle && (\n <div className=\"text-center mb-8 md:mb-12\">\n <h2 className=\"text-2xl md:text-3xl font-bold text-foreground mb-2\">\n {title}\n </h2>\n {subtitle && (\n <p className=\"text-muted-foreground text-lg\">\n {subtitle}\n </p>\n )}\n {showCount && (\n <p className=\"text-sm text-muted-foreground mt-2\">\n {displayLogos.length} {displayLogos.length === 1 ? 'partner' : 'partners'}\n </p>\n )}\n </div>\n )}\n\n <div \n className={cn(\n logoWallVariants({ \n columns, \n spacing, \n alignment \n })\n )}\n >\n {displayLogos.map((logo, idx) => (\n <div\n key={logo.id || idx}\n className={cn(\n logoItemVariants({ \n variant: itemVariant, \n hover: itemHover, \n size: itemSize \n }),\n itemClassName\n )}\n role={logo.url ? \"link\" : \"img\"}\n tabIndex={logo.url ? 0 : undefined}\n onClick={() => handleLogoClick(logo)}\n onKeyDown={(e) => {\n if (logo.url && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleLogoClick(logo);\n }\n }}\n aria-label={logo.url ? `Visit ${logo.name} website` : `Logo of ${logo.name}`}\n title={logo.name}\n >\n <img\n src={logo.logo}\n alt={logo.alt || `${logo.name} logo`}\n className={cn(logoImageVariants({ filter: imageFilter }))}\n width={logo.width}\n height={logo.height}\n loading=\"lazy\"\n />\n </div>\n ))}\n </div>\n\n {maxLogos && logos.length > maxLogos && (\n <div className=\"text-center mt-8\">\n <p className=\"text-sm text-muted-foreground\">\n +{logos.length - maxLogos} more partners\n </p>\n </div>\n )}\n </section>\n );\n};\n\nexport default LogoWall;\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("peer h-4 w-4 shrink-0 rounded-sm 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"}}),x=e__namespace.forwardRef(({className:o,error:t,helperText:s,label:d,required:c,id:n,variant:l,size:b,...u},p)=>{let m=e__namespace.useId(),r=n||m,i=s?`${r}-helper`:void 0,f=t?`${r}-error`:void 0;return e__namespace.createElement("div",{className:"space-y-2"},e__namespace.createElement("div",{className:"flex items-center space-x-3"},e__namespace.createElement("input",{type:"checkbox",className:chunkITRGJNWL_cjs.a(v({variant:t?"error":l||"default",size:b,className:o})),ref:p,id:r,"aria-describedby":chunkITRGJNWL_cjs.a(i,f)||void 0,"aria-invalid":t,required:c,...u}),d&&e__namespace.createElement("label",{htmlFor:r,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d,c&&e__namespace.createElement("span",{className:"text-error-500 ml-1"},"*"))),s&&e__namespace.createElement("p",{id:i,className:chunkITRGJNWL_cjs.a("text-sm text-muted-foreground",t&&"text-destructive")},s))});x.displayName="Checkbox";exports.a=v;exports.b=x;//# sourceMappingURL=chunk-RPRISB7O.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-RPRISB7O.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/checkbox.tsx"],"names":["checkboxVariants","cva","Checkbox","e","className","error","helperText","label","required","id","variant","size","props","ref","generatedId","checkboxId","helperTextId","errorId","cn"],"mappings":"ufAIA,IAAMA,CAAAA,CAAmBC,0BAAAA,CACvB,kWAAA,CACA,CACE,QAAA,CAAU,CACR,QAAS,CACP,OAAA,CACE,wGACF,KAAA,CACE,+HAAA,CACF,OAAA,CACE,+HACJ,EACA,IAAA,CAAM,CACJ,OAAA,CAAS,SAAA,CACT,GAAI,SAAA,CACJ,EAAA,CAAI,SACN,CACF,EACA,eAAA,CAAiB,CACf,QAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CA0BMC,CAAAA,CAAiBC,wBACrB,CACE,CACE,SAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,EACA,QAAA,CAAAC,CAAAA,CACA,GAAAC,CAAAA,CACA,OAAA,CAAAC,EACA,IAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,IAAMC,CAAAA,CAAoBX,oBAAM,CAC1BY,CAAAA,CAAaN,CAAAA,EAAMK,CAAAA,CACnBE,EAAeV,CAAAA,CAAa,CAAA,EAAGS,CAAU,CAAA,OAAA,CAAA,CAAY,MAAA,CACrDE,EAAUZ,CAAAA,CAAQ,CAAA,EAAGU,CAAU,CAAA,MAAA,CAAA,CAAW,OAKhD,OACEZ,YAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,aACbA,YAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAU,6BAAA,CAAA,CACbA,2BAAC,OAAA,CAAA,CACC,IAAA,CAAK,WACL,SAAA,CAAWe,mBAAAA,CACTlB,EAAiB,CAAE,OAAA,CARLK,CAAAA,CAAQ,OAAA,CAAUK,GAAW,SAAA,CAQE,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAP,CAAU,CAAC,CAChE,CAAA,CACA,GAAA,CAAKS,EACL,EAAA,CAAIE,CAAAA,CACJ,mBAAkBG,mBAAAA,CAAGF,CAAAA,CAAcC,CAAO,CAAA,EAAK,MAAA,CAC/C,cAAA,CAAcZ,CAAAA,CACd,SAAUG,CAAAA,CACT,GAAGI,CAAAA,CACN,CAAA,CACCL,GACCJ,YAAA,CAAA,aAAA,CAAC,OAAA,CAAA,CACC,OAAA,CAASY,CAAAA,CACT,UAAU,4FAAA,CAAA,CAETR,CAAAA,CACAC,GAAYL,YAAA,CAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAU,qBAAA,CAAA,CAAsB,GAAC,CACtD,CAEJ,EACCG,CAAAA,EACCH,YAAA,CAAA,aAAA,CAAC,KACC,EAAA,CAAIa,CAAAA,CACJ,UAAWE,mBAAAA,CACT,+BAAA,CACAb,CAAAA,EAAS,kBACX,GAECC,CACH,CAEJ,CAEJ,CACF,EACAJ,EAAS,WAAA,CAAc,UAAA","file":"chunk-RPRISB7O.cjs","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst checkboxVariants = cva(\n \"peer h-4 w-4 shrink-0 rounded-sm 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 CheckboxProps\n extends\n Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\">,\n VariantProps<typeof checkboxVariants> {\n /**\n * Whether the checkbox is in an error state\n * @default false\n */\n error?: boolean;\n /**\n * Helper text to display below the checkbox\n */\n helperText?: string;\n /**\n * Label text for the checkbox\n */\n label?: string;\n /**\n * Whether the checkbox is required\n * @default false\n */\n required?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n error,\n helperText,\n label,\n required,\n id,\n variant,\n size,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const checkboxId = id || generatedId;\n const helperTextId = helperText ? `${checkboxId}-helper` : undefined;\n const errorId = error ? `${checkboxId}-error` : undefined;\n\n // Determine variant based on error state\n const checkboxVariant = error ? \"error\" : variant || \"default\";\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex items-center space-x-3\">\n <input\n type=\"checkbox\"\n className={cn(\n checkboxVariants({ variant: checkboxVariant, size, className }),\n )}\n ref={ref}\n id={checkboxId}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n required={required}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\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 {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);\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var 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 q=classVarianceAuthority.cva("w-full border-collapse transition-all duration-200",{variants:{variant:{default:"border border-border shadow-sm hover:shadow-md",striped:"border border-border shadow-sm hover:shadow-md",bordered:"border-2 border-border shadow-md hover:shadow-lg",hover:"border border-border shadow-sm hover:shadow-md",elevated:"border border-border shadow-lg hover:shadow-xl",interactive:"border border-border shadow-sm hover:shadow-md hover:border-primary"},size:{sm:"text-xs sm:text-sm",md:"text-sm sm:text-base",lg:"text-base sm:text-lg"}},defaultVariants:{variant:"default",size:"md"}}),O=classVarianceAuthority.cva("font-medium text-left transition-all duration-200",{variants:{variant:{default:"bg-muted text-foreground hover:bg-muted/80",striped:"bg-muted text-foreground hover:bg-muted/80",bordered:"bg-muted text-foreground hover:bg-muted/80",hover:"bg-muted text-foreground hover:bg-muted/80",elevated:"bg-muted text-foreground hover:bg-muted/80",interactive:"bg-muted text-foreground hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}}),w=classVarianceAuthority.cva("border-border transition-all duration-200",{variants:{variant:{default:"border-b border-border hover:bg-muted/50",striped:"border-b border-border even:bg-muted/50 hover:bg-muted/80",bordered:"border border-border hover:bg-muted/50",hover:"border-b border-border hover:bg-muted/50",elevated:"border-b border-border hover:bg-muted/80",interactive:"border-b border-border hover:bg-primary/10 hover:text-primary"},size:{sm:"px-2 py-1 sm:px-3 sm:py-2",md:"px-3 py-2 sm:px-4 sm:py-3",lg:"px-4 py-3 sm:px-6 sm:py-4"}},defaultVariants:{variant:"default",size:"md"}});function U({data:s,columns:n,loading:i=false,emptyText:m="No data",className:c,variant:d,size:p,rowKey:g="id",onRowClick:P,onSort:K,sortColumn:T,sortDirection:E,pagination:t,selection:l,caption:z,...L},B){let[I,D]=e.useState(null),H=T!==void 0,u=H&&T?{column:T,direction:E||"asc"}:I,j=r=>{if(!r.sortable)return;let a=u?.column===r.key&&u?.direction==="asc"?"desc":"asc";H||D({column:r.key,direction:a}),K?.(r,a);},h=(r,a)=>typeof g=="function"?g(r):r[g]||a,N=(r,a)=>{if(!l)return false;let o=h(r,a);return l.selectedRowKeys.includes(o)},A=(r,a,o)=>{if(!l)return;let x=h(r,a),v=o?[...l.selectedRowKeys,x]:l.selectedRowKeys.filter(S=>S!==x),C=s.filter((S,J)=>v.includes(h(S,J)));l.onChange(v,C);},G=r=>{if(!l)return;let a=s.map((v,C)=>h(v,C)),o=r?a:[],x=r?s:[];l.onChange(o,x);},$=l&&s.length>0&&l.selectedRowKeys.length===s.length,F=l&&l.selectedRowKeys.length>0&&l.selectedRowKeys.length<s.length;return e__default.default.createElement("div",{className:"w-full overflow-x-auto"},e__default.default.createElement("div",{className:"min-w-full"},e__default.default.createElement("table",{ref:B,className:chunkITRGJNWL_cjs.a(q({variant:d,size:p}),c),...L},z&&e__default.default.createElement("caption",{className:"sr-only"},z),e__default.default.createElement(V,null,e__default.default.createElement(y,null,l&&e__default.default.createElement("th",{className:chunkITRGJNWL_cjs.a(w({variant:d,size:p})),scope:"col",role:"columnheader"},e__default.default.createElement("input",{type:"checkbox",checked:$,ref:r=>{r&&(r.indeterminate=F||false);},onChange:r=>G(r.target.checked),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500","aria-label":"Select all rows"})),n.map(r=>e__default.default.createElement("th",{key:r.key,className:chunkITRGJNWL_cjs.a(w({variant:d,size:p}),r.className,r.align==="center"&&"text-center",r.align==="right"&&"text-right"),scope:"col",role:"columnheader",...r.width&&{style:{width:r.width}}},e__default.default.createElement("div",{className:"flex items-center gap-2"},e__default.default.createElement("span",null,r.title),r.sortable&&e__default.default.createElement("button",{type:"button",onClick:()=>j(r),className:"flex flex-col text-gray-400 hover:text-gray-600","aria-label":`Sort by ${r.title}`},e__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a("w-3 h-3",u?.column===r.key&&u?.direction==="asc"?"text-blue-600":"text-gray-400"),fill:"currentColor",viewBox:"0 0 20 20"},e__default.default.createElement("path",{d:"M5 8l5-5 5 5H5z"})),e__default.default.createElement("svg",{className:chunkITRGJNWL_cjs.a("w-3 h-3 -mt-1",u?.column===r.key&&u?.direction==="desc"?"text-blue-600":"text-gray-400"),fill:"currentColor",viewBox:"0 0 20 20"},e__default.default.createElement("path",{d:"M5 12l5 5 5-5H5z"})))))))),e__default.default.createElement(M,null,i?e__default.default.createElement(y,null,e__default.default.createElement(f,{colSpan:n.length+(l?1:0),variant:d,size:p,className:"text-center py-8"},e__default.default.createElement("div",{className:"flex items-center justify-center gap-2"},e__default.default.createElement("div",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600"}),e__default.default.createElement("span",null,"Loading...")))):s.length===0?e__default.default.createElement(y,null,e__default.default.createElement(f,{colSpan:n.length+(l?1:0),variant:d,size:p,className:"text-center py-8 text-gray-500"},m)):s.map((r,a)=>e__default.default.createElement(y,{key:h(r,a),onClick:()=>P?.(r,a),selected:N(r,a),className:chunkITRGJNWL_cjs.a(P&&"cursor-pointer hover:bg-gray-50",N(r,a)&&"bg-blue-50")},l&&e__default.default.createElement(f,{variant:d,size:p},e__default.default.createElement("input",{type:"checkbox",checked:N(r,a),onChange:o=>A(r,a,o.target.checked),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500","aria-label":`Select row ${a+1}`,...l.getCheckboxProps?.(r)})),n.map(o=>e__default.default.createElement(f,{key:o.key,variant:d,size:p,className:chunkITRGJNWL_cjs.a(o.className,o.align==="center"&&"text-center",o.align==="right"&&"text-right")},o.render?o.render(o.dataIndex?r[o.dataIndex]:r,r,a):o.dataIndex?r[o.dataIndex]:r[o.key]))))))),t&&e__default.default.createElement("div",{className:"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0"},e__default.default.createElement("div",{className:"flex items-center gap-2"},e__default.default.createElement("span",{className:"text-sm text-muted-foreground"},"Showing ",(t.current-1)*t.pageSize+1," to"," ",Math.min(t.current*t.pageSize,t.total)," ","of ",t.total," results")),e__default.default.createElement("div",{className:"flex items-center gap-2"},t.showSizeChanger&&e__default.default.createElement("select",{value:t.pageSize,onChange:r=>t.onChange(1,Number(r.target.value)),className:"rounded border-gray-300 text-sm","aria-label":"Select page size"},e__default.default.createElement("option",{value:10},"10 / page"),e__default.default.createElement("option",{value:20},"20 / page"),e__default.default.createElement("option",{value:50},"50 / page"),e__default.default.createElement("option",{value:100},"100 / page")),e__default.default.createElement("div",{className:"flex items-center gap-1"},e__default.default.createElement("button",{type:"button",onClick:()=>t.onChange(t.current-1,t.pageSize),disabled:t.current<=1,className:"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to previous page"},"Previous"),e__default.default.createElement("span",{className:"px-3 py-1 text-sm"},"Page ",t.current," of"," ",Math.ceil(t.total/t.pageSize)),e__default.default.createElement("button",{type:"button",onClick:()=>t.onChange(t.current+1,t.pageSize),disabled:t.current>=Math.ceil(t.total/t.pageSize),className:"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed","aria-label":"Go to next page"},"Next")))))}var R=e__default.default.forwardRef(U);R.displayName="Table";var _=R,V=e__default.default.forwardRef(({className:s,variant:n,size:i,children:m,...c},d)=>e__default.default.createElement("thead",{ref:d,className:chunkITRGJNWL_cjs.a(O({variant:n,size:i}),s),...c},m));V.displayName="TableHeader";var M=e__default.default.forwardRef(({className:s,children:n,...i},m)=>e__default.default.createElement("tbody",{ref:m,className:chunkITRGJNWL_cjs.a(s),...i},n));M.displayName="TableBody";var y=e__default.default.forwardRef(({className:s,children:n,onClick:i,selected:m,...c},d)=>e__default.default.createElement("tr",{ref:d,className:chunkITRGJNWL_cjs.a("border-b border-gray-200",m&&"bg-blue-50",i&&"cursor-pointer hover:bg-gray-50",s),onClick:i,...c},n));y.displayName="TableRow";var f=e__default.default.forwardRef(({className:s,children:n,variant:i,size:m,colSpan:c,rowSpan:d,...p},g)=>e__default.default.createElement("td",{ref:g,className:chunkITRGJNWL_cjs.a(w({variant:i,size:m}),s),colSpan:c,rowSpan:d,...p},n));f.displayName="TableCell";var W=e__default.default.forwardRef(({className:s,children:n,variant:i,size:m,colSpan:c,rowSpan:d,...p},g)=>e__default.default.createElement("th",{ref:g,className:chunkITRGJNWL_cjs.a(w({variant:i,size:m}),"font-medium",s),colSpan:c,rowSpan:d,...p},n));W.displayName="TableHead";exports.a=q;exports.b=O;exports.c=w;exports.d=_;exports.e=V;exports.f=M;exports.g=y;exports.h=f;exports.i=W;//# sourceMappingURL=chunk-SD4IIQ2I.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-SD4IIQ2I.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/table.tsx"],"names":["tableVariants","cva","tableHeaderVariants","tableCellVariants","TableComponent","data","columns","loading","emptyText","className","variant","size","rowKey","onRowClick","onSort","controlledSortColumn","controlledSortDirection","pagination","selection","caption","props","ref","internalSortState","setInternalSortState","useState","isControlled","sortState","handleSort","column","newDirection","getRowKey","record","index","isRowSelected","key","handleRowSelection","checked","newSelectedKeys","k","newSelectedRows","_","i","handleSelectAll","allKeys","isAllSelected","isIndeterminate","React","cn","TableHeader","TableRow","input","e","TableBody","TableCell","TableForwardRef","Table","children","onClick","selected","colSpan","rowSpan","TableHead"],"mappings":"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","file":"chunk-SD4IIQ2I.cjs","sourcesContent":["import React, { useState } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\n// Table variants\nconst tableVariants = cva(\n \"w-full border-collapse transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"border border-border shadow-sm hover:shadow-md\",\n striped: \"border border-border shadow-sm hover:shadow-md\",\n bordered: \"border-2 border-border shadow-md hover:shadow-lg\",\n hover: \"border border-border shadow-sm hover:shadow-md\",\n elevated: \"border border-border shadow-lg hover:shadow-xl\",\n interactive:\n \"border border-border shadow-sm hover:shadow-md hover:border-primary\",\n },\n size: {\n sm: \"text-xs sm:text-sm\",\n md: \"text-sm sm:text-base\",\n lg: \"text-base sm:text-lg\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableHeaderVariants = cva(\n \"font-medium text-left transition-all duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-muted text-foreground hover:bg-muted/80\",\n striped: \"bg-muted text-foreground hover:bg-muted/80\",\n bordered: \"bg-muted text-foreground hover:bg-muted/80\",\n hover: \"bg-muted text-foreground hover:bg-muted/80\",\n elevated: \"bg-muted text-foreground hover:bg-muted/80\",\n interactive:\n \"bg-muted text-foreground hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n },\n);\n\nconst tableCellVariants = cva(\"border-border transition-all duration-200\", {\n variants: {\n variant: {\n default: \"border-b border-border hover:bg-muted/50\",\n striped: \"border-b border-border even:bg-muted/50 hover:bg-muted/80\",\n bordered: \"border border-border hover:bg-muted/50\",\n hover: \"border-b border-border hover:bg-muted/50\",\n elevated: \"border-b border-border hover:bg-muted/80\",\n interactive:\n \"border-b border-border hover:bg-primary/10 hover:text-primary\",\n },\n size: {\n sm: \"px-2 py-1 sm:px-3 sm:py-2\",\n md: \"px-3 py-2 sm:px-4 sm:py-3\",\n lg: \"px-4 py-3 sm:px-6 sm:py-4\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\n// Types\nexport interface TableColumn<T = Record<string, unknown>> {\n key: string;\n title: string;\n dataIndex?: keyof T;\n render?: (value: unknown, record: T, index: number) => React.ReactNode;\n sortable?: boolean;\n width?: string | number;\n align?: \"left\" | \"center\" | \"right\";\n className?: string;\n}\n\nexport interface TableProps<T = Record<string, unknown>> extends VariantProps<\n typeof tableVariants\n> {\n data: T[];\n columns: TableColumn<T>[];\n loading?: boolean;\n emptyText?: string;\n caption?: string;\n className?: string;\n rowKey?: keyof T | ((record: T) => string | number);\n onRowClick?: (record: T, index: number) => void;\n onSort?: (column: TableColumn<T>, direction: \"asc\" | \"desc\") => void;\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n pagination?: {\n current: number;\n pageSize: number;\n total: number;\n onChange: (page: number, pageSize: number) => void;\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n };\n selection?: {\n selectedRowKeys: (string | number)[];\n onChange: (selectedRowKeys: (string | number)[], selectedRows: T[]) => void;\n getCheckboxProps?: (record: T) => { disabled?: boolean };\n };\n}\n\nexport interface TableHeaderProps extends VariantProps<\n typeof tableHeaderVariants\n> {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableBodyProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport interface TableRowProps {\n className?: string;\n children: React.ReactNode;\n onClick?: () => void;\n selected?: boolean;\n}\n\nexport interface TableCellProps extends VariantProps<typeof tableCellVariants> {\n className?: string;\n children: React.ReactNode;\n colSpan?: number;\n rowSpan?: number;\n}\n\n// Table Components\nfunction TableComponent<\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n {\n data,\n columns,\n loading = false,\n emptyText = \"No data\",\n className,\n variant,\n size,\n rowKey = \"id\",\n onRowClick,\n onSort,\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n pagination,\n selection,\n caption,\n ...props\n }: TableProps<T>,\n ref: React.Ref<HTMLTableElement>,\n) {\n // Use controlled props if provided, otherwise use internal state\n const [internalSortState, setInternalSortState] = useState<{\n column: string;\n direction: \"asc\" | \"desc\";\n } | null>(null);\n\n // Determine current sort state (controlled takes precedence)\n const isControlled = controlledSortColumn !== undefined;\n const sortState =\n isControlled && controlledSortColumn\n ? {\n column: controlledSortColumn,\n direction: controlledSortDirection || \"asc\",\n }\n : internalSortState;\n\n // Sync internal state with controlled props when they change\n // Sync internal state with controlled props when they change\n // Note: unneeded re-render caused by resetting state. We derive sortState above so stale internal state is ignored.\n /* \n useEffect(() => {\n if (isControlled && controlledSortColumn) {\n setInternalSortState(null);\n }\n }, [isControlled, controlledSortColumn]); \n */\n\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable) return;\n\n const newDirection =\n sortState?.column === column.key && sortState?.direction === \"asc\"\n ? \"desc\"\n : \"asc\";\n\n // Only update internal state if not controlled\n if (!isControlled) {\n setInternalSortState({ column: column.key, direction: newDirection });\n }\n\n // Always call onSort callback for controlled usage\n onSort?.(column, newDirection);\n };\n\n const getRowKey = (record: T, index: number): string | number => {\n if (typeof rowKey === \"function\") {\n return rowKey(record);\n }\n return (record[rowKey] as string | number) || index;\n };\n\n const isRowSelected = (record: T, index: number): boolean => {\n if (!selection) return false;\n const key = getRowKey(record, index);\n return selection.selectedRowKeys.includes(key);\n };\n\n const handleRowSelection = (\n record: T,\n index: number,\n checked: boolean,\n ): void => {\n if (!selection) return;\n\n const key = getRowKey(record, index);\n const newSelectedKeys = checked\n ? [...selection.selectedRowKeys, key]\n : selection.selectedRowKeys.filter((k) => k !== key);\n\n const newSelectedRows = data.filter((_, i) =>\n newSelectedKeys.includes(getRowKey(_, i)),\n );\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const handleSelectAll = (checked: boolean) => {\n if (!selection) return;\n\n const allKeys = data.map((record, index) => getRowKey(record, index));\n const newSelectedKeys = checked ? allKeys : [];\n const newSelectedRows = checked ? data : [];\n\n selection.onChange(newSelectedKeys, newSelectedRows);\n };\n\n const isAllSelected =\n selection &&\n data.length > 0 &&\n selection.selectedRowKeys.length === data.length;\n\n const isIndeterminate =\n selection &&\n selection.selectedRowKeys.length > 0 &&\n selection.selectedRowKeys.length < data.length;\n\n return (\n <div className=\"w-full overflow-x-auto\">\n <div className=\"min-w-full\">\n <table\n ref={ref}\n className={cn(tableVariants({ variant, size }), className)}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n <TableHeader>\n <TableRow>\n {selection && (\n <th\n className={cn(tableCellVariants({ variant, size }))}\n scope=\"col\"\n role=\"columnheader\"\n >\n <input\n type=\"checkbox\"\n checked={isAllSelected}\n ref={(input) => {\n if (input) input.indeterminate = isIndeterminate || false;\n }}\n onChange={(e) => handleSelectAll(e.target.checked)}\n className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n tableCellVariants({ variant, size }),\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n scope=\"col\"\n role=\"columnheader\"\n {...(column.width && { style: { width: column.width } })}\n >\n <div className=\"flex items-center gap-2\">\n <span>{column.title}</span>\n {column.sortable && (\n <button\n type=\"button\"\n onClick={() => handleSort(column)}\n className=\"flex flex-col text-gray-400 hover:text-gray-600\"\n aria-label={`Sort by ${column.title}`}\n >\n <svg\n className={cn(\n \"w-3 h-3\",\n sortState?.column === column.key &&\n sortState?.direction === \"asc\"\n ? \"text-blue-600\"\n : \"text-gray-400\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 8l5-5 5 5H5z\" />\n </svg>\n <svg\n className={cn(\n \"w-3 h-3 -mt-1\",\n sortState?.column === column.key &&\n sortState?.direction === \"desc\"\n ? \"text-blue-600\"\n : \"text-gray-400\",\n )}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path d=\"M5 12l5 5 5-5H5z\" />\n </svg>\n </button>\n )}\n </div>\n </th>\n ))}\n </TableRow>\n </TableHeader>\n <TableBody>\n {loading ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\"></div>\n <span>Loading...</span>\n </div>\n </TableCell>\n </TableRow>\n ) : data.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={columns.length + (selection ? 1 : 0)}\n variant={variant}\n size={size}\n className=\"text-center py-8 text-gray-500\"\n >\n {emptyText}\n </TableCell>\n </TableRow>\n ) : (\n data.map((record, index) => (\n <TableRow\n key={getRowKey(record, index)}\n onClick={() => onRowClick?.(record, index)}\n selected={isRowSelected(record, index)}\n className={cn(\n onRowClick && \"cursor-pointer hover:bg-gray-50\",\n isRowSelected(record, index) && \"bg-blue-50\",\n )}\n >\n {selection && (\n <TableCell variant={variant} size={size}>\n <input\n type=\"checkbox\"\n checked={isRowSelected(record, index)}\n onChange={(e) =>\n handleRowSelection(record, index, e.target.checked)\n }\n className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n aria-label={`Select row ${index + 1}`}\n {...selection.getCheckboxProps?.(record)}\n />\n </TableCell>\n )}\n {columns.map((column) => (\n <TableCell\n key={column.key}\n variant={variant}\n size={size}\n className={cn(\n column.className,\n column.align === \"center\" && \"text-center\",\n column.align === \"right\" && \"text-right\",\n )}\n >\n {column.render\n ? column.render(\n column.dataIndex\n ? record[column.dataIndex]\n : record,\n record,\n index,\n )\n : column.dataIndex\n ? (record[column.dataIndex] as React.ReactNode)\n : ((record as Record<string, unknown>)[\n column.key\n ] as React.ReactNode)}\n </TableCell>\n ))}\n </TableRow>\n ))\n )}\n </TableBody>\n </table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-col sm:flex-row items-center justify-between mt-4 px-2 sm:px-4 py-3 bg-card border-t border-border gap-2 sm:gap-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-muted-foreground\">\n Showing {(pagination.current - 1) * pagination.pageSize + 1} to{\" \"}\n {Math.min(\n pagination.current * pagination.pageSize,\n pagination.total,\n )}{\" \"}\n of {pagination.total} results\n </span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {pagination.showSizeChanger && (\n <select\n value={pagination.pageSize}\n onChange={(e) => pagination.onChange(1, Number(e.target.value))}\n className=\"rounded border-gray-300 text-sm\"\n aria-label=\"Select page size\"\n >\n <option value={10}>10 / page</option>\n <option value={20}>20 / page</option>\n <option value={50}>50 / page</option>\n <option value={100}>100 / page</option>\n </select>\n )}\n\n <div className=\"flex items-center gap-1\">\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current - 1,\n pagination.pageSize,\n )\n }\n disabled={pagination.current <= 1}\n className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to previous page\"\n >\n Previous\n </button>\n\n <span className=\"px-3 py-1 text-sm\">\n Page {pagination.current} of{\" \"}\n {Math.ceil(pagination.total / pagination.pageSize)}\n </span>\n\n <button\n type=\"button\"\n onClick={() =>\n pagination.onChange(\n pagination.current + 1,\n pagination.pageSize,\n )\n }\n disabled={\n pagination.current >=\n Math.ceil(pagination.total / pagination.pageSize)\n }\n className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed\"\n aria-label=\"Go to next page\"\n >\n Next\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nconst TableForwardRef = React.forwardRef(TableComponent) as <\n T extends Record<string, unknown> = Record<string, unknown>,\n>(\n props: TableProps<T> & { ref?: React.Ref<HTMLTableElement> },\n) => React.ReactElement;\n\n(\n TableForwardRef as React.ComponentType<TableProps<unknown>> & {\n displayName?: string;\n }\n).displayName = \"Table\";\n\nexport const Table = TableForwardRef;\n\nexport const TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n TableHeaderProps\n>(({ className, variant, size, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={cn(tableHeaderVariants({ variant, size }), className)}\n {...props}\n >\n {children}\n </thead>\n));\n\nTableHeader.displayName = \"TableHeader\";\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, children, ...props }, ref) => (\n <tbody ref={ref} className={cn(className)} {...props}>\n {children}\n </tbody>\n));\n\nTableBody.displayName = \"TableBody\";\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, onClick, selected, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b border-gray-200\",\n selected && \"bg-blue-50\",\n onClick && \"cursor-pointer hover:bg-gray-50\",\n className,\n )}\n onClick={onClick}\n {...props}\n >\n {children}\n </tr>\n ),\n);\n\nTableRow.displayName = \"TableRow\";\n\nexport const TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(tableCellVariants({ variant, size }), className)}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </td>\n ),\n);\n\nTableCell.displayName = \"TableCell\";\n\nexport const TableHead = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, variant, size, colSpan, rowSpan, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n tableCellVariants({ variant, size }),\n \"font-medium\",\n className,\n )}\n colSpan={colSpan}\n rowSpan={rowSpan}\n {...props}\n >\n {children}\n </th>\n ),\n);\n\nTableHead.displayName = \"TableHead\";\n\n// Export variants for external use\nexport { tableVariants, tableHeaderVariants, tableCellVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var H=cva("flex min-h-[80px] w-full rounded-md border border-border bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200",{variants:{variant:{default:"border-border focus-visible:ring-ring focus-visible:ring-offset-background",error:"border-destructive focus-visible:ring-destructive focus-visible:ring-offset-background",success:"border-success focus-visible:ring-success focus-visible:ring-offset-background"},size:{sm:"min-h-[60px] px-2 py-1 text-xs",default:"min-h-[80px] px-3 py-2 text-sm",lg:"min-h-[120px] px-4 py-3 text-base"}},defaultVariants:{variant:"default",size:"default"}}),E=e.forwardRef(({className:x,label:d,helperText:o,error:n,required:f,variant:m,size:p,autoResize:l=true,id:g,...c},t)=>{let v=e.useId(),s=g||v,b=o?`${s}-helper`:void 0,T=n?`${s}-error`:void 0,R=n?"error":m||"default",r=e.useRef(null),h=e.useMemo(()=>a=>{r.current=a,typeof t=="function"?t(a):t&&(t.current=a);},[t]),u=e.useCallback(()=>{r.current&&l&&(r.current.style.height="auto",r.current.style.height=`${r.current.scrollHeight}px`);},[l]);e.useEffect(()=>{u();},[u]);let y=a=>{u(),c.onInput&&c.onInput(a);};return e.createElement("div",{className:"space-y-2"},d&&e.createElement("label",{htmlFor:s,className:"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"},d,f&&e.createElement("span",{className:"text-error-500 ml-1"},"*")),e.createElement("textarea",{ref:h,id:s,className:a(H({variant:R,size:p}),l&&"resize-none",x),"aria-describedby":a(b,T)||void 0,"aria-invalid":n,"aria-required":f,onInput:y,...c}),o&&e.createElement("p",{id:b,className:a("text-sm text-muted-foreground",n&&"text-destructive")},o))});E.displayName="Textarea";export{H as a,E as b};//# sourceMappingURL=chunk-SLGMKBST.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-SLGMKBST.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/textarea.tsx"],"names":["textareaVariants","cva","Textarea","className","label","helperText","error","required","variant","size","autoResize","id","props","ref","generatedId","textareaId","helperTextId","errorId","textareaVariant","textareaRef","combinedRef","node","adjustHeight","handleInput","event","cn"],"mappings":"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","file":"chunk-SLGMKBST.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst textareaVariants = cva(\n \"flex min-h-[80px] w-full rounded-md border border-border bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 transition-all duration-200\",\n {\n variants: {\n variant: {\n default:\n \"border-border focus-visible:ring-ring focus-visible:ring-offset-background\",\n error:\n \"border-destructive focus-visible:ring-destructive focus-visible:ring-offset-background\",\n success:\n \"border-success focus-visible:ring-success focus-visible:ring-offset-background\",\n },\n size: {\n sm: \"min-h-[60px] px-2 py-1 text-xs\",\n default: \"min-h-[80px] px-3 py-2 text-sm\",\n lg: \"min-h-[120px] px-4 py-3 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface TextareaProps\n extends\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n VariantProps<typeof textareaVariants> {\n label?: string;\n helperText?: string;\n error?: boolean;\n required?: boolean;\n autoResize?: boolean;\n}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n className,\n label,\n helperText,\n error,\n required,\n variant,\n size,\n autoResize = true,\n id,\n ...props\n },\n ref,\n ) => {\n const generatedId = React.useId();\n const textareaId = id || generatedId;\n const helperTextId = helperText ? `${textareaId}-helper` : undefined;\n const errorId = error ? `${textareaId}-error` : undefined;\n\n const textareaVariant = error ? \"error\" : variant || \"default\";\n\n // Auto-resize functionality\n const textareaRef = React.useRef<HTMLTextAreaElement>(null);\n const combinedRef = React.useMemo(() => {\n return (node: HTMLTextAreaElement | null) => {\n (\n textareaRef as React.MutableRefObject<HTMLTextAreaElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLTextAreaElement | null>).current =\n node;\n }\n };\n }, [ref]);\n\n const adjustHeight = React.useCallback(() => {\n if (textareaRef.current && autoResize) {\n textareaRef.current.style.height = \"auto\";\n textareaRef.current.style.height = `${textareaRef.current.scrollHeight}px`;\n }\n }, [autoResize]);\n\n React.useEffect(() => {\n adjustHeight();\n }, [adjustHeight]);\n\n const handleInput = (event: React.FormEvent<HTMLTextAreaElement>) => {\n adjustHeight();\n if (props.onInput) {\n props.onInput(event);\n }\n };\n\n return (\n <div className=\"space-y-2\">\n {label && (\n <label\n htmlFor={textareaId}\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 <textarea\n ref={combinedRef}\n id={textareaId}\n className={cn(\n textareaVariants({ variant: textareaVariant, size }),\n autoResize && \"resize-none\",\n className,\n )}\n aria-describedby={cn(helperTextId, errorId) || undefined}\n aria-invalid={error}\n aria-required={required}\n onInput={handleInput}\n {...props}\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 );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea, textareaVariants };\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {b}from'./chunk-EIXD3Y4R.js';import a,{Suspense}from'react';var p=a.lazy(()=>import('./components/core/charts.js').then(t=>({default:t.Chart}))),s=({fallback:t=a.createElement(b,{className:"h-64 w-full"}),...r})=>a.createElement(Suspense,{fallback:t},a.createElement(p,{...r}));s.displayName="LazyChart";export{s as a};//# sourceMappingURL=chunk-TGPWW7FC.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-TGPWW7FC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/charts-lazy.tsx"],"names":["ChartLazy","React","module","LazyChart","fallback","Skeleton","props","Suspense"],"mappings":"uEAwBMA,CAAAA,CAAYC,CAAAA,CAAM,IAAA,CAAK,IAC3B,OAAO,6BAAU,EAAE,IAAA,CAAMC,CAAAA,GAAY,CACnC,OAAA,CAASA,CAAAA,CAAO,KAClB,EAAE,CACJ,CAAA,CAMaC,CAAAA,CAAsC,CAAC,CAClD,QAAA,CAAAC,EAAWH,CAAAA,CAAA,aAAA,CAACI,CAAAA,CAAA,CAAS,SAAA,CAAU,aAAA,CAAc,EAC7C,GAAGC,CACL,CAAA,GAEIL,CAAAA,CAAA,aAAA,CAACM,QAAAA,CAAA,CAAS,QAAA,CAAUH,CAAAA,CAAAA,CAClBH,CAAAA,CAAA,aAAA,CAACD,CAAAA,CAAA,CAAW,GAAGM,CAAAA,CAAO,CACxB,EAIJH,CAAAA,CAAU,WAAA,CAAc,WAAA","file":"chunk-TGPWW7FC.js","sourcesContent":["import React, { Suspense } from \"react\";\nimport { Skeleton } from \"./skeleton\";\n\n/**\n * Lazy-loaded Chart component wrapper\n * Use this for better code splitting when Charts are not immediately needed\n *\n * @example\n * ```tsx\n * import { LazyChart } from '@jarllyng/nostromo/components/core/charts-lazy';\n *\n * function Dashboard() {\n * return (\n * <LazyChart\n * type=\"line\"\n * data={data}\n * dataKeys={['sales', 'revenue']}\n * />\n * );\n * }\n * ```\n */\n\n// Dynamic import for Chart component with recharts\nconst ChartLazy = React.lazy(() =>\n import(\"./charts\").then((module) => ({\n default: module.Chart,\n })),\n);\n\nexport interface LazyChartProps extends React.ComponentProps<typeof ChartLazy> {\n fallback?: React.ReactNode;\n}\n\nexport const LazyChart: React.FC<LazyChartProps> = ({\n fallback = <Skeleton className=\"h-64 w-full\" />,\n ...props\n}) => {\n return (\n <Suspense fallback={fallback}>\n <ChartLazy {...props} />\n </Suspense>\n );\n};\n\nLazyChart.displayName = \"LazyChart\";\n"]}
|