DocsAPI referenceHeadlesstooltip

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

Core connector and vanilla API

20 exports
View source packages/ui-headless/core/src/tooltip/index.ts

connectTooltip

function
DeclarationView source
connectTooltipts
declare function connectTooltip(service: TooltipService, scope: PartScope, _options?: TooltipConnectOptions): TooltipApi;
Name
Kind
Type
Requirement
service
parameter
TooltipService
required
scope
parameter
PartScope
required
_options
parameter
TooltipConnectOptions
optional
return
return value
TooltipApi
n/a
Name
service
Kind
parameter
Type
TooltipService
Requirement
required
Name
scope
Kind
parameter
Type
PartScope
Requirement
required
Name
_options
Kind
parameter
Type
TooltipConnectOptions
Requirement
optional
Name
return
Kind
return value
Type
TooltipApi
Requirement
n/a

mountTooltip

function
DeclarationView source
mountTooltipts
declare function mountTooltip(container: HTMLElement, options?: MountTooltipOptions): TooltipMount;
Name
Kind
Type
Requirement
container
parameter
HTMLElement
required
options
parameter
MountTooltipOptions
optional
return
return value
TooltipMount
n/a
Name
container
Kind
parameter
Type
HTMLElement
Requirement
required
Name
options
Kind
parameter
Type
MountTooltipOptions
Requirement
optional
Name
return
Kind
return value
Type
TooltipMount
Requirement
n/a
DeclarationView source
MountTooltipOptionsts
interface MountTooltipOptions extends TooltipInput {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
/** Native (production) by default; inject a virtual scheduler for tests. */
readonly scheduler?: Scheduler;
/** Render callback for the trigger's content; default = "Trigger" as textContent. */
readonly renderTrigger?: (button: HTMLElement) => void;
/** Render callback for the content's content; default = "Tooltip" as textContent. */
readonly renderContent?: (panel: HTMLElement) => void;
/** Render callback for the arrow element; default = untouched (empty). */
readonly renderArrow?: (arrow: HTMLElement) => void;
}
Name
Kind
Type
Requirement
Description
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
renderArrow
property
(arrow: HTMLElement) => void
optional
Render callback for the arrow element; default = untouched (empty).
renderContent
property
(panel: HTMLElement) => void
optional
Render callback for the content's content; default = "Tooltip" as textContent.
renderTrigger
property
(button: HTMLElement) => void
optional
Render callback for the trigger's content; default = "Trigger" as textContent.
scheduler
property
Scheduler
optional
Native (production) by default; inject a virtual scheduler for tests.
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Description
Name
renderArrow
Kind
property
Type
(arrow: HTMLElement) => void
Requirement
optional
Description
Render callback for the arrow element; default = untouched (empty).
Name
renderContent
Kind
property
Type
(panel: HTMLElement) => void
Requirement
optional
Description
Render callback for the content's content; default = "Tooltip" as textContent.
Name
renderTrigger
Kind
property
Type
(button: HTMLElement) => void
Requirement
optional
Description
Render callback for the trigger's content; default = "Trigger" as textContent.
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional
Description
Native (production) by default; inject a virtual scheduler for tests.

Tooltip-shaped command runner. Resolves `OPEN_CHANGE_REQUEST` against the caller-supplied `onOpenChange` callback. `statechart.schedule` / `statechart.cancel` are reserved S13 commands that never reach this runner through `createScheduledEventRunner` (it intercepts and consumes them before delegating here) — the `default` branch stays defensively silent on them (and on any other unrecognized command) rather than throwing, in case a future caller wires this runner directly without the scheduler decorator.

DeclarationView source
runTooltipCommandts
declare function runTooltipCommand(command: TooltipCommand, _scope: PartScope, options?: {
readonly onOpenChange?: (detail: {
open: boolean;
reason: TooltipChangeReason;
}) => void;
}): void;
Name
Kind
Type
Requirement
command
parameter
TooltipCommand
required
_scope
parameter
PartScope
required
options
parameter
{ readonly onOpenChange?: (detail: { open: boolean; reason: TooltipChangeReason; }) => void; }
optional
return
return value
void
n/a
Name
command
Kind
parameter
Type
TooltipCommand
Requirement
required
Name
_scope
Kind
parameter
Type
PartScope
Requirement
required
Name
options
Kind
parameter
Type
{ readonly onOpenChange?: (detail: { open: boolean; reason: TooltipChangeReason; }) => void; }
Requirement
optional
Name
return
Kind
return value
Type
void
Requirement
n/a
DeclarationView source
tooltipAnatomyts
export declare const tooltipAnatomy: {
readonly scope: "tooltip";
readonly parts: readonly ["root", "trigger", "content", "arrow"];
};
Name
Kind
Type
Requirement
parts
property
readonly ["root", "trigger", "content", "arrow"]
required
scope
property
"tooltip"
required
Name
parts
Kind
property
Type
readonly ["root", "trigger", "content", "arrow"]
Requirement
required
Name
scope
Kind
property
Type
"tooltip"
Requirement
required

TooltipApi

