- Prop
side- Type
"top" | "bottom" | undefined- Default
"bottom"- Requirement
- optional
- Description
- —
Docs Components Overlays
HoverCard
React example follows below.
Vue example follows below.
Angular example follows below.
Svelte example follows below.
Solid example follows below.
- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
const hoverCardFixture = { id: "hovercard", trigger: "@riya", name: "Riya Kapoor", body: "Owns ledger-api deploy pipeline.", side: "bottom", openDelay: 200, closeDelay: 120,} satisfies { id: string; trigger: string; name: string; body: string; side: "top" | "bottom"; openDelay: number; closeDelay: number;}; import { HoverCard } from "@grassroot/ui-react"; export default function HoverCardDemo() { return ( <div> <HoverCard trigger={<span className="text-heading underline">{hoverCardFixture.trigger}</span>} side={hoverCardFixture.side} openDelay={hoverCardFixture.openDelay} closeDelay={hoverCardFixture.closeDelay} > <div className="font-semibold text-heading">{hoverCardFixture.name}</div> <div className="text-body">{hoverCardFixture.body}</div> </HoverCard> </div> );}- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script setup lang="ts">const hoverCardFixture = { id: "hovercard", trigger: "@riya", name: "Riya Kapoor", body: "Owns ledger-api deploy pipeline.", side: "bottom", openDelay: 200, closeDelay: 120,} satisfies { id: string; trigger: string; name: string; body: string; side: "top" | "bottom"; openDelay: number; closeDelay: number;}; import { HoverCard } from "@grassroot/ui-vue";</script> <template> <div> <HoverCard :side="hoverCardFixture.side" :open-delay="hoverCardFixture.openDelay" :close-delay="hoverCardFixture.closeDelay" > <template #trigger ><span class="text-heading underline">{{ hoverCardFixture.trigger }}</span></template > <div class="font-semibold text-heading">{{ hoverCardFixture.name }}</div> <div class="text-body">{{ hoverCardFixture.body }}</div> </HoverCard> </div></template>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
import { Component } from "@angular/core";const hoverCardFixture = { id: "hovercard", trigger: "@riya", name: "Riya Kapoor", body: "Owns ledger-api deploy pipeline.", side: "bottom", openDelay: 200, closeDelay: 120,} satisfies { id: string; trigger: string; name: string; body: string; side: "top" | "bottom"; openDelay: number; closeDelay: number;}; import { GrassrootHoverCard } from "@grassroot/ui-angular"; @Component({ selector: "app-hover-card-demo", standalone: true, imports: [GrassrootHoverCard], template: ` <div> <grassroot-hover-card [side]="fixture.side" [openDelay]="fixture.openDelay" [closeDelay]="fixture.closeDelay" > <span trigger class="text-heading underline">{{ fixture.trigger }}</span> <div class="font-semibold text-heading">{{ fixture.name }}</div> <div class="text-body">{{ fixture.body }}</div> </grassroot-hover-card> </div> `,})export class HoverCardDemoComponent { protected readonly fixture = hoverCardFixture;} export default HoverCardDemoComponent;- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
<script lang="ts"> import { HoverCard } from "@grassroot/ui-svelte"; const hoverCardFixture = { id: "hovercard", trigger: "@riya", name: "Riya Kapoor", body: "Owns ledger-api deploy pipeline.", side: "bottom", openDelay: 200, closeDelay: 120, } satisfies { id: string; trigger: string; name: string; body: string; side: "top" | "bottom"; openDelay: number; closeDelay: number; }; </script> {#snippet trigger()}<span class="text-heading underline">{hoverCardFixture.trigger}</span>{/snippet}{#snippet children()}<div class="font-semibold text-heading">{hoverCardFixture.name}</div> <div class="text-body">{hoverCardFixture.body}</div>{/snippet}<div> <HoverCard side={hoverCardFixture.side} openDelay={hoverCardFixture.openDelay} closeDelay={hoverCardFixture.closeDelay} {trigger} {children} /></div>- parts
- —
- nodes
- —
- size
- —
- part
- —
ts
/** @jsxImportSource solid-js */import { HoverCard } from "@grassroot/ui-solid";const hoverCardFixture = { id: "hovercard", trigger: "@riya", name: "Riya Kapoor", body: "Owns ledger-api deploy pipeline.", side: "bottom", openDelay: 200, closeDelay: 120,} satisfies { id: string; trigger: string; name: string; body: string; side: "top" | "bottom"; openDelay: number; closeDelay: number;}; export default function HoverCardDemo() { return ( <div> <HoverCard trigger={<span class="text-heading underline">{hoverCardFixture.trigger}</span>} side={hoverCardFixture.side} openDelay={hoverCardFixture.openDelay} closeDelay={hoverCardFixture.closeDelay} > <div class="font-semibold text-heading">{hoverCardFixture.name}</div> <div class="text-body">{hoverCardFixture.body}</div> </HoverCard> </div> );}Installation
API Reference
Import
import { HoverCard } from "@grassroot/ui-react";
Props
Prop
Type
Default
Requirement
Description
side"top" | "bottom" | undefined"bottom"optional
—
openDelaynumber | undefined200optional
ms before opening on hover.
closeDelaynumber | undefined120optional
ms before closing after leave.
defaultOpenboolean | undefinedfalseoptional
Render initially open for layout/stories.
classNamestring | undefined—
optional
—
contentClassNamestring | undefined—
optional
—
- Prop
openDelay- Type
number | undefined- Default
200- Requirement
- optional
- Description
- ms before opening on hover.
- Prop
closeDelay- Type
number | undefined- Default
120- Requirement
- optional
- Description
- ms before closing after leave.
- Prop
defaultOpen- Type
boolean | undefined- Default
false- Requirement
- optional
- Description
- Render initially open for layout/stories.
- Prop
className- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
- Prop
contentClassName- Type
string | undefined- Default
- —
- Requirement
- optional
- Description
- —
Content regions
childrentrigger
Import
import { HoverCard } from "@grassroot/ui-vue";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
openDelaynumber200optional
closeDelaynumber120optional
defaultOpenbooleanfalseoptional
contentClassNamestringundefinedoptional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
openDelay- Type
number- Default
200- Requirement
- optional
- Prop
closeDelay- Type
number- Default
120- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
contentClassName- Type
string- Default
undefined- Requirement
- optional
Content regions
defaulttrigger
Import
import { Component } from "@angular/core";
import { GrassrootHoverCard } from "@grassroot/ui-angular";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
openDelaynumber200optional
closeDelaynumber120optional
defaultOpenbooleanfalseoptional
contentClassNamestring | undefinedundefinedoptional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
openDelay- Type
number- Default
200- Requirement
- optional
- Prop
closeDelay- Type
number- Default
120- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
contentClassName- Type
string | undefined- Default
undefined- Requirement
- optional
Content regions
defaulttrigger
Import
import { HoverCard } from "@grassroot/ui-svelte";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
openDelaynumber200optional
closeDelaynumber120optional
defaultOpenbooleanfalseoptional
classNamestring—
optional
contentClassNamestring—
optional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
openDelay- Type
number- Default
200- Requirement
- optional
- Prop
closeDelay- Type
number- Default
120- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
false- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
contentClassName- Type
string- Default
- —
- Requirement
- optional
Content regions
childrentrigger
Import
import { HoverCard } from "@grassroot/ui-solid";
Props
Prop
Type
Default
Requirement
side"top" | "bottom""bottom"optional
openDelaynumber—
optional
closeDelaynumber—
optional
defaultOpenboolean—
optional
classNamestring—
optional
contentClassNamestring—
optional
- Prop
side- Type
"top" | "bottom"- Default
"bottom"- Requirement
- optional
- Prop
openDelay- Type
number- Default
- —
- Requirement
- optional
- Prop
closeDelay- Type
number- Default
- —
- Requirement
- optional
- Prop
defaultOpen- Type
boolean- Default
- —
- Requirement
- optional
- Prop
className- Type
string- Default
- —
- Requirement
- optional
- Prop
contentClassName- Type
string- Default
- —
- Requirement
- optional
Content regions
childrentrigger