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

23 exports
View source packages/ui-headless/core/src/accordion/index.ts
DeclarationView source
accordionAnatomyts
export declare const accordionAnatomy: {
readonly scope: "accordion";
readonly parts: readonly ["root", "item", "heading", "trigger", "content"];
};
Name
Kind
Type
Requirement
parts
property
readonly ["root", "item", "heading", "trigger", "content"]
required
scope
property
"accordion"
required
Name
parts
Kind
property
Type
readonly ["root", "item", "heading", "trigger", "content"]
Requirement
required
Name
scope
Kind
property
Type
"accordion"
Requirement
required

AccordionApi

interface
DeclarationView source
AccordionApits
interface 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;
}
Name
Kind
Type
Requirement
contentProps
method
(item: AccordionItem<TValue>) => PartProps
required
focusedValue
property
TValue | undefined
required
headingProps
method
(item: AccordionItem<TValue>) => PartProps
required
itemProps
method
(item: AccordionItem<TValue>) => PartProps
required
rootProps
method
() => PartProps
required
triggerProps
method
(item: AccordionItem<TValue>) => PartProps
required
value
property
readonly TValue[]
required
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
DeclarationView source
AccordionChangeReasonts
type AccordionChangeReason = "pointer" | "keyboard" | "programmatic";
DeclarationView source
AccordionCommandts
type 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;
});
DeclarationView source
AccordionConnectOptionsts
interface AccordionConnectOptions {}
DeclarationView source
AccordionContextts
type AccordionContext<TValue extends AccordionItemValue = string> = {
readonly value: readonly TValue[];
readonly focusedValue?: TValue;
readonly mode: "controlled" | "uncontrolled";
};
Name
Kind
Type
Requirement
focusedValue
property
TValue
optional
mode
property
"controlled" | "uncontrolled"
required
value
property
readonly TValue[]
required
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
DeclarationView source
AccordionEventts
type 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";
};
DeclarationView source
AccordionInputts
type 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;
};
Name
Kind
Type
Requirement
Description
collapsible
property
boolean
optional
Default true — legacy: the open single item can always close.
defaultValue
property
readonly TValue[]
optional
Uncontrolled initial committed open list.
items
property
readonly AccordionItem<TValue>[]
required
type
property
AccordionType
optional
Default "single" — legacy.
value
property
readonly TValue[]
optional
Controlled committed open list. Defining it fixes controlled mode at first start.
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

interface
DeclarationView source
AccordionItemts
interface AccordionItem<TValue extends AccordionItemValue = string> {
readonly value: TValue;
readonly disabled?: boolean;
}
Name
Kind
Type
Requirement
disabled
property
boolean
optional
value
property
TValue
required
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Name
value
Kind
property
Type
TValue
Requirement
required
DeclarationView source
AccordionItemValuets
type AccordionItemValue = string;
DeclarationView source
accordionMachinets
export declare const accordionMachine: AccordionMachine;

AccordionMount

