@@ -14,12 +14,80 @@ A vertically stacked set of interactive headings that each reveal a section of c
1414
1515## Installation
1616
17- ### 1. Run the following command
17+ ### 1. Run the following cli command or copy/paste the component code into your project
1818
1919``` sh
2020qwik-ui add accordion
2121```
2222
23+ ``` tsx
24+ import { component$ , Slot , PropsOf } from ' @builder.io/qwik' ;
25+
26+ import {
27+ AccordionContent as QwikUIAccordionContent ,
28+ AccordionHeader as QwikUIAccordionHeader ,
29+ AccordionItem as QwikUIAccordionItem ,
30+ AccordionRoot as QwikUIAccordionRoot ,
31+ AccordionTrigger as QwikUIAccordionTrigger ,
32+ } from ' @qwik-ui/headless' ;
33+ import { cn } from ' @qwik-ui/utils' ;
34+
35+ import { LuChevronDown } from ' @qwikest/icons/lucide' ;
36+
37+ export const Accordion = component$ <PropsOf <typeof QwikUIAccordionRoot >>((props ) => (
38+ <QwikUIAccordionRoot animated { ... props } class = { props .class } >
39+ <Slot />
40+ </QwikUIAccordionRoot >
41+ ));
42+
43+ export const AccordionItem = component$ <PropsOf <typeof QwikUIAccordionItem >>((props ) => {
44+ return (
45+ <QwikUIAccordionItem { ... props } class = { cn (' border-b' , props .class )} >
46+ <Slot />
47+ </QwikUIAccordionItem >
48+ );
49+ });
50+
51+ export const AccordionTrigger = component$ <
52+ PropsOf < typeof QwikUIAccordionTrigger > & {
53+ header ?: PropsOf < typeof QwikUIAccordionHeader > [' as' ];
54+ }
55+ > (({ header = ' h3' , ... props }) => {
56+ return (
57+ <QwikUIAccordionHeader as = { header } class = " flex" >
58+ <QwikUIAccordionTrigger
59+ { ... props }
60+ class = { cn (
61+ ' flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180' ,
62+ props .class ,
63+ )}
64+ >
65+ <Slot />
66+ <LuChevronDown class = " text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-200" />
67+ </QwikUIAccordionTrigger >
68+ </QwikUIAccordionHeader >
69+ );
70+ });
71+
72+ export const AccordionContent = component$ <PropsOf <typeof QwikUIAccordionContent >>(
73+ (props ) => {
74+ return (
75+ <QwikUIAccordionContent
76+ { ... props }
77+ class = { cn (
78+ ' data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm' ,
79+ props .class ,
80+ )}
81+ >
82+ <div class = " pb-4 pt-0" >
83+ <Slot />
84+ </div >
85+ </QwikUIAccordionContent >
86+ );
87+ },
88+ );
89+ ```
90+
2391### 2. Update your 'tailwind.config.cjs'
2492
2593Add the following animations to your tailwind.config.js file:
0 commit comments