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.