create-croissant 0.1.39 → 0.1.41
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/dist/index.js +5 -5
- package/package.json +7 -10
- package/template/.oxlintignore +11 -0
- package/template/README.md +6 -6
- package/template/apps/desktop/README.md +1 -1
- package/template/apps/desktop/electron-builder.yml +6 -6
- package/template/apps/desktop/electron.vite.config.ts +8 -8
- package/template/apps/desktop/package.json +4 -13
- package/template/apps/desktop/src/main/index.ts +32 -32
- package/template/apps/desktop/src/preload/index.d.ts +3 -3
- package/template/apps/desktop/src/preload/index.ts +8 -8
- package/template/apps/desktop/src/renderer/src/App.tsx +5 -5
- package/template/apps/desktop/src/renderer/src/assets/base.css +4 -4
- package/template/apps/desktop/src/renderer/src/assets/main.css +3 -3
- package/template/apps/desktop/src/renderer/src/components/Versions.tsx +4 -4
- package/template/apps/desktop/src/renderer/src/main.tsx +7 -7
- package/template/apps/desktop/tsconfig.json +1 -4
- package/template/apps/desktop/tsconfig.node.json +1 -1
- package/template/apps/desktop/tsconfig.web.json +4 -11
- package/template/apps/mobile/app/(tabs)/_layout.tsx +11 -10
- package/template/apps/mobile/app/(tabs)/explore.tsx +29 -27
- package/template/apps/mobile/app/(tabs)/index.tsx +25 -24
- package/template/apps/mobile/app/_layout.tsx +8 -8
- package/template/apps/mobile/app/modal.tsx +6 -6
- package/template/apps/mobile/components/external-link.tsx +5 -5
- package/template/apps/mobile/components/haptic-tab.tsx +4 -4
- package/template/apps/mobile/components/hello-wave.tsx +5 -4
- package/template/apps/mobile/components/parallax-scroll-view.tsx +15 -13
- package/template/apps/mobile/components/themed-text.tsx +14 -14
- package/template/apps/mobile/components/themed-view.tsx +3 -3
- package/template/apps/mobile/components/ui/collapsible.tsx +14 -13
- package/template/apps/mobile/components/ui/icon-symbol.ios.tsx +4 -4
- package/template/apps/mobile/components/ui/icon-symbol.tsx +9 -9
- package/template/apps/mobile/constants/theme.ts +19 -19
- package/template/apps/mobile/hooks/use-color-scheme.ts +1 -1
- package/template/apps/mobile/hooks/use-color-scheme.web.ts +3 -3
- package/template/apps/mobile/hooks/use-theme-color.ts +4 -4
- package/template/apps/mobile/package.json +3 -6
- package/template/apps/mobile/scripts/reset-project.js +2 -2
- package/template/apps/mobile/tsconfig.json +2 -9
- package/template/apps/platform/drizzle.config.ts +5 -5
- package/template/apps/platform/package.json +2 -6
- package/template/apps/platform/src/components/app-sidebar.tsx +60 -69
- package/template/apps/platform/src/components/login-form.tsx +32 -39
- package/template/apps/platform/src/components/search-form.tsx +5 -13
- package/template/apps/platform/src/components/signup-form.tsx +39 -49
- package/template/apps/platform/src/components/version-switcher.tsx +11 -21
- package/template/apps/platform/src/lib/auth-utils.ts +12 -14
- package/template/apps/platform/src/lib/orpc.ts +17 -17
- package/template/apps/platform/src/routeTree.gen.ts +264 -267
- package/template/apps/platform/src/router.tsx +5 -5
- package/template/apps/platform/src/routes/__root.tsx +13 -15
- package/template/apps/platform/src/routes/_auth/account.tsx +61 -50
- package/template/apps/platform/src/routes/_auth/dashboard.tsx +17 -17
- package/template/apps/platform/src/routes/_auth/examples/client-orpc-auth.tsx +13 -13
- package/template/apps/platform/src/routes/_auth/examples/ssr-orpc-auth.tsx +17 -17
- package/template/apps/platform/src/routes/_auth.tsx +5 -5
- package/template/apps/platform/src/routes/_public/examples/client-orpc.tsx +108 -88
- package/template/apps/platform/src/routes/_public/examples/isr.tsx +14 -14
- package/template/apps/platform/src/routes/_public/examples/ssr-orpc.tsx +92 -75
- package/template/apps/platform/src/routes/_public/index.tsx +22 -19
- package/template/apps/platform/src/routes/_public/login.tsx +4 -4
- package/template/apps/platform/src/routes/_public/signup.tsx +6 -5
- package/template/apps/platform/src/routes/_public.tsx +5 -5
- package/template/apps/platform/src/routes/api/auth/$.ts +13 -13
- package/template/apps/platform/src/routes/api/rpc.$.ts +13 -13
- package/template/apps/platform/tsconfig.json +1 -1
- package/template/apps/platform/vite.config.ts +8 -8
- package/template/docker-compose.yml +1 -1
- package/template/package.json +24 -22
- package/template/packages/auth/package.json +8 -12
- package/template/packages/auth/src/lib/auth.ts +1 -1
- package/template/packages/auth/tsconfig.json +1 -1
- package/template/packages/db/package.json +6 -10
- package/template/packages/db/src/index.ts +4 -4
- package/template/packages/db/src/schema.ts +2 -2
- package/template/packages/db/tsconfig.json +1 -1
- package/template/packages/orpc/package.json +6 -10
- package/template/packages/orpc/src/lib/planets.ts +39 -43
- package/template/packages/orpc/src/lib/router.ts +15 -15
- package/template/packages/orpc/tsconfig.json +1 -1
- package/template/packages/ui/package.json +8 -12
- package/template/packages/ui/src/components/accordion.tsx +20 -22
- package/template/packages/ui/src/components/alert-dialog.tsx +31 -56
- package/template/packages/ui/src/components/alert.tsx +15 -23
- package/template/packages/ui/src/components/aspect-ratio.tsx +3 -3
- package/template/packages/ui/src/components/avatar.tsx +19 -35
- package/template/packages/ui/src/components/badge.tsx +13 -17
- package/template/packages/ui/src/components/breadcrumb.tsx +22 -44
- package/template/packages/ui/src/components/button-group.tsx +16 -25
- package/template/packages/ui/src/components/button.tsx +8 -9
- package/template/packages/ui/src/components/calendar.tsx +43 -82
- package/template/packages/ui/src/components/card.tsx +15 -26
- package/template/packages/ui/src/components/carousel.tsx +70 -78
- package/template/packages/ui/src/components/chart.tsx +84 -117
- package/template/packages/ui/src/components/checkbox.tsx +8 -9
- package/template/packages/ui/src/components/collapsible.tsx +5 -9
- package/template/packages/ui/src/components/combobox.tsx +44 -68
- package/template/packages/ui/src/components/command.tsx +32 -47
- package/template/packages/ui/src/components/context-menu.tsx +45 -71
- package/template/packages/ui/src/components/dialog.tsx +29 -51
- package/template/packages/ui/src/components/direction.tsx +1 -4
- package/template/packages/ui/src/components/drawer.tsx +24 -38
- package/template/packages/ui/src/components/dropdown-menu.tsx +45 -55
- package/template/packages/ui/src/components/empty.tsx +16 -27
- package/template/packages/ui/src/components/field.tsx +49 -63
- package/template/packages/ui/src/components/hover-card.tsx +9 -14
- package/template/packages/ui/src/components/input-group.tsx +40 -52
- package/template/packages/ui/src/components/input-otp.tsx +17 -18
- package/template/packages/ui/src/components/input.tsx +6 -6
- package/template/packages/ui/src/components/item.tsx +31 -44
- package/template/packages/ui/src/components/kbd.tsx +5 -5
- package/template/packages/ui/src/components/label.tsx +6 -6
- package/template/packages/ui/src/components/menubar.tsx +51 -64
- package/template/packages/ui/src/components/mode-toggle.tsx +9 -15
- package/template/packages/ui/src/components/native-select.tsx +18 -24
- package/template/packages/ui/src/components/navigation-menu.tsx +28 -35
- package/template/packages/ui/src/components/pagination.tsx +19 -31
- package/template/packages/ui/src/components/popover.tsx +13 -26
- package/template/packages/ui/src/components/progress.tsx +13 -30
- package/template/packages/ui/src/components/radio-group.tsx +7 -7
- package/template/packages/ui/src/components/resizable.tsx +12 -20
- package/template/packages/ui/src/components/scroll-area.tsx +8 -12
- package/template/packages/ui/src/components/select.tsx +31 -42
- package/template/packages/ui/src/components/separator.tsx +6 -10
- package/template/packages/ui/src/components/sheet.tsx +25 -38
- package/template/packages/ui/src/components/sidebar.tsx +137 -170
- package/template/packages/ui/src/components/skeleton.tsx +3 -3
- package/template/packages/ui/src/components/slider.tsx +5 -5
- package/template/packages/ui/src/components/sonner.tsx +20 -24
- package/template/packages/ui/src/components/spinner.tsx +10 -5
- package/template/packages/ui/src/components/switch.tsx +6 -6
- package/template/packages/ui/src/components/table.tsx +18 -45
- package/template/packages/ui/src/components/tabs.tsx +14 -22
- package/template/packages/ui/src/components/textarea.tsx +5 -5
- package/template/packages/ui/src/components/theme-provider.tsx +43 -48
- package/template/packages/ui/src/components/toggle-group.tsx +18 -20
- package/template/packages/ui/src/components/toggle.tsx +9 -10
- package/template/packages/ui/src/components/tooltip.tsx +10 -22
- package/template/packages/ui/src/hooks/use-mobile.ts +11 -11
- package/template/packages/ui/src/lib/utils.ts +4 -4
- package/template/packages/ui/src/styles/globals.css +106 -106
- package/template/packages/ui/tsconfig.json +1 -1
- package/template/turbo.json +15 -6
- package/template/.prettierignore +0 -10
- package/template/apps/desktop/.prettierignore +0 -6
- package/template/apps/desktop/eslint.config.ts +0 -11
- package/template/apps/desktop/prettier.config.ts +0 -3
- package/template/apps/mobile/eslint.config.js +0 -10
- package/template/apps/platform/eslint.config.ts +0 -11
- package/template/apps/platform/prettier.config.ts +0 -3
- package/template/packages/auth/eslint.config.ts +0 -3
- package/template/packages/auth/prettier.config.ts +0 -3
- package/template/packages/config-eslint/index.ts +0 -24
- package/template/packages/config-eslint/package.json +0 -11
- package/template/packages/config-prettier/index.ts +0 -14
- package/template/packages/config-prettier/package.json +0 -7
- package/template/packages/db/eslint.config.ts +0 -3
- package/template/packages/db/prettier.config.ts +0 -3
- package/template/packages/orpc/eslint.config.ts +0 -3
- package/template/packages/orpc/prettier.config.ts +0 -3
- package/template/packages/ui/eslint.config.ts +0 -3
- package/template/packages/ui/prettier.config.ts +0 -3
- package/template/prettier.config.ts +0 -15
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import {
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
5
|
|
|
6
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
7
|
-
import { Button } from "@workspace/ui/components/button"
|
|
8
|
-
import { Input } from "@workspace/ui/components/input"
|
|
9
|
-
import { Textarea } from "@workspace/ui/components/textarea"
|
|
10
|
-
import type {VariantProps} from "class-variance-authority";
|
|
6
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
7
|
+
import { Button } from "@workspace/ui/components/button";
|
|
8
|
+
import { Input } from "@workspace/ui/components/input";
|
|
9
|
+
import { Textarea } from "@workspace/ui/components/textarea";
|
|
10
|
+
import type { VariantProps } from "class-variance-authority";
|
|
11
11
|
|
|
12
12
|
function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
13
13
|
return (
|
|
@@ -16,11 +16,11 @@ function InputGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
16
16
|
role="group"
|
|
17
17
|
className={cn(
|
|
18
18
|
"group/input-group relative flex h-8 w-full min-w-0 items-center rounded-lg border border-input transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:border-ring has-[[data-slot=input-group-control]:focus-visible]:ring-3 has-[[data-slot=input-group-control]:focus-visible]:ring-ring/50 has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-input/30 dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5",
|
|
19
|
-
className
|
|
19
|
+
className,
|
|
20
20
|
)}
|
|
21
21
|
{...props}
|
|
22
22
|
/>
|
|
23
|
-
)
|
|
23
|
+
);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
const inputGroupAddonVariants = cva(
|
|
@@ -28,10 +28,8 @@ const inputGroupAddonVariants = cva(
|
|
|
28
28
|
{
|
|
29
29
|
variants: {
|
|
30
30
|
align: {
|
|
31
|
-
"inline-start":
|
|
32
|
-
|
|
33
|
-
"inline-end":
|
|
34
|
-
"order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
|
|
31
|
+
"inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
|
|
32
|
+
"inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
|
|
35
33
|
"block-start":
|
|
36
34
|
"order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
|
|
37
35
|
"block-end":
|
|
@@ -41,8 +39,8 @@ const inputGroupAddonVariants = cva(
|
|
|
41
39
|
defaultVariants: {
|
|
42
40
|
align: "inline-start",
|
|
43
41
|
},
|
|
44
|
-
}
|
|
45
|
-
)
|
|
42
|
+
},
|
|
43
|
+
);
|
|
46
44
|
|
|
47
45
|
function InputGroupAddon({
|
|
48
46
|
className,
|
|
@@ -57,32 +55,28 @@ function InputGroupAddon({
|
|
|
57
55
|
className={cn(inputGroupAddonVariants({ align }), className)}
|
|
58
56
|
onClick={(e) => {
|
|
59
57
|
if ((e.target as HTMLElement).closest("button")) {
|
|
60
|
-
return
|
|
58
|
+
return;
|
|
61
59
|
}
|
|
62
|
-
e.currentTarget.parentElement?.querySelector("input")?.focus()
|
|
60
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
63
61
|
}}
|
|
64
62
|
{...props}
|
|
65
63
|
/>
|
|
66
|
-
)
|
|
64
|
+
);
|
|
67
65
|
}
|
|
68
66
|
|
|
69
|
-
const inputGroupButtonVariants = cva(
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"icon-xs":
|
|
77
|
-
"size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
|
|
78
|
-
"icon-sm": "size-8 p-0 has-[>svg]:p-0",
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
defaultVariants: {
|
|
82
|
-
size: "xs",
|
|
67
|
+
const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
|
|
68
|
+
variants: {
|
|
69
|
+
size: {
|
|
70
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-3px)] px-1.5 [&>svg:not([class*='size-'])]:size-3.5",
|
|
71
|
+
sm: "",
|
|
72
|
+
"icon-xs": "size-6 rounded-[calc(var(--radius)-3px)] p-0 has-[>svg]:p-0",
|
|
73
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0",
|
|
83
74
|
},
|
|
84
|
-
}
|
|
85
|
-
|
|
75
|
+
},
|
|
76
|
+
defaultVariants: {
|
|
77
|
+
size: "xs",
|
|
78
|
+
},
|
|
79
|
+
});
|
|
86
80
|
|
|
87
81
|
function InputGroupButton({
|
|
88
82
|
className,
|
|
@@ -92,7 +86,7 @@ function InputGroupButton({
|
|
|
92
86
|
...props
|
|
93
87
|
}: Omit<React.ComponentProps<typeof Button>, "size" | "type"> &
|
|
94
88
|
VariantProps<typeof inputGroupButtonVariants> & {
|
|
95
|
-
type?: "button" | "submit" | "reset"
|
|
89
|
+
type?: "button" | "submit" | "reset";
|
|
96
90
|
}) {
|
|
97
91
|
return (
|
|
98
92
|
<Button
|
|
@@ -102,7 +96,7 @@ function InputGroupButton({
|
|
|
102
96
|
className={cn(inputGroupButtonVariants({ size }), className)}
|
|
103
97
|
{...props}
|
|
104
98
|
/>
|
|
105
|
-
)
|
|
99
|
+
);
|
|
106
100
|
}
|
|
107
101
|
|
|
108
102
|
function InputGroupText({ className, ...props }: React.ComponentProps<"span">) {
|
|
@@ -110,43 +104,37 @@ function InputGroupText({ className, ...props }: React.ComponentProps<"span">) {
|
|
|
110
104
|
<span
|
|
111
105
|
className={cn(
|
|
112
106
|
"flex items-center gap-2 text-sm text-muted-foreground [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4",
|
|
113
|
-
className
|
|
107
|
+
className,
|
|
114
108
|
)}
|
|
115
109
|
{...props}
|
|
116
110
|
/>
|
|
117
|
-
)
|
|
111
|
+
);
|
|
118
112
|
}
|
|
119
113
|
|
|
120
|
-
function InputGroupInput({
|
|
121
|
-
className,
|
|
122
|
-
...props
|
|
123
|
-
}: React.ComponentProps<"input">) {
|
|
114
|
+
function InputGroupInput({ className, ...props }: React.ComponentProps<"input">) {
|
|
124
115
|
return (
|
|
125
116
|
<Input
|
|
126
117
|
data-slot="input-group-control"
|
|
127
118
|
className={cn(
|
|
128
119
|
"flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
129
|
-
className
|
|
120
|
+
className,
|
|
130
121
|
)}
|
|
131
122
|
{...props}
|
|
132
123
|
/>
|
|
133
|
-
)
|
|
124
|
+
);
|
|
134
125
|
}
|
|
135
126
|
|
|
136
|
-
function InputGroupTextarea({
|
|
137
|
-
className,
|
|
138
|
-
...props
|
|
139
|
-
}: React.ComponentProps<"textarea">) {
|
|
127
|
+
function InputGroupTextarea({ className, ...props }: React.ComponentProps<"textarea">) {
|
|
140
128
|
return (
|
|
141
129
|
<Textarea
|
|
142
130
|
data-slot="input-group-control"
|
|
143
131
|
className={cn(
|
|
144
132
|
"flex-1 resize-none rounded-none border-0 bg-transparent py-2 shadow-none ring-0 focus-visible:ring-0 disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent",
|
|
145
|
-
className
|
|
133
|
+
className,
|
|
146
134
|
)}
|
|
147
135
|
{...props}
|
|
148
136
|
/>
|
|
149
|
-
)
|
|
137
|
+
);
|
|
150
138
|
}
|
|
151
139
|
|
|
152
140
|
export {
|
|
@@ -156,4 +144,4 @@ export {
|
|
|
156
144
|
InputGroupText,
|
|
157
145
|
InputGroupInput,
|
|
158
146
|
InputGroupTextarea,
|
|
159
|
-
}
|
|
147
|
+
};
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { OTPInput, OTPInputContext } from "input-otp"
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { OTPInput, OTPInputContext } from "input-otp";
|
|
3
3
|
|
|
4
|
-
import { MinusIcon } from "lucide-react"
|
|
5
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
4
|
+
import { MinusIcon } from "lucide-react";
|
|
5
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
6
6
|
|
|
7
7
|
function InputOTP({
|
|
8
8
|
className,
|
|
9
9
|
containerClassName,
|
|
10
10
|
...props
|
|
11
11
|
}: React.ComponentProps<typeof OTPInput> & {
|
|
12
|
-
containerClassName?: string
|
|
12
|
+
containerClassName?: string;
|
|
13
13
|
}) {
|
|
14
14
|
return (
|
|
15
15
|
<OTPInput
|
|
16
16
|
data-slot="input-otp"
|
|
17
17
|
containerClassName={cn(
|
|
18
18
|
"cn-input-otp flex items-center has-disabled:opacity-50",
|
|
19
|
-
containerClassName
|
|
19
|
+
containerClassName,
|
|
20
20
|
)}
|
|
21
21
|
spellCheck={false}
|
|
22
22
|
className={cn("disabled:cursor-not-allowed", className)}
|
|
23
23
|
{...props}
|
|
24
24
|
/>
|
|
25
|
-
)
|
|
25
|
+
);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -31,11 +31,11 @@ function InputOTPGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
31
31
|
data-slot="input-otp-group"
|
|
32
32
|
className={cn(
|
|
33
33
|
"flex items-center rounded-lg has-aria-invalid:border-destructive has-aria-invalid:ring-3 has-aria-invalid:ring-destructive/20 dark:has-aria-invalid:ring-destructive/40",
|
|
34
|
-
className
|
|
34
|
+
className,
|
|
35
35
|
)}
|
|
36
36
|
{...props}
|
|
37
37
|
/>
|
|
38
|
-
)
|
|
38
|
+
);
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
function InputOTPSlot({
|
|
@@ -43,10 +43,10 @@ function InputOTPSlot({
|
|
|
43
43
|
className,
|
|
44
44
|
...props
|
|
45
45
|
}: React.ComponentProps<"div"> & {
|
|
46
|
-
index: number
|
|
46
|
+
index: number;
|
|
47
47
|
}) {
|
|
48
|
-
const inputOTPContext = React.useContext(OTPInputContext)
|
|
49
|
-
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]
|
|
48
|
+
const inputOTPContext = React.useContext(OTPInputContext);
|
|
49
|
+
const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
|
|
50
50
|
|
|
51
51
|
return (
|
|
52
52
|
<div
|
|
@@ -54,7 +54,7 @@ function InputOTPSlot({
|
|
|
54
54
|
data-active={isActive}
|
|
55
55
|
className={cn(
|
|
56
56
|
"relative flex size-8 items-center justify-center border-y border-r border-input text-sm transition-all outline-none first:rounded-l-lg first:border-l last:rounded-r-lg aria-invalid:border-destructive data-[active=true]:z-10 data-[active=true]:border-ring data-[active=true]:ring-3 data-[active=true]:ring-ring/50 data-[active=true]:aria-invalid:border-destructive data-[active=true]:aria-invalid:ring-destructive/20 dark:bg-input/30 dark:data-[active=true]:aria-invalid:ring-destructive/40",
|
|
57
|
-
className
|
|
57
|
+
className,
|
|
58
58
|
)}
|
|
59
59
|
{...props}
|
|
60
60
|
>
|
|
@@ -65,7 +65,7 @@ function InputOTPSlot({
|
|
|
65
65
|
</div>
|
|
66
66
|
)}
|
|
67
67
|
</div>
|
|
68
|
-
)
|
|
68
|
+
);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) {
|
|
@@ -76,10 +76,9 @@ function InputOTPSeparator({ ...props }: React.ComponentProps<"div">) {
|
|
|
76
76
|
role="separator"
|
|
77
77
|
{...props}
|
|
78
78
|
>
|
|
79
|
-
<MinusIcon
|
|
80
|
-
/>
|
|
79
|
+
<MinusIcon />
|
|
81
80
|
</div>
|
|
82
|
-
)
|
|
81
|
+
);
|
|
83
82
|
}
|
|
84
83
|
|
|
85
|
-
export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }
|
|
84
|
+
export { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { Input as InputPrimitive } from "@base-ui/react/input"
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { Input as InputPrimitive } from "@base-ui/react/input";
|
|
3
3
|
|
|
4
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
4
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
5
5
|
|
|
6
6
|
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
|
7
7
|
return (
|
|
@@ -10,11 +10,11 @@ function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
|
|
10
10
|
data-slot="input"
|
|
11
11
|
className={cn(
|
|
12
12
|
"h-8 w-full min-w-0 rounded-lg border border-input bg-transparent px-2.5 py-1 text-base transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed disabled:bg-input/50 disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 md:text-sm dark:bg-input/30 dark:disabled:bg-input/80 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40",
|
|
13
|
-
className
|
|
13
|
+
className,
|
|
14
14
|
)}
|
|
15
15
|
{...props}
|
|
16
16
|
/>
|
|
17
|
-
)
|
|
17
|
+
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export { Input }
|
|
20
|
+
export { Input };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import * as React from "react"
|
|
2
|
-
import { mergeProps } from "@base-ui/react/merge-props"
|
|
3
|
-
import { useRender } from "@base-ui/react/use-render"
|
|
4
|
-
import {
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { mergeProps } from "@base-ui/react/merge-props";
|
|
3
|
+
import { useRender } from "@base-ui/react/use-render";
|
|
4
|
+
import { cva } from "class-variance-authority";
|
|
5
5
|
|
|
6
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
7
|
-
import { Separator } from "@workspace/ui/components/separator"
|
|
8
|
-
import type {VariantProps} from "class-variance-authority";
|
|
6
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
7
|
+
import { Separator } from "@workspace/ui/components/separator";
|
|
8
|
+
import type { VariantProps } from "class-variance-authority";
|
|
9
9
|
|
|
10
10
|
function ItemGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
11
11
|
return (
|
|
@@ -14,17 +14,14 @@ function ItemGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
14
14
|
data-slot="item-group"
|
|
15
15
|
className={cn(
|
|
16
16
|
"group/item-group flex w-full flex-col gap-4 has-data-[size=sm]:gap-2.5 has-data-[size=xs]:gap-2",
|
|
17
|
-
className
|
|
17
|
+
className,
|
|
18
18
|
)}
|
|
19
19
|
{...props}
|
|
20
20
|
/>
|
|
21
|
-
)
|
|
21
|
+
);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
function ItemSeparator({
|
|
25
|
-
className,
|
|
26
|
-
...props
|
|
27
|
-
}: React.ComponentProps<typeof Separator>) {
|
|
24
|
+
function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {
|
|
28
25
|
return (
|
|
29
26
|
<Separator
|
|
30
27
|
data-slot="item-separator"
|
|
@@ -32,7 +29,7 @@ function ItemSeparator({
|
|
|
32
29
|
className={cn("my-2", className)}
|
|
33
30
|
{...props}
|
|
34
31
|
/>
|
|
35
|
-
)
|
|
32
|
+
);
|
|
36
33
|
}
|
|
37
34
|
|
|
38
35
|
const itemVariants = cva(
|
|
@@ -54,8 +51,8 @@ const itemVariants = cva(
|
|
|
54
51
|
variant: "default",
|
|
55
52
|
size: "default",
|
|
56
53
|
},
|
|
57
|
-
}
|
|
58
|
-
)
|
|
54
|
+
},
|
|
55
|
+
);
|
|
59
56
|
|
|
60
57
|
function Item({
|
|
61
58
|
className,
|
|
@@ -70,7 +67,7 @@ function Item({
|
|
|
70
67
|
{
|
|
71
68
|
className: cn(itemVariants({ variant, size, className })),
|
|
72
69
|
},
|
|
73
|
-
props
|
|
70
|
+
props,
|
|
74
71
|
),
|
|
75
72
|
render,
|
|
76
73
|
state: {
|
|
@@ -78,7 +75,7 @@ function Item({
|
|
|
78
75
|
variant,
|
|
79
76
|
size,
|
|
80
77
|
},
|
|
81
|
-
})
|
|
78
|
+
});
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
const itemMediaVariants = cva(
|
|
@@ -95,8 +92,8 @@ const itemMediaVariants = cva(
|
|
|
95
92
|
defaultVariants: {
|
|
96
93
|
variant: "default",
|
|
97
94
|
},
|
|
98
|
-
}
|
|
99
|
-
)
|
|
95
|
+
},
|
|
96
|
+
);
|
|
100
97
|
|
|
101
98
|
function ItemMedia({
|
|
102
99
|
className,
|
|
@@ -110,7 +107,7 @@ function ItemMedia({
|
|
|
110
107
|
className={cn(itemMediaVariants({ variant, className }))}
|
|
111
108
|
{...props}
|
|
112
109
|
/>
|
|
113
|
-
)
|
|
110
|
+
);
|
|
114
111
|
}
|
|
115
112
|
|
|
116
113
|
function ItemContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -119,11 +116,11 @@ function ItemContent({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
119
116
|
data-slot="item-content"
|
|
120
117
|
className={cn(
|
|
121
118
|
"flex flex-1 flex-col gap-1 group-data-[size=xs]/item:gap-0 [&+[data-slot=item-content]]:flex-none",
|
|
122
|
-
className
|
|
119
|
+
className,
|
|
123
120
|
)}
|
|
124
121
|
{...props}
|
|
125
122
|
/>
|
|
126
|
-
)
|
|
123
|
+
);
|
|
127
124
|
}
|
|
128
125
|
|
|
129
126
|
function ItemTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -132,11 +129,11 @@ function ItemTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
132
129
|
data-slot="item-title"
|
|
133
130
|
className={cn(
|
|
134
131
|
"line-clamp-1 flex w-fit items-center gap-2 text-sm leading-snug font-medium underline-offset-4",
|
|
135
|
-
className
|
|
132
|
+
className,
|
|
136
133
|
)}
|
|
137
134
|
{...props}
|
|
138
135
|
/>
|
|
139
|
-
)
|
|
136
|
+
);
|
|
140
137
|
}
|
|
141
138
|
|
|
142
139
|
function ItemDescription({ className, ...props }: React.ComponentProps<"p">) {
|
|
@@ -145,47 +142,37 @@ function ItemDescription({ className, ...props }: React.ComponentProps<"p">) {
|
|
|
145
142
|
data-slot="item-description"
|
|
146
143
|
className={cn(
|
|
147
144
|
"line-clamp-2 text-left text-sm leading-normal font-normal text-muted-foreground group-data-[size=xs]/item:text-xs [&>a]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary",
|
|
148
|
-
className
|
|
145
|
+
className,
|
|
149
146
|
)}
|
|
150
147
|
{...props}
|
|
151
148
|
/>
|
|
152
|
-
)
|
|
149
|
+
);
|
|
153
150
|
}
|
|
154
151
|
|
|
155
152
|
function ItemActions({ className, ...props }: React.ComponentProps<"div">) {
|
|
156
153
|
return (
|
|
157
|
-
<div
|
|
158
|
-
|
|
159
|
-
className={cn("flex items-center gap-2", className)}
|
|
160
|
-
{...props}
|
|
161
|
-
/>
|
|
162
|
-
)
|
|
154
|
+
<div data-slot="item-actions" className={cn("flex items-center gap-2", className)} {...props} />
|
|
155
|
+
);
|
|
163
156
|
}
|
|
164
157
|
|
|
165
158
|
function ItemHeader({ className, ...props }: React.ComponentProps<"div">) {
|
|
166
159
|
return (
|
|
167
160
|
<div
|
|
168
161
|
data-slot="item-header"
|
|
169
|
-
className={cn(
|
|
170
|
-
"flex basis-full items-center justify-between gap-2",
|
|
171
|
-
className
|
|
172
|
-
)}
|
|
162
|
+
className={cn("flex basis-full items-center justify-between gap-2", className)}
|
|
173
163
|
{...props}
|
|
174
164
|
/>
|
|
175
|
-
)
|
|
165
|
+
);
|
|
176
166
|
}
|
|
177
167
|
|
|
178
168
|
function ItemFooter({ className, ...props }: React.ComponentProps<"div">) {
|
|
179
169
|
return (
|
|
180
170
|
<div
|
|
181
171
|
data-slot="item-footer"
|
|
182
|
-
className={cn(
|
|
183
|
-
"flex basis-full items-center justify-between gap-2",
|
|
184
|
-
className
|
|
185
|
-
)}
|
|
172
|
+
className={cn("flex basis-full items-center justify-between gap-2", className)}
|
|
186
173
|
{...props}
|
|
187
174
|
/>
|
|
188
|
-
)
|
|
175
|
+
);
|
|
189
176
|
}
|
|
190
177
|
|
|
191
178
|
export {
|
|
@@ -199,4 +186,4 @@ export {
|
|
|
199
186
|
ItemDescription,
|
|
200
187
|
ItemHeader,
|
|
201
188
|
ItemFooter,
|
|
202
|
-
}
|
|
189
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
1
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
2
2
|
|
|
3
3
|
function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
|
|
4
4
|
return (
|
|
@@ -6,11 +6,11 @@ function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
|
|
|
6
6
|
data-slot="kbd"
|
|
7
7
|
className={cn(
|
|
8
8
|
"pointer-events-none inline-flex h-5 w-fit min-w-5 items-center justify-center gap-1 rounded-sm bg-muted px-1 font-sans text-xs font-medium text-muted-foreground select-none in-data-[slot=tooltip-content]:bg-background/20 in-data-[slot=tooltip-content]:text-background dark:in-data-[slot=tooltip-content]:bg-background/10 [&_svg:not([class*='size-'])]:size-3",
|
|
9
|
-
className
|
|
9
|
+
className,
|
|
10
10
|
)}
|
|
11
11
|
{...props}
|
|
12
12
|
/>
|
|
13
|
-
)
|
|
13
|
+
);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
16
|
function KbdGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -20,7 +20,7 @@ function KbdGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
|
20
20
|
className={cn("inline-flex items-center gap-1", className)}
|
|
21
21
|
{...props}
|
|
22
22
|
/>
|
|
23
|
-
)
|
|
23
|
+
);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export { Kbd, KbdGroup }
|
|
26
|
+
export { Kbd, KbdGroup };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
3
|
+
import * as React from "react";
|
|
4
4
|
|
|
5
|
-
import { cn } from "@workspace/ui/lib/utils"
|
|
5
|
+
import { cn } from "@workspace/ui/lib/utils";
|
|
6
6
|
|
|
7
7
|
function Label({ className, ...props }: React.ComponentProps<"label">) {
|
|
8
8
|
return (
|
|
@@ -10,11 +10,11 @@ function Label({ className, ...props }: React.ComponentProps<"label">) {
|
|
|
10
10
|
data-slot="label"
|
|
11
11
|
className={cn(
|
|
12
12
|
"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",
|
|
13
|
-
className
|
|
13
|
+
className,
|
|
14
14
|
)}
|
|
15
15
|
{...props}
|
|
16
16
|
/>
|
|
17
|
-
)
|
|
17
|
+
);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
export { Label }
|
|
20
|
+
export { Label };
|