@beyondcorp/beyond-ui 1.2.75 → 1.2.79

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.
@@ -1,14 +1,4 @@
1
1
  import type { DataTableProps } from "./DataTable.types";
2
- /**
3
- * DataTable
4
- *
5
- * All hooks (useState, useMemo, useCallback, etc.) MUST be called at the top level,
6
- * before any conditional returns (e.g., loading, invalid props).
7
- * This ensures compliance with React's rules of hooks and prevents hook errors.
8
- *
9
- * Defensive rendering: DataTable only renders if columns and dataSource are valid arrays.
10
- * If not, a fallback message is shown.
11
- */
12
2
  export declare const DataTable: {
13
3
  <T extends Record<string, any>>({ columns, dataSource, loading, rowKey, pagination, rowSelection, size, bordered, showHeader, title, footer, className, onSort, onFilter, onChange, ...props }: DataTableProps<T>): import("react/jsx-runtime").JSX.Element;
14
4
  displayName: string;
@@ -1,6 +1,6 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useCallback, useMemo } from 'react';
3
- import { ChevronUp, ChevronDown, ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight, Filter } from 'lucide-react';
3
+ import { ChevronUp, ChevronDown, Filter, ChevronsLeft, ChevronLeft, ChevronRight, ChevronsRight } from 'lucide-react';
4
4
  import { cva } from 'class-variance-authority';
5
5
  import { cn } from '../../utils/cn.js';
6
6
  import { Button } from '../Button/Button.js';
@@ -9,6 +9,7 @@ import { Checkbox } from '../Checkbox/Checkbox.js';
9
9
  import { Skeleton } from '../Skeleton/Skeleton.js';
10
10
  import { Card, CardContent } from '../Card/Card.js';
11
11
  import { useBreakpoint } from '../../hooks/useBreakpoint.js';
12
+ import { Select } from '../Select/Select.js';
12
13
 
13
14
  const tableVariants = cva("w-full border-collapse bg-white", {
14
15
  variants: {
@@ -90,20 +91,14 @@ const TablePagination = ({ pagination, onChange }) => {
90
91
  }
91
92
  return pages;
92
93
  };
93
- return (jsxs("div", { className: "flex items-center justify-between px-4 py-3 bg-white border-t border-gray-200", children: [jsxs("div", { className: "flex items-center space-x-4", children: [jsxs("span", { className: "text-sm text-gray-700", children: ["Showing ", startRecord, " to ", endRecord, " of ", total, " results"] }), showSizeChanger && (jsxs("div", { className: "flex items-center space-x-2", children: [jsx("span", { className: "text-sm text-gray-700", children: "Show" }), jsx("select", { value: pageSize, onChange: (e) => onChange(1, Number(e.target.value)), className: "border border-gray-300 rounded px-2 py-1 text-sm", children: pageSizeOptions.map(size => (jsx("option", { value: size, children: size }, size))) }), jsx("span", { className: "text-sm text-gray-700", children: "per page" })] }))] }), jsxs("div", { className: "flex items-center space-x-1", children: [jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(1, pageSize), disabled: current === 1, children: jsx(ChevronsLeft, { className: "h-4 w-4" }) }), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(current - 1, pageSize), disabled: current === 1, children: jsx(ChevronLeft, { className: "h-4 w-4" }) }), getPageNumbers().map(page => (jsx(Button, { variant: current === page ? "primary" : "ghost", size: "sm", onClick: () => onChange(page, pageSize), className: "min-w-[32px]", children: page }, page))), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(current + 1, pageSize), disabled: current === totalPages, children: jsx(ChevronRight, { className: "h-4 w-4" }) }), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(totalPages, pageSize), disabled: current === totalPages, children: jsx(ChevronsRight, { className: "h-4 w-4" }) })] })] }));
94
+ // Convert pageSizeOptions to SelectOption format
95
+ const selectOptions = pageSizeOptions.map(size => ({
96
+ label: String(size),
97
+ value: String(size),
98
+ }));
99
+ return (jsxs("div", { className: "flex items-center justify-between px-4 py-3 bg-background border-t border-border", children: [jsxs("div", { className: "flex items-center space-x-4", children: [jsxs("span", { className: "text-sm text-foreground", children: ["Showing ", startRecord, " to ", endRecord, " of ", total, " results"] }), showSizeChanger && (jsxs("div", { className: "flex items-center space-x-2", children: [jsx("span", { className: "text-sm text-foreground", children: "Show" }), jsx(Select, { options: selectOptions, value: String(pageSize), onChange: e => onChange(1, Number(e.target.value)), variant: "default", selectSize: "sm", "aria-label": "Select number of items per page" }), jsx("span", { className: "text-sm text-foreground", children: "per page" })] }))] }), jsxs("div", { className: "flex items-center space-x-1", children: [jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(1, pageSize), disabled: current === 1, "aria-label": "First page", children: jsx(ChevronsLeft, { className: "h-4 w-4" }) }), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(current - 1, pageSize), disabled: current === 1, "aria-label": "Previous page", children: jsx(ChevronLeft, { className: "h-4 w-4" }) }), getPageNumbers().map(page => (jsx(Button, { variant: current === page ? "primary" : "ghost", size: "sm", onClick: () => onChange(page, pageSize), className: "min-w-[32px]", "aria-label": `Go to page ${page}`, children: page }, page))), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(current + 1, pageSize), disabled: current === totalPages, "aria-label": "Next page", children: jsx(ChevronRight, { className: "h-4 w-4" }) }), jsx(Button, { variant: "ghost", size: "sm", onClick: () => onChange(totalPages, pageSize), disabled: current === totalPages, "aria-label": "Last page", children: jsx(ChevronsRight, { className: "h-4 w-4" }) })] })] }));
94
100
  };
95
- /**
96
- * DataTable
97
- *
98
- * All hooks (useState, useMemo, useCallback, etc.) MUST be called at the top level,
99
- * before any conditional returns (e.g., loading, invalid props).
100
- * This ensures compliance with React's rules of hooks and prevents hook errors.
101
- *
102
- * Defensive rendering: DataTable only renders if columns and dataSource are valid arrays.
103
- * If not, a fallback message is shown.
104
- */
105
101
  const DataTable = ({ columns, dataSource, loading = false, rowKey = 'id', pagination = { current: 1, pageSize: 10, total: 0 }, rowSelection, size = 'middle', bordered = false, showHeader = true, title, footer, className, onSort, onFilter, onChange, ...props }) => {
106
- // --- All hooks must be called before any conditional returns ---
107
102
  const [sortConfig, setSortConfig] = useState({ key: '', direction: null });
108
103
  const [filters, setFilters] = useState({});
109
104
  const [selectedRowKeys, setSelectedRowKeys] = useState(rowSelection?.selectedRowKeys || []);
@@ -222,51 +217,40 @@ const DataTable = ({ columns, dataSource, loading = false, rowKey = 'id', pagina
222
217
  // Selection state
223
218
  const isAllSelected = selectedRowKeys.length === dataSource.length && dataSource.length > 0;
224
219
  const isIndeterminate = selectedRowKeys.length > 0 && selectedRowKeys.length < dataSource.length;
225
- // Defensive: Only render DataTable if columns and dataSource are valid arrays
226
- const isTableReady = Array.isArray(columns) &&
227
- columns.length > 0 &&
228
- Array.isArray(dataSource);
229
- // Always run hooks first, then handle fallback UI after
230
- if (!isTableReady) {
231
- // Fallback: show error message if table is not ready
232
- return (jsx("div", { className: cn("w-full", className), children: jsx("div", { className: "p-4 text-center text-primary-600 bg-primary-50 rounded", children: "Invalid table setup" }) }));
233
- }
234
220
  if (loading) {
235
221
  return (jsxs("div", { className: cn("w-full", className), children: [title && jsx("div", { className: "mb-4", children: title() }), jsx("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: jsx("div", { className: "p-4 space-y-3", children: Array.from({ length: 5 }).map((_, i) => (jsxs("div", { className: "flex space-x-4", children: [jsx(Skeleton, { className: "h-4 w-8" }), jsx(Skeleton, { className: "h-4 flex-1" }), jsx(Skeleton, { className: "h-4 w-24" }), jsx(Skeleton, { className: "h-4 w-16" })] }, i))) }) })] }));
236
222
  }
237
223
  // Mobile-first responsive: useBreakpoint to switch between table and card layouts
238
224
  const { isBelow } = useBreakpoint();
239
- return (jsxs("div", { className: cn("w-full", className), children: [title && jsx("div", { className: "mb-4", children: title() }), jsx("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: isBelow('md') ? (
240
- // Card layout for mobile
241
- jsxs("div", { className: "space-y-4 p-2", children: [paginatedData.length === 0 ? (jsxs("div", { className: "text-gray-500 text-center py-8", children: [jsx("div", { className: "text-4xl mb-2", children: "\uD83D\uDCCB" }), jsx("div", { children: "No data available" })] })) : (paginatedData.map((record, index) => {
225
+ return (jsxs("div", { className: cn("w-full", className), children: [title && jsx("div", { className: "mb-4", children: title() }), jsxs("div", { className: "border border-gray-200 rounded-lg overflow-hidden", children: [isBelow('md') ? (jsx("div", { className: "space-y-4 p-2", children: paginatedData.length === 0 ? (jsxs("div", { className: "text-gray-500 text-center py-8", children: [jsx("div", { className: "text-4xl mb-2", children: "\uD83D\uDCCB" }), jsx("div", { children: "No data available" })] })) : (paginatedData.map((record, index) => {
242
226
  const key = getRowKey(record, index);
243
227
  const isSelected = selectedRowKeys.includes(key);
244
228
  return (jsx(Card, { variant: isSelected ? "elevated" : "default", padding: "sm", className: cn("transition-shadow", isSelected && "border-primary-600 shadow-lg"), children: jsxs(CardContent, { className: "space-y-2", children: [rowSelection && (jsxs("div", { className: "flex items-center mb-2", children: [jsx(Checkbox, { checked: isSelected, onChange: (e) => handleRowSelect(record, e.target.checked), ...rowSelection.getCheckboxProps?.(record) }), jsx("span", { className: "ml-2 text-xs text-gray-500", children: "Select" })] })), columns.map((column) => (jsxs("div", { className: "flex justify-between items-center py-1 border-b last:border-b-0", children: [jsx("span", { className: "font-medium text-gray-700", children: column.title }), jsx("span", { className: "text-gray-900", children: column.render
245
229
  ? column.render(record[column.dataIndex], record, index)
246
230
  : String(record[column.dataIndex] || '') })] }, column.key)))] }) }, key));
247
- })), currentPagination && (jsx("div", { className: "pt-2", children: jsx(TablePagination, { pagination: currentPagination, onChange: (page, pageSize) => {
248
- const newPagination = { ...currentPagination, current: page, pageSize };
249
- onChange?.(newPagination, filters, sortConfig);
250
- } }) }))] })) : (
251
- // Table layout for desktop/tablet
252
- jsx("div", { className: "overflow-x-auto", children: jsxs("table", { className: cn(tableVariants({ size, bordered })), children: [showHeader && (jsx("thead", { children: jsxs("tr", { children: [rowSelection && (jsx("th", { className: cn(cellVariants({ size, type: "header" }), "w-12"), children: rowSelection.type !== 'radio' && (jsx(Checkbox, { checked: isAllSelected, onChange: (e) => handleSelectAll(e.target.checked), className: cn(isIndeterminate && "indeterminate") })) })), columns.map((column) => (jsx("th", { className: cn(cellVariants({
253
- size,
254
- align: column.align,
255
- type: "header"
256
- }), column.width && `w-[${column.width}]`), children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center space-x-2", children: [jsx("span", { children: column.title }), column.sortable && (jsxs("button", { onClick: () => handleSort(column.key), className: "flex flex-col items-center hover:text-primary-600", children: [jsx(ChevronUp, { className: cn("h-3 w-3", sortConfig.key === column.key && sortConfig.direction === 'asc'
257
- ? "text-primary-600"
258
- : "text-gray-400") }), jsx(ChevronDown, { className: cn("h-3 w-3 -mt-1", sortConfig.key === column.key && sortConfig.direction === 'desc'
259
- ? "text-primary-600"
260
- : "text-gray-400") })] }))] }), jsx(ColumnFilter, { column: column, value: filters[column.key], onChange: (value) => handleFilter(column.key, value) })] }) }, column.key)))] }) })), jsx("tbody", { children: paginatedData.length === 0 ? (jsx("tr", { children: jsx("td", { colSpan: columns.length + (rowSelection ? 1 : 0), className: cn(cellVariants({ size, align: "center" }), "py-8"), children: jsxs("div", { className: "text-gray-500", children: [jsx("div", { className: "text-4xl mb-2", children: "\uD83D\uDCCB" }), jsx("div", { children: "No data available" })] }) }) })) : (paginatedData.map((record, index) => {
261
- const key = getRowKey(record, index);
262
- const isSelected = selectedRowKeys.includes(key);
263
- return (jsxs("tr", { className: cn("hover:bg-gray-50 transition-colors", isSelected && "bg-primary-50"), ...(props.onRow?.(record, index) ?? {}), children: [rowSelection && (jsx("td", { className: cn(cellVariants({ size })), children: jsx(Checkbox, { checked: isSelected, onChange: (e) => handleRowSelect(record, e.target.checked), ...rowSelection.getCheckboxProps?.(record) }) })), columns.map((column) => (jsx("td", { className: cn(cellVariants({
231
+ })) })) : (
232
+ // Table layout for desktop/tablet
233
+ jsx("div", { className: "overflow-x-auto", children: jsxs("table", { className: cn(tableVariants({ size, bordered })), children: [showHeader && (jsx("thead", { children: jsxs("tr", { children: [rowSelection && (jsx("th", { className: cn(cellVariants({ size, type: "header" }), "w-12"), children: rowSelection.type !== 'radio' && (jsx(Checkbox, { checked: isAllSelected, onChange: (e) => handleSelectAll(e.target.checked), className: cn(isIndeterminate && "indeterminate") })) })), columns.map((column) => (jsx("th", { className: cn(cellVariants({
264
234
  size,
265
- align: column.align
266
- })), children: column.render
267
- ? column.render(record[column.dataIndex], record, index)
268
- : String(record[column.dataIndex] || '') }, column.key)))] }, key));
269
- })) })] }) })) }), footer && jsx("div", { className: "mt-4", children: footer() })] }));
235
+ align: column.align,
236
+ type: "header"
237
+ }), column.width && `w-[${column.width}]`), children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center space-x-2", children: [jsx("span", { children: column.title }), column.sortable && (jsxs("button", { onClick: () => handleSort(column.key), className: "flex flex-col items-center hover:text-primary-600", children: [jsx(ChevronUp, { className: cn("h-3 w-3", sortConfig.key === column.key && sortConfig.direction === 'asc'
238
+ ? "text-primary-600"
239
+ : "text-gray-400") }), jsx(ChevronDown, { className: cn("h-3 w-3 -mt-1", sortConfig.key === column.key && sortConfig.direction === 'desc'
240
+ ? "text-primary-600"
241
+ : "text-gray-400") })] }))] }), jsx(ColumnFilter, { column: column, value: filters[column.key], onChange: (value) => handleFilter(column.key, value) })] }) }, column.key)))] }) })), jsx("tbody", { children: paginatedData.length === 0 ? (jsx("tr", { children: jsx("td", { colSpan: columns.length + (rowSelection ? 1 : 0), className: cn(cellVariants({ size, align: "center" }), "py-8"), children: jsxs("div", { className: "text-gray-500", children: [jsx("div", { className: "text-4xl mb-2", children: "\uD83D\uDCCB" }), jsx("div", { children: "No data available" })] }) }) })) : (paginatedData.map((record, index) => {
242
+ const key = getRowKey(record, index);
243
+ const isSelected = selectedRowKeys.includes(key);
244
+ return (jsxs("tr", { className: cn("hover:bg-gray-50 transition-colors", isSelected && "bg-primary-50"), ...(props.onRow?.(record, index) ?? {}), children: [rowSelection && (jsx("td", { className: cn(cellVariants({ size })), children: jsx(Checkbox, { checked: isSelected, onChange: (e) => handleRowSelect(record, e.target.checked), ...rowSelection.getCheckboxProps?.(record) }) })), columns.map((column) => (jsx("td", { className: cn(cellVariants({
245
+ size,
246
+ align: column.align
247
+ })), children: column.render
248
+ ? column.render(record[column.dataIndex], record, index)
249
+ : String(record[column.dataIndex] || '') }, column.key)))] }, key));
250
+ })) })] }) })), currentPagination && (jsx("div", { className: "pt-2", children: jsx(TablePagination, { pagination: currentPagination, onChange: (page, pageSize) => {
251
+ const newPagination = { ...currentPagination, current: page, pageSize };
252
+ onChange?.(newPagination, filters, sortConfig);
253
+ } }) }))] }), footer && jsx("div", { className: "mt-4", children: footer() })] }));
270
254
  };