interface
DeclarationView source
TooltipApits
interface TooltipApi {
rootProps(): PartProps;
triggerProps(): PartProps;
contentProps(): PartProps;
arrowProps(): PartProps;
readonly open: boolean;
}
Name
Kind
Type
Requirement
arrowProps
method
() => PartProps
required
contentProps
method
() => PartProps
required
open
property
boolean
required
rootProps
method
() => PartProps
required
triggerProps
method
() => PartProps
required
Name
arrowProps
Kind
method
Type
() => PartProps
Requirement
required
Name
contentProps
Kind
method
Type
() => PartProps
Requirement
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
rootProps
Kind
method
Type
() => PartProps
Requirement
required
Name
triggerProps
Kind
method
Type
() => PartProps
Requirement
required
DeclarationView source
TooltipChangeReasonts
type TooltipChangeReason = "pointer" | "focus" | "escape" | "delay" | "programmatic";
DeclarationView source
TooltipCommandts
type TooltipCommand = (CommandObject & {
readonly type: "OPEN_CHANGE_REQUEST";
readonly open: boolean;
readonly reason: TooltipChangeReason;
}) | ScheduleCommand<TooltipEvent> | CancelCommand;
DeclarationView source
TooltipConnectOptionsts
interface TooltipConnectOptions {}
DeclarationView source
TooltipContextts
type TooltipContext = {
readonly mode: "controlled" | "uncontrolled";
};
Name
Kind
Type
Requirement
mode
property
"controlled" | "uncontrolled"
required
Name
mode
Kind
property
Type
"controlled" | "uncontrolled"
Requirement
required
DeclarationView source
TooltipEventts
type TooltipEvent = {
readonly type: "POINTER_ENTER";
} | {
readonly type: "POINTER_LEAVE";
} | {
readonly type: "FOCUS";
} | {
readonly type: "BLUR";
} | {
readonly type: "ESCAPE";
} | {
readonly type: "OPEN";
readonly reason: TooltipChangeReason;
} | {
readonly type: "CLOSE";
readonly reason: TooltipChangeReason;
};
DeclarationView source
TooltipInputts
type TooltipInput = {
/** Controlled committed open state. Defining it fixes controlled mode at first start. */
readonly open?: boolean;
/** Uncontrolled initial open state. */
readonly defaultOpen?: boolean;
/** Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate). */
readonly openDelayMs?: number;
/** Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate). */
readonly closeDelayMs?: number;
readonly disabled?: boolean;
/** Headless-layer styling hook only — the machine never branches on it. */
readonly side?: "top" | "bottom";
};
Name
Kind
Type
Requirement
Description
closeDelayMs
property
number
optional
Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate).
defaultOpen
property
boolean
optional
Uncontrolled initial open state.
disabled
property
boolean
optional
open
property
boolean
optional
Controlled committed open state. Defining it fixes controlled mode at first start.
openDelayMs
property
number
optional
Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate).
side
property
"top" | "bottom"
optional
Headless-layer styling hook only — the machine never branches on it.
Name
closeDelayMs
Kind
property
Type
number
Requirement
optional
Description
Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate).
Name
defaultOpen
Kind
property
Type
boolean
Requirement
optional
Description
Uncontrolled initial open state.
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
open
Kind
property
Type
boolean
Requirement
optional
Description
Controlled committed open state. Defining it fixes controlled mode at first start.
Name
openDelayMs
Kind
property
Type
number
Requirement
optional
Description
Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate).
Name
side
Kind
property
Type
"top" | "bottom"
Requirement
optional
Description
Headless-layer styling hook only — the machine never branches on it.
DeclarationView source
tooltipMachinets
export declare const tooltipMachine: TooltipMachine;

TooltipMount

interface
DeclarationView source
TooltipMountts
interface TooltipMount {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly root: HTMLElement;
readonly trigger: HTMLElement;
readonly content: HTMLElement;
readonly arrow: HTMLElement;
destroy(): void;
}
Name
Kind
Type
Requirement
arrow
property
HTMLElement
required
connector
property
TooltipApi
required
content
property
HTMLElement
required
destroy
method
() => void
required
root
property
HTMLElement
required
service
property
TooltipService
required
trigger
property
HTMLElement
required
Name
arrow
Kind
property
Type
HTMLElement
Requirement
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
content
Kind
property
Type
HTMLElement
Requirement
required
Name
destroy
Kind
method
Type
() => void
Requirement
required
Name
root
Kind
property
Type
HTMLElement
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
Name
trigger
Kind
property
Type
HTMLElement
Requirement
required
DeclarationView source
TooltipOpenChangeDetailts
interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required
DeclarationView source
TooltipPartts
type TooltipPart = (typeof tooltipAnatomy.parts)[number];
DeclarationView source
tooltipSelectorsts
export declare const tooltipSelectors: {
open: (snapshot: TooltipSnapshot) => boolean;
};
Name
Kind
Type
Requirement
open
property
(snapshot: TooltipSnapshot) => boolean
required
Name
open
Kind
property
Type
(snapshot: TooltipSnapshot) => boolean
Requirement
required
DeclarationView source
TooltipServicets
type TooltipService = Service<TooltipInput, TooltipStateValue, TooltipContext, TooltipEvent, TooltipCommand>;
DeclarationView source
TooltipSnapshotts
type TooltipSnapshot = Snapshot<TooltipStateValue, TooltipContext>;
DeclarationView source
TooltipStateValuets
type TooltipStateValue = "open" | "closed";

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/tooltipts
import { Arrow, Content, Root, Tooltip, Trigger } from "@grassroot/ui-headless-react/tooltip";

Vue imports

@grassroot/ui-headless-vue/tooltipts
<script setup lang="ts">
import { TooltipArrow, TooltipContent, TooltipRoot, TooltipTrigger } from "@grassroot/ui-headless-vue/tooltip";
</script>

Angular imports

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

Svelte imports

@grassroot/ui-headless-svelte/tooltipts
<script lang="ts">
import { TooltipArrow, TooltipContent, TooltipRoot, TooltipTrigger } from "@grassroot/ui-headless-svelte/tooltip";
</script>

Solid imports

@grassroot/ui-headless-solid/tooltipts
import { TooltipArrow, TooltipContent, TooltipRoot, TooltipTrigger } from "@grassroot/ui-headless-solid/tooltip";

