create-bluecopa-react-app 1.0.41 → 1.0.42
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 +7 -5
- package/package.json +1 -1
- package/templates/latest/.claude/settings.local.json +56 -0
- package/templates/latest/.env.example +8 -0
- package/templates/latest/Agent.md +598 -775
- package/templates/latest/CLAUDE.md +759 -0
- package/templates/latest/README.md +11 -2
- package/templates/latest/app/app.css +292 -85
- package/templates/latest/app/app.tsx +48 -39
- package/templates/latest/app/components/bluecopa-logo.tsx +20 -0
- package/templates/latest/app/components/charts/bar-chart.tsx +132 -0
- package/templates/latest/app/components/charts/base-chart.tsx +149 -0
- package/templates/latest/app/components/charts/chart-provider.tsx +71 -0
- package/templates/latest/app/components/charts/chart-theme.ts +262 -0
- package/templates/latest/app/components/charts/chart-utils.ts +142 -0
- package/templates/latest/app/components/charts/donut-chart.tsx +110 -0
- package/templates/latest/app/components/charts/index.ts +5 -0
- package/templates/latest/app/components/layouts/app-layout.tsx +22 -0
- package/templates/latest/app/components/layouts/app-sidebar.tsx +88 -0
- package/templates/latest/app/components/layouts/nav-main.tsx +50 -0
- package/templates/latest/app/components/layouts/nav-user.tsx +38 -0
- package/templates/latest/app/components/layouts/site-header.tsx +93 -0
- package/templates/latest/app/components/loading-screen.tsx +41 -0
- package/templates/latest/app/components/ui/ag-grid-table.tsx +79 -0
- package/templates/latest/app/components/ui/button.tsx +23 -23
- package/templates/latest/app/components/ui/card.tsx +20 -20
- package/templates/latest/app/components/ui/dropdown-menu.tsx +54 -49
- package/templates/latest/app/components/ui/input.tsx +8 -8
- package/templates/latest/app/components/ui/label.tsx +8 -8
- package/templates/latest/app/components/ui/separator.tsx +7 -7
- package/templates/latest/app/components/ui/sheet.tsx +43 -32
- package/templates/latest/app/components/ui/sidebar.tsx +240 -235
- package/templates/latest/app/components/ui/skeleton.tsx +4 -4
- package/templates/latest/app/components/ui/sonner.tsx +6 -9
- package/templates/latest/app/components/ui/tabs.tsx +15 -15
- package/templates/latest/app/components/ui/tooltip.tsx +18 -12
- package/templates/latest/app/constants/index.ts +31 -0
- package/templates/latest/app/contexts/app-context.tsx +201 -0
- package/templates/latest/app/hooks/use-mobile.ts +13 -12
- package/templates/latest/app/main.tsx +1 -1
- package/templates/latest/app/pages/dashboard.tsx +246 -0
- package/templates/latest/app/pages/payments.tsx +182 -0
- package/templates/latest/app/pages/settings.tsx +128 -0
- package/templates/latest/app/routes/index.tsx +19 -0
- package/templates/latest/app/single-spa.tsx +69 -186
- package/templates/latest/app/types/index.ts +37 -0
- package/templates/latest/app/utils/ag-grid-datasource.ts +63 -0
- package/templates/latest/app/utils/ag-grid-license.ts +12 -0
- package/templates/latest/app/utils/ag-grid-theme.ts +9 -0
- package/templates/latest/app/utils/component-style.ts +7 -0
- package/templates/latest/app/utils/style-drivers.ts +24 -0
- package/templates/latest/app/utils/utils.ts +10 -0
- package/templates/latest/components.json +3 -3
- package/templates/latest/index.html +30 -2
- package/templates/latest/package-lock.json +15 -401
- package/templates/latest/package.json +8 -18
- package/templates/latest/preview/index.html +125 -285
- package/templates/latest/public/favicon.svg +1 -0
- package/templates/latest/vite.config.ts +2 -8
- package/templates/latest/app/components/app-sidebar.tsx +0 -182
- package/templates/latest/app/components/chart-area-interactive.tsx +0 -290
- package/templates/latest/app/components/data-table.tsx +0 -807
- package/templates/latest/app/components/nav-documents.tsx +0 -92
- package/templates/latest/app/components/nav-main.tsx +0 -40
- package/templates/latest/app/components/nav-secondary.tsx +0 -42
- package/templates/latest/app/components/nav-user.tsx +0 -111
- package/templates/latest/app/components/section-cards.tsx +0 -102
- package/templates/latest/app/components/site-header.tsx +0 -28
- package/templates/latest/app/components/ui/avatar.tsx +0 -53
- package/templates/latest/app/components/ui/badge.tsx +0 -46
- package/templates/latest/app/components/ui/breadcrumb.tsx +0 -109
- package/templates/latest/app/components/ui/chart.tsx +0 -352
- package/templates/latest/app/components/ui/checkbox.tsx +0 -30
- package/templates/latest/app/components/ui/drawer.tsx +0 -139
- package/templates/latest/app/components/ui/select.tsx +0 -183
- package/templates/latest/app/components/ui/table.tsx +0 -117
- package/templates/latest/app/components/ui/toggle-group.tsx +0 -73
- package/templates/latest/app/components/ui/toggle.tsx +0 -47
- package/templates/latest/app/data/data.json +0 -614
- package/templates/latest/app/data/mock-payments.json +0 -122
- package/templates/latest/app/data/mock-transactions.json +0 -128
- package/templates/latest/app/hooks/use-bluecopa-user.ts +0 -37
- package/templates/latest/app/lib/utils.ts +0 -6
- package/templates/latest/app/routes/apitest.tsx +0 -2118
- package/templates/latest/app/routes/comments.tsx +0 -588
- package/templates/latest/app/routes/dashboard.tsx +0 -36
- package/templates/latest/app/routes/payments.tsx +0 -342
- package/templates/latest/app/routes/statements.tsx +0 -493
- package/templates/latest/app/routes/websocket.tsx +0 -450
- package/templates/latest/app/routes.tsx +0 -22
- package/templates/latest/dist/assets/__federation_expose_App-D-lv9y21.js +0 -161
- package/templates/latest/dist/assets/__federation_fn_import-CzfA7kmP.js +0 -438
- package/templates/latest/dist/assets/__federation_shared_react-Bp6HVBS4.js +0 -16
- package/templates/latest/dist/assets/__federation_shared_react-dom-BCcRGiYp.js +0 -17
- package/templates/latest/dist/assets/client-Dms8K6Dw.js +0 -78879
- package/templates/latest/dist/assets/index-BrhXrqF7.js +0 -60
- package/templates/latest/dist/assets/index-BzNimew1.js +0 -69
- package/templates/latest/dist/assets/index-DMFtQdNS.js +0 -412
- package/templates/latest/dist/assets/remoteEntry.css +0 -3996
- package/templates/latest/dist/assets/remoteEntry.js +0 -88
- package/templates/latest/dist/favicon.ico +0 -0
- package/templates/latest/dist/index.html +0 -19
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { Slot } from "@radix-ui/react-slot"
|
|
3
|
-
import { cva, type VariantProps } from "class-variance-authority"
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
3
|
+
import { cva, type VariantProps } from "class-variance-authority";
|
|
4
4
|
|
|
5
|
-
import { cn } from "~/
|
|
5
|
+
import { cn } from "~/utils/utils";
|
|
6
6
|
|
|
7
7
|
const buttonVariants = cva(
|
|
8
|
-
"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
8
|
+
"copa:inline-flex copa:items-center copa:justify-center copa:gap-2 copa:whitespace-nowrap copa:rounded-md copa:text-sm copa:font-medium copa:transition-all copa:disabled:pointer-events-none copa:disabled:opacity-50 copa:[&_svg]:pointer-events-none [&_svg:not([class*='size-'copa:])]:size-4 copa:shrink-0 copa:[&_svg]:shrink-0 copa:outline-none copa:focus-visible:border-ring copa:focus-visible:ring-ring/50 copa:focus-visible:ring-[3px] copa:aria-invalid:ring-destructive/20 copa:dark:aria-invalid:ring-destructive/40 copa:aria-invalid:border-destructive",
|
|
9
9
|
{
|
|
10
10
|
variants: {
|
|
11
11
|
variant: {
|
|
12
12
|
default:
|
|
13
|
-
"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
|
|
13
|
+
"copa:bg-primary copa:text-primary-foreground copa:shadow-xs copa:hover:bg-primary/90",
|
|
14
14
|
destructive:
|
|
15
|
-
"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
|
|
15
|
+
"copa:bg-destructive copa:text-white copa:shadow-xs copa:hover:bg-destructive/90 copa:focus-visible:ring-destructive/20 copa:dark:focus-visible:ring-destructive/40 copa:dark:bg-destructive/60",
|
|
16
16
|
outline:
|
|
17
|
-
"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
|
|
17
|
+
"copa:border copa:bg-background copa:shadow-xs copa:hover:bg-accent copa:hover:text-accent-foreground copa:dark:bg-input/30 copa:dark:border-input copa:dark:hover:bg-input/50",
|
|
18
18
|
secondary:
|
|
19
|
-
"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
|
|
19
|
+
"copa:bg-secondary copa:text-secondary-foreground copa:shadow-xs copa:hover:bg-secondary/80",
|
|
20
20
|
ghost:
|
|
21
|
-
"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
22
|
-
link: "text-primary underline-offset-4 hover:underline",
|
|
21
|
+
"copa:hover:bg-accent copa:hover:text-accent-foreground copa:dark:hover:bg-accent/50",
|
|
22
|
+
link: "copa:text-primary copa:underline-offset-4 copa:hover:underline",
|
|
23
23
|
},
|
|
24
24
|
size: {
|
|
25
|
-
default: "h-9 px-4 py-2 has-[>svg]:px-3",
|
|
26
|
-
sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
|
|
27
|
-
lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
|
|
28
|
-
icon: "size-9",
|
|
25
|
+
default: "copa:h-9 copa:px-4 copa:py-2 copa:has-[>svg]:px-3",
|
|
26
|
+
sm: "copa:h-8 copa:rounded-md copa:gap-1.5 copa:px-3 copa:has-[>svg]:px-2.5",
|
|
27
|
+
lg: "copa:h-10 copa:rounded-md copa:px-6 copa:has-[>svg]:px-4",
|
|
28
|
+
icon: "copa:size-9",
|
|
29
29
|
},
|
|
30
30
|
},
|
|
31
31
|
defaultVariants: {
|
|
32
32
|
variant: "default",
|
|
33
33
|
size: "default",
|
|
34
34
|
},
|
|
35
|
-
}
|
|
36
|
-
)
|
|
35
|
+
},
|
|
36
|
+
);
|
|
37
37
|
|
|
38
38
|
const Button = React.forwardRef<
|
|
39
39
|
HTMLButtonElement,
|
|
40
40
|
React.ComponentProps<"button"> &
|
|
41
41
|
VariantProps<typeof buttonVariants> & {
|
|
42
|
-
asChild?: boolean
|
|
42
|
+
asChild?: boolean;
|
|
43
43
|
}
|
|
44
44
|
>(({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
45
|
-
const Comp = asChild ? Slot : "button"
|
|
45
|
+
const Comp = asChild ? Slot : "button";
|
|
46
46
|
|
|
47
47
|
return (
|
|
48
48
|
<Comp
|
|
@@ -51,8 +51,8 @@ const Button = React.forwardRef<
|
|
|
51
51
|
ref={ref}
|
|
52
52
|
{...props}
|
|
53
53
|
/>
|
|
54
|
-
)
|
|
55
|
-
})
|
|
56
|
-
Button.displayName = "Button"
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
Button.displayName = "Button";
|
|
57
57
|
|
|
58
|
-
export { Button, buttonVariants }
|
|
58
|
+
export { Button, buttonVariants };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import * as React from "react"
|
|
1
|
+
import * as React from "react";
|
|
2
2
|
|
|
3
|
-
import { cn } from "~/
|
|
3
|
+
import { cn } from "~/utils/utils";
|
|
4
4
|
|
|
5
5
|
function Card({ className, ...props }: React.ComponentProps<"div">) {
|
|
6
6
|
return (
|
|
7
7
|
<div
|
|
8
8
|
data-slot="card"
|
|
9
9
|
className={cn(
|
|
10
|
-
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
|
11
|
-
className
|
|
10
|
+
"copa:bg-card copa:text-card-foreground copa:flex copa:flex-col copa:gap-6 copa:rounded-xl copa:border copa:py-6 copa:shadow-sm",
|
|
11
|
+
className,
|
|
12
12
|
)}
|
|
13
13
|
{...props}
|
|
14
14
|
/>
|
|
15
|
-
)
|
|
15
|
+
);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -20,32 +20,32 @@ function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
20
20
|
<div
|
|
21
21
|
data-slot="card-header"
|
|
22
22
|
className={cn(
|
|
23
|
-
"
|
|
24
|
-
className
|
|
23
|
+
"copa:@container/card-header copa:grid copa:auto-rows-min copa:grid-rows-[auto_auto] copa:items-start copa:gap-1.5 copa:px-6 copa:has-data-[slot=card-action]:grid-cols-[1fr_auto] copa:[.border-b]:pb-6",
|
|
24
|
+
className,
|
|
25
25
|
)}
|
|
26
26
|
{...props}
|
|
27
27
|
/>
|
|
28
|
-
)
|
|
28
|
+
);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
32
32
|
return (
|
|
33
33
|
<div
|
|
34
34
|
data-slot="card-title"
|
|
35
|
-
className={cn("leading-none font-semibold", className)}
|
|
35
|
+
className={cn("copa:leading-none copa:font-semibold", className)}
|
|
36
36
|
{...props}
|
|
37
37
|
/>
|
|
38
|
-
)
|
|
38
|
+
);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
|
|
42
42
|
return (
|
|
43
43
|
<div
|
|
44
44
|
data-slot="card-description"
|
|
45
|
-
className={cn("text-muted-foreground text-sm", className)}
|
|
45
|
+
className={cn("copa:text-muted-foreground copa:text-sm", className)}
|
|
46
46
|
{...props}
|
|
47
47
|
/>
|
|
48
|
-
)
|
|
48
|
+
);
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -53,32 +53,32 @@ function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
53
53
|
<div
|
|
54
54
|
data-slot="card-action"
|
|
55
55
|
className={cn(
|
|
56
|
-
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
|
57
|
-
className
|
|
56
|
+
"copa:col-start-2 copa:row-span-2 copa:row-start-1 copa:self-start copa:justify-self-end",
|
|
57
|
+
className,
|
|
58
58
|
)}
|
|
59
59
|
{...props}
|
|
60
60
|
/>
|
|
61
|
-
)
|
|
61
|
+
);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
function CardContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
65
65
|
return (
|
|
66
66
|
<div
|
|
67
67
|
data-slot="card-content"
|
|
68
|
-
className={cn("px-6", className)}
|
|
68
|
+
className={cn("copa:px-6", className)}
|
|
69
69
|
{...props}
|
|
70
70
|
/>
|
|
71
|
-
)
|
|
71
|
+
);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
75
75
|
return (
|
|
76
76
|
<div
|
|
77
77
|
data-slot="card-footer"
|
|
78
|
-
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
|
78
|
+
className={cn("copa:flex copa:items-center copa:px-6 copa:[.border-t]:pt-6", className)}
|
|
79
79
|
{...props}
|
|
80
80
|
/>
|
|
81
|
-
)
|
|
81
|
+
);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
export {
|
|
@@ -89,4 +89,4 @@ export {
|
|
|
89
89
|
CardAction,
|
|
90
90
|
CardDescription,
|
|
91
91
|
CardContent,
|
|
92
|
-
}
|
|
92
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu"
|
|
5
|
-
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react"
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
5
|
+
import { CheckIcon, ChevronRightIcon, CircleIcon } from "lucide-react";
|
|
6
6
|
|
|
7
|
-
import { cn } from "~/
|
|
7
|
+
import { cn } from "~/utils/utils";
|
|
8
8
|
|
|
9
9
|
function DropdownMenu({
|
|
10
10
|
...props
|
|
11
11
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {
|
|
12
|
-
return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props}
|
|
12
|
+
return <DropdownMenuPrimitive.Root data-slot="dropdown-menu" {...props} />;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
function DropdownMenuPortal({
|
|
@@ -17,7 +17,7 @@ function DropdownMenuPortal({
|
|
|
17
17
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {
|
|
18
18
|
return (
|
|
19
19
|
<DropdownMenuPrimitive.Portal data-slot="dropdown-menu-portal" {...props} />
|
|
20
|
-
)
|
|
20
|
+
);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const DropdownMenuTrigger = React.forwardRef<
|
|
@@ -29,27 +29,32 @@ const DropdownMenuTrigger = React.forwardRef<
|
|
|
29
29
|
data-slot="dropdown-menu-trigger"
|
|
30
30
|
{...props}
|
|
31
31
|
/>
|
|
32
|
-
))
|
|
33
|
-
DropdownMenuTrigger.displayName = "DropdownMenuTrigger"
|
|
32
|
+
));
|
|
33
|
+
DropdownMenuTrigger.displayName = "DropdownMenuTrigger";
|
|
34
34
|
|
|
35
35
|
function DropdownMenuContent({
|
|
36
36
|
className,
|
|
37
37
|
sideOffset = 4,
|
|
38
38
|
...props
|
|
39
39
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {
|
|
40
|
+
const container =
|
|
41
|
+
typeof document !== "undefined"
|
|
42
|
+
? document.querySelector<HTMLElement>(".mfe-root") ?? undefined
|
|
43
|
+
: undefined;
|
|
44
|
+
|
|
40
45
|
return (
|
|
41
|
-
<DropdownMenuPrimitive.Portal>
|
|
46
|
+
<DropdownMenuPrimitive.Portal container={container}>
|
|
42
47
|
<DropdownMenuPrimitive.Content
|
|
43
48
|
data-slot="dropdown-menu-content"
|
|
44
49
|
sideOffset={sideOffset}
|
|
45
50
|
className={cn(
|
|
46
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",
|
|
47
|
-
className
|
|
51
|
+
"copa:bg-popover copa:text-popover-foreground copa:data-[state=open]:animate-in copa:data-[state=closed]:animate-out copa:data-[state=closed]:fade-out-0 copa:data-[state=open]:fade-in-0 copa:data-[state=closed]:zoom-out-95 copa:data-[state=open]:zoom-in-95 copa:data-[side=bottom]:slide-in-from-top-2 copa:data-[side=left]:slide-in-from-right-2 copa:data-[side=right]:slide-in-from-left-2 copa:data-[side=top]:slide-in-from-bottom-2 copa:z-50 copa:max-h-(--radix-dropdown-menu-content-available-height) copa:min-w-[8rem] copa:origin-(--radix-dropdown-menu-content-transform-origin) copa:overflow-x-hidden copa:overflow-y-auto copa:rounded-md copa:border copa:p-1 copa:shadow-md",
|
|
52
|
+
className,
|
|
48
53
|
)}
|
|
49
54
|
{...props}
|
|
50
55
|
/>
|
|
51
56
|
</DropdownMenuPrimitive.Portal>
|
|
52
|
-
)
|
|
57
|
+
);
|
|
53
58
|
}
|
|
54
59
|
|
|
55
60
|
function DropdownMenuGroup({
|
|
@@ -57,7 +62,7 @@ function DropdownMenuGroup({
|
|
|
57
62
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {
|
|
58
63
|
return (
|
|
59
64
|
<DropdownMenuPrimitive.Group data-slot="dropdown-menu-group" {...props} />
|
|
60
|
-
)
|
|
65
|
+
);
|
|
61
66
|
}
|
|
62
67
|
|
|
63
68
|
function DropdownMenuItem({
|
|
@@ -66,8 +71,8 @@ function DropdownMenuItem({
|
|
|
66
71
|
variant = "default",
|
|
67
72
|
...props
|
|
68
73
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {
|
|
69
|
-
inset?: boolean
|
|
70
|
-
variant?: "default" | "destructive"
|
|
74
|
+
inset?: boolean;
|
|
75
|
+
variant?: "default" | "destructive";
|
|
71
76
|
}) {
|
|
72
77
|
return (
|
|
73
78
|
<DropdownMenuPrimitive.Item
|
|
@@ -75,12 +80,12 @@ function DropdownMenuItem({
|
|
|
75
80
|
data-inset={inset}
|
|
76
81
|
data-variant={variant}
|
|
77
82
|
className={cn(
|
|
78
|
-
"focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
79
|
-
className
|
|
83
|
+
"copa:focus:bg-accent copa:focus:text-accent-foreground copa:data-[variant=destructive]:text-destructive copa:data-[variant=destructive]:focus:bg-destructive/10 copa:dark:data-[variant=destructive]:focus:bg-destructive/20 copa:data-[variant=destructive]:focus:text-destructive copa:data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'copa:])]:text-muted-foreground copa:relative copa:flex copa:cursor-default copa:items-center copa:gap-2 copa:rounded-sm copa:px-2 copa:py-1.5 copa:text-sm copa:outline-hidden copa:select-none copa:data-[disabled]:pointer-events-none copa:data-[disabled]:opacity-50 copa:data-[inset]:pl-8 copa:[&_svg]:pointer-events-none copa:[&_svg]:shrink-0 [&_svg:not([class*='size-'copa:])]:size-4",
|
|
84
|
+
className,
|
|
80
85
|
)}
|
|
81
86
|
{...props}
|
|
82
87
|
/>
|
|
83
|
-
)
|
|
88
|
+
);
|
|
84
89
|
}
|
|
85
90
|
|
|
86
91
|
function DropdownMenuCheckboxItem({
|
|
@@ -93,20 +98,20 @@ function DropdownMenuCheckboxItem({
|
|
|
93
98
|
<DropdownMenuPrimitive.CheckboxItem
|
|
94
99
|
data-slot="dropdown-menu-checkbox-item"
|
|
95
100
|
className={cn(
|
|
96
|
-
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
97
|
-
className
|
|
101
|
+
"copa:focus:bg-accent copa:focus:text-accent-foreground copa:relative copa:flex copa:cursor-default copa:items-center copa:gap-2 copa:rounded-sm copa:py-1.5 copa:pr-2 copa:pl-8 copa:text-sm copa:outline-hidden copa:select-none copa:data-[disabled]:pointer-events-none copa:data-[disabled]:opacity-50 copa:[&_svg]:pointer-events-none copa:[&_svg]:shrink-0 [&_svg:not([class*='size-'copa:])]:size-4",
|
|
102
|
+
className,
|
|
98
103
|
)}
|
|
99
104
|
checked={checked}
|
|
100
105
|
{...props}
|
|
101
106
|
>
|
|
102
|
-
<span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
|
|
107
|
+
<span className="copa:pointer-events-none copa:absolute copa:left-2 copa:flex copa:size-3.5 copa:items-center copa:justify-center">
|
|
103
108
|
<DropdownMenuPrimitive.ItemIndicator>
|
|
104
|
-
<CheckIcon className="size-4" />
|
|
109
|
+
<CheckIcon className="copa:size-4" />
|
|
105
110
|
</DropdownMenuPrimitive.ItemIndicator>
|
|
106
111
|
</span>
|
|
107
112
|
{children}
|
|
108
113
|
</DropdownMenuPrimitive.CheckboxItem>
|
|
109
|
-
)
|
|
114
|
+
);
|
|
110
115
|
}
|
|
111
116
|
|
|
112
117
|
function DropdownMenuRadioGroup({
|
|
@@ -117,7 +122,7 @@ function DropdownMenuRadioGroup({
|
|
|
117
122
|
data-slot="dropdown-menu-radio-group"
|
|
118
123
|
{...props}
|
|
119
124
|
/>
|
|
120
|
-
)
|
|
125
|
+
);
|
|
121
126
|
}
|
|
122
127
|
|
|
123
128
|
function DropdownMenuRadioItem({
|
|
@@ -129,19 +134,19 @@ function DropdownMenuRadioItem({
|
|
|
129
134
|
<DropdownMenuPrimitive.RadioItem
|
|
130
135
|
data-slot="dropdown-menu-radio-item"
|
|
131
136
|
className={cn(
|
|
132
|
-
"focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
133
|
-
className
|
|
137
|
+
"copa:focus:bg-accent copa:focus:text-accent-foreground copa:relative copa:flex copa:cursor-default copa:items-center copa:gap-2 copa:rounded-sm copa:py-1.5 copa:pr-2 copa:pl-8 copa:text-sm copa:outline-hidden copa:select-none copa:data-[disabled]:pointer-events-none copa:data-[disabled]:opacity-50 copa:[&_svg]:pointer-events-none copa:[&_svg]:shrink-0 [&_svg:not([class*='size-'copa:])]:size-4",
|
|
138
|
+
className,
|
|
134
139
|
)}
|
|
135
140
|
{...props}
|
|
136
141
|
>
|
|
137
|
-
<span className="pointer-events-none absolute left-2 flex size-3.5 items-center justify-center">
|
|
142
|
+
<span className="copa:pointer-events-none copa:absolute copa:left-2 copa:flex copa:size-3.5 copa:items-center copa:justify-center">
|
|
138
143
|
<DropdownMenuPrimitive.ItemIndicator>
|
|
139
|
-
<CircleIcon className="size-2 fill-current" />
|
|
144
|
+
<CircleIcon className="copa:size-2 copa:fill-current" />
|
|
140
145
|
</DropdownMenuPrimitive.ItemIndicator>
|
|
141
146
|
</span>
|
|
142
147
|
{children}
|
|
143
148
|
</DropdownMenuPrimitive.RadioItem>
|
|
144
|
-
)
|
|
149
|
+
);
|
|
145
150
|
}
|
|
146
151
|
|
|
147
152
|
function DropdownMenuLabel({
|
|
@@ -149,19 +154,19 @@ function DropdownMenuLabel({
|
|
|
149
154
|
inset,
|
|
150
155
|
...props
|
|
151
156
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {
|
|
152
|
-
inset?: boolean
|
|
157
|
+
inset?: boolean;
|
|
153
158
|
}) {
|
|
154
159
|
return (
|
|
155
160
|
<DropdownMenuPrimitive.Label
|
|
156
161
|
data-slot="dropdown-menu-label"
|
|
157
162
|
data-inset={inset}
|
|
158
163
|
className={cn(
|
|
159
|
-
"px-2 py-1.5 text-sm font-medium data-[inset]:pl-8",
|
|
160
|
-
className
|
|
164
|
+
"copa:px-2 copa:py-1.5 copa:text-sm copa:font-medium copa:data-[inset]:pl-8",
|
|
165
|
+
className,
|
|
161
166
|
)}
|
|
162
167
|
{...props}
|
|
163
168
|
/>
|
|
164
|
-
)
|
|
169
|
+
);
|
|
165
170
|
}
|
|
166
171
|
|
|
167
172
|
function DropdownMenuSeparator({
|
|
@@ -171,10 +176,10 @@ function DropdownMenuSeparator({
|
|
|
171
176
|
return (
|
|
172
177
|
<DropdownMenuPrimitive.Separator
|
|
173
178
|
data-slot="dropdown-menu-separator"
|
|
174
|
-
className={cn("bg-border
|
|
179
|
+
className={cn("copa:bg-border copa:-mx-1 copa:my-1 copa:h-px", className)}
|
|
175
180
|
{...props}
|
|
176
181
|
/>
|
|
177
|
-
)
|
|
182
|
+
);
|
|
178
183
|
}
|
|
179
184
|
|
|
180
185
|
function DropdownMenuShortcut({
|
|
@@ -185,18 +190,18 @@ function DropdownMenuShortcut({
|
|
|
185
190
|
<span
|
|
186
191
|
data-slot="dropdown-menu-shortcut"
|
|
187
192
|
className={cn(
|
|
188
|
-
"text-muted-foreground ml-auto text-xs tracking-widest",
|
|
189
|
-
className
|
|
193
|
+
"copa:text-muted-foreground copa:ml-auto copa:text-xs copa:tracking-widest",
|
|
194
|
+
className,
|
|
190
195
|
)}
|
|
191
196
|
{...props}
|
|
192
197
|
/>
|
|
193
|
-
)
|
|
198
|
+
);
|
|
194
199
|
}
|
|
195
200
|
|
|
196
201
|
function DropdownMenuSub({
|
|
197
202
|
...props
|
|
198
203
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {
|
|
199
|
-
return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props}
|
|
204
|
+
return <DropdownMenuPrimitive.Sub data-slot="dropdown-menu-sub" {...props} />;
|
|
200
205
|
}
|
|
201
206
|
|
|
202
207
|
function DropdownMenuSubTrigger({
|
|
@@ -205,22 +210,22 @@ function DropdownMenuSubTrigger({
|
|
|
205
210
|
children,
|
|
206
211
|
...props
|
|
207
212
|
}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {
|
|
208
|
-
inset?: boolean
|
|
213
|
+
inset?: boolean;
|
|
209
214
|
}) {
|
|
210
215
|
return (
|
|
211
216
|
<DropdownMenuPrimitive.SubTrigger
|
|
212
217
|
data-slot="dropdown-menu-sub-trigger"
|
|
213
218
|
data-inset={inset}
|
|
214
219
|
className={cn(
|
|
215
|
-
"focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8",
|
|
216
|
-
className
|
|
220
|
+
"copa:focus:bg-accent copa:focus:text-accent-foreground copa:data-[state=open]:bg-accent copa:data-[state=open]:text-accent-foreground copa:flex copa:cursor-default copa:items-center copa:rounded-sm copa:px-2 copa:py-1.5 copa:text-sm copa:outline-hidden copa:select-none copa:data-[inset]:pl-8",
|
|
221
|
+
className,
|
|
217
222
|
)}
|
|
218
223
|
{...props}
|
|
219
224
|
>
|
|
220
225
|
{children}
|
|
221
|
-
<ChevronRightIcon className="ml-auto size-4" />
|
|
226
|
+
<ChevronRightIcon className="copa:ml-auto copa:size-4" />
|
|
222
227
|
</DropdownMenuPrimitive.SubTrigger>
|
|
223
|
-
)
|
|
228
|
+
);
|
|
224
229
|
}
|
|
225
230
|
|
|
226
231
|
function DropdownMenuSubContent({
|
|
@@ -231,12 +236,12 @@ function DropdownMenuSubContent({
|
|
|
231
236
|
<DropdownMenuPrimitive.SubContent
|
|
232
237
|
data-slot="dropdown-menu-sub-content"
|
|
233
238
|
className={cn(
|
|
234
|
-
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-hidden rounded-md border p-1 shadow-lg",
|
|
235
|
-
className
|
|
239
|
+
"copa:bg-popover copa:text-popover-foreground copa:data-[state=open]:animate-in copa:data-[state=closed]:animate-out copa:data-[state=closed]:fade-out-0 copa:data-[state=open]:fade-in-0 copa:data-[state=closed]:zoom-out-95 copa:data-[state=open]:zoom-in-95 copa:data-[side=bottom]:slide-in-from-top-2 copa:data-[side=left]:slide-in-from-right-2 copa:data-[side=right]:slide-in-from-left-2 copa:data-[side=top]:slide-in-from-bottom-2 copa:z-50 copa:min-w-[8rem] copa:origin-(--radix-dropdown-menu-content-transform-origin) copa:overflow-hidden copa:rounded-md copa:border copa:p-1 copa:shadow-lg",
|
|
240
|
+
className,
|
|
236
241
|
)}
|
|
237
242
|
{...props}
|
|
238
243
|
/>
|
|
239
|
-
)
|
|
244
|
+
);
|
|
240
245
|
}
|
|
241
246
|
|
|
242
247
|
export {
|
|
@@ -255,4 +260,4 @@ export {
|
|
|
255
260
|
DropdownMenuSub,
|
|
256
261
|
DropdownMenuSubTrigger,
|
|
257
262
|
DropdownMenuSubContent,
|
|
258
|
-
}
|
|
263
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import * as React from "react"
|
|
1
|
+
import * as React from "react";
|
|
2
2
|
|
|
3
|
-
import { cn } from "~/
|
|
3
|
+
import { cn } from "~/utils/utils";
|
|
4
4
|
|
|
5
5
|
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
|
6
6
|
return (
|
|
@@ -8,14 +8,14 @@ function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
|
|
8
8
|
type={type}
|
|
9
9
|
data-slot="input"
|
|
10
10
|
className={cn(
|
|
11
|
-
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
12
|
-
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
|
13
|
-
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
|
14
|
-
className
|
|
11
|
+
"copa:file:text-foreground copa:placeholder:text-muted-foreground copa:selection:bg-primary copa:selection:text-primary-foreground copa:dark:bg-input/30 copa:border-input copa:flex copa:h-9 copa:w-full copa:min-w-0 copa:rounded-md copa:border copa:bg-transparent copa:px-3 copa:py-1 copa:text-base copa:shadow-xs copa:transition-[color,box-shadow] copa:outline-none copa:file:inline-flex copa:file:h-7 copa:file:border-0 copa:file:bg-transparent copa:file:text-sm copa:file:font-medium copa:disabled:pointer-events-none copa:disabled:cursor-not-allowed copa:disabled:opacity-50 copa:md:text-sm",
|
|
12
|
+
"copa:focus-visible:border-ring copa:focus-visible:ring-ring/50 copa:focus-visible:ring-[3px]",
|
|
13
|
+
"copa:aria-invalid:ring-destructive/20 copa:dark:aria-invalid:ring-destructive/40 copa:aria-invalid:border-destructive",
|
|
14
|
+
className,
|
|
15
15
|
)}
|
|
16
16
|
{...props}
|
|
17
17
|
/>
|
|
18
|
-
)
|
|
18
|
+
);
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
export { Input }
|
|
21
|
+
export { Input };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import * as LabelPrimitive from "@radix-ui/react-label"
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
5
5
|
|
|
6
|
-
import { cn } from "~/
|
|
6
|
+
import { cn } from "~/utils/utils";
|
|
7
7
|
|
|
8
8
|
function Label({
|
|
9
9
|
className,
|
|
@@ -13,12 +13,12 @@ function Label({
|
|
|
13
13
|
<LabelPrimitive.Root
|
|
14
14
|
data-slot="label"
|
|
15
15
|
className={cn(
|
|
16
|
-
"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",
|
|
17
|
-
className
|
|
16
|
+
"copa:flex copa:items-center copa:gap-2 copa:text-sm copa:leading-none copa:font-medium copa:select-none copa:group-data-[disabled=true]:pointer-events-none copa:group-data-[disabled=true]:opacity-50 copa:peer-disabled:cursor-not-allowed copa:peer-disabled:opacity-50",
|
|
17
|
+
className,
|
|
18
18
|
)}
|
|
19
19
|
{...props}
|
|
20
20
|
/>
|
|
21
|
-
)
|
|
21
|
+
);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export { Label }
|
|
24
|
+
export { Label };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import * as SeparatorPrimitive from "@radix-ui/react-separator"
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
3
3
|
|
|
4
|
-
import { cn } from "~/
|
|
4
|
+
import { cn } from "~/utils/utils";
|
|
5
5
|
|
|
6
6
|
function Separator({
|
|
7
7
|
className,
|
|
@@ -15,12 +15,12 @@ function Separator({
|
|
|
15
15
|
decorative={decorative}
|
|
16
16
|
orientation={orientation}
|
|
17
17
|
className={cn(
|
|
18
|
-
"bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
|
|
19
|
-
className
|
|
18
|
+
"copa:bg-border copa:shrink-0 copa:data-[orientation=horizontal]:h-px copa:data-[orientation=horizontal]:w-full copa:data-[orientation=vertical]:h-full copa:data-[orientation=vertical]:w-px",
|
|
19
|
+
className,
|
|
20
20
|
)}
|
|
21
21
|
{...props}
|
|
22
22
|
/>
|
|
23
|
-
)
|
|
23
|
+
);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export { Separator }
|
|
26
|
+
export { Separator };
|