- Name
parts- Kind
- property
- Type
readonly ["root", "item", "heading", "trigger", "content"]- Requirement
- required
DocsAPI referenceHeadlessaccordion
accordion headless API
The core connector and vanilla mount are always visible. Use the framework choice to inspect native composition, props, outputs, context and hooks for the selected adapter.
@grassroot/ui-headless-core/accordion
Core connector and vanilla API
accordionAnatomy
valueexport declare const accordionAnatomy: { readonly scope: "accordion"; readonly parts: readonly ["root", "item", "heading", "trigger", "content"];};partsreadonly ["root", "item", "heading", "trigger", "content"]scope"accordion"- Name
scope- Kind
- property
- Type
"accordion"- Requirement
- required
AccordionApi
interfaceinterface AccordionApi<TValue extends AccordionItemValue = string> { rootProps(): PartProps; itemProps(item: AccordionItem<TValue>): PartProps; headingProps(item: AccordionItem<TValue>): PartProps; triggerProps(item: AccordionItem<TValue>): PartProps; contentProps(item: AccordionItem<TValue>): PartProps; readonly value: readonly TValue[]; readonly focusedValue: TValue | undefined;}contentProps(item: AccordionItem<TValue>) => PartPropsfocusedValueTValue | undefinedheadingProps(item: AccordionItem<TValue>) => PartPropsitemProps(item: AccordionItem<TValue>) => PartPropsrootProps() => PartPropstriggerProps(item: AccordionItem<TValue>) => PartPropsvaluereadonly TValue[]- Name
contentProps- Kind
- method
- Type
(item: AccordionItem<TValue>) => PartProps- Requirement
- required
- Name
focusedValue- Kind
- property
- Type
TValue | undefined- Requirement
- required
- Name
headingProps- Kind
- method
- Type
(item: AccordionItem<TValue>) => PartProps- Requirement
- required
- Name
itemProps- Kind
- method
- Type
(item: AccordionItem<TValue>) => PartProps- Requirement
- required
- Name
rootProps- Kind
- method
- Type
() => PartProps- Requirement
- required
- Name
triggerProps- Kind
- method
- Type
(item: AccordionItem<TValue>) => PartProps- Requirement
- required
- Name
value- Kind
- property
- Type
readonly TValue[]- Requirement
- required
type AccordionChangeReason = "pointer" | "keyboard" | "programmatic";AccordionCommand
typetype AccordionCommand<TValue extends AccordionItemValue = string> = CommandObject & ({ readonly type: "VALUE_CHANGE_REQUEST"; readonly value: readonly TValue[]; readonly reason: AccordionChangeReason;} | { readonly type: "FOCUS_ITEM"; readonly key: TValue;});AccordionConnectOptions
interfaceinterface AccordionConnectOptions {}AccordionContext
typetype AccordionContext<TValue extends AccordionItemValue = string> = { readonly value: readonly TValue[]; readonly focusedValue?: TValue; readonly mode: "controlled" | "uncontrolled";};focusedValueTValuemode"controlled" | "uncontrolled"valuereadonly TValue[]- Name
focusedValue- Kind
- property
- Type
TValue- Requirement
- optional
- Name
mode- Kind
- property
- Type
"controlled" | "uncontrolled"- Requirement
- required
- Name
value- Kind
- property
- Type
readonly TValue[]- Requirement
- required
AccordionEvent
typetype AccordionEvent<TValue extends AccordionItemValue = string> = { readonly type: "TOGGLE"; readonly value: TValue; readonly reason: AccordionChangeReason;} | { readonly type: "MOVE"; readonly direction: -1 | 1;} | { readonly type: "HOME";} | { readonly type: "END";} | { readonly type: "FOCUS"; readonly value: TValue;} | { readonly type: "BLUR";} | { readonly type: "RESET";};AccordionInput
typetype AccordionInput<TValue extends AccordionItemValue = string> = { readonly items: readonly AccordionItem<TValue>[]; /** Default "single" — legacy. */ readonly type?: AccordionType; /** Controlled committed open list. Defining it fixes controlled mode at first start. */ readonly value?: readonly TValue[]; /** Uncontrolled initial committed open list. */ readonly defaultValue?: readonly TValue[]; /** Default true — legacy: the open single item can always close. */ readonly collapsible?: boolean;};collapsiblebooleandefaultValuereadonly TValue[]itemsreadonly AccordionItem<TValue>[]typeAccordionTypevaluereadonly TValue[]- Name
collapsible- Kind
- property
- Type
boolean- Requirement
- optional
- Description
- Default true — legacy: the open single item can always close.
- Name
defaultValue- Kind
- property
- Type
readonly TValue[]- Requirement
- optional
- Description
- Uncontrolled initial committed open list.
- Name
items- Kind
- property
- Type
readonly AccordionItem<TValue>[]- Requirement
- required
- Description
- —
- Name
type- Kind
- property
- Type
AccordionType- Requirement
- optional
- Description
- Default "single" — legacy.
- Name
value- Kind
- property
- Type
readonly TValue[]- Requirement
- optional
- Description
- Controlled committed open list. Defining it fixes controlled mode at first start.
AccordionItem
interfaceinterface AccordionItem<TValue extends AccordionItemValue = string> { readonly value: TValue; readonly disabled?: boolean;}disabledbooleanvalueTValue- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
- Name
value- Kind
- property
- Type
TValue- Requirement
- required
AccordionItemValue
typetype AccordionItemValue = string;accordionMachine
valueexport declare const accordionMachine: AccordionMachine;AccordionMount
interfaceinterface AccordionMount { readonly service: AccordionService; readonly connector: AccordionApi; readonly root: HTMLElement; destroy(): void;}connectorAccordionApidestroy() => voidrootHTMLElementserviceAccordionService- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
destroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
root- Kind
- property
- Type
HTMLElement- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
AccordionPart
typetype AccordionPart = (typeof accordionAnatomy.parts)[number];accordionSelectors
valueexport declare const accordionSelectors: { value: (snapshot: AccordionSnapshot) => readonly string[]; focusedValue: (snapshot: AccordionSnapshot) => string | undefined; isOpen: (snapshot: AccordionSnapshot, itemValue: AccordionItemValue) => boolean;};focusedValue(snapshot: AccordionSnapshot) => string | undefinedisOpen(snapshot: AccordionSnapshot, itemValue: AccordionItemValue) => booleanvalue(snapshot: AccordionSnapshot) => readonly string[]- Name
focusedValue- Kind
- property
- Type
(snapshot: AccordionSnapshot) => string | undefined- Requirement
- required
- Name
isOpen- Kind
- property
- Type
(snapshot: AccordionSnapshot, itemValue: AccordionItemValue) => boolean- Requirement
- required
- Name
value- Kind
- property
- Type
(snapshot: AccordionSnapshot) => readonly string[]- Requirement
- required
AccordionService
typetype AccordionService<TValue extends AccordionItemValue = string> = Service<AccordionInput<TValue>, AccordionStateValue, AccordionContext<TValue>, AccordionEvent<TValue>, AccordionCommand<TValue>>;AccordionSnapshot
typetype AccordionSnapshot<TValue extends AccordionItemValue = string> = Snapshot<AccordionStateValue, AccordionContext<TValue>>;AccordionStateValue
typetype AccordionStateValue = "ready";AccordionType
typetype AccordionType = "single" | "multiple";AccordionValueChangeDetail
interfaceinterface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
connectAccordion
functiondeclare function connectAccordion<TValue extends AccordionItemValue = string>(service: AccordionService<TValue>, scope: PartScope, _options?: AccordionConnectOptions): AccordionApi<TValue>;serviceAccordionService<TValue>scopePartScope_optionsAccordionConnectOptionsreturnAccordionApi<TValue>- Name
service- Kind
- parameter
- Type
AccordionService<TValue>- Requirement
- required
- Name
scope- Kind
- parameter
- Type
PartScope- Requirement
- required
- Name
_options- Kind
- parameter
- Type
AccordionConnectOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
AccordionApi<TValue>- Requirement
- n/a
mountAccordion
functiondeclare function mountAccordion(container: HTMLElement, options: MountAccordionOptions): AccordionMount;containerHTMLElementoptionsMountAccordionOptionsreturnAccordionMount- Name
container- Kind
- parameter
- Type
HTMLElement- Requirement
- required
- Name
options- Kind
- parameter
- Type
MountAccordionOptions- Requirement
- required
- Name
return- Kind
- return value
- Type
AccordionMount- Requirement
- n/a
MountAccordionOptions
interfaceinterface MountAccordionOptions extends AccordionInput { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void; /** Render callback for one trigger's content; default = item.value as textContent. */ readonly renderTrigger?: (button: HTMLElement, item: AccordionItem) => void; /** Render callback for one panel's content; default = item.value as textContent. */ readonly renderContent?: (panel: HTMLElement, item: AccordionItem) => void;}onValueChange(detail: AccordionValueChangeDetail) => voidrenderContent(panel: HTMLElement, item: AccordionItem) => voidrenderTrigger(button: HTMLElement, item: AccordionItem) => void- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
- Description
- —
- Name
renderContent- Kind
- property
- Type
(panel: HTMLElement, item: AccordionItem) => void- Requirement
- optional
- Description
- Render callback for one panel's content; default = item.value as textContent.
- Name
renderTrigger- Kind
- property
- Type
(button: HTMLElement, item: AccordionItem) => void- Requirement
- optional
- Description
- Render callback for one trigger's content; default = item.value as textContent.
runAccordionCommand
functionAccordion-shaped command runner — mirrors `runTabsCommand`. Pass this as the `runCommand` option when constructing the Accordion `Service` (never called by `connectAccordion` itself, which stays a pure prop-getter factory). Resolves `FOCUS_ITEM` against `scope.get("trigger", key)` (Accordion registers its roving-focus target under part `"trigger"`, exactly like Tabs) and forwards `VALUE_CHANGE_REQUEST` to an optional `onValueChange` callback.
declare function runAccordionCommand<TValue extends AccordionItemValue = string>(command: AccordionCommand<TValue>, scope: PartScope, options?: { readonly onValueChange?: (detail: { value: readonly TValue[]; reason: AccordionChangeReason; }) => void;}): void;commandAccordionCommand<TValue>scopePartScopeoptions{
readonly onValueChange?: (detail: {
value: readonly TValue[];
reason: AccordionChangeReason;
}) => void;
}returnvoid- Name
command- Kind
- parameter
- Type
AccordionCommand<TValue>- Requirement
- required
- Name
scope- Kind
- parameter
- Type
PartScope- Requirement
- required
- Name
options- Kind
- parameter
- Type
{ readonly onValueChange?: (detail: { value: readonly TValue[]; reason: AccordionChangeReason; }) => void; }- Requirement
- optional
- Name
return- Kind
- return value
- Type
void- Requirement
- n/a
Framework adapters
Each panel keeps its adapter's public vocabulary. React compound exports, Vue composables, standalone Angular declarations, Svelte components, and Solid hooks stay native to their framework.
React imports
import { Accordion, Content, Heading, Item, Root, Trigger } from "@grassroot/ui-headless-react/accordion";Vue imports
<script setup lang="ts">import { AccordionContent, AccordionHeading, AccordionItem, AccordionRoot, AccordionTrigger } from "@grassroot/ui-headless-vue/accordion";</script>Angular imports
import { Component } from "@angular/core";import { GR_ACCORDION_DECLARATIONS } from "@grassroot/ui-headless-angular/accordion"; @Component({ standalone: true, imports: [GR_ACCORDION_DECLARATIONS], template: `<!-- compose the accordion parts here -->` })export class Example {}Solid imports
import { AccordionContent, AccordionHeading, AccordionItem, AccordionRoot, AccordionTrigger } from "@grassroot/ui-headless-solid/accordion";@grassroot/ui-headless-react/accordion
React adapter
Accordion
valueexport declare const Accordion: { Root: import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>; Item: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>; Heading: import("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>; Trigger: import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>; Content: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;};Contentimport("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>Headingimport("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>Itemimport("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>Rootimport("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>Triggerimport("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>- Name
Content- Kind
- property
- Type
import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
Heading- Kind
- property
- Type
import("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>- Requirement
- required
- Name
Item- Kind
- property
- Type
import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
Root- Kind
- property
- Type
import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>- Requirement
- required
- Name
Trigger- Kind
- property
- Type
import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>- Requirement
- required
AccordionContentProps
interfaceinterface AccordionContentProps extends ComponentPropsWithoutRef<"div"> { readonly asChild?: boolean; readonly item: AccordionItem<AccordionItemValue>;}asChildbooleanitemAccordionItem<AccordionItemValue>- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItem<AccordionItemValue>- Requirement
- required
AccordionContext
valueexport declare const AccordionContext: import("react").Context<AccordionContextValue | null>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
AccordionContextValue
interfaceinterface AccordionContextValue { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope;}connectorAccordionApiscopePartScopeserviceAccordionService- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
AccordionHeadingProps
interfaceinterface AccordionHeadingProps extends ComponentPropsWithoutRef<"h3"> { readonly asChild?: boolean; readonly item: AccordionItem<AccordionItemValue>;}asChildbooleanitemAccordionItem<AccordionItemValue>- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItem<AccordionItemValue>- Requirement
- required
AccordionItemProps
interfaceinterface AccordionItemProps extends ComponentPropsWithoutRef<"div"> { readonly asChild?: boolean; readonly item: AccordionItem<AccordionItemValue>;}asChildbooleanitemAccordionItem<AccordionItemValue>- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItem<AccordionItemValue>- Requirement
- required
AccordionRootProps
interfaceinterface AccordionRootProps extends Omit<ComponentPropsWithoutRef<"div">, "value" | "defaultValue" | "onChange"> { readonly asChild?: boolean; readonly items: AccordionInput["items"]; readonly type?: AccordionInput["type"]; readonly value?: AccordionInput["value"]; readonly defaultValue?: AccordionInput["defaultValue"]; readonly collapsible?: AccordionInput["collapsible"]; readonly onValueChange?: (detail: AccordionValueChangeDetail) => void; readonly children?: ReactNode;}asChildbooleanchildrenReactNodecollapsibleAccordionInput["collapsible"]defaultValueAccordionInput["defaultValue"]itemsAccordionInput["items"]onValueChange(detail: AccordionValueChangeDetail) => voidtypeAccordionInput["type"]valueAccordionInput["value"]- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
children- Kind
- property
- Type
ReactNode- Requirement
- optional
- Name
collapsible- Kind
- property
- Type
AccordionInput["collapsible"]- Requirement
- optional
- Name
defaultValue- Kind
- property
- Type
AccordionInput["defaultValue"]- Requirement
- optional
- Name
items- Kind
- property
- Type
AccordionInput["items"]- Requirement
- required
- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
- Name
type- Kind
- property
- Type
AccordionInput["type"]- Requirement
- optional
- Name
value- Kind
- property
- Type
AccordionInput["value"]- Requirement
- optional
AccordionTriggerProps
interfaceinterface AccordionTriggerProps extends Omit<ComponentPropsWithoutRef<"button">, "type"> { readonly asChild?: boolean; readonly item: AccordionItem<AccordionItemValue>;}asChildbooleanitemAccordionItem<AccordionItemValue>- Name
asChild- Kind
- property
- Type
boolean- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItem<AccordionItemValue>- Requirement
- required
AccordionValueChangeDetail
interfaceinterface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
Content
valueexport declare const Content: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Heading
valueexport declare const Heading: import("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Item
valueexport declare const Item: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Root
valueexport declare const Root: import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
Trigger
valueexport declare const Trigger: import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;propsPreturnReactNode- Name
props- Kind
- parameter
- Type
P- Requirement
- required
- Name
return- Kind
- return value
- Type
ReactNode- Requirement
- n/a
useAccordion
functiondeclare function useAccordion(input: AccordionInput, options?: UseAccordionOptions): UseAccordionResult;inputAccordionInputoptionsUseAccordionOptionsreturnUseAccordionResult- Name
input- Kind
- parameter
- Type
AccordionInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseAccordionOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseAccordionResult- Requirement
- n/a
useAccordionContext
functiondeclare function useAccordionContext(partName: string): AccordionContextValue;partNamestringreturnAccordionContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
AccordionContextValue- Requirement
- n/a
UseAccordionOptions
interfaceinterface UseAccordionOptions { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;}onValueChange(detail: AccordionValueChangeDetail) => void- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
UseAccordionResult
interfaceinterface UseAccordionResult { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; readonly snapshot: AccordionSnapshot;}connectorAccordionApiscopePartScopeserviceAccordionServicesnapshotAccordionSnapshot- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
AccordionSnapshot- Requirement
- required
useServiceVersion
functionSubscribes a component to a service's committed-snapshot version.
declare function useServiceVersion<S extends Service<any, any, any, any, any, any>>(service: S): ReturnType<S["getSnapshot"]>;serviceSreturnReturnType<S["getSnapshot"]>- Name
service- Kind
- parameter
- Type
S- Requirement
- required
- Name
return- Kind
- return value
- Type
ReturnType<S["getSnapshot"]>- Requirement
- n/a
@grassroot/ui-headless-vue/accordion
Vue adapter
AccordionContent
valueexport declare const AccordionContent: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;AccordionContextKey
valueexport declare const AccordionContextKey: InjectionKey<AccordionContextValue>;AccordionContextValue
interfaceinterface AccordionContextValue { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; /** Bumped on every committed machine update; parts read `.value` to establish a reactive dependency. */ readonly snapshot: ShallowRef<AccordionSnapshot>;}connectorAccordionApiscopePartScopeserviceAccordionServicesnapshotShallowRef<AccordionSnapshot>- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Description
- —
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Description
- —
- Name
snapshot- Kind
- property
- Type
ShallowRef<AccordionSnapshot>- Requirement
- required
- Description
- Bumped on every committed machine update; parts read `.value` to establish a reactive dependency.
AccordionHeading
valueexport declare const AccordionHeading: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;AccordionItem
valueexport declare const AccordionItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;AccordionRoot
valueexport declare const AccordionRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; items: { type: PropType<AccordionInput["items"]>; required: true; }; type: { type: PropType<AccordionInput["type"]>; default: undefined; }; value: { type: PropType<readonly AccordionItemValue[] | undefined>; default: undefined; }; defaultValue: { type: PropType<readonly AccordionItemValue[] | undefined>; default: undefined; }; collapsible: { type: PropType<boolean | undefined>; default: undefined; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, { valueChange: (_detail: AccordionValueChangeDetail) => true;}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; items: { type: PropType<AccordionInput["items"]>; required: true; }; type: { type: PropType<AccordionInput["type"]>; default: undefined; }; value: { type: PropType<readonly AccordionItemValue[] | undefined>; default: undefined; }; defaultValue: { type: PropType<readonly AccordionItemValue[] | undefined>; default: undefined; }; collapsible: { type: PropType<boolean | undefined>; default: undefined; };}>> & Readonly<{ onValueChange?: ((_detail: AccordionValueChangeDetail) => any) | undefined;}>, { asChild: boolean; type: import("@grassroot/ui-machines/accordion").AccordionType | undefined; value: readonly string[] | undefined; defaultValue: readonly string[] | undefined; collapsible: boolean | undefined;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;AccordionTrigger
valueexport declare const AccordionTrigger: import("vue").DefineComponent<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, { [key: string]: any;}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{ asChild: { type: BooleanConstructor; default: boolean; }; item: { type: PropType<AccordionItem$1>; required: true; };}>> & Readonly<{}>, { asChild: boolean;}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;AccordionValueChangeDetail
interfaceinterface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
useAccordion
functiondeclare function useAccordion(input: AccordionInput | (() => AccordionInput), options?: UseAccordionOptions): UseAccordionResult;inputAccordionInput | (() => AccordionInput)optionsUseAccordionOptionsreturnUseAccordionResult- Name
input- Kind
- parameter
- Type
AccordionInput | (() => AccordionInput)- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseAccordionOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseAccordionResult- Requirement
- n/a
useAccordionContext
functiondeclare function useAccordionContext(partName: string): AccordionContextValue;partNamestringreturnAccordionContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
AccordionContextValue- Requirement
- n/a
UseAccordionOptions
interfaceinterface UseAccordionOptions { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;}onValueChange(detail: AccordionValueChangeDetail) => void- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
UseAccordionResult
interfaceinterface UseAccordionResult { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; readonly snapshot: ShallowRef<AccordionSnapshot>;}connectorAccordionApiscopePartScopeserviceAccordionServicesnapshotShallowRef<AccordionSnapshot>- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
ShallowRef<AccordionSnapshot>- Requirement
- required
@grassroot/ui-headless-angular/accordion
Angular adapter
ACCORDION_STORE
valueexport declare const ACCORDION_STORE: InjectionToken<AccordionStore>;AccordionStore
interfaceexport interface AccordionStore { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Effects that read the * connector's prop bags must read this signal first — inside the same * `effect()` — so Angular's reactivity re-runs the effect on every * committed change (the staleness bug class called out across every * other adapter). */ readonly version: WritableSignal<number>; /** Starts the underlying service (idempotent) — call from the browser only. */ start(): void; /** Stops the underlying service (idempotent). */ stop(): void; /** Forwards a new committed input to the machine (no-op on the very first call). */ sync(input: AccordionInput): void;}connectorAccordionApiscopePartScopeserviceAccordionServicestart() => voidstop() => voidsync(input: AccordionInput) => voidversionWritableSignal<number>- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Description
- —
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Description
- —
- Name
start- Kind
- method
- Type
() => void- Requirement
- required
- Description
- Starts the underlying service (idempotent) — call from the browser only.
- Name
stop- Kind
- method
- Type
() => void- Requirement
- required
- Description
- Stops the underlying service (idempotent).
- Name
sync- Kind
- method
- Type
(input: AccordionInput) => void- Requirement
- required
- Description
- Forwards a new committed input to the machine (no-op on the very first call).
- Name
version- Kind
- property
- Type
WritableSignal<number>- Requirement
- required
- Description
- Bumped on every committed machine update. Effects that read the connector's prop bags must read this signal first — inside the same `effect()` — so Angular's reactivity re-runs the effect on every committed change (the staleness bug class called out across every other adapter).
AccordionValueChangeDetail
interfaceexport interface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
createAccordionStore
functionexport declare function createAccordionStore(initialInput: AccordionInput, options?: CreateAccordionStoreOptions): AccordionStore;initialInputAccordionInputoptionsCreateAccordionStoreOptionsreturnAccordionStore- Name
initialInput- Kind
- parameter
- Type
AccordionInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
CreateAccordionStoreOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
AccordionStore- Requirement
- n/a
CreateAccordionStoreOptions
interfaceexport interface CreateAccordionStoreOptions { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void; /** * Called synchronously right after `version` is bumped on every committed * machine update — see `../tabs/use-tabs.ts`'s `CreateTabsStoreOptions.onCommit` * doc comment for the exact race it closes (Angular's zoneless `effect()` * flush vs. a script dispatching two events back to back). `GrAccordionRoot` * wires this to `ApplicationRef.tick()`. */ readonly onCommit?: () => void;}onCommit() => voidonValueChange(detail: AccordionValueChangeDetail) => void- Name
onCommit- Kind
- property
- Type
() => void- Requirement
- optional
- Description
- Called synchronously right after `version` is bumped on every committed machine update — see `../tabs/use-tabs.ts`'s `CreateTabsStoreOptions.onCommit` doc comment for the exact race it closes (Angular's zoneless `effect()` flush vs. a script dispatching two events back to back). `GrAccordionRoot` wires this to `ApplicationRef.tick()`.
- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
- Description
- —
export declare const GR_ACCORDION_DECLARATIONS: readonly [typeof GrAccordionRoot, typeof GrAccordionItem, typeof GrAccordionHeading, typeof GrAccordionTrigger, typeof GrAccordionContent];GrAccordionContent
classexport declare class GrAccordionContent implements OnDestroy { readonly item: import("@angular/core").InputSignal<AccordionItem<string>>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; private registeredKey; constructor(); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrAccordionContent, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrAccordionContent, "[grAccordionContent]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanyitemimport("@angular/core").InputSignal<AccordionItem<string>>listenersanyngOnDestroy() => voidɵdiri0.ɵɵDirectiveDeclaration<GrAccordionContent, "[grAccordionContent]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrAccordionContent, never>registeredKeyanystoreany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
item- Kind
- property
- Type
import("@angular/core").InputSignal<AccordionItem<string>>- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrAccordionContent, "[grAccordionContent]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrAccordionContent, never>- Requirement
- required
- Name
registeredKey- Kind
- property
- Type
any- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrAccordionHeading
classexport declare class GrAccordionHeading { readonly item: import("@angular/core").InputSignal<AccordionItem<string>>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration<GrAccordionHeading, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrAccordionHeading, "[grAccordionHeading]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanyitemimport("@angular/core").InputSignal<AccordionItem<string>>listenersanyɵdiri0.ɵɵDirectiveDeclaration<GrAccordionHeading, "[grAccordionHeading]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrAccordionHeading, never>storeany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
item- Kind
- property
- Type
import("@angular/core").InputSignal<AccordionItem<string>>- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrAccordionHeading, "[grAccordionHeading]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrAccordionHeading, never>- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrAccordionItem
classexport declare class GrAccordionItem { readonly item: import("@angular/core").InputSignal<AccordionItem<string>>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; constructor(); static ɵfac: i0.ɵɵFactoryDeclaration<GrAccordionItem, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrAccordionItem, "[grAccordionItem]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanyitemimport("@angular/core").InputSignal<AccordionItem<string>>listenersanyɵdiri0.ɵɵDirectiveDeclaration<GrAccordionItem, "[grAccordionItem]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrAccordionItem, never>storeany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
item- Kind
- property
- Type
import("@angular/core").InputSignal<AccordionItem<string>>- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrAccordionItem, "[grAccordionItem]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrAccordionItem, never>- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
GrAccordionRoot
classexport declare class GrAccordionRoot implements OnDestroy { readonly items: import("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/accordion").AccordionItem<string>[]>; readonly type: import("@angular/core").InputSignal<import("@grassroot/ui-machines/accordion").AccordionType | undefined>; readonly value: import("@angular/core").InputSignal<readonly string[] | undefined>; readonly defaultValue: import("@angular/core").InputSignal<readonly string[] | undefined>; readonly collapsible: import("@angular/core").InputSignal<boolean | undefined>; readonly valueChange: import("@angular/core").OutputEmitterRef<AccordionValueChangeDetail>; private readonly elementRef; private readonly injector; private readonly listeners; private lastSynced; readonly store: AccordionStore; constructor(); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrAccordionRoot, never>; static ɵcmp: i0.ɵɵComponentDeclaration<GrAccordionRoot, "gr-accordion-root", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>;}collapsibleimport("@angular/core").InputSignal<boolean | undefined>defaultValueimport("@angular/core").InputSignal<readonly string[] | undefined>elementRefanyinjectoranyitemsimport("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/accordion").AccordionItem<string>[]>lastSyncedanylistenersanyngOnDestroy() => voidɵcmpi0.ɵɵComponentDeclaration<GrAccordionRoot, "gr-accordion-root", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>ɵfaci0.ɵɵFactoryDeclaration<GrAccordionRoot, never>storeAccordionStoretypeimport("@angular/core").InputSignal<import("@grassroot/ui-machines/accordion").AccordionType | undefined>valueimport("@angular/core").InputSignal<readonly string[] | undefined>valueChangeimport("@angular/core").OutputEmitterRef<AccordionValueChangeDetail>- Name
collapsible- Kind
- property
- Type
import("@angular/core").InputSignal<boolean | undefined>- Requirement
- required
- Name
defaultValue- Kind
- property
- Type
import("@angular/core").InputSignal<readonly string[] | undefined>- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
injector- Kind
- property
- Type
any- Requirement
- required
- Name
items- Kind
- property
- Type
import("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/accordion").AccordionItem<string>[]>- Requirement
- required
- Name
lastSynced- Kind
- property
- Type
any- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
ɵcmp- Kind
- property
- Type
i0.ɵɵComponentDeclaration<GrAccordionRoot, "gr-accordion-root", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "defaultValue": { "alias": "defaultValue"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, ["*"], true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrAccordionRoot, never>- Requirement
- required
- Name
store- Kind
- property
- Type
AccordionStore- Requirement
- required
- Name
type- Kind
- property
- Type
import("@angular/core").InputSignal<import("@grassroot/ui-machines/accordion").AccordionType | undefined>- Requirement
- required
- Name
value- Kind
- property
- Type
import("@angular/core").InputSignal<readonly string[] | undefined>- Requirement
- required
- Name
valueChange- Kind
- property
- Type
import("@angular/core").OutputEmitterRef<AccordionValueChangeDetail>- Requirement
- required
GrAccordionTrigger
classexport declare class GrAccordionTrigger implements OnDestroy { readonly item: import("@angular/core").InputSignal<AccordionItem<string>>; private readonly store; private readonly elementRef; private readonly listeners; private readonly consumerProps; private registeredKey; constructor(); ngOnDestroy(): void; static ɵfac: i0.ɵɵFactoryDeclaration<GrAccordionTrigger, never>; static ɵdir: i0.ɵɵDirectiveDeclaration<GrAccordionTrigger, "[grAccordionTrigger]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;}consumerPropsanyelementRefanyitemimport("@angular/core").InputSignal<AccordionItem<string>>listenersanyngOnDestroy() => voidɵdiri0.ɵɵDirectiveDeclaration<GrAccordionTrigger, "[grAccordionTrigger]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>ɵfaci0.ɵɵFactoryDeclaration<GrAccordionTrigger, never>registeredKeyanystoreany- Name
consumerProps- Kind
- property
- Type
any- Requirement
- required
- Name
elementRef- Kind
- property
- Type
any- Requirement
- required
- Name
item- Kind
- property
- Type
import("@angular/core").InputSignal<AccordionItem<string>>- Requirement
- required
- Name
listeners- Kind
- property
- Type
any- Requirement
- required
- Name
ngOnDestroy- Kind
- method
- Type
() => void- Requirement
- required
- Name
ɵdir- Kind
- property
- Type
i0.ɵɵDirectiveDeclaration<GrAccordionTrigger, "[grAccordionTrigger]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>- Requirement
- required
- Name
ɵfac- Kind
- property
- Type
i0.ɵɵFactoryDeclaration<GrAccordionTrigger, never>- Requirement
- required
- Name
registeredKey- Kind
- property
- Type
any- Requirement
- required
- Name
store- Kind
- property
- Type
any- Requirement
- required
@grassroot/ui-headless-svelte/accordion
Svelte adapter
AccordionContent
componentexport { default as AccordionContent } from "./AccordionContent.svelte"AccordionContextValue
interfaceexport interface AccordionContextValue { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Parts must read this * (`ctx.version()`) *inside* the `$derived` that computes their prop * bag — not once at setup — so Svelte's fine-grained reactivity tracks * the dependency and recomputes on every committed change (mirrors the * Tabs adapter's equivalent staleness fix; see `../tabs/context.ts`). */ readonly version: () => number;}connectorAccordionApiscopePartScopeserviceAccordionServiceversion() => number- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Description
- —
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Description
- —
- Name
version- Kind
- property
- Type
() => number- Requirement
- required
- Description
- Bumped on every committed machine update. Parts must read this (`ctx.version()`) *inside* the `$derived` that computes their prop bag — not once at setup — so Svelte's fine-grained reactivity tracks the dependency and recomputes on every committed change (mirrors the Tabs adapter's equivalent staleness fix; see `../tabs/context.ts`).
AccordionHeading
componentexport { default as AccordionHeading } from "./AccordionHeading.svelte"AccordionItem
componentexport { default as AccordionItem } from "./AccordionItem.svelte"AccordionItemType
interfaceinterface AccordionItem<TValue extends AccordionItemValue = string> { readonly value: TValue; readonly disabled?: boolean;}disabledbooleanvalueTValue- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
- Name
value- Kind
- property
- Type
TValue- Requirement
- required
AccordionItemValue
typetype AccordionItemValue = string;AccordionRoot
componentexport { default as AccordionRoot } from "./AccordionRoot.svelte"AccordionTrigger
componentexport { default as AccordionTrigger } from "./AccordionTrigger.svelte"AccordionType
typetype AccordionType = "single" | "multiple";AccordionValueChangeDetail
interfaceexport interface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
createAccordion
functionexport declare function createAccordion(inputGetter: () => AccordionInput, options?: UseAccordionOptions): UseAccordionResult;inputGetter() => AccordionInputoptionsUseAccordionOptionsreturnUseAccordionResult- Name
inputGetter- Kind
- parameter
- Type
() => AccordionInput- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseAccordionOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseAccordionResult- Requirement
- n/a
useAccordionContext
functionexport declare function useAccordionContext(partName: string): AccordionContextValue;partNamestringreturnAccordionContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
AccordionContextValue- Requirement
- n/a
UseAccordionOptions
interfaceexport interface UseAccordionOptions { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;}onValueChange(detail: AccordionValueChangeDetail) => void- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
UseAccordionResult
interfaceexport interface UseAccordionResult { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; readonly version: () => number;}connectorAccordionApiscopePartScopeserviceAccordionServiceversion() => number- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Name
version- Kind
- property
- Type
() => number- Requirement
- required
@grassroot/ui-headless-solid/accordion
Solid adapter
AccordionContent
functionexport declare function AccordionContent(props: AccordionContentProps): JSX.Element;propsAccordionContentPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
AccordionContentProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
AccordionContentProps
interfaceexport interface AccordionContentProps extends JSX.HTMLAttributes<HTMLDivElement> { readonly as?: AsProp; readonly item: AccordionItemInput;}asAsPropitemAccordionItemInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItemInput- Requirement
- required
AccordionContext
valueexport declare const AccordionContext: import("solid-js").Context<AccordionContextValue | undefined>;AccordionContextValue
interfaceexport interface AccordionContextValue { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; /** * Bumped on every committed machine update. Parts must call this * accessor *inside* the JSX/spread thunk that reads the connector's prop * bags — not once at setup — so Solid's fine-grained reactivity tracks * the dependency and re-runs on every committed change. */ readonly snapshot: Accessor<AccordionSnapshot>;}connectorAccordionApiscopePartScopeserviceAccordionServicesnapshotAccessor<AccordionSnapshot>- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Description
- —
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Description
- —
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Description
- —
- Name
snapshot- Kind
- property
- Type
Accessor<AccordionSnapshot>- Requirement
- required
- Description
- Bumped on every committed machine update. Parts must call this accessor *inside* the JSX/spread thunk that reads the connector's prop bags — not once at setup — so Solid's fine-grained reactivity tracks the dependency and re-runs on every committed change.
AccordionHeading
functionexport declare function AccordionHeading(props: AccordionHeadingProps): JSX.Element;propsAccordionHeadingPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
AccordionHeadingProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
AccordionHeadingProps
interfaceexport interface AccordionHeadingProps extends JSX.HTMLAttributes<HTMLHeadingElement> { readonly as?: AsProp; readonly item: AccordionItemInput;}asAsPropitemAccordionItemInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItemInput- Requirement
- required
AccordionItem
functionexport declare function AccordionItem(props: AccordionItemProps): JSX.Element;propsAccordionItemPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
AccordionItemProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
AccordionItemInput
interfaceinterface AccordionItem<TValue extends AccordionItemValue = string> { readonly value: TValue; readonly disabled?: boolean;}disabledbooleanvalueTValue- Name
disabled- Kind
- property
- Type
boolean- Requirement
- optional
- Name
value- Kind
- property
- Type
TValue- Requirement
- required
AccordionItemProps
interfaceexport interface AccordionItemProps extends JSX.HTMLAttributes<HTMLDivElement> { readonly as?: AsProp; readonly item: AccordionItemInput;}asAsPropitemAccordionItemInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItemInput- Requirement
- required
AccordionRoot
functionexport declare function AccordionRoot(props: AccordionRootProps): JSX.Element;propsAccordionRootPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
AccordionRootProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
AccordionRootProps
interfaceexport interface AccordionRootProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> { readonly as?: AsProp; readonly items: AccordionInput["items"]; readonly type?: AccordionInput["type"]; readonly value?: AccordionInput["value"]; readonly defaultValue?: AccordionInput["defaultValue"]; readonly collapsible?: AccordionInput["collapsible"]; readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;}asAsPropcollapsibleAccordionInput["collapsible"]defaultValueAccordionInput["defaultValue"]itemsAccordionInput["items"]onValueChange(detail: AccordionValueChangeDetail) => voidtypeAccordionInput["type"]valueAccordionInput["value"]- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
collapsible- Kind
- property
- Type
AccordionInput["collapsible"]- Requirement
- optional
- Name
defaultValue- Kind
- property
- Type
AccordionInput["defaultValue"]- Requirement
- optional
- Name
items- Kind
- property
- Type
AccordionInput["items"]- Requirement
- required
- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
- Name
type- Kind
- property
- Type
AccordionInput["type"]- Requirement
- optional
- Name
value- Kind
- property
- Type
AccordionInput["value"]- Requirement
- optional
AccordionTrigger
functionexport declare function AccordionTrigger(props: AccordionTriggerProps): JSX.Element;propsAccordionTriggerPropsreturnJSX.Element- Name
props- Kind
- parameter
- Type
AccordionTriggerProps- Requirement
- required
- Name
return- Kind
- return value
- Type
JSX.Element- Requirement
- n/a
AccordionTriggerProps
interfaceexport interface AccordionTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> { readonly as?: AsProp; readonly item: AccordionItemInput;}asAsPropitemAccordionItemInput- Name
as- Kind
- property
- Type
AsProp- Requirement
- optional
- Name
item- Kind
- property
- Type
AccordionItemInput- Requirement
- required
AccordionValueChangeDetail
interfaceexport interface AccordionValueChangeDetail { readonly value: readonly string[]; readonly reason: AccordionChangeReason;}reasonAccordionChangeReasonvaluereadonly string[]- Name
reason- Kind
- property
- Type
AccordionChangeReason- Requirement
- required
- Name
value- Kind
- property
- Type
readonly string[]- Requirement
- required
useAccordion
functionexport declare function useAccordion(input: Accessor<AccordionInput>, options?: UseAccordionOptions): UseAccordionResult;inputAccessor<AccordionInput>optionsUseAccordionOptionsreturnUseAccordionResult- Name
input- Kind
- parameter
- Type
Accessor<AccordionInput>- Requirement
- required
- Name
options- Kind
- parameter
- Type
UseAccordionOptions- Requirement
- optional
- Name
return- Kind
- return value
- Type
UseAccordionResult- Requirement
- n/a
useAccordionContext
functionexport declare function useAccordionContext(partName: string): AccordionContextValue;partNamestringreturnAccordionContextValue- Name
partName- Kind
- parameter
- Type
string- Requirement
- required
- Name
return- Kind
- return value
- Type
AccordionContextValue- Requirement
- n/a
UseAccordionOptions
interfaceexport interface UseAccordionOptions { readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;}onValueChange(detail: AccordionValueChangeDetail) => void- Name
onValueChange- Kind
- property
- Type
(detail: AccordionValueChangeDetail) => void- Requirement
- optional
UseAccordionResult
interfaceexport interface UseAccordionResult { readonly service: AccordionService; readonly connector: AccordionApi; readonly scope: PartScope; readonly snapshot: Accessor<AccordionSnapshot>;}connectorAccordionApiscopePartScopeserviceAccordionServicesnapshotAccessor<AccordionSnapshot>- Name
connector- Kind
- property
- Type
AccordionApi- Requirement
- required
- Name
scope- Kind
- property
- Type
PartScope- Requirement
- required
- Name
service- Kind
- property
- Type
AccordionService- Requirement
- required
- Name
snapshot- Kind
- property
- Type
Accessor<AccordionSnapshot>- Requirement
- required