@grassroot/ui-headless-react/tooltip

React adapter

17 exports
View source packages/ui-headless/react/src/tooltip/index.ts

Arrow

value
DeclarationView source
Arrowts
export declare const Arrow: import("react").ForwardRefExoticComponent<TooltipArrowProps & 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

Content

value
DeclarationView source
Contentts
export declare const Content: import("react").ForwardRefExoticComponent<TooltipContentProps & 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<TooltipRootProps & 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

Tooltip

value
DeclarationView source
Tooltipts
export declare const Tooltip: {
Root: import("react").ForwardRefExoticComponent<TooltipRootProps & import("react").RefAttributes<HTMLDivElement>>;
Trigger: import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
Content: import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<HTMLDivElement>>;
Arrow: import("react").ForwardRefExoticComponent<TooltipArrowProps & import("react").RefAttributes<HTMLDivElement>>;
};
Name
Kind
Type
Requirement
Arrow
property
import("react").ForwardRefExoticComponent<TooltipArrowProps & import("react").RefAttributes<HTMLDivElement>>
required
Content
property
import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<HTMLDivElement>>
required
Root
property
import("react").ForwardRefExoticComponent<TooltipRootProps & import("react").RefAttributes<HTMLDivElement>>
required
Trigger
property
import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>
required
Name
Arrow
Kind
property
Type
import("react").ForwardRefExoticComponent<TooltipArrowProps & import("react").RefAttributes<HTMLDivElement>>
Requirement
required
Name
Content
Kind
property
Type
import("react").ForwardRefExoticComponent<TooltipContentProps & import("react").RefAttributes<HTMLDivElement>>
Requirement
required
Name
Root
Kind
property
Type
import("react").ForwardRefExoticComponent<TooltipRootProps & import("react").RefAttributes<HTMLDivElement>>
Requirement
required
Name
Trigger
Kind
property
Type
import("react").ForwardRefExoticComponent<TooltipTriggerProps & import("react").RefAttributes<HTMLButtonElement>>
Requirement
required

TooltipArrowProps