271
255
  DataTable.displayName = "DataTable";
272
256
 
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["/**\n * DataTable Component (Beyond-UI)\n * \n * - All hooks (useState, useMemo, useCallback, etc.) MUST be called at the top level,\n * before any conditional returns (e.g., loading, invalid props).\n * - Defensive rendering: DataTable only renders if columns and dataSource are valid arrays.\n * If not, a fallback message is shown.\n * - This ensures compliance with React's rules of hooks and prevents hook errors,\n * even when loading state or props change dynamically.\n * - Usage pattern: Always provide valid arrays for columns and dataSource, or handle fallback.\n * \n * Example robust usage:\n * \n * {isTableReady ? (\n * <DataTable columns={columns} dataSource={dataSource} ... />\n * ) : (\n * <div>Loading table data...</div>\n * )}\n * \n * See tests/DataTable.test.tsx for coverage of loading, fallback, and hook safety.\n */\nimport * as React from \"react\";\nimport { useState, useMemo, useCallback } from \"react\";\nimport { \n ChevronUp, \n ChevronDown, \n Search, \n Filter, \n ChevronLeft, \n ChevronRight,\n ChevronsLeft,\n ChevronsRight,\n MoreHorizontal,\n Check,\n Minus\n} from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\nimport { Button } from \"../Button\";\nimport { Input } from \"../Input\";\nimport { Checkbox } from \"../Checkbox\";\nimport { Badge } from \"../Badge\";\nimport { Spinner } from \"../Spinner\";\nimport { Skeleton } from \"../Skeleton\";\nimport { Card, CardContent } from \"../Card\";\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\nimport type {\n DataTableProps,\n Column,\n FilterValue,\n SortConfig,\n PaginationConfig,\n RowSelection\n} from \"./DataTable.types\";\n\nconst tableVariants = cva(\n \"w-full border-collapse bg-white\",\n {\n variants: {\n size: {\n small: \"text-xs\",\n middle: \"text-sm\",\n large: \"text-base\",\n },\n bordered: {\n true: \"border border-gray-200\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"middle\",\n bordered: false,\n },\n }\n);\n\nconst cellVariants = cva(\n \"border-b border-gray-200 transition-colors\",\n {\n variants: {\n size: {\n small: \"px-2 py-1\",\n middle: \"px-4 py-3\",\n large: \"px-6 py-4\",\n },\n align: {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n },\n type: {\n header: \"bg-gray-50 font-semibold text-gray-900 border-b-2 border-gray-200\",\n body: \"text-gray-700 hover:bg-gray-50\",\n },\n },\n defaultVariants: {\n size: \"middle\",\n align: \"left\",\n type: \"body\",\n },\n }\n);\n\n// Filter component for individual columns\nconst ColumnFilter = <T extends Record<string, any>>({\n column,\n value,\n onChange,\n}: {\n column: Column<T>;\n value: any;\n onChange: (value: any) => void;\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [tempValue, setTempValue] = useState(value || '');\n\n const handleApply = () => {\n onChange(tempValue);\n setIsOpen(false);\n };\n\n const handleClear = () => {\n setTempValue('');\n onChange('');\n setIsOpen(false);\n };\n\n if (!column.filterable) return null;\n\n return (\n <div className=\"relative inline-block\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setIsOpen(!isOpen)}\n className={cn(\n \"p-1 h-6 w-6\",\n value && \"text-primary-600\"\n )}\n >\n <Filter className=\"h-3 w-3\" />\n </Button>\n \n {isOpen && (\n <>\n <div \n className=\"fixed inset-0 z-10\" \n onClick={() => setIsOpen(false)}\n />\n <div className=\"absolute top-full left-0 z-20 mt-1 bg-white border border-gray-200 rounded-lg shadow-lg p-3 min-w-[200px]\">\n {column.filterType === 'select' && column.filterOptions ? (\n <div className=\"space-y-2\">\n {column.filterOptions.map((option) => (\n <label key={option.value} className=\"flex items-center space-x-2\">\n <Checkbox\n checked={tempValue === option.value}\n onChange={() => setTempValue(\n tempValue === option.value ? '' : option.value\n )}\n />\n <span className=\"text-sm\">{option.label}</span>\n </label>\n ))}\n </div>\n ) : (\n <Input\n placeholder={`Filter ${column.title}`}\n value={tempValue}\n onChange={(e) => setTempValue(e.target.value)}\n className=\"mb-2\"\n />\n )}\n \n <div className=\"flex justify-end space-x-2 mt-3\">\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClear}>\n Clear\n </Button>\n <Button variant=\"primary\" size=\"sm\" onClick={handleApply}>\n Apply\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n};\n\n// Pagination component\nconst TablePagination: React.FC<{\n pagination: PaginationConfig;\n onChange: (page: number, pageSize: number) => void;\n}> = ({ pagination, onChange }) => {\n const { current, pageSize, total, showSizeChanger = true, pageSizeOptions = [10, 20, 50, 100] } = pagination;\n const totalPages = Math.ceil(total / pageSize);\n const startRecord = (current - 1) * pageSize + 1;\n const endRecord = Math.min(current * pageSize, total);\n\n const getPageNumbers = () => {\n const pages = [];\n const maxVisible = 5;\n \n if (totalPages <= maxVisible) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n const start = Math.max(1, current - 2);\n const end = Math.min(totalPages, start + maxVisible - 1);\n \n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n }\n \n return pages;\n };\n\n return (\n <div className=\"flex items-center justify-between px-4 py-3 bg-white border-t border-gray-200\">\n <div className=\"flex items-center space-x-4\">\n <span className=\"text-sm text-gray-700\">\n Showing {startRecord} to {endRecord} of {total} results\n </span>\n \n {showSizeChanger && (\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-gray-700\">Show</span>\n <select\n value={pageSize}\n onChange={(e) => onChange(1, Number(e.target.value))}\n className=\"border border-gray-300 rounded px-2 py-1 text-sm\"\n >\n {pageSizeOptions.map(size => (\n <option key={size} value={size}>{size}</option>\n ))}\n </select>\n <span className=\"text-sm text-gray-700\">per page</span>\n </div>\n )}\n </div>\n \n <div className=\"flex items-center space-x-1\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onChange(1, pageSize)}\n disabled={current === 1}\n >\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onChange(current - 1, pageSize)}\n disabled={current === 1}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n \n {getPageNumbers().map(page => (\n <Button\n key={page}\n variant={current === page ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => onChange(page, pageSize)}\n className=\"min-w-[32px]\"\n >\n {page}\n </Button>\n ))}\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onChange(current + 1, pageSize)}\n disabled={current === totalPages}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n \n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onChange(totalPages, pageSize)}\n disabled={current === totalPages}\n >\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n );\n};\n\n/**\n * DataTable\n *\n * All hooks (useState, useMemo, useCallback, etc.) MUST be called at the top level,\n * before any conditional returns (e.g., loading, invalid props).\n * This ensures compliance with React's rules of hooks and prevents hook errors.\n *\n * Defensive rendering: DataTable only renders if columns and dataSource are valid arrays.\n * If not, a fallback message is shown.\n */\nexport const DataTable = <T extends Record<string, any>>({\n columns,\n dataSource,\n loading = false,\n rowKey = 'id',\n pagination = { current: 1, pageSize: 10, total: 0 },\n rowSelection,\n size = 'middle',\n bordered = false,\n showHeader = true,\n title,\n footer,\n className,\n onSort,\n onFilter,\n onChange,\n ...props\n}: DataTableProps<T>) => {\n // --- All hooks must be called before any conditional returns ---\n const [sortConfig, setSortConfig] = useState<SortConfig>({ key: '', direction: null });\n const [filters, setFilters] = useState<FilterValue>({});\n const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>(\n rowSelection?.selectedRowKeys || []\n );\n\n // Get row key function\n const getRowKey = useCallback((record: T, index: number): React.Key => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return record[rowKey] || index;\n }, [rowKey]);\n\n // Handle sorting\n const handleSort = useCallback((columnKey: string) => {\n let newDirection: 'asc' | 'desc' | null;\n if (sortConfig.key !== columnKey) {\n newDirection = 'asc';\n } else if (sortConfig.direction === 'asc') {\n newDirection = 'desc';\n } else if (sortConfig.direction === 'desc') {\n newDirection = null;\n } else {\n newDirection = 'asc';\n }\n const newSortConfig: SortConfig = { key: columnKey, direction: newDirection };\n setSortConfig(newSortConfig);\n onSort?.(newSortConfig);\n onChange?.(pagination as PaginationConfig, filters, newSortConfig);\n }, [sortConfig, pagination, filters, onSort, onChange]);\n\n // Handle filtering\n const handleFilter = useCallback((columnKey: string, value: any) => {\n const newFilters = { ...filters };\n if (value === '' || value === null || value === undefined) {\n delete newFilters[columnKey];\n } else {\n newFilters[columnKey] = value;\n }\n \n setFilters(newFilters);\n onFilter?.(newFilters);\n onChange?.(pagination as PaginationConfig, newFilters, sortConfig);\n }, [filters, pagination, sortConfig, onFilter, onChange]);\n\n // Handle row selection\n const handleRowSelect = useCallback((record: T, selected: boolean) => {\n const key = getRowKey(record, 0);\n let newSelectedKeys: React.Key[];\n \n if (rowSelection?.type === 'radio') {\n newSelectedKeys = selected ? [key] : [];\n } else {\n newSelectedKeys = selected \n ? [...selectedRowKeys, key]\n : selectedRowKeys.filter(k => k !== key);\n }\n \n setSelectedRowKeys(newSelectedKeys);\n const selectedRows = dataSource.filter(item => \n newSelectedKeys.includes(getRowKey(item, 0))\n );\n \n rowSelection?.onChange?.(newSelectedKeys, selectedRows);\n rowSelection?.onSelect?.(record, selected, selectedRows, {} as Event);\n }, [selectedRowKeys, rowSelection, dataSource, getRowKey]);\n\n // Handle select all\n const handleSelectAll = useCallback((selected: boolean) => {\n const newSelectedKeys = selected \n ? dataSource.map((item, index) => getRowKey(item, index))\n : [];\n \n setSelectedRowKeys(newSelectedKeys);\n const selectedRows = selected ? dataSource : [];\n \n rowSelection?.onChange?.(newSelectedKeys, selectedRows);\n rowSelection?.onSelectAll?.(selected, selectedRows, dataSource);\n }, [dataSource, rowSelection, getRowKey]);\n\n // Filter and sort data\n const processedData = useMemo(() => {\n let result = [...dataSource];\n \n // Apply filters\n Object.entries(filters).forEach(([key, value]) => {\n if (value !== '' && value !== null && value !== undefined) {\n result = result.filter(item => {\n const itemValue = item[key];\n if (typeof itemValue === 'string') {\n return itemValue.toLowerCase().includes(String(value).toLowerCase());\n }\n return itemValue === value;\n });\n }\n });\n \n // Apply sorting\n if (sortConfig.key && sortConfig.direction) {\n result.sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n \n if (aValue === bValue) return 0;\n \n const comparison = aValue < bValue ? -1 : 1;\n return sortConfig.direction === 'asc' ? comparison : -comparison;\n });\n }\n \n return result;\n }, [dataSource, filters, sortConfig]);\n\n // Pagination logic\n const paginatedData = useMemo(() => {\n if (!pagination) return processedData;\n \n const { current, pageSize } = pagination;\n const startIndex = (current - 1) * pageSize;\n return processedData.slice(startIndex, startIndex + pageSize);\n }, [processedData, pagination]);\n\n // Update pagination total\n const currentPagination = useMemo(() => {\n if (!pagination) return false;\n return {\n ...pagination,\n total: processedData.length,\n };\n }, [pagination, processedData.length]);\n\n // Selection state\n const isAllSelected = selectedRowKeys.length === dataSource.length && dataSource.length > 0;\n const isIndeterminate = selectedRowKeys.length > 0 && selectedRowKeys.length < dataSource.length;\n\n // Defensive: Only render DataTable if columns and dataSource are valid arrays\n const isTableReady =\n Array.isArray(columns) &&\n columns.length > 0 &&\n Array.isArray(dataSource);\n\n // Always run hooks first, then handle fallback UI after\n if (!isTableReady) {\n // Fallback: show error message if table is not ready\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"p-4 text-center text-primary-600 bg-primary-50 rounded\">\n Invalid table setup\n </div>\n </div>\n );\n }\n\n if (loading) {\n return (\n <div className={cn(\"w-full\", className)}>\n {title && <div className=\"mb-4\">{title()}</div>}\n <div className=\"border border-gray-200 rounded-lg overflow-hidden\">\n <div className=\"p-4 space-y-3\">\n {Array.from({ length: 5 }).map((_, i) => (\n <div key={i} className=\"flex space-x-4\">\n <Skeleton className=\"h-4 w-8\" />\n <Skeleton className=\"h-4 flex-1\" />\n <Skeleton className=\"h-4 w-24\" />\n <Skeleton className=\"h-4 w-16\" />\n </div>\n ))}\n </div>\n </div>\n </div>\n );\n }\n\n // Mobile-first responsive: useBreakpoint to switch between table and card layouts\n const { isBelow } = useBreakpoint();\n\n return (\n <div className={cn(\"w-full\", className)}>\n {title && <div className=\"mb-4\">{title()}</div>}\n\n <div className=\"border border-gray-200 rounded-lg overflow-hidden\">\n {isBelow('md') ? (\n // Card layout for mobile\n <div className=\"space-y-4 p-2\">\n {paginatedData.length === 0 ? (\n <div className=\"text-gray-500 text-center py-8\">\n <div className=\"text-4xl mb-2\">📋</div>\n <div>No data available</div>\n </div>\n ) : (\n paginatedData.map((record, index) => {\n const key = getRowKey(record, index);\n const isSelected = selectedRowKeys.includes(key);\n\n return (\n <Card\n key={key}\n variant={isSelected ? \"elevated\" : \"default\"}\n padding=\"sm\"\n className={cn(\n \"transition-shadow\",\n isSelected && \"border-primary-600 shadow-lg\"\n )}\n >\n <CardContent className=\"space-y-2\">\n {rowSelection && (\n <div className=\"flex items-center mb-2\">\n <Checkbox\n checked={isSelected}\n onChange={(e) => handleRowSelect(record, e.target.checked)}\n {...rowSelection.getCheckboxProps?.(record)}\n />\n <span className=\"ml-2 text-xs text-gray-500\">Select</span>\n </div>\n )}\n {columns.map((column) => (\n <div key={column.key} className=\"flex justify-between items-center py-1 border-b last:border-b-0\">\n <span className=\"font-medium text-gray-700\">{column.title}</span>\n <span className=\"text-gray-900\">\n {column.render\n ? column.render(record[column.dataIndex], record, index)\n : String(record[column.dataIndex] || '')\n }\n </span>\n </div>\n ))}\n </CardContent>\n </Card>\n );\n })\n )}\n {currentPagination && (\n <div className=\"pt-2\">\n <TablePagination\n pagination={currentPagination}\n onChange={(page, pageSize) => {\n const newPagination = { ...currentPagination, current: page, pageSize };\n onChange?.(newPagination, filters, sortConfig);\n }}\n />\n </div>\n )}\n </div>\n ) : (\n // Table layout for desktop/tablet\n <div className=\"overflow-x-auto\">\n <table className={cn(tableVariants({ size, bordered }))}>\n {showHeader && (\n <thead>\n <tr>\n {rowSelection && (\n <th className={cn(cellVariants({ size, type: \"header\" }), \"w-12\")}>\n {rowSelection.type !== 'radio' && (\n <Checkbox\n checked={isAllSelected}\n onChange={(e) => handleSelectAll(e.target.checked)}\n className={cn(isIndeterminate && \"indeterminate\")}\n />\n )}\n </th>\n )}\n \n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n cellVariants({\n size,\n align: column.align,\n type: \"header\"\n }),\n column.width && `w-[${column.width}]`\n )}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center space-x-2\">\n <span>{column.title}</span>\n {column.sortable && (\n <button\n onClick={() => handleSort(column.key)}\n className=\"flex flex-col items-center hover:text-primary-600\"\n >\n <ChevronUp\n className={cn(\n \"h-3 w-3\",\n sortConfig.key === column.key && sortConfig.direction === 'asc'\n ? \"text-primary-600\"\n : \"text-gray-400\"\n )}\n />\n <ChevronDown\n className={cn(\n \"h-3 w-3 -mt-1\",\n sortConfig.key === column.key && sortConfig.direction === 'desc'\n ? \"text-primary-600\"\n : \"text-gray-400\"\n )}\n />\n </button>\n )}\n </div>\n \n <ColumnFilter\n column={column}\n value={filters[column.key]}\n onChange={(value) => handleFilter(column.key, value)}\n />\n </div>\n </th>\n ))}\n </tr>\n </thead>\n )}\n \n <tbody>\n {paginatedData.length === 0 ? (\n <tr>\n <td\n colSpan={columns.length + (rowSelection ? 1 : 0)}\n className={cn(cellVariants({ size, align: \"center\" }), \"py-8\")}\n >\n <div className=\"text-gray-500\">\n <div className=\"text-4xl mb-2\">📋</div>\n <div>No data available</div>\n </div>\n </td>\n </tr>\n ) : (\n paginatedData.map((record, index) => {\n const key = getRowKey(record, index);\n const isSelected = selectedRowKeys.includes(key);\n \n return (\n <tr\n key={key}\n className={cn(\n \"hover:bg-gray-50 transition-colors\",\n isSelected && \"bg-primary-50\"\n )}\n {...(props.onRow?.(record, index) ?? {})}\n >\n {rowSelection && (\n <td className={cn(cellVariants({ size }))}>\n <Checkbox\n checked={isSelected}\n onChange={(e) => handleRowSelect(record, e.target.checked)}\n {...rowSelection.getCheckboxProps?.(record)}\n />\n </td>\n )}\n \n {columns.map((column) => (\n <td\n key={column.key}\n className={cn(cellVariants({\n size,\n align: column.align\n }))}\n >\n {column.render\n ? column.render(record[column.dataIndex], record, index)\n : String(record[column.dataIndex] || '')\n }\n </td>\n ))}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n )}\n </div>\n\n {footer && <div className=\"mt-4\">{footer()}</div>}\n </div>\n );\n};\n\nDataTable.displayName = \"DataTable\";"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","sources":["../../../src/components/DataTable/DataTable.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { useState, useMemo, useCallback } from \"react\";\r\nimport { \r\n ChevronUp, \r\n ChevronDown, \r\n Search, \r\n Filter, \r\n ChevronLeft, \r\n ChevronRight,\r\n ChevronsLeft,\r\n ChevronsRight,\r\n MoreHorizontal,\r\n Check,\r\n Minus\r\n} from \"lucide-react\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { cn } from \"../../utils/cn\";\r\nimport { Button } from \"../Button\";\r\nimport { Input } from \"../Input\";\r\nimport { Checkbox } from \"../Checkbox\";\r\nimport { Badge } from \"../Badge\";\r\nimport { Spinner } from \"../Spinner\";\r\nimport { Skeleton } from \"../Skeleton\";\r\nimport { Card, CardContent } from \"../Card\";\r\nimport { useBreakpoint } from \"../../hooks/useBreakpoint\";\r\nimport { Select } from \"../Select\";\r\nimport type {\r\n DataTableProps,\r\n Column,\r\n FilterValue,\r\n SortConfig,\r\n PaginationConfig,\r\n RowSelection\r\n} from \"./DataTable.types\";\r\n\r\nconst tableVariants = cva(\r\n \"w-full border-collapse bg-white\",\r\n {\r\n variants: {\r\n size: {\r\n small: \"text-xs\",\r\n middle: \"text-sm\",\r\n large: \"text-base\",\r\n },\r\n bordered: {\r\n true: \"border border-gray-200\",\r\n false: \"\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"middle\",\r\n bordered: false,\r\n },\r\n }\r\n);\r\n\r\nconst cellVariants = cva(\r\n \"border-b border-gray-200 transition-colors\",\r\n {\r\n variants: {\r\n size: {\r\n small: \"px-2 py-1\",\r\n middle: \"px-4 py-3\",\r\n large: \"px-6 py-4\",\r\n },\r\n align: {\r\n left: \"text-left\",\r\n center: \"text-center\",\r\n right: \"text-right\",\r\n },\r\n type: {\r\n header: \"bg-gray-50 font-semibold text-gray-900 border-b-2 border-gray-200\",\r\n body: \"text-gray-700 hover:bg-gray-50\",\r\n },\r\n },\r\n defaultVariants: {\r\n size: \"middle\",\r\n align: \"left\",\r\n type: \"body\",\r\n },\r\n }\r\n);\r\n\r\n// Filter component for individual columns\r\nconst ColumnFilter = <T extends Record<string, any>>({\r\n column,\r\n value,\r\n onChange,\r\n}: {\r\n column: Column<T>;\r\n value: any;\r\n onChange: (value: any) => void;\r\n}) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [tempValue, setTempValue] = useState(value || '');\r\n\r\n const handleApply = () => {\r\n onChange(tempValue);\r\n setIsOpen(false);\r\n };\r\n\r\n const handleClear = () => {\r\n setTempValue('');\r\n onChange('');\r\n setIsOpen(false);\r\n };\r\n\r\n if (!column.filterable) return null;\r\n\r\n return (\r\n <div className=\"relative inline-block\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={cn(\r\n \"p-1 h-6 w-6\",\r\n value && \"text-primary-600\"\r\n )}\r\n >\r\n <Filter className=\"h-3 w-3\" />\r\n </Button>\r\n \r\n {isOpen && (\r\n <>\r\n <div \r\n className=\"fixed inset-0 z-10\" \r\n onClick={() => setIsOpen(false)}\r\n />\r\n <div className=\"absolute top-full left-0 z-20 mt-1 bg-white border border-gray-200 rounded-lg shadow-lg p-3 min-w-[200px]\">\r\n {column.filterType === 'select' && column.filterOptions ? (\r\n <div className=\"space-y-2\">\r\n {column.filterOptions.map((option) => (\r\n <label key={option.value} className=\"flex items-center space-x-2\">\r\n <Checkbox\r\n checked={tempValue === option.value}\r\n onChange={() => setTempValue(\r\n tempValue === option.value ? '' : option.value\r\n )}\r\n />\r\n <span className=\"text-sm\">{option.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n ) : (\r\n <Input\r\n placeholder={`Filter ${column.title}`}\r\n value={tempValue}\r\n onChange={(e) => setTempValue(e.target.value)}\r\n className=\"mb-2\"\r\n />\r\n )}\r\n \r\n <div className=\"flex justify-end space-x-2 mt-3\">\r\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClear}>\r\n Clear\r\n </Button>\r\n <Button variant=\"primary\" size=\"sm\" onClick={handleApply}>\r\n Apply\r\n </Button>\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n// Pagination component\r\nconst TablePagination: React.FC<{\r\n pagination: PaginationConfig;\r\n onChange: (page: number, pageSize: number) => void;\r\n}> = ({ pagination, onChange }) => {\r\n const { current, pageSize, total, showSizeChanger = true, pageSizeOptions = [10, 20, 50, 100] } = pagination;\r\n const totalPages = Math.ceil(total / pageSize);\r\n const startRecord = (current - 1) * pageSize + 1;\r\n const endRecord = Math.min(current * pageSize, total);\r\n\r\n const getPageNumbers = () => {\r\n const pages = [];\r\n const maxVisible = 5;\r\n \r\n if (totalPages <= maxVisible) {\r\n for (let i = 1; i <= totalPages; i++) {\r\n pages.push(i);\r\n }\r\n } else {\r\n const start = Math.max(1, current - 2);\r\n const end = Math.min(totalPages, start + maxVisible - 1);\r\n \r\n for (let i = start; i <= end; i++) {\r\n pages.push(i);\r\n }\r\n }\r\n \r\n return pages;\r\n };\r\n\r\n // Convert pageSizeOptions to SelectOption format\r\n const selectOptions = pageSizeOptions.map(size => ({\r\n label: String(size),\r\n value: String(size),\r\n }));\r\n\r\n return (\r\n <div className=\"flex items-center justify-between px-4 py-3 bg-background border-t border-border\">\r\n <div className=\"flex items-center space-x-4\">\r\n <span className=\"text-sm text-foreground\">\r\n Showing {startRecord} to {endRecord} of {total} results\r\n </span>\r\n \r\n {showSizeChanger && (\r\n <div className=\"flex items-center space-x-2\">\r\n <span className=\"text-sm text-foreground\">Show</span>\r\n <Select\r\n options={selectOptions}\r\n value={String(pageSize)}\r\n onChange={e => onChange(1, Number(e.target.value))}\r\n variant=\"default\"\r\n selectSize=\"sm\"\r\n aria-label=\"Select number of items per page\"\r\n />\r\n <span className=\"text-sm text-foreground\">per page</span>\r\n </div>\r\n )}\r\n </div>\r\n \r\n <div className=\"flex items-center space-x-1\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onChange(1, pageSize)}\r\n disabled={current === 1}\r\n aria-label=\"First page\"\r\n >\r\n <ChevronsLeft className=\"h-4 w-4\" />\r\n </Button>\r\n \r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onChange(current - 1, pageSize)}\r\n disabled={current === 1}\r\n aria-label=\"Previous page\"\r\n >\r\n <ChevronLeft className=\"h-4 w-4\" />\r\n </Button>\r\n \r\n {getPageNumbers().map(page => (\r\n <Button\r\n key={page}\r\n variant={current === page ? \"primary\" : \"ghost\"}\r\n size=\"sm\"\r\n onClick={() => onChange(page, pageSize)}\r\n className=\"min-w-[32px]\"\r\n aria-label={`Go to page ${page}`}\r\n >\r\n {page}\r\n </Button>\r\n ))}\r\n \r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onChange(current + 1, pageSize)}\r\n disabled={current === totalPages}\r\n aria-label=\"Next page\"\r\n >\r\n <ChevronRight className=\"h-4 w-4\" />\r\n </Button>\r\n \r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onChange(totalPages, pageSize)}\r\n disabled={current === totalPages}\r\n aria-label=\"Last page\"\r\n >\r\n <ChevronsRight className=\"h-4 w-4\" />\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const DataTable = <T extends Record<string, any>>({\r\n columns,\r\n dataSource,\r\n loading = false,\r\n rowKey = 'id',\r\n pagination = { current: 1, pageSize: 10, total: 0 },\r\n rowSelection,\r\n size = 'middle',\r\n bordered = false,\r\n showHeader = true,\r\n title,\r\n footer,\r\n className,\r\n onSort,\r\n onFilter,\r\n onChange,\r\n ...props\r\n}: DataTableProps<T>) => {\r\n const [sortConfig, setSortConfig] = useState<SortConfig>({ key: '', direction: null });\r\n const [filters, setFilters] = useState<FilterValue>({});\r\n const [selectedRowKeys, setSelectedRowKeys] = useState<React.Key[]>(\r\n rowSelection?.selectedRowKeys || []\r\n );\r\n\r\n // Get row key function\r\n const getRowKey = useCallback((record: T, index: number): React.Key => {\r\n if (typeof rowKey === 'function') {\r\n return rowKey(record);\r\n }\r\n return record[rowKey] || index;\r\n }, [rowKey]);\r\n\r\n // Handle sorting\r\n const handleSort = useCallback((columnKey: string) => {\r\n let newDirection: 'asc' | 'desc' | null;\r\n if (sortConfig.key !== columnKey) {\r\n newDirection = 'asc';\r\n } else if (sortConfig.direction === 'asc') {\r\n newDirection = 'desc';\r\n } else if (sortConfig.direction === 'desc') {\r\n newDirection = null;\r\n } else {\r\n newDirection = 'asc';\r\n }\r\n const newSortConfig: SortConfig = { key: columnKey, direction: newDirection };\r\n setSortConfig(newSortConfig);\r\n onSort?.(newSortConfig);\r\n onChange?.(pagination as PaginationConfig, filters, newSortConfig);\r\n }, [sortConfig, pagination, filters, onSort, onChange]);\r\n\r\n // Handle filtering\r\n const handleFilter = useCallback((columnKey: string, value: any) => {\r\n const newFilters = { ...filters };\r\n if (value === '' || value === null || value === undefined) {\r\n delete newFilters[columnKey];\r\n } else {\r\n newFilters[columnKey] = value;\r\n }\r\n \r\n setFilters(newFilters);\r\n onFilter?.(newFilters);\r\n onChange?.(pagination as PaginationConfig, newFilters, sortConfig);\r\n }, [filters, pagination, sortConfig, onFilter, onChange]);\r\n\r\n // Handle row selection\r\n const handleRowSelect = useCallback((record: T, selected: boolean) => {\r\n const key = getRowKey(record, 0);\r\n let newSelectedKeys: React.Key[];\r\n \r\n if (rowSelection?.type === 'radio') {\r\n newSelectedKeys = selected ? [key] : [];\r\n } else {\r\n newSelectedKeys = selected \r\n ? [...selectedRowKeys, key]\r\n : selectedRowKeys.filter(k => k !== key);\r\n }\r\n \r\n setSelectedRowKeys(newSelectedKeys);\r\n const selectedRows = dataSource.filter(item => \r\n newSelectedKeys.includes(getRowKey(item, 0))\r\n );\r\n \r\n rowSelection?.onChange?.(newSelectedKeys, selectedRows);\r\n rowSelection?.onSelect?.(record, selected, selectedRows, {} as Event);\r\n }, [selectedRowKeys, rowSelection, dataSource, getRowKey]);\r\n\r\n // Handle select all\r\n const handleSelectAll = useCallback((selected: boolean) => {\r\n const newSelectedKeys = selected \r\n ? dataSource.map((item, index) => getRowKey(item, index))\r\n : [];\r\n \r\n setSelectedRowKeys(newSelectedKeys);\r\n const selectedRows = selected ? dataSource : [];\r\n \r\n rowSelection?.onChange?.(newSelectedKeys, selectedRows);\r\n rowSelection?.onSelectAll?.(selected, selectedRows, dataSource);\r\n }, [dataSource, rowSelection, getRowKey]);\r\n\r\n // Filter and sort data\r\n const processedData = useMemo(() => {\r\n let result = [...dataSource];\r\n \r\n // Apply filters\r\n Object.entries(filters).forEach(([key, value]) => {\r\n if (value !== '' && value !== null && value !== undefined) {\r\n result = result.filter(item => {\r\n const itemValue = item[key];\r\n if (typeof itemValue === 'string') {\r\n return itemValue.toLowerCase().includes(String(value).toLowerCase());\r\n }\r\n return itemValue === value;\r\n });\r\n }\r\n });\r\n \r\n // Apply sorting\r\n if (sortConfig.key && sortConfig.direction) {\r\n result.sort((a, b) => {\r\n const aValue = a[sortConfig.key];\r\n const bValue = b[sortConfig.key];\r\n \r\n if (aValue === bValue) return 0;\r\n \r\n const comparison = aValue < bValue ? -1 : 1;\r\n return sortConfig.direction === 'asc' ? comparison : -comparison;\r\n });\r\n }\r\n \r\n return result;\r\n }, [dataSource, filters, sortConfig]);\r\n\r\n // Pagination logic\r\n const paginatedData = useMemo(() => {\r\n if (!pagination) return processedData;\r\n \r\n const { current, pageSize } = pagination;\r\n const startIndex = (current - 1) * pageSize;\r\n return processedData.slice(startIndex, startIndex + pageSize);\r\n }, [processedData, pagination]);\r\n\r\n // Update pagination total\r\n const currentPagination = useMemo(() => {\r\n if (!pagination) return false;\r\n return {\r\n ...pagination,\r\n total: processedData.length,\r\n };\r\n }, [pagination, processedData.length]);\r\n\r\n // Selection state\r\n const isAllSelected = selectedRowKeys.length === dataSource.length && dataSource.length > 0;\r\n const isIndeterminate = selectedRowKeys.length > 0 && selectedRowKeys.length < dataSource.length;\r\n\r\n if (loading) {\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {title && <div className=\"mb-4\">{title()}</div>}\r\n <div className=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n <div className=\"p-4 space-y-3\">\r\n {Array.from({ length: 5 }).map((_, i) => (\r\n <div key={i} className=\"flex space-x-4\">\r\n <Skeleton className=\"h-4 w-8\" />\r\n <Skeleton className=\"h-4 flex-1\" />\r\n <Skeleton className=\"h-4 w-24\" />\r\n <Skeleton className=\"h-4 w-16\" />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Mobile-first responsive: useBreakpoint to switch between table and card layouts\r\n const { isBelow } = useBreakpoint();\r\n\r\n return (\r\n <div className={cn(\"w-full\", className)}>\r\n {title && <div className=\"mb-4\">{title()}</div>}\r\n\r\n <div className=\"border border-gray-200 rounded-lg overflow-hidden\">\r\n {/* Card layout for mobile */}\r\n {isBelow('md') ? (\r\n <div className=\"space-y-4 p-2\">\r\n {paginatedData.length === 0 ? (\r\n <div className=\"text-gray-500 text-center py-8\">\r\n <div className=\"text-4xl mb-2\">📋</div>\r\n <div>No data available</div>\r\n </div>\r\n ) : (\r\n paginatedData.map((record, index) => {\r\n const key = getRowKey(record, index);\r\n const isSelected = selectedRowKeys.includes(key);\r\n\r\n return (\r\n <Card\r\n key={key}\r\n variant={isSelected ? \"elevated\" : \"default\"}\r\n padding=\"sm\"\r\n className={cn(\r\n \"transition-shadow\",\r\n isSelected && \"border-primary-600 shadow-lg\"\r\n )}\r\n >\r\n <CardContent className=\"space-y-2\">\r\n {rowSelection && (\r\n <div className=\"flex items-center mb-2\">\r\n <Checkbox\r\n checked={isSelected}\r\n onChange={(e) => handleRowSelect(record, e.target.checked)}\r\n {...rowSelection.getCheckboxProps?.(record)}\r\n />\r\n <span className=\"ml-2 text-xs text-gray-500\">Select</span>\r\n </div>\r\n )}\r\n {columns.map((column) => (\r\n <div key={column.key} className=\"flex justify-between items-center py-1 border-b last:border-b-0\">\r\n <span className=\"font-medium text-gray-700\">{column.title}</span>\r\n <span className=\"text-gray-900\">\r\n {column.render\r\n ? column.render(record[column.dataIndex], record, index)\r\n : String(record[column.dataIndex] || '')\r\n }\r\n </span>\r\n </div>\r\n ))}\r\n </CardContent>\r\n </Card>\r\n );\r\n })\r\n )}\r\n </div>\r\n ) : (\r\n // Table layout for desktop/tablet\r\n <div className=\"overflow-x-auto\">\r\n <table className={cn(tableVariants({ size, bordered }))}>\r\n {showHeader && (\r\n <thead>\r\n <tr>\r\n {rowSelection && (\r\n <th className={cn(cellVariants({ size, type: \"header\" }), \"w-12\")}>\r\n {rowSelection.type !== 'radio' && (\r\n <Checkbox\r\n checked={isAllSelected}\r\n onChange={(e) => handleSelectAll(e.target.checked)}\r\n className={cn(isIndeterminate && \"indeterminate\")}\r\n />\r\n )}\r\n </th>\r\n )}\r\n \r\n {columns.map((column) => (\r\n <th\r\n key={column.key}\r\n className={cn(\r\n cellVariants({\r\n size,\r\n align: column.align,\r\n type: \"header\"\r\n }),\r\n column.width && `w-[${column.width}]`\r\n )}\r\n >\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center space-x-2\">\r\n <span>{column.title}</span>\r\n {column.sortable && (\r\n <button\r\n onClick={() => handleSort(column.key)}\r\n className=\"flex flex-col items-center hover:text-primary-600\"\r\n >\r\n <ChevronUp\r\n className={cn(\r\n \"h-3 w-3\",\r\n sortConfig.key === column.key && sortConfig.direction === 'asc'\r\n ? \"text-primary-600\"\r\n : \"text-gray-400\"\r\n )}\r\n />\r\n <ChevronDown\r\n className={cn(\r\n \"h-3 w-3 -mt-1\",\r\n sortConfig.key === column.key && sortConfig.direction === 'desc'\r\n ? \"text-primary-600\"\r\n : \"text-gray-400\"\r\n )}\r\n />\r\n </button>\r\n )}\r\n </div>\r\n \r\n <ColumnFilter\r\n column={column}\r\n value={filters[column.key]}\r\n onChange={(value) => handleFilter(column.key, value)}\r\n />\r\n </div>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n )}\r\n \r\n <tbody>\r\n {paginatedData.length === 0 ? (\r\n <tr>\r\n <td\r\n colSpan={columns.length + (rowSelection ? 1 : 0)}\r\n className={cn(cellVariants({ size, align: \"center\" }), \"py-8\")}\r\n >\r\n <div className=\"text-gray-500\">\r\n <div className=\"text-4xl mb-2\">📋</div>\r\n <div>No data available</div>\r\n </div>\r\n </td>\r\n </tr>\r\n ) : (\r\n paginatedData.map((record, index) => {\r\n const key = getRowKey(record, index);\r\n const isSelected = selectedRowKeys.includes(key);\r\n \r\n return (\r\n <tr\r\n key={key}\r\n className={cn(\r\n \"hover:bg-gray-50 transition-colors\",\r\n isSelected && \"bg-primary-50\"\r\n )}\r\n {...(props.onRow?.(record, index) ?? {})}\r\n >\r\n {rowSelection && (\r\n <td className={cn(cellVariants({ size }))}>\r\n <Checkbox\r\n checked={isSelected}\r\n onChange={(e) => handleRowSelect(record, e.target.checked)}\r\n {...rowSelection.getCheckboxProps?.(record)}\r\n />\r\n </td>\r\n )}\r\n \r\n {columns.map((column) => (\r\n <td\r\n key={column.key}\r\n className={cn(cellVariants({\r\n size,\r\n align: column.align\r\n }))}\r\n >\r\n {column.render\r\n ? column.render(record[column.dataIndex], record, index)\r\n : String(record[column.dataIndex] || '')\r\n }\r\n </td>\r\n ))}\r\n </tr>\r\n );\r\n })\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n )}\r\n {/* Always show pagination controls below data */}\r\n {currentPagination && (\r\n <div className=\"pt-2\">\r\n <TablePagination\r\n pagination={currentPagination}\r\n onChange={(page, pageSize) => {\r\n const newPagination = { ...currentPagination, current: page, pageSize };\r\n onChange?.(newPagination, filters, sortConfig);\r\n }}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n\r\n {footer && <div className=\"mt-4\">{footer()}</div>}\r\n </div>\r\n );\r\n};\r\n\r\nDataTable.displayName = \"DataTable\";"],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
2
3
  import { useState } from 'react';
