@@ -23,33 +23,33 @@ qwik-ui add accordion
23
23
``` tsx
24
24
import { component$ , Slot , PropsOf } from ' @builder.io/qwik' ;
25
25
26
- import { Accordion } from ' @qwik-ui/headless' ;
26
+ import { Accordion as HeadlessAccordion } from ' @qwik-ui/headless' ;
27
27
import { cn } from ' @qwik-ui/utils' ;
28
28
29
29
import { LuChevronDown } from ' @qwikest/icons/lucide' ;
30
30
31
- export const AccordionRoot = component$ <PropsOf <typeof Accordion .Root >>((props ) => (
32
- <Accordion .Root animated { ... props } >
31
+ const Root = component$ <PropsOf <typeof HeadlessAccordion .Root >>((props ) => (
32
+ <HeadlessAccordion .Root animated { ... props } >
33
33
<Slot />
34
- </Accordion .Root >
34
+ </HeadlessAccordion .Root >
35
35
));
36
36
37
- export const AccordionItem = component$ <PropsOf <typeof Accordion .Item >>((props ) => {
37
+ const Item = component$ <PropsOf <typeof HeadlessAccordion .Item >>((props ) => {
38
38
return (
39
- <Accordion .Item { ... props } class = { cn (' border-b' , props .class )} >
39
+ <HeadlessAccordion .Item { ... props } class = { cn (' border-b' , props .class )} >
40
40
<Slot />
41
- </Accordion .Item >
41
+ </HeadlessAccordion .Item >
42
42
);
43
43
});
44
44
45
- export const AccordionTrigger = component$ <
46
- PropsOf < typeof Accordion .Trigger > & {
47
- header ?: PropsOf < typeof Accordion .Header > [' as' ];
45
+ const Trigger = component$ <
46
+ PropsOf < typeof HeadlessAccordion .Trigger > & {
47
+ header ?: PropsOf < typeof HeadlessAccordion .Header > [' as' ];
48
48
}
49
49
> (({ header = ' h3' , ... props }) => {
50
50
return (
51
- <Accordion .Header as = { header } class = " flex" >
52
- <Accordion .Trigger
51
+ <HeadlessAccordion .Header as = { header } class = " flex" >
52
+ <HeadlessAccordion .Trigger
53
53
{ ... props }
54
54
class = { cn (
55
55
' flex flex-1 items-center justify-between py-4 text-sm font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180' ,
@@ -58,14 +58,14 @@ export const AccordionTrigger = component$<
58
58
>
59
59
<Slot />
60
60
<LuChevronDown class = " h-4 w-4 shrink-0 text-muted-foreground transition-transform duration-200" />
61
- </Accordion .Trigger >
62
- </Accordion .Header >
61
+ </HeadlessAccordion .Trigger >
62
+ </HeadlessAccordion .Header >
63
63
);
64
64
});
65
65
66
- export const AccordionContent = component$ <PropsOf <typeof Accordion .Content >>((props ) => {
66
+ const Content = component$ <PropsOf <typeof HeadlessAccordion .Content >>((props ) => {
67
67
return (
68
- <Accordion .Content
68
+ <HeadlessAccordion .Content
69
69
{ ... props }
70
70
class = { cn (
71
71
' overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down' ,
@@ -75,9 +75,16 @@ export const AccordionContent = component$<PropsOf<typeof Accordion.Content>>((p
75
75
<div class = " pb-4 pt-0" >
76
76
<Slot />
77
77
</div >
78
- </Accordion .Content >
78
+ </HeadlessAccordion .Content >
79
79
);
80
80
});
81
+
82
+ export const Accordion = {
83
+ Root ,
84
+ Item ,
85
+ Trigger ,
86
+ Content ,
87
+ };
81
88
```
82
89
83
90
### 2. Update your 'tailwind.config.cjs'
@@ -101,19 +108,14 @@ module.exports = {
101
108
## Usage
102
109
103
110
``` tsx
104
- import {
105
- Accordion ,
106
- AccordionContent ,
107
- AccordionItem ,
108
- AccordionTrigger ,
109
- } from ' @/components/ui/accordion' ;
111
+ import { Accordion } from ' ~/components/ui' ;
110
112
```
111
113
112
114
``` tsx
113
- <Accordion behavior = " single" collapsible class = " w-full" >
114
- <AccordionItem id = " item-1" >
115
- <AccordionTrigger >Is it accessible?</AccordionTrigger >
116
- <AccordionContent >Yes. It adheres to the WAI-ARIA design pattern.</AccordionContent >
117
- </AccordionItem >
118
- </Accordion >
115
+ <Accordion.Root behavior = " single" collapsible class = " w-full" >
116
+ <Accordion.Item id = " item-1" >
117
+ <Accordion.Trigger >Is it accessible?</Accordion.Trigger >
118
+ <Accordion.Content >Yes. It adheres to the WAI-ARIA design pattern.</Accordion.Content >
119
+ </Accordion.Item >
120
+ </Accordion.Root >
119
121
```
0 commit comments