interface
DeclarationView source
TooltipArrowPropsts
interface TooltipArrowProps extends ComponentPropsWithoutRef<"div"> {
readonly asChild?: boolean;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional
DeclarationView source
TooltipContentPropsts
interface TooltipContentProps extends ComponentPropsWithoutRef<"div"> {
readonly asChild?: boolean;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional
DeclarationView source
TooltipContextts
export declare const TooltipContext: import("react").Context<TooltipContextValue | 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
TooltipContextValuets
interface TooltipContextValue {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
}
Name
Kind
Type
Requirement
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
DeclarationView source
TooltipOpenChangeDetailts
interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required

TooltipRootProps

interface
DeclarationView source
TooltipRootPropsts
interface TooltipRootProps extends Omit<ComponentPropsWithoutRef<"div">, "open" | "defaultValue"> {
readonly asChild?: boolean;
readonly open?: TooltipInput["open"];
readonly defaultOpen?: TooltipInput["defaultOpen"];
readonly openDelayMs?: TooltipInput["openDelayMs"];
readonly closeDelayMs?: TooltipInput["closeDelayMs"];
readonly disabled?: TooltipInput["disabled"];
readonly side?: TooltipInput["side"];
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
/** Native (production) by default; inject a virtual scheduler for tests. */
readonly scheduler?: UseTooltipOptions["scheduler"];
readonly children?: ReactNode;
}
Name
Kind
Type
Requirement
Description
asChild
property
boolean
optional
children
property
ReactNode
optional
closeDelayMs
property
TooltipInput["closeDelayMs"]
optional
defaultOpen
property
TooltipInput["defaultOpen"]
optional
disabled
property
TooltipInput["disabled"]
optional
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
open
property
TooltipInput["open"]
optional
openDelayMs
property
TooltipInput["openDelayMs"]
optional
scheduler
property
UseTooltipOptions["scheduler"]
optional
Native (production) by default; inject a virtual scheduler for tests.
side
property
TooltipInput["side"]
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional
Description
Name
children
Kind
property
Type
ReactNode
Requirement
optional
Description
Name
closeDelayMs
Kind
property
Type
TooltipInput["closeDelayMs"]
Requirement
optional
Description
Name
defaultOpen
Kind
property
Type
TooltipInput["defaultOpen"]
Requirement
optional
Description
Name
disabled
Kind
property
Type
TooltipInput["disabled"]
Requirement
optional
Description
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Description
Name
open
Kind
property
Type
TooltipInput["open"]
Requirement
optional
Description
Name
openDelayMs
Kind
property
Type
TooltipInput["openDelayMs"]
Requirement
optional
Description
Name
scheduler
Kind
property
Type
UseTooltipOptions["scheduler"]
Requirement
optional
Description
Native (production) by default; inject a virtual scheduler for tests.
Name
side
Kind
property
Type
TooltipInput["side"]
Requirement
optional
Description
DeclarationView source
TooltipTriggerPropsts
interface TooltipTriggerProps extends Omit<ComponentPropsWithoutRef<"button">, "type"> {
readonly asChild?: boolean;
}
Name
Kind
Type
Requirement
asChild
property
boolean
optional
Name
asChild
Kind
property
Type
boolean
Requirement
optional

Trigger

value
DeclarationView source
Triggerts
export declare const Trigger: import("react").ForwardRefExoticComponent<TooltipTriggerProps & 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

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

useTooltip

function
DeclarationView source
useTooltipts
declare function useTooltip(input: TooltipInput$1, options?: UseTooltipOptions): UseTooltipResult;
Name
Kind
Type
Requirement
input
parameter
TooltipInput$1
required
options
parameter
UseTooltipOptions
optional
return
return value
UseTooltipResult
n/a
Name
input
Kind
parameter
Type
TooltipInput$1
Requirement
required
Name
options
Kind
parameter
Type
UseTooltipOptions
Requirement
optional
Name
return
Kind
return value
Type
UseTooltipResult
Requirement
n/a
DeclarationView source
useTooltipContextts
declare function useTooltipContext(partName: string): TooltipContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
TooltipContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
TooltipContextValue
Requirement
n/a

UseTooltipOptions

interface
DeclarationView source
UseTooltipOptionsts
interface UseTooltipOptions {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
/** Native (production) by default; inject a virtual scheduler for tests. */
readonly scheduler?: Scheduler;
}
Name
Kind
Type
Requirement
Description
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
scheduler
property
Scheduler
optional
Native (production) by default; inject a virtual scheduler for tests.
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Description
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional
Description
Native (production) by default; inject a virtual scheduler for tests.

UseTooltipResult

interface
DeclarationView source
UseTooltipResultts
interface UseTooltipResult {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
readonly snapshot: TooltipSnapshot;
}
Name
Kind
Type
Requirement
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
snapshot
property
TooltipSnapshot
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
Name
snapshot
Kind
property
Type
TooltipSnapshot
Requirement
required

@grassroot/ui-headless-vue/tooltip

Vue adapter

11 exports
View source packages/ui-headless/vue/src/tooltip/index.ts

TooltipArrow

value
DeclarationView source
TooltipArrowts
export declare const TooltipArrow: 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>;
DeclarationView source
TooltipContentts
export declare const TooltipContent: 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>;
DeclarationView source
TooltipContextKeyts
export declare const TooltipContextKey: InjectionKey<TooltipContextValue>;
DeclarationView source
TooltipContextValuets
interface TooltipContextValue {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
/** Bumped on every committed machine update; parts read `.value` to establish a reactive dependency. */
readonly snapshot: ShallowRef<TooltipSnapshot>;
}
Name
Kind
Type
Requirement
Description
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
snapshot
property
ShallowRef<TooltipSnapshot>
required
Bumped on every committed machine update; parts read `.value` to establish a reactive dependency.
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Description
Name
scope
Kind
property
Type
PartScope
Requirement
required
Description
Name
service
Kind
property
Type
TooltipService
Requirement
required
Description
Name
snapshot
Kind
property
Type
ShallowRef<TooltipSnapshot>
Requirement
required
Description
Bumped on every committed machine update; parts read `.value` to establish a reactive dependency.
DeclarationView source
TooltipOpenChangeDetailts
interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required

TooltipRoot

value
DeclarationView source
TooltipRootts
export declare const TooltipRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
open: {
type: PropType<TooltipInput["open"]>;
default: undefined;
};
defaultOpen: {
type: PropType<TooltipInput["defaultOpen"]>;
default: undefined;
};
openDelayMs: {
type: PropType<TooltipInput["openDelayMs"]>;
default: undefined;
};
closeDelayMs: {
type: PropType<TooltipInput["closeDelayMs"]>;
default: undefined;
};
disabled: {
type: PropType<TooltipInput["disabled"]>;
default: undefined;
};
side: {
type: PropType<TooltipInput["side"]>;
default: undefined;
};
/** Native (production) by default; inject a virtual scheduler for tests. */
scheduler: {
type: PropType<UseTooltipOptions["scheduler"]>;
default: undefined;
};
}>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
openChange: (_detail: TooltipOpenChangeDetail) => true;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
asChild: {
type: BooleanConstructor;
default: boolean;
};
open: {
type: PropType<TooltipInput["open"]>;
default: undefined;
};
defaultOpen: {
type: PropType<TooltipInput["defaultOpen"]>;
default: undefined;
};
openDelayMs: {
type: PropType<TooltipInput["openDelayMs"]>;
default: undefined;
};
closeDelayMs: {
type: PropType<TooltipInput["closeDelayMs"]>;
default: undefined;
};
disabled: {
type: PropType<TooltipInput["disabled"]>;
default: undefined;
};
side: {
type: PropType<TooltipInput["side"]>;
default: undefined;
};
/** Native (production) by default; inject a virtual scheduler for tests. */
scheduler: {
type: PropType<UseTooltipOptions["scheduler"]>;
default: undefined;
};
}>> & Readonly<{
onOpenChange?: ((_detail: TooltipOpenChangeDetail) => any) | undefined;
}>, {
asChild: boolean;
open: boolean | undefined;
defaultOpen: boolean | undefined;
openDelayMs: number | undefined;
closeDelayMs: number | undefined;
disabled: boolean | undefined;
side: "bottom" | "top" | undefined;
scheduler: import("@grassroot/statechart/scheduler").Scheduler | undefined;
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
DeclarationView source
TooltipTriggerts
export declare const TooltipTrigger: 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>;

useTooltip

function
DeclarationView source
useTooltipts
declare function useTooltip(input: TooltipInput | (() => TooltipInput), options?: UseTooltipOptions): UseTooltipResult;
Name
Kind
Type
Requirement
input
parameter
TooltipInput | (() => TooltipInput)
required
options
parameter
UseTooltipOptions
optional
return
return value
UseTooltipResult
n/a
Name
input
Kind
parameter
Type
TooltipInput | (() => TooltipInput)
Requirement
required
Name
options
Kind
parameter
Type
UseTooltipOptions
Requirement
optional
Name
return
Kind
return value
Type
UseTooltipResult
Requirement
n/a
DeclarationView source
useTooltipContextts
declare function useTooltipContext(partName: string): TooltipContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
TooltipContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
TooltipContextValue
Requirement
n/a

UseTooltipOptions

interface
DeclarationView source
UseTooltipOptionsts
interface UseTooltipOptions {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
readonly scheduler?: Scheduler;
}
Name
Kind
Type
Requirement
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
scheduler
property
Scheduler
optional
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional

UseTooltipResult

interface
DeclarationView source
UseTooltipResultts
interface UseTooltipResult {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
readonly snapshot: ShallowRef<TooltipSnapshot>;
}
Name
Kind
Type
Requirement
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
snapshot
property
ShallowRef<TooltipSnapshot>
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
Name
snapshot
Kind
property
Type
ShallowRef<TooltipSnapshot>
Requirement
required

@grassroot/ui-headless-angular/tooltip

Angular adapter

12 exports
View source packages/ui-headless/angular/src/tooltip/index.ts

One re-entrancy policy for every Angular store's zoneless commit nudge.

DeclarationView source
createReentrantSafeTickts
export declare function createReentrantSafeTick(appRef: ApplicationRef): () => void;
Name
Kind
Type
Requirement
appRef
parameter
ApplicationRef
required
return
return value
() => void
n/a
Name
appRef
Kind
parameter
Type
ApplicationRef
Requirement
required
Name
return
Kind
return value
Type
() => void
Requirement
n/a
DeclarationView source
createTooltipStorets
export declare function createTooltipStore(initialInput: TooltipInput, options?: CreateTooltipStoreOptions): TooltipStore;
Name
Kind
Type
Requirement
initialInput
parameter
TooltipInput
required
options
parameter
CreateTooltipStoreOptions
optional
return
return value
TooltipStore
n/a
Name
initialInput
Kind
parameter
Type
TooltipInput
Requirement
required
Name
options
Kind
parameter
Type
CreateTooltipStoreOptions
Requirement
optional
Name
return
Kind
return value
Type
TooltipStore
Requirement
n/a
DeclarationView source
CreateTooltipStoreOptionsts
export interface CreateTooltipStoreOptions {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
readonly onCommit?: () => void;
readonly scheduler?: Scheduler;
}
Name
Kind
Type
Requirement
onCommit
property
() => void
optional
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
scheduler
property
Scheduler
optional
Name
onCommit
Kind
property
Type
() => void
Requirement
optional
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional
DeclarationView source
GR_TOOLTIP_DECLARATIONSts
export declare const GR_TOOLTIP_DECLARATIONS: readonly [typeof GrTooltipRoot, typeof GrTooltipTrigger, typeof GrTooltipContent, typeof GrTooltipArrow];
DeclarationView source
GrTooltipArrowts
export declare class GrTooltipArrow implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrTooltipArrow, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrTooltipArrow, "[grTooltipArrow]", 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<GrTooltipArrow, "[grTooltipArrow]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrTooltipArrow, 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<GrTooltipArrow, "[grTooltipArrow]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrTooltipArrow, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required
DeclarationView source
GrTooltipContentts
export declare class GrTooltipContent implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrTooltipContent, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrTooltipContent, "[grTooltipContent]", 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<GrTooltipContent, "[grTooltipContent]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrTooltipContent, 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<GrTooltipContent, "[grTooltipContent]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrTooltipContent, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required
DeclarationView source
GrTooltipRootts
export declare class GrTooltipRoot implements OnDestroy {
readonly open: import("@angular/core").InputSignal<boolean | undefined>;
readonly defaultOpen: import("@angular/core").InputSignal<boolean | undefined>;
readonly openDelayMs: import("@angular/core").InputSignal<number | undefined>;
readonly closeDelayMs: import("@angular/core").InputSignal<number | undefined>;
readonly disabled: import("@angular/core").InputSignal<boolean | undefined>;
readonly side: import("@angular/core").InputSignal<"bottom" | "top" | undefined>;
readonly openChange: import("@angular/core").OutputEmitterRef<TooltipOpenChangeDetail>;
private readonly elementRef;
private readonly injector;
private readonly listeners;
private lastSynced;
readonly store: TooltipStore;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrTooltipRoot, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<GrTooltipRoot, "gr-tooltip-root", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "openDelayMs": { "alias": "openDelayMs"; "required": false; "isSignal": true; }; "closeDelayMs": { "alias": "closeDelayMs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>;
}
Name
Kind
Type
Requirement
closeDelayMs
property
import("@angular/core").InputSignal<number | undefined>
required
defaultOpen
property
import("@angular/core").InputSignal<boolean | undefined>
required
disabled
property
import("@angular/core").InputSignal<boolean | undefined>
required
elementRef
property
any
required
injector
property
any
required
lastSynced
property
any
required
listeners
property
any
required
ngOnDestroy
method
() => void
required
open
property
import("@angular/core").InputSignal<boolean | undefined>
required
openChange
property
import("@angular/core").OutputEmitterRef<TooltipOpenChangeDetail>
required
openDelayMs
property
import("@angular/core").InputSignal<number | undefined>
required
ɵcmp
property
i0.ɵɵComponentDeclaration<GrTooltipRoot, "gr-tooltip-root", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "openDelayMs": { "alias": "openDelayMs"; "required": false; "isSignal": true; }; "closeDelayMs": { "alias": "closeDelayMs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrTooltipRoot, never>
required
side
property
import("@angular/core").InputSignal<"bottom" | "top" | undefined>
required
Name
closeDelayMs
Kind
property
Type
import("@angular/core").InputSignal<number | undefined>
Requirement
required
Name
defaultOpen
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
disabled
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
elementRef
Kind
property
Type
any
Requirement
required
Name
injector
Kind
property
Type
any
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
open
Kind
property
Type
import("@angular/core").InputSignal<boolean | undefined>
Requirement
required
Name
openChange
Kind
property
Type
import("@angular/core").OutputEmitterRef<TooltipOpenChangeDetail>
Requirement
required
Name
openDelayMs
Kind
property
Type
import("@angular/core").InputSignal<number | undefined>
Requirement
required
Name
ɵcmp
Kind
property
Type
i0.ɵɵComponentDeclaration<GrTooltipRoot, "gr-tooltip-root", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "defaultOpen": { "alias": "defaultOpen"; "required": false; "isSignal": true; }; "openDelayMs": { "alias": "openDelayMs"; "required": false; "isSignal": true; }; "closeDelayMs": { "alias": "closeDelayMs"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; }, { "openChange": "openChange"; }, never, ["*"], true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrTooltipRoot, never>
Requirement
required
Name
side
Kind
property
Type
import("@angular/core").InputSignal<"bottom" | "top" | undefined>
Requirement
required
Name
store
Kind
property
Type
TooltipStore
Requirement
required
DeclarationView source
GrTooltipTriggerts
export declare class GrTooltipTrigger implements OnDestroy {
private readonly store;
private readonly elementRef;
private readonly listeners;
private readonly consumerProps;
constructor();
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GrTooltipTrigger, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<GrTooltipTrigger, "[grTooltipTrigger]", 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<GrTooltipTrigger, "[grTooltipTrigger]", never, {}, {}, never, never, true, never>
required
ɵfac
property
i0.ɵɵFactoryDeclaration<GrTooltipTrigger, 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<GrTooltipTrigger, "[grTooltipTrigger]", never, {}, {}, never, never, true, never>
Requirement
required
Name
ɵfac
Kind
property
Type
i0.ɵɵFactoryDeclaration<GrTooltipTrigger, never>
Requirement
required
Name
store
Kind
property
Type
any
Requirement
required
DeclarationView source
provideTooltipStorets
export declare function provideTooltipStore(): Provider;
Name
Kind
Type
Requirement
return
return value
Provider
n/a
Name
return
Kind
return value
Type
Provider
Requirement
n/a
DeclarationView source
TOOLTIP_STOREts
export declare const TOOLTIP_STORE: InjectionToken<TooltipStore>;
DeclarationView source
TooltipOpenChangeDetailts
export interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required

TooltipStore

interface
DeclarationView source
TooltipStorets
export interface TooltipStore {
readonly service: TooltipService;
readonly connector: TooltipApi;
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: TooltipInput): void;
/**
* Late-binds the open-change handler a `GrTooltipRoot` wires to its
* `openChange` output when it ADOPTS a store created above it by
* `provideTooltipStore()` (see `use-tooltip.ts`) — such a store exists
* before any root does, so the output can't be wired at creation.
* Last binder wins (exactly one root per provided store).
*/
bindOpenChange(handler: (detail: import("./use-tooltip.js").TooltipOpenChangeDetail) => void): void;
}
Name
Kind
Type
Requirement
Description
bindOpenChange
method
(handler: (detail: import("./use-tooltip.js").TooltipOpenChangeDetail) => void) => void
required
Late-binds the open-change handler a `GrTooltipRoot` wires to its `openChange` output when it ADOPTS a store created above it by `provideTooltipStore()` (see `use-tooltip.ts`) — such a store exists before any root does, so the output can't be wired at creation. Last binder wins (exactly one root per provided store).
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
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: TooltipInput) => 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
bindOpenChange
Kind
method
Type
(handler: (detail: import("./use-tooltip.js").TooltipOpenChangeDetail) => void) => void
Requirement
required
Description
Late-binds the open-change handler a `GrTooltipRoot` wires to its `openChange` output when it ADOPTS a store created above it by `provideTooltipStore()` (see `use-tooltip.ts`) — such a store exists before any root does, so the output can't be wired at creation. Last binder wins (exactly one root per provided store).
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Description
Name
scope
Kind
property
Type
PartScope
Requirement
required
Description
Name
service
Kind
property
Type
TooltipService
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: TooltipInput) => 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).

