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.
Files changed (102) hide show
  1. package/README.md +7 -5
  2. package/package.json +1 -1
  3. package/templates/latest/.claude/settings.local.json +56 -0
  4. package/templates/latest/.env.example +8 -0
  5. package/templates/latest/Agent.md +598 -775
  6. package/templates/latest/CLAUDE.md +759 -0
  7. package/templates/latest/README.md +11 -2
  8. package/templates/latest/app/app.css +292 -85
  9. package/templates/latest/app/app.tsx +48 -39
  10. package/templates/latest/app/components/bluecopa-logo.tsx +20 -0
  11. package/templates/latest/app/components/charts/bar-chart.tsx +132 -0
  12. package/templates/latest/app/components/charts/base-chart.tsx +149 -0
  13. package/templates/latest/app/components/charts/chart-provider.tsx +71 -0
  14. package/templates/latest/app/components/charts/chart-theme.ts +262 -0
  15. package/templates/latest/app/components/charts/chart-utils.ts +142 -0
  16. package/templates/latest/app/components/charts/donut-chart.tsx +110 -0
  17. package/templates/latest/app/components/charts/index.ts +5 -0
  18. package/templates/latest/app/components/layouts/app-layout.tsx +22 -0
  19. package/templates/latest/app/components/layouts/app-sidebar.tsx +88 -0
  20. package/templates/latest/app/components/layouts/nav-main.tsx +50 -0
  21. package/templates/latest/app/components/layouts/nav-user.tsx +38 -0
  22. package/templates/latest/app/components/layouts/site-header.tsx +93 -0
  23. package/templates/latest/app/components/loading-screen.tsx +41 -0
  24. package/templates/latest/app/components/ui/ag-grid-table.tsx +79 -0
  25. package/templates/latest/app/components/ui/button.tsx +23 -23
  26. package/templates/latest/app/components/ui/card.tsx +20 -20
  27. package/templates/latest/app/components/ui/dropdown-menu.tsx +54 -49
  28. package/templates/latest/app/components/ui/input.tsx +8 -8
  29. package/templates/latest/app/components/ui/label.tsx +8 -8
  30. package/templates/latest/app/components/ui/separator.tsx +7 -7
  31. package/templates/latest/app/components/ui/sheet.tsx +43 -32
  32. package/templates/latest/app/components/ui/sidebar.tsx +240 -235
  33. package/templates/latest/app/components/ui/skeleton.tsx +4 -4
  34. package/templates/latest/app/components/ui/sonner.tsx +6 -9
  35. package/templates/latest/app/components/ui/tabs.tsx +15 -15
  36. package/templates/latest/app/components/ui/tooltip.tsx +18 -12
  37. package/templates/latest/app/constants/index.ts +31 -0
  38. package/templates/latest/app/contexts/app-context.tsx +201 -0
  39. package/templates/latest/app/hooks/use-mobile.ts +13 -12
  40. package/templates/latest/app/main.tsx +1 -1
  41. package/templates/latest/app/pages/dashboard.tsx +246 -0
  42. package/templates/latest/app/pages/payments.tsx +182 -0
  43. package/templates/latest/app/pages/settings.tsx +128 -0
  44. package/templates/latest/app/routes/index.tsx +19 -0
  45. package/templates/latest/app/single-spa.tsx +69 -186
  46. package/templates/latest/app/types/index.ts +37 -0
  47. package/templates/latest/app/utils/ag-grid-datasource.ts +63 -0
  48. package/templates/latest/app/utils/ag-grid-license.ts +12 -0
  49. package/templates/latest/app/utils/ag-grid-theme.ts +9 -0
  50. package/templates/latest/app/utils/component-style.ts +7 -0
  51. package/templates/latest/app/utils/style-drivers.ts +24 -0
  52. package/templates/latest/app/utils/utils.ts +10 -0
  53. package/templates/latest/components.json +3 -3
  54. package/templates/latest/index.html +30 -2
  55. package/templates/latest/package-lock.json +15 -401
  56. package/templates/latest/package.json +8 -18
  57. package/templates/latest/preview/index.html +125 -285
  58. package/templates/latest/public/favicon.svg +1 -0
  59. package/templates/latest/vite.config.ts +2 -8
  60. package/templates/latest/app/components/app-sidebar.tsx +0 -182
  61. package/templates/latest/app/components/chart-area-interactive.tsx +0 -290
  62. package/templates/latest/app/components/data-table.tsx +0 -807
  63. package/templates/latest/app/components/nav-documents.tsx +0 -92
  64. package/templates/latest/app/components/nav-main.tsx +0 -40
  65. package/templates/latest/app/components/nav-secondary.tsx +0 -42
  66. package/templates/latest/app/components/nav-user.tsx +0 -111
  67. package/templates/latest/app/components/section-cards.tsx +0 -102
  68. package/templates/latest/app/components/site-header.tsx +0 -28
  69. package/templates/latest/app/components/ui/avatar.tsx +0 -53
  70. package/templates/latest/app/components/ui/badge.tsx +0 -46
  71. package/templates/latest/app/components/ui/breadcrumb.tsx +0 -109
  72. package/templates/latest/app/components/ui/chart.tsx +0 -352
  73. package/templates/latest/app/components/ui/checkbox.tsx +0 -30
  74. package/templates/latest/app/components/ui/drawer.tsx +0 -139
  75. package/templates/latest/app/components/ui/select.tsx +0 -183
  76. package/templates/latest/app/components/ui/table.tsx +0 -117
  77. package/templates/latest/app/components/ui/toggle-group.tsx +0 -73
  78. package/templates/latest/app/components/ui/toggle.tsx +0 -47
  79. package/templates/latest/app/data/data.json +0 -614
  80. package/templates/latest/app/data/mock-payments.json +0 -122
  81. package/templates/latest/app/data/mock-transactions.json +0 -128
  82. package/templates/latest/app/hooks/use-bluecopa-user.ts +0 -37
  83. package/templates/latest/app/lib/utils.ts +0 -6
  84. package/templates/latest/app/routes/apitest.tsx +0 -2118
  85. package/templates/latest/app/routes/comments.tsx +0 -588
  86. package/templates/latest/app/routes/dashboard.tsx +0 -36
  87. package/templates/latest/app/routes/payments.tsx +0 -342
  88. package/templates/latest/app/routes/statements.tsx +0 -493
  89. package/templates/latest/app/routes/websocket.tsx +0 -450
  90. package/templates/latest/app/routes.tsx +0 -22
  91. package/templates/latest/dist/assets/__federation_expose_App-D-lv9y21.js +0 -161
  92. package/templates/latest/dist/assets/__federation_fn_import-CzfA7kmP.js +0 -438
  93. package/templates/latest/dist/assets/__federation_shared_react-Bp6HVBS4.js +0 -16
  94. package/templates/latest/dist/assets/__federation_shared_react-dom-BCcRGiYp.js +0 -17
  95. package/templates/latest/dist/assets/client-Dms8K6Dw.js +0 -78879
  96. package/templates/latest/dist/assets/index-BrhXrqF7.js +0 -60
  97. package/templates/latest/dist/assets/index-BzNimew1.js +0 -69
  98. package/templates/latest/dist/assets/index-DMFtQdNS.js +0 -412
  99. package/templates/latest/dist/assets/remoteEntry.css +0 -3996
  100. package/templates/latest/dist/assets/remoteEntry.js +0 -88
  101. package/templates/latest/dist/favicon.ico +0 -0
  102. 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 "~/lib/utils"
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 "~/lib/utils"
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
- "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
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 "~/lib/utils"
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 -mx-1 my-1 h-px", className)}
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 "~/lib/utils"
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 "~/lib/utils"
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 "~/lib/utils"
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 };