11import { Accordion as Kobalte } from "@kobalte/core/accordion"
2- import { Accessor , createContext , splitProps , useContext } from "solid-js"
2+ import { splitProps } from "solid-js"
33import type { ComponentProps , ParentProps } from "solid-js"
4- import { MorphChevron } from "./morph-chevron"
54
65export interface AccordionProps extends ComponentProps < typeof Kobalte > { }
76export interface AccordionItemProps extends ComponentProps < typeof Kobalte . Item > { }
87export interface AccordionHeaderProps extends ComponentProps < typeof Kobalte . Header > { }
98export interface AccordionTriggerProps extends ComponentProps < typeof Kobalte . Trigger > { }
109export interface AccordionContentProps extends ComponentProps < typeof Kobalte . Content > { }
1110
12- const AccordionItemContext = createContext < Accessor < boolean > > ( )
13-
1411function AccordionRoot ( props : AccordionProps ) {
1512 const [ split , rest ] = splitProps ( props , [ "class" , "classList" ] )
1613 return (
@@ -25,19 +22,17 @@ function AccordionRoot(props: AccordionProps) {
2522 )
2623}
2724
28- function AccordionItem ( props : AccordionItemProps & { expanded ?: boolean } ) {
29- const [ split , rest ] = splitProps ( props , [ "class" , "classList" , "expanded" ] )
25+ function AccordionItem ( props : AccordionItemProps ) {
26+ const [ split , rest ] = splitProps ( props , [ "class" , "classList" ] )
3027 return (
31- < AccordionItemContext . Provider value = { ( ) => split . expanded ?? false } >
32- < Kobalte . Item
33- { ...rest }
34- data-slot = "accordion-item"
35- classList = { {
36- ...( split . classList ?? { } ) ,
37- [ split . class ?? "" ] : ! ! split . class ,
38- } }
39- />
40- </ AccordionItemContext . Provider >
28+ < Kobalte . Item
29+ { ...rest }
30+ data-slot = "accordion-item"
31+ classList = { {
32+ ...( split . classList ?? { } ) ,
33+ [ split . class ?? "" ] : ! ! split . class ,
34+ } }
35+ />
4136 )
4237}
4338
@@ -89,25 +84,9 @@ function AccordionContent(props: ParentProps<AccordionContentProps>) {
8984 )
9085}
9186
92- export interface AccordionArrowProps extends ComponentProps < "div" > {
93- expanded ?: boolean
94- }
95-
96- function AccordionArrow ( props : AccordionArrowProps = { } ) {
97- const [ local , rest ] = splitProps ( props , [ "expanded" ] )
98- const contextExpanded = useContext ( AccordionItemContext )
99- const isExpanded = ( ) => local . expanded ?? contextExpanded ?.( ) ?? false
100- return (
101- < div data-slot = "accordion-arrow" { ...rest } >
102- < MorphChevron expanded = { isExpanded ( ) } />
103- </ div >
104- )
105- }
106-
10787export const Accordion = Object . assign ( AccordionRoot , {
10888 Item : AccordionItem ,
10989 Header : AccordionHeader ,
11090 Trigger : AccordionTrigger ,
11191 Content : AccordionContent ,
112- Arrow : AccordionArrow ,
11392} )
0 commit comments