DocsAPI referenceHeadlesscard

card 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/card

Core connector and vanilla API

9 exports
View source packages/ui-headless/core/src/card/index.ts

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

cardAnatomy

value
DeclarationView source
cardAnatomyts
export declare const cardAnatomy: {
readonly scope: "card";
readonly parts: readonly ["root", "media", "header", "eyebrow", "title", "description", "body", "footer"];
};
Name
Kind
Type
Requirement
parts
property
readonly ["root", "media", "header", "eyebrow", "title", "description", "body", "footer"]
required
scope
property
"card"
required
Name
parts
Kind
property
Type
readonly ["root", "media", "header", "eyebrow", "title", "description", "body", "footer"]
Requirement
required
Name
scope
Kind
property
Type
"card"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardPart

type
DeclarationView source
CardPartts
type CardPart = (typeof cardAnatomy.parts)[number];

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

connectCard

function
DeclarationView source
connectCardts
declare function connectCard(scope: PartScope, options?: CardConnectOptions): CardApi;
Name
Kind
Type
Requirement
scope
parameter
PartScope
required
options
parameter
CardConnectOptions
optional
return
return value
CardApi
n/a
Name
scope
Kind
parameter
Type
PartScope
Requirement
required
Name
options
Kind
parameter
Type
CardConnectOptions
Requirement
optional
Name
return
Kind
return value
Type
CardApi
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/cardts
import { Body, Card, Description, Eyebrow, Footer, Header, Media, Root } from "@grassroot/ui-headless-react/card"; // +1 more exports

Vue imports

@grassroot/ui-headless-vue/cardts
<script setup lang="ts">
import { CardBody, CardDescription, CardEyebrow, CardFooter, CardHeader, CardMedia, CardRoot, CardTitle } from "@grassroot/ui-headless-vue/card";
</script>

Angular imports

@grassroot/ui-headless-angular/cardts
import { Component } from "@angular/core";
import { GR_CARD_DECLARATIONS } from "@grassroot/ui-headless-angular/card";
@Component({ standalone: true, imports: [GR_CARD_DECLARATIONS], template: `<!-- compose the card parts here -->` })
export class Example {}

Svelte imports

@grassroot/ui-headless-svelte/cardts
<script lang="ts">
import { CardBody, CardDescription, CardEyebrow, CardFooter, CardHeader, CardMedia, CardRoot, CardTitle } from "@grassroot/ui-headless-svelte/card";
</script>

Solid imports

@grassroot/ui-headless-solid/cardts
import { CardBody, CardDescription, CardEyebrow, CardFooter, CardHeader, CardMedia, CardRoot, CardTitle } from "@grassroot/ui-headless-solid/card";

@grassroot/ui-headless-react/card

React adapter

20 exports
View source packages/ui-headless/react/src/card/index.ts

Body

value
DeclarationView source
Bodyts
export declare const Body: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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

Card

value
DeclarationView source
Cardts
export declare const Card: {
Root: import("react").ForwardRefExoticComponent<CardRootProps & import("react").RefAttributes<HTMLElement>>;
Media: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Header: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Eyebrow: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Title: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Description: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Body: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
Footer: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
};
Name
Kind
Type
Requirement
Body
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Description
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Eyebrow
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Header
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Media
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Root
property
import("react").ForwardRefExoticComponent<CardRootProps & import("react").RefAttributes<HTMLElement>>
required
Title
property
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
required
Name
Body
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Description
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Eyebrow
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Footer
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Header
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Media
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Root
Kind
property
Type
import("react").ForwardRefExoticComponent<CardRootProps & import("react").RefAttributes<HTMLElement>>
Requirement
required
Name
Title
Kind
property
Type
import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>
Requirement
required

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description

CardContext

value
DeclarationView source
CardContextts
export declare const CardContext: import("react").Context<CardContextValue | 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

CardContextValue

