Docs Components Data Display

Accordion

React example follows below.
ts
const accordionFixture = {
id: "accordion",
type: "single",
defaultValue: ["deploy"],
items: [
{ value: "deploy", trigger: "Deploy policy", content: "Production deploys require a green verification run." },
{ value: "rollback", trigger: "Rollback policy", content: "Roll back to the last verified release.", disabled: true },
],
} satisfies {
id: string;
type: "single" | "multiple";
defaultValue: string[];
items: Array<{ value: string; trigger: string; content: string; disabled?: boolean }>;
};
import { Accordion } from "@grassroot/ui-react";
export default function AccordionDemo() {
return (
<div>
<Accordion {...accordionFixture} />
</div>
);
}
ts
<script setup lang="ts">
import { Accordion } from "@grassroot/ui-vue";
const accordionFixture = {
id: "accordion",
type: "single",
defaultValue: ["deploy"],
items: [
{ value: "deploy", trigger: "Deploy policy", content: "Production deploys require a green verification run." },
{ value: "rollback", trigger: "Rollback policy", content: "Roll back to the last verified release.", disabled: true },
],
} satisfies {
id: string;
type: "single" | "multiple";
defaultValue: string[];
items: Array<{ value: string; trigger: string; content: string; disabled?: boolean }>;
};
</script>
<template>
<div>
<Accordion
:items="accordionFixture.items"
:type="accordionFixture.type"
:default-value="accordionFixture.defaultValue"
/>
</div>
</template>
ts
import { Component, signal } from "@angular/core";
import { GrassrootAccordion } from "@grassroot/ui-angular";
const accordionFixture = {
id: "accordion",
type: "single",
defaultValue: ["deploy"],
items: [
{ value: "deploy", trigger: "Deploy policy", content: "Production deploys require a green verification run." },
{ value: "rollback", trigger: "Rollback policy", content: "Roll back to the last verified release.", disabled: true },
],
} satisfies {
id: string;
type: "single" | "multiple";
defaultValue: string[];
items: Array<{ value: string; trigger: string; content: string; disabled?: boolean }>;
};
@Component({
selector: "app-accordion-demo",
standalone: true,
imports: [GrassrootAccordion],
host: { style: "display: block; width: 600px; max-width: 100%;" },
template: `<grassroot-accordion [items]="items" [type]="fixture.type" [(value)]="open" />`,
})
export class AccordionDemoComponent {
protected readonly fixture = accordionFixture;
protected readonly items = [...accordionFixture.items];
protected readonly open = signal([...accordionFixture.defaultValue]);
}
export default AccordionDemoComponent;
ts
<script lang="ts">
import { Accordion } from "@grassroot/ui-svelte";
const accordionFixture = {
id: "accordion",
type: "single",
defaultValue: ["deploy"],
items: [
{ value: "deploy", trigger: "Deploy policy", content: "Production deploys require a green verification run." },
{ value: "rollback", trigger: "Rollback policy", content: "Roll back to the last verified release.", disabled: true },
],
} satisfies {
id: string;
type: "single" | "multiple";
defaultValue: string[];
items: Array<{ value: string; trigger: string; content: string; disabled?: boolean }>;
};
</script>
<div>
<Accordion
items={accordionFixture.items}
type={accordionFixture.type}
defaultValue={accordionFixture.defaultValue}
/>
</div>
ts
/** @jsxImportSource solid-js */
import { Accordion } from "@grassroot/ui-solid";
const accordionFixture = {
id: "accordion",
type: "single",
defaultValue: ["deploy"],
items: [
{ value: "deploy", trigger: "Deploy policy", content: "Production deploys require a green verification run." },
{ value: "rollback", trigger: "Rollback policy", content: "Roll back to the last verified release.", disabled: true },
],
} satisfies {
id: string;
type: "single" | "multiple";
defaultValue: string[];
items: Array<{ value: string; trigger: string; content: string; disabled?: boolean }>;
};
import type { JSX } from "solid-js";
export default function AccordionDemo(): JSX.Element {
return (
<div>
<Accordion
items={accordionFixture.items}
type={accordionFixture.type}
defaultValue={accordionFixture.defaultValue}
/>
</div>
);
}

