Skip to content

Commit 642b87a

Browse files
committed
Added Accordion component (with styles)
1 parent c9a3d87 commit 642b87a

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
"use client";
2+
3+
import * as React from "react";
4+
import * as AccordionPrimitive from "@radix-ui/react-accordion";
5+
import { ChevronDown } from "lucide-react";
6+
import { cn } from "~/utils/cn";
7+
8+
const Accordion = AccordionPrimitive.Root;
9+
10+
const AccordionItem = React.forwardRef<
11+
React.ElementRef<typeof AccordionPrimitive.Item>,
12+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>
13+
>(({ className, ...props }, ref) => (
14+
<AccordionPrimitive.Item
15+
ref={ref}
16+
className={cn("group rounded border border-grid-bright transition-colors", className)}
17+
{...props}
18+
/>
19+
));
20+
AccordionItem.displayName = "AccordionItem";
21+
22+
const AccordionTrigger = React.forwardRef<
23+
React.ElementRef<typeof AccordionPrimitive.Trigger>,
24+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>
25+
>(({ className, children, ...props }, ref) => (
26+
<AccordionPrimitive.Header className="flex">
27+
<AccordionPrimitive.Trigger
28+
ref={ref}
29+
className={cn(
30+
"flex flex-1 items-center justify-between px-3 py-2 text-sm text-text-bright transition-all group-hover:bg-grid-bright [&[data-state=open]>svg]:rotate-180",
31+
className
32+
)}
33+
{...props}
34+
>
35+
{children}
36+
<ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200" />
37+
</AccordionPrimitive.Trigger>
38+
</AccordionPrimitive.Header>
39+
));
40+
AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
41+
42+
const AccordionContent = React.forwardRef<
43+
React.ElementRef<typeof AccordionPrimitive.Content>,
44+
React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>
45+
>(({ className, children, ...props }, ref) => (
46+
<AccordionPrimitive.Content
47+
ref={ref}
48+
className="overflow-hidden border-t border-grid-bright px-3 text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down"
49+
{...props}
50+
>
51+
<div className={cn("py-3", className)}>{children}</div>
52+
</AccordionPrimitive.Content>
53+
));
54+
55+
AccordionContent.displayName = AccordionPrimitive.Content.displayName;
56+
57+
export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };

apps/webapp/package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
"@heroicons/react": "^2.0.12",
5353
"@internal/redis": "workspace:*",
5454
"@internal/run-engine": "workspace:*",
55+
"@internal/tracing": "workspace:*",
5556
"@internal/zod-worker": "workspace:*",
5657
"@internationalized/date": "^3.5.1",
5758
"@lezer/highlight": "^1.1.6",
@@ -71,6 +72,7 @@
7172
"@opentelemetry/semantic-conventions": "1.25.1",
7273
"@popperjs/core": "^2.11.8",
7374
"@prisma/instrumentation": "^5.11.0",
75+
"@radix-ui/react-accordion": "^1.2.11",
7476
"@radix-ui/react-alert-dialog": "^1.0.4",
7577
"@radix-ui/react-dialog": "^1.0.3",
7678
"@radix-ui/react-label": "^2.0.1",
@@ -105,7 +107,6 @@
105107
"@trigger.dev/platform": "1.0.15",
106108
"@trigger.dev/redis-worker": "workspace:*",
107109
"@trigger.dev/sdk": "workspace:*",
108-
"@internal/tracing": "workspace:*",
109110
"@types/pg": "8.6.6",
110111
"@uiw/react-codemirror": "^4.19.5",
111112
"@unkey/cache": "^1.5.0",
@@ -146,8 +147,8 @@
146147
"non.geist": "^1.0.2",
147148
"ohash": "^1.1.3",
148149
"openai": "^4.33.1",
149-
"parse-duration": "^2.1.0",
150150
"p-limit": "^6.2.0",
151+
"parse-duration": "^2.1.0",
151152
"posthog-js": "^1.93.3",
152153
"posthog-node": "4.17.1",
153154
"prism-react-renderer": "^2.3.1",
@@ -194,9 +195,9 @@
194195
"zod-validation-error": "^1.5.0"
195196
},
196197
"devDependencies": {
197-
"@internal/testcontainers": "workspace:*",
198-
"@internal/replication": "workspace:*",
199198
"@internal/clickhouse": "workspace:*",
199+
"@internal/replication": "workspace:*",
200+
"@internal/testcontainers": "workspace:*",
200201
"@remix-run/dev": "2.1.0",
201202
"@remix-run/eslint-config": "2.1.0",
202203
"@remix-run/testing": "^2.1.0",

0 commit comments

Comments
 (0)