@ancatag/at-design 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +537 -0
- package/dist/components/Sheet.d.ts +20 -0
- package/dist/components/Sheet.d.ts.map +1 -0
- package/dist/components/Sheet.js +26 -0
- package/dist/components/Sheet.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +21 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +27 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +9 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +23 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/avatar.d.ts +7 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +12 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +10 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +21 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/bottom-sheet.d.ts +16 -0
- package/dist/components/bottom-sheet.d.ts.map +1 -0
- package/dist/components/bottom-sheet.js +13 -0
- package/dist/components/bottom-sheet.js.map +1 -0
- package/dist/components/button.d.ts +12 -0
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +34 -0
- package/dist/components/button.js.map +1 -0
- package/dist/components/card.d.ts +9 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +17 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/checkbox.d.ts +5 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +10 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/combobox.d.ts +19 -0
- package/dist/components/combobox.d.ts.map +1 -0
- package/dist/components/combobox.js +101 -0
- package/dist/components/combobox.js.map +1 -0
- package/dist/components/dialog.d.ts +20 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +24 -0
- package/dist/components/dialog.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +28 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +36 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/error-page.d.ts +105 -0
- package/dist/components/error-page.d.ts.map +1 -0
- package/dist/components/error-page.js +99 -0
- package/dist/components/error-page.js.map +1 -0
- package/dist/components/glass-card.d.ts +12 -0
- package/dist/components/glass-card.d.ts.map +1 -0
- package/dist/components/glass-card.js +15 -0
- package/dist/components/glass-card.js.map +1 -0
- package/dist/components/icon-badge.d.ts +15 -0
- package/dist/components/icon-badge.d.ts.map +1 -0
- package/dist/components/icon-badge.js +77 -0
- package/dist/components/icon-badge.js.map +1 -0
- package/dist/components/input.d.ts +6 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +9 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +6 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +11 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/progress.d.ts +5 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +9 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +6 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +15 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/responsive-table.d.ts +21 -0
- package/dist/components/responsive-table.d.ts.map +1 -0
- package/dist/components/responsive-table.js +48 -0
- package/dist/components/responsive-table.js.map +1 -0
- package/dist/components/select.d.ts +14 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +27 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/skeleton.d.ts +3 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +7 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +5 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +9 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/stat-card.d.ts +17 -0
- package/dist/components/stat-card.d.ts.map +1 -0
- package/dist/components/stat-card.js +23 -0
- package/dist/components/stat-card.js.map +1 -0
- package/dist/components/switch.d.ts +5 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +9 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +11 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +21 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +8 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +14 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +6 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +9 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toast.d.ts +6 -0
- package/dist/components/toast.d.ts.map +1 -0
- package/dist/components/toast.js +14 -0
- package/dist/components/toast.js.map +1 -0
- package/dist/components/tooltip.d.ts +8 -0
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +12 -0
- package/dist/components/tooltip.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +6 -0
- package/dist/utils/cn.js.map +1 -0
- package/package.json +96 -0
- package/src/components/Sheet.tsx +117 -0
- package/src/components/alert-dialog.tsx +138 -0
- package/src/components/alert.tsx +58 -0
- package/src/components/avatar.tsx +48 -0
- package/src/components/badge.tsx +36 -0
- package/src/components/bottom-sheet.tsx +68 -0
- package/src/components/button.tsx +56 -0
- package/src/components/card.tsx +85 -0
- package/src/components/checkbox.tsx +30 -0
- package/src/components/combobox.tsx +246 -0
- package/src/components/dialog.tsx +122 -0
- package/src/components/dropdown-menu.tsx +198 -0
- package/src/components/error-page.tsx +368 -0
- package/src/components/glass-card.tsx +37 -0
- package/src/components/icon-badge.tsx +126 -0
- package/src/components/input.tsx +25 -0
- package/src/components/label.tsx +26 -0
- package/src/components/progress.tsx +28 -0
- package/src/components/radio-group.tsx +42 -0
- package/src/components/responsive-table.tsx +191 -0
- package/src/components/select.tsx +158 -0
- package/src/components/skeleton.tsx +15 -0
- package/src/components/slider.tsx +27 -0
- package/src/components/stat-card.tsx +69 -0
- package/src/components/switch.tsx +29 -0
- package/src/components/table.tsx +117 -0
- package/src/components/tabs.tsx +55 -0
- package/src/components/textarea.tsx +23 -0
- package/src/components/toast.tsx +26 -0
- package/src/components/tooltip.tsx +34 -0
- package/src/index.ts +136 -0
- package/src/styles/animations.css +55 -0
- package/src/styles/base.css +51 -0
- package/src/styles/tokens.css +37 -0
- package/src/utils/cn.ts +6 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ErrorPageProps {
|
|
3
|
+
/**
|
|
4
|
+
* Error code (e.g., "404", "500", "403")
|
|
5
|
+
*/
|
|
6
|
+
code?: string;
|
|
7
|
+
/**
|
|
8
|
+
* Main error title
|
|
9
|
+
*/
|
|
10
|
+
title?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Error description/message
|
|
13
|
+
*/
|
|
14
|
+
description?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Show home button
|
|
17
|
+
*/
|
|
18
|
+
showHomeButton?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Show back button
|
|
21
|
+
*/
|
|
22
|
+
showBackButton?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Show search button
|
|
25
|
+
*/
|
|
26
|
+
showSearchButton?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Custom home button label
|
|
29
|
+
*/
|
|
30
|
+
homeButtonLabel?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Custom back button label
|
|
33
|
+
*/
|
|
34
|
+
backButtonLabel?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Custom search button label
|
|
37
|
+
*/
|
|
38
|
+
searchButtonLabel?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Home button action
|
|
41
|
+
*/
|
|
42
|
+
onHomeClick?: () => void;
|
|
43
|
+
/**
|
|
44
|
+
* Back button action
|
|
45
|
+
*/
|
|
46
|
+
onBackClick?: () => void;
|
|
47
|
+
/**
|
|
48
|
+
* Search button action
|
|
49
|
+
*/
|
|
50
|
+
onSearchClick?: () => void;
|
|
51
|
+
/**
|
|
52
|
+
* Custom icon component
|
|
53
|
+
*/
|
|
54
|
+
icon?: React.ComponentType<{
|
|
55
|
+
className?: string;
|
|
56
|
+
}>;
|
|
57
|
+
/**
|
|
58
|
+
* Additional CSS classes
|
|
59
|
+
*/
|
|
60
|
+
className?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Show as card or full page
|
|
63
|
+
*/
|
|
64
|
+
variant?: "card" | "full";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* ErrorPage - A beautiful, customizable error page component
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```tsx
|
|
71
|
+
* <ErrorPage
|
|
72
|
+
* code="404"
|
|
73
|
+
* title="Page Not Found"
|
|
74
|
+
* description="The page you're looking for doesn't exist or has been moved."
|
|
75
|
+
* showHomeButton
|
|
76
|
+
* showBackButton
|
|
77
|
+
* />
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare const ErrorPage: React.ForwardRefExoticComponent<ErrorPageProps & React.RefAttributes<HTMLDivElement>>;
|
|
81
|
+
/**
|
|
82
|
+
* Pre-configured 404 error page
|
|
83
|
+
*/
|
|
84
|
+
export declare const NotFoundPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code"> & {
|
|
85
|
+
description?: string;
|
|
86
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
87
|
+
/**
|
|
88
|
+
* Pre-configured 500 error page
|
|
89
|
+
*/
|
|
90
|
+
export declare const ServerErrorPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code"> & {
|
|
91
|
+
description?: string;
|
|
92
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
93
|
+
/**
|
|
94
|
+
* Pre-configured 403 error page
|
|
95
|
+
*/
|
|
96
|
+
export declare const ForbiddenPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code"> & {
|
|
97
|
+
description?: string;
|
|
98
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
99
|
+
/**
|
|
100
|
+
* Pre-configured 401 error page
|
|
101
|
+
*/
|
|
102
|
+
export declare const UnauthorizedPage: React.ForwardRefExoticComponent<Omit<ErrorPageProps, "title" | "code"> & {
|
|
103
|
+
description?: string;
|
|
104
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
105
|
+
//# sourceMappingURL=error-page.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-page.d.ts","sourceRoot":"","sources":["../../src/components/error-page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,SAAS,uFAyLrB,CAAC;AAIF;;GAEG;AACH,eAAO,MAAM,YAAY;kBAEiC,MAAM;wCAc9D,CAAC;AAIH;;GAEG;AACH,eAAO,MAAM,eAAe;kBAE8B,MAAM;wCAc9D,CAAC;AAIH;;GAEG;AACH,eAAO,MAAM,aAAa;kBAEgC,MAAM;wCAc9D,CAAC;AAIH;;GAEG;AACH,eAAO,MAAM,gBAAgB;kBAE6B,MAAM;wCAa9D,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { ArrowLeft, Home, Search } from "lucide-react";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../utils/cn";
|
|
5
|
+
import { Button } from "./button";
|
|
6
|
+
import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "./card";
|
|
7
|
+
/**
|
|
8
|
+
* ErrorPage - A beautiful, customizable error page component
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <ErrorPage
|
|
13
|
+
* code="404"
|
|
14
|
+
* title="Page Not Found"
|
|
15
|
+
* description="The page you're looking for doesn't exist or has been moved."
|
|
16
|
+
* showHomeButton
|
|
17
|
+
* showBackButton
|
|
18
|
+
* />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export const ErrorPage = React.forwardRef(({ code = "404", title = "Page Not Found", description = "The page you're looking for doesn't exist or has been moved.", showHomeButton = true, showBackButton = true, showSearchButton = false, homeButtonLabel = "Go Home", backButtonLabel = "Go Back", searchButtonLabel = "Search", onHomeClick, onBackClick, onSearchClick, icon: Icon, className, variant = "full", }, ref) => {
|
|
22
|
+
const handleBack = () => {
|
|
23
|
+
if (onBackClick) {
|
|
24
|
+
onBackClick();
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
window.history.back();
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const handleHome = () => {
|
|
31
|
+
if (onHomeClick) {
|
|
32
|
+
onHomeClick();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
window.location.href = "/";
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
const handleSearch = () => {
|
|
39
|
+
if (onSearchClick) {
|
|
40
|
+
onSearchClick();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const content = (_jsxs("div", { ref: ref, className: cn("flex flex-col items-center justify-center text-center", variant === "card"
|
|
44
|
+
? "p-6"
|
|
45
|
+
: "min-h-screen px-4 py-16 sm:py-20 lg:py-24 sm:px-6 lg:px-8", className), children: [_jsxs("div", { className: "mb-8 sm:mb-12 relative", children: [_jsx("div", { className: cn("font-bold select-none", "text-[120px] sm:text-[180px] lg:text-[240px] xl:text-[280px]", "leading-none tracking-tight", "bg-gradient-to-br from-primary via-primary/80 to-primary/40", "bg-clip-text text-transparent", "drop-shadow-2xl"), style: {
|
|
46
|
+
animation: "fade-in 0.8s ease-out forwards",
|
|
47
|
+
}, children: code }), _jsx("div", { className: "absolute inset-0 -z-10 blur-3xl opacity-20", style: {
|
|
48
|
+
background: "radial-gradient(circle, hsl(var(--primary)) 0%, transparent 70%)",
|
|
49
|
+
} })] }), Icon && (_jsx("div", { className: "mb-8 sm:mb-10", style: {
|
|
50
|
+
animation: "fade-in 0.8s ease-out 0.2s forwards",
|
|
51
|
+
opacity: 0,
|
|
52
|
+
}, children: _jsx(Icon, { className: "h-20 w-20 sm:h-24 sm:w-24 lg:h-28 lg:w-28 text-muted-foreground/60" }) })), _jsx("h1", { className: cn("font-bold text-foreground mb-6 sm:mb-8", "text-4xl sm:text-5xl lg:text-6xl xl:text-7xl", "leading-tight tracking-tight"), style: {
|
|
53
|
+
animation: "fade-in 0.8s ease-out 0.3s forwards",
|
|
54
|
+
opacity: 0,
|
|
55
|
+
}, children: title }), _jsx("p", { className: cn("text-muted-foreground max-w-lg sm:max-w-xl lg:max-w-2xl mb-10 sm:mb-12", "text-lg sm:text-xl lg:text-2xl", "leading-relaxed"), style: {
|
|
56
|
+
animation: "fade-in 0.8s ease-out 0.4s forwards",
|
|
57
|
+
opacity: 0,
|
|
58
|
+
}, children: description }), _jsxs("div", { className: cn("flex flex-col sm:flex-row gap-4 sm:gap-5"), style: {
|
|
59
|
+
animation: "fade-in 0.8s ease-out 0.5s forwards",
|
|
60
|
+
opacity: 0,
|
|
61
|
+
}, children: [showBackButton && (_jsxs(Button, { variant: "outline", size: "lg", onClick: handleBack, className: "min-w-[160px] sm:min-w-[180px] h-12 sm:h-14 text-base sm:text-lg", children: [_jsx(ArrowLeft, { className: "mr-2 h-5 w-5" }), backButtonLabel] })), showHomeButton && (_jsxs(Button, { variant: "default", size: "lg", onClick: handleHome, className: "min-w-[160px] sm:min-w-[180px] h-12 sm:h-14 text-base sm:text-lg", children: [_jsx(Home, { className: "mr-2 h-5 w-5" }), homeButtonLabel] })), showSearchButton && (_jsxs(Button, { variant: "secondary", size: "lg", onClick: handleSearch, className: "min-w-[160px] sm:min-w-[180px] h-12 sm:h-14 text-base sm:text-lg", children: [_jsx(Search, { className: "mr-2 h-5 w-5" }), searchButtonLabel] }))] })] }));
|
|
62
|
+
if (variant === "card") {
|
|
63
|
+
return (_jsxs(Card, { className: "max-w-2xl mx-auto", children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { className: "text-center", children: title }), _jsx(CardDescription, { className: "text-center", children: description })] }), _jsx(CardContent, { children: content })] }));
|
|
64
|
+
}
|
|
65
|
+
return content;
|
|
66
|
+
});
|
|
67
|
+
ErrorPage.displayName = "ErrorPage";
|
|
68
|
+
/**
|
|
69
|
+
* Pre-configured 404 error page
|
|
70
|
+
*/
|
|
71
|
+
export const NotFoundPage = React.forwardRef((props, ref) => {
|
|
72
|
+
return (_jsx(ErrorPage, { ref: ref, code: "404", title: "Page Not Found", description: props.description ||
|
|
73
|
+
"The page you're looking for doesn't exist or has been moved.", ...props }));
|
|
74
|
+
});
|
|
75
|
+
NotFoundPage.displayName = "NotFoundPage";
|
|
76
|
+
/**
|
|
77
|
+
* Pre-configured 500 error page
|
|
78
|
+
*/
|
|
79
|
+
export const ServerErrorPage = React.forwardRef((props, ref) => {
|
|
80
|
+
return (_jsx(ErrorPage, { ref: ref, code: "500", title: "Server Error", description: props.description ||
|
|
81
|
+
"Something went wrong on our end. We're working to fix it.", ...props }));
|
|
82
|
+
});
|
|
83
|
+
ServerErrorPage.displayName = "ServerErrorPage";
|
|
84
|
+
/**
|
|
85
|
+
* Pre-configured 403 error page
|
|
86
|
+
*/
|
|
87
|
+
export const ForbiddenPage = React.forwardRef((props, ref) => {
|
|
88
|
+
return (_jsx(ErrorPage, { ref: ref, code: "403", title: "Access Forbidden", description: props.description ||
|
|
89
|
+
"You don't have permission to access this resource.", ...props }));
|
|
90
|
+
});
|
|
91
|
+
ForbiddenPage.displayName = "ForbiddenPage";
|
|
92
|
+
/**
|
|
93
|
+
* Pre-configured 401 error page
|
|
94
|
+
*/
|
|
95
|
+
export const UnauthorizedPage = React.forwardRef((props, ref) => {
|
|
96
|
+
return (_jsx(ErrorPage, { ref: ref, code: "401", title: "Unauthorized", description: props.description || "You need to be logged in to access this page.", ...props }));
|
|
97
|
+
});
|
|
98
|
+
UnauthorizedPage.displayName = "UnauthorizedPage";
|
|
99
|
+
//# sourceMappingURL=error-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-page.js","sourceRoot":"","sources":["../../src/components/error-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface GlassCardProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
gradient?: "blue" | "purple" | "pink" | "none";
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Apple-inspired glass morphism card
|
|
9
|
+
* Frosted glass effect with subtle gradients
|
|
10
|
+
*/
|
|
11
|
+
export declare function GlassCard({ children, className, gradient, }: GlassCardProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=glass-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glass-card.d.ts","sourceRoot":"","sources":["../../src/components/glass-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;CAC/C;AASD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACzB,QAAQ,EACR,SAAc,EACd,QAAiB,GACjB,EAAE,cAAc,2CAahB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
const gradientClasses = {
|
|
3
|
+
blue: "from-blue-500/5 to-cyan-500/5",
|
|
4
|
+
purple: "from-purple-500/5 to-pink-500/5",
|
|
5
|
+
pink: "from-pink-500/5 to-rose-500/5",
|
|
6
|
+
none: "",
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Apple-inspired glass morphism card
|
|
10
|
+
* Frosted glass effect with subtle gradients
|
|
11
|
+
*/
|
|
12
|
+
export function GlassCard({ children, className = "", gradient = "none", }) {
|
|
13
|
+
return (_jsxs("div", { className: `relative overflow-hidden rounded-3xl border border-white/10 bg-white/5 p-8 shadow-2xl backdrop-blur-2xl dark:bg-black/20 ${className}`, children: [gradient !== "none" && (_jsx("div", { className: `absolute inset-0 bg-gradient-to-br ${gradientClasses[gradient]}` })), _jsx("div", { className: "relative z-10", children: children })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=glass-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glass-card.js","sourceRoot":"","sources":["../../src/components/glass-card.tsx"],"names":[],"mappings":";AAQA,MAAM,eAAe,GAAG;IACvB,IAAI,EAAE,+BAA+B;IACrC,MAAM,EAAE,iCAAiC;IACzC,IAAI,EAAE,+BAA+B;IACrC,IAAI,EAAE,EAAE;CACR,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EACzB,QAAQ,EACR,SAAS,GAAG,EAAE,EACd,QAAQ,GAAG,MAAM,GACD;IAChB,OAAO,CACN,eACC,SAAS,EAAE,4HAA4H,SAAS,EAAE,aAEjJ,QAAQ,KAAK,MAAM,IAAI,CACvB,cACC,SAAS,EAAE,sCAAsC,eAAe,CAAC,QAAQ,CAAC,EAAE,GAC3E,CACF,EACD,cAAK,SAAS,EAAC,eAAe,YAAE,QAAQ,GAAO,IAC1C,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { LucideIcon } from "lucide-react";
|
|
2
|
+
export interface IconBadgeProps {
|
|
3
|
+
icon: LucideIcon;
|
|
4
|
+
value: string | number;
|
|
5
|
+
label?: string;
|
|
6
|
+
size?: "sm" | "md" | "lg";
|
|
7
|
+
variant?: "blue" | "yellow" | "green" | "red" | "purple";
|
|
8
|
+
onClick?: () => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Apple-inspired icon badge for displaying token balances and stats
|
|
12
|
+
* Subtle borders, clean rounded design
|
|
13
|
+
*/
|
|
14
|
+
export declare function IconBadge({ icon: Icon, value, label, size, variant, onClick, }: IconBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=icon-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-badge.d.ts","sourceRoot":"","sources":["../../src/components/icon-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACzD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AA6DD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,KAAK,EACL,IAAW,EACX,OAAgB,EAChB,OAAO,GACP,EAAE,cAAc,2CA4ChB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
const sizeClasses = {
|
|
3
|
+
sm: {
|
|
4
|
+
container: "gap-2 px-3 py-1.5",
|
|
5
|
+
icon: "h-4 w-4",
|
|
6
|
+
value: "text-sm",
|
|
7
|
+
label: "text-xs",
|
|
8
|
+
},
|
|
9
|
+
md: {
|
|
10
|
+
container: "gap-2.5 px-3.5 py-2",
|
|
11
|
+
icon: "h-4 w-4",
|
|
12
|
+
value: "text-sm",
|
|
13
|
+
label: "text-xs",
|
|
14
|
+
},
|
|
15
|
+
lg: {
|
|
16
|
+
container: "gap-3 px-4 py-2.5",
|
|
17
|
+
icon: "h-5 w-5",
|
|
18
|
+
value: "text-base",
|
|
19
|
+
label: "text-sm",
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
const variantClasses = {
|
|
23
|
+
blue: {
|
|
24
|
+
container: "border-blue-200/50 bg-blue-50/50 dark:border-blue-900/30 dark:bg-blue-950/20",
|
|
25
|
+
icon: "text-blue-600 dark:text-blue-400",
|
|
26
|
+
value: "text-blue-700 dark:text-blue-300",
|
|
27
|
+
label: "text-blue-600/70 dark:text-blue-400/70",
|
|
28
|
+
},
|
|
29
|
+
yellow: {
|
|
30
|
+
container: "border-yellow-200/50 bg-yellow-50/50 dark:border-yellow-900/30 dark:bg-yellow-950/20",
|
|
31
|
+
icon: "text-yellow-600 dark:text-yellow-400",
|
|
32
|
+
value: "text-yellow-700 dark:text-yellow-300",
|
|
33
|
+
label: "text-yellow-600/70 dark:text-yellow-400/70",
|
|
34
|
+
},
|
|
35
|
+
green: {
|
|
36
|
+
container: "border-green-200/50 bg-green-50/50 dark:border-green-900/30 dark:bg-green-950/20",
|
|
37
|
+
icon: "text-green-600 dark:text-green-400",
|
|
38
|
+
value: "text-green-700 dark:text-green-300",
|
|
39
|
+
label: "text-green-600/70 dark:text-green-400/70",
|
|
40
|
+
},
|
|
41
|
+
red: {
|
|
42
|
+
container: "border-red-200/50 bg-red-50/50 dark:border-red-900/30 dark:bg-red-950/20",
|
|
43
|
+
icon: "text-red-600 dark:text-red-400",
|
|
44
|
+
value: "text-red-700 dark:text-red-300",
|
|
45
|
+
label: "text-red-600/70 dark:text-red-400/70",
|
|
46
|
+
},
|
|
47
|
+
purple: {
|
|
48
|
+
container: "border-purple-200/50 bg-purple-50/50 dark:border-purple-900/30 dark:bg-purple-950/20",
|
|
49
|
+
icon: "text-purple-600 dark:text-purple-400",
|
|
50
|
+
value: "text-purple-700 dark:text-purple-300",
|
|
51
|
+
label: "text-purple-600/70 dark:text-purple-400/70",
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Apple-inspired icon badge for displaying token balances and stats
|
|
56
|
+
* Subtle borders, clean rounded design
|
|
57
|
+
*/
|
|
58
|
+
export function IconBadge({ icon: Icon, value, label, size = "md", variant = "blue", onClick, }) {
|
|
59
|
+
const sizeStyle = sizeClasses[size];
|
|
60
|
+
const variantStyle = variantClasses[variant];
|
|
61
|
+
const isClickable = !!onClick;
|
|
62
|
+
return (_jsxs("div", { className: `
|
|
63
|
+
flex items-center rounded-xl border transition-all duration-200
|
|
64
|
+
${sizeStyle.container} ${variantStyle.container}
|
|
65
|
+
${isClickable ? "cursor-pointer hover:shadow-md active:scale-95" : ""}
|
|
66
|
+
`, onClick: onClick, ...(isClickable && {
|
|
67
|
+
role: "button",
|
|
68
|
+
tabIndex: 0,
|
|
69
|
+
onKeyDown: (e) => {
|
|
70
|
+
if (e.key === "Enter" || e.key === " ") {
|
|
71
|
+
e.preventDefault();
|
|
72
|
+
onClick?.();
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
}), children: [_jsx(Icon, { className: `${sizeStyle.icon} ${variantStyle.icon}`, strokeWidth: 2 }), _jsxs("div", { className: "flex flex-col", children: [_jsx("div", { className: `font-semibold tabular-nums ${sizeStyle.value} ${variantStyle.value}`, children: value }), label && (_jsx("div", { className: `font-medium ${sizeStyle.label} ${variantStyle.label}`, children: label }))] })] }));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=icon-badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"icon-badge.js","sourceRoot":"","sources":["../../src/components/icon-badge.tsx"],"names":[],"mappings":";AAWA,MAAM,WAAW,GAAG;IACnB,EAAE,EAAE;QACH,SAAS,EAAE,mBAAmB;QAC9B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;KAChB;IACD,EAAE,EAAE;QACH,SAAS,EAAE,qBAAqB;QAChC,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,SAAS;KAChB;IACD,EAAE,EAAE;QACH,SAAS,EAAE,mBAAmB;QAC9B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,WAAW;QAClB,KAAK,EAAE,SAAS;KAChB;CACD,CAAC;AAEF,MAAM,cAAc,GAAG;IACtB,IAAI,EAAE;QACL,SAAS,EACR,8EAA8E;QAC/E,IAAI,EAAE,kCAAkC;QACxC,KAAK,EAAE,kCAAkC;QACzC,KAAK,EAAE,wCAAwC;KAC/C;IACD,MAAM,EAAE;QACP,SAAS,EACR,sFAAsF;QACvF,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE,sCAAsC;QAC7C,KAAK,EAAE,4CAA4C;KACnD;IACD,KAAK,EAAE;QACN,SAAS,EACR,kFAAkF;QACnF,IAAI,EAAE,oCAAoC;QAC1C,KAAK,EAAE,oCAAoC;QAC3C,KAAK,EAAE,0CAA0C;KACjD;IACD,GAAG,EAAE;QACJ,SAAS,EACR,0EAA0E;QAC3E,IAAI,EAAE,gCAAgC;QACtC,KAAK,EAAE,gCAAgC;QACvC,KAAK,EAAE,sCAAsC;KAC7C;IACD,MAAM,EAAE;QACP,SAAS,EACR,sFAAsF;QACvF,IAAI,EAAE,sCAAsC;QAC5C,KAAK,EAAE,sCAAsC;QAC7C,KAAK,EAAE,4CAA4C;KACnD;CACD,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EACL,KAAK,EACL,IAAI,GAAG,IAAI,EACX,OAAO,GAAG,MAAM,EAChB,OAAO,GACS;IAChB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,CAAC;IAE9B,OAAO,CACN,eACC,SAAS,EAAE;;UAEJ,SAAS,CAAC,SAAS,IAAI,YAAY,CAAC,SAAS;UAC7C,WAAW,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,EAAE;OACtE,EACJ,OAAO,EAAE,OAAO,KACZ,CAAC,WAAW,IAAI;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBACxC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,OAAO,EAAE,EAAE,CAAC;gBACb,CAAC;YACF,CAAC;SACD,CAAC,aAEF,KAAC,IAAI,IACJ,SAAS,EAAE,GAAG,SAAS,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,EACnD,WAAW,EAAE,CAAC,GACb,EACF,eAAK,SAAS,EAAC,eAAe,aAC7B,cACC,SAAS,EAAE,8BAA8B,SAAS,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,YAE/E,KAAK,GACD,EACL,KAAK,IAAI,CACT,cACC,SAAS,EAAE,eAAe,SAAS,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,EAAE,YAEhE,KAAK,GACD,CACN,IACI,IACD,CACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
}
|
|
4
|
+
declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
|
|
5
|
+
export { Input };
|
|
6
|
+
//# sourceMappingURL=input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,UAChB,SAAQ,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;CAAG;AAEvD,QAAA,MAAM,KAAK,qFAcV,CAAC;AAGF,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../utils/cn";
|
|
4
|
+
const Input = React.forwardRef(({ className, type, ...props }, ref) => {
|
|
5
|
+
return (_jsx("input", { type: type, className: cn("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ref: ref, ...props }));
|
|
6
|
+
});
|
|
7
|
+
Input.displayName = "Input";
|
|
8
|
+
export { Input };
|
|
9
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAKjC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAC7B,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IACtC,OAAO,CACN,gBACC,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACZ,8VAA8V,EAC9V,SAAS,CACT,EACD,GAAG,EAAE,GAAG,KACJ,KAAK,GACR,CACF,CAAC;AACH,CAAC,CACD,CAAC;AACF,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAE5B,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
declare const Label: React.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & React.RefAttributes<HTMLLabelElement>, "ref"> & VariantProps<(props?: import("class-variance-authority/types").ClassProp | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
|
|
5
|
+
export { Label };
|
|
6
|
+
//# sourceMappingURL=label.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,QAAA,MAAM,KAAK,4PAUT,CAAC;AAGH,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { cn } from "../utils/cn";
|
|
7
|
+
const labelVariants = cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
|
|
8
|
+
const Label = React.forwardRef(({ className, ...props }, ref) => (_jsx(LabelPrimitive.Root, { ref: ref, className: cn(labelVariants(), className), ...props })));
|
|
9
|
+
Label.displayName = LabelPrimitive.Root.displayName;
|
|
10
|
+
export { Label };
|
|
11
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,cAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAqB,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,aAAa,GAAG,GAAG,CACxB,4FAA4F,CAC5F,CAAC;AAEF,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAI5B,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CACnC,KAAC,cAAc,CAAC,IAAI,IACnB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,SAAS,CAAC,KACrC,KAAK,GACR,CACF,CAAC,CAAC;AACH,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC;AAEpD,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const Progress: React.ForwardRefExoticComponent<Omit<ProgressPrimitive.ProgressProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
export { Progress };
|
|
5
|
+
//# sourceMappingURL=progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,QAAQ,2JAiBZ,CAAC;AAGH,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import * as ProgressPrimitive from "@radix-ui/react-progress";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "../utils/cn";
|
|
6
|
+
const Progress = React.forwardRef(({ className, value, ...props }, ref) => (_jsx(ProgressPrimitive.Root, { ref: ref, className: cn("relative h-4 w-full overflow-hidden rounded-full bg-secondary", className), ...props, children: _jsx(ProgressPrimitive.Indicator, { className: "h-full w-full flex-1 bg-primary transition-all", style: { transform: `translateX(-${100 - (value || 0)}%)` } }) })));
|
|
7
|
+
Progress.displayName = ProgressPrimitive.Root.displayName;
|
|
8
|
+
export { Progress };
|
|
9
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/components/progress.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,KAAK,iBAAiB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAG/B,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAC1C,KAAC,iBAAiB,CAAC,IAAI,IACtB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,+DAA+D,EAC/D,SAAS,CACT,KACG,KAAK,YAET,KAAC,iBAAiB,CAAC,SAAS,IAC3B,SAAS,EAAC,gDAAgD,EAC1D,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,GAAG,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,GAC1D,GACsB,CACzB,CAAC,CAAC;AACH,QAAQ,CAAC,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE1D,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const RadioGroup: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare const RadioGroupItem: React.ForwardRefExoticComponent<Omit<RadioGroupPrimitive.RadioGroupItemProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
5
|
+
export { RadioGroup, RadioGroupItem };
|
|
6
|
+
//# sourceMappingURL=radio-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.d.ts","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,UAAU,+JAWd,CAAC;AAGH,QAAA,MAAM,cAAc,yKAkBlB,CAAC;AAGH,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
3
|
+
import { Circle } from "lucide-react";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { cn } from "../utils/cn";
|
|
6
|
+
const RadioGroup = React.forwardRef(({ className, ...props }, ref) => {
|
|
7
|
+
return (_jsx(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ...props, ref: ref }));
|
|
8
|
+
});
|
|
9
|
+
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
10
|
+
const RadioGroupItem = React.forwardRef(({ className, ...props }, ref) => {
|
|
11
|
+
return (_jsx(RadioGroupPrimitive.Item, { ref: ref, className: cn("aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50", className), ...props, children: _jsx(RadioGroupPrimitive.Indicator, { className: "flex items-center justify-center", children: _jsx(Circle, { className: "h-2.5 w-2.5 fill-current text-current" }) }) }));
|
|
12
|
+
});
|
|
13
|
+
RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
|
|
14
|
+
export { RadioGroup, RadioGroupItem };
|
|
15
|
+
//# sourceMappingURL=radio-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../../src/components/radio-group.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,mBAAmB,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAGjC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAClC,OAAO,CACN,KAAC,mBAAmB,CAAC,IAAI,IACxB,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,KAClC,KAAK,EACT,GAAG,EAAE,GAAG,GACP,CACF,CAAC;AACH,CAAC,CAAC,CAAC;AACH,UAAU,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AAE9D,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAGrC,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAClC,OAAO,CACN,KAAC,mBAAmB,CAAC,IAAI,IACxB,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACZ,0OAA0O,EAC1O,SAAS,CACT,KACG,KAAK,YAET,KAAC,mBAAmB,CAAC,SAAS,IAAC,SAAS,EAAC,kCAAkC,YAC1E,KAAC,MAAM,IAAC,SAAS,EAAC,uCAAuC,GAAG,GAC7B,GACN,CAC3B,CAAC;AACH,CAAC,CAAC,CAAC;AACH,cAAc,CAAC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC;AAElE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export interface ResponsiveTableColumn<T> {
|
|
3
|
+
key: string;
|
|
4
|
+
header: string;
|
|
5
|
+
render: (item: T) => React.ReactNode;
|
|
6
|
+
mobileLabel?: string;
|
|
7
|
+
hideOnMobile?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ResponsiveTableProps<T> {
|
|
10
|
+
data: T[];
|
|
11
|
+
columns: ResponsiveTableColumn<T>[];
|
|
12
|
+
keyExtractor: (item: T) => string;
|
|
13
|
+
onRowClick?: (item: T) => void;
|
|
14
|
+
className?: string;
|
|
15
|
+
emptyMessage?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Responsive table component that shows as table on desktop and cards on mobile
|
|
19
|
+
*/
|
|
20
|
+
export declare function ResponsiveTable<T>({ data, columns, keyExtractor, onRowClick, className, emptyMessage, }: ResponsiveTableProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=responsive-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsive-table.d.ts","sourceRoot":"","sources":["../../src/components/responsive-table.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACtC,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,YAAY,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,EAClC,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,EACT,YAAkC,GAClC,EAAE,oBAAoB,CAAC,CAAC,CAAC,2CA8JzB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { ChevronDown, ChevronUp } from "lucide-react";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../utils/cn";
|
|
5
|
+
import { Button } from "./button";
|
|
6
|
+
/**
|
|
7
|
+
* Responsive table component that shows as table on desktop and cards on mobile
|
|
8
|
+
*/
|
|
9
|
+
export function ResponsiveTable({ data, columns, keyExtractor, onRowClick, className, emptyMessage = "No data available", }) {
|
|
10
|
+
const [expandedRows, setExpandedRows] = React.useState(new Set());
|
|
11
|
+
const toggleRow = (key) => {
|
|
12
|
+
setExpandedRows((prev) => {
|
|
13
|
+
const next = new Set(prev);
|
|
14
|
+
if (next.has(key)) {
|
|
15
|
+
next.delete(key);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
next.add(key);
|
|
19
|
+
}
|
|
20
|
+
return next;
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const visibleColumns = columns.filter((col) => !col.hideOnMobile);
|
|
24
|
+
if (data.length === 0) {
|
|
25
|
+
return (_jsx("div", { className: "text-center py-12 text-muted-foreground", children: emptyMessage }));
|
|
26
|
+
}
|
|
27
|
+
return (_jsxs("div", { className: cn("w-full", className), children: [_jsx("div", { className: "hidden md:block rounded-md border overflow-hidden", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "bg-muted/50", children: _jsx("tr", { children: columns.map((column) => (_jsx("th", { className: "px-4 py-3 text-left text-xs font-medium text-muted-foreground uppercase tracking-wider", children: column.header }, column.key))) }) }), _jsx("tbody", { className: "divide-y divide-border", children: data.map((item) => {
|
|
28
|
+
const key = keyExtractor(item);
|
|
29
|
+
return (_jsx("tr", { onClick: () => onRowClick?.(item), className: cn("hover:bg-muted/50 transition-colors", onRowClick && "cursor-pointer"), children: columns.map((column) => (_jsx("td", { className: "px-4 py-3 text-sm", children: column.render(item) }, column.key))) }, key));
|
|
30
|
+
}) })] }) }), _jsx("div", { className: "md:hidden space-y-3", children: data.map((item) => {
|
|
31
|
+
const key = keyExtractor(item);
|
|
32
|
+
const isExpanded = expandedRows.has(key);
|
|
33
|
+
const primaryColumns = visibleColumns.slice(0, 2);
|
|
34
|
+
const secondaryColumns = visibleColumns.slice(2);
|
|
35
|
+
return (_jsxs("div", { className: cn("border rounded-lg overflow-hidden transition-all", onRowClick && "cursor-pointer"), onClick: () => {
|
|
36
|
+
if (secondaryColumns.length > 0) {
|
|
37
|
+
toggleRow(key);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
onRowClick?.(item);
|
|
41
|
+
}
|
|
42
|
+
}, children: [_jsx("div", { className: "p-4 space-y-2", children: primaryColumns.map((column) => (_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("span", { className: "text-xs font-medium text-muted-foreground min-w-[80px]", children: [column.mobileLabel || column.header, ":"] }), _jsx("div", { className: "flex-1 text-right text-sm", children: column.render(item) })] }, column.key))) }), secondaryColumns.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", className: "w-full h-10 rounded-none border-t", onClick: (e) => {
|
|
43
|
+
e.stopPropagation();
|
|
44
|
+
toggleRow(key);
|
|
45
|
+
}, children: isExpanded ? (_jsxs(_Fragment, { children: [_jsx(ChevronUp, { className: "h-4 w-4 mr-2" }), "Hide Details"] })) : (_jsxs(_Fragment, { children: [_jsx(ChevronDown, { className: "h-4 w-4 mr-2" }), "Show Details"] })) }), isExpanded && (_jsx("div", { className: "p-4 pt-0 space-y-2 border-t bg-muted/30", children: secondaryColumns.map((column) => (_jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("span", { className: "text-xs font-medium text-muted-foreground min-w-[80px]", children: [column.mobileLabel || column.header, ":"] }), _jsx("div", { className: "flex-1 text-right text-sm", children: column.render(item) })] }, column.key))) }))] }))] }, key));
|
|
46
|
+
}) })] }));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=responsive-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsive-table.js","sourceRoot":"","sources":["../../src/components/responsive-table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
declare const Select: React.FC<SelectPrimitive.SelectProps>;
|
|
4
|
+
declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
|
|
6
|
+
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
|
|
14
|
+
//# sourceMappingURL=select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../src/components/select.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,QAAA,MAAM,MAAM,uCAAuB,CAAC;AAEpC,QAAA,MAAM,WAAW,yGAAwB,CAAC;AAE1C,QAAA,MAAM,WAAW,0GAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,oKAiBjB,CAAC;AAGH,QAAA,MAAM,oBAAoB,qKAcxB,CAAC;AAGH,QAAA,MAAM,sBAAsB,uKAc1B,CAAC;AAIH,QAAA,MAAM,aAAa,8JA6BjB,CAAC;AAGH,QAAA,MAAM,WAAW,4JASf,CAAC;AAGH,QAAA,MAAM,UAAU,2JAoBd,CAAC;AAGH,QAAA,MAAM,eAAe,gKASnB,CAAC;AAGH,OAAO,EACN,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACtB,CAAC"}
|