@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,540 @@
|
|
|
1
|
+
import { j as jsxRuntimeExports } from '../../_virtual/jsx-runtime.js';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { cn } from '../../utils/cn.js';
|
|
5
|
+
import { Button } from '../Button/Button.js';
|
|
6
|
+
import { Input } from '../Input/Input.js';
|
|
7
|
+
import { Textarea } from '../Textarea/Textarea.js';
|
|
8
|
+
import { Checkbox } from '../Checkbox/Checkbox.js';
|
|
9
|
+
import { Navbar } from '../Navbar/Navbar.js';
|
|
10
|
+
import { Sidebar } from '../Sidebar/Sidebar.js';
|
|
11
|
+
import { DashboardGrid } from '../DashboardGrid/DashboardGrid.js';
|
|
12
|
+
import { DashboardLayout } from '../DashboardLayout/DashboardLayout.js';
|
|
13
|
+
import { Card, CardHeader, CardTitle, CardContent } from '../Card/Card.js';
|
|
14
|
+
import { Badge } from '../Badge/Badge.js';
|
|
15
|
+
import { Alert, AlertTitle, AlertDescription } from '../Alert/Alert.js';
|
|
16
|
+
import { Avatar, AvatarImage, AvatarFallback } from '../Avatar/Avatar.js';
|
|
17
|
+
import { Modal, ModalHeader, ModalTitle, ModalContent, ModalFooter } from '../Modal/Modal.js';
|
|
18
|
+
import { showToast, Toast } from '../Toast/Toast.js';
|
|
19
|
+
import { Tabs, TabsList, TabsTrigger, TabsContent } from '../Tabs/Tabs.js';
|
|
20
|
+
import { StatsCard } from '../StatsCard/StatsCard.js';
|
|
21
|
+
import { Switch } from '../Switch/Switch.js';
|
|
22
|
+
import { Spinner } from '../Spinner/Spinner.js';
|
|
23
|
+
import { Skeleton } from '../Skeleton/Skeleton.js';
|
|
24
|
+
import { DataTableShowcase } from '../DataTable/DataTableShowcase.js';
|
|
25
|
+
import PanelsTopLeft from '../../node_modules/lucide-react/dist/esm/icons/panels-top-left.js';
|
|
26
|
+
import AlertCircle from '../../node_modules/lucide-react/dist/esm/icons/alert-circle.js';
|
|
27
|
+
import BarChart3 from '../../node_modules/lucide-react/dist/esm/icons/bar-chart-3.js';
|
|
28
|
+
import MousePointer from '../../node_modules/lucide-react/dist/esm/icons/mouse-pointer.js';
|
|
29
|
+
import User from '../../node_modules/lucide-react/dist/esm/icons/user.js';
|
|
30
|
+
import Settings from '../../node_modules/lucide-react/dist/esm/icons/settings.js';
|
|
31
|
+
import Palette from '../../node_modules/lucide-react/dist/esm/icons/palette.js';
|
|
32
|
+
import ChevronRight from '../../node_modules/lucide-react/dist/esm/icons/chevron-right.js';
|
|
33
|
+
import Search from '../../node_modules/lucide-react/dist/esm/icons/search.js';
|
|
34
|
+
import ChevronDown from '../../node_modules/lucide-react/dist/esm/icons/chevron-down.js';
|
|
35
|
+
import Monitor from '../../node_modules/lucide-react/dist/esm/icons/monitor.js';
|
|
36
|
+
import Tablet from '../../node_modules/lucide-react/dist/esm/icons/tablet.js';
|
|
37
|
+
import Smartphone from '../../node_modules/lucide-react/dist/esm/icons/smartphone.js';
|
|
38
|
+
import Sun from '../../node_modules/lucide-react/dist/esm/icons/sun.js';
|
|
39
|
+
import Moon from '../../node_modules/lucide-react/dist/esm/icons/moon.js';
|
|
40
|
+
import Eye from '../../node_modules/lucide-react/dist/esm/icons/eye.js';
|
|
41
|
+
import Code from '../../node_modules/lucide-react/dist/esm/icons/code.js';
|
|
42
|
+
import Check from '../../node_modules/lucide-react/dist/esm/icons/check.js';
|
|
43
|
+
import Copy from '../../node_modules/lucide-react/dist/esm/icons/copy.js';
|
|
44
|
+
import Book from '../../node_modules/lucide-react/dist/esm/icons/book.js';
|
|
45
|
+
|
|
46
|
+
// STORY INSPIRED DEMOS:
|
|
47
|
+
function ShowcaseButtonDemo() {
|
|
48
|
+
return (jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap items-center gap-4", children: [jsxRuntimeExports.jsx(Button, { variant: "primary", children: "Primary" }), jsxRuntimeExports.jsx(Button, { variant: "secondary", children: "Secondary" }), jsxRuntimeExports.jsx(Button, { variant: "danger", children: "Danger" }), jsxRuntimeExports.jsx(Button, { variant: "success", children: "Success" }), jsxRuntimeExports.jsx(Button, { variant: "warning", children: "Warning" }), jsxRuntimeExports.jsx(Button, { variant: "outline", children: "Outline" }), jsxRuntimeExports.jsx(Button, { variant: "ghost", children: "Ghost" }), jsxRuntimeExports.jsx(Button, { variant: "link", children: "Link" })] }));
|
|
49
|
+
}
|
|
50
|
+
function ShowcaseInputDemo() {
|
|
51
|
+
const [v, setV] = React.useState("");
|
|
52
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-4 max-w-md", children: [jsxRuntimeExports.jsx(Input, { placeholder: "Default input", value: v, onChange: e => setV(e.target.value) }), jsxRuntimeExports.jsx(Input, { placeholder: "Success state", variant: "success" }), jsxRuntimeExports.jsx(Input, { placeholder: "Error state", variant: "error" }), jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [jsxRuntimeExports.jsx(Input, { placeholder: "Small", inputSize: "sm" }), jsxRuntimeExports.jsx(Input, { placeholder: "Medium", inputSize: "md" }), jsxRuntimeExports.jsx(Input, { placeholder: "Large", inputSize: "lg" })] })] }));
|
|
53
|
+
}
|
|
54
|
+
function ShowcaseTextareaDemo() {
|
|
55
|
+
const [tv, setTv] = React.useState("");
|
|
56
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-4 max-w-md", children: [jsxRuntimeExports.jsx(Textarea, { placeholder: "Default textarea", value: tv, onChange: e => setTv(e.target.value) }), jsxRuntimeExports.jsx(Textarea, { placeholder: "Success state", variant: "success" }), jsxRuntimeExports.jsx(Textarea, { placeholder: "Error state", variant: "error" }), jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [jsxRuntimeExports.jsx(Textarea, { placeholder: "Small (default)" }), jsxRuntimeExports.jsx(Textarea, { placeholder: "Disabled", disabled: true })] })] }));
|
|
57
|
+
}
|
|
58
|
+
function ShowcaseSwitchDemo() {
|
|
59
|
+
const [checked, setChecked] = React.useState(false);
|
|
60
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Switch, { checked: checked, onCheckedChange: setChecked }), jsxRuntimeExports.jsx("span", { children: "Default" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Switch, { checked: true }), jsxRuntimeExports.jsx("span", { children: "Checked" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Switch, { disabled: true }), jsxRuntimeExports.jsx("span", { children: "Disabled" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Switch, { size: "sm" }), jsxRuntimeExports.jsx("span", { children: "Small" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Switch, { size: "lg" }), jsxRuntimeExports.jsx("span", { children: "Large" })] })] }));
|
|
61
|
+
}
|
|
62
|
+
function ShowcaseCheckboxDemo() {
|
|
63
|
+
const [checked, setChecked] = React.useState(false);
|
|
64
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-2", children: [jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Checkbox, { checked: checked, onChange: () => setChecked(!checked) }), " ", jsxRuntimeExports.jsx("span", { children: "Default" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Checkbox, { checked: true }), " ", jsxRuntimeExports.jsx("span", { children: "Checked" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Checkbox, { disabled: true }), " ", jsxRuntimeExports.jsx("span", { children: "Disabled" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Checkbox, { size: "sm" }), " ", jsxRuntimeExports.jsx("span", { children: "Small" })] }), jsxRuntimeExports.jsxs("label", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Checkbox, { size: "lg" }), " ", jsxRuntimeExports.jsx("span", { children: "Large" })] })] }));
|
|
65
|
+
}
|
|
66
|
+
function ShowcaseCardDemo() {
|
|
67
|
+
return (jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxRuntimeExports.jsxs(Card, { children: [jsxRuntimeExports.jsx(CardHeader, { children: jsxRuntimeExports.jsx(CardTitle, { children: "Default Card" }) }), jsxRuntimeExports.jsx(CardContent, { children: jsxRuntimeExports.jsx("p", { className: "text-gray-600", children: "This is a default card with standard styling." }) })] }), jsxRuntimeExports.jsxs(Card, { variant: "elevated", children: [jsxRuntimeExports.jsx(CardHeader, { children: jsxRuntimeExports.jsx(CardTitle, { children: "Elevated Card" }) }), jsxRuntimeExports.jsx(CardContent, { children: jsxRuntimeExports.jsx("p", { className: "text-gray-600", children: "This card has elevated shadow styling." }) })] })] }));
|
|
68
|
+
}
|
|
69
|
+
function ShowcaseBadgeDemo() {
|
|
70
|
+
return (jsxRuntimeExports.jsxs("div", { className: "flex flex-wrap gap-2", children: [jsxRuntimeExports.jsx(Badge, { children: "Default" }), jsxRuntimeExports.jsx(Badge, { variant: "secondary", children: "Secondary" }), jsxRuntimeExports.jsx(Badge, { variant: "success", children: "Success" }), jsxRuntimeExports.jsx(Badge, { variant: "danger", children: "Danger" }), jsxRuntimeExports.jsx(Badge, { variant: "warning", children: "Warning" }), jsxRuntimeExports.jsx(Badge, { variant: "outline", children: "Outline" })] }));
|
|
71
|
+
}
|
|
72
|
+
function ShowcaseAvatarDemo() {
|
|
73
|
+
return (jsxRuntimeExports.jsxs("div", { className: "flex gap-4", children: [jsxRuntimeExports.jsxs(Avatar, { children: [jsxRuntimeExports.jsx(AvatarImage, { src: "https://randomuser.me/api/portraits/men/32.jpg" }), jsxRuntimeExports.jsx(AvatarFallback, { children: "AB" })] }), jsxRuntimeExports.jsxs(Avatar, { children: [jsxRuntimeExports.jsx(AvatarImage, { src: "" }), jsxRuntimeExports.jsx(AvatarFallback, { children: "CD" })] }), jsxRuntimeExports.jsxs(Avatar, { children: [jsxRuntimeExports.jsx(AvatarImage, { src: "https://randomuser.me/api/portraits/women/44.jpg" }), jsxRuntimeExports.jsx(AvatarFallback, { children: "EF" })] })] }));
|
|
74
|
+
}
|
|
75
|
+
function ShowcaseModalDemo() {
|
|
76
|
+
const [open, setOpen] = React.useState(false);
|
|
77
|
+
return (jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx(Button, { onClick: () => setOpen(true), children: "Show Modal" }), jsxRuntimeExports.jsxs(Modal, { open: open, onOpenChange: setOpen, children: [jsxRuntimeExports.jsx(ModalHeader, { children: jsxRuntimeExports.jsx(ModalTitle, { children: "Demo Modal" }) }), jsxRuntimeExports.jsx(ModalContent, { children: jsxRuntimeExports.jsx("p", { children: "This is a basic modal dialog." }) }), jsxRuntimeExports.jsx(ModalFooter, { children: jsxRuntimeExports.jsx(Button, { variant: "primary", onClick: () => setOpen(false), children: "Close" }) })] })] }));
|
|
78
|
+
}
|
|
79
|
+
function ShowcaseToastDemo() {
|
|
80
|
+
return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(Button, { onClick: () => showToast.success("This is a toast notification!"), children: "Show Toast" }), jsxRuntimeExports.jsx(Toast, {})] }));
|
|
81
|
+
}
|
|
82
|
+
function ShowcaseSpinnerDemo() {
|
|
83
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsx(Spinner, {}), jsxRuntimeExports.jsxs("div", { className: "flex gap-2 items-center", children: [jsxRuntimeExports.jsx(Spinner, {}), " ", jsxRuntimeExports.jsx("span", { children: "Loading data..." })] }), jsxRuntimeExports.jsxs(Button, { variant: "primary", disabled: true, children: [jsxRuntimeExports.jsx(Spinner, { className: "mr-2 h-4 w-4" }), " Processing"] })] }));
|
|
84
|
+
}
|
|
85
|
+
const showcasePreviewMap = {
|
|
86
|
+
button: ShowcaseButtonDemo,
|
|
87
|
+
input: ShowcaseInputDemo,
|
|
88
|
+
textarea: ShowcaseTextareaDemo,
|
|
89
|
+
checkbox: ShowcaseCheckboxDemo,
|
|
90
|
+
switch: ShowcaseSwitchDemo,
|
|
91
|
+
card: ShowcaseCardDemo,
|
|
92
|
+
badge: ShowcaseBadgeDemo,
|
|
93
|
+
avatar: ShowcaseAvatarDemo,
|
|
94
|
+
alert: ShowcaseAlertDemo,
|
|
95
|
+
statscard: ShowcaseStatsCardDemo,
|
|
96
|
+
tabs: ShowcaseTabsDemo,
|
|
97
|
+
modal: ShowcaseModalDemo,
|
|
98
|
+
toast: ShowcaseToastDemo,
|
|
99
|
+
spinner: ShowcaseSpinnerDemo,
|
|
100
|
+
skeleton: function ShowcaseSkeletonDemo() {
|
|
101
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-4 max-w-md", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-8 w-1/2" }), jsxRuntimeExports.jsx(Skeleton, { className: "h-4 w-3/4" }), jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [jsxRuntimeExports.jsx(Skeleton, { className: "h-8 w-8 rounded-full" }), jsxRuntimeExports.jsx(Skeleton, { className: "h-8 w-32" })] }), jsxRuntimeExports.jsx(Skeleton, { className: "h-24 w-full" })] }));
|
|
102
|
+
},
|
|
103
|
+
navbar: function ShowcaseNavbarDemo() {
|
|
104
|
+
return (jsxRuntimeExports.jsx(Navbar, { children: jsxRuntimeExports.jsxs("div", { className: "flex w-full items-center justify-between px-4", children: [jsxRuntimeExports.jsx("span", { className: "font-semibold text-lg", children: "Beyond UI" }), jsxRuntimeExports.jsxs("nav", { className: "flex gap-4 ml-auto", children: [jsxRuntimeExports.jsx("a", { href: "#", className: "text-blue-500", children: "Home" }), jsxRuntimeExports.jsx("a", { href: "#", className: "text-blue-500", children: "Features" }), jsxRuntimeExports.jsx("a", { href: "#", className: "text-blue-500", children: "Pricing" })] }), jsxRuntimeExports.jsx("div", { className: "ml-6", children: jsxRuntimeExports.jsx("button", { className: "rounded bg-primary-600 text-white px-3 py-1 text-sm", children: "Profile" }) })] }) }));
|
|
105
|
+
},
|
|
106
|
+
sidebar: function ShowcaseSidebarDemo() {
|
|
107
|
+
const menuItems = [
|
|
108
|
+
{ id: "dashboard", label: "Dashboard", icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-5 w-5" }) },
|
|
109
|
+
{ id: "settings", label: "Settings", icon: jsxRuntimeExports.jsx(Settings, { className: "h-5 w-5" }) },
|
|
110
|
+
{ id: "profile", label: "Profile", icon: jsxRuntimeExports.jsx(User, { className: "h-5 w-5" }) }
|
|
111
|
+
];
|
|
112
|
+
// Override Sidebar's fixed class for preview
|
|
113
|
+
return (jsxRuntimeExports.jsx("div", { className: "w-[260px] h-[480px] bg-white border rounded overflow-auto flex items-stretch", children: jsxRuntimeExports.jsx(Sidebar, { menuItems: menuItems, className: "static relative w-full h-full border-none shadow-none" }) }));
|
|
114
|
+
},
|
|
115
|
+
"dashboard-grid": function ShowcaseDashboardGridDemo() {
|
|
116
|
+
return (jsxRuntimeExports.jsxs(DashboardGrid, { children: [jsxRuntimeExports.jsx("div", { className: "p-4 bg-white rounded shadow", children: "Widget 1" }), jsxRuntimeExports.jsx("div", { className: "p-4 bg-white rounded shadow", children: "Widget 2" }), jsxRuntimeExports.jsx("div", { className: "p-4 bg-white rounded shadow", children: "Widget 3" }), jsxRuntimeExports.jsx("div", { className: "p-4 bg-white rounded shadow", children: "Widget 4" })] }));
|
|
117
|
+
},
|
|
118
|
+
"dashboard-header": function ShowcaseDashboardHeaderDemo() {
|
|
119
|
+
return (jsxRuntimeExports.jsxs("div", { className: "flex justify-between items-center py-4 border-b", children: [jsxRuntimeExports.jsxs("div", { children: [jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold", children: "Dashboard" }), jsxRuntimeExports.jsx("span", { className: "text-gray-500 text-sm", children: "Insights & analytics" })] }), jsxRuntimeExports.jsx(Button, { variant: "outline", children: "Settings" })] }));
|
|
120
|
+
},
|
|
121
|
+
"dashboard-layout": function ShowcaseDashboardLayoutDemo() {
|
|
122
|
+
const sidebarMenuItems = [
|
|
123
|
+
{ id: "dashboard", label: "Dashboard", icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-4 w-4" }) },
|
|
124
|
+
{ id: "users", label: "Users", icon: jsxRuntimeExports.jsx(User, { className: "h-4 w-4" }) },
|
|
125
|
+
{ id: "settings", label: "Settings", icon: jsxRuntimeExports.jsx(Settings, { className: "h-4 w-4" }) },
|
|
126
|
+
];
|
|
127
|
+
// Contain DashboardLayout for preview: override min-h-screen, sizing
|
|
128
|
+
return (jsxRuntimeExports.jsx("div", { className: "w-[600px] h-[480px] bg-white border rounded overflow-auto flex items-stretch", children: jsxRuntimeExports.jsx(DashboardLayout, { sidebarMenuItems: sidebarMenuItems, className: "relative w-full min-h-0 h-full", sidebarClassName: "static relative w-full h-full border-none shadow-none", disableSidebarMargin: true, children: jsxRuntimeExports.jsxs("div", { className: "p-6 h-full", children: [jsxRuntimeExports.jsx("h2", { className: "text-lg font-semibold mb-2", children: "Welcome to DashboardLayout" }), jsxRuntimeExports.jsx("p", { className: "mb-4 text-gray-600", children: "Main content appears here. The sidebar and header are real reusable components." }), jsxRuntimeExports.jsx(Button, { variant: "primary", children: "Dashboard Action" })] }) }) }));
|
|
129
|
+
},
|
|
130
|
+
datatable: DataTableShowcase,
|
|
131
|
+
};
|
|
132
|
+
function ShowcaseAlertDemo() {
|
|
133
|
+
return (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsxs(Alert, { variant: "info", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Information" }), jsxRuntimeExports.jsx(AlertDescription, { children: "This is an informational alert message." })] }), jsxRuntimeExports.jsxs(Alert, { variant: "success", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Success" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Operation completed successfully!" })] }), jsxRuntimeExports.jsxs(Alert, { variant: "warning", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Warning" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Please review your input before proceeding." })] }), jsxRuntimeExports.jsxs(Alert, { variant: "danger", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Error" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Something went wrong. Please try again." })] })] }));
|
|
134
|
+
}
|
|
135
|
+
function ShowcaseStatsCardDemo() {
|
|
136
|
+
return (jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxRuntimeExports.jsx(StatsCard, { title: "Total Users", value: "2,543", trend: {
|
|
137
|
+
direction: "up",
|
|
138
|
+
value: "+12%",
|
|
139
|
+
label: "from last month"
|
|
140
|
+
}, icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-6 w-6 text-primary-600" }) }), jsxRuntimeExports.jsx(StatsCard, { variant: "gradient", color: "success", title: "Revenue", value: "$45,231", trend: {
|
|
141
|
+
direction: "up",
|
|
142
|
+
value: "+8.2%",
|
|
143
|
+
label: "from last month"
|
|
144
|
+
}, icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-6 w-6" }) })] }));
|
|
145
|
+
}
|
|
146
|
+
function ShowcaseTabsDemo() {
|
|
147
|
+
const [activeTab, setActiveTab] = React.useState("tab-1");
|
|
148
|
+
return (jsxRuntimeExports.jsxs(Tabs, { value: activeTab, onValueChange: setActiveTab, children: [jsxRuntimeExports.jsxs(TabsList, { children: [jsxRuntimeExports.jsx(TabsTrigger, { value: "tab-1", children: "Tab One" }), jsxRuntimeExports.jsx(TabsTrigger, { value: "tab-2", children: "Tab Two" }), jsxRuntimeExports.jsx(TabsTrigger, { value: "tab-3", children: "Tab Three" })] }), jsxRuntimeExports.jsx(TabsContent, { value: "tab-1", children: jsxRuntimeExports.jsx("span", { className: "block p-4", children: "Content for Tab One" }) }), jsxRuntimeExports.jsx(TabsContent, { value: "tab-2", children: jsxRuntimeExports.jsx("span", { className: "block p-4", children: "Content for Tab Two" }) }), jsxRuntimeExports.jsx(TabsContent, { value: "tab-3", children: jsxRuntimeExports.jsx("span", { className: "block p-4", children: "Content for Tab Three" }) })] }));
|
|
149
|
+
}
|
|
150
|
+
Object.assign(showcasePreviewMap, {
|
|
151
|
+
alert: ShowcaseAlertDemo,
|
|
152
|
+
statscard: ShowcaseStatsCardDemo,
|
|
153
|
+
tabs: ShowcaseTabsDemo,
|
|
154
|
+
});
|
|
155
|
+
// Component categories and their items
|
|
156
|
+
const componentCategories = {
|
|
157
|
+
"Forms": {
|
|
158
|
+
icon: jsxRuntimeExports.jsx(MousePointer, { className: "h-4 w-4" }),
|
|
159
|
+
components: [
|
|
160
|
+
{ name: "Button", id: "button" },
|
|
161
|
+
{ name: "Input", id: "input" },
|
|
162
|
+
{ name: "Textarea", id: "textarea" },
|
|
163
|
+
{ name: "Checkbox", id: "checkbox" },
|
|
164
|
+
{ name: "Switch", id: "switch" },
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
"Data Display": {
|
|
168
|
+
icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-4 w-4" }),
|
|
169
|
+
components: [
|
|
170
|
+
{ name: "Card", id: "card" },
|
|
171
|
+
{ name: "Badge", id: "badge" },
|
|
172
|
+
{ name: "Avatar", id: "avatar" },
|
|
173
|
+
{ name: "StatsCard", id: "statscard" },
|
|
174
|
+
{ name: "Tabs", id: "tabs" },
|
|
175
|
+
{ name: "DataTable", id: "datatable" },
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
"Feedback": {
|
|
179
|
+
icon: jsxRuntimeExports.jsx(AlertCircle, { className: "h-4 w-4" }),
|
|
180
|
+
components: [
|
|
181
|
+
{ name: "Alert", id: "alert" },
|
|
182
|
+
{ name: "Toast", id: "toast" },
|
|
183
|
+
{ name: "Modal", id: "modal" },
|
|
184
|
+
{ name: "Spinner", id: "spinner" },
|
|
185
|
+
{ name: "Skeleton", id: "skeleton" },
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
"Layout": {
|
|
189
|
+
icon: jsxRuntimeExports.jsx(PanelsTopLeft, { className: "h-4 w-4" }),
|
|
190
|
+
components: [
|
|
191
|
+
{ name: "DashboardLayout", id: "dashboard-layout" },
|
|
192
|
+
{ name: "DashboardGrid", id: "dashboard-grid" },
|
|
193
|
+
{ name: "Sidebar", id: "sidebar" },
|
|
194
|
+
{ name: "Navbar", id: "navbar" },
|
|
195
|
+
{ name: "DataTable", id: "datatable" },
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
// Component examples and documentation
|
|
200
|
+
const componentDocs = {
|
|
201
|
+
button: {
|
|
202
|
+
name: "Button",
|
|
203
|
+
description: "A versatile button component with multiple variants and sizes.",
|
|
204
|
+
example: `<Button variant="primary" size="md">
|
|
205
|
+
Click me
|
|
206
|
+
</Button>`,
|
|
207
|
+
props: [
|
|
208
|
+
{ name: "variant", type: "string", default: "primary", description: "Button style variant" },
|
|
209
|
+
{ name: "size", type: "string", default: "md", description: "Button size" },
|
|
210
|
+
{ name: "disabled", type: "boolean", default: "false", description: "Disable the button" },
|
|
211
|
+
],
|
|
212
|
+
component: null
|
|
213
|
+
},
|
|
214
|
+
input: {
|
|
215
|
+
name: "Input",
|
|
216
|
+
description: "A flexible input component with validation states and different sizes.",
|
|
217
|
+
example: `<Input
|
|
218
|
+
placeholder="Enter your email"
|
|
219
|
+
variant="default"
|
|
220
|
+
inputSize="md"
|
|
221
|
+
/>`,
|
|
222
|
+
props: [
|
|
223
|
+
{ name: "variant", type: "string", default: "default", description: "Input validation state" },
|
|
224
|
+
{ name: "inputSize", type: "string", default: "md", description: "Input size" },
|
|
225
|
+
{ name: "placeholder", type: "string", default: "", description: "Placeholder text" },
|
|
226
|
+
],
|
|
227
|
+
component: null
|
|
228
|
+
},
|
|
229
|
+
checkbox: {
|
|
230
|
+
name: "Checkbox",
|
|
231
|
+
description: "A standard checkbox component for forms. Supports checked, unchecked, disabled, and size variants.",
|
|
232
|
+
example: `<Checkbox checked={true} onChange={() => {}} />`,
|
|
233
|
+
props: [
|
|
234
|
+
{ name: "checked", type: "boolean", default: "false", description: "Whether the checkbox is checked" },
|
|
235
|
+
{ name: "onChange", type: "(event) => void", description: "Callback when checkbox changes" },
|
|
236
|
+
{ name: "disabled", type: "boolean", default: "false", description: "Disable the checkbox" },
|
|
237
|
+
{ name: "size", type: `"sm" | "md" | "lg"`, default: "md", description: "Size of the checkbox" },
|
|
238
|
+
],
|
|
239
|
+
component: showcasePreviewMap["checkbox"]
|
|
240
|
+
},
|
|
241
|
+
switch: {
|
|
242
|
+
name: "Switch",
|
|
243
|
+
description: "A toggle switch component for representing boolean states. Supports size variants and disabled state.",
|
|
244
|
+
example: `<Switch checked={true} onCheckedChange={() => {}} />`,
|
|
245
|
+
props: [
|
|
246
|
+
{ name: "checked", type: "boolean", default: "false", description: "Whether the switch is on" },
|
|
247
|
+
{ name: "onCheckedChange", type: "(checked: boolean) => void", description: "Callback when switch state changes" },
|
|
248
|
+
{ name: "disabled", type: "boolean", default: "false", description: "Disable the switch" },
|
|
249
|
+
{ name: "size", type: `"sm" | "md" | "lg"`, default: "md", description: "Size of the switch" },
|
|
250
|
+
],
|
|
251
|
+
component: showcasePreviewMap["switch"]
|
|
252
|
+
},
|
|
253
|
+
textarea: {
|
|
254
|
+
name: "Textarea",
|
|
255
|
+
description: "A multi-line input control suitable for entering longer blocks of text. Supports success/error states and various sizes.",
|
|
256
|
+
example: `<Textarea placeholder="Enter your message..." variant="default" />`,
|
|
257
|
+
props: [
|
|
258
|
+
{ name: "variant", type: "string", default: "default", description: "Textarea validation state" },
|
|
259
|
+
{ name: "rows", type: "number", default: "3", description: "Number of visible text lines" },
|
|
260
|
+
{ name: "disabled", type: "boolean", default: "false", description: "Disabled state" },
|
|
261
|
+
{ name: "placeholder", type: "string", default: "", description: "Placeholder text" },
|
|
262
|
+
],
|
|
263
|
+
component: showcasePreviewMap["textarea"]
|
|
264
|
+
},
|
|
265
|
+
card: {
|
|
266
|
+
name: "Card",
|
|
267
|
+
description: "A flexible container component for grouping related content.",
|
|
268
|
+
example: `<Card>
|
|
269
|
+
<CardHeader>
|
|
270
|
+
<CardTitle>Card Title</CardTitle>
|
|
271
|
+
</CardHeader>
|
|
272
|
+
<CardContent>
|
|
273
|
+
Card content goes here.
|
|
274
|
+
</CardContent>
|
|
275
|
+
</Card>`,
|
|
276
|
+
props: [
|
|
277
|
+
{ name: "variant", type: "string", default: "default", description: "Card style variant" },
|
|
278
|
+
{ name: "padding", type: "string", default: "md", description: "Card padding size" },
|
|
279
|
+
],
|
|
280
|
+
component: null
|
|
281
|
+
},
|
|
282
|
+
avatar: {
|
|
283
|
+
name: "Avatar",
|
|
284
|
+
description: "Displays a user's profile image or initials, with customizable size and fallback.",
|
|
285
|
+
example: '<Avatar size="sm"><AvatarImage src="https://randomuser.me/api/portraits/men/32.jpg" alt="User"/><AvatarFallback>AB</AvatarFallback></Avatar>',
|
|
286
|
+
props: [
|
|
287
|
+
{ name: "size", type: '"sm" | "md" | "lg"', default: "md", description: "Avatar size" },
|
|
288
|
+
{ name: "children", type: "ReactNode", required: true, description: "Avatar image and fallback" }
|
|
289
|
+
],
|
|
290
|
+
component: showcasePreviewMap["avatar"]
|
|
291
|
+
},
|
|
292
|
+
badge: {
|
|
293
|
+
name: "Badge",
|
|
294
|
+
description: "A small, customizable tag for displaying statuses or labels.",
|
|
295
|
+
example: `<Badge variant="default">Default</Badge>`,
|
|
296
|
+
props: [
|
|
297
|
+
{ name: "variant", type: `"default" | "secondary" | "success" | "danger" | "warning" | "outline"`, default: "default", description: "Badge color or style variant" },
|
|
298
|
+
{ name: "children", type: "ReactNode", required: true, description: "Badge label content" }
|
|
299
|
+
],
|
|
300
|
+
component: showcasePreviewMap["badge"]
|
|
301
|
+
},
|
|
302
|
+
tabs: {
|
|
303
|
+
name: "Tabs",
|
|
304
|
+
description: "A flexible tabbed navigation component. Allows users to switch between views.",
|
|
305
|
+
example: `<Tabs value="tab-1" onValueChange={() => {}}>
|
|
306
|
+
<TabsList>
|
|
307
|
+
<TabsTrigger value="tab-1">Tab 1</TabsTrigger>
|
|
308
|
+
<TabsTrigger value="tab-2">Tab 2</TabsTrigger>
|
|
309
|
+
</TabsList>
|
|
310
|
+
<TabsContent value="tab-1">Content 1</TabsContent>
|
|
311
|
+
<TabsContent value="tab-2">Content 2</TabsContent>
|
|
312
|
+
</Tabs>`,
|
|
313
|
+
props: [
|
|
314
|
+
{ name: "value", type: "string", required: true, description: "The value of the currently selected tab" },
|
|
315
|
+
{ name: "onValueChange", type: "(value: string) => void", description: "Called when a different tab is selected" },
|
|
316
|
+
{ name: "children", type: "ReactNode", required: true, description: "Tab triggers and contents" }
|
|
317
|
+
],
|
|
318
|
+
component: showcasePreviewMap["tabs"]
|
|
319
|
+
},
|
|
320
|
+
toast: {
|
|
321
|
+
name: "Toast",
|
|
322
|
+
description: "A notification/toast component to display feedback messages over the UI.",
|
|
323
|
+
example: `<Button onClick={() => showToast.success("Saved successfully!")}>Show Toast</Button>
|
|
324
|
+
<Toast />`,
|
|
325
|
+
props: [
|
|
326
|
+
{ name: "children", type: "ReactNode", description: "Toast content (commonly used internally)" }
|
|
327
|
+
],
|
|
328
|
+
component: showcasePreviewMap["toast"]
|
|
329
|
+
},
|
|
330
|
+
modal: {
|
|
331
|
+
name: "Modal",
|
|
332
|
+
description: "A dialog/modal overlay component for displaying actions, forms, or confirmation content.",
|
|
333
|
+
example: `<Modal open={open} onOpenChange={setOpen}>
|
|
334
|
+
<ModalHeader>Modal Title</ModalHeader>
|
|
335
|
+
<ModalContent>Modal body</ModalContent>
|
|
336
|
+
<ModalFooter>
|
|
337
|
+
<Button onClick={() => setOpen(false)}>Close</Button>
|
|
338
|
+
</ModalFooter>
|
|
339
|
+
</Modal>`,
|
|
340
|
+
props: [
|
|
341
|
+
{ name: "open", type: "boolean", required: true, description: "Whether the modal is open" },
|
|
342
|
+
{ name: "onOpenChange", type: "(open: boolean) => void", required: true, description: "Called with new open state when modal is toggled" },
|
|
343
|
+
{ name: "children", type: "ReactNode", required: true, description: "Content of the modal dialog" }
|
|
344
|
+
],
|
|
345
|
+
component: showcasePreviewMap["modal"]
|
|
346
|
+
},
|
|
347
|
+
spinner: {
|
|
348
|
+
name: "Spinner",
|
|
349
|
+
description: "A loading spinner to indicate ongoing processing or loading state.",
|
|
350
|
+
example: `<Spinner size="md" />`,
|
|
351
|
+
props: [
|
|
352
|
+
{ name: "size", type: `"sm" | "md" | "lg"`, default: "md", description: "Spinner size" },
|
|
353
|
+
{ name: "color", type: "string", default: "primary", description: "Spinner color (optional)" },
|
|
354
|
+
{ name: "className", type: "string", description: "Custom CSS class for the spinner" }
|
|
355
|
+
],
|
|
356
|
+
component: showcasePreviewMap["spinner"]
|
|
357
|
+
},
|
|
358
|
+
skeleton: {
|
|
359
|
+
name: "Skeleton",
|
|
360
|
+
description: "A placeholder skeleton component for loading states. Use to display a placeholder UI while content loads.",
|
|
361
|
+
example: `<Skeleton className="h-6 w-32" />`,
|
|
362
|
+
props: [
|
|
363
|
+
{ name: "className", type: "string", description: "Custom class for size and style" }
|
|
364
|
+
],
|
|
365
|
+
component: showcasePreviewMap["skeleton"]
|
|
366
|
+
},
|
|
367
|
+
alert: {
|
|
368
|
+
name: "Alert",
|
|
369
|
+
description: "Display important messages and notifications to users.",
|
|
370
|
+
example: `<Alert variant="info">
|
|
371
|
+
<AlertTitle>Information</AlertTitle>
|
|
372
|
+
<AlertDescription>
|
|
373
|
+
This is an informational alert.
|
|
374
|
+
</AlertDescription>
|
|
375
|
+
</Alert>`,
|
|
376
|
+
props: [
|
|
377
|
+
{ name: "variant", type: "string", default: "default", description: "Alert type variant" },
|
|
378
|
+
],
|
|
379
|
+
component: (jsxRuntimeExports.jsxs("div", { className: "space-y-4", children: [jsxRuntimeExports.jsxs(Alert, { variant: "info", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Information" }), jsxRuntimeExports.jsx(AlertDescription, { children: "This is an informational alert message." })] }), jsxRuntimeExports.jsxs(Alert, { variant: "success", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Success" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Operation completed successfully!" })] }), jsxRuntimeExports.jsxs(Alert, { variant: "warning", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Warning" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Please review your input before proceeding." })] }), jsxRuntimeExports.jsxs(Alert, { variant: "danger", children: [jsxRuntimeExports.jsx(AlertTitle, { children: "Error" }), jsxRuntimeExports.jsx(AlertDescription, { children: "Something went wrong. Please try again." })] })] }))
|
|
380
|
+
},
|
|
381
|
+
statscard: {
|
|
382
|
+
name: "StatsCard",
|
|
383
|
+
description: "Display key metrics and statistics with trend indicators.",
|
|
384
|
+
example: `<StatsCard
|
|
385
|
+
title="Total Users"
|
|
386
|
+
value="2,543"
|
|
387
|
+
trend={{
|
|
388
|
+
direction: "up",
|
|
389
|
+
value: "+12%",
|
|
390
|
+
label: "from last month"
|
|
391
|
+
}}
|
|
392
|
+
icon={<Users className="h-6 w-6" />}
|
|
393
|
+
/>`,
|
|
394
|
+
props: [
|
|
395
|
+
{ name: "title", type: "string", required: true, description: "Card title" },
|
|
396
|
+
{ name: "value", type: "string | number", required: true, description: "Main value to display" },
|
|
397
|
+
{ name: "trend", type: "object", description: "Trend information" },
|
|
398
|
+
{ name: "icon", type: "ReactNode", description: "Icon to display" },
|
|
399
|
+
],
|
|
400
|
+
component: (jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 md:grid-cols-2 gap-4", children: [jsxRuntimeExports.jsx(StatsCard, { title: "Total Users", value: "2,543", trend: {
|
|
401
|
+
direction: "up",
|
|
402
|
+
value: "+12%",
|
|
403
|
+
label: "from last month"
|
|
404
|
+
}, icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-6 w-6 text-primary-600" }) }), jsxRuntimeExports.jsx(StatsCard, { variant: "gradient", color: "success", title: "Revenue", value: "$45,231", trend: {
|
|
405
|
+
direction: "up",
|
|
406
|
+
value: "+8.2%",
|
|
407
|
+
label: "from last month"
|
|
408
|
+
}, icon: jsxRuntimeExports.jsx(BarChart3, { className: "h-6 w-6" }) })] }))
|
|
409
|
+
},
|
|
410
|
+
"dashboard-layout": {
|
|
411
|
+
name: "DashboardLayout",
|
|
412
|
+
description: "Layout component for admin dashboards and analytics panels. Useful for wrapping dashboard structure with sidebars and content.",
|
|
413
|
+
example: `<DashboardLayout>
|
|
414
|
+
<Sidebar />
|
|
415
|
+
<main>
|
|
416
|
+
Dashboard content here
|
|
417
|
+
</main>
|
|
418
|
+
</DashboardLayout>`,
|
|
419
|
+
props: [
|
|
420
|
+
{ name: "children", type: "ReactNode", required: true, description: "Dashboard page content" }
|
|
421
|
+
],
|
|
422
|
+
component: showcasePreviewMap["dashboard-layout"]
|
|
423
|
+
},
|
|
424
|
+
datatable: {
|
|
425
|
+
name: "DataTable",
|
|
426
|
+
description: "A comprehensive table component with filtering, sorting, pagination, and row selection capabilities.",
|
|
427
|
+
example: `<DataTable
|
|
428
|
+
columns={columns}
|
|
429
|
+
dataSource={data}
|
|
430
|
+
rowKey="id"
|
|
431
|
+
pagination={{
|
|
432
|
+
current: 1,
|
|
433
|
+
pageSize: 10,
|
|
434
|
+
total: data.length,
|
|
435
|
+
}}
|
|
436
|
+
rowSelection={{
|
|
437
|
+
type: 'checkbox',
|
|
438
|
+
onChange: (keys, rows) => console.log('Selected:', keys, rows),
|
|
439
|
+
}}
|
|
440
|
+
/>`,
|
|
441
|
+
props: [
|
|
442
|
+
{ name: "columns", type: "Column[]", required: true, description: "Table column configuration" },
|
|
443
|
+
{ name: "dataSource", type: "T[]", required: true, description: "Data to display in the table" },
|
|
444
|
+
{ name: "rowKey", type: "string | function", default: "id", description: "Unique key for each row" },
|
|
445
|
+
{ name: "pagination", type: "PaginationConfig | false", description: "Pagination configuration" },
|
|
446
|
+
{ name: "rowSelection", type: "RowSelection", description: "Row selection configuration" },
|
|
447
|
+
{ name: "loading", type: "boolean", default: "false", description: "Loading state" },
|
|
448
|
+
{ name: "size", type: `"small" | "middle" | "large"`, default: "middle", description: "Table size" },
|
|
449
|
+
{ name: "bordered", type: "boolean", default: "false", description: "Show borders" },
|
|
450
|
+
],
|
|
451
|
+
component: jsxRuntimeExports.jsx(DataTableShowcase, {})
|
|
452
|
+
},
|
|
453
|
+
"dashboard-grid": {
|
|
454
|
+
name: "DashboardGrid",
|
|
455
|
+
description: "Grid container for dashboard widgets.",
|
|
456
|
+
example: `<DashboardGrid>
|
|
457
|
+
<Widget />
|
|
458
|
+
<Widget />
|
|
459
|
+
</DashboardGrid>`,
|
|
460
|
+
props: [
|
|
461
|
+
{ name: "children", type: "ReactNode", required: true, description: "Widgets to show in the grid" },
|
|
462
|
+
],
|
|
463
|
+
component: showcasePreviewMap["dashboard-grid"]
|
|
464
|
+
},
|
|
465
|
+
"sidebar": {
|
|
466
|
+
name: "Sidebar",
|
|
467
|
+
description: "Navigation sidebar for layouts. Supports menu items and responsive display.",
|
|
468
|
+
example: `<Sidebar menuItems={menuItems} />`,
|
|
469
|
+
props: [
|
|
470
|
+
{ name: "menuItems", type: "Array", required: true, description: "Sidebar navigation items" },
|
|
471
|
+
],
|
|
472
|
+
component: showcasePreviewMap["sidebar"]
|
|
473
|
+
},
|
|
474
|
+
"navbar": {
|
|
475
|
+
name: "Navbar",
|
|
476
|
+
description: "Navigation bar for app layout. Add links, branding, user actions etc.",
|
|
477
|
+
example: `<Navbar>
|
|
478
|
+
<NavbarBrand>My App</NavbarBrand>
|
|
479
|
+
<NavbarLinks>
|
|
480
|
+
<a href="#">Home</a>
|
|
481
|
+
<a href="#">About</a>
|
|
482
|
+
</NavbarLinks>
|
|
483
|
+
</Navbar>`,
|
|
484
|
+
props: [
|
|
485
|
+
{ name: "children", type: "ReactNode", required: true, description: "Navbar content (branding, links, actions)" },
|
|
486
|
+
],
|
|
487
|
+
component: showcasePreviewMap["navbar"]
|
|
488
|
+
},
|
|
489
|
+
};
|
|
490
|
+
const ComponentShowcase = ({ className }) => {
|
|
491
|
+
const [selectedComponent, setSelectedComponent] = useState("button");
|
|
492
|
+
const [searchQuery, setSearchQuery] = useState("");
|
|
493
|
+
const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
|
|
494
|
+
const [expandedCategories, setExpandedCategories] = useState(["Forms"]);
|
|
495
|
+
const [viewMode, setViewMode] = useState("desktop");
|
|
496
|
+
const [darkMode, setDarkMode] = useState(false);
|
|
497
|
+
const [copiedCode, setCopiedCode] = useState(null);
|
|
498
|
+
const toggleCategory = (category) => {
|
|
499
|
+
setExpandedCategories(prev => prev.includes(category)
|
|
500
|
+
? prev.filter(c => c !== category)
|
|
501
|
+
: [...prev, category]);
|
|
502
|
+
};
|
|
503
|
+
const copyToClipboard = async (code) => {
|
|
504
|
+
try {
|
|
505
|
+
await navigator.clipboard.writeText(code);
|
|
506
|
+
setCopiedCode(code);
|
|
507
|
+
showToast.success("Code copied to clipboard!");
|
|
508
|
+
setTimeout(() => setCopiedCode(null), 2000);
|
|
509
|
+
}
|
|
510
|
+
catch (err) {
|
|
511
|
+
showToast.error("Failed to copy code");
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
const filteredCategories = Object.entries(componentCategories).reduce((acc, [categoryName, categoryData]) => {
|
|
515
|
+
const filteredComponents = categoryData.components.filter(component => component.name.toLowerCase().includes(searchQuery.toLowerCase()));
|
|
516
|
+
if (filteredComponents.length > 0) {
|
|
517
|
+
acc[categoryName] = {
|
|
518
|
+
...categoryData,
|
|
519
|
+
components: filteredComponents
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
return acc;
|
|
523
|
+
}, {});
|
|
524
|
+
const currentDoc = componentDocs[selectedComponent];
|
|
525
|
+
const getViewportClass = () => {
|
|
526
|
+
switch (viewMode) {
|
|
527
|
+
case "tablet": return "max-w-2xl";
|
|
528
|
+
case "mobile": return "max-w-sm";
|
|
529
|
+
default: return "w-full";
|
|
530
|
+
}
|
|
531
|
+
};
|
|
532
|
+
return (jsxRuntimeExports.jsxs("div", { className: cn("flex h-screen bg-gray-50", className), children: [jsxRuntimeExports.jsx(Toast, {}), jsxRuntimeExports.jsxs("div", { className: cn("bg-white border-r border-gray-200 transition-all duration-300 flex flex-col", sidebarCollapsed ? "w-16" : "w-80"), children: [jsxRuntimeExports.jsxs("div", { className: "p-4 border-b border-gray-200", children: [!sidebarCollapsed && (jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between mb-4", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsx("div", { className: "w-8 h-8 bg-primary-600 rounded-lg flex items-center justify-center", children: jsxRuntimeExports.jsx(Palette, { className: "h-4 w-4 text-white" }) }), jsxRuntimeExports.jsx("span", { className: "font-bold text-lg text-gray-900", children: "Beyond UI" })] }), jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => setSidebarCollapsed(true), children: jsxRuntimeExports.jsx(ChevronRight, { className: "h-4 w-4" }) })] })), sidebarCollapsed && (jsxRuntimeExports.jsx("div", { className: "flex justify-center", children: jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => setSidebarCollapsed(false), children: jsxRuntimeExports.jsx(Palette, { className: "h-4 w-4" }) }) })), !sidebarCollapsed && (jsxRuntimeExports.jsxs("div", { className: "relative", children: [jsxRuntimeExports.jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400" }), jsxRuntimeExports.jsx(Input, { placeholder: "Search components...", value: searchQuery, onChange: (e) => setSearchQuery(e.target.value), className: "pl-10" })] }))] }), jsxRuntimeExports.jsx("nav", { className: "flex-1 p-4 overflow-y-auto", children: Object.entries(filteredCategories).map(([categoryName, categoryData]) => (jsxRuntimeExports.jsxs("div", { className: "mb-4", children: [jsxRuntimeExports.jsxs("button", { onClick: () => !sidebarCollapsed && toggleCategory(categoryName), className: cn("flex items-center w-full p-2 text-sm font-medium rounded-lg transition-colors", "hover:bg-gray-100 text-gray-700", sidebarCollapsed ? "justify-center" : "justify-between"), children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [categoryData.icon, !sidebarCollapsed && jsxRuntimeExports.jsx("span", { children: categoryName })] }), !sidebarCollapsed && (jsxRuntimeExports.jsx(ChevronDown, { className: cn("h-4 w-4 transition-transform", expandedCategories.includes(categoryName) && "rotate-180") }))] }), !sidebarCollapsed && expandedCategories.includes(categoryName) && (jsxRuntimeExports.jsx("div", { className: "mt-2 ml-6 space-y-1", children: categoryData.components.map((component) => (jsxRuntimeExports.jsx("button", { onClick: () => setSelectedComponent(component.id), className: cn("flex items-center w-full p-2 text-sm rounded-lg transition-colors", selectedComponent === component.id
|
|
533
|
+
? "bg-primary-50 text-primary-700 border-r-2 border-primary-600"
|
|
534
|
+
: "text-gray-600 hover:bg-gray-50 hover:text-gray-900"), children: component.name }, component.id))) }))] }, categoryName))) })] }), jsxRuntimeExports.jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", children: [jsxRuntimeExports.jsx("header", { className: "bg-white border-b border-gray-200 p-4", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-between", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-4", children: [jsxRuntimeExports.jsx("h1", { className: "text-2xl font-bold text-gray-900", children: currentDoc?.name || "Component Showcase" }), currentDoc && (jsxRuntimeExports.jsx(Badge, { variant: "outline", children: currentDoc.name }))] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center space-x-2", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center bg-gray-100 rounded-lg p-1", children: [jsxRuntimeExports.jsx(Button, { variant: viewMode === "desktop" ? "primary" : "ghost", size: "sm", onClick: () => setViewMode("desktop"), children: jsxRuntimeExports.jsx(Monitor, { className: "h-4 w-4" }) }), jsxRuntimeExports.jsx(Button, { variant: viewMode === "tablet" ? "primary" : "ghost", size: "sm", onClick: () => setViewMode("tablet"), children: jsxRuntimeExports.jsx(Tablet, { className: "h-4 w-4" }) }), jsxRuntimeExports.jsx(Button, { variant: viewMode === "mobile" ? "primary" : "ghost", size: "sm", onClick: () => setViewMode("mobile"), children: jsxRuntimeExports.jsx(Smartphone, { className: "h-4 w-4" }) })] }), jsxRuntimeExports.jsx(Button, { variant: "ghost", size: "sm", onClick: () => setDarkMode(!darkMode), children: darkMode ? jsxRuntimeExports.jsx(Sun, { className: "h-4 w-4" }) : jsxRuntimeExports.jsx(Moon, { className: "h-4 w-4" }) })] })] }) }), jsxRuntimeExports.jsx("main", { className: "flex-1 overflow-auto p-6", children: currentDoc ? (jsxRuntimeExports.jsxs("div", { className: "max-w-6xl mx-auto space-y-8", children: [jsxRuntimeExports.jsx("div", { children: jsxRuntimeExports.jsx("p", { className: "text-lg text-gray-600", children: currentDoc.description }) }), jsxRuntimeExports.jsxs(Tabs, { value: "preview", onValueChange: () => { }, children: [jsxRuntimeExports.jsxs(TabsList, { children: [jsxRuntimeExports.jsxs(TabsTrigger, { value: "preview", children: [jsxRuntimeExports.jsx(Eye, { className: "h-4 w-4 mr-2" }), "Preview"] }), jsxRuntimeExports.jsxs(TabsTrigger, { value: "code", children: [jsxRuntimeExports.jsx(Code, { className: "h-4 w-4 mr-2" }), "Code"] }), jsxRuntimeExports.jsxs(TabsTrigger, { value: "props", children: [jsxRuntimeExports.jsx(Settings, { className: "h-4 w-4 mr-2" }), "Props"] })] }), jsxRuntimeExports.jsx(TabsContent, { value: "preview", className: "mt-6", children: jsxRuntimeExports.jsx(Card, { children: jsxRuntimeExports.jsx(CardContent, { className: "p-8", children: jsxRuntimeExports.jsx("div", { className: cn("mx-auto transition-all duration-300", getViewportClass()), children: jsxRuntimeExports.jsx("div", { className: cn(darkMode && "dark"), children: showcasePreviewMap[selectedComponent]
|
|
535
|
+
? React.createElement(showcasePreviewMap[selectedComponent])
|
|
536
|
+
: null }) }) }) }) }), jsxRuntimeExports.jsx(TabsContent, { value: "code", className: "mt-6", children: jsxRuntimeExports.jsxs(Card, { children: [jsxRuntimeExports.jsxs(CardHeader, { className: "flex flex-row items-center justify-between", children: [jsxRuntimeExports.jsx(CardTitle, { className: "text-lg", children: "Usage Example" }), jsxRuntimeExports.jsxs(Button, { variant: "outline", size: "sm", onClick: () => copyToClipboard(currentDoc.example), children: [copiedCode === currentDoc.example ? (jsxRuntimeExports.jsx(Check, { className: "h-4 w-4 mr-2" })) : (jsxRuntimeExports.jsx(Copy, { className: "h-4 w-4 mr-2" })), "Copy"] })] }), jsxRuntimeExports.jsx(CardContent, { children: jsxRuntimeExports.jsx("pre", { className: "bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto", children: jsxRuntimeExports.jsx("code", { children: currentDoc.example }) }) })] }) }), jsxRuntimeExports.jsx(TabsContent, { value: "props", className: "mt-6", children: jsxRuntimeExports.jsxs(Card, { children: [jsxRuntimeExports.jsx(CardHeader, { children: jsxRuntimeExports.jsx(CardTitle, { className: "text-lg", children: "Component Props" }) }), jsxRuntimeExports.jsx(CardContent, { children: jsxRuntimeExports.jsx("div", { className: "overflow-x-auto", children: jsxRuntimeExports.jsxs("table", { className: "w-full border-collapse", children: [jsxRuntimeExports.jsx("thead", { children: jsxRuntimeExports.jsxs("tr", { className: "border-b border-gray-200", children: [jsxRuntimeExports.jsx("th", { className: "text-left p-3 font-medium text-gray-900", children: "Prop" }), jsxRuntimeExports.jsx("th", { className: "text-left p-3 font-medium text-gray-900", children: "Type" }), jsxRuntimeExports.jsx("th", { className: "text-left p-3 font-medium text-gray-900", children: "Default" }), jsxRuntimeExports.jsx("th", { className: "text-left p-3 font-medium text-gray-900", children: "Description" })] }) }), jsxRuntimeExports.jsx("tbody", { children: currentDoc.props?.map((prop, index) => (jsxRuntimeExports.jsxs("tr", { className: "border-b border-gray-100", children: [jsxRuntimeExports.jsxs("td", { className: "p-3", children: [jsxRuntimeExports.jsx("code", { className: "bg-gray-100 px-2 py-1 rounded text-sm", children: prop.name }), ("required" in prop && prop.required) && (jsxRuntimeExports.jsx(Badge, { variant: "danger", className: "ml-2 text-xs", children: "Required" }))] }), jsxRuntimeExports.jsx("td", { className: "p-3 text-gray-600", children: prop.type }), jsxRuntimeExports.jsx("td", { className: "p-3 text-gray-600", children: ("default" in prop && prop.default) ? (jsxRuntimeExports.jsx("code", { className: "bg-gray-100 px-2 py-1 rounded text-sm", children: prop.default })) : null }), jsxRuntimeExports.jsx("td", { className: "p-3 text-gray-600", children: prop.description })] }, index))) })] }) }) })] }) })] })] })) : (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: jsxRuntimeExports.jsxs("div", { className: "text-center", children: [jsxRuntimeExports.jsx(Book, { className: "h-16 w-16 text-gray-400 mx-auto mb-4" }), jsxRuntimeExports.jsx("h2", { className: "text-xl font-semibold text-gray-900 mb-2", children: "Select a Component" }), jsxRuntimeExports.jsx("p", { className: "text-gray-600", children: "Choose a component from the sidebar to view its documentation and examples." })] }) })) })] })] }));
|
|
537
|
+
};
|
|
538
|
+
|
|
539
|
+
export { ComponentShowcase };
|
|
540
|
+
//# sourceMappingURL=ComponentShowcase.js.map
|