interface
DeclarationView source
AccordionMountts
interface AccordionMount {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly root: HTMLElement;
destroy(): void;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
destroy
method
() => void
required
root
property
HTMLElement
required
service
property
AccordionService
required
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
DeclarationView source
AccordionPartts
type AccordionPart = (typeof accordionAnatomy.parts)[number];
DeclarationView source
accordionSelectorsts
export declare const accordionSelectors: {
value: (snapshot: AccordionSnapshot) => readonly string[];
focusedValue: (snapshot: AccordionSnapshot) => string | undefined;
isOpen: (snapshot: AccordionSnapshot, itemValue: AccordionItemValue) => boolean;
};
Name
Kind
Type
Requirement
focusedValue
property
(snapshot: AccordionSnapshot) => string | undefined
required
isOpen
property
(snapshot: AccordionSnapshot, itemValue: AccordionItemValue) => boolean
required
value
property
(snapshot: AccordionSnapshot) => readonly string[]
required
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
DeclarationView source
AccordionServicets
type AccordionService<TValue extends AccordionItemValue = string> = Service<AccordionInput<TValue>, AccordionStateValue, AccordionContext<TValue>, AccordionEvent<TValue>, AccordionCommand<TValue>>;
DeclarationView source
AccordionSnapshotts
type AccordionSnapshot<TValue extends AccordionItemValue = string> = Snapshot<AccordionStateValue, AccordionContext<TValue>>;
DeclarationView source
AccordionStateValuets
type AccordionStateValue = "ready";
DeclarationView source
AccordionTypets
type AccordionType = "single" | "multiple";
DeclarationView source
AccordionValueChangeDetailts
interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required

connectAccordion

function
DeclarationView source
connectAccordionts
declare function connectAccordion<TValue extends AccordionItemValue = string>(service: AccordionService<TValue>, scope: PartScope, _options?: AccordionConnectOptions): AccordionApi<TValue>;
Name
Kind
Type
Requirement
service
parameter
AccordionService<TValue>
required
scope
parameter
PartScope
required
_options
parameter
AccordionConnectOptions
optional
return
return value
AccordionApi<TValue>
n/a
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

function
DeclarationView source
mountAccordionts
declare function mountAccordion(container: HTMLElement, options: MountAccordionOptions): AccordionMount;
Name
Kind
Type
Requirement
container
parameter
HTMLElement
required
options
parameter
MountAccordionOptions
required
return
return value
AccordionMount
n/a
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
DeclarationView source
MountAccordionOptionsts
interface 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;
}
Name
Kind
Type
Requirement
Description
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
renderContent
property
(panel: HTMLElement, item: AccordionItem) => void
optional
Render callback for one panel's content; default = item.value as textContent.
renderTrigger
property
(button: HTMLElement, item: AccordionItem) => void
optional
Render callback for one trigger's content; default = item.value as textContent.
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.

Accordion-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.

DeclarationView source
runAccordionCommandts
declare function runAccordionCommand<TValue extends AccordionItemValue = string>(command: AccordionCommand<TValue>, scope: PartScope, options?: {
readonly onValueChange?: (detail: {
value: readonly TValue[];
reason: AccordionChangeReason;
}) => void;
}): void;
Name
Kind
Type
Requirement
command
parameter
AccordionCommand<TValue>
required
scope
parameter
PartScope
required
options
parameter
{ readonly onValueChange?: (detail: { value: readonly TValue[]; reason: AccordionChangeReason; }) => void; }
optional
return
return value
void
n/a
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 example follows below.

React imports

@grassroot/ui-headless-react/accordionts
import { Accordion, Content, Heading, Item, Root, Trigger } from "@grassroot/ui-headless-react/accordion";

Vue imports

@grassroot/ui-headless-vue/accordionts
<script setup lang="ts">
import { AccordionContent, AccordionHeading, AccordionItem, AccordionRoot, AccordionTrigger } from "@grassroot/ui-headless-vue/accordion";
</script>

Angular imports

@grassroot/ui-headless-angular/accordionts
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

@grassroot/ui-headless-solid/accordionts
import { AccordionContent, AccordionHeading, AccordionItem, AccordionRoot, AccordionTrigger } from "@grassroot/ui-headless-solid/accordion";

@grassroot/ui-headless-react/accordion

React adapter

19 exports
View source packages/ui-headless/react/src/accordion/index.ts

Accordion