@grassroot/ui-headless-svelte/tooltip

Svelte adapter

18 exports
View source packages/ui-headless/svelte/src/tooltip/index.ts

createTooltip

function
DeclarationView source
createTooltipts
export declare function createTooltip(inputGetter: () => TooltipInput, options?: UseTooltipOptions): UseTooltipResult;
Name
Kind
Type
Requirement
inputGetter
parameter
() => TooltipInput
required
options
parameter
UseTooltipOptions
optional
return
return value
UseTooltipResult
n/a
Name
inputGetter
Kind
parameter
Type
() => TooltipInput
Requirement
required
Name
options
Kind
parameter
Type
UseTooltipOptions
Requirement
optional
Name
return
Kind
return value
Type
UseTooltipResult
Requirement
n/a

TooltipArrow

value
DeclarationView source
TooltipArrowts
export declare const TooltipArrow: 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
DeclarationView source
TooltipChangeReasonts
type TooltipChangeReason = "pointer" | "focus" | "escape" | "delay" | "programmatic";
DeclarationView source
TooltipCommandts
type TooltipCommand = (CommandObject & {
readonly type: "OPEN_CHANGE_REQUEST";
readonly open: boolean;
readonly reason: TooltipChangeReason;
}) | ScheduleCommand<TooltipEvent> | CancelCommand;
DeclarationView source
TooltipContentts
export declare const TooltipContent: 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
DeclarationView source
TooltipContextts
type TooltipContext = {
readonly mode: "controlled" | "uncontrolled";
};
Name
Kind
Type
Requirement
mode
property
"controlled" | "uncontrolled"
required
Name
mode
Kind
property
Type
"controlled" | "uncontrolled"
Requirement
required
DeclarationView source
TooltipContextValuets
export interface TooltipContextValue {
readonly service: TooltipService;
readonly connector: TooltipApi;
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
* Accordion adapter's equivalent staleness fix; see
* `../accordion/context.ts`).
*/
readonly version: () => number;
}
Name
Kind
Type
Requirement
Description
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
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 Accordion adapter's equivalent staleness fix; see `../accordion/context.ts`).
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Description
Name
scope
Kind
property
Type
PartScope
Requirement
required
Description
Name
service
Kind
property
Type
TooltipService
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 Accordion adapter's equivalent staleness fix; see `../accordion/context.ts`).
DeclarationView source
TooltipEventts
type TooltipEvent = {
readonly type: "POINTER_ENTER";
} | {
readonly type: "POINTER_LEAVE";
} | {
readonly type: "FOCUS";
} | {
readonly type: "BLUR";
} | {
readonly type: "ESCAPE";
} | {
readonly type: "OPEN";
readonly reason: TooltipChangeReason;
} | {
readonly type: "CLOSE";
readonly reason: TooltipChangeReason;
};
DeclarationView source
TooltipInputts
type TooltipInput = {
/** Controlled committed open state. Defining it fixes controlled mode at first start. */
readonly open?: boolean;
/** Uncontrolled initial open state. */
readonly defaultOpen?: boolean;
/** Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate). */
readonly openDelayMs?: number;
/** Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate). */
readonly closeDelayMs?: number;
readonly disabled?: boolean;
/** Headless-layer styling hook only — the machine never branches on it. */
readonly side?: "top" | "bottom";
};
Name
Kind
Type
Requirement
Description
closeDelayMs
property
number
optional
Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate).
defaultOpen
property
boolean
optional
Uncontrolled initial open state.
disabled
property
boolean
optional
open
property
boolean
optional
Controlled committed open state. Defining it fixes controlled mode at first start.
openDelayMs
property
number
optional
Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate).
side
property
"top" | "bottom"
optional
Headless-layer styling hook only — the machine never branches on it.
Name
closeDelayMs
Kind
property
Type
number
Requirement
optional
Description
Delay before an uncontested POINTER_LEAVE closes. Default 0 (legacy immediate).
Name
defaultOpen
Kind
property
Type
boolean
Requirement
optional
Description
Uncontrolled initial open state.
Name
disabled
Kind
property
Type
boolean
Requirement
optional
Description
Name
open
Kind
property
Type
boolean
Requirement
optional
Description
Controlled committed open state. Defining it fixes controlled mode at first start.
Name
openDelayMs
Kind
property
Type
number
Requirement
optional
Description
Delay before an uncontested POINTER_ENTER opens. Default 0 (legacy immediate).
Name
side
Kind
property
Type
"top" | "bottom"
Requirement
optional
Description
Headless-layer styling hook only — the machine never branches on it.
DeclarationView source
TooltipMachinets
type TooltipMachine = Machine<TooltipInput, TooltipStateValue, TooltipContext, TooltipEvent, TooltipCommand>;
DeclarationView source
TooltipOpenChangeDetailts
export interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required

