@jarllyng/nostromo 3.1.1 → 3.3.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 +0 -48
- package/dist/chunk-2DNQXAMB.cjs +1 -0
- package/dist/chunk-2HYJSYQX.js +3 -0
- package/dist/chunk-2HYJSYQX.js.map +1 -0
- package/dist/chunk-2JQROMCM.js +1 -0
- package/dist/chunk-35I2BJC3.js +3 -0
- package/dist/chunk-35I2BJC3.js.map +1 -0
- package/dist/chunk-35RWQSO2.cjs +3 -0
- package/dist/chunk-35RWQSO2.cjs.map +1 -0
- package/dist/chunk-3BNGK67W.js +1 -0
- package/dist/chunk-3QVQ2TNE.cjs +3 -0
- package/dist/chunk-3QVQ2TNE.cjs.map +1 -0
- package/dist/chunk-3V3OIZWQ.cjs +1 -0
- package/dist/chunk-44HISN45.js +1 -0
- package/dist/chunk-4FSJEW7W.cjs +1 -0
- package/dist/chunk-55N2IT62.cjs +1 -0
- package/dist/chunk-5PVFLXPO.cjs +1 -0
- package/dist/{chunk-ZC4HJSII.cjs → chunk-5Z3MYAVM.cjs} +3 -2
- package/dist/{chunk-ZC4HJSII.cjs.map → chunk-5Z3MYAVM.cjs.map} +1 -1
- package/dist/chunk-6QAYHUNV.js +1 -0
- package/dist/chunk-7PPAI3MM.cjs +1 -0
- package/dist/chunk-7SPPGTBT.cjs +1 -0
- package/dist/chunk-7WEIVLG3.cjs +1 -0
- package/dist/chunk-7YFUAGIW.cjs +1 -0
- package/dist/chunk-ABA7B5DE.js +1 -0
- package/dist/chunk-AC2JBXHQ.js +1 -0
- package/dist/chunk-AHRTNKXE.js +1 -0
- package/dist/chunk-AVTJE2O2.js +1 -0
- package/dist/{chunk-ZQDFYSZB.cjs → chunk-AYEM2M4H.cjs} +3 -2
- package/dist/{chunk-ZQDFYSZB.cjs.map → chunk-AYEM2M4H.cjs.map} +1 -1
- package/dist/chunk-BL2TM4YT.js +3 -0
- package/dist/chunk-BL2TM4YT.js.map +1 -0
- package/dist/chunk-BYV75TDY.cjs +1 -0
- package/dist/{chunk-BSUHBLZO.cjs → chunk-BZ5ZCZJX.cjs} +3 -2
- package/dist/{chunk-BSUHBLZO.cjs.map → chunk-BZ5ZCZJX.cjs.map} +1 -1
- package/dist/chunk-BZF3ZOAN.js +1 -0
- package/dist/chunk-C7HZAQBX.cjs +3 -0
- package/dist/chunk-C7HZAQBX.cjs.map +1 -0
- package/dist/chunk-CEMOHO3Z.js +1 -0
- package/dist/chunk-COXN6XBA.js +1 -0
- package/dist/chunk-DNTPD3PJ.js +3 -0
- package/dist/chunk-DNTPD3PJ.js.map +1 -0
- package/dist/chunk-EFCNLYYW.cjs +1 -0
- package/dist/chunk-EVRQYWZ3.cjs +1 -0
- package/dist/chunk-FUENXWR7.cjs +1 -0
- package/dist/chunk-G35BR7SK.cjs +1 -0
- package/dist/chunk-HD3TMQPR.js +1 -0
- package/dist/{chunk-TGPWW7FC.js → chunk-HRJXPCGF.js} +3 -2
- package/dist/{chunk-TGPWW7FC.js.map → chunk-HRJXPCGF.js.map} +1 -1
- package/dist/chunk-HWZTMVQV.cjs +1 -0
- package/dist/chunk-IOX4WPJL.cjs +1 -0
- package/dist/chunk-ITRGJNWL.cjs +1 -0
- package/dist/chunk-J4VRJVTO.cjs +1 -0
- package/dist/chunk-JCETHQ55.cjs +3 -0
- package/dist/chunk-JCETHQ55.cjs.map +1 -0
- package/dist/chunk-JEHIMQQZ.js +1 -0
- package/dist/chunk-JUOCEYUF.cjs +1 -0
- package/dist/chunk-K2JCGDU7.cjs +1 -0
- package/dist/chunk-LR4VUFOQ.js +1 -0
- package/dist/chunk-LXQT7FH6.cjs +1 -0
- package/dist/chunk-LYVCB45L.js +1 -0
- package/dist/chunk-MDXW6IRM.cjs +3 -0
- package/dist/chunk-MDXW6IRM.cjs.map +1 -0
- package/dist/chunk-MLJZU63I.cjs +1 -0
- package/dist/chunk-MLSE5XSB.cjs +1 -0
- package/dist/chunk-MOPCE5RA.js +3 -0
- package/dist/chunk-MOPCE5RA.js.map +1 -0
- package/dist/chunk-MVCGR7JQ.js +1 -0
- package/dist/chunk-MY2KMTUS.js +3 -0
- package/dist/chunk-MY2KMTUS.js.map +1 -0
- package/dist/chunk-NBX6FKCA.cjs +3 -0
- package/dist/chunk-NBX6FKCA.cjs.map +1 -0
- package/dist/chunk-NC27D5Y3.cjs +3 -0
- package/dist/chunk-NC27D5Y3.cjs.map +1 -0
- package/dist/chunk-NLD4R74T.js +1 -0
- package/dist/chunk-NPSIDFOF.cjs +3 -0
- package/dist/chunk-NPSIDFOF.cjs.map +1 -0
- package/dist/chunk-OEN63W3G.cjs +1 -0
- package/dist/chunk-OUWOPYAX.js +1 -0
- package/dist/chunk-PMNNV4ML.cjs +1 -0
- package/dist/chunk-Q6QMSAJR.js +1 -0
- package/dist/chunk-QBAURT3I.js +1 -0
- package/dist/chunk-QKM5LPRW.js +3 -0
- package/dist/chunk-QKM5LPRW.js.map +1 -0
- package/dist/chunk-RC2THAIA.js +1 -0
- package/dist/chunk-SVWQWRPZ.js +3 -0
- package/dist/chunk-SVWQWRPZ.js.map +1 -0
- package/dist/chunk-UIEGBT4T.js +3 -0
- package/dist/chunk-UIEGBT4T.js.map +1 -0
- package/dist/chunk-UL6MF7ES.js +1 -0
- package/dist/{chunk-4WFEVNXW.cjs → chunk-V45EOCAD.cjs} +3 -2
- package/dist/chunk-V45EOCAD.cjs.map +1 -0
- package/dist/chunk-V77N662N.cjs +1 -0
- package/dist/chunk-VD6S2PE4.js +1 -0
- package/dist/chunk-VNDL67OG.cjs +3 -0
- package/dist/chunk-VNDL67OG.cjs.map +1 -0
- package/dist/chunk-WK6LNC2E.cjs +3 -0
- package/dist/chunk-WK6LNC2E.cjs.map +1 -0
- package/dist/{chunk-M5IBD3KV.js → chunk-WO3KCAN6.js} +3 -2
- package/dist/{chunk-M5IBD3KV.js.map → chunk-WO3KCAN6.js.map} +1 -1
- package/dist/chunk-WW2DDHCI.js +1 -0
- package/dist/{chunk-7W456HZL.js → chunk-XJJJEWSU.js} +3 -2
- package/dist/{chunk-7W456HZL.js.map → chunk-XJJJEWSU.js.map} +1 -1
- package/dist/chunk-XLZJ6HBL.js +3 -0
- package/dist/chunk-XLZJ6HBL.js.map +1 -0
- package/dist/chunk-XPIBRXTW.cjs +1 -0
- package/dist/chunk-XQUZ7DUN.js +1 -0
- package/dist/chunk-XRVHMGMD.js +3 -0
- package/dist/chunk-XRVHMGMD.js.map +1 -0
- package/dist/chunk-YNSODGYK.js +1 -0
- package/dist/chunk-ZEJAFIOC.js +1 -0
- package/dist/components/core/accordion.cjs +1 -0
- package/dist/components/core/accordion.js +1 -0
- package/dist/components/core/alert.cjs +1 -0
- package/dist/components/core/alert.d.cts +1 -1
- package/dist/components/core/alert.d.ts +1 -1
- package/dist/components/core/alert.js +1 -0
- package/dist/components/core/avatar.cjs +1 -0
- package/dist/components/core/avatar.js +1 -0
- package/dist/components/core/badge.cjs +1 -0
- package/dist/components/core/badge.d.cts +2 -2
- package/dist/components/core/badge.d.ts +2 -2
- package/dist/components/core/badge.js +1 -0
- package/dist/components/core/breadcrumb.cjs +2 -1
- package/dist/components/core/breadcrumb.d.cts +10 -4
- package/dist/components/core/breadcrumb.d.ts +10 -4
- package/dist/components/core/breadcrumb.js +2 -1
- package/dist/components/core/button.cjs +1 -0
- package/dist/components/core/button.d.cts +2 -2
- package/dist/components/core/button.d.ts +2 -2
- package/dist/components/core/button.js +1 -0
- package/dist/components/core/calendar.cjs +2 -1
- package/dist/components/core/calendar.js +2 -1
- package/dist/components/core/card.cjs +1 -0
- package/dist/components/core/card.js +1 -0
- package/dist/components/core/charts-lazy.cjs +2 -1
- package/dist/components/core/charts-lazy.js +2 -1
- package/dist/components/core/charts.cjs +2 -1
- package/dist/components/core/charts.js +2 -1
- package/dist/components/core/checkbox.cjs +2 -1
- package/dist/components/core/checkbox.d.cts +1 -1
- package/dist/components/core/checkbox.d.ts +1 -1
- package/dist/components/core/checkbox.js +2 -1
- package/dist/components/core/data-table.cjs +2 -1
- package/dist/components/core/data-table.d.cts +2 -2
- package/dist/components/core/data-table.d.ts +2 -2
- package/dist/components/core/data-table.js +2 -1
- package/dist/components/core/dialog.cjs +2 -1
- package/dist/components/core/dialog.d.cts +21 -3
- package/dist/components/core/dialog.d.ts +21 -3
- package/dist/components/core/dialog.js +2 -1
- package/dist/components/core/error-boundary.cjs +1 -0
- package/dist/components/core/error-boundary.d.cts +1 -1
- package/dist/components/core/error-boundary.d.ts +1 -1
- package/dist/components/core/error-boundary.js +1 -0
- package/dist/components/core/error-message.cjs +1 -0
- package/dist/components/core/error-message.d.cts +1 -1
- package/dist/components/core/error-message.d.ts +1 -1
- package/dist/components/core/error-message.js +1 -0
- package/dist/components/core/helper-text.cjs +1 -0
- package/dist/components/core/helper-text.d.cts +1 -1
- package/dist/components/core/helper-text.d.ts +1 -1
- package/dist/components/core/helper-text.js +1 -0
- package/dist/components/core/icon.cjs +2 -1
- package/dist/components/core/icon.d.cts +3 -3
- package/dist/components/core/icon.d.ts +3 -3
- package/dist/components/core/icon.js +2 -1
- package/dist/components/core/input.cjs +1 -0
- package/dist/components/core/input.d.cts +1 -1
- package/dist/components/core/input.d.ts +1 -1
- package/dist/components/core/input.js +1 -0
- package/dist/components/core/label.cjs +1 -0
- package/dist/components/core/label.d.cts +1 -1
- package/dist/components/core/label.d.ts +1 -1
- package/dist/components/core/label.js +1 -0
- package/dist/components/core/pagination.cjs +1 -0
- package/dist/components/core/pagination.d.cts +1 -1
- package/dist/components/core/pagination.d.ts +1 -1
- package/dist/components/core/pagination.js +1 -0
- package/dist/components/core/progress.cjs +1 -0
- package/dist/components/core/progress.d.cts +3 -3
- package/dist/components/core/progress.d.ts +3 -3
- package/dist/components/core/progress.js +1 -0
- package/dist/components/core/radio-group.cjs +1 -0
- package/dist/components/core/radio-group.d.cts +1 -1
- package/dist/components/core/radio-group.d.ts +1 -1
- package/dist/components/core/radio-group.js +1 -0
- package/dist/components/core/select.cjs +1 -0
- package/dist/components/core/select.d.cts +3 -3
- package/dist/components/core/select.d.ts +3 -3
- package/dist/components/core/select.js +1 -0
- package/dist/components/core/separator.cjs +2 -1
- package/dist/components/core/separator.js +2 -1
- package/dist/components/core/skeleton.cjs +2 -1
- package/dist/components/core/skeleton.d.cts +1 -1
- package/dist/components/core/skeleton.d.ts +1 -1
- package/dist/components/core/skeleton.js +2 -1
- package/dist/components/core/switch.cjs +1 -0
- package/dist/components/core/switch.d.cts +1 -1
- package/dist/components/core/switch.d.ts +1 -1
- package/dist/components/core/switch.js +1 -0
- package/dist/components/core/table.cjs +2 -1
- package/dist/components/core/table.d.cts +11 -1
- package/dist/components/core/table.d.ts +11 -1
- package/dist/components/core/table.js +2 -1
- package/dist/components/core/tabs.cjs +1 -0
- package/dist/components/core/tabs.js +1 -0
- package/dist/components/core/textarea.cjs +2 -1
- package/dist/components/core/textarea.d.cts +1 -1
- package/dist/components/core/textarea.d.ts +1 -1
- package/dist/components/core/textarea.js +2 -1
- package/dist/components/core/toast.cjs +2 -1
- package/dist/components/core/toast.d.cts +2 -2
- package/dist/components/core/toast.d.ts +2 -2
- package/dist/components/core/toast.js +2 -1
- package/dist/components/core/tooltip.cjs +2 -1
- package/dist/components/core/tooltip.d.cts +2 -2
- package/dist/components/core/tooltip.d.ts +2 -2
- package/dist/components/core/tooltip.js +2 -1
- package/dist/components/marketing/features.cjs +1 -0
- package/dist/components/marketing/features.d.cts +2 -2
- package/dist/components/marketing/features.d.ts +2 -2
- package/dist/components/marketing/features.js +1 -0
- package/dist/components/marketing/gallery.cjs +1 -0
- package/dist/components/marketing/gallery.d.cts +1 -1
- package/dist/components/marketing/gallery.d.ts +1 -1
- package/dist/components/marketing/gallery.js +1 -0
- package/dist/components/marketing/hero.cjs +1 -0
- package/dist/components/marketing/hero.js +1 -0
- package/dist/components/marketing/logo-wall.cjs +1 -0
- package/dist/components/marketing/logo-wall.js +1 -0
- package/dist/components/marketing/pricing.cjs +1 -0
- package/dist/components/marketing/pricing.d.cts +1 -1
- package/dist/components/marketing/pricing.d.ts +1 -1
- package/dist/components/marketing/pricing.js +1 -0
- package/dist/components/marketing/testimonials.cjs +1 -0
- package/dist/components/marketing/testimonials.d.cts +1 -1
- package/dist/components/marketing/testimonials.d.ts +1 -1
- package/dist/components/marketing/testimonials.js +1 -0
- package/dist/index.cjs +2 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/lazy.cjs +1 -0
- package/dist/lib/lazy.d.cts +3 -3
- package/dist/lib/lazy.d.ts +3 -3
- package/dist/lib/lazy.js +1 -0
- package/dist/lib/performance.cjs +1 -0
- package/dist/lib/performance.js +1 -0
- package/dist/themes/lv-426.css +48 -52
- package/dist/themes/mother.css +52 -58
- package/dist/themes/nostromo.css +35 -30
- package/dist/themes/sulaco.css +47 -51
- package/dist/tokens.css +1 -1
- package/package.json +4 -3
- package/dist/chunk-4PN7OGLX.cjs +0 -2
- package/dist/chunk-4PN7OGLX.cjs.map +0 -1
- package/dist/chunk-4TYVEXRA.cjs +0 -2
- package/dist/chunk-4TYVEXRA.cjs.map +0 -1
- package/dist/chunk-4WFEVNXW.cjs.map +0 -1
- package/dist/chunk-B2BWBKZA.cjs +0 -2
- package/dist/chunk-B2BWBKZA.cjs.map +0 -1
- package/dist/chunk-CVOSWGQZ.js +0 -2
- package/dist/chunk-CVOSWGQZ.js.map +0 -1
- package/dist/chunk-EGQ2Q37R.cjs +0 -2
- package/dist/chunk-EGQ2Q37R.cjs.map +0 -1
- package/dist/chunk-EIXD3Y4R.js +0 -2
- package/dist/chunk-EIXD3Y4R.js.map +0 -1
- package/dist/chunk-G5ZSOVJY.cjs +0 -2
- package/dist/chunk-G5ZSOVJY.cjs.map +0 -1
- package/dist/chunk-G6TR5RGR.js +0 -2
- package/dist/chunk-G6TR5RGR.js.map +0 -1
- package/dist/chunk-GUJB555L.js +0 -2
- package/dist/chunk-GUJB555L.js.map +0 -1
- package/dist/chunk-JZROH43C.js +0 -2
- package/dist/chunk-JZROH43C.js.map +0 -1
- package/dist/chunk-MRZOLUSF.js +0 -2
- package/dist/chunk-MRZOLUSF.js.map +0 -1
- package/dist/chunk-OZ3RIKZO.cjs +0 -2
- package/dist/chunk-OZ3RIKZO.cjs.map +0 -1
- package/dist/chunk-PEYPRWZP.js +0 -2
- package/dist/chunk-PEYPRWZP.js.map +0 -1
- package/dist/chunk-PVHTEE5T.cjs +0 -2
- package/dist/chunk-PVHTEE5T.cjs.map +0 -1
- package/dist/chunk-QF5CRDZI.js +0 -2
- package/dist/chunk-QF5CRDZI.js.map +0 -1
- package/dist/chunk-RPRISB7O.cjs +0 -2
- package/dist/chunk-RPRISB7O.cjs.map +0 -1
- package/dist/chunk-SD4IIQ2I.cjs +0 -2
- package/dist/chunk-SD4IIQ2I.cjs.map +0 -1
- package/dist/chunk-SLGMKBST.js +0 -2
- package/dist/chunk-SLGMKBST.js.map +0 -1
- package/dist/chunk-TJFZAMBB.js +0 -2
- package/dist/chunk-TJFZAMBB.js.map +0 -1
- package/dist/chunk-VXMDVKAD.js +0 -2
- package/dist/chunk-VXMDVKAD.js.map +0 -1
- package/dist/chunk-ZYP2PDSX.cjs +0 -2
- package/dist/chunk-ZYP2PDSX.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/core/data-table.tsx"],"names":["filterBarVariants","cva","DataTable","initialData","columns","searchable","searchPlaceholder","searchKeys","onSearch","controlledSearchTerm","onSearchTermChange","filterable","filters","onFilter","controlledColumnFilters","onColumnFiltersChange","defaultSortColumn","defaultSortDirection","controlledSortColumn","controlledSortDirection","onSortChange","defaultPageSize","showPagination","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","totalItems","showSearch","showFilters","filterBarClassName","searchBarClassName","rowKey","emptyText","tableProps","isControlledSearch","isControlledFilters","isControlledSort","isControlledPagination","internalSearchTerm","setInternalSearchTerm","useState","searchTerm","setSearchTerm","useMemo","value","internalColumnFilters","setInternalColumnFilters","columnFilters","setColumnFilters","internalSortColumn","setInternalSortColumn","internalSortDirection","setInternalSortDirection","sortColumn","sortDirection","setSortColumn","column","setSortDirection","dir","internalCurrentPage","setInternalCurrentPage","internalPageSize","setInternalPageSize","currentPage","pageSize","setCurrentPage","page","setPageSize","size","searchFilteredData","term","keys","col","record","key","filterFilteredData","filter","filterValue","recordValue","sortedData","sorted","a","b","aValue","bValue","comparison","paginatedData","startIndex","endIndex","handleSearch","useCallback","handleFilterChange","newFilters","handleSort","direction","handlePageChange","newPageSize","React","cn","Input","e","option","Table","DataTableMemoized","memo"],"mappings":"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","file":"chunk-7W456HZL.js","sourcesContent":["import React, { useState, useMemo, useCallback } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\nimport { Table, TableColumn, TableProps } from \"./table\";\nimport { Input } from \"./input\";\n\n// Filter types\nexport type FilterType = \"text\" | \"select\" | \"number\" | \"date\" | \"boolean\";\n\nexport interface ColumnFilter<T = Record<string, unknown>> {\n key: string;\n type: FilterType;\n options?: Array<{ label: string; value: string | number }>;\n placeholder?: string;\n filterFn?: (value: unknown, record: T) => boolean;\n}\n\nexport interface DataTableProps<T = Record<string, unknown>> extends Omit<\n TableProps<T>,\n \"data\" | \"onSort\" | \"sortColumn\" | \"sortDirection\"\n> {\n data: T[];\n columns: TableColumn<T>[];\n\n // Search\n searchable?: boolean;\n searchPlaceholder?: string;\n searchKeys?: Array<keyof T | string>;\n onSearch?: (searchTerm: string, filteredData: T[]) => void;\n\n // Controlled search (for server-side filtering)\n searchTerm?: string;\n onSearchTermChange?: (searchTerm: string) => void;\n\n // Filtering\n filterable?: boolean;\n filters?: ColumnFilter<T>[];\n onFilter?: (filters: Record<string, unknown>, filteredData: T[]) => void;\n\n // Controlled filters (for server-side filtering)\n columnFilters?: Record<string, unknown>;\n onColumnFiltersChange?: (filters: Record<string, unknown>) => void;\n\n // Sorting (enhanced)\n defaultSortColumn?: string;\n defaultSortDirection?: \"asc\" | \"desc\";\n\n // Controlled sorting (for server-side sorting)\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSortChange?: (column: string, direction: \"asc\" | \"desc\") => void;\n\n // Pagination (enhanced)\n defaultPageSize?: number;\n showPagination?: boolean;\n\n // Controlled pagination (for server-side pagination)\n currentPage?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n totalItems?: number; // Required for server-side pagination\n\n // UI\n showSearch?: boolean;\n showFilters?: boolean;\n filterBarClassName?: string;\n searchBarClassName?: string;\n}\n\n// Filter bar component\nconst filterBarVariants = cva(\n \"flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n compact: \"p-2 bg-card\",\n minimal: \"p-2 bg-transparent border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport function DataTable<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n data: initialData,\n columns,\n searchable = true,\n searchPlaceholder = \"Search...\",\n searchKeys,\n onSearch,\n searchTerm: controlledSearchTerm,\n onSearchTermChange,\n filterable = false,\n filters = [],\n onFilter,\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n defaultSortColumn,\n defaultSortDirection = \"asc\",\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n onSortChange,\n defaultPageSize = 10,\n showPagination = true,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize,\n onPageChange,\n onPageSizeChange,\n totalItems,\n showSearch = true,\n showFilters = true,\n filterBarClassName,\n searchBarClassName,\n rowKey = \"id\",\n emptyText = \"No data found\",\n ...tableProps\n}: DataTableProps<T>) {\n // Determine if component is in controlled mode\n const isControlledSearch = controlledSearchTerm !== undefined;\n const isControlledFilters = controlledColumnFilters !== undefined;\n const isControlledSort = controlledSortColumn !== undefined;\n const isControlledPagination = controlledCurrentPage !== undefined;\n\n // Search state (controlled or uncontrolled)\n const [internalSearchTerm, setInternalSearchTerm] = useState(\"\");\n const searchTerm = isControlledSearch\n ? controlledSearchTerm\n : internalSearchTerm;\n const setSearchTerm = useMemo(\n () =>\n isControlledSearch\n ? (value: string) => onSearchTermChange?.(value)\n : setInternalSearchTerm,\n [isControlledSearch, onSearchTermChange],\n );\n\n // Filter state (controlled or uncontrolled)\n const [internalColumnFilters, setInternalColumnFilters] = useState<\n Record<string, unknown>\n >({});\n const columnFilters = isControlledFilters\n ? controlledColumnFilters\n : internalColumnFilters;\n const setColumnFilters = useMemo(\n () =>\n isControlledFilters\n ? (filters: Record<string, unknown>) => onColumnFiltersChange?.(filters)\n : setInternalColumnFilters,\n [isControlledFilters, onColumnFiltersChange],\n );\n\n // Sort state (controlled or uncontrolled)\n const [internalSortColumn, setInternalSortColumn] = useState<\n string | undefined\n >(defaultSortColumn);\n const [internalSortDirection, setInternalSortDirection] = useState<\n \"asc\" | \"desc\"\n >(defaultSortDirection);\n const sortColumn = isControlledSort\n ? controlledSortColumn\n : internalSortColumn;\n const sortDirection = isControlledSort\n ? controlledSortDirection\n : internalSortDirection;\n const setSortColumn = useMemo(\n () =>\n isControlledSort\n ? (column: string | undefined) => {\n if (column && onSortChange && sortDirection) {\n onSortChange(column, sortDirection);\n }\n }\n : setInternalSortColumn,\n [isControlledSort, onSortChange, sortDirection],\n );\n const setSortDirection = useMemo(\n () =>\n isControlledSort\n ? (dir: \"asc\" | \"desc\") => {\n if (sortColumn && onSortChange) {\n onSortChange(sortColumn, dir);\n }\n }\n : setInternalSortDirection,\n [isControlledSort, onSortChange, sortColumn],\n );\n\n // Pagination state (controlled or uncontrolled)\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const currentPage = isControlledPagination\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize;\n const setCurrentPage = useMemo(\n () =>\n isControlledPagination\n ? (page: number) => onPageChange?.(page)\n : setInternalCurrentPage,\n [isControlledPagination, onPageChange],\n );\n const setPageSize = useMemo(\n () =>\n onPageSizeChange\n ? (size: number) => onPageSizeChange(size)\n : setInternalPageSize,\n [onPageSizeChange],\n );\n\n // Apply search\n const searchFilteredData = useMemo(() => {\n if (!searchable || !searchTerm.trim()) {\n return initialData;\n }\n\n const term = searchTerm.toLowerCase();\n const keys =\n searchKeys ||\n columns.map((col) => col.dataIndex || col.key).filter(Boolean);\n\n return initialData.filter((record) => {\n return keys.some((key) => {\n const value =\n typeof key === \"string\"\n ? (record as Record<string, unknown>)[key]\n : record[key as keyof T];\n\n if (value === null || value === undefined) return false;\n\n return String(value).toLowerCase().includes(term);\n });\n });\n }, [initialData, searchTerm, searchable, searchKeys, columns]);\n\n // Apply column filters\n const filterFilteredData = useMemo(() => {\n if (\n !filterable ||\n filters.length === 0 ||\n Object.keys(columnFilters).length === 0\n ) {\n return searchFilteredData;\n }\n\n return searchFilteredData.filter((record) => {\n return filters.every((filter) => {\n const filterValue = columnFilters[filter.key];\n\n // Skip if no filter value\n if (\n filterValue === undefined ||\n filterValue === null ||\n filterValue === \"\"\n ) {\n return true;\n }\n\n // Use custom filter function if provided\n if (filter.filterFn) {\n return filter.filterFn(filterValue, record);\n }\n\n // Default filtering logic\n const recordValue = (record as Record<string, unknown>)[filter.key];\n\n switch (filter.type) {\n case \"text\":\n return String(recordValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n case \"number\":\n return Number(recordValue) === Number(filterValue);\n case \"boolean\":\n return Boolean(recordValue) === Boolean(filterValue);\n case \"select\":\n return String(recordValue) === String(filterValue);\n default:\n return String(recordValue).includes(String(filterValue));\n }\n });\n });\n }, [searchFilteredData, columnFilters, filterable, filters]);\n\n // Apply sorting\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filterFilteredData;\n }\n\n const sorted = [...filterFilteredData];\n const column = columns.find((col) => col.key === sortColumn);\n\n if (!column || !column.sortable) {\n return sorted;\n }\n\n sorted.sort((a, b) => {\n const aValue = column.dataIndex\n ? a[column.dataIndex]\n : (a as Record<string, unknown>)[column.key];\n const bValue = column.dataIndex\n ? b[column.dataIndex]\n : (b as Record<string, unknown>)[column.key];\n\n // Handle null/undefined\n if (aValue === null || aValue === undefined) return 1;\n if (bValue === null || bValue === undefined) return -1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortDirection === \"asc\" ? comparison : -comparison;\n });\n\n return sorted;\n }, [filterFilteredData, sortColumn, sortDirection, columns]);\n\n // Apply pagination\n // In controlled mode with server-side pagination, use provided data directly\n // In uncontrolled mode, slice the data client-side\n const paginatedData = useMemo(() => {\n if (!showPagination) {\n return sortedData;\n }\n\n // If in controlled pagination mode with totalItems, assume data is already paginated\n if (isControlledPagination && totalItems !== undefined) {\n return sortedData; // Data is already paginated server-side\n }\n\n // Client-side pagination\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n\n return sortedData.slice(startIndex, endIndex);\n }, [\n sortedData,\n currentPage,\n pageSize,\n showPagination,\n isControlledPagination,\n totalItems,\n ]);\n\n // Calculate total pages for pagination display\n // Note: Currently not used but kept for future pagination UI enhancements\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _totalPages = useMemo(() => {\n if (!showPagination) return 1;\n if (isControlledPagination && totalItems !== undefined) {\n return Math.ceil(totalItems / pageSize);\n }\n return Math.ceil(sortedData.length / pageSize);\n }, [\n showPagination,\n isControlledPagination,\n totalItems,\n pageSize,\n sortedData.length,\n ]);\n\n // Callbacks\n const handleSearch = useCallback(\n (value: string) => {\n setSearchTerm(value);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on search (only in uncontrolled mode)\n }\n },\n [setSearchTerm, setCurrentPage, isControlledPagination],\n );\n\n const handleFilterChange = useCallback(\n (key: string, value: unknown) => {\n const newFilters = {\n ...columnFilters,\n [key]: value,\n };\n setColumnFilters(newFilters);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on filter (only in uncontrolled mode)\n }\n },\n [columnFilters, setColumnFilters, setCurrentPage, isControlledPagination],\n );\n\n const handleSort = useCallback(\n (column: TableColumn<T>, direction: \"asc\" | \"desc\") => {\n setSortColumn(column.key);\n setSortDirection(direction);\n },\n [setSortColumn, setSortDirection],\n );\n\n const handlePageChange = useCallback(\n (page: number, newPageSize: number) => {\n setCurrentPage(page);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n setCurrentPage(1); // Reset to first page when page size changes\n }\n },\n [pageSize, setCurrentPage, setPageSize],\n );\n\n // Notify callbacks\n React.useEffect(() => {\n if (onSearch) {\n onSearch(searchTerm, searchFilteredData);\n }\n }, [searchTerm, searchFilteredData, onSearch]);\n\n React.useEffect(() => {\n if (onFilter) {\n onFilter(columnFilters, filterFilteredData);\n }\n }, [columnFilters, filterFilteredData, onFilter]);\n\n return (\n <div className=\"w-full\">\n {/* Search and Filter Bar */}\n {(showSearch || (showFilters && filterable && filters.length > 0)) && (\n <div className={cn(filterBarVariants(), filterBarClassName)}>\n {/* Search */}\n {showSearch && searchable && (\n <div className={cn(\"flex-1 min-w-[200px]\", searchBarClassName)}>\n <Input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={searchTerm}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full\"\n aria-label=\"Search table\"\n />\n </div>\n )}\n\n {/* Column Filters */}\n {showFilters && filterable && filters.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {filters.map((filter) => {\n const filterValue = columnFilters[filter.key];\n\n if (filter.type === \"select\" && filter.options) {\n return (\n <select\n key={filter.key}\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n e.target.value || undefined,\n )\n }\n className=\"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary\"\n aria-label={`Filter by ${filter.key}`}\n >\n <option value=\"\">All {filter.key}</option>\n {filter.options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n );\n }\n\n return (\n <Input\n key={filter.key}\n type={filter.type === \"number\" ? \"number\" : \"text\"}\n placeholder={\n filter.placeholder || `Filter ${filter.key}...`\n }\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n filter.type === \"number\"\n ? Number(e.target.value)\n : e.target.value,\n )\n }\n className=\"min-w-[150px]\"\n aria-label={`Filter by ${filter.key}`}\n />\n );\n })}\n\n {/* Clear Filters */}\n {Object.keys(columnFilters).length > 0 && (\n <button\n type=\"button\"\n onClick={() => setColumnFilters({})}\n className=\"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline\"\n aria-label=\"Clear all filters\"\n >\n Clear filters\n </button>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Table */}\n <Table\n {...tableProps}\n data={paginatedData}\n columns={columns}\n rowKey={rowKey}\n emptyText={emptyText}\n {...(sortColumn && {\n sortColumn,\n sortDirection,\n })}\n onSort={handleSort}\n {...(showPagination && {\n pagination: {\n current: currentPage,\n pageSize: pageSize,\n total:\n isControlledPagination && totalItems !== undefined\n ? totalItems\n : sortedData.length,\n onChange: handlePageChange,\n showSizeChanger: true,\n },\n })}\n />\n\n {/* Results Summary */}\n {showPagination &&\n (isControlledPagination && totalItems !== undefined\n ? totalItems > 0\n : sortedData.length > 0) && (\n <div className=\"mt-2 px-4 py-2 text-sm text-muted-foreground\">\n {isControlledPagination && totalItems !== undefined ? (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, totalItems)} of {totalItems}{\" \"}\n results\n {searchTerm && \" (filtered)\"}\n </>\n ) : (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n {searchTerm && ` (filtered from ${initialData.length} total)`}\n </>\n )}\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = \"DataTable\";\n\n// Memoize DataTable for performance optimization\n// DataTable is a complex component with filtering, sorting, and pagination\nexport const DataTableMemoized = memo(DataTable) as typeof DataTable;\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/core/data-table.tsx"],"names":["filterBarVariants","cva","DataTable","initialData","columns","searchable","searchPlaceholder","searchKeys","onSearch","controlledSearchTerm","onSearchTermChange","filterable","filters","onFilter","controlledColumnFilters","onColumnFiltersChange","defaultSortColumn","defaultSortDirection","controlledSortColumn","controlledSortDirection","onSortChange","defaultPageSize","showPagination","controlledCurrentPage","controlledPageSize","onPageChange","onPageSizeChange","totalItems","showSearch","showFilters","filterBarClassName","searchBarClassName","rowKey","emptyText","tableProps","isControlledSearch","isControlledFilters","isControlledSort","isControlledPagination","internalSearchTerm","setInternalSearchTerm","useState","searchTerm","setSearchTerm","useMemo","value","internalColumnFilters","setInternalColumnFilters","columnFilters","setColumnFilters","internalSortColumn","setInternalSortColumn","internalSortDirection","setInternalSortDirection","sortColumn","sortDirection","setSortColumn","column","setSortDirection","dir","internalCurrentPage","setInternalCurrentPage","internalPageSize","setInternalPageSize","currentPage","pageSize","setCurrentPage","page","setPageSize","size","searchFilteredData","term","keys","col","record","key","filterFilteredData","filter","filterValue","recordValue","sortedData","sorted","a","b","aValue","bValue","comparison","paginatedData","startIndex","endIndex","handleSearch","useCallback","handleFilterChange","newFilters","handleSort","direction","handlePageChange","newPageSize","React","cn","Input","e","option","Table","DataTableMemoized","memo"],"mappings":"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","file":"chunk-XJJJEWSU.js","sourcesContent":["import React, { useState, useMemo, useCallback } from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\nimport { Table, TableColumn, TableProps } from \"./table\";\nimport { Input } from \"./input\";\n\n// Filter types\nexport type FilterType = \"text\" | \"select\" | \"number\" | \"date\" | \"boolean\";\n\nexport interface ColumnFilter<T = Record<string, unknown>> {\n key: string;\n type: FilterType;\n options?: Array<{ label: string; value: string | number }>;\n placeholder?: string;\n filterFn?: (value: unknown, record: T) => boolean;\n}\n\nexport interface DataTableProps<T = Record<string, unknown>> extends Omit<\n TableProps<T>,\n \"data\" | \"onSort\" | \"sortColumn\" | \"sortDirection\"\n> {\n data: T[];\n columns: TableColumn<T>[];\n\n // Search\n searchable?: boolean;\n searchPlaceholder?: string;\n searchKeys?: Array<keyof T | string>;\n onSearch?: (searchTerm: string, filteredData: T[]) => void;\n\n // Controlled search (for server-side filtering)\n searchTerm?: string;\n onSearchTermChange?: (searchTerm: string) => void;\n\n // Filtering\n filterable?: boolean;\n filters?: ColumnFilter<T>[];\n onFilter?: (filters: Record<string, unknown>, filteredData: T[]) => void;\n\n // Controlled filters (for server-side filtering)\n columnFilters?: Record<string, unknown>;\n onColumnFiltersChange?: (filters: Record<string, unknown>) => void;\n\n // Sorting (enhanced)\n defaultSortColumn?: string;\n defaultSortDirection?: \"asc\" | \"desc\";\n\n // Controlled sorting (for server-side sorting)\n sortColumn?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSortChange?: (column: string, direction: \"asc\" | \"desc\") => void;\n\n // Pagination (enhanced)\n defaultPageSize?: number;\n showPagination?: boolean;\n\n // Controlled pagination (for server-side pagination)\n currentPage?: number;\n pageSize?: number;\n onPageChange?: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n totalItems?: number; // Required for server-side pagination\n\n // UI\n showSearch?: boolean;\n showFilters?: boolean;\n filterBarClassName?: string;\n searchBarClassName?: string;\n}\n\n// Filter bar component\nconst filterBarVariants = cva(\n \"flex flex-wrap items-center gap-2 p-4 bg-muted border-b border-border\",\n {\n variants: {\n variant: {\n default: \"bg-muted\",\n compact: \"p-2 bg-card\",\n minimal: \"p-2 bg-transparent border-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport function DataTable<\n T extends Record<string, unknown> = Record<string, unknown>,\n>({\n data: initialData,\n columns,\n searchable = true,\n searchPlaceholder = \"Search...\",\n searchKeys,\n onSearch,\n searchTerm: controlledSearchTerm,\n onSearchTermChange,\n filterable = false,\n filters = [],\n onFilter,\n columnFilters: controlledColumnFilters,\n onColumnFiltersChange,\n defaultSortColumn,\n defaultSortDirection = \"asc\",\n sortColumn: controlledSortColumn,\n sortDirection: controlledSortDirection,\n onSortChange,\n defaultPageSize = 10,\n showPagination = true,\n currentPage: controlledCurrentPage,\n pageSize: controlledPageSize,\n onPageChange,\n onPageSizeChange,\n totalItems,\n showSearch = true,\n showFilters = true,\n filterBarClassName,\n searchBarClassName,\n rowKey = \"id\",\n emptyText = \"No data found\",\n ...tableProps\n}: DataTableProps<T>) {\n // Determine if component is in controlled mode\n const isControlledSearch = controlledSearchTerm !== undefined;\n const isControlledFilters = controlledColumnFilters !== undefined;\n const isControlledSort = controlledSortColumn !== undefined;\n const isControlledPagination = controlledCurrentPage !== undefined;\n\n // Search state (controlled or uncontrolled)\n const [internalSearchTerm, setInternalSearchTerm] = useState(\"\");\n const searchTerm = isControlledSearch\n ? controlledSearchTerm\n : internalSearchTerm;\n const setSearchTerm = useMemo(\n () =>\n isControlledSearch\n ? (value: string) => onSearchTermChange?.(value)\n : setInternalSearchTerm,\n [isControlledSearch, onSearchTermChange],\n );\n\n // Filter state (controlled or uncontrolled)\n const [internalColumnFilters, setInternalColumnFilters] = useState<\n Record<string, unknown>\n >({});\n const columnFilters = isControlledFilters\n ? controlledColumnFilters\n : internalColumnFilters;\n const setColumnFilters = useMemo(\n () =>\n isControlledFilters\n ? (filters: Record<string, unknown>) => onColumnFiltersChange?.(filters)\n : setInternalColumnFilters,\n [isControlledFilters, onColumnFiltersChange],\n );\n\n // Sort state (controlled or uncontrolled)\n const [internalSortColumn, setInternalSortColumn] = useState<\n string | undefined\n >(defaultSortColumn);\n const [internalSortDirection, setInternalSortDirection] = useState<\n \"asc\" | \"desc\"\n >(defaultSortDirection);\n const sortColumn = isControlledSort\n ? controlledSortColumn\n : internalSortColumn;\n const sortDirection = isControlledSort\n ? controlledSortDirection\n : internalSortDirection;\n const setSortColumn = useMemo(\n () =>\n isControlledSort\n ? (column: string | undefined) => {\n if (column && onSortChange && sortDirection) {\n onSortChange(column, sortDirection);\n }\n }\n : setInternalSortColumn,\n [isControlledSort, onSortChange, sortDirection],\n );\n const setSortDirection = useMemo(\n () =>\n isControlledSort\n ? (dir: \"asc\" | \"desc\") => {\n if (sortColumn && onSortChange) {\n onSortChange(sortColumn, dir);\n }\n }\n : setInternalSortDirection,\n [isControlledSort, onSortChange, sortColumn],\n );\n\n // Pagination state (controlled or uncontrolled)\n const [internalCurrentPage, setInternalCurrentPage] = useState(1);\n const [internalPageSize, setInternalPageSize] = useState(defaultPageSize);\n const currentPage = isControlledPagination\n ? controlledCurrentPage\n : internalCurrentPage;\n const pageSize =\n controlledPageSize !== undefined ? controlledPageSize : internalPageSize;\n const setCurrentPage = useMemo(\n () =>\n isControlledPagination\n ? (page: number) => onPageChange?.(page)\n : setInternalCurrentPage,\n [isControlledPagination, onPageChange],\n );\n const setPageSize = useMemo(\n () =>\n onPageSizeChange\n ? (size: number) => onPageSizeChange(size)\n : setInternalPageSize,\n [onPageSizeChange],\n );\n\n // Apply search\n const searchFilteredData = useMemo(() => {\n if (!searchable || !searchTerm.trim()) {\n return initialData;\n }\n\n const term = searchTerm.toLowerCase();\n const keys =\n searchKeys ||\n columns.map((col) => col.dataIndex || col.key).filter(Boolean);\n\n return initialData.filter((record) => {\n return keys.some((key) => {\n const value =\n typeof key === \"string\"\n ? (record as Record<string, unknown>)[key]\n : record[key as keyof T];\n\n if (value === null || value === undefined) return false;\n\n return String(value).toLowerCase().includes(term);\n });\n });\n }, [initialData, searchTerm, searchable, searchKeys, columns]);\n\n // Apply column filters\n const filterFilteredData = useMemo(() => {\n if (\n !filterable ||\n filters.length === 0 ||\n Object.keys(columnFilters).length === 0\n ) {\n return searchFilteredData;\n }\n\n return searchFilteredData.filter((record) => {\n return filters.every((filter) => {\n const filterValue = columnFilters[filter.key];\n\n // Skip if no filter value\n if (\n filterValue === undefined ||\n filterValue === null ||\n filterValue === \"\"\n ) {\n return true;\n }\n\n // Use custom filter function if provided\n if (filter.filterFn) {\n return filter.filterFn(filterValue, record);\n }\n\n // Default filtering logic\n const recordValue = (record as Record<string, unknown>)[filter.key];\n\n switch (filter.type) {\n case \"text\":\n return String(recordValue)\n .toLowerCase()\n .includes(String(filterValue).toLowerCase());\n case \"number\":\n return Number(recordValue) === Number(filterValue);\n case \"boolean\":\n return Boolean(recordValue) === Boolean(filterValue);\n case \"select\":\n return String(recordValue) === String(filterValue);\n default:\n return String(recordValue).includes(String(filterValue));\n }\n });\n });\n }, [searchFilteredData, columnFilters, filterable, filters]);\n\n // Apply sorting\n const sortedData = useMemo(() => {\n if (!sortColumn) {\n return filterFilteredData;\n }\n\n const sorted = [...filterFilteredData];\n const column = columns.find((col) => col.key === sortColumn);\n\n if (!column || !column.sortable) {\n return sorted;\n }\n\n sorted.sort((a, b) => {\n const aValue = column.dataIndex\n ? a[column.dataIndex]\n : (a as Record<string, unknown>)[column.key];\n const bValue = column.dataIndex\n ? b[column.dataIndex]\n : (b as Record<string, unknown>)[column.key];\n\n // Handle null/undefined\n if (aValue === null || aValue === undefined) return 1;\n if (bValue === null || bValue === undefined) return -1;\n\n // Compare values\n let comparison = 0;\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n comparison = aValue - bValue;\n } else {\n comparison = String(aValue).localeCompare(String(bValue));\n }\n\n return sortDirection === \"asc\" ? comparison : -comparison;\n });\n\n return sorted;\n }, [filterFilteredData, sortColumn, sortDirection, columns]);\n\n // Apply pagination\n // In controlled mode with server-side pagination, use provided data directly\n // In uncontrolled mode, slice the data client-side\n const paginatedData = useMemo(() => {\n if (!showPagination) {\n return sortedData;\n }\n\n // If in controlled pagination mode with totalItems, assume data is already paginated\n if (isControlledPagination && totalItems !== undefined) {\n return sortedData; // Data is already paginated server-side\n }\n\n // Client-side pagination\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n\n return sortedData.slice(startIndex, endIndex);\n }, [\n sortedData,\n currentPage,\n pageSize,\n showPagination,\n isControlledPagination,\n totalItems,\n ]);\n\n // Calculate total pages for pagination display\n // Note: Currently not used but kept for future pagination UI enhancements\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const _totalPages = useMemo(() => {\n if (!showPagination) return 1;\n if (isControlledPagination && totalItems !== undefined) {\n return Math.ceil(totalItems / pageSize);\n }\n return Math.ceil(sortedData.length / pageSize);\n }, [\n showPagination,\n isControlledPagination,\n totalItems,\n pageSize,\n sortedData.length,\n ]);\n\n // Callbacks\n const handleSearch = useCallback(\n (value: string) => {\n setSearchTerm(value);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on search (only in uncontrolled mode)\n }\n },\n [setSearchTerm, setCurrentPage, isControlledPagination],\n );\n\n const handleFilterChange = useCallback(\n (key: string, value: unknown) => {\n const newFilters = {\n ...columnFilters,\n [key]: value,\n };\n setColumnFilters(newFilters);\n if (!isControlledPagination) {\n setCurrentPage(1); // Reset to first page on filter (only in uncontrolled mode)\n }\n },\n [columnFilters, setColumnFilters, setCurrentPage, isControlledPagination],\n );\n\n const handleSort = useCallback(\n (column: TableColumn<T>, direction: \"asc\" | \"desc\") => {\n setSortColumn(column.key);\n setSortDirection(direction);\n },\n [setSortColumn, setSortDirection],\n );\n\n const handlePageChange = useCallback(\n (page: number, newPageSize: number) => {\n setCurrentPage(page);\n if (newPageSize !== pageSize) {\n setPageSize(newPageSize);\n setCurrentPage(1); // Reset to first page when page size changes\n }\n },\n [pageSize, setCurrentPage, setPageSize],\n );\n\n // Notify callbacks\n React.useEffect(() => {\n if (onSearch) {\n onSearch(searchTerm, searchFilteredData);\n }\n }, [searchTerm, searchFilteredData, onSearch]);\n\n React.useEffect(() => {\n if (onFilter) {\n onFilter(columnFilters, filterFilteredData);\n }\n }, [columnFilters, filterFilteredData, onFilter]);\n\n return (\n <div className=\"w-full\">\n {/* Search and Filter Bar */}\n {(showSearch || (showFilters && filterable && filters.length > 0)) && (\n <div className={cn(filterBarVariants(), filterBarClassName)}>\n {/* Search */}\n {showSearch && searchable && (\n <div className={cn(\"flex-1 min-w-[200px]\", searchBarClassName)}>\n <Input\n type=\"text\"\n placeholder={searchPlaceholder}\n value={searchTerm}\n onChange={(e) => handleSearch(e.target.value)}\n className=\"w-full\"\n aria-label=\"Search table\"\n />\n </div>\n )}\n\n {/* Column Filters */}\n {showFilters && filterable && filters.length > 0 && (\n <div className=\"flex flex-wrap items-center gap-2\">\n {filters.map((filter) => {\n const filterValue = columnFilters[filter.key];\n\n if (filter.type === \"select\" && filter.options) {\n return (\n <select\n key={filter.key}\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n e.target.value || undefined,\n )\n }\n className=\"rounded-md border border-input px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-ring focus:border-primary\"\n aria-label={`Filter by ${filter.key}`}\n >\n <option value=\"\">All {filter.key}</option>\n {filter.options.map((option) => (\n <option key={option.value} value={String(option.value)}>\n {option.label}\n </option>\n ))}\n </select>\n );\n }\n\n return (\n <Input\n key={filter.key}\n type={filter.type === \"number\" ? \"number\" : \"text\"}\n placeholder={\n filter.placeholder || `Filter ${filter.key}...`\n }\n value={String(filterValue || \"\")}\n onChange={(e) =>\n handleFilterChange(\n filter.key,\n filter.type === \"number\"\n ? Number(e.target.value)\n : e.target.value,\n )\n }\n className=\"min-w-[150px]\"\n aria-label={`Filter by ${filter.key}`}\n />\n );\n })}\n\n {/* Clear Filters */}\n {Object.keys(columnFilters).length > 0 && (\n <button\n type=\"button\"\n onClick={() => setColumnFilters({})}\n className=\"px-3 py-2 text-sm text-muted-foreground hover:text-foreground underline\"\n aria-label=\"Clear all filters\"\n >\n Clear filters\n </button>\n )}\n </div>\n )}\n </div>\n )}\n\n {/* Table */}\n <Table\n {...tableProps}\n data={paginatedData}\n columns={columns}\n rowKey={rowKey}\n emptyText={emptyText}\n {...(sortColumn && {\n sortColumn,\n sortDirection,\n })}\n onSort={handleSort}\n {...(showPagination && {\n pagination: {\n current: currentPage,\n pageSize: pageSize,\n total:\n isControlledPagination && totalItems !== undefined\n ? totalItems\n : sortedData.length,\n onChange: handlePageChange,\n showSizeChanger: true,\n },\n })}\n />\n\n {/* Results Summary */}\n {showPagination &&\n (isControlledPagination && totalItems !== undefined\n ? totalItems > 0\n : sortedData.length > 0) && (\n <div className=\"mt-2 px-4 py-2 text-sm text-muted-foreground\">\n {isControlledPagination && totalItems !== undefined ? (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, totalItems)} of {totalItems}{\" \"}\n results\n {searchTerm && \" (filtered)\"}\n </>\n ) : (\n <>\n Showing {(currentPage - 1) * pageSize + 1} to{\" \"}\n {Math.min(currentPage * pageSize, sortedData.length)} of{\" \"}\n {sortedData.length} results\n {searchTerm && ` (filtered from ${initialData.length} total)`}\n </>\n )}\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = \"DataTable\";\n\n// Memoize DataTable for performance optimization\n// DataTable is a complex component with filtering, sorting, and pagination\nexport const DataTableMemoized = memo(DataTable) as typeof DataTable;\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import r from'react';import {ResponsiveContainer,PieChart,Pie,Cell,Tooltip,Legend,AreaChart,CartesianGrid,XAxis,YAxis,Area,BarChart,Bar,LineChart,Line}from'recharts';import {cva}from'class-variance-authority';var U=cva("w-full",{variants:{variant:{default:"",minimal:"",detailed:""},size:{sm:"h-48",md:"h-64",lg:"h-96",xl:"h-[500px]"}},defaultVariants:{variant:"default",size:"md"}}),s=["hsl(var(--nostromo-color-brand-500))","hsl(var(--nostromo-color-info-500))","hsl(var(--nostromo-color-success-500))","hsl(var(--nostromo-color-warning-500))","hsl(var(--nostromo-color-error-500))","hsl(var(--nostromo-color-brand-300))","hsl(var(--nostromo-color-info-700))","hsl(var(--nostromo-color-success-700))"],g=({active:u,payload:t,label:i})=>u&&t&&t.length?r.createElement("div",{className:"rounded-lg border border-border bg-popover p-3 shadow-lg"},r.createElement("p",{className:"mb-2 font-semibold text-popover-foreground"},String(i??"")),t.map((m,n)=>r.createElement("p",{key:n,className:"text-sm",style:{color:m.color}},`${m.name??""}: ${m.value??""}`))):null,v=({payload:u})=>r.createElement("div",{className:"mt-4 flex flex-wrap justify-center gap-4"},u?.map((t,i)=>r.createElement("div",{key:i,className:"flex items-center gap-2"},r.createElement("div",{className:"h-3 w-3 rounded",style:{backgroundColor:t.color},"aria-hidden":"true"}),r.createElement("span",{className:"text-sm text-popover-foreground"},t.value)))),w=r.forwardRef(({type:u,data:t,dataKeys:i,xAxisKey:m="name",colors:n=s,showGrid:C=true,showLegend:h=true,showTooltip:d=true,title:b,description:N,className:z,variant:A,size:p,height:K,ariaLabel:T,ariaLabelledBy:V,strokeWidth:D=2,fillOpacity:B=.6,...I},j)=>{let L=K||(p==="sm"?192:p==="lg"?384:p==="xl"?500:256),H=()=>{if(typeof window>"u")return r.createElement("div",{className:"flex items-center justify-center h-full text-muted-foreground"},r.createElement("p",null,"Chart loading..."));let y={data:t,margin:{top:5,right:5,left:5,bottom:5}};switch(u){case "line":return r.createElement(LineChart,{...y},C&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Line,{key:e,type:"monotone",dataKey:e,stroke:l,strokeWidth:D,dot:{r:4,fill:l},activeDot:{r:6}})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "bar":return r.createElement(BarChart,{...y},C&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Bar,{key:e,dataKey:e,fill:l,radius:[4,4,0,0]})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "area":return r.createElement(AreaChart,{...y},C&&r.createElement(CartesianGrid,{strokeDasharray:"3 3",stroke:"hsl(var(--nostromo-color-neutral-300))"}),r.createElement(XAxis,{dataKey:m,stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),r.createElement(YAxis,{stroke:"hsl(var(--nostromo-color-neutral-600))",tick:{fill:"hsl(var(--nostromo-color-neutral-700))",fontSize:12}}),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),i.map((e,a)=>{let o=a%n.length,l=n[o]??s[o%s.length];return r.createElement(Area,{key:e,type:"monotone",dataKey:e,stroke:l,fill:l,fillOpacity:B,strokeWidth:D})}),h&&r.createElement(Legend,{content:r.createElement(v,null)}));case "pie":{let e=i[0]||"value";return r.createElement(PieChart,null,r.createElement(Pie,{data:t,dataKey:e,nameKey:m,cx:"50%",cy:"50%",outerRadius:L/4,label:a=>`${a.name??""}: ${((a.percent??0)*100).toFixed(0)}%`},t.map((a,o)=>{let l=n[o%n.length]||s[o%s.length];return r.createElement(Cell,{key:`cell-${o}`,fill:l??"#8884d8"})})),d&&r.createElement(Tooltip,{content:r.createElement(g,null)}),h&&r.createElement(Legend,{content:r.createElement(v,null)}))}default:return null}};return r.createElement("div",{ref:j,className:a(U({variant:A,size:p}),z),role:"img","aria-label":T||b||`${u} chart`,"aria-labelledby":V,...I},b&&r.createElement("h3",{className:"mb-2 text-lg font-semibold text-foreground"},b),N&&r.createElement("p",{className:"mb-4 text-sm text-muted-foreground"},N),r.createElement(ResponsiveContainer,{width:"100%",height:L},H()))});w.displayName="Chart";var tr=a$1(w);export{U as a,tr as b};//# sourceMappingURL=chunk-XLZJ6HBL.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-XLZJ6HBL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/charts.tsx"],"names":["chartContainerVariants","cva","defaultColors","CustomTooltip","active","payload","label","React","entry","index","CustomLegend","ChartComponent","type","data","dataKeys","xAxisKey","colors","showGrid","showLegend","showTooltip","title","description","className","variant","size","height","ariaLabel","ariaLabelledBy","strokeWidth","fillOpacity","props","ref","chartHeight","renderChart","commonProps","LineChart","CartesianGrid","XAxis","YAxis","Tooltip","key","colorIndex","color","Line","Legend","BarChart","Bar","AreaChart","Area","pieDataKey","PieChart","Pie","fillColor","Cell","cn","ResponsiveContainer","Chart","memo"],"mappings":"gSAuBA,IAAMA,CAAAA,CAAyBC,IAAI,QAAA,CAAU,CAC3C,SAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,EAAA,CACT,OAAA,CAAS,GACT,QAAA,CAAU,EACZ,EACA,IAAA,CAAM,CACJ,GAAI,MAAA,CACJ,EAAA,CAAI,MAAA,CACJ,EAAA,CAAI,MAAA,CACJ,EAAA,CAAI,WACN,CACF,CAAA,CACA,gBAAiB,CACf,OAAA,CAAS,UACT,IAAA,CAAM,IACR,CACF,CAAC,CAAA,CAiCKC,CAAAA,CAAgB,CAIpB,sCAAA,CACA,qCAAA,CACA,yCACA,wCAAA,CACA,sCAAA,CACA,uCACA,qCAAA,CACA,wCACF,CAAA,CAaMC,CAAAA,CAAgB,CAAC,CAAE,OAAAC,CAAAA,CAAQ,OAAA,CAAAC,EAAS,KAAA,CAAAC,CAAM,IAC1CF,CAAAA,EAAUC,CAAAA,EAAWA,CAAAA,CAAQ,MAAA,CAE7BE,CAAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,0DAAA,CAAA,CACbA,EAAA,aAAA,CAAC,GAAA,CAAA,CAAE,UAAU,4CAAA,CAAA,CACV,MAAA,CAAOD,CAAAA,EAAS,EAAE,CACrB,CAAA,CACCD,EAAQ,GAAA,CAAI,CAACG,EAAOC,CAAAA,GACnBF,CAAAA,CAAA,cAAC,GAAA,CAAA,CAAE,GAAA,CAAKE,CAAAA,CAAO,SAAA,CAAU,SAAA,CAAU,KAAA,CAAO,CAAE,KAAA,CAAOD,CAAAA,CAAM,KAAM,CAAA,CAAA,CAC5D,CAAA,EAAGA,EAAM,IAAA,EAAQ,EAAE,CAAA,EAAA,EAAKA,CAAAA,CAAM,KAAA,EAAS,EAAE,EAC5C,CACD,CACH,EAGG,IAAA,CAWHE,CAAAA,CAAe,CAAC,CAAE,OAAA,CAAAL,CAAQ,CAAA,GAE5BE,CAAAA,CAAA,aAAA,CAAC,OAAI,SAAA,CAAU,0CAAA,CAAA,CACZF,GAAS,GAAA,CAAI,CAACG,EAAOC,CAAAA,GACpBF,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,GAAA,CAAKE,CAAAA,CAAO,UAAU,yBAAA,CAAA,CACzBF,CAAAA,CAAA,cAAC,KAAA,CAAA,CACC,SAAA,CAAU,kBACV,KAAA,CAAO,CAAE,eAAA,CAAiBC,CAAAA,CAAM,KAAM,CAAA,CACtC,cAAY,MAAA,CACd,CAAA,CACAD,EAAA,aAAA,CAAC,MAAA,CAAA,CAAK,UAAU,iCAAA,CAAA,CAAmCC,CAAAA,CAAM,KAAM,CACjE,CACD,CACH,EAIEG,CAAAA,CAAiBJ,CAAAA,CAAM,WAC3B,CACE,CACE,KAAAK,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,EAAW,MAAA,CACX,MAAA,CAAAC,EAASd,CAAAA,CACT,QAAA,CAAAe,EAAW,IAAA,CACX,UAAA,CAAAC,CAAAA,CAAa,IAAA,CACb,WAAA,CAAAC,CAAAA,CAAc,KACd,KAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,OAAA,CAAAC,CAAAA,CACA,IAAA,CAAAC,CAAAA,CACA,MAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,cAAA,CAAAC,EACA,WAAA,CAAAC,CAAAA,CAAc,EACd,WAAA,CAAAC,CAAAA,CAAc,EAAA,CACd,GAAGC,CACL,CAAA,CACAC,IACG,CACH,IAAMC,EACJP,CAAAA,GACCD,CAAAA,GAAS,KAAO,GAAA,CAAMA,CAAAA,GAAS,IAAA,CAAO,GAAA,CAAMA,CAAAA,GAAS,IAAA,CAAO,IAAM,GAAA,CAAA,CAE/DS,CAAAA,CAAc,IAAM,CAExB,GAAI,OAAO,MAAA,CAAW,GAAA,CACpB,OACE1B,CAAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CAAI,UAAU,+DAAA,CAAA,CACbA,CAAAA,CAAA,cAAC,GAAA,CAAA,IAAA,CAAE,kBAAgB,CACrB,CAAA,CAIJ,IAAM2B,CAAAA,CAAc,CAClB,IAAA,CAAArB,CAAAA,CACA,OAAQ,CAAE,GAAA,CAAK,EAAG,KAAA,CAAO,CAAA,CAAG,KAAM,CAAA,CAAG,MAAA,CAAQ,CAAE,CACjD,CAAA,CAEA,OAAQD,GACN,KAAK,OACH,OACEL,CAAAA,CAAA,cAAC4B,SAAAA,CAAA,CAAW,GAAGD,CAAAA,CAAAA,CACZjB,CAAAA,EACCV,CAAAA,CAAA,cAAC6B,aAAAA,CAAA,CACC,gBAAgB,KAAA,CAChB,MAAA,CAAO,yCACT,CAAA,CAEF7B,CAAAA,CAAA,aAAA,CAAC8B,KAAAA,CAAA,CACC,OAAA,CAAStB,EACT,MAAA,CAAO,wCAAA,CACP,KAAM,CACJ,IAAA,CAAM,yCACN,QAAA,CAAU,EACZ,CAAA,CACF,CAAA,CACAR,CAAAA,CAAA,aAAA,CAAC+B,MAAA,CACC,MAAA,CAAO,yCACP,IAAA,CAAM,CACJ,KAAM,wCAAA,CACN,QAAA,CAAU,EACZ,CAAA,CACF,CAAA,CACCnB,CAAAA,EAAeZ,EAAA,aAAA,CAACgC,OAAAA,CAAA,CAAQ,OAAA,CAAShC,CAAAA,CAAA,cAACJ,CAAAA,CAAA,IAAc,CAAA,CAAI,CAAA,CACpDW,CAAAA,CAAS,GAAA,CAAI,CAAC0B,CAAAA,CAAK/B,CAAAA,GAAU,CAC5B,IAAMgC,CAAAA,CAAahC,EAAQO,CAAAA,CAAO,MAAA,CAC5B0B,CAAAA,CAAS1B,CAAAA,CAAOyB,CAAU,CAAA,EAC9BvC,EAAcuC,CAAAA,CAAavC,CAAAA,CAAc,MAAM,CAAA,CACjD,OACEK,EAAA,aAAA,CAACoC,IAAAA,CAAA,CACC,GAAA,CAAKH,CAAAA,CACL,IAAA,CAAK,WACL,OAAA,CAASA,CAAAA,CACT,OAAQE,CAAAA,CACR,WAAA,CAAad,EACb,GAAA,CAAK,CAAE,CAAA,CAAG,CAAA,CAAG,IAAA,CAAMc,CAAM,EACzB,SAAA,CAAW,CAAE,CAAA,CAAG,CAAE,CAAA,CACpB,CAEJ,CAAC,CAAA,CACAxB,CAAAA,EAAcX,CAAAA,CAAA,aAAA,CAACqC,MAAAA,CAAA,CAAO,QAASrC,CAAAA,CAAA,aAAA,CAACG,EAAA,IAAa,CAAA,CAAI,CACpD,CAAA,CAGJ,KAAK,KAAA,CACH,OACEH,CAAAA,CAAA,aAAA,CAACsC,SAAA,CAAU,GAAGX,GACXjB,CAAAA,EACCV,CAAAA,CAAA,cAAC6B,aAAAA,CAAA,CACC,eAAA,CAAgB,KAAA,CAChB,MAAA,CAAO,wCAAA,CACT,EAEF7B,CAAAA,CAAA,aAAA,CAAC8B,MAAA,CACC,OAAA,CAAStB,EACT,MAAA,CAAO,wCAAA,CACP,IAAA,CAAM,CACJ,IAAA,CAAM,wCAAA,CACN,SAAU,EACZ,CAAA,CACF,EACAR,CAAAA,CAAA,aAAA,CAAC+B,MAAA,CACC,MAAA,CAAO,wCAAA,CACP,IAAA,CAAM,CACJ,IAAA,CAAM,yCACN,QAAA,CAAU,EACZ,EACF,CAAA,CACCnB,CAAAA,EAAeZ,EAAA,aAAA,CAACgC,OAAAA,CAAA,CAAQ,OAAA,CAAShC,CAAAA,CAAA,aAAA,CAACJ,EAAA,IAAc,CAAA,CAAI,EACpDW,CAAAA,CAAS,GAAA,CAAI,CAAC0B,CAAAA,CAAK/B,CAAAA,GAAU,CAC5B,IAAMgC,CAAAA,CAAahC,CAAAA,CAAQO,EAAO,MAAA,CAC5B0B,CAAAA,CAAS1B,EAAOyB,CAAU,CAAA,EAC9BvC,EAAcuC,CAAAA,CAAavC,CAAAA,CAAc,MAAM,CAAA,CACjD,OACEK,CAAAA,CAAA,cAACuC,GAAAA,CAAA,CACC,IAAKN,CAAAA,CACL,OAAA,CAASA,EACT,IAAA,CAAME,CAAAA,CACN,MAAA,CAAQ,CAAC,CAAA,CAAG,CAAA,CAAG,EAAG,CAAC,CAAA,CACrB,CAEJ,CAAC,CAAA,CACAxB,GAAcX,CAAAA,CAAA,aAAA,CAACqC,MAAAA,CAAA,CAAO,OAAA,CAASrC,CAAAA,CAAA,cAACG,CAAAA,CAAA,IAAa,EAAI,CACpD,CAAA,CAGJ,KAAK,MAAA,CACH,OACEH,CAAAA,CAAA,aAAA,CAACwC,SAAAA,CAAA,CAAW,GAAGb,CAAAA,CAAAA,CACZjB,CAAAA,EACCV,EAAA,aAAA,CAAC6B,aAAAA,CAAA,CACC,eAAA,CAAgB,KAAA,CAChB,MAAA,CAAO,wCAAA,CACT,CAAA,CAEF7B,CAAAA,CAAA,cAAC8B,KAAAA,CAAA,CACC,QAAStB,CAAAA,CACT,MAAA,CAAO,yCACP,IAAA,CAAM,CACJ,IAAA,CAAM,wCAAA,CACN,QAAA,CAAU,EACZ,EACF,CAAA,CACAR,CAAAA,CAAA,cAAC+B,KAAAA,CAAA,CACC,OAAO,wCAAA,CACP,IAAA,CAAM,CACJ,IAAA,CAAM,wCAAA,CACN,QAAA,CAAU,EACZ,CAAA,CACF,CAAA,CACCnB,GAAeZ,CAAAA,CAAA,aAAA,CAACgC,QAAA,CAAQ,OAAA,CAAShC,CAAAA,CAAA,aAAA,CAACJ,CAAAA,CAAA,IAAc,EAAI,CAAA,CACpDW,CAAAA,CAAS,IAAI,CAAC0B,CAAAA,CAAK/B,IAAU,CAC5B,IAAMgC,CAAAA,CAAahC,CAAAA,CAAQO,CAAAA,CAAO,MAAA,CAC5B0B,EAAS1B,CAAAA,CAAOyB,CAAU,CAAA,EAC9BvC,CAAAA,CAAcuC,CAAAA,CAAavC,CAAAA,CAAc,MAAM,CAAA,CACjD,OACEK,CAAAA,CAAA,aAAA,CAACyC,IAAAA,CAAA,CACC,IAAKR,CAAAA,CACL,IAAA,CAAK,WACL,OAAA,CAASA,CAAAA,CACT,OAAQE,CAAAA,CACR,IAAA,CAAMA,CAAAA,CACN,WAAA,CAAab,CAAAA,CACb,WAAA,CAAaD,EACf,CAEJ,CAAC,EACAV,CAAAA,EAAcX,CAAAA,CAAA,cAACqC,MAAAA,CAAA,CAAO,OAAA,CAASrC,CAAAA,CAAA,aAAA,CAACG,CAAAA,CAAA,IAAa,CAAA,CAAI,CACpD,EAGJ,KAAK,KAAA,CAAO,CACV,IAAMuC,CAAAA,CAAanC,CAAAA,CAAS,CAAC,CAAA,EAAK,OAAA,CAClC,OACEP,CAAAA,CAAA,aAAA,CAAC2C,SAAA,IAAA,CACC3C,CAAAA,CAAA,cAAC4C,GAAAA,CAAA,CACC,IAAA,CAAMtC,CAAAA,CACN,OAAA,CAASoC,CAAAA,CACT,QAASlC,CAAAA,CACT,EAAA,CAAG,MACH,EAAA,CAAG,KAAA,CACH,YAAaiB,CAAAA,CAAc,CAAA,CAC3B,KAAA,CAAQF,CAAAA,EACN,CAAA,EAAGA,CAAAA,CAAM,MAAQ,EAAE,CAAA,EAAA,EAAA,CAAA,CAAOA,EAAM,OAAA,EAAW,CAAA,EAAK,KAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,CAAA,CAAA,CAGhEjB,CAAAA,CAAK,GAAA,CAAI,CAACL,CAAAA,CAAOC,CAAAA,GAAU,CAC1B,IAAM2C,CAAAA,CACJpC,EAAOP,CAAAA,CAAQO,CAAAA,CAAO,MAAM,CAAA,EAC5Bd,CAAAA,CAAcO,CAAAA,CAAQP,EAAc,MAAM,CAAA,CAC5C,OACEK,CAAAA,CAAA,aAAA,CAAC8C,KAAA,CAAK,GAAA,CAAK,CAAA,KAAA,EAAQ5C,CAAK,CAAA,CAAA,CAAI,IAAA,CAAM2C,GAAa,SAAA,CAAW,CAE9D,CAAC,CACH,CAAA,CACCjC,GAAeZ,CAAAA,CAAA,aAAA,CAACgC,OAAAA,CAAA,CAAQ,OAAA,CAAShC,CAAAA,CAAA,cAACJ,CAAAA,CAAA,IAAc,EAAI,CAAA,CACpDe,CAAAA,EAAcX,EAAA,aAAA,CAACqC,MAAAA,CAAA,CAAO,OAAA,CAASrC,CAAAA,CAAA,aAAA,CAACG,EAAA,IAAa,CAAA,CAAI,CACpD,CAEJ,CAEA,QACE,OAAO,IACX,CACF,CAAA,CAEA,OACEH,CAAAA,CAAA,cAAC,KAAA,CAAA,CACC,GAAA,CAAKwB,EACL,SAAA,CAAWuB,CAAAA,CAAGtD,EAAuB,CAAE,OAAA,CAAAuB,CAAAA,CAAS,IAAA,CAAAC,CAAK,CAAC,EAAGF,CAAS,CAAA,CAClE,KAAK,KAAA,CACL,YAAA,CAAYI,GAAaN,CAAAA,EAAS,CAAA,EAAGR,CAAI,CAAA,MAAA,CAAA,CACzC,iBAAA,CAAiBe,CAAAA,CAChB,GAAGG,CAAAA,CAAAA,CAEHV,CAAAA,EACCb,EAAA,aAAA,CAAC,IAAA,CAAA,CAAG,UAAU,4CAAA,CAAA,CACXa,CACH,CAAA,CAEDC,CAAAA,EACCd,CAAAA,CAAA,aAAA,CAAC,KAAE,SAAA,CAAU,oCAAA,CAAA,CAAsCc,CAAY,CAAA,CAEjEd,CAAAA,CAAA,cAACgD,mBAAAA,CAAA,CAAoB,KAAA,CAAM,MAAA,CAAO,MAAA,CAAQvB,CAAAA,CAAAA,CACvCC,GACH,CACF,CAEJ,CACF,EAEAtB,CAAAA,CAAe,YAAc,OAAA,CAItB,IAAM6C,EAAAA,CAAQC,GAAAA,CAAK9C,CAAc","file":"chunk-XLZJ6HBL.js","sourcesContent":["import React from \"react\";\nimport {\n LineChart,\n Line,\n BarChart,\n Bar,\n PieChart,\n Pie,\n AreaChart,\n Area,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n Cell,\n} from \"recharts\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Chart container variants\nconst chartContainerVariants = cva(\"w-full\", {\n variants: {\n variant: {\n default: \"\",\n minimal: \"\",\n detailed: \"\",\n },\n size: {\n sm: \"h-48\",\n md: \"h-64\",\n lg: \"h-96\",\n xl: \"h-[500px]\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n});\n\nexport type ChartType = \"line\" | \"bar\" | \"pie\" | \"area\";\n\nexport interface ChartDataPoint {\n name: string;\n [key: string]: string | number;\n}\n\nexport interface ChartProps extends VariantProps<\n typeof chartContainerVariants\n> {\n type: ChartType;\n data: ChartDataPoint[];\n dataKeys: string[];\n xAxisKey?: string;\n colors?: (string | undefined)[];\n showGrid?: boolean;\n showLegend?: boolean;\n showTooltip?: boolean;\n title?: string;\n description?: string;\n className?: string;\n height?: number;\n // Accessibility\n ariaLabel?: string;\n ariaLabelledBy?: string;\n // Styling\n strokeWidth?: number;\n fillOpacity?: number;\n}\n\n// Default color palette matching Nostromo theme\nconst defaultColors = [\n // Ordered for distinguishability. It used to open with brand-500 and\n // brand-600 - two neighbouring shades of the same purple - so a two-series\n // chart was two near-identical lines. Distinct hues first, brand variants last.\n \"hsl(var(--nostromo-color-brand-500))\",\n \"hsl(var(--nostromo-color-info-500))\",\n \"hsl(var(--nostromo-color-success-500))\",\n \"hsl(var(--nostromo-color-warning-500))\",\n \"hsl(var(--nostromo-color-error-500))\",\n \"hsl(var(--nostromo-color-brand-300))\",\n \"hsl(var(--nostromo-color-info-700))\",\n \"hsl(var(--nostromo-color-success-700))\",\n];\n\n// Custom tooltip component with Tailwind styling\ninterface CustomTooltipProps {\n active?: boolean;\n payload?: Array<{\n name?: string;\n value?: number | string;\n color?: string;\n }>;\n label?: string | number;\n}\n\nconst CustomTooltip = ({ active, payload, label }: CustomTooltipProps) => {\n if (active && payload && payload.length) {\n return (\n <div className=\"rounded-lg border border-border bg-popover p-3 shadow-lg\">\n <p className=\"mb-2 font-semibold text-popover-foreground\">\n {String(label ?? \"\")}\n </p>\n {payload.map((entry, index: number) => (\n <p key={index} className=\"text-sm\" style={{ color: entry.color }}>\n {`${entry.name ?? \"\"}: ${entry.value ?? \"\"}`}\n </p>\n ))}\n </div>\n );\n }\n return null;\n};\n\n// Custom legend component with Tailwind styling\ninterface CustomLegendProps {\n payload?: Array<{\n value?: string;\n color?: string;\n }>;\n}\n\nconst CustomLegend = ({ payload }: CustomLegendProps) => {\n return (\n <div className=\"mt-4 flex flex-wrap justify-center gap-4\">\n {payload?.map((entry, index: number) => (\n <div key={index} className=\"flex items-center gap-2\">\n <div\n className=\"h-3 w-3 rounded\"\n style={{ backgroundColor: entry.color }}\n aria-hidden=\"true\"\n />\n <span className=\"text-sm text-popover-foreground\">{entry.value}</span>\n </div>\n ))}\n </div>\n );\n};\n\nconst ChartComponent = React.forwardRef<HTMLDivElement, ChartProps>(\n (\n {\n type,\n data,\n dataKeys,\n xAxisKey = \"name\",\n colors = defaultColors,\n showGrid = true,\n showLegend = true,\n showTooltip = true,\n title,\n description,\n className,\n variant,\n size,\n height,\n ariaLabel,\n ariaLabelledBy,\n strokeWidth = 2,\n fillOpacity = 0.6,\n ...props\n },\n ref,\n ) => {\n const chartHeight =\n height ||\n (size === \"sm\" ? 192 : size === \"lg\" ? 384 : size === \"xl\" ? 500 : 256);\n\n const renderChart = () => {\n // SSR guard: recharts requires browser environment\n if (typeof window === \"undefined\") {\n return (\n <div className=\"flex items-center justify-center h-full text-muted-foreground\">\n <p>Chart loading...</p>\n </div>\n );\n }\n\n const commonProps = {\n data,\n margin: { top: 5, right: 5, left: 5, bottom: 5 },\n };\n\n switch (type) {\n case \"line\":\n return (\n <LineChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Line\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n strokeWidth={strokeWidth}\n dot={{ r: 4, fill: color }}\n activeDot={{ r: 6 }}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </LineChart>\n );\n\n case \"bar\":\n return (\n <BarChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Bar\n key={key}\n dataKey={key}\n fill={color}\n radius={[4, 4, 0, 0]}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </BarChart>\n );\n\n case \"area\":\n return (\n <AreaChart {...commonProps}>\n {showGrid && (\n <CartesianGrid\n strokeDasharray=\"3 3\"\n stroke=\"hsl(var(--nostromo-color-neutral-300))\"\n />\n )}\n <XAxis\n dataKey={xAxisKey}\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n <YAxis\n stroke=\"hsl(var(--nostromo-color-neutral-600))\"\n tick={{\n fill: \"hsl(var(--nostromo-color-neutral-700))\",\n fontSize: 12,\n }}\n />\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {dataKeys.map((key, index) => {\n const colorIndex = index % colors.length;\n const color = (colors[colorIndex] ??\n defaultColors[colorIndex % defaultColors.length]) as string;\n return (\n <Area\n key={key}\n type=\"monotone\"\n dataKey={key}\n stroke={color}\n fill={color}\n fillOpacity={fillOpacity}\n strokeWidth={strokeWidth}\n />\n );\n })}\n {showLegend && <Legend content={<CustomLegend />} />}\n </AreaChart>\n );\n\n case \"pie\": {\n const pieDataKey = dataKeys[0] || \"value\";\n return (\n <PieChart>\n <Pie\n data={data}\n dataKey={pieDataKey}\n nameKey={xAxisKey}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={chartHeight / 4}\n label={(props: { name?: string; percent?: number }) =>\n `${props.name ?? \"\"}: ${((props.percent ?? 0) * 100).toFixed(0)}%`\n }\n >\n {data.map((entry, index) => {\n const fillColor =\n colors[index % colors.length] ||\n defaultColors[index % defaultColors.length];\n return (\n <Cell key={`cell-${index}`} fill={fillColor ?? \"#8884d8\"} />\n );\n })}\n </Pie>\n {showTooltip && <Tooltip content={<CustomTooltip />} />}\n {showLegend && <Legend content={<CustomLegend />} />}\n </PieChart>\n );\n }\n\n default:\n return null;\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(chartContainerVariants({ variant, size }), className)}\n role=\"img\"\n aria-label={ariaLabel || title || `${type} chart`}\n aria-labelledby={ariaLabelledBy}\n {...props}\n >\n {title && (\n <h3 className=\"mb-2 text-lg font-semibold text-foreground\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mb-4 text-sm text-muted-foreground\">{description}</p>\n )}\n <ResponsiveContainer width=\"100%\" height={chartHeight}>\n {renderChart()}\n </ResponsiveContainer>\n </div>\n );\n },\n);\n\nChartComponent.displayName = \"Chart\";\n\n// Memoize Chart component for performance optimization\n// Charts are expensive to render, so memoization helps prevent unnecessary re-renders\nexport const Chart = memo(ChartComponent) as typeof ChartComponent;\n\nexport { chartContainerVariants };\n"]}
|
package/dist/chunk-XPIBRXTW.cjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'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 d=classVarianceAuthority.cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70 transition-all duration-200",{variants:{variant:{default:"text-foreground",muted:"text-muted-foreground",error:"text-destructive",success:"text-success-600",warning:"text-warning-600",info:"text-info-600"},size:{sm:"text-xs",default:"text-sm",lg:"text-base"},weight:{normal:"font-normal",medium:"font-medium",semibold:"font-semibold",bold:"font-bold"}},defaultVariants:{variant:"default",size:"default",weight:"medium"}}),m=e__namespace.forwardRef(({className:a,variant:r,size:o,weight:n,...i},l)=>e__namespace.createElement("label",{ref:l,className:chunkITRGJNWL_cjs.a(d({variant:r,size:o,weight:n}),a),...i}));m.displayName="Label";exports.a=d;exports.b=m;//# sourceMappingURL=chunk-XPIBRXTW.cjs.map
|
|
2
3
|
//# sourceMappingURL=chunk-XPIBRXTW.cjs.map
|
package/dist/chunk-XQUZ7DUN.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var d=cva("text-sm flex items-center gap-2 transition-all duration-200",{variants:{variant:{default:"text-destructive",inline:"text-destructive text-xs",subtle:"text-destructive/80",strong:"text-destructive font-semibold"},size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{variant:"default",size:"default"}}),f=e.forwardRef(({className:r,variant:a$1,size:s,children:i,...o},n)=>e.createElement("div",{ref:n,className:a(d({variant:a$1,size:s}),r),role:"alert","aria-live":"polite",...o},i));f.displayName="ErrorMessage";export{d as a,f as b};//# sourceMappingURL=chunk-XQUZ7DUN.js.map
|
|
2
3
|
//# sourceMappingURL=chunk-XQUZ7DUN.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a as a$1}from'./chunk-AC2JBXHQ.js';import*as a from'react';import {cva}from'class-variance-authority';var f=cva("shrink-0 bg-border",{variants:{orientation:{horizontal:"h-[1px] w-full",vertical:"w-[1px] self-stretch h-full"},variant:{default:"bg-border",muted:"bg-muted",subtle:"bg-muted/50"},size:{default:"",sm:"h-px",lg:"h-0.5"}},defaultVariants:{orientation:"horizontal",variant:"default",size:"default"}}),d=a.forwardRef(({className:o,orientation:t="horizontal",variant:i="default",size:n="default",decorative:r=true,...l},s)=>a.createElement("div",{ref:s,role:r?"none":"separator",...r?{}:{"aria-orientation":t||void 0},className:a$1(f({orientation:t,variant:i,size:n}),o),...l}));d.displayName="Separator";export{f as a,d as b};//# sourceMappingURL=chunk-XRVHMGMD.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-XRVHMGMD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/separator.tsx"],"names":["separatorVariants","cva","Separator","className","orientation","variant","size","decorative","props","ref","cn"],"mappings":"8GAIA,IAAMA,CAAAA,CAAoBC,GAAAA,CAAI,oBAAA,CAAsB,CAClD,QAAA,CAAU,CACR,WAAA,CAAa,CACX,UAAA,CAAY,gBAAA,CAMZ,QAAA,CAAU,6BACZ,EACA,OAAA,CAAS,CACP,OAAA,CAAS,WAAA,CACT,KAAA,CAAO,UAAA,CACP,OAAQ,aACV,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,EAAA,CACT,GAAI,MAAA,CACJ,EAAA,CAAI,OACN,CACF,CAAA,CACA,eAAA,CAAiB,CACf,WAAA,CAAa,YAAA,CACb,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CAAC,CAAA,CAUKC,CAAAA,CAAkB,CAAA,CAAA,UAAA,CACtB,CACE,CACE,UAAAC,CAAAA,CACA,WAAA,CAAAC,CAAAA,CAAc,YAAA,CACd,OAAA,CAAAC,CAAAA,CAAU,UACV,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,UAAA,CAAAC,CAAAA,CAAa,IAAA,CACb,GAAGC,CACL,CAAA,CACAC,CAAAA,GAGE,CAAA,CAAA,aAAA,CAAC,KAAA,CAAA,CACC,GAAA,CAAKA,EACL,IAAA,CAAMF,CAAAA,CAAa,MAAA,CAAS,WAAA,CAC3B,GAAIA,CAAAA,CACD,EAAC,CACD,CAAE,kBAAA,CAAoBH,CAAAA,EAAe,MAAU,CAAA,CACnD,UAAWM,GAAAA,CACTV,CAAAA,CAAkB,CAAE,WAAA,CAAAI,CAAAA,CAAa,OAAA,CAAAC,EAAS,IAAA,CAAAC,CAAK,CAAC,CAAA,CAChDH,CACF,CAAA,CACC,GAAGK,CAAAA,CACN,CAGN,EACAN,CAAAA,CAAU,WAAA,CAAc,WAAA","file":"chunk-XRVHMGMD.js","sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst separatorVariants = cva(\"shrink-0 bg-border\", {\n variants: {\n orientation: {\n horizontal: \"h-[1px] w-full\",\n // self-stretch, not just h-full: `height: 100%` against an auto-height\n // flex row resolves to nothing, and with the usual `items-center` the\n // item does not stretch either - so a vertical separator rendered 1px\n // wide and 0px tall, which looked like the prop did nothing at all.\n // Stretching fills the cross axis; h-full still covers non-flex parents.\n vertical: \"w-[1px] self-stretch h-full\",\n },\n variant: {\n default: \"bg-border\",\n muted: \"bg-muted\",\n subtle: \"bg-muted/50\",\n },\n size: {\n default: \"\",\n sm: \"h-px\",\n lg: \"h-0.5\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n variant: \"default\",\n size: \"default\",\n },\n});\n\nexport interface SeparatorProps\n extends\n Omit<React.HTMLAttributes<HTMLDivElement>, \"aria-orientation\">,\n VariantProps<typeof separatorVariants> {\n decorative?: boolean;\n \"aria-orientation\"?: \"horizontal\" | \"vertical\";\n}\n\nconst Separator = React.forwardRef<HTMLDivElement, SeparatorProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n variant = \"default\",\n size = \"default\",\n decorative = true,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n role={decorative ? \"none\" : \"separator\"}\n {...(decorative\n ? {}\n : { \"aria-orientation\": orientation || undefined })}\n className={cn(\n separatorVariants({ orientation, variant, size }),\n className,\n )}\n {...props}\n />\n );\n },\n);\nSeparator.displayName = \"Separator\";\n\nexport { Separator, separatorVariants };\n"]}
|
package/dist/chunk-YNSODGYK.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import*as e from'react';import {cva}from'class-variance-authority';var n=cva("relative flex shrink-0 overflow-hidden rounded-full transition-all duration-200 shadow-sm hover:shadow-md",{variants:{size:{sm:"h-8 w-8",default:"h-10 w-10",lg:"h-12 w-12",xl:"h-16 w-16"},variant:{default:"shadow-sm hover:shadow-md",elevated:"shadow-lg hover:shadow-xl",outline:"border-2 border-border shadow-sm hover:border-primary hover:shadow-md",filled:"bg-muted shadow-sm hover:shadow-md",interactive:"shadow-sm hover:shadow-md cursor-pointer hover:scale-105"}},defaultVariants:{size:"default",variant:"default"}}),u=e.forwardRef(({className:a$1,size:t,variant:r,src:s,alt:w,fallback:g,children:l,...m},d)=>{let[p,i]=e.useState(false);return e.useEffect(()=>{i(false);},[s]),l?e.createElement("div",{ref:d,className:a(n({size:t,variant:r}),a$1),...m},l):e.createElement("div",{ref:d,className:a(n({size:t,variant:r}),a$1),...m},s&&!p?e.createElement("img",{src:s,alt:w,className:"aspect-square h-full w-full object-cover",onError:()=>i(true)}):e.createElement("div",{className:"flex h-full w-full items-center justify-center rounded-full bg-muted text-sm font-medium text-muted-foreground"},g))});u.displayName="Avatar";var c=e.forwardRef(({className:a$1,...t},r)=>e.createElement("img",{ref:r,className:a("aspect-square h-full w-full object-cover",a$1),...t}));c.displayName="AvatarImage";var v=e.forwardRef(({className:a$1,...t},r)=>e.createElement("div",{ref:r,className:a("flex h-full w-full items-center justify-center rounded-full bg-muted text-sm font-medium text-muted-foreground",a$1),...t}));v.displayName="AvatarFallback";var h=a$1(u);h.Image=c;h.Fallback=v;export{n as a,c as b,v as c,h as d};//# sourceMappingURL=chunk-YNSODGYK.js.map
|
|
2
3
|
//# sourceMappingURL=chunk-YNSODGYK.js.map
|
package/dist/chunk-ZEJAFIOC.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import {a}from'./chunk-AC2JBXHQ.js';import*as t from'react';import*as e from'@radix-ui/react-tabs';import {cva}from'class-variance-authority';var f=cva("inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground transition-all duration-200 shadow-sm hover:shadow-md",{variants:{variant:{default:"bg-muted shadow-sm hover:shadow-md",outline:"border border-border bg-transparent shadow-sm hover:shadow-md",pills:"bg-transparent p-0 shadow-none",elevated:"bg-muted/50 shadow-md hover:shadow-lg",filled:"bg-muted shadow-sm hover:shadow-md"},size:{default:"h-10",sm:"h-8 text-sm",lg:"h-12 text-lg"}},defaultVariants:{variant:"default",size:"default"}}),m=cva("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:bg-muted/50",{variants:{variant:{default:"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm data-[state=active]:border-border",outline:"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:border-b-2 data-[state=active]:border-primary data-[state=active]:shadow-sm",pills:"data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm hover:bg-primary/10 hover:text-primary",elevated:"data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-md data-[state=active]:border-border",filled:"data-[state=active]:bg-muted data-[state=active]:text-foreground data-[state=active]:shadow-sm"},size:{default:"px-3 py-1.5 text-sm",sm:"px-2 py-1 text-xs",lg:"px-4 py-2 text-base"}},defaultVariants:{variant:"default",size:"default"}}),b=cva("mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 focus-visible:ring-offset-2 transition-all duration-200"),c=t.forwardRef(({className:a$1,...s},i)=>t.createElement(e.Root,{ref:i,className:a("w-full",a$1),...s}));c.displayName="Tabs";var p=t.forwardRef(({className:a$1,variant:s,size:i,...o},n)=>t.createElement(e.List,{ref:n,className:a(f({variant:s,size:i}),a$1),...o}));p.displayName="TabsList";var l=t.forwardRef(({className:a$1,variant:s,size:i,...o},n)=>t.createElement(e.Trigger,{ref:n,className:a(m({variant:s,size:i}),a$1),...o}));l.displayName="TabsTrigger";var v=t.forwardRef(({className:a$1,...s},i)=>t.createElement(e.Content,{ref:i,className:a(b(),a$1),...s}));v.displayName="TabsContent";export{f as a,m as b,b as c,c as d,p as e,l as f,v as g};//# sourceMappingURL=chunk-ZEJAFIOC.js.map
|
|
2
3
|
//# sourceMappingURL=chunk-ZEJAFIOC.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkMLSE5XSB_cjs=require('../../chunk-MLSE5XSB.cjs');require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});//# sourceMappingURL=accordion.cjs.map
|
|
2
3
|
//# sourceMappingURL=accordion.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'../../chunk-6QAYHUNV.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=accordion.js.map
|
|
2
3
|
//# sourceMappingURL=accordion.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkLXQT7FH6_cjs=require('../../chunk-LXQT7FH6.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});//# sourceMappingURL=alert.cjs.map
|
|
2
3
|
//# sourceMappingURL=alert.cjs.map
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const alertVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "error" | "default" | "success" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const alertTitleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const alertVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "error" | "default" | "success" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const alertTitleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'../../chunk-AHRTNKXE.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=alert.js.map
|
|
2
3
|
//# sourceMappingURL=alert.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkIOX4WPJL_cjs=require('../../chunk-IOX4WPJL.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});//# sourceMappingURL=avatar.cjs.map
|
|
2
3
|
//# sourceMappingURL=avatar.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkEFCNLYYW_cjs=require('../../chunk-EFCNLYYW.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});//# sourceMappingURL=badge.cjs.map
|
|
2
3
|
//# sourceMappingURL=badge.cjs.map
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const badgeVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "secondary" | "outline" | "destructive" | "success" | "
|
|
6
|
+
variant?: "error" | "default" | "secondary" | "outline" | "destructive" | "success" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
/**
|
|
@@ -37,7 +37,7 @@ interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<
|
|
|
37
37
|
* <Badge size="lg">Large</Badge>
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
declare function BadgeComponent({ className, variant, size, ...props }: BadgeProps): JSX.Element;
|
|
40
|
+
declare function BadgeComponent({ className, variant, size, ...props }: BadgeProps): React.JSX.Element;
|
|
41
41
|
declare const Badge: typeof BadgeComponent;
|
|
42
42
|
|
|
43
43
|
export { Badge, type BadgeProps, badgeVariants };
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const badgeVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "secondary" | "outline" | "destructive" | "success" | "
|
|
6
|
+
variant?: "error" | "default" | "secondary" | "outline" | "destructive" | "success" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
/**
|
|
@@ -37,7 +37,7 @@ interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<
|
|
|
37
37
|
* <Badge size="lg">Large</Badge>
|
|
38
38
|
* ```
|
|
39
39
|
*/
|
|
40
|
-
declare function BadgeComponent({ className, variant, size, ...props }: BadgeProps): JSX.Element;
|
|
40
|
+
declare function BadgeComponent({ className, variant, size, ...props }: BadgeProps): React.JSX.Element;
|
|
41
41
|
declare const Badge: typeof BadgeComponent;
|
|
42
42
|
|
|
43
43
|
export { Badge, type BadgeProps, badgeVariants };
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunk35RWQSO2_cjs=require('../../chunk-35RWQSO2.cjs');require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});//# sourceMappingURL=breadcrumb.cjs.map
|
|
2
3
|
//# sourceMappingURL=breadcrumb.cjs.map
|
|
@@ -7,7 +7,7 @@ declare const breadcrumbVariants: (props?: ({
|
|
|
7
7
|
separator?: "default" | "slash" | "arrow" | "dot" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const breadcrumbItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "link" | "default" | "current" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
declare const breadcrumbSeparatorVariants: (props?: ({
|
|
13
13
|
variant?: "default" | "compact" | null | undefined;
|
|
@@ -18,7 +18,13 @@ interface BreadcrumbEntry {
|
|
|
18
18
|
current?: boolean;
|
|
19
19
|
}
|
|
20
20
|
interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof breadcrumbVariants> {
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Data-driven mode. Omit it to compose `BreadcrumbList` / `BreadcrumbItem` /
|
|
23
|
+
* `BreadcrumbLink` as children instead - those sub-components were exported
|
|
24
|
+
* from the start but `items` was required, so the composable form every
|
|
25
|
+
* example used threw on `items.map`.
|
|
26
|
+
*/
|
|
27
|
+
items?: BreadcrumbEntry[];
|
|
22
28
|
separator?: "default" | "slash" | "arrow" | "dot";
|
|
23
29
|
showHome?: boolean;
|
|
24
30
|
homeHref?: string;
|
|
@@ -32,11 +38,11 @@ declare const BreadcrumbLink: React.ForwardRefExoticComponent<React.AnchorHTMLAt
|
|
|
32
38
|
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
33
39
|
declare const BreadcrumbPage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
|
|
34
40
|
declare const BreadcrumbSeparator: {
|
|
35
|
-
({ children, className, ...props }: React.ComponentProps<"li">): JSX.Element;
|
|
41
|
+
({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
36
42
|
displayName: string;
|
|
37
43
|
};
|
|
38
44
|
declare const BreadcrumbEllipsis: {
|
|
39
|
-
({ className, ...props }: React.ComponentProps<"span">): JSX.Element;
|
|
45
|
+
({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
40
46
|
displayName: string;
|
|
41
47
|
};
|
|
42
48
|
|
|
@@ -7,7 +7,7 @@ declare const breadcrumbVariants: (props?: ({
|
|
|
7
7
|
separator?: "default" | "slash" | "arrow" | "dot" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const breadcrumbItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "link" | "default" | "current" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
declare const breadcrumbSeparatorVariants: (props?: ({
|
|
13
13
|
variant?: "default" | "compact" | null | undefined;
|
|
@@ -18,7 +18,13 @@ interface BreadcrumbEntry {
|
|
|
18
18
|
current?: boolean;
|
|
19
19
|
}
|
|
20
20
|
interface BreadcrumbProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof breadcrumbVariants> {
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* Data-driven mode. Omit it to compose `BreadcrumbList` / `BreadcrumbItem` /
|
|
23
|
+
* `BreadcrumbLink` as children instead - those sub-components were exported
|
|
24
|
+
* from the start but `items` was required, so the composable form every
|
|
25
|
+
* example used threw on `items.map`.
|
|
26
|
+
*/
|
|
27
|
+
items?: BreadcrumbEntry[];
|
|
22
28
|
separator?: "default" | "slash" | "arrow" | "dot";
|
|
23
29
|
showHome?: boolean;
|
|
24
30
|
homeHref?: string;
|
|
@@ -32,11 +38,11 @@ declare const BreadcrumbLink: React.ForwardRefExoticComponent<React.AnchorHTMLAt
|
|
|
32
38
|
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
33
39
|
declare const BreadcrumbPage: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
|
|
34
40
|
declare const BreadcrumbSeparator: {
|
|
35
|
-
({ children, className, ...props }: React.ComponentProps<"li">): JSX.Element;
|
|
41
|
+
({ children, className, ...props }: React.ComponentProps<"li">): React.JSX.Element;
|
|
36
42
|
displayName: string;
|
|
37
43
|
};
|
|
38
44
|
declare const BreadcrumbEllipsis: {
|
|
39
|
-
({ className, ...props }: React.ComponentProps<"span">): JSX.Element;
|
|
45
|
+
({ className, ...props }: React.ComponentProps<"span">): React.JSX.Element;
|
|
40
46
|
displayName: string;
|
|
41
47
|
};
|
|
42
48
|
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'../../chunk-SVWQWRPZ.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=breadcrumb.js.map
|
|
2
3
|
//# sourceMappingURL=breadcrumb.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunk5PVFLXPO_cjs=require('../../chunk-5PVFLXPO.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.a}});//# sourceMappingURL=button.cjs.map
|
|
2
3
|
//# sourceMappingURL=button.cjs.map
|
|
@@ -3,9 +3,9 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const buttonVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" |
|
|
6
|
+
variant?: "link" | "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | "xl" | "icon" | null | undefined;
|
|
8
|
-
state?: "
|
|
8
|
+
state?: "error" | "default" | "loading" | "success" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
11
11
|
/**
|
|
@@ -3,9 +3,9 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const buttonVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" |
|
|
6
|
+
variant?: "link" | "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | "xl" | "icon" | null | undefined;
|
|
8
|
-
state?: "
|
|
8
|
+
state?: "error" | "default" | "loading" | "success" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
11
11
|
/**
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkJCETHQ55_cjs=require('../../chunk-JCETHQ55.cjs');require('../../chunk-5PVFLXPO.cjs'),require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.a}});//# sourceMappingURL=calendar.cjs.map
|
|
2
3
|
//# sourceMappingURL=calendar.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'../../chunk-35I2BJC3.js';import'../../chunk-AVTJE2O2.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=calendar.js.map
|
|
2
3
|
//# sourceMappingURL=calendar.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
'use strict';var chunkPMNNV4ML_cjs=require('../../chunk-PMNNV4ML.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"cardVariants",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.a}});//# sourceMappingURL=card.cjs.map
|
|
2
3
|
//# sourceMappingURL=card.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle,a as cardVariants}from'../../chunk-VD6S2PE4.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=card.js.map
|
|
2
3
|
//# sourceMappingURL=card.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkBZ5ZCZJX_cjs=require('../../chunk-BZ5ZCZJX.cjs');require('../../chunk-3QVQ2TNE.cjs'),require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});//# sourceMappingURL=charts-lazy.cjs.map
|
|
2
3
|
//# sourceMappingURL=charts-lazy.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{a as LazyChart}from'../../chunk-HRJXPCGF.js';import'../../chunk-QKM5LPRW.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=charts-lazy.js.map
|
|
2
3
|
//# sourceMappingURL=charts-lazy.js.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkWK6LNC2E_cjs=require('../../chunk-WK6LNC2E.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});//# sourceMappingURL=charts.cjs.map
|
|
2
3
|
//# sourceMappingURL=charts.cjs.map
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{b as Chart,a as chartContainerVariants}from'../../chunk-XLZJ6HBL.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=charts.js.map
|
|
2
3
|
//# sourceMappingURL=charts.js.map
|