Skip to content

Collapsible

An interactive component which expands/collapses a panel.

@peduarte starred 3 repositories

@radix-ui/primitives

Installation

bash
npx @galaxy-stack/nebula-cli@latest add collapsible
bash
pnpm dlx @galaxy-stack/nebula-cli@latest add collapsible
bash
yarn dlx @galaxy-stack/nebula-cli@latest add collapsible
bash
bunx @galaxy-stack/nebula-cli@latest add collapsible
bash
# If you have installed galaxy-design globally
galaxy-design add collapsible

Usage

API Reference

Props

PropTypeDefaultDescriptionFrameworks
openbooleanundefinedControlled open stateAll
defaultOpenbooleanfalseInitial open stateAll
onOpenChange(open: boolean) => void-Called when open state changesAll
disabledbooleanfalseDisables the collapsibleAll
classNamestring''CSS class namesReact, React Native
classstring''CSS class namesVue, Angular, Flutter

Subcomponents

CollapsibleTrigger

PropTypeDefaultDescriptionFrameworks
asChildbooleanfalseRender as child elementReact, Vue, Angular
disabledbooleanfalseDisables the triggerAll
classNamestring''CSS class namesReact, React Native
classstring''CSS class namesVue, Angular, Flutter

CollapsibleContent

PropTypeDefaultDescriptionFrameworks
asChildbooleanfalseRender as child elementReact, Vue, Angular
forceMountbooleanfalseForce mount contentReact, Vue
classNamestring''CSS class namesReact, React Native
classstring''CSS class namesVue, Angular, Flutter

Vue

vue
<script setup lang="ts">
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '@/components/ui'
import { ref } from 'vue'

const isOpen = ref(false)
</script>

<template>
  <Collapsible v-model:open="isOpen">
    <CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>
    <CollapsibleContent>
      Yes. Free to use for personal and commercial projects.
    </CollapsibleContent>
  </Collapsible>
</template>

React

tsx
import { Collapsible, CollapsibleTrigger, CollapsibleContent } from '@/components/ui'

export default function CollapsibleDemo() {
  return (
    <Collapsible>
      <CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>
      <CollapsibleContent>
        Yes. Free to use for personal and commercial projects.
      </CollapsibleContent>
    </Collapsible>
  )
}

Angular

typescript
import { Component } from '@angular/core';
import {
  CollapsibleComponent,
  CollapsibleTriggerComponent,
  CollapsibleContentComponent
} from '@/components/ui';

@Component({
  selector: 'app-collapsible-demo',
  standalone: true,
  imports: [CollapsibleComponent, CollapsibleTriggerComponent, CollapsibleContentComponent],
  template: `
    <ui-collapsible [open]="isOpen" (openChange)="isOpen = $event">
      <ui-collapsible-trigger (triggerClick)="isOpen = !isOpen">
        Can I use this in my project?
      </ui-collapsible-trigger>
      <ui-collapsible-content [isOpen]="isOpen">
        Yes. Free to use for personal and commercial projects.
      </ui-collapsible-content>
    </ui-collapsible>
  `
})
export class CollapsibleDemoComponent {
  isOpen = false;
}

Accessibility

  • Keyboard Navigation: [TODO]
  • Screen Reader: [TODO]
  • Focus Management: [TODO]
  • WCAG Compliance: WCAG 2.1 Level AA compliant

Author

Bùi Trọng Hiếu (kevinbui)

License

MIT © 2025 Bùi Trọng Hiếu (kevinbui)

Released under the MIT License.