Skip to content

Commit b0eb803

Browse files
committed
feat: base ui for create table gui
1 parent d2189a1 commit b0eb803

File tree

6 files changed

+417
-16
lines changed

6 files changed

+417
-16
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"@datadog/browser-rum-react": "^6.18.0",
2828
"@hookform/resolvers": "^5.0.0",
2929
"@monaco-editor/react": "^4.7.0",
30+
"@radix-ui/react-accordion": "^1.2.12",
3031
"@radix-ui/react-alert-dialog": "^1.1.6",
3132
"@radix-ui/react-dialog": "^1.1.6",
3233
"@radix-ui/react-dropdown-menu": "^2.1.6",
@@ -37,6 +38,7 @@
3738
"@radix-ui/react-select": "^2.1.6",
3839
"@radix-ui/react-separator": "^1.1.2",
3940
"@radix-ui/react-slot": "^1.1.2",
41+
"@radix-ui/react-switch": "^1.2.6",
4042
"@radix-ui/react-tabs": "^1.1.3",
4143
"@radix-ui/react-toggle": "^1.1.10",
4244
"@radix-ui/react-tooltip": "^1.1.8",

pnpm-lock.yaml

Lines changed: 93 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/ui/accordion.tsx

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import * as React from "react"
2+
import * as AccordionPrimitive from "@radix-ui/react-accordion"
3+
import { ChevronDownIcon } from "lucide-react"
4+
import { cn } from "@/lib/cn"
5+
6+
function Accordion({
7+
...props
8+
}: React.ComponentProps<typeof AccordionPrimitive.Root>) {
9+
return <AccordionPrimitive.Root data-slot="accordion" {...props} />
10+
}
11+
12+
function AccordionItem({
13+
className,
14+
...props
15+
}: React.ComponentProps<typeof AccordionPrimitive.Item>) {
16+
return (
17+
<AccordionPrimitive.Item
18+
data-slot="accordion-item"
19+
className={cn("border-b last:border-b-0", className)}
20+
{...props}
21+
/>
22+
)
23+
}
24+
25+
function AccordionTrigger({
26+
className,
27+
children,
28+
...props
29+
}: React.ComponentProps<typeof AccordionPrimitive.Trigger>) {
30+
return (
31+
<AccordionPrimitive.Header className="flex">
32+
<AccordionPrimitive.Trigger
33+
data-slot="accordion-trigger"
34+
className={cn(
35+
"focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
36+
className
37+
)}
38+
{...props}
39+
>
40+
{children}
41+
<ChevronDownIcon className="text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" />
42+
</AccordionPrimitive.Trigger>
43+
</AccordionPrimitive.Header>
44+
)
45+
}
46+
47+
function AccordionContent({
48+
className,
49+
children,
50+
...props
51+
}: React.ComponentProps<typeof AccordionPrimitive.Content>) {
52+
return (
53+
<AccordionPrimitive.Content
54+
data-slot="accordion-content"
55+
className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"
56+
{...props}
57+
>
58+
<div className={cn("pt-0 pb-4", className)}>{children}</div>
59+
</AccordionPrimitive.Content>
60+
)
61+
}
62+
63+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }

src/components/ui/switch.tsx

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import * as React from "react"
2+
import * as SwitchPrimitive from "@radix-ui/react-switch"
3+
import { cn } from "@/lib/cn"
4+
5+
function Switch({
6+
className,
7+
...props
8+
}: React.ComponentProps<typeof SwitchPrimitive.Root>) {
9+
return (
10+
<SwitchPrimitive.Root
11+
data-slot="switch"
12+
className={cn(
13+
"peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",
14+
className
15+
)}
16+
{...props}
17+
>
18+
<SwitchPrimitive.Thumb
19+
data-slot="switch-thumb"
20+
className={cn(
21+
"bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0"
22+
)}
23+
/>
24+
</SwitchPrimitive.Root>
25+
)
26+
}
27+
28+
export { Switch }

0 commit comments

Comments
 (0)