interface
DeclarationView source
CardContextValuets
interface CardContextValue {
readonly connector: CardApi;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
CardApi
required
scope
property
PartScope
required
Name
connector
Kind
property
Type
CardApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardPartProps

interface
DeclarationView source
CardPartPropsts
interface CardPartProps extends ComponentPropsWithoutRef<"div"> {
readonly asChild?: boolean;
readonly children?: ReactNode;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
children
property
ReactNode
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
children
Kind
property
Type
ReactNode
Requirement
optional

CardRootProps

interface
DeclarationView source
CardRootPropsts
interface CardRootProps extends Omit<ComponentPropsWithoutRef<"div">, "onSelect">, CardConnectOptions {
readonly asChild?: boolean;
readonly children?: ReactNode;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
children
property
ReactNode
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Name
children
Kind
property
Type
ReactNode
Requirement
optional

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

Description

value
DeclarationView source
Descriptionts
export declare const Description: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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

Eyebrow

value
DeclarationView source
Eyebrowts
export declare const Eyebrow: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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

Header

value
DeclarationView source
Headerts
export declare const Header: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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

Media

value
DeclarationView source
Mediats
export declare const Media: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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<CardRootProps & import("react").RefAttributes<HTMLElement>>;
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

Title

value
DeclarationView source
Titlets
export declare const Title: import("react").ForwardRefExoticComponent<CardPartProps & import("react").RefAttributes<HTMLElement>>;
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

useCardContext

function
DeclarationView source
useCardContextts
declare function useCardContext(partName: string): CardContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
CardContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
CardContextValue
Requirement
n/a

@grassroot/ui-headless-vue/card

Vue adapter

17 exports
View source packages/ui-headless/vue/src/card/index.ts

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardBody

value
DeclarationView source
CardBodyts
export declare const CardBody: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description
DeclarationView source
CardContextKeyts
export declare const CardContextKey: InjectionKey<CardContextValue>;

CardContextValue

interface
DeclarationView source
CardContextValuets
interface CardContextValue {
readonly connector: CardApi;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
CardApi
required
scope
property
PartScope
required
Name
connector
Kind
property
Type
CardApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
DeclarationView source
CardDescriptionts
export declare const CardDescription: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

CardEyebrow

value
DeclarationView source
CardEyebrowts
export declare const CardEyebrow: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

CardHeader

value
DeclarationView source
CardHeaderts
export declare const CardHeader: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

CardMedia

value
DeclarationView source
CardMediats
export declare const CardMedia: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardRoot

value
DeclarationView source
CardRootts
export declare const CardRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
emphasis: {
type: PropType<CardEmphasis | undefined>;
default: undefined;
};
size: {
type: PropType<CardSize | undefined>;
default: undefined;
};
orientation: {
type: PropType<CardOrientation | undefined>;
default: undefined;
};
interactive: {
type: PropType<boolean | undefined>;
default: undefined;
};
href: {
type: PropType<string | undefined>;
default: undefined;
};
selected: {
type: PropType<boolean | undefined>;
default: undefined;
};
disabled: {
type: PropType<boolean | undefined>;
default: undefined;
};
loading: {
type: PropType<boolean | undefined>;
default: undefined;
};
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
activate: (_detail: CardActivateEvent) => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
emphasis: {
type: PropType<CardEmphasis | undefined>;
default: undefined;
};
size: {
type: PropType<CardSize | undefined>;
default: undefined;
};
orientation: {
type: PropType<CardOrientation | undefined>;
default: undefined;
};
interactive: {
type: PropType<boolean | undefined>;
default: undefined;
};
href: {
type: PropType<string | undefined>;
default: undefined;
};
selected: {
type: PropType<boolean | undefined>;
default: undefined;
};
disabled: {
type: PropType<boolean | undefined>;
default: undefined;
};
loading: {
type: PropType<boolean | undefined>;
default: undefined;
};
}>> & Readonly<{
onActivate?: ((_detail: CardActivateEvent) => any) | undefined;
}>, {
asChild: boolean;
emphasis: CardEmphasis | undefined;
size: CardSize | undefined;
orientation: CardOrientation | undefined;
interactive: boolean | undefined;
href: string | undefined;
selected: boolean | undefined;
disabled: boolean | undefined;
loading: boolean | undefined;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

CardTitle

value
DeclarationView source
CardTitlets
export declare const CardTitle: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
}>, () => 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;
};
}>> & Readonly<{}>, {
asChild: boolean;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;

useCardContext

function
DeclarationView source
useCardContextts
declare function useCardContext(partName: string): CardContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
CardContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
CardContextValue
Requirement
n/a

@grassroot/ui-headless-angular/card

Angular adapter

17 exports
View source packages/ui-headless/angular/src/card/index.ts

CARD_STORE

value
DeclarationView source
CARD_STOREts
export declare const CARD_STORE: InjectionToken<CardStore>;

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

CardStore

interface

Card has no machine, so there is no store to start/stop/sync — the parts only ever need the current connector and the scope its ids come from.

DeclarationView source
CardStorets
export interface CardStore {
readonly connector: Signal<CardApi>;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
Signal<CardApi>
required
scope
property
PartScope
required
Name
connector
Kind
property
Type
Signal<CardApi>
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
DeclarationView source
GR_CARD_DECLARATIONSts
export declare const GR_CARD_DECLARATIONS: readonly [typeof GrCardRoot, typeof GrCardMedia, typeof GrCardHeader, typeof GrCardEyebrow, typeof GrCardTitle, typeof GrCardDescription, typeof GrCardBody, typeof GrCardFooter];

GrCardBody

class
DeclarationView source
GrCardBodyts
export declare class GrCardBody implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardBody, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardBody, "[grCardBody]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardBody, "[grCardBody]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardBody, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardBody, "[grCardBody]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardBody, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required
DeclarationView source
GrCardDescriptionts
export declare class GrCardDescription implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardDescription, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardDescription, "[grCardDescription]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardDescription, "[grCardDescription]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardDescription, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardDescription, "[grCardDescription]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardDescription, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required
DeclarationView source
GrCardEyebrowts
export declare class GrCardEyebrow implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardEyebrow, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardEyebrow, "[grCardEyebrow]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardEyebrow, "[grCardEyebrow]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardEyebrow, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardEyebrow, "[grCardEyebrow]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardEyebrow, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required

GrCardHeader

class
DeclarationView source
GrCardHeaderts
export declare class GrCardHeader implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardHeader, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardHeader, "[grCardHeader]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardHeader, "[grCardHeader]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardHeader, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardHeader, "[grCardHeader]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardHeader, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required

GrCardMedia

class
DeclarationView source
GrCardMediats
export declare class GrCardMedia implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardMedia, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardMedia, "[grCardMedia]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardMedia, "[grCardMedia]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardMedia, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardMedia, "[grCardMedia]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardMedia, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required

GrCardRoot

class

An attribute selector, not a `gr-card-root` element: the connector picks `<a>` or `<div>` for the root, and only the consumer's own template can honour that. `<a grCardRoot [href]="…">` gets a real anchor; a custom element host could only ever fake one with role + tabindex.

DeclarationView source
GrCardRootts
export declare class GrCardRoot implements OnDestroy {
readonly emphasis: import("@angular/core").InputSignal<CardEmphasis | undefined>;
readonly size: import("@angular/core").InputSignal<CardSize | undefined>;
readonly orientation: import("@angular/core").InputSignal<CardOrientation | undefined>;
readonly interactive: import("@angular/core").InputSignal<boolean | undefined>;
readonly href: import("@angular/core").InputSignal<string | undefined>;
readonly selected: import("@angular/core").InputSignal<boolean | undefined>;
readonly disabled: import("@angular/core").InputSignal<boolean | undefined>;
readonly loading: import("@angular/core").InputSignal<boolean | undefined>;
readonly activate: import("@angular/core").OutputEmitterRef<CardActivateEvent>;
private readonly elementRef;
private readonly listeners;
private readonly scope;
private readonly connector;
readonly store: CardStore;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardRoot, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardRoot, "[grCardRoot]", never, { "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "activate": "activate"; }, never, never, true, never>;
}
Name
Kind
Type
Requirement
activate
property
import("@angular/core").OutputEmitterRef<CardActivateEvent>
required
connector
property
any
required
disabled
property
import("@angular/core").InputSignal<boolean | undefined>
required
elementRef
property
any
required
emphasis
property
import("@angular/core").InputSignal<CardEmphasis | undefined>
required
href
property
import("@angular/core").InputSignal<string | undefined>
required
interactive
property
import("@angular/core").InputSignal<boolean | undefined>
required
listeners
property
any
required
loading
property
import("@angular/core").InputSignal<boolean | undefined>
required
ngOnDestroy
method
() => void
required
orientation
property
import("@angular/core").InputSignal<CardOrientation | undefined>
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardRoot, "[grCardRoot]", never, { "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "activate": "activate"; }, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardRoot, never>
required
scope
property
any
required
Name
activate
Kind
property
Type
import("@angular/core").OutputEmitterRef<CardActivateEvent>
Requirement
required
Name
connector
Kind
property
Type
any
Requirement
required
Name
disabled
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
elementRef
Kind
property
Type
any
Requirement
required
Name
emphasis
Kind
property
Type
import("@angular/core").InputSignal<CardEmphasis | undefined>
Requirement
required
Name
href
Kind
property
Type
import("@angular/core").InputSignal<string | undefined>
Requirement
required
Name
interactive
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
listeners
Kind
property
Type
any
Requirement
required
Name
loading
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
ngOnDestroy
Kind
method
Type
() => void
Requirement
required
Name
orientation
Kind
property
Type
import("@angular/core").InputSignal<CardOrientation | undefined>
Requirement
required
Name
ɵdir
Kind
property
Type
i0.ɵɵDirectiveDeclaration<GrCardRoot, "[grCardRoot]", never, { "emphasis": { "alias": "emphasis"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "href": { "alias": "href"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "activate": "activate"; }, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardRoot, never>
Requirement
required
Name
scope
Kind
property
Type
any
Requirement
required
Name
selected
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
size
Kind
property
Type
import("@angular/core").InputSignal<CardSize | undefined>
Requirement
required
Name
store
Kind
property
Type
CardStore
Requirement
required

GrCardTitle

class
DeclarationView source
GrCardTitlets
export declare class GrCardTitle implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrCardTitle, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrCardTitle, "[grCardTitle]", never, {}, {}, never, never, true, never>;
}
Name
Kind
Type
Requirement
consumerProps
property
any
required
elementRef
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
ɵdir
property
i0.ɵɵDirectiveDeclaration<GrCardTitle, "[grCardTitle]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrCardTitle, never>
required
store
property
any
required
Name
consumerProps
Kind
property
Type
any
Requirement
required
Name
elementRef
Kind
property
Type
any
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<GrCardTitle, "[grCardTitle]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrCardTitle, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required

@grassroot/ui-headless-svelte/card

Svelte adapter

16 exports
View source packages/ui-headless/svelte/src/card/index.ts

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardBody

value
DeclarationView source
CardBodyts
export declare const CardBody: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description

CardContextValue

interface
DeclarationView source
CardContextValuets
export interface CardContextValue {
readonly connector: () => CardApi;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
() => CardApi
required
scope
property
PartScope
required
Name
connector
Kind
property
Type
() => CardApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
DeclarationView source
CardDescriptionts
export declare const CardDescription: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

CardEyebrow

value
DeclarationView source
CardEyebrowts
export declare const CardEyebrow: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

CardHeader

value
DeclarationView source
CardHeaderts
export declare const CardHeader: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

CardMedia

value
DeclarationView source
CardMediats
export declare const CardMedia: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardRoot

value
DeclarationView source
CardRootts
export declare const CardRoot: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

CardTitle

value
DeclarationView source
CardTitlets
export declare const CardTitle: LegacyComponentType;
Name
Kind
Type
Requirement
args
parameter
Parameters<Component<Record<string, any>>>
optional
return
return value
ReturnType<Component<Record<string, any>, Record<string, any>>>
n/a
Name
args
Kind
parameter
Type
Parameters<Component<Record<string, any>>>
Requirement
optional
Name
return
Kind
return value
Type
ReturnType<Component<Record<string, any>, Record<string, any>>>
Requirement
n/a

useCardContext

function
DeclarationView source
useCardContextts
export declare function useCardContext(partName: string): CardContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
CardContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
CardContextValue
Requirement
n/a

@grassroot/ui-headless-solid/card

Solid adapter

19 exports
View source packages/ui-headless/solid/src/card/index.ts

CardActivateEvent

interface

What triggered the activation — adapters forward the native event as `source`.

DeclarationView source
CardActivateEventts
interface CardActivateEvent {
readonly via: "pointer" | "key";
readonly source: unknown;
}
Name
Kind
Type
Requirement
source
property
unknown
required
via
property
"pointer" | "key"
required
Name
source
Kind
property
Type
unknown
Requirement
required
Name
via
Kind
property
Type
"pointer" | "key"
Requirement
required

CardApi

interface
DeclarationView source
CardApits
interface CardApi {
rootProps(): PartProps;
mediaProps(): PartProps;
headerProps(): PartProps;
eyebrowProps(): PartProps;
titleProps(): PartProps;
descriptionProps(): PartProps;
bodyProps(): PartProps;
footerProps(): PartProps;
/** The element an adapter should render the root as. */
readonly rootTag: "a" | "div";
readonly interactive: boolean;
}
Name
Kind
Type
Requirement
Description
bodyProps
method
() => PartProps
required
descriptionProps
method
() => PartProps
required
eyebrowProps
method
() => PartProps
required
footerProps
method
() => PartProps
required
headerProps
method
() => PartProps
required
interactive
property
boolean
required
mediaProps
method
() => PartProps
required
rootProps
method
() => PartProps
required
rootTag
property
"a" | "div"
required
The element an adapter should render the root as.
titleProps
method
() => PartProps
required
Name
bodyProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
descriptionProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
eyebrowProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
footerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
headerProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
interactive
Kind
property
Type
boolean
Requirement
required
Description
Name
mediaProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Description
Name
rootTag
Kind
property
Type
"a" | "div"
Requirement
required
Description
The element an adapter should render the root as.
Name
titleProps
Kind
method
Type
() => PartProps
Requirement
required
Description

CardBody

value
DeclarationView source
CardBodyts
export declare const CardBody: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

CardConnectOptions

interface
DeclarationView source
CardConnectOptionsts
interface CardConnectOptions {
readonly emphasis?: CardEmphasis;
readonly size?: CardSize;
readonly orientation?: CardOrientation;
/** Renders the root as an activatable control (`role="button"` + keys). */
readonly interactive?: boolean;
/** Renders the root as a link. Wins over `interactive` when both are set. */
readonly href?: string;
readonly selected?: boolean;
readonly disabled?: boolean;
readonly loading?: boolean;
/** Fired by click and by Enter/Space on an interactive (non-link) card. */
readonly onActivate?: (event: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
Description
disabled
property
boolean
optional
emphasis
property
CardEmphasis
optional
href
property
string
optional
Renders the root as a link. Wins over `interactive` when both are set.
interactive
property
boolean
optional
Renders the root as an activatable control (`role="button"` + keys).
loading
property
boolean
optional
onActivate
property
(event: CardActivateEvent) => void
optional
Fired by click and by Enter/Space on an interactive (non-link) card.
orientation
property
CardOrientation
optional
selected
property
boolean
optional
size
property
CardSize
optional
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
emphasis
Kind
property
Type
CardEmphasis
Requirement
optional
Description
Name
href
Kind
property
Type
string
Requirement
optional
Description
Renders the root as a link. Wins over `interactive` when both are set.
Name
interactive
Kind
property
Type
boolean
Requirement
optional
Description
Renders the root as an activatable control (`role="button"` + keys).
Name
loading
Kind
property
Type
boolean
Requirement
optional
Description
Name
onActivate
Kind
property
Type
(event: CardActivateEvent) => void
Requirement
optional
Description
Fired by click and by Enter/Space on an interactive (non-link) card.
Name
orientation
Kind
property
Type
CardOrientation
Requirement
optional
Description
Name
selected
Kind
property
Type
boolean
Requirement
optional
Description
Name
size
Kind
property
Type
CardSize
Requirement
optional
Description

CardContext

value
DeclarationView source
CardContextts
export declare const CardContext: import("solid-js").Context<CardContextValue | undefined>;

CardContextValue

interface
DeclarationView source
CardContextValuets
export interface CardContextValue {
readonly connector: Accessor<CardApi>;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
Accessor<CardApi>
required
scope
property
PartScope
required
Name
connector
Kind
property
Type
Accessor<CardApi>
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
DeclarationView source
CardDescriptionts
export declare const CardDescription: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

Elevation/edge treatment. `outlined` is the default; one level only.

DeclarationView source
CardEmphasists
type CardEmphasis = "outlined" | "elevated" | "filled" | "dashed";

CardEyebrow

value
DeclarationView source
CardEyebrowts
export declare const CardEyebrow: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

CardHeader

value
DeclarationView source
CardHeaderts
export declare const CardHeader: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

CardMedia

value
DeclarationView source
CardMediats
export declare const CardMedia: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

`horizontal` puts the media slot beside the body instead of above it.

DeclarationView source
CardOrientationts
type CardOrientation = "vertical" | "horizontal";

CardPartProps

interface
DeclarationView source
CardPartPropsts
export interface CardPartProps extends JSX.HTMLAttributes<HTMLElement> {
readonly as?: AsProp;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
Name
as
Kind
property
Type
AsProp
Requirement
optional

CardRoot

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

CardRootProps

interface
DeclarationView source
CardRootPropsts
export interface CardRootProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onSelect">, CardConnectOptions {
readonly as?: AsProp;
readonly onActivate?: (detail: CardActivateEvent) => void;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
onActivate
property
(detail: CardActivateEvent) => void
optional
Name
as
Kind
property
Type
AsProp
Requirement
optional
Name
onActivate
Kind
property
Type
(detail: CardActivateEvent) => void
Requirement
optional

CardSize

type

Padding + type step. Radius never changes with size.

DeclarationView source
CardSizets
type CardSize = "compact" | "default" | "spacious";

CardTitle

value
DeclarationView source
CardTitlets
export declare const CardTitle: (props: CardPartProps) => JSX.Element;
Name
Kind
Type
Requirement
props
parameter
CardPartProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
CardPartProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a

useCardContext

function
DeclarationView source
useCardContextts
export declare function useCardContext(partName: string): CardContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
CardContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
CardContextValue
Requirement
n/a