Docs Components Overlays

Tooltip

React example follows below.
ts
const tooltipFixture = {
id: "tooltip",
trigger: "Hover for tooltip",
content: "Last deploy 14m ago · v2.4.1",
side: "top",
} satisfies {
id: string;
trigger: string;
content: string;
side: "top" | "bottom";
};
import { Tooltip } from "@grassroot/ui-react";
export default function TooltipDemo() {
return (
<div>
<Tooltip content={<span>{tooltipFixture.content}</span>} side={tooltipFixture.side}>
<button type="button" className="text-body underline decoration-dotted underline-offset-4">
{tooltipFixture.trigger}
</button>
</Tooltip>
</div>
);
}
ts
<script setup lang="ts">
const tooltipFixture = {
id: "tooltip",
trigger: "Hover for tooltip",
content: "Last deploy 14m ago · v2.4.1",
side: "top",
} satisfies {
id: string;
trigger: string;
content: string;
side: "top" | "bottom";
};
import { Tooltip } from "@grassroot/ui-vue";
</script>
<template>
<div>
<Tooltip :side="tooltipFixture.side">
<template #default>
<button type="button" class="text-body underline decoration-dotted underline-offset-4">
{{ tooltipFixture.trigger }}
</button>
</template>
<template #content
><span>{{ tooltipFixture.content }}</span></template
>
</Tooltip>
</div>
</template>
ts
import { Component } from "@angular/core";
const tooltipFixture = {
id: "tooltip",
trigger: "Hover for tooltip",
content: "Last deploy 14m ago · v2.4.1",
side: "top",
} satisfies {
id: string;
trigger: string;
content: string;
side: "top" | "bottom";
};
import { GrassrootTooltip, GrassrootTooltipTrigger } from "@grassroot/ui-angular";
@Component({
selector: "app-tooltip-demo",
standalone: true,
imports: [GrassrootTooltip, GrassrootTooltipTrigger],
template: `
<div>
<grassroot-tooltip [side]="fixture.side">
<button
grassrootTooltipTrigger
type="button"
class="text-body underline decoration-dotted underline-offset-4"
>
{{ fixture.trigger }}
</button>
<span grassrootTooltipContent>{{ fixture.content }}</span>
</grassroot-tooltip>
</div>
`,
})
export class TooltipDemoComponent {
protected readonly fixture = tooltipFixture;
}
export default TooltipDemoComponent;
ts
<script lang="ts">
import { Tooltip } from "@grassroot/ui-svelte";
const tooltipFixture = {
id: "tooltip",
trigger: "Hover for tooltip",
content: "Last deploy 14m ago · v2.4.1",
side: "top",
} satisfies {
id: string;
trigger: string;
content: string;
side: "top" | "bottom";
};
</script>
{#snippet content()}<span>{tooltipFixture.content}</span>{/snippet}
{#snippet children(describedby: string, triggerProps)}<button
{...triggerProps}
type="button"
class="text-body underline decoration-dotted underline-offset-4"
aria-describedby={describedby}>{tooltipFixture.trigger}</button
>{/snippet}
<div>
<Tooltip side={tooltipFixture.side} {content} {children} />
</div>
ts
/** @jsxImportSource solid-js */
import { Tooltip } from "@grassroot/ui-solid";
const tooltipFixture = {
id: "tooltip",
trigger: "Hover for tooltip",
content: "Last deploy 14m ago · v2.4.1",
side: "top",
} satisfies {
id: string;
trigger: string;
content: string;
side: "top" | "bottom";
};
export default function TooltipDemo() {
return (
<div>
<Tooltip content={<span>{tooltipFixture.content}</span>} side={tooltipFixture.side}>
{(describedby, triggerProps) => (
<button
type="button"
class="text-body underline decoration-dotted underline-offset-4"
aria-describedby={describedby}
data-scope={triggerProps["data-scope"]}
data-part={triggerProps["data-part"]}
data-state={triggerProps.dataState()}
>
{tooltipFixture.trigger}
</button>
)}
</Tooltip>
</div>
);
}

Installation

API Reference

Import

import { Tooltip } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
side
"top" | "bottom" | undefined
"top"
optional
className
string | undefined
optional
Prop
side
Type
"top" | "bottom" | undefined
Default
"top"
Requirement
optional
Prop
className
Type
string | undefined
Default
Requirement
optional

Content regions

  • children
  • content

Import

import { Tooltip } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
side
"top" | "bottom"
"top"
optional
Prop
side
Type
"top" | "bottom"
Default
"top"
Requirement
optional

Content regions

  • content
  • default

Import

import { Component } from "@angular/core";
import { GrassrootTooltip, GrassrootTooltipTrigger } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
side
"top" | "bottom"
"top"
optional
Prop
side
Type
"top" | "bottom"
Default
"top"
Requirement
optional

Content regions

  • content
  • default

Import

import { Tooltip } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
side
"top" | "bottom"
"top"
optional
className
string
optional
Prop
side
Type
"top" | "bottom"
Default
"top"
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Content regions

  • children
  • content

Import

import { Tooltip } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
side
"top" | "bottom"
"top"
optional
className
string
optional
Prop
side
Type
"top" | "bottom"
Default
"top"
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Content regions

  • children
  • content