|
1 | 1 | import * as AccordionPrimitive from "@radix-ui/react-accordion" |
2 | 2 | import * as React from "react" |
3 | 3 |
|
| 4 | +import { cx, useStyles } from "../styles/use-styles.js" |
4 | 5 | import { Icon } from "./icon/Icon.js" |
5 | | -import { cn } from "./util.js" |
6 | 6 |
|
7 | 7 | const Accordion = AccordionPrimitive.Root |
8 | 8 |
|
9 | 9 | const AccordionItem = React.forwardRef< |
10 | 10 | React.ElementRef<typeof AccordionPrimitive.Item>, |
11 | 11 | React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> |
12 | | ->(({ className, ...props }, ref) => ( |
13 | | - <AccordionPrimitive.Item ref={ref} className={cn("border-b border-b-gray-500", className)} {...props} /> |
14 | | -)) |
| 12 | +>(({ className, ...props }, ref) => { |
| 13 | + const { styles } = useStyles() |
| 14 | + return <AccordionPrimitive.Item ref={ref} className={cx(styles.accordion.item, className)} {...props} /> |
| 15 | +}) |
15 | 16 | AccordionItem.displayName = "AccordionItem" |
16 | 17 |
|
17 | 18 | const AccordionTrigger = React.forwardRef< |
18 | 19 | React.ElementRef<typeof AccordionPrimitive.Trigger>, |
19 | 20 | React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> |
20 | | ->(({ className, children, ...props }, ref) => ( |
21 | | - <AccordionPrimitive.Header className="flex"> |
22 | | - <AccordionPrimitive.Trigger |
23 | | - ref={ref} |
24 | | - className={cn( |
25 | | - "flex flex-1 items-center w-full justify-between py-2 text-sm font-medium transition-all [&[data-state=open]>svg]:rotate-180", |
26 | | - className |
27 | | - )} |
28 | | - {...props} |
29 | | - > |
30 | | - {children} |
31 | | - <Icon className="text-white h-4 w-4 shrink-0 transition-transform duration-200" name="ChevronDown" /> |
32 | | - </AccordionPrimitive.Trigger> |
33 | | - </AccordionPrimitive.Header> |
34 | | -)) |
| 21 | +>(({ className, children, ...props }, ref) => { |
| 22 | + const { styles } = useStyles() |
| 23 | + return ( |
| 24 | + <AccordionPrimitive.Header className={styles.accordion.header}> |
| 25 | + <AccordionPrimitive.Trigger ref={ref} className={cx(styles.accordion.trigger, className)} {...props}> |
| 26 | + {children} |
| 27 | + <Icon className={styles.accordion.icon} name="ChevronDown" /> |
| 28 | + </AccordionPrimitive.Trigger> |
| 29 | + </AccordionPrimitive.Header> |
| 30 | + ) |
| 31 | +}) |
35 | 32 | AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName |
36 | 33 |
|
37 | 34 | const AccordionContent = React.forwardRef< |
38 | 35 | React.ElementRef<typeof AccordionPrimitive.Content>, |
39 | 36 | React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> |
40 | | ->(({ className, children, ...props }, ref) => ( |
41 | | - <AccordionPrimitive.Content |
42 | | - ref={ref} |
43 | | - className={cn( |
44 | | - "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm", |
45 | | - className |
46 | | - )} |
47 | | - {...props} |
48 | | - > |
49 | | - <div className="pt-0">{children}</div> |
50 | | - </AccordionPrimitive.Content> |
51 | | -)) |
| 37 | +>(({ className, children, ...props }, ref) => { |
| 38 | + const { styles } = useStyles() |
| 39 | + return ( |
| 40 | + <AccordionPrimitive.Content ref={ref} className={cx(styles.accordion.content, className)} {...props}> |
| 41 | + <div className={styles.accordion.contentInner}>{children}</div> |
| 42 | + </AccordionPrimitive.Content> |
| 43 | + ) |
| 44 | +}) |
52 | 45 | AccordionContent.displayName = AccordionPrimitive.Content.displayName |
53 | 46 |
|
54 | 47 | export { Accordion, AccordionItem, AccordionTrigger, AccordionContent } |
0 commit comments