TooltipRoot

value
DeclarationView source
TooltipRootts
export declare const TooltipRoot: 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
DeclarationView source
TooltipSnapshotts
type TooltipSnapshot = Snapshot<TooltipStateValue, TooltipContext>;
DeclarationView source
TooltipStateValuets
type TooltipStateValue = "open" | "closed";
DeclarationView source
TooltipTriggerts
export declare const TooltipTrigger: 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
DeclarationView source
useTooltipContextts
export declare function useTooltipContext(partName: string): TooltipContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
TooltipContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
TooltipContextValue
Requirement
n/a

UseTooltipOptions

interface
DeclarationView source
UseTooltipOptionsts
export interface UseTooltipOptions {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
readonly scheduler?: Scheduler;
}
Name
Kind
Type
Requirement
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
scheduler
property
Scheduler
optional
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional

UseTooltipResult

interface
DeclarationView source
UseTooltipResultts
export interface UseTooltipResult {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
readonly version: () => number;
}
Name
Kind
Type
Requirement
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
version
property
() => number
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
Name
version
Kind
property
Type
() => number
Requirement
required

@grassroot/ui-headless-solid/tooltip

Solid adapter

15 exports
View source packages/ui-headless/solid/src/tooltip/index.ts

TooltipArrow

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