Installation

API Reference

Import

import { Accordion } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
items
AccordionItem<string>[]
required
type
"single" | "multiple" | undefined
"single"
optional
value
string[] | undefined
optional
defaultValue
string[] | undefined
optional
onValueChange
((value: string[]) => void) | undefined
optional
className
string | undefined
optional
id
string | undefined
optional
Prop
items
Type
AccordionItem<string>[]
Default
Requirement
required
Prop
type
Type
"single" | "multiple" | undefined
Default
"single"
Requirement
optional
Prop
value
Type
string[] | undefined
Default
Requirement
optional
Prop
defaultValue
Type
string[] | undefined
Default
Requirement
optional
Prop
onValueChange
Type
((value: string[]) => void) | undefined
Default
Requirement
optional
Prop
className
Type
string | undefined
Default
Requirement
optional
Prop
id
Type
string | undefined
Default
Requirement
optional

Events

EventPayload
onValueChange((value: string[]) => void) | undefined

Import

import { Accordion } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
items
AccordionItem<string>[]
required
type
"single" | "multiple" | undefined
"single"
optional
modelValue
string[] | undefined
optional
defaultValue
string[] | undefined
optional
id
string | undefined
optional
Prop
items
Type
AccordionItem<string>[]
Default
Requirement
required
Prop
type
Type
"single" | "multiple" | undefined
Default
"single"
Requirement
optional
Prop
modelValue
Type
string[] | undefined
Default
Requirement
optional
Prop
defaultValue
Type
string[] | undefined
Default
Requirement
optional
Prop
id
Type
string | undefined
Default
Requirement
optional

Events

EventPayload
update:modelValue[value: string[]]

Content regions

  • content
  • trigger

Import

import { Component, signal } from "@angular/core";
import { GrassrootAccordion } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
items
AccordionItem[]
required
type
AccordionType
"single"
optional
id
string
"grassroot-accordion"
optional
value
string[]
[]
optional
Prop
items
Type
AccordionItem[]
Default
Requirement
required
Prop
type
Type
AccordionType
Default
"single"
Requirement
optional
Prop
id
Type
string
Default
"grassroot-accordion"
Requirement
optional
Prop
value
Type
string[]
Default
[]
Requirement
optional

Events

EventPayload
valueChangestring[]

Import

import { Accordion } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
items
AccordionItem[]
required
type
"single" | "multiple"
"single"
optional
value
string[]
optional
defaultValue
string[]
optional
id
string
optional
className
string
optional
onValueChange
(value: string[]) => void
optional
Prop
items
Type
AccordionItem[]
Default
Requirement
required
Prop
type
Type
"single" | "multiple"
Default
"single"
Requirement
optional
Prop
value
Type
string[]
Default
Requirement
optional
Prop
defaultValue
Type
string[]
Default
Requirement
optional
Prop
id
Type
string
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional
Prop
onValueChange
Type
(value: string[]) => void
Default
Requirement
optional

Events

EventPayload
onValueChange(value: string[]) => void

Content regions

  • content
  • trigger

Import

import { Accordion } from "@grassroot/ui-solid";
import type { JSX } from "solid-js";

Props

Prop
Type
Default
Requirement
items
AccordionItem<TValue>[]
required
type
"single" | "multiple"
optional
value
TValue[]
optional
defaultValue
TValue[]
optional
onValueChange
(value: TValue[]) => void
optional
className
string
optional
id
string
optional
Prop
items
Type
AccordionItem<TValue>[]
Default
Requirement
required
Prop
type
Type
"single" | "multiple"
Default
Requirement
optional
Prop
value
Type
TValue[]
Default
Requirement
optional
Prop
defaultValue
Type
TValue[]
Default
Requirement
optional
Prop
onValueChange
Type
(value: TValue[]) => void
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional
Prop
id
Type
string
Default
Requirement
optional

Events

EventPayload
onValueChange(value: TValue[]) => void