| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  | "use client"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import * as AccordionPrimitive from "@radix-ui/react-accordion"; | 
					
						
							|  |  |  | import { ChevronDown } from "lucide-react"; | 
					
						
							|  |  |  | import * as React from "react"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import { cn } from "@/lib/utils"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const Accordion = AccordionPrimitive.Root; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const AccordionItem = React.forwardRef< | 
					
						
							|  |  |  |   React.ElementRef<typeof AccordionPrimitive.Item>, | 
					
						
							|  |  |  |   React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> | 
					
						
							|  |  |  | >(({ className, ...props }, ref) => ( | 
					
						
							|  |  |  |   <AccordionPrimitive.Item className={cn("border-b", className)} ref={ref} {...props} /> | 
					
						
							|  |  |  | )); | 
					
						
							|  |  |  | AccordionItem.displayName = "AccordionItem"; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const AccordionTrigger = React.forwardRef< | 
					
						
							|  |  |  |   React.ElementRef<typeof AccordionPrimitive.Trigger>, | 
					
						
							|  |  |  |   React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> | 
					
						
							|  |  |  | >(({ className, children, ...props }, ref) => ( | 
					
						
							|  |  |  |   <AccordionPrimitive.Header className="flex"> | 
					
						
							|  |  |  |     <AccordionPrimitive.Trigger | 
					
						
							|  |  |  |       className={cn( | 
					
						
							|  |  |  |         "flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180", | 
					
						
							|  |  |  |         className, | 
					
						
							|  |  |  |       )} | 
					
						
							|  |  |  |       ref={ref} | 
					
						
							|  |  |  |       {...props} | 
					
						
							|  |  |  |     > | 
					
						
							|  |  |  |       {children} | 
					
						
							|  |  |  |       <ChevronDown className="h-4 w-4 shrink-0 transition-transform duration-200" /> | 
					
						
							|  |  |  |     </AccordionPrimitive.Trigger> | 
					
						
							|  |  |  |   </AccordionPrimitive.Header> | 
					
						
							|  |  |  | )); | 
					
						
							|  |  |  | AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const AccordionContent = React.forwardRef< | 
					
						
							|  |  |  |   React.ElementRef<typeof AccordionPrimitive.Content>, | 
					
						
							|  |  |  |   React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> | 
					
						
							|  |  |  | >(({ className, children, ...props }, ref) => ( | 
					
						
							|  |  |  |   <AccordionPrimitive.Content | 
					
						
							|  |  |  |     className="overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down" | 
					
						
							|  |  |  |     ref={ref} | 
					
						
							|  |  |  |     {...props} | 
					
						
							|  |  |  |   > | 
					
						
							| 
									
										
										
										
											2024-08-14 12:57:22 +08:00
										 |  |  |     <div className={cn("pt-0 pb-4", className)}>{children}</div> | 
					
						
							| 
									
										
										
										
											2024-04-03 22:08:27 +08:00
										 |  |  |   </AccordionPrimitive.Content> | 
					
						
							|  |  |  | )); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | AccordionContent.displayName = AccordionPrimitive.Content.displayName; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export { Accordion, AccordionContent, AccordionItem, AccordionTrigger }; |