TooltipArrowProps

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

TooltipContent

function
DeclarationView source
TooltipContentts
export declare function TooltipContent(props: TooltipContentProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
TooltipContentProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
TooltipContentProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a
DeclarationView source
TooltipContentPropsts
export interface TooltipContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
readonly as?: AsProp;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
Name
as
Kind
property
Type
AsProp
Requirement
optional
DeclarationView source
TooltipContextts
export declare const TooltipContext: import("solid-js").Context<TooltipContextValue | undefined>;
DeclarationView source
TooltipContextValuets
export interface TooltipContextValue {
readonly service: TooltipService;
readonly connector: TooltipApi;
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<TooltipSnapshot>;
}
Name
Kind
Type
Requirement
Description
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
snapshot
property
Accessor<TooltipSnapshot>
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
TooltipApi
Requirement
required
Description
Name
scope
Kind
property
Type
PartScope
Requirement
required
Description
Name
service
Kind
property
Type
TooltipService
Requirement
required
Description
Name
snapshot
Kind
property
Type
Accessor<TooltipSnapshot>
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.
DeclarationView source
TooltipOpenChangeDetailts
export interface TooltipOpenChangeDetail {
readonly open: boolean;
readonly reason: TooltipChangeReason;
}
Name
Kind
Type
Requirement
open
property
boolean
required
reason
property
TooltipChangeReason
required
Name
open
Kind
property
Type
boolean
Requirement
required
Name
reason
Kind
property
Type
TooltipChangeReason
Requirement
required

TooltipRoot

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

TooltipRootProps

interface
DeclarationView source
TooltipRootPropsts
export interface TooltipRootProps extends Omit<JSX.HTMLAttributes<HTMLDivElement>, "onChange"> {
readonly as?: AsProp;
readonly open?: TooltipInput["open"];
readonly defaultOpen?: TooltipInput["defaultOpen"];
readonly openDelayMs?: TooltipInput["openDelayMs"];
readonly closeDelayMs?: TooltipInput["closeDelayMs"];
readonly disabled?: TooltipInput["disabled"];
readonly side?: TooltipInput["side"];
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
/** Native (production) by default; inject a virtual scheduler for tests. */
readonly scheduler?: UseTooltipOptions["scheduler"];
}
Name
Kind
Type
Requirement
Description
as
property
AsProp
optional
closeDelayMs
property
TooltipInput["closeDelayMs"]
optional
defaultOpen
property
TooltipInput["defaultOpen"]
optional
disabled
property
TooltipInput["disabled"]
optional
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
open
property
TooltipInput["open"]
optional
openDelayMs
property
TooltipInput["openDelayMs"]
optional
scheduler
property
UseTooltipOptions["scheduler"]
optional
Native (production) by default; inject a virtual scheduler for tests.
side
property
TooltipInput["side"]
optional
Name
as
Kind
property
Type
AsProp
Requirement
optional
Description
Name
closeDelayMs
Kind
property
Type
TooltipInput["closeDelayMs"]
Requirement
optional
Description
Name
defaultOpen
Kind
property
Type
TooltipInput["defaultOpen"]
Requirement
optional
Description
Name
disabled
Kind
property
Type
TooltipInput["disabled"]
Requirement
optional
Description
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Description
Name
open
Kind
property
Type
TooltipInput["open"]
Requirement
optional
Description
Name
openDelayMs
Kind
property
Type
TooltipInput["openDelayMs"]
Requirement
optional
Description
Name
scheduler
Kind
property
Type
UseTooltipOptions["scheduler"]
Requirement
optional
Description
Native (production) by default; inject a virtual scheduler for tests.
Name
side
Kind
property
Type
TooltipInput["side"]
Requirement
optional
Description

TooltipTrigger

function
DeclarationView source
TooltipTriggerts
export declare function TooltipTrigger(props: TooltipTriggerProps): JSX.Element;
Name
Kind
Type
Requirement
props
parameter
TooltipTriggerProps
required
return
return value
JSX.Element
n/a
Name
props
Kind
parameter
Type
TooltipTriggerProps
Requirement
required
Name
return
Kind
return value
Type
JSX.Element
Requirement
n/a
DeclarationView source
TooltipTriggerPropsts
export interface TooltipTriggerProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, "type"> {
readonly as?: AsProp;
}
Name
Kind
Type
Requirement
as
property
AsProp
optional
Name
as
Kind
property
Type
AsProp
Requirement
optional

useTooltip

function
DeclarationView source
useTooltipts
export declare function useTooltip(input: Accessor<TooltipInput>, options?: UseTooltipOptions): UseTooltipResult;
Name
Kind
Type
Requirement
input
parameter
Accessor<TooltipInput>
required
options
parameter
UseTooltipOptions
optional
return
return value
UseTooltipResult
n/a
Name
input
Kind
parameter
Type
Accessor<TooltipInput>
Requirement
required
Name
options
Kind
parameter
Type
UseTooltipOptions
Requirement
optional
Name
return
Kind
return value
Type
UseTooltipResult
Requirement
n/a
DeclarationView source
useTooltipContextts
export declare function useTooltipContext(partName: string): TooltipContextValue;
Name
Kind
Type
Requirement
partName
parameter
string
required
return
return value
TooltipContextValue
n/a
Name
partName
Kind
parameter
Type
string
Requirement
required
Name
return
Kind
return value
Type
TooltipContextValue
Requirement
n/a

UseTooltipOptions

interface
DeclarationView source
UseTooltipOptionsts
export interface UseTooltipOptions {
readonly onOpenChange?: (detail: TooltipOpenChangeDetail) => void;
readonly scheduler?: Scheduler;
}
Name
Kind
Type
Requirement
onOpenChange
property
(detail: TooltipOpenChangeDetail) => void
optional
scheduler
property
Scheduler
optional
Name
onOpenChange
Kind
property
Type
(detail: TooltipOpenChangeDetail) => void
Requirement
optional
Name
scheduler
Kind
property
Type
Scheduler
Requirement
optional

UseTooltipResult

interface
DeclarationView source
UseTooltipResultts
export interface UseTooltipResult {
readonly service: TooltipService;
readonly connector: TooltipApi;
readonly scope: PartScope;
readonly snapshot: Accessor<TooltipSnapshot>;
}
Name
Kind
Type
Requirement
connector
property
TooltipApi
required
scope
property
PartScope
required
service
property
TooltipService
required
snapshot
property
Accessor<TooltipSnapshot>
required
Name
connector
Kind
property
Type
TooltipApi
Requirement
required
Name
scope
Kind
property
Type
PartScope
Requirement
required
Name
service
Kind
property
Type
TooltipService
Requirement
required
Name
snapshot
Kind
property
Type
Accessor<TooltipSnapshot>
Requirement
required