value
DeclarationView source
Accordionts
export 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>>;
};
Name
Kind
Type
Requirement
Content
property
import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>
required
Heading
property
import("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>
required
Item
property
import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>
required
Root
property
import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>
required
Trigger
property
import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>
required
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
DeclarationView source
AccordionContentPropsts
interface AccordionContentProps extends ComponentPropsWithoutRef<"div"> {
readonly asChild?: boolean;
readonly item: AccordionItem<AccordionItemValue>;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
item
property
AccordionItem<AccordionItemValue>
required
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
item
Kind
property
Type
AccordionItem<AccordionItemValue>
Requirement
required
DeclarationView source
AccordionContextts
export declare const AccordionContext: import("react").Context<AccordionContextValue | null>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a
DeclarationView source
AccordionContextValuets
interface AccordionContextValue {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
Name
connector
Kind
property
Type
AccordionApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
AccordionService
Requirement
required
DeclarationView source
AccordionHeadingPropsts
interface AccordionHeadingProps extends ComponentPropsWithoutRef<"h3"> {
readonly asChild?: boolean;
readonly item: AccordionItem<AccordionItemValue>;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
item
property
AccordionItem<AccordionItemValue>
required
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
item
Kind
property
Type
AccordionItem<AccordionItemValue>
Requirement
required

AccordionItemProps

interface
DeclarationView source
AccordionItemPropsts
interface AccordionItemProps extends ComponentPropsWithoutRef<"div"> {
readonly asChild?: boolean;
readonly item: AccordionItem<AccordionItemValue>;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
item
property
AccordionItem<AccordionItemValue>
required
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
item
Kind
property
Type
AccordionItem<AccordionItemValue>
Requirement
required

AccordionRootProps

interface
DeclarationView source
AccordionRootPropsts
interface 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;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
children
property
ReactNode
optional
collapsible
property
AccordionInput["collapsible"]
optional
defaultValue
property
AccordionInput["defaultValue"]
optional
items
property
AccordionInput["items"]
required
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
type
property
AccordionInput["type"]
optional
value
property
AccordionInput["value"]
optional
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
DeclarationView source
AccordionTriggerPropsts
interface AccordionTriggerProps extends Omit<ComponentPropsWithoutRef<"button">, "type"> {
readonly asChild?: boolean;
readonly item: AccordionItem<AccordionItemValue>;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
item
property
AccordionItem<AccordionItemValue>
required
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
item
Kind
property
Type
AccordionItem<AccordionItemValue>
Requirement
required
DeclarationView source
AccordionValueChangeDetailts
interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required

Content

value
DeclarationView source
Contentts
export declare const Content: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a

Heading

value
DeclarationView source
Headingts
export declare const Heading: import("react").ForwardRefExoticComponent<AccordionHeadingProps & import("react").RefAttributes<HTMLHeadingElement>>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a

Item

value
DeclarationView source
Itemts
export declare const Item: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLDivElement>>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a

Root

value
DeclarationView source
Rootts
export declare const Root: import("react").ForwardRefExoticComponent<AccordionRootProps & import("react").RefAttributes<HTMLDivElement>>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a

Trigger

value
DeclarationView source
Triggerts
export declare const Trigger: import("react").ForwardRefExoticComponent<AccordionTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
Name
Kind
Type
Requirement
props
parameter
P
required
return
return value
ReactNode
n/a
Name
props
Kind
parameter
Type
P
Requirement
required
Name
return
Kind
return value
Type
ReactNode
Requirement
n/a

useAccordion

function
DeclarationView source
useAccordionts
declare function useAccordion(input: AccordionInput, options?: UseAccordionOptions): UseAccordionResult;
Name
Kind
Type
Requirement
input
parameter
AccordionInput
required
options
parameter
UseAccordionOptions
optional
return
return value
UseAccordionResult
n/a
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
DeclarationView source
useAccordionContextts
declare function useAccordionContext(partName: string): AccordionContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
AccordionContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
AccordionContextValue
Requirement
n/a
DeclarationView source
UseAccordionOptionsts
interface UseAccordionOptions {
readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;
}
Name
Kind
Type
Requirement
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
Name
onValueChange
Kind
property
Type
(detail: AccordionValueChangeDetail) => void
Requirement
optional

UseAccordionResult

interface
DeclarationView source
UseAccordionResultts
interface UseAccordionResult {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly scope: PartScope;
readonly snapshot: AccordionSnapshot;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
snapshot
property
AccordionSnapshot
required
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

Subscribes a component to a service's committed-snapshot version.

DeclarationView source
useServiceVersionts
declare function useServiceVersion<S extends Service<any, any, any, any, any, any>>(service: S): ReturnType<S["getSnapshot"]>;
Name
Kind
Type
Requirement
service
parameter
S
required
return
return value
ReturnType<S["getSnapshot"]>
n/a
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

12 exports
View source packages/ui-headless/vue/src/accordion/index.ts
DeclarationView source
AccordionContentts
export 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>;
DeclarationView source
AccordionContextKeyts
export declare const AccordionContextKey: InjectionKey<AccordionContextValue>;
DeclarationView source
AccordionContextValuets
interface 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>;
}
Name
Kind
Type
Requirement
Description
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
snapshot
property
ShallowRef<AccordionSnapshot>
required
Bumped on every committed machine update; parts read `.value` to establish a reactive dependency.
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.
DeclarationView source
AccordionHeadingts
export 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>;
DeclarationView source
AccordionItemts
export 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>;
DeclarationView source
AccordionRootts
export 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>;
DeclarationView source
AccordionTriggerts
export 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>;
DeclarationView source
AccordionValueChangeDetailts
interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required

useAccordion

function
DeclarationView source
useAccordionts
declare function useAccordion(input: AccordionInput | (() => AccordionInput), options?: UseAccordionOptions): UseAccordionResult;
Name
Kind
Type
Requirement
input
parameter
AccordionInput | (() => AccordionInput)
required
options
parameter
UseAccordionOptions
optional
return
return value
UseAccordionResult
n/a
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
DeclarationView source
useAccordionContextts
declare function useAccordionContext(partName: string): AccordionContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
AccordionContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
AccordionContextValue
Requirement
n/a
DeclarationView source
UseAccordionOptionsts
interface UseAccordionOptions {
readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;
}
Name
Kind
Type
Requirement
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
Name
onValueChange
Kind
property
Type
(detail: AccordionValueChangeDetail) => void
Requirement
optional

UseAccordionResult

interface
DeclarationView source
UseAccordionResultts
interface UseAccordionResult {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly scope: PartScope;
readonly snapshot: ShallowRef<AccordionSnapshot>;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
snapshot
property
ShallowRef<AccordionSnapshot>
required
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

11 exports
View source packages/ui-headless/angular/src/accordion/index.ts
DeclarationView source
ACCORDION_STOREts
export declare const ACCORDION_STORE: InjectionToken<AccordionStore>;

AccordionStore

interface
DeclarationView source
AccordionStorets
export 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;
}
Name
Kind
Type
Requirement
Description
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
start
method
() => void
required
Starts the underlying service (idempotent) — call from the browser only.
stop
method
() => void
required
Stops the underlying service (idempotent).
sync
method
(input: AccordionInput) => void
required
Forwards a new committed input to the machine (no-op on the very first call).
version
property
WritableSignal<number>
required
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).
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).
DeclarationView source
AccordionValueChangeDetailts
export interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required
DeclarationView source
createAccordionStorets
export declare function createAccordionStore(initialInput: AccordionInput, options?: CreateAccordionStoreOptions): AccordionStore;
Name
Kind
Type
Requirement
initialInput
parameter
AccordionInput
required
options
parameter
CreateAccordionStoreOptions
optional
return
return value
AccordionStore
n/a
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
DeclarationView source
CreateAccordionStoreOptionsts
export 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;
}
Name
Kind
Type
Requirement
Description
onCommit
property
() => void
optional
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()`.
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
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
DeclarationView source
GR_ACCORDION_DECLARATIONSts
export declare const GR_ACCORDION_DECLARATIONS: readonly [typeof GrAccordionRoot, typeof GrAccordionItem, typeof GrAccordionHeading, typeof GrAccordionTrigger, typeof GrAccordionContent];
DeclarationView source
GrAccordionContentts
export 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>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
item
property
import("@angular/core").InputSignal<AccordionItem<string>>
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrAccordionContent, "[grAccordionContent]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrAccordionContent, never>
required
registeredKey
property
any
required
store
property
any
required
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
DeclarationView source
GrAccordionHeadingts
export 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>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
item
property
import("@angular/core").InputSignal<AccordionItem<string>>
required
listeners
property
any
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrAccordionHeading, "[grAccordionHeading]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrAccordionHeading, never>
required
store
property
any
required
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
DeclarationView source
GrAccordionItemts
export 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>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
item
property
import("@angular/core").InputSignal<AccordionItem<string>>
required
listeners
property
any
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrAccordionItem, "[grAccordionItem]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrAccordionItem, never>
required
store
property
any
required
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
DeclarationView source
GrAccordionRootts
export 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>;
}
Name
Kind
Type
Requirement
collapsible
property
import("@angular/core").InputSignal<boolean | undefined>
required
defaultValue
property
import("@angular/core").InputSignal<readonly string[] | undefined>
required
elementRef
property
any
required
injector
property
any
required
items
property
import("@angular/core").InputSignal<readonly import("@grassroot/ui-machines/accordion").AccordionItem<string>[]>
required
lastSynced
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵcmp
property
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>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrAccordionRoot, never>
required
store
property
AccordionStore
required
type
property
import("@angular/core").InputSignal<import("@grassroot/ui-machines/accordion").AccordionType | undefined>
required
value
property
import("@angular/core").InputSignal<readonly string[] | undefined>
required
valueChange
property
import("@angular/core").OutputEmitterRef<AccordionValueChangeDetail>
required
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
DeclarationView source
GrAccordionTriggerts
export 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>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
item
property
import("@angular/core").InputSignal<AccordionItem<string>>
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrAccordionTrigger, "[grAccordionTrigger]", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrAccordionTrigger, never>
required
registeredKey
property
any
required
store
property
any
required
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

14 exports
View source packages/ui-headless/svelte/src/accordion/index.ts

AccordionContent

component
DeclarationView source
AccordionContentts
export { default as AccordionContent } from "./AccordionContent.svelte"
DeclarationView source
AccordionContextValuets
export 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;
}
Name
Kind
Type
Requirement
Description
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
version
property
() => number
required
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`).
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

component
DeclarationView source
AccordionHeadingts
export { default as AccordionHeading } from "./AccordionHeading.svelte"

AccordionItem

component
DeclarationView source
AccordionItemts
export { default as AccordionItem } from "./AccordionItem.svelte"

AccordionItemType

interface
DeclarationView source
AccordionItemTypets
interface AccordionItem<TValue extends AccordionItemValue = string> {
readonly value: TValue;
readonly disabled?: boolean;
}
Name
Kind
Type
Requirement
disabled
property
boolean
optional
value
property
TValue
required
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Name
value
Kind
property
Type
TValue
Requirement
required
DeclarationView source
AccordionItemValuets
type AccordionItemValue = string;

AccordionRoot

component
DeclarationView source
AccordionRootts
export { default as AccordionRoot } from "./AccordionRoot.svelte"

AccordionTrigger

component
DeclarationView source
AccordionTriggerts
export { default as AccordionTrigger } from "./AccordionTrigger.svelte"
DeclarationView source
AccordionTypets
type AccordionType = "single" | "multiple";
DeclarationView source
AccordionValueChangeDetailts
export interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required

createAccordion

function
DeclarationView source
createAccordionts
export declare function createAccordion(inputGetter: () => AccordionInput, options?: UseAccordionOptions): UseAccordionResult;
Name
Kind
Type
Requirement
inputGetter
parameter
() => AccordionInput
required
options
parameter
UseAccordionOptions
optional
return
return value
UseAccordionResult
n/a
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
DeclarationView source
useAccordionContextts
export declare function useAccordionContext(partName: string): AccordionContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
AccordionContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
AccordionContextValue
Requirement
n/a
DeclarationView source
UseAccordionOptionsts
export interface UseAccordionOptions {
readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;
}
Name
Kind
Type
Requirement
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
Name
onValueChange
Kind
property
Type
(detail: AccordionValueChangeDetail) => void
Requirement
optional

UseAccordionResult

interface
DeclarationView source
UseAccordionResultts
export interface UseAccordionResult {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly scope: PartScope;
readonly version: () => number;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
version
property
() => number
required
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

18 exports
View source packages/ui-headless/solid/src/accordion/index.ts

AccordionContent

function
DeclarationView source
AccordionContentts
export declare function AccordionContent(props: AccordionContentProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
AccordionContentProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
AccordionContentProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a
DeclarationView source
AccordionContentPropsts
export interface AccordionContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
readonly as?: AsProp;
readonly item: AccordionItemInput;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
item
property
AccordionItemInput
required
Name
as
Kind
property
Type
AsProp
Requirement
optional
Name
item
Kind
property
Type
AccordionItemInput
Requirement
required
DeclarationView source
AccordionContextts
export declare const AccordionContext: import("solid-js").Context<AccordionContextValue | undefined>;
DeclarationView source
AccordionContextValuets
export 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>;
}
Name
Kind
Type
Requirement
Description
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
snapshot
property
Accessor<AccordionSnapshot>
required
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.
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

function
DeclarationView source
AccordionHeadingts
export declare function AccordionHeading(props: AccordionHeadingProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
AccordionHeadingProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
AccordionHeadingProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a
DeclarationView source
AccordionHeadingPropsts
export interface AccordionHeadingProps extends JSX.HTMLAttributes<HTMLHeadingElement> {
readonly as?: AsProp;
readonly item: AccordionItemInput;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
item
property
AccordionItemInput
required
Name
as
Kind
property
Type
AsProp
Requirement
optional
Name
item
Kind
property
Type
AccordionItemInput
Requirement
required

AccordionItem

function
DeclarationView source
AccordionItemts
export declare function AccordionItem(props: AccordionItemProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
AccordionItemProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
AccordionItemProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

AccordionItemInput

interface
DeclarationView source
AccordionItemInputts
interface AccordionItem<TValue extends AccordionItemValue = string> {
readonly value: TValue;
readonly disabled?: boolean;
}
Name
Kind
Type
Requirement
disabled
property
boolean
optional
value
property
TValue
required
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Name
value
Kind
property
Type
TValue
Requirement
required

AccordionItemProps

interface
DeclarationView source
AccordionItemPropsts
export interface AccordionItemProps extends JSX.HTMLAttributes<HTMLDivElement> {
readonly as?: AsProp;
readonly item: AccordionItemInput;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
item
property
AccordionItemInput
required
Name
as
Kind
property
Type
AsProp
Requirement
optional
Name
item
Kind
property
Type
AccordionItemInput
Requirement
required

AccordionRoot

function
DeclarationView source
AccordionRootts
export declare function AccordionRoot(props: AccordionRootProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
AccordionRootProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
AccordionRootProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

AccordionRootProps

interface
DeclarationView source
AccordionRootPropsts
export 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;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
collapsible
property
AccordionInput["collapsible"]
optional
defaultValue
property
AccordionInput["defaultValue"]
optional
items
property
AccordionInput["items"]
required
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
type
property
AccordionInput["type"]
optional
value
property
AccordionInput["value"]
optional
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

function
DeclarationView source
AccordionTriggerts
export declare function AccordionTrigger(props: AccordionTriggerProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
AccordionTriggerProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
AccordionTriggerProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a
DeclarationView source
AccordionTriggerPropsts
export interface AccordionTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
readonly as?: AsProp;
readonly item: AccordionItemInput;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
item
property
AccordionItemInput
required
Name
as
Kind
property
Type
AsProp
Requirement
optional
Name
item
Kind
property
Type
AccordionItemInput
Requirement
required
DeclarationView source
AccordionValueChangeDetailts
export interface AccordionValueChangeDetail {
readonly value: readonly string[];
readonly reason: AccordionChangeReason;
}
Name
Kind
Type
Requirement
reason
property
AccordionChangeReason
required
value
property
readonly string[]
required
Name
reason
Kind
property
Type
AccordionChangeReason
Requirement
required
Name
value
Kind
property
Type
readonly string[]
Requirement
required

useAccordion

function
DeclarationView source
useAccordionts
export declare function useAccordion(input: Accessor<AccordionInput>, options?: UseAccordionOptions): UseAccordionResult;
Name
Kind
Type
Requirement
input
parameter
Accessor<AccordionInput>
required
options
parameter
UseAccordionOptions
optional
return
return value
UseAccordionResult
n/a
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
DeclarationView source
useAccordionContextts
export declare function useAccordionContext(partName: string): AccordionContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
AccordionContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
AccordionContextValue
Requirement
n/a
DeclarationView source
UseAccordionOptionsts
export interface UseAccordionOptions {
readonly onValueChange?: (detail: AccordionValueChangeDetail) => void;
}
Name
Kind
Type
Requirement
onValueChange
property
(detail: AccordionValueChangeDetail) => void
optional
Name
onValueChange
Kind
property
Type
(detail: AccordionValueChangeDetail) => void
Requirement
optional

UseAccordionResult

interface
DeclarationView source
UseAccordionResultts
export interface UseAccordionResult {
readonly service: AccordionService;
readonly connector: AccordionApi;
readonly scope: PartScope;
readonly snapshot: Accessor<AccordionSnapshot>;
}
Name
Kind
Type
Requirement
connector
property
AccordionApi
required
scope
property
PartScope
required
service
property
AccordionService
required
snapshot
property
Accessor<AccordionSnapshot>
required
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