import clsx from "clsx"; import { Collapsible as CollapsiblePrimitive } from "radix-ui"; import * as React from "react"; import { useEvent, useGetKey, useGetSet } from "../../hooks"; import { ButtonContext } from "../Link"; import * as styles from "./styles.module.css"; export const Collapsible = ({ defaultOpen = false, children, preview, onOpenChange, ...rest }: CollapsiblePrimitive.CollapsibleProps & { preview?: true; "data-id": string; }) => { const key = useGetKey(rest); const [{ isOpen }, setState] = useGetSet(key, { isOpen: defaultOpen }, true); const open = React.useCallback(() => { setState({ isOpen: true }, process.env.PREVIEW ? `onChange` : undefined); }, [setState]); const close = React.useCallback(() => { setState({ isOpen: false }, process.env.PREVIEW ? `onChange` : undefined); }, [setState]); const id = rest["data-id"]; useEvent(id, "open", open); useEvent(id, "close", close); return ( { setState({ isOpen }, process.env.PREVIEW ? `onChange` : undefined); onOpenChange?.(isOpen); }} data-component="Collapsible$Brevity" {...rest} > {children} ); }; Collapsible.Trigger = (props: CollapsiblePrimitive.CollapsibleTriggerProps) => { return ( ); }; Collapsible.Content = ({ className, ...props }: CollapsiblePrimitive.CollapsibleContentProps) => { return ( ); };