@beyondcorp/beyond-ui 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +233 -89
- package/dist/_virtual/jsx-runtime.js +6 -0
- package/dist/_virtual/jsx-runtime.js.map +1 -0
- package/dist/_virtual/jsx-runtime2.js +4 -0
- package/dist/_virtual/jsx-runtime2.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.development.js +4 -0
- package/dist/_virtual/react-jsx-runtime.development.js.map +1 -0
- package/dist/_virtual/react-jsx-runtime.production.min.js +4 -0
- package/dist/_virtual/react-jsx-runtime.production.min.js.map +1 -0
- package/dist/components/Alert/Alert.d.ts +11 -0
- package/dist/components/Alert/Alert.js +28 -0
- package/dist/components/Alert/Alert.js.map +1 -0
- package/dist/components/Alert/index.d.ts +1 -0
- package/dist/components/Alert/index.js +2 -0
- package/dist/components/Alert/index.js.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +11 -0
- package/dist/components/Avatar/Avatar.js +27 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +1 -0
- package/dist/components/Avatar/index.js +2 -0
- package/dist/components/Avatar/index.js.map +1 -0
- package/dist/components/Badge/Badge.d.ts +9 -0
- package/dist/components/Badge/Badge.js +25 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/index.d.ts +1 -0
- package/dist/components/Badge/index.js +2 -0
- package/dist/components/Badge/index.js.map +1 -0
- package/dist/components/Button/Button.d.ts +11 -0
- package/dist/components/Button/Button.js +38 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/index.d.ts +1 -0
- package/dist/components/Button/index.js +2 -0
- package/dist/components/Button/index.js.map +1 -0
- package/dist/components/Card/Card.d.ts +15 -0
- package/dist/components/Card/Card.js +39 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/index.d.ts +1 -0
- package/dist/components/Card/index.js +2 -0
- package/dist/components/Card/index.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +9 -0
- package/dist/components/Checkbox/Checkbox.js +25 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +1 -0
- package/dist/components/Checkbox/index.js +2 -0
- package/dist/components/Checkbox/index.js.map +1 -0
- package/dist/components/ComponentShowcase/ComponentShowcase.d.ts +6 -0
- package/dist/components/ComponentShowcase/ComponentShowcase.js +540 -0
- package/dist/components/ComponentShowcase/ComponentShowcase.js.map +1 -0
- package/dist/components/ComponentShowcase/index.d.ts +1 -0
- package/dist/components/ComponentShowcase/index.js +2 -0
- package/dist/components/ComponentShowcase/index.js.map +1 -0
- package/dist/components/DashboardGrid/DashboardGrid.d.ts +16 -0
- package/dist/components/DashboardGrid/DashboardGrid.js +54 -0
- package/dist/components/DashboardGrid/DashboardGrid.js.map +1 -0
- package/dist/components/DashboardGrid/index.d.ts +1 -0
- package/dist/components/DashboardGrid/index.js +2 -0
- package/dist/components/DashboardGrid/index.js.map +1 -0
- package/dist/components/DashboardHeader/DashboardHeader.d.ts +16 -0
- package/dist/components/DashboardHeader/DashboardHeader.js +25 -0
- package/dist/components/DashboardHeader/DashboardHeader.js.map +1 -0
- package/dist/components/DashboardHeader/index.d.ts +1 -0
- package/dist/components/DashboardHeader/index.js +2 -0
- package/dist/components/DashboardHeader/index.js.map +1 -0
- package/dist/components/DashboardLayout/DashboardLayout.d.ts +18 -0
- package/dist/components/DashboardLayout/DashboardLayout.js +19 -0
- package/dist/components/DashboardLayout/DashboardLayout.js.map +1 -0
- package/dist/components/DashboardLayout/index.d.ts +1 -0
- package/dist/components/DashboardLayout/index.js +2 -0
- package/dist/components/DashboardLayout/index.js.map +1 -0
- package/dist/components/DataTable/DataTable.d.ts +5 -0
- package/dist/components/DataTable/DataTable.js +246 -0
- package/dist/components/DataTable/DataTable.js.map +1 -0
- package/dist/components/DataTable/DataTable.types.d.ts +70 -0
- package/dist/components/DataTable/DataTableShowcase.d.ts +2 -0
- package/dist/components/DataTable/DataTableShowcase.js +348 -0
- package/dist/components/DataTable/DataTableShowcase.js.map +1 -0
- package/dist/components/DataTable/index.d.ts +2 -0
- package/dist/components/DataTable/index.js +2 -0
- package/dist/components/DataTable/index.js.map +1 -0
- package/dist/components/Input/Input.d.ts +10 -0
- package/dist/components/Input/Input.js +30 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/index.d.ts +1 -0
- package/dist/components/Input/index.js +2 -0
- package/dist/components/Input/index.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts +17 -0
- package/dist/components/Modal/Modal.js +35 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Modal/index.d.ts +1 -0
- package/dist/components/Modal/index.js +2 -0
- package/dist/components/Modal/index.js.map +1 -0
- package/dist/components/Navbar/Navbar.d.ts +13 -0
- package/dist/components/Navbar/Navbar.js +35 -0
- package/dist/components/Navbar/Navbar.js.map +1 -0
- package/dist/components/Navbar/index.d.ts +1 -0
- package/dist/components/Navbar/index.js +2 -0
- package/dist/components/Navbar/index.js.map +1 -0
- package/dist/components/Sidebar/Sidebar.d.ts +22 -0
- package/dist/components/Sidebar/Sidebar.js +129 -0
- package/dist/components/Sidebar/Sidebar.js.map +1 -0
- package/dist/components/Sidebar/index.d.ts +1 -0
- package/dist/components/Sidebar/index.js +2 -0
- package/dist/components/Sidebar/index.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.d.ts +9 -0
- package/dist/components/Skeleton/Skeleton.js +23 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +1 -0
- package/dist/components/Skeleton/index.js +2 -0
- package/dist/components/Skeleton/index.js.map +1 -0
- package/dist/components/Spinner/Spinner.d.ts +10 -0
- package/dist/components/Spinner/Spinner.js +32 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +1 -0
- package/dist/components/Spinner/index.js +2 -0
- package/dist/components/Spinner/index.js.map +1 -0
- package/dist/components/StatsCard/StatsCard.d.ts +19 -0
- package/dist/components/StatsCard/StatsCard.js +56 -0
- package/dist/components/StatsCard/StatsCard.js.map +1 -0
- package/dist/components/StatsCard/index.d.ts +1 -0
- package/dist/components/StatsCard/index.js +2 -0
- package/dist/components/StatsCard/index.js.map +1 -0
- package/dist/components/Switch/Switch.d.ts +11 -0
- package/dist/components/Switch/Switch.js +39 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/index.d.ts +1 -0
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/Switch/index.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +25 -0
- package/dist/components/Tabs/Tabs.js +60 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/index.d.ts +1 -0
- package/dist/components/Tabs/index.js +2 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +9 -0
- package/dist/components/Textarea/Textarea.js +24 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +1 -0
- package/dist/components/Textarea/index.js +2 -0
- package/dist/components/Textarea/index.js.map +1 -0
- package/dist/components/Toast/Toast.d.ts +18 -0
- package/dist/components/Toast/Toast.js +75 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/index.d.ts +1 -0
- package/dist/components/Toast/index.js +2 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/hooks/useBreakpoint.d.ts +14 -0
- package/dist/hooks/useBreakpoint.js +40 -0
- package/dist/hooks/useBreakpoint.js.map +1 -0
- package/dist/hooks/useDarkMode.d.ts +4 -0
- package/dist/hooks/useDarkMode.js +29 -0
- package/dist/hooks/useDarkMode.js.map +1 -0
- package/dist/hooks/useDebounce.d.ts +1 -0
- package/dist/hooks/useDebounce.js +17 -0
- package/dist/hooks/useDebounce.js.map +1 -0
- package/dist/hooks/useLocalStorage.d.ts +1 -0
- package/dist/hooks/useLocalStorage.js +44 -0
- package/dist/hooks/useLocalStorage.js.map +1 -0
- package/dist/hooks/useToggle.d.ts +1 -0
- package/dist/hooks/useToggle.js +11 -0
- package/dist/hooks/useToggle.js.map +1 -0
- package/dist/index.d.ts +29 -424
- package/dist/index.js +30 -3375
- package/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +37 -0
- package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js.map +1 -0
- package/dist/node_modules/@radix-ui/react-slot/dist/index.js +91 -0
- package/dist/node_modules/@radix-ui/react-slot/dist/index.js.map +1 -0
- package/dist/node_modules/goober/dist/goober.modern.js +4 -0
- package/dist/node_modules/goober/dist/goober.modern.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +48 -0
- package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +21 -0
- package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/alert-circle.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/alert-circle.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/alert-triangle.js +24 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/alert-triangle.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bar-chart-3.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bar-chart-3.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bell.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/bell.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/book.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/calendar.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check-circle.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check-circle.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/check.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-left.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-left.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/chevrons-right.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/code.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/code.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/copy.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/dollar-sign.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/dollar-sign.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/download.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/eye.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js +20 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/file-text.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/filter.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/filter.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/home.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/home.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/info.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/log-out.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/mail.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/mail.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/menu.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/menu.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +14 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/minus.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/monitor.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/moon.js +16 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/moon.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/mouse-pointer.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.js +26 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/palette.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js +18 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/panels-top-left.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/plus.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/search.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/search.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.js +23 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/settings.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/smartphone.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/smartphone.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/square-pen.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/square-pen.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sun.js +24 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/sun.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tablet.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/tablet.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js +20 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trash-2.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-down.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/trending-up.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/user.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/users.js +19 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/users.js.map +1 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js +17 -0
- package/dist/node_modules/lucide-react/dist/esm/icons/x.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js +1326 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.development.js.map +1 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js +25 -0
- package/dist/node_modules/react/cjs/react-jsx-runtime.production.min.js.map +1 -0
- package/dist/node_modules/react/jsx-runtime.js +20 -0
- package/dist/node_modules/react/jsx-runtime.js.map +1 -0
- package/dist/node_modules/react-hot-toast/dist/index.js +184 -0
- package/dist/node_modules/react-hot-toast/dist/index.js.map +1 -0
- package/dist/theme/default.d.ts +69 -0
- package/dist/theme/default.js +72 -0
- package/dist/theme/default.js.map +1 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +9 -0
- package/dist/utils/cn.js.map +1 -0
- package/package.json +8 -4
- package/dist/index.cjs +0 -3467
- package/dist/index.d.cts +0 -424
|
@@ -0,0 +1,348 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { DataTable } from './DataTable.js';
|
|
4
|
+
import { Button } from '../Button/Button.js';
|
|
5
|
+
import { Badge } from '../Badge/Badge.js';
|
|
6
|
+
import { Avatar, AvatarImage, AvatarFallback } from '../Avatar/Avatar.js';
|
|
7
|
+
import { Card, CardContent, CardHeader, CardTitle } from '../Card/Card.js';
|
|
8
|
+
import { showToast } from '../Toast/Toast.js';
|
|
9
|
+
import Download from '../../node_modules/lucide-react/dist/esm/icons/download.js';
|
|
10
|
+
import Plus from '../../node_modules/lucide-react/dist/esm/icons/plus.js';
|
|
11
|
+
import Users from '../../node_modules/lucide-react/dist/esm/icons/users.js';
|
|
12
|
+
import DollarSign from '../../node_modules/lucide-react/dist/esm/icons/dollar-sign.js';
|
|
13
|
+
import Calendar from '../../node_modules/lucide-react/dist/esm/icons/calendar.js';
|
|
14
|
+
import Filter from '../../node_modules/lucide-react/dist/esm/icons/filter.js';
|
|
15
|
+
import TrendingUp from '../../node_modules/lucide-react/dist/esm/icons/trending-up.js';
|
|
16
|
+
import Eye from '../../node_modules/lucide-react/dist/esm/icons/eye.js';
|
|
17
|
+
import SquarePen from '../../node_modules/lucide-react/dist/esm/icons/square-pen.js';
|
|
18
|
+
import Trash2 from '../../node_modules/lucide-react/dist/esm/icons/trash-2.js';
|
|
19
|
+
|
|
20
|
+
// Generate sample data
|
|
21
|
+
const generateUsers = () => {
|
|
22
|
+
const roles = ['Admin', 'Manager', 'Developer', 'Designer', 'Analyst'];
|
|
23
|
+
const departments = ['Engineering', 'Design', 'Marketing', 'Sales', 'HR'];
|
|
24
|
+
const statuses = ['active', 'inactive', 'pending'];
|
|
25
|
+
return Array.from({ length: 50 }, (_, i) => ({
|
|
26
|
+
id: i + 1,
|
|
27
|
+
name: `User ${i + 1}`,
|
|
28
|
+
email: `user${i + 1}@company.com`,
|
|
29
|
+
role: roles[Math.floor(Math.random() * roles.length)],
|
|
30
|
+
status: statuses[Math.floor(Math.random() * statuses.length)],
|
|
31
|
+
avatar: `https://images.pexels.com/photos/${774909 + i}/pexels-photo-${774909 + i}.jpeg?auto=compress&cs=tinysrgb&w=64`,
|
|
32
|
+
joinDate: new Date(2020 + Math.floor(Math.random() * 4), Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],
|
|
33
|
+
lastLogin: new Date(Date.now() - Math.floor(Math.random() * 30) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
|
|
34
|
+
department: departments[Math.floor(Math.random() * departments.length)],
|
|
35
|
+
}));
|
|
36
|
+
};
|
|
37
|
+
const generateSales = () => {
|
|
38
|
+
const products = ['Pro Plan', 'Basic Plan', 'Enterprise', 'Starter', 'Premium'];
|
|
39
|
+
const regions = ['North America', 'Europe', 'Asia Pacific', 'Latin America'];
|
|
40
|
+
const statuses = ['completed', 'pending', 'cancelled'];
|
|
41
|
+
return Array.from({ length: 75 }, (_, i) => ({
|
|
42
|
+
id: i + 1,
|
|
43
|
+
product: products[Math.floor(Math.random() * products.length)],
|
|
44
|
+
customer: `Customer ${i + 1}`,
|
|
45
|
+
amount: Math.floor(Math.random() * 10000) + 100,
|
|
46
|
+
status: statuses[Math.floor(Math.random() * statuses.length)],
|
|
47
|
+
date: new Date(2024, Math.floor(Math.random() * 12), Math.floor(Math.random() * 28) + 1).toISOString().split('T')[0],
|
|
48
|
+
region: regions[Math.floor(Math.random() * regions.length)],
|
|
49
|
+
salesperson: `Sales Rep ${Math.floor(Math.random() * 10) + 1}`,
|
|
50
|
+
}));
|
|
51
|
+
};
|
|
52
|
+
const generateTasks = () => {
|
|
53
|
+
const priorities = ['low', 'medium', 'high', 'urgent'];
|
|
54
|
+
const statuses = ['todo', 'in-progress', 'review', 'completed'];
|
|
55
|
+
const projects = ['Website Redesign', 'Mobile App', 'API Integration', 'Dashboard', 'Marketing Campaign'];
|
|
56
|
+
const tagOptions = ['frontend', 'backend', 'design', 'testing', 'documentation', 'bug', 'feature'];
|
|
57
|
+
return Array.from({ length: 60 }, (_, i) => ({
|
|
58
|
+
id: i + 1,
|
|
59
|
+
title: `Task ${i + 1}: Implement feature`,
|
|
60
|
+
assignee: `Developer ${Math.floor(Math.random() * 8) + 1}`,
|
|
61
|
+
priority: priorities[Math.floor(Math.random() * priorities.length)],
|
|
62
|
+
status: statuses[Math.floor(Math.random() * statuses.length)],
|
|
63
|
+
dueDate: new Date(Date.now() + Math.floor(Math.random() * 60) * 24 * 60 * 60 * 1000).toISOString().split('T')[0],
|
|
64
|
+
project: projects[Math.floor(Math.random() * projects.length)],
|
|
65
|
+
tags: Array.from({ length: Math.floor(Math.random() * 3) + 1 }, () => tagOptions[Math.floor(Math.random() * tagOptions.length)]).filter((tag, index, arr) => arr.indexOf(tag) === index),
|
|
66
|
+
}));
|
|
67
|
+
};
|
|
68
|
+
// Sample data
|
|
69
|
+
const usersData = generateUsers();
|
|
70
|
+
const salesData = generateSales();
|
|
71
|
+
const tasksData = generateTasks();
|
|
72
|
+
const DataTableShowcase = () => {
|
|
73
|
+
const [selectedTab, setSelectedTab] = useState('users');
|
|
74
|
+
const [selectedRows, setSelectedRows] = useState([]);
|
|
75
|
+
// User table columns
|
|
76
|
+
const userColumns = [
|
|
77
|
+
{
|
|
78
|
+
key: 'user',
|
|
79
|
+
title: 'User',
|
|
80
|
+
dataIndex: 'name',
|
|
81
|
+
sortable: true,
|
|
82
|
+
filterable: true,
|
|
83
|
+
filterType: 'text',
|
|
84
|
+
render: (_, record) => (jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-3", children: [jsxRuntimeExports.jsxs(Avatar, { size: "sm", children: [jsxRuntimeExports.jsx(AvatarImage, { src: record.avatar }), jsxRuntimeExports.jsx(AvatarFallback, { children: record.name.split(' ').map(n => n[0]).join('') })] }), jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("div", { className: "font-medium text-gray-900", children: record.name }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: record.email })] })] })),
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
key: 'role',
|
|
88
|
+
title: 'Role',
|
|
89
|
+
dataIndex: 'role',
|
|
90
|
+
sortable: true,
|
|
91
|
+
filterable: true,
|
|
92
|
+
filterType: 'select',
|
|
93
|
+
filterOptions: [
|
|
94
|
+
{ label: 'Admin', value: 'Admin' },
|
|
95
|
+
{ label: 'Manager', value: 'Manager' },
|
|
96
|
+
{ label: 'Developer', value: 'Developer' },
|
|
97
|
+
{ label: 'Designer', value: 'Designer' },
|
|
98
|
+
{ label: 'Analyst', value: 'Analyst' },
|
|
99
|
+
],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
key: 'department',
|
|
103
|
+
title: 'Department',
|
|
104
|
+
dataIndex: 'department',
|
|
105
|
+
sortable: true,
|
|
106
|
+
filterable: true,
|
|
107
|
+
filterType: 'select',
|
|
108
|
+
filterOptions: [
|
|
109
|
+
{ label: 'Engineering', value: 'Engineering' },
|
|
110
|
+
{ label: 'Design', value: 'Design' },
|
|
111
|
+
{ label: 'Marketing', value: 'Marketing' },
|
|
112
|
+
{ label: 'Sales', value: 'Sales' },
|
|
113
|
+
{ label: 'HR', value: 'HR' },
|
|
114
|
+
],
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
key: 'status',
|
|
118
|
+
title: 'Status',
|
|
119
|
+
dataIndex: 'status',
|
|
120
|
+
sortable: true,
|
|
121
|
+
filterable: true,
|
|
122
|
+
filterType: 'select',
|
|
123
|
+
filterOptions: [
|
|
124
|
+
{ label: 'Active', value: 'active' },
|
|
125
|
+
{ label: 'Inactive', value: 'inactive' },
|
|
126
|
+
{ label: 'Pending', value: 'pending' },
|
|
127
|
+
],
|
|
128
|
+
render: (status) => (jsxRuntimeExports.jsx(Badge, { variant: status === 'active' ? 'success' :
|
|
129
|
+
status === 'inactive' ? 'secondary' : 'warning', children: status.charAt(0).toUpperCase() + status.slice(1) })),
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
key: 'joinDate',
|
|
133
|
+
title: 'Join Date',
|
|
134
|
+
dataIndex: 'joinDate',
|
|
135
|
+
sortable: true,
|
|
136
|
+
filterable: true,
|
|
137
|
+
filterType: 'date',
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: 'actions',
|
|
141
|
+
title: 'Actions',
|
|
142
|
+
dataIndex: 'id',
|
|
143
|
+
align: 'center',
|
|
144
|
+
render: (_, record) => (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-center space-x-1", children: [jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => showToast.info(`View user ${record.name}`), children: jsxRuntimeExports.jsx(Eye, { className: "h-4 w-4" }) }), jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => showToast.info(`Edit user ${record.name}`), children: jsxRuntimeExports.jsx(SquarePen, { className: "h-4 w-4" }) }), jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => showToast.warning(`Delete user ${record.name}`), children: jsxRuntimeExports.jsx(Trash2, { className: "h-4 w-4 text-danger-600" }) })] })),
|
|
145
|
+
},
|
|
146
|
+
];
|
|
147
|
+
// Sales table columns
|
|
148
|
+
const salesColumns = [
|
|
149
|
+
{
|
|
150
|
+
key: 'product',
|
|
151
|
+
title: 'Product',
|
|
152
|
+
dataIndex: 'product',
|
|
153
|
+
sortable: true,
|
|
154
|
+
filterable: true,
|
|
155
|
+
filterType: 'text',
|
|
156
|
+
render: (product) => (jsxRuntimeExports.jsx("div", { className: "font-medium text-gray-900", children: product })),
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
key: 'customer',
|
|
160
|
+
title: 'Customer',
|
|
161
|
+
dataIndex: 'customer',
|
|
162
|
+
sortable: true,
|
|
163
|
+
filterable: true,
|
|
164
|
+
filterType: 'text',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
key: 'amount',
|
|
168
|
+
title: 'Amount',
|
|
169
|
+
dataIndex: 'amount',
|
|
170
|
+
sortable: true,
|
|
171
|
+
filterable: true,
|
|
172
|
+
filterType: 'number',
|
|
173
|
+
align: 'right',
|
|
174
|
+
render: (amount) => (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end space-x-1", children: [jsxRuntimeExports.jsx(DollarSign, { className: "h-4 w-4 text-gray-400" }), jsxRuntimeExports.jsx("span", { className: "font-medium", children: amount.toLocaleString() })] })),
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
key: 'status',
|
|
178
|
+
title: 'Status',
|
|
179
|
+
dataIndex: 'status',
|
|
180
|
+
sortable: true,
|
|
181
|
+
filterable: true,
|
|
182
|
+
filterType: 'select',
|
|
183
|
+
filterOptions: [
|
|
184
|
+
{ label: 'Completed', value: 'completed' },
|
|
185
|
+
{ label: 'Pending', value: 'pending' },
|
|
186
|
+
{ label: 'Cancelled', value: 'cancelled' },
|
|
187
|
+
],
|
|
188
|
+
render: (status) => (jsxRuntimeExports.jsx(Badge, { variant: status === 'completed' ? 'success' :
|
|
189
|
+
status === 'pending' ? 'warning' : 'danger', children: status.charAt(0).toUpperCase() + status.slice(1) })),
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
key: 'region',
|
|
193
|
+
title: 'Region',
|
|
194
|
+
dataIndex: 'region',
|
|
195
|
+
sortable: true,
|
|
196
|
+
filterable: true,
|
|
197
|
+
filterType: 'select',
|
|
198
|
+
filterOptions: [
|
|
199
|
+
{ label: 'North America', value: 'North America' },
|
|
200
|
+
{ label: 'Europe', value: 'Europe' },
|
|
201
|
+
{ label: 'Asia Pacific', value: 'Asia Pacific' },
|
|
202
|
+
{ label: 'Latin America', value: 'Latin America' },
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
key: 'date',
|
|
207
|
+
title: 'Date',
|
|
208
|
+
dataIndex: 'date',
|
|
209
|
+
sortable: true,
|
|
210
|
+
filterable: true,
|
|
211
|
+
filterType: 'date',
|
|
212
|
+
},
|
|
213
|
+
];
|
|
214
|
+
// Tasks table columns
|
|
215
|
+
const taskColumns = [
|
|
216
|
+
{
|
|
217
|
+
key: 'title',
|
|
218
|
+
title: 'Task',
|
|
219
|
+
dataIndex: 'title',
|
|
220
|
+
sortable: true,
|
|
221
|
+
filterable: true,
|
|
222
|
+
filterType: 'text',
|
|
223
|
+
render: (title, record) => (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("div", { className: "font-medium text-gray-900", children: title }), jsxRuntimeExports.jsx("div", { className: "text-sm text-gray-500", children: record.project })] })),
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
key: 'assignee',
|
|
227
|
+
title: 'Assignee',
|
|
228
|
+
dataIndex: 'assignee',
|
|
229
|
+
sortable: true,
|
|
230
|
+
filterable: true,
|
|
231
|
+
filterType: 'text',
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
key: 'priority',
|
|
235
|
+
title: 'Priority',
|
|
236
|
+
dataIndex: 'priority',
|
|
237
|
+
sortable: true,
|
|
238
|
+
filterable: true,
|
|
239
|
+
filterType: 'select',
|
|
240
|
+
filterOptions: [
|
|
241
|
+
{ label: 'Low', value: 'low' },
|
|
242
|
+
{ label: 'Medium', value: 'medium' },
|
|
243
|
+
{ label: 'High', value: 'high' },
|
|
244
|
+
{ label: 'Urgent', value: 'urgent' },
|
|
245
|
+
],
|
|
246
|
+
render: (priority) => (jsxRuntimeExports.jsx(Badge, { variant: priority === 'urgent' ? 'danger' :
|
|
247
|
+
priority === 'high' ? 'warning' :
|
|
248
|
+
priority === 'medium' ? 'secondary' : 'outline', children: priority.charAt(0).toUpperCase() + priority.slice(1) })),
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
key: 'status',
|
|
252
|
+
title: 'Status',
|
|
253
|
+
dataIndex: 'status',
|
|
254
|
+
sortable: true,
|
|
255
|
+
filterable: true,
|
|
256
|
+
filterType: 'select',
|
|
257
|
+
filterOptions: [
|
|
258
|
+
{ label: 'To Do', value: 'todo' },
|
|
259
|
+
{ label: 'In Progress', value: 'in-progress' },
|
|
260
|
+
{ label: 'Review', value: 'review' },
|
|
261
|
+
{ label: 'Completed', value: 'completed' },
|
|
262
|
+
],
|
|
263
|
+
render: (status) => (jsxRuntimeExports.jsx(Badge, { variant: status === 'completed' ? 'success' :
|
|
264
|
+
status === 'in-progress' ? 'warning' :
|
|
265
|
+
status === 'review' ? 'secondary' : 'outline', children: status.replace('-', ' ').replace(/\b\w/g, l => l.toUpperCase()) })),
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
key: 'dueDate',
|
|
269
|
+
title: 'Due Date',
|
|
270
|
+
dataIndex: 'dueDate',
|
|
271
|
+
sortable: true,
|
|
272
|
+
filterable: true,
|
|
273
|
+
filterType: 'date',
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
key: 'tags',
|
|
277
|
+
title: 'Tags',
|
|
278
|
+
dataIndex: 'tags',
|
|
279
|
+
render: (tags) => (jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap gap-1", children: [tags.slice(0, 2).map(tag => (jsxRuntimeExports.jsx(Badge, { variant: "outline", className: "text-xs", children: tag }, tag))), tags.length > 2 && (jsxRuntimeExports.jsxs(Badge, { variant: "outline", className: "text-xs", children: ["+", tags.length - 2] }))] })),
|
|
280
|
+
},
|
|
281
|
+
];
|
|
282
|
+
const getCurrentData = () => {
|
|
283
|
+
switch (selectedTab) {
|
|
284
|
+
case 'users': return usersData;
|
|
285
|
+
case 'sales': return salesData;
|
|
286
|
+
case 'tasks': return tasksData;
|
|
287
|
+
default: return [];
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("h1", { className: "text-2xl font-bold text-gray-900", children: "DataTable Component" }), jsxRuntimeExports.jsx("p", { className: "text-gray-600 mt-1", children: "A comprehensive table component with filtering, sorting, and pagination" })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsxs(Button, { variant: "outline", onClick: () => showToast.info('Export functionality'), children: [jsxRuntimeExports.jsx(Download, { className: "h-4 w-4 mr-2" }), "Export"] }), jsxRuntimeExports.jsxs(Button, { variant: "primary", onClick: () => showToast.success('Add new item'), children: [jsxRuntimeExports.jsx(Plus, { className: "h-4 w-4 mr-2" }), "Add New"] })] })] }), jsxRuntimeExports.jsx("div", { className: "border-b border-gray-200", children: jsxRuntimeExports.jsx("nav", { className: "-mb-px flex space-x-8", children: [
|
|
291
|
+
{ key: 'users', label: 'Users', icon: Users },
|
|
292
|
+
{ key: 'sales', label: 'Sales', icon: DollarSign },
|
|
293
|
+
{ key: 'tasks', label: 'Tasks', icon: Calendar },
|
|
294
|
+
].map(({ key, label, icon: Icon }) => (jsxRuntimeExports.jsxs("button", { onClick: () => setSelectedTab(key), className: `
|
|
295
|
+
flex items-center space-x-2 py-2 px-1 border-b-2 font-medium text-sm
|
|
296
|
+
${selectedTab === key
|
|
297
|
+
? 'border-primary-500 text-primary-600'
|
|
298
|
+
: 'border-transparent text-gray-500 hover:text-gray-700 hover:border-gray-300'}
|
|
299
|
+
`, children: [jsxRuntimeExports.jsx(Icon, { className: "h-4 w-4" }), jsxRuntimeExports.jsx("span", { children: label })] }, key))) }) }), jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-4 gap-4", children: [jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsx(CardContent, { className: "p-4", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-gray-600", children: "Total Records" }), jsxRuntimeExports.jsx("p", { className: "text-2xl font-bold text-gray-900", children: getCurrentData().length })] }), jsxRuntimeExports.jsx("div", { className: "p-2 bg-primary-100 rounded-lg", children: jsxRuntimeExports.jsx(Users, { className: "h-6 w-6 text-primary-600" }) })] }) }) }), jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsx(CardContent, { className: "p-4", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-gray-600", children: "Selected" }), jsxRuntimeExports.jsx("p", { className: "text-2xl font-bold text-gray-900", children: selectedRows.length })] }), jsxRuntimeExports.jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsxRuntimeExports.jsx(Filter, { className: "h-6 w-6 text-success-600" }) })] }) }) }), jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsx(CardContent, { className: "p-4", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-gray-600", children: "Active Filters" }), jsxRuntimeExports.jsx("p", { className: "text-2xl font-bold text-gray-900", children: "0" })] }), jsxRuntimeExports.jsx("div", { className: "p-2 bg-warning-100 rounded-lg", children: jsxRuntimeExports.jsx(Filter, { className: "h-6 w-6 text-warning-600" }) })] }) }) }), jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsx(CardContent, { className: "p-4", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("p", { className: "text-sm font-medium text-gray-600", children: "Performance" }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-1", children: [jsxRuntimeExports.jsx(TrendingUp, { className: "h-4 w-4 text-success-600" }), jsxRuntimeExports.jsx("p", { className: "text-2xl font-bold text-gray-900", children: "Fast" })] })] }), jsxRuntimeExports.jsx("div", { className: "p-2 bg-success-100 rounded-lg", children: jsxRuntimeExports.jsx(TrendingUp, { className: "h-6 w-6 text-success-600" }) })] }) }) })] }), jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsxs(CardContent, { className: "p-0", children: [selectedTab === "users" && (jsxRuntimeExports.jsx(DataTable, { columns: userColumns, dataSource: usersData, rowKey: "id", pagination: {
|
|
300
|
+
current: 1,
|
|
301
|
+
pageSize: 10,
|
|
302
|
+
total: usersData.length,
|
|
303
|
+
showSizeChanger: true,
|
|
304
|
+
pageSizeOptions: [5, 10, 20, 50],
|
|
305
|
+
}, rowSelection: {
|
|
306
|
+
type: 'checkbox',
|
|
307
|
+
selectedRowKeys: selectedRows,
|
|
308
|
+
onChange: (keys) => {
|
|
309
|
+
setSelectedRows(keys);
|
|
310
|
+
showToast.info(`Selected ${keys.length} items`);
|
|
311
|
+
},
|
|
312
|
+
}, size: "middle", bordered: false, title: () => (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Users Data" }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsxs(Badge, { variant: "outline", children: [usersData.length, " total"] }), selectedRows.length > 0 && (jsxRuntimeExports.jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
|
|
313
|
+
console.log('Table changed:', { pagination, filters, sorter });
|
|
314
|
+
} })), selectedTab === "sales" && (jsxRuntimeExports.jsx(DataTable, { columns: salesColumns, dataSource: salesData, rowKey: "id", pagination: {
|
|
315
|
+
current: 1,
|
|
316
|
+
pageSize: 10,
|
|
317
|
+
total: salesData.length,
|
|
318
|
+
showSizeChanger: true,
|
|
319
|
+
pageSizeOptions: [5, 10, 20, 50],
|
|
320
|
+
}, rowSelection: {
|
|
321
|
+
type: 'checkbox',
|
|
322
|
+
selectedRowKeys: selectedRows,
|
|
323
|
+
onChange: (keys) => {
|
|
324
|
+
setSelectedRows(keys);
|
|
325
|
+
showToast.info(`Selected ${keys.length} items`);
|
|
326
|
+
},
|
|
327
|
+
}, size: "middle", bordered: false, title: () => (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Sales Data" }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsxs(Badge, { variant: "outline", children: [salesData.length, " total"] }), selectedRows.length > 0 && (jsxRuntimeExports.jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
|
|
328
|
+
console.log('Table changed:', { pagination, filters, sorter });
|
|
329
|
+
} })), selectedTab === "tasks" && (jsxRuntimeExports.jsx(DataTable, { columns: taskColumns, dataSource: tasksData, rowKey: "id", pagination: {
|
|
330
|
+
current: 1,
|
|
331
|
+
pageSize: 10,
|
|
332
|
+
total: tasksData.length,
|
|
333
|
+
showSizeChanger: true,
|
|
334
|
+
pageSizeOptions: [5, 10, 20, 50],
|
|
335
|
+
}, rowSelection: {
|
|
336
|
+
type: 'checkbox',
|
|
337
|
+
selectedRowKeys: selectedRows,
|
|
338
|
+
onChange: (keys) => {
|
|
339
|
+
setSelectedRows(keys);
|
|
340
|
+
showToast.info(`Selected ${keys.length} items`);
|
|
341
|
+
},
|
|
342
|
+
}, size: "middle", bordered: false, title: () => (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between p-4 border-b border-gray-200", children: [jsxRuntimeExports.jsx("h3", { className: "text-lg font-semibold text-gray-900", children: "Tasks Data" }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsxs(Badge, { variant: "outline", children: [tasksData.length, " total"] }), selectedRows.length > 0 && (jsxRuntimeExports.jsxs(Badge, { variant: "secondary", children: [selectedRows.length, " selected"] }))] })] })), onChange: (pagination, filters, sorter) => {
|
|
343
|
+
console.log('Table changed:', { pagination, filters, sorter });
|
|
344
|
+
} }))] }) }), jsxRuntimeExports.jsxs(Card, { children: [jsxRuntimeExports.jsx(CardHeader, { children: jsxRuntimeExports.jsx(CardTitle, { children: "Component Features" }) }), jsxRuntimeExports.jsx(CardContent, { className: "space-y-4", children: jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("h4", { className: "font-semibold text-gray-900 mb-2", children: "Core Features" }), jsxRuntimeExports.jsxs("ul", { className: "space-y-1 text-sm text-gray-600", children: [jsxRuntimeExports.jsx("li", { children: "\u2022 Sortable columns with visual indicators" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Advanced filtering (text, select, date)" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Pagination with configurable page sizes" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Row selection (single/multiple)" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Responsive design for all screen sizes" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Loading and empty states" })] })] }), jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("h4", { className: "font-semibold text-gray-900 mb-2", children: "Advanced Features" }), jsxRuntimeExports.jsxs("ul", { className: "space-y-1 text-sm text-gray-600", children: [jsxRuntimeExports.jsx("li", { children: "\u2022 Custom cell renderers" }), jsxRuntimeExports.jsx("li", { children: "\u2022 TypeScript support with full typing" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Accessibility features (ARIA labels)" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Performance optimizations" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Customizable styling and themes" }), jsxRuntimeExports.jsx("li", { children: "\u2022 Export and bulk actions support" })] })] })] }) })] })] }));
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
export { DataTableShowcase };
|
|
348
|
+
//# sourceMappingURL=DataTableShowcase.js.map
|
|
@@ -0,0 +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","Edit"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const inputVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "success" | "error" | null | undefined;
|
|
5
|
+
inputSize?: "sm" | "md" | "lg" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>, VariantProps<typeof inputVariants> {
|
|
8
|
+
}
|
|
9
|
+
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
10
|
+
export { Input, inputVariants };
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { cva } from 'class-variance-authority';
|
|
4
|
+
import { cn } from '../../utils/cn.js';
|
|
5
|
+
|
|
6
|
+
const inputVariants = cva("flex w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
default: "border-gray-300",
|
|
10
|
+
error: "border-danger-500 focus-visible:ring-danger-500",
|
|
11
|
+
success: "border-success-500 focus-visible:ring-success-500",
|
|
12
|
+
},
|
|
13
|
+
inputSize: {
|
|
14
|
+
sm: "h-8 px-2 text-xs",
|
|
15
|
+
md: "h-10 px-3",
|
|
16
|
+
lg: "h-12 px-4 text-base",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
variant: "default",
|
|
21
|
+
inputSize: "md",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const Input = React.forwardRef(({ className, variant, inputSize, type, ...props }, ref) => {
|
|
25
|
+
return (jsxRuntimeExports.jsx("input", { type: type, className: cn(inputVariants({ variant, inputSize, className })), ref: ref, ...props }));
|
|
26
|
+
});
|
|
27
|
+
Input.displayName = "Input";
|
|
28
|
+
|
|
29
|
+
export { Input, inputVariants };
|
|
30
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sources":["../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../utils/cn\";\n\nconst inputVariants = cva(\n \"flex w-full rounded-md border bg-white px-3 py-2 text-sm ring-offset-white file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-gray-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n {\n variants: {\n variant: {\n default: \"border-gray-300\",\n error: \"border-danger-500 focus-visible:ring-danger-500\",\n success: \"border-success-500 focus-visible:ring-success-500\",\n },\n inputSize: {\n sm: \"h-8 px-2 text-xs\",\n md: \"h-10 px-3\",\n lg: \"h-12 px-4 text-base\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n inputSize: \"md\",\n },\n }\n);\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n VariantProps<typeof inputVariants> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, variant, inputSize, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(inputVariants({ variant, inputSize, className }))}\n ref={ref}\n {...props}\n />\n );\n }\n);\nInput.displayName = \"Input\";\n\nexport { Input, inputVariants };"],"names":["_jsx"],"mappings":";;;;;AAIA,MAAM,aAAa,GAAG,GAAG,CACvB,iUAAiU,EACjU;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,KAAK,EAAE,iDAAiD;AACxD,YAAA,OAAO,EAAE,mDAAmD;AAC7D,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,EAAE,EAAE,kBAAkB;AACtB,YAAA,EAAE,EAAE,WAAW;AACf,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,SAAS,EAAE,IAAI;AAChB,KAAA;AACF,CAAA;AAOH,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC5B,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,KAAI;AACzD,IAAA,QACEA,qBAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAC/D,GAAG,EAAE,GAAG,EAAA,GACJ,KAAK,EAAA,CACT;AAEN,CAAC;AAEH,KAAK,CAAC,WAAW,GAAG,OAAO;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Input';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const modalVariants: (props?: ({
|
|
4
|
+
size?: "sm" | "md" | "lg" | "xl" | "full" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
|
|
6
|
+
interface ModalProps extends VariantProps<typeof modalVariants> {
|
|
7
|
+
open?: boolean;
|
|
8
|
+
onOpenChange?: (open: boolean) => void;
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}
|
|
11
|
+
declare const Modal: React.FC<ModalProps>;
|
|
12
|
+
declare const ModalHeader: React.FC<React.HTMLAttributes<HTMLDivElement>>;
|
|
13
|
+
declare const ModalTitle: React.FC<React.HTMLAttributes<HTMLHeadingElement>>;
|
|
14
|
+
declare const ModalDescription: React.FC<React.HTMLAttributes<HTMLParagraphElement>>;
|
|
15
|
+
declare const ModalContent: React.FC<React.HTMLAttributes<HTMLDivElement>>;
|
|
16
|
+
declare const ModalFooter: React.FC<React.HTMLAttributes<HTMLDivElement>>;
|
|
17
|
+
export { Modal, ModalHeader, ModalTitle, ModalDescription, ModalContent, ModalFooter, modalVariants, };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
|
|
2
|
+
import { cva } from 'class-variance-authority';
|
|
3
|
+
import { cn } from '../../utils/cn.js';
|
|
4
|
+
import X from '../../node_modules/lucide-react/dist/esm/icons/x.js';
|
|
5
|
+
|
|
6
|
+
const modalVariants = cva("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-white p-6 shadow-lg duration-200 sm:rounded-lg", {
|
|
7
|
+
variants: {
|
|
8
|
+
size: {
|
|
9
|
+
sm: "max-w-sm",
|
|
10
|
+
md: "max-w-lg",
|
|
11
|
+
lg: "max-w-2xl",
|
|
12
|
+
xl: "max-w-4xl",
|
|
13
|
+
full: "max-w-[95vw] max-h-[95vh]",
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
defaultVariants: {
|
|
17
|
+
size: "md",
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const Modal = ({ open, onOpenChange, children, size, }) => {
|
|
21
|
+
const handleClose = () => {
|
|
22
|
+
onOpenChange?.(false);
|
|
23
|
+
};
|
|
24
|
+
if (!open)
|
|
25
|
+
return null;
|
|
26
|
+
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx("div", { className: "fixed inset-0 z-50 bg-black/50 backdrop-blur-sm", onClick: handleClose }), jsxRuntimeExports.jsxs("div", { className: cn(modalVariants({ size })), children: [jsxRuntimeExports.jsxs("button", { onClick: handleClose, className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2 disabled:pointer-events-none", children: [jsxRuntimeExports.jsx(X, { className: "h-4 w-4" }), jsxRuntimeExports.jsx("span", { className: "sr-only", children: "Close" })] }), children] })] }));
|
|
27
|
+
};
|
|
28
|
+
const ModalHeader = ({ className, ...props }) => (jsxRuntimeExports.jsx("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props }));
|
|
29
|
+
const ModalTitle = ({ className, ...props }) => (jsxRuntimeExports.jsx("h2", { className: cn("text-lg font-semibold leading-none tracking-tight", className), ...props }));
|
|
30
|
+
const ModalDescription = ({ className, ...props }) => (jsxRuntimeExports.jsx("p", { className: cn("text-sm text-gray-500", className), ...props }));
|
|
31
|
+
const ModalContent = ({ className, ...props }) => (jsxRuntimeExports.jsx("div", { className: cn("grid gap-4 py-4", className), ...props }));
|
|
32
|
+
const ModalFooter = ({ className, ...props }) => (jsxRuntimeExports.jsx("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props }));
|
|
33
|
+
|
|
34
|
+
export { Modal, ModalContent, ModalDescription, ModalFooter, ModalHeader, ModalTitle, modalVariants };
|
|
35
|
+
//# sourceMappingURL=Modal.js.map
|