3
4
  import { Download, Plus, Users, DollarSign, Calendar, Filter, TrendingUp, Eye, Edit, Trash2 } from 'lucide-react';
4
5
  import { DataTable } from './DataTable.js';
@@ -63,6 +64,25 @@ const tasksData = generateTasks();
63
64
  const DataTableShowcase = () => {
64
65
  const [selectedTab, setSelectedTab] = useState('users');
65
66
  const [selectedRows, setSelectedRows] = useState([]);
67
+ // Pagination state
68
+ const [pagination, setPagination] = useState({
69
+ current: 1,
70
+ pageSize: 10,
71
+ total: 50, // default, will update below
72
+ showSizeChanger: true,
73
+ pageSizeOptions: [5, 10, 20, 50],
74
+ });
75
+ // Update total when tab/data changes
76
+ React.useEffect(() => {
77
+ let total = 0;
78
+ if (selectedTab === "users")
79
+ total = usersData.length;
80
+ else if (selectedTab === "sales")
81
+ total = salesData.length;
82
+ else if (selectedTab === "tasks")
83
+ total = tasksData.length;
84
+ setPagination(p => ({ ...p, total, current: 1 }));
85
+ }, [selectedTab]);
66
86
  // User table columns
67
87
  const userColumns = [
68
88
  {
@@ -287,51 +307,45 @@ const DataTableShowcase = () => {
287
307
  ${selectedTab === key
288
308
  ? 'border-primary-500 text-primary-600'
289
309
  : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}
290
- `, children: [jsx(Icon, { className: "h-4 w-4" }), jsx("span", { children: label })] }, key))) }) }), jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4", children: [jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Total Records" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: getCurrentData().length })] }), jsx("div", { className: "p-2 bg-primary-100 rounded-lg", children: jsx(Users, { className: "h-6 w-6 text-primary-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Selected" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: selectedRows.length })] }), jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsx(Filter, { className: "h-6 w-6 text-success-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Active Filters" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: "0" })] }), jsx("div", { className: "p-2 bg-warning-100 rounded-lg", children: jsx(Filter, { className: "h-6 w-6 text-warning-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Performance" }), jsxs("div", { className: "flex items-center space-x-1", children: [jsx(TrendingUp, { className: "h-4 w-4 text-success-600" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: "Fast" })] })] }), jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsx(TrendingUp, { className: "h-6 w-6 text-success-600" }) })] }) }) })] }), jsx(Card, { children: jsxs(CardContent, { className: "p-0", children: [selectedTab === "users" && (jsx(DataTable, { columns: userColumns, dataSource: usersData, rowKey: "id", pagination: {
291
- current: 1,
292
- pageSize: 10,
293
- total: usersData.length,
294
- showSizeChanger: true,
295
- pageSizeOptions: [5, 10, 20, 50],
296
- }, rowSelection: {
310
+ `, children: [jsx(Icon, { className: "h-4 w-4" }), jsx("span", { children: label })] }, key))) }) }), jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4", children: [jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Total Records" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: getCurrentData().length })] }), jsx("div", { className: "p-2 bg-primary-100 rounded-lg", children: jsx(Users, { className: "h-6 w-6 text-primary-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Selected" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: selectedRows.length })] }), jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsx(Filter, { className: "h-6 w-6 text-success-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Active Filters" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: "0" })] }), jsx("div", { className: "p-2 bg-warning-100 rounded-lg", children: jsx(Filter, { className: "h-6 w-6 text-warning-600" }) })] }) }) }), jsx(Card, { children: jsx(CardContent, { className: "p-4", children: jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { children: [jsx("p", { className: "text-sm font-medium text-gray-600", children: "Performance" }), jsxs("div", { className: "flex items-center space-x-1", children: [jsx(TrendingUp, { className: "h-4 w-4 text-success-600" }), jsx("p", { className: "text-2xl font-bold text-gray-900", children: "Fast" })] })] }), jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsx(TrendingUp, { className: "h-6 w-6 text-success-600" }) })] }) }) })] }), jsx(Card, { children: jsxs(CardContent, { className: "p-0", children: [selectedTab === "users" && (jsx(DataTable, { columns: userColumns, dataSource: usersData, rowKey: "id", pagination: pagination, rowSelection: {
297
311
  type: 'checkbox',
298
312
  selectedRowKeys: selectedRows,
299
313
  onChange: (keys) => {
300
314
  setSelectedRows(keys);
301
315
  showToast.info(`Selected ${keys.length} items`);
302
316
  },
303
- }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Users Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [usersData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
304
- console.log('Table changed:', { pagination, filters, sorter });
305
- } })), selectedTab === "sales" && (jsx(DataTable, { columns: salesColumns, dataSource: salesData, rowKey: "id", pagination: {
306
- current: 1,
307
- pageSize: 10,
308
- total: salesData.length,
309
- showSizeChanger: true,
310
- pageSizeOptions: [5, 10, 20, 50],
311
- }, rowSelection: {
317
+ }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Users Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [usersData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (newPagination, filters, sorter) => {
318
+ setPagination(p => ({
319
+ ...p,
320
+ current: newPagination.current,
321
+ pageSize: newPagination.pageSize,
322
+ }));
323
+ } })), selectedTab === "sales" && (jsx(DataTable, { columns: salesColumns, dataSource: salesData, rowKey: "id", pagination: pagination, rowSelection: {
312
324
  type: 'checkbox',
313
325
  selectedRowKeys: selectedRows,
314
326
  onChange: (keys) => {
315
327
  setSelectedRows(keys);
316
328
  showToast.info(`Selected ${keys.length} items`);
317
329
  },
318
- }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Sales Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [salesData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
319
- console.log('Table changed:', { pagination, filters, sorter });
320
- } })), selectedTab === "tasks" && (jsx(DataTable, { columns: taskColumns, dataSource: tasksData, rowKey: "id", pagination: {
321
- current: 1,
322
- pageSize: 10,
323
- total: tasksData.length,
324
- showSizeChanger: true,
325
- pageSizeOptions: [5, 10, 20, 50],
326
- }, rowSelection: {
330
+ }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Sales Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [salesData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (newPagination, filters, sorter) => {
331
+ setPagination(p => ({
332
+ ...p,
333
+ current: newPagination.current,
334
+ pageSize: newPagination.pageSize,
335
+ }));
336
+ } })), selectedTab === "tasks" && (jsx(DataTable, { columns: taskColumns, dataSource: tasksData, rowKey: "id", pagination: pagination, rowSelection: {
327
337
  type: 'checkbox',
328
338
  selectedRowKeys: selectedRows,
329
339
  onChange: (keys) => {
330
340
  setSelectedRows(keys);
331
341
  showToast.info(`Selected ${keys.length} items`);
332
342
  },
333
- }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Tasks Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [tasksData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
334
- console.log('Table changed:', { pagination, filters, sorter });
343
+ }, size: "middle", bordered: false, title: () => (jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Tasks Data" }), jsxs("div", { className: "flex items-center space-x-2", children: [jsxs(Badge, { variant: "outline", children: [tasksData.length, " total"] }), selectedRows.length > 0 && (jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (newPagination, filters, sorter) => {
344
+ setPagination(p => ({
345
+ ...p,
346
+ current: newPagination.current,
347
+ pageSize: newPagination.pageSize,
348
+ }));
335
349
  } }))] }) }), jsxs(Card, { children: [jsx(CardHeader, { children: jsx(CardTitle, { children: "Component Features" }) }), jsx(CardContent, { className: "space-y-4", children: jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxs("div", { children: [jsx("h4", { className: "font-semibold text-gray-900 mb-2", children: "Core Features" }), jsxs("ul", { className: "space-y-1 text-sm text-gray-600", children: [jsx("li", { children: "\u2022 Sortable columns with visual indicators" }), jsx("li", { children: "\u2022 Advanced filtering (text, select, date)" }), jsx("li", { children: "\u2022 Pagination with configurable page sizes" }), jsx("li", { children: "\u2022 Row selection (single/multiple)" }), jsx("li", { children: "\u2022 Responsive design for all screen sizes" }), jsx("li", { children: "\u2022 Loading and empty states" })] })] }), jsxs("div", { children: [jsx("h4", { className: "font-semibold text-gray-900 mb-2", children: "Advanced Features" }), jsxs("ul", { className: "space-y-1 text-sm text-gray-600", children: [jsx("li", { children: "\u2022 Custom cell renderers" }), jsx("li", { children: "\u2022 TypeScript support with full typing" }), jsx("li", { children: "\u2022 Accessibility features (ARIA labels)" }), jsx("li", { children: "\u2022 Performance optimizations" }), jsx("li", { children: "\u2022 Customizable styling and themes" }), jsx("li", { children: "\u2022 Export and bulk actions support" })] })] })] }) })] })] }));
336
350
  };
337
351
 
@@ -1 +1 @@
1
- {"version":3,"file":"DataTableShowcase.js","sources":["../../../src/components/DataTable/DataTableShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState } from \"react\";\nimport { \n Users, \n Mail, \n Phone, \n MapPin, \n Calendar,\n DollarSign,\n TrendingUp,\n TrendingDown,\n Eye,\n Edit,\n Trash2,\n Download,\n Filter,\n Plus\n} from \"lucide-react\";\nimport { DataTable } from \"./DataTable\";\nimport { Button } from \"../Button\";\nimport { Badge } from \"../Badge\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\nimport { showToast } from \"../Toast\";\nimport type { Column, FilterValue, SortConfig, PaginationConfig } from \"./DataTable.types\";\n\n// Sample data types\ninterface User {\n id: number;\n name: string;\n email: string;\n role: string;\n status: 'active' | 'inactive' | 'pending';\n avatar: string;\n joinDate: string;\n lastLogin: string;\n department: string;\n}\n\ninterface Sale {\n id: number;\n product: string;\n customer: string;\n amount: number;\n status: 'completed' | 'pending' | 'cancelled';\n date: string;\n region: string;\n salesperson: string;\n}\n\ninterface Task {\n id: number;\n title: string;\n assignee: string;\n priority: 'low' | 'medium' | 'high' | 'urgent';\n status: 'todo' | 'in-progress' | 'review' | 'completed';\n dueDate: string;\n project: string;\n tags: string[];\n}\n\n// Generate sample data\nconst generateUsers = (): User[] => {\n const roles = ['Admin', 'Manager', 'Developer', 'Designer', 'Analyst'];\n const departments = ['Engineering', 'Design', 'Marketing', 'Sales', 'HR'];\n const statuses: User['status'][] = ['active', 'inactive', 'pending'];\n \n return Array.from({ length: 50 }, (_, i) => ({\n id: i + 1,\n name: `User ${i + 1}`,\n email: `user${i + 1}@company.com`,\n role: roles[Math.floor(Math.random() * roles.length)],\n status: statuses[Math.floor(Math.random() * statuses.length)],\n avatar: `https://images.pexels.com/photos/${774909 + i}/pexels-photo-${774909 + i}.jpeg?auto=compress&cs=tinysrgb&w=64`,\n joinDate: new Date(2020 + Math.floor(Math.random() * 4), Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],\n lastLogin: new Date(Date.now() - Math.floor(Math.random() * 30) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n department: departments[Math.floor(Math.random() * departments.length)],\n }));\n};\n\nconst generateSales = (): Sale[] => {\n const products = ['Pro Plan', 'Basic Plan', 'Enterprise', 'Starter', 'Premium'];\n const regions = ['North America', 'Europe', 'Asia Pacific', 'Latin America'];\n const statuses: Sale['status'][] = ['completed', 'pending', 'cancelled'];\n \n return Array.from({ length: 75 }, (_, i) => ({\n id: i + 1,\n product: products[Math.floor(Math.random() * products.length)],\n customer: `Customer ${i + 1}`,\n amount: Math.floor(Math.random() * 10000) + 100,\n status: statuses[Math.floor(Math.random() * statuses.length)],\n date: new Date(2024, Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],\n region: regions[Math.floor(Math.random() * regions.length)],\n salesperson: `Sales Rep ${Math.floor(Math.random() * 10) + 1}`,\n }));\n};\n\nconst generateTasks = (): Task[] => {\n const priorities: Task['priority'][] = ['low', 'medium', 'high', 'urgent'];\n const statuses: Task['status'][] = ['todo', 'in-progress', 'review', 'completed'];\n const projects = ['Website Redesign', 'Mobile App', 'API Integration', 'Dashboard', 'Marketing Campaign'];\n const tagOptions = ['frontend', 'backend', 'design', 'testing', 'documentation', 'bug', 'feature'];\n \n return Array.from({ length: 60 }, (_, i) => ({\n id: i + 1,\n title: `Task ${i + 1}: Implement feature`,\n assignee: `Developer ${Math.floor(Math.random() * 8) + 1}`,\n priority: priorities[Math.floor(Math.random() * priorities.length)],\n status: statuses[Math.floor(Math.random() * statuses.length)],\n dueDate: new Date(Date.now() + Math.floor(Math.random() * 60) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n project: projects[Math.floor(Math.random() * projects.length)],\n tags: Array.from({ length: Math.floor(Math.random() * 3) + 1 }, () => \n tagOptions[Math.floor(Math.random() * tagOptions.length)]\n ).filter((tag, index, arr) => arr.indexOf(tag) === index),\n }));\n};\n\n// Sample data\nconst usersData = generateUsers();\nconst salesData = generateSales();\nconst tasksData = generateTasks();\n\nexport const DataTableShowcase: React.FC = () => {\n const [selectedTab, setSelectedTab] = useState<'users' | 'sales' | 'tasks'>('users');\n const [selectedRows, setSelectedRows] = useState<React.Key[]>([]);\n\n // User table columns\n const userColumns: Column<User>[] = [\n {\n key: 'user',\n title: 'User',\n dataIndex: 'name',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (_, record) => (\n <div className=\"flex items-center space-x-3\">\n <Avatar size=\"sm\">\n <AvatarImage src={record.avatar} />\n <AvatarFallback>{record.name.split(' ').map(n => n[0]).join('')}</AvatarFallback>\n </Avatar>\n <div>\n <div className=\"font-medium text-gray-900\">{record.name}</div>\n <div className=\"text-sm text-gray-500\">{record.email}</div>\n </div>\n </div>\n ),\n },\n {\n key: 'role',\n title: 'Role',\n dataIndex: 'role',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Admin', value: 'Admin' },\n { label: 'Manager', value: 'Manager' },\n { label: 'Developer', value: 'Developer' },\n { label: 'Designer', value: 'Designer' },\n { label: 'Analyst', value: 'Analyst' },\n ],\n },\n {\n key: 'department',\n title: 'Department',\n dataIndex: 'department',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Engineering', value: 'Engineering' },\n { label: 'Design', value: 'Design' },\n { label: 'Marketing', value: 'Marketing' },\n { label: 'Sales', value: 'Sales' },\n { label: 'HR', value: 'HR' },\n ],\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Active', value: 'active' },\n { label: 'Inactive', value: 'inactive' },\n { label: 'Pending', value: 'pending' },\n ],\n render: (status: User['status']) => (\n <Badge \n variant={\n status === 'active' ? 'success' : \n status === 'inactive' ? 'secondary' : 'warning'\n }\n >\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'joinDate',\n title: 'Join Date',\n dataIndex: 'joinDate',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n {\n key: 'actions',\n title: 'Actions',\n dataIndex: 'id',\n align: 'center',\n render: (_, record) => (\n <div className=\"flex items-center justify-center space-x-1\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.info(`View user ${record.name}`)}>\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.info(`Edit user ${record.name}`)}>\n <Edit className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.warning(`Delete user ${record.name}`)}>\n <Trash2 className=\"h-4 w-4 text-danger-600\" />\n </Button>\n </div>\n ),\n },\n ];\n\n // Sales table columns\n const salesColumns: Column<Sale>[] = [\n {\n key: 'product',\n title: 'Product',\n dataIndex: 'product',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (product) => (\n <div className=\"font-medium text-gray-900\">{product}</div>\n ),\n },\n {\n key: 'customer',\n title: 'Customer',\n dataIndex: 'customer',\n sortable: true,\n filterable: true,\n filterType: 'text',\n },\n {\n key: 'amount',\n title: 'Amount',\n dataIndex: 'amount',\n sortable: true,\n filterable: true,\n filterType: 'number',\n align: 'right',\n render: (amount: number) => (\n <div className=\"flex items-center justify-end space-x-1\">\n <DollarSign className=\"h-4 w-4 text-gray-400\" />\n <span className=\"font-medium\">{amount.toLocaleString()}</span>\n </div>\n ),\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Completed', value: 'completed' },\n { label: 'Pending', value: 'pending' },\n { label: 'Cancelled', value: 'cancelled' },\n ],\n render: (status: Sale['status']) => (\n <Badge \n variant={\n status === 'completed' ? 'success' : \n status === 'pending' ? 'warning' : 'danger'\n }\n >\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'region',\n title: 'Region',\n dataIndex: 'region',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'North America', value: 'North America' },\n { label: 'Europe', value: 'Europe' },\n { label: 'Asia Pacific', value: 'Asia Pacific' },\n { label: 'Latin America', value: 'Latin America' },\n ],\n },\n {\n key: 'date',\n title: 'Date',\n dataIndex: 'date',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n ];\n\n // Tasks table columns\n const taskColumns: Column<Task>[] = [\n {\n key: 'title',\n title: 'Task',\n dataIndex: 'title',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (title, record) => (\n <div>\n <div className=\"font-medium text-gray-900\">{title}</div>\n <div className=\"text-sm text-gray-500\">{record.project}</div>\n </div>\n ),\n },\n {\n key: 'assignee',\n title: 'Assignee',\n dataIndex: 'assignee',\n sortable: true,\n filterable: true,\n filterType: 'text',\n },\n {\n key: 'priority',\n title: 'Priority',\n dataIndex: 'priority',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'High', value: 'high' },\n { label: 'Urgent', value: 'urgent' },\n ],\n render: (priority: Task['priority']) => (\n <Badge \n variant={\n priority === 'urgent' ? 'danger' :\n priority === 'high' ? 'warning' :\n priority === 'medium' ? 'secondary' : 'outline'\n }\n >\n {priority.charAt(0).toUpperCase() + priority.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'To Do', value: 'todo' },\n { label: 'In Progress', value: 'in-progress' },\n { label: 'Review', value: 'review' },\n { label: 'Completed', value: 'completed' },\n ],\n render: (status: Task['status']) => (\n <Badge \n variant={\n status === 'completed' ? 'success' :\n status === 'in-progress' ? 'warning' :\n status === 'review' ? 'secondary' : 'outline'\n }\n >\n {status.replace('-', ' ').replace(/\\b\\w/g, l => l.toUpperCase())}\n </Badge>\n ),\n },\n {\n key: 'dueDate',\n title: 'Due Date',\n dataIndex: 'dueDate',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n {\n key: 'tags',\n title: 'Tags',\n dataIndex: 'tags',\n render: (tags: string[]) => (\n <div className=\"flex flex-wrap gap-1\">\n {tags.slice(0, 2).map(tag => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n {tags.length > 2 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{tags.length - 2}\n </Badge>\n )}\n </div>\n ),\n },\n ];\n\n const getCurrentData = () => {\n switch (selectedTab) {\n case 'users': return usersData;\n case 'sales': return salesData;\n case 'tasks': return tasksData;\n default: return [];\n }\n };\n\n const getCurrentColumns = () => {\n switch (selectedTab) {\n case 'users': return userColumns;\n case 'sales': return salesColumns;\n case 'tasks': return taskColumns;\n default: return [];\n }\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">DataTable Component</h1>\n <p className=\"text-gray-600 mt-1\">\n A comprehensive table component with filtering, sorting, and pagination\n </p>\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button variant=\"outline\" onClick={() => showToast.info('Export functionality')}>\n <Download className=\"h-4 w-4 mr-2\" />\n Export\n </Button>\n <Button variant=\"primary\" onClick={() => showToast.success('Add new item')}>\n <Plus className=\"h-4 w-4 mr-2\" />\n Add New\n </Button>\n </div>\n </div>\n\n {/* Tabs */}\n <div className=\"border-b border-gray-200\">\n <nav className=\"-mb-px flex space-x-8\">\n {[\n { key: 'users', label: 'Users', icon: Users },\n { key: 'sales', label: 'Sales', icon: DollarSign },\n { key: 'tasks', label: 'Tasks', icon: Calendar },\n ].map(({ key, label, icon: Icon }) => (\n <button\n key={key}\n onClick={() => setSelectedTab(key as any)}\n className={`\n flex items-center space-x-2 py-2 px-1 border-b-2 font-medium text-sm\n ${selectedTab === key\n ? 'border-primary-500 text-primary-600'\n : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'\n }\n `}\n >\n <Icon className=\"h-4 w-4\" />\n <span>{label}</span>\n </button>\n ))}\n </nav>\n </div>\n\n {/* Stats Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Total Records</p>\n <p className=\"text-2xl font-bold text-gray-900\">{getCurrentData().length}</p>\n </div>\n <div className=\"p-2 bg-primary-100 rounded-lg\">\n <Users className=\"h-6 w-6 text-primary-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n \n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Selected</p>\n <p className=\"text-2xl font-bold text-gray-900\">{selectedRows.length}</p>\n </div>\n <div className=\"p-2 bg-success-100 rounded-lg\">\n <Filter className=\"h-6 w-6 text-success-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Active Filters</p>\n <p className=\"text-2xl font-bold text-gray-900\">0</p>\n </div>\n <div className=\"p-2 bg-warning-100 rounded-lg\">\n <Filter className=\"h-6 w-6 text-warning-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Performance</p>\n <div className=\"flex items-center space-x-1\">\n <TrendingUp className=\"h-4 w-4 text-success-600\" />\n <p className=\"text-2xl font-bold text-gray-900\">Fast</p>\n </div>\n </div>\n <div className=\"p-2 bg-success-100 rounded-lg\">\n <TrendingUp className=\"h-6 w-6 text-success-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* DataTable */}\n <Card>\n <CardContent className=\"p-0\">\n {selectedTab === \"users\" && (\n <DataTable<User>\n columns={userColumns}\n dataSource={usersData}\n rowKey=\"id\"\n pagination={{\n current: 1,\n pageSize: 10,\n total: usersData.length,\n showSizeChanger: true,\n pageSizeOptions: [5, 10, 20, 50],\n }}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Users Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {usersData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(pagination, filters, sorter) => {\n console.log('Table changed:', { pagination, filters, sorter });\n }}\n />\n )}\n\n {selectedTab === \"sales\" && (\n <DataTable<Sale>\n columns={salesColumns}\n dataSource={salesData}\n rowKey=\"id\"\n pagination={{\n current: 1,\n pageSize: 10,\n total: salesData.length,\n showSizeChanger: true,\n pageSizeOptions: [5, 10, 20, 50],\n }}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Sales Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {salesData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(pagination, filters, sorter) => {\n console.log('Table changed:', { pagination, filters, sorter });\n }}\n />\n )}\n\n {selectedTab === \"tasks\" && (\n <DataTable<Task>\n columns={taskColumns}\n dataSource={tasksData}\n rowKey=\"id\"\n pagination={{\n current: 1,\n pageSize: 10,\n total: tasksData.length,\n showSizeChanger: true,\n pageSizeOptions: [5, 10, 20, 50],\n }}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Tasks Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {tasksData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(pagination, filters, sorter) => {\n console.log('Table changed:', { pagination, filters, sorter });\n }}\n />\n )}\n </CardContent>\n </Card>\n\n {/* Documentation */}\n <Card>\n <CardHeader>\n <CardTitle>Component Features</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <h4 className=\"font-semibold text-gray-900 mb-2\">Core Features</h4>\n <ul className=\"space-y-1 text-sm text-gray-600\">\n <li>• Sortable columns with visual indicators</li>\n <li>• Advanced filtering (text, select, date)</li>\n <li>• Pagination with configurable page sizes</li>\n <li>• Row selection (single/multiple)</li>\n <li>• Responsive design for all screen sizes</li>\n <li>• Loading and empty states</li>\n </ul>\n </div>\n <div>\n <h4 className=\"font-semibold text-gray-900 mb-2\">Advanced Features</h4>\n <ul className=\"space-y-1 text-sm text-gray-600\">\n <li>• Custom cell renderers</li>\n <li>• TypeScript support with full typing</li>\n <li>• Accessibility features (ARIA labels)</li>\n <li>• Performance optimizations</li>\n <li>• Customizable styling and themes</li>\n <li>• Export and bulk actions support</li>\n </ul>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"DataTableShowcase.js","sources":["../../../src/components/DataTable/DataTableShowcase.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { useState } from \"react\";\nimport { \n Users, \n Mail, \n Phone, \n MapPin, \n Calendar,\n DollarSign,\n TrendingUp,\n TrendingDown,\n Eye,\n Edit,\n Trash2,\n Download,\n Filter,\n Plus\n} from \"lucide-react\";\nimport { DataTable } from \"./DataTable\";\nimport { Button } from \"../Button\";\nimport { Badge } from \"../Badge\";\nimport { Avatar, AvatarImage, AvatarFallback } from \"../Avatar\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../Card\";\nimport { showToast } from \"../Toast\";\nimport type { Column, FilterValue, SortConfig, PaginationConfig } from \"./DataTable.types\";\n\n// Sample data types\ninterface User {\n id: number;\n name: string;\n email: string;\n role: string;\n status: 'active' | 'inactive' | 'pending';\n avatar: string;\n joinDate: string;\n lastLogin: string;\n department: string;\n}\n\ninterface Sale {\n id: number;\n product: string;\n customer: string;\n amount: number;\n status: 'completed' | 'pending' | 'cancelled';\n date: string;\n region: string;\n salesperson: string;\n}\n\ninterface Task {\n id: number;\n title: string;\n assignee: string;\n priority: 'low' | 'medium' | 'high' | 'urgent';\n status: 'todo' | 'in-progress' | 'review' | 'completed';\n dueDate: string;\n project: string;\n tags: string[];\n}\n\n// Generate sample data\nconst generateUsers = (): User[] => {\n const roles = ['Admin', 'Manager', 'Developer', 'Designer', 'Analyst'];\n const departments = ['Engineering', 'Design', 'Marketing', 'Sales', 'HR'];\n const statuses: User['status'][] = ['active', 'inactive', 'pending'];\n \n return Array.from({ length: 50 }, (_, i) => ({\n id: i + 1,\n name: `User ${i + 1}`,\n email: `user${i + 1}@company.com`,\n role: roles[Math.floor(Math.random() * roles.length)],\n status: statuses[Math.floor(Math.random() * statuses.length)],\n avatar: `https://images.pexels.com/photos/${774909 + i}/pexels-photo-${774909 + i}.jpeg?auto=compress&cs=tinysrgb&w=64`,\n joinDate: new Date(2020 + Math.floor(Math.random() * 4), Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],\n lastLogin: new Date(Date.now() - Math.floor(Math.random() * 30) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n department: departments[Math.floor(Math.random() * departments.length)],\n }));\n};\n\nconst generateSales = (): Sale[] => {\n const products = ['Pro Plan', 'Basic Plan', 'Enterprise', 'Starter', 'Premium'];\n const regions = ['North America', 'Europe', 'Asia Pacific', 'Latin America'];\n const statuses: Sale['status'][] = ['completed', 'pending', 'cancelled'];\n \n return Array.from({ length: 75 }, (_, i) => ({\n id: i + 1,\n product: products[Math.floor(Math.random() * products.length)],\n customer: `Customer ${i + 1}`,\n amount: Math.floor(Math.random() * 10000) + 100,\n status: statuses[Math.floor(Math.random() * statuses.length)],\n date: new Date(2024, Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],\n region: regions[Math.floor(Math.random() * regions.length)],\n salesperson: `Sales Rep ${Math.floor(Math.random() * 10) + 1}`,\n }));\n};\n\nconst generateTasks = (): Task[] => {\n const priorities: Task['priority'][] = ['low', 'medium', 'high', 'urgent'];\n const statuses: Task['status'][] = ['todo', 'in-progress', 'review', 'completed'];\n const projects = ['Website Redesign', 'Mobile App', 'API Integration', 'Dashboard', 'Marketing Campaign'];\n const tagOptions = ['frontend', 'backend', 'design', 'testing', 'documentation', 'bug', 'feature'];\n \n return Array.from({ length: 60 }, (_, i) => ({\n id: i + 1,\n title: `Task ${i + 1}: Implement feature`,\n assignee: `Developer ${Math.floor(Math.random() * 8) + 1}`,\n priority: priorities[Math.floor(Math.random() * priorities.length)],\n status: statuses[Math.floor(Math.random() * statuses.length)],\n dueDate: new Date(Date.now() + Math.floor(Math.random() * 60) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],\n project: projects[Math.floor(Math.random() * projects.length)],\n tags: Array.from({ length: Math.floor(Math.random() * 3) + 1 }, () => \n tagOptions[Math.floor(Math.random() * tagOptions.length)]\n ).filter((tag, index, arr) => arr.indexOf(tag) === index),\n }));\n};\n\n// Sample data\nconst usersData = generateUsers();\nconst salesData = generateSales();\nconst tasksData = generateTasks();\n\nexport const DataTableShowcase: React.FC = () => {\n const [selectedTab, setSelectedTab] = useState<'users' | 'sales' | 'tasks'>('users');\n const [selectedRows, setSelectedRows] = useState<React.Key[]>([]);\n\n // Pagination state\n const [pagination, setPagination] = useState({\n current: 1,\n pageSize: 10,\n total: 50, // default, will update below\n showSizeChanger: true,\n pageSizeOptions: [5, 10, 20, 50],\n });\n\n // Update total when tab/data changes\n React.useEffect(() => {\n let total = 0;\n if (selectedTab === \"users\") total = usersData.length;\n else if (selectedTab === \"sales\") total = salesData.length;\n else if (selectedTab === \"tasks\") total = tasksData.length;\n setPagination(p => ({ ...p, total, current: 1 }));\n }, [selectedTab]);\n\n // User table columns\n const userColumns: Column<User>[] = [\n {\n key: 'user',\n title: 'User',\n dataIndex: 'name',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (_, record) => (\n <div className=\"flex items-center space-x-3\">\n <Avatar size=\"sm\">\n <AvatarImage src={record.avatar} />\n <AvatarFallback>{record.name.split(' ').map(n => n[0]).join('')}</AvatarFallback>\n </Avatar>\n <div>\n <div className=\"font-medium text-gray-900\">{record.name}</div>\n <div className=\"text-sm text-gray-500\">{record.email}</div>\n </div>\n </div>\n ),\n },\n {\n key: 'role',\n title: 'Role',\n dataIndex: 'role',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Admin', value: 'Admin' },\n { label: 'Manager', value: 'Manager' },\n { label: 'Developer', value: 'Developer' },\n { label: 'Designer', value: 'Designer' },\n { label: 'Analyst', value: 'Analyst' },\n ],\n },\n {\n key: 'department',\n title: 'Department',\n dataIndex: 'department',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Engineering', value: 'Engineering' },\n { label: 'Design', value: 'Design' },\n { label: 'Marketing', value: 'Marketing' },\n { label: 'Sales', value: 'Sales' },\n { label: 'HR', value: 'HR' },\n ],\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Active', value: 'active' },\n { label: 'Inactive', value: 'inactive' },\n { label: 'Pending', value: 'pending' },\n ],\n render: (status: User['status']) => (\n <Badge \n variant={\n status === 'active' ? 'success' : \n status === 'inactive' ? 'secondary' : 'warning'\n }\n >\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'joinDate',\n title: 'Join Date',\n dataIndex: 'joinDate',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n {\n key: 'actions',\n title: 'Actions',\n dataIndex: 'id',\n align: 'center',\n render: (_, record) => (\n <div className=\"flex items-center justify-center space-x-1\">\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.info(`View user ${record.name}`)}>\n <Eye className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.info(`Edit user ${record.name}`)}>\n <Edit className=\"h-4 w-4\" />\n </Button>\n <Button variant=\"ghost\" size=\"sm\" onClick={() => showToast.warning(`Delete user ${record.name}`)}>\n <Trash2 className=\"h-4 w-4 text-danger-600\" />\n </Button>\n </div>\n ),\n },\n ];\n\n // Sales table columns\n const salesColumns: Column<Sale>[] = [\n {\n key: 'product',\n title: 'Product',\n dataIndex: 'product',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (product) => (\n <div className=\"font-medium text-gray-900\">{product}</div>\n ),\n },\n {\n key: 'customer',\n title: 'Customer',\n dataIndex: 'customer',\n sortable: true,\n filterable: true,\n filterType: 'text',\n },\n {\n key: 'amount',\n title: 'Amount',\n dataIndex: 'amount',\n sortable: true,\n filterable: true,\n filterType: 'number',\n align: 'right',\n render: (amount: number) => (\n <div className=\"flex items-center justify-end space-x-1\">\n <DollarSign className=\"h-4 w-4 text-gray-400\" />\n <span className=\"font-medium\">{amount.toLocaleString()}</span>\n </div>\n ),\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Completed', value: 'completed' },\n { label: 'Pending', value: 'pending' },\n { label: 'Cancelled', value: 'cancelled' },\n ],\n render: (status: Sale['status']) => (\n <Badge \n variant={\n status === 'completed' ? 'success' : \n status === 'pending' ? 'warning' : 'danger'\n }\n >\n {status.charAt(0).toUpperCase() + status.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'region',\n title: 'Region',\n dataIndex: 'region',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'North America', value: 'North America' },\n { label: 'Europe', value: 'Europe' },\n { label: 'Asia Pacific', value: 'Asia Pacific' },\n { label: 'Latin America', value: 'Latin America' },\n ],\n },\n {\n key: 'date',\n title: 'Date',\n dataIndex: 'date',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n ];\n\n // Tasks table columns\n const taskColumns: Column<Task>[] = [\n {\n key: 'title',\n title: 'Task',\n dataIndex: 'title',\n sortable: true,\n filterable: true,\n filterType: 'text',\n render: (title, record) => (\n <div>\n <div className=\"font-medium text-gray-900\">{title}</div>\n <div className=\"text-sm text-gray-500\">{record.project}</div>\n </div>\n ),\n },\n {\n key: 'assignee',\n title: 'Assignee',\n dataIndex: 'assignee',\n sortable: true,\n filterable: true,\n filterType: 'text',\n },\n {\n key: 'priority',\n title: 'Priority',\n dataIndex: 'priority',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'Low', value: 'low' },\n { label: 'Medium', value: 'medium' },\n { label: 'High', value: 'high' },\n { label: 'Urgent', value: 'urgent' },\n ],\n render: (priority: Task['priority']) => (\n <Badge \n variant={\n priority === 'urgent' ? 'danger' :\n priority === 'high' ? 'warning' :\n priority === 'medium' ? 'secondary' : 'outline'\n }\n >\n {priority.charAt(0).toUpperCase() + priority.slice(1)}\n </Badge>\n ),\n },\n {\n key: 'status',\n title: 'Status',\n dataIndex: 'status',\n sortable: true,\n filterable: true,\n filterType: 'select',\n filterOptions: [\n { label: 'To Do', value: 'todo' },\n { label: 'In Progress', value: 'in-progress' },\n { label: 'Review', value: 'review' },\n { label: 'Completed', value: 'completed' },\n ],\n render: (status: Task['status']) => (\n <Badge \n variant={\n status === 'completed' ? 'success' :\n status === 'in-progress' ? 'warning' :\n status === 'review' ? 'secondary' : 'outline'\n }\n >\n {status.replace('-', ' ').replace(/\\b\\w/g, l => l.toUpperCase())}\n </Badge>\n ),\n },\n {\n key: 'dueDate',\n title: 'Due Date',\n dataIndex: 'dueDate',\n sortable: true,\n filterable: true,\n filterType: 'date',\n },\n {\n key: 'tags',\n title: 'Tags',\n dataIndex: 'tags',\n render: (tags: string[]) => (\n <div className=\"flex flex-wrap gap-1\">\n {tags.slice(0, 2).map(tag => (\n <Badge key={tag} variant=\"outline\" className=\"text-xs\">\n {tag}\n </Badge>\n ))}\n {tags.length > 2 && (\n <Badge variant=\"outline\" className=\"text-xs\">\n +{tags.length - 2}\n </Badge>\n )}\n </div>\n ),\n },\n ];\n\n const getCurrentData = () => {\n switch (selectedTab) {\n case 'users': return usersData;\n case 'sales': return salesData;\n case 'tasks': return tasksData;\n default: return [];\n }\n };\n\n const getCurrentColumns = () => {\n switch (selectedTab) {\n case 'users': return userColumns;\n case 'sales': return salesColumns;\n case 'tasks': return taskColumns;\n default: return [];\n }\n };\n\n return (\n <div className=\"space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-bold text-gray-900\">DataTable Component</h1>\n <p className=\"text-gray-600 mt-1\">\n A comprehensive table component with filtering, sorting, and pagination\n </p>\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button variant=\"outline\" onClick={() => showToast.info('Export functionality')}>\n <Download className=\"h-4 w-4 mr-2\" />\n Export\n </Button>\n <Button variant=\"primary\" onClick={() => showToast.success('Add new item')}>\n <Plus className=\"h-4 w-4 mr-2\" />\n Add New\n </Button>\n </div>\n </div>\n\n {/* Tabs */}\n <div className=\"border-b border-gray-200\">\n <nav className=\"-mb-px flex space-x-8\">\n {[\n { key: 'users', label: 'Users', icon: Users },\n { key: 'sales', label: 'Sales', icon: DollarSign },\n { key: 'tasks', label: 'Tasks', icon: Calendar },\n ].map(({ key, label, icon: Icon }) => (\n <button\n key={key}\n onClick={() => setSelectedTab(key as any)}\n className={`\n flex items-center space-x-2 py-2 px-1 border-b-2 font-medium text-sm\n ${selectedTab === key\n ? 'border-primary-500 text-primary-600'\n : 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'\n }\n `}\n >\n <Icon className=\"h-4 w-4\" />\n <span>{label}</span>\n </button>\n ))}\n </nav>\n </div>\n\n {/* Stats Cards */}\n <div className=\"grid grid-cols-1 md:grid-cols-4 gap-4\">\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Total Records</p>\n <p className=\"text-2xl font-bold text-gray-900\">{getCurrentData().length}</p>\n </div>\n <div className=\"p-2 bg-primary-100 rounded-lg\">\n <Users className=\"h-6 w-6 text-primary-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n \n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Selected</p>\n <p className=\"text-2xl font-bold text-gray-900\">{selectedRows.length}</p>\n </div>\n <div className=\"p-2 bg-success-100 rounded-lg\">\n <Filter className=\"h-6 w-6 text-success-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Active Filters</p>\n <p className=\"text-2xl font-bold text-gray-900\">0</p>\n </div>\n <div className=\"p-2 bg-warning-100 rounded-lg\">\n <Filter className=\"h-6 w-6 text-warning-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n\n <Card>\n <CardContent className=\"p-4\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-sm font-medium text-gray-600\">Performance</p>\n <div className=\"flex items-center space-x-1\">\n <TrendingUp className=\"h-4 w-4 text-success-600\" />\n <p className=\"text-2xl font-bold text-gray-900\">Fast</p>\n </div>\n </div>\n <div className=\"p-2 bg-success-100 rounded-lg\">\n <TrendingUp className=\"h-6 w-6 text-success-600\" />\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* DataTable */}\n <Card>\n <CardContent className=\"p-0\">\n {selectedTab === \"users\" && (\n <DataTable<User>\n columns={userColumns}\n dataSource={usersData}\n rowKey=\"id\"\n pagination={pagination}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Users Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {usersData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(newPagination, filters, sorter) => {\n setPagination(p => ({\n ...p,\n current: newPagination.current,\n pageSize: newPagination.pageSize,\n }));\n }}\n />\n )}\n\n {selectedTab === \"sales\" && (\n <DataTable<Sale>\n columns={salesColumns}\n dataSource={salesData}\n rowKey=\"id\"\n pagination={pagination}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Sales Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {salesData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(newPagination, filters, sorter) => {\n setPagination(p => ({\n ...p,\n current: newPagination.current,\n pageSize: newPagination.pageSize,\n }));\n }}\n />\n )}\n\n {selectedTab === \"tasks\" && (\n <DataTable<Task>\n columns={taskColumns}\n dataSource={tasksData}\n rowKey=\"id\"\n pagination={pagination}\n rowSelection={{\n type: 'checkbox',\n selectedRowKeys: selectedRows,\n onChange: (keys) => {\n setSelectedRows(keys);\n showToast.info(`Selected ${keys.length} items`);\n },\n }}\n size=\"middle\"\n bordered={false}\n title={() => (\n <div className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h3 className=\"text-lg font-semibold text-gray-900\">\n Tasks Data\n </h3>\n <div className=\"flex items-center space-x-2\">\n <Badge variant=\"outline\">\n {tasksData.length} total\n </Badge>\n {selectedRows.length > 0 && (\n <Badge variant=\"secondary\">\n {selectedRows.length} selected\n </Badge>\n )}\n </div>\n </div>\n )}\n onChange={(newPagination, filters, sorter) => {\n setPagination(p => ({\n ...p,\n current: newPagination.current,\n pageSize: newPagination.pageSize,\n }));\n }}\n />\n )}\n </CardContent>\n </Card>\n\n {/* Documentation */}\n <Card>\n <CardHeader>\n <CardTitle>Component Features</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-4\">\n <div>\n <h4 className=\"font-semibold text-gray-900 mb-2\">Core Features</h4>\n <ul className=\"space-y-1 text-sm text-gray-600\">\n <li>• Sortable columns with visual indicators</li>\n <li>• Advanced filtering (text, select, date)</li>\n <li>• Pagination with configurable page sizes</li>\n <li>• Row selection (single/multiple)</li>\n <li>• Responsive design for all screen sizes</li>\n <li>• Loading and empty states</li>\n </ul>\n </div>\n <div>\n <h4 className=\"font-semibold text-gray-900 mb-2\">Advanced Features</h4>\n <ul className=\"space-y-1 text-sm text-gray-600\">\n <li>• Custom cell renderers</li>\n <li>• TypeScript support with full typing</li>\n <li>• Accessibility features (ARIA labels)</li>\n <li>• Performance optimizations</li>\n <li>• Customizable styling and themes</li>\n <li>• Export and bulk actions support</li>\n </ul>\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n};"],"names":["_jsxs","_jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beyondcorp/beyond-ui",
3
- "version": "1.2.75",
3
+ "version": "1.2.79",
4
4
  "description": "A comprehensive React UI component library built with TypeScript, TailwindCSS, and CVA",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",