Edit Profile

Dark Mode

Copy config

Copy and paste the following code into your global.css file to apply the styles.

Collapsible

An interactive section that shows or hides its connected information.

@peduarte starred 3 repositories

@qwik-ui/headless

Installation

1. Run the following cli command or copy/paste the component code into your project

qwik-ui add collapsible
import { component$, Slot, type PropsOf } from '@builder.io/qwik';
import { Collapsible as HeadlessCollapsible } from '@qwik-ui/headless';
import { cn } from '@qwik-ui/utils';

const Root = (props: PropsOf<typeof HeadlessCollapsible.Root>) => (
  <HeadlessCollapsible.Root {...props}>{props.children}</HeadlessCollapsible.Root>
);

const Trigger = component$<PropsOf<typeof HeadlessCollapsible.Trigger>>(
  ({ ...props }) => {
    return (
      <HeadlessCollapsible.Trigger {...props}>
        <Slot />
      </HeadlessCollapsible.Trigger>
    );
  },
);

const Content = component$<PropsOf<typeof HeadlessCollapsible.Content>>((props) => {
  return (
    <HeadlessCollapsible.Content {...props} class={cn(props.class)}>
      <Slot />
    </HeadlessCollapsible.Content>
  );
});

export const Collapsible = {
  Root,
  Trigger,
  Content,
};

Usage

The styled Collapsible component doesn't isn't really styled because it's meant to be a wrapper around some items in a list or menu.

import { Collapsible } from '~/components/ui';
<Collapsible.Root>
  <Collapsible.Trigger>Is it accessible?</Collapsible.Trigger>
  <Collapsible.Content>Yes. It adheres to the WAI-ARIA design pattern.</Collapsible.Content>
</Collapsible.Root>