Tooltip
This is a component that represents a tooltip.
- Tooltips provide contextual hints on hover or focus.
- Content appears in a compact floating surface.
Preview
Usage
import { Component } from "@angular/core";
import { TooltipComponent } from "./tooltip.component";
@Component({
selector: "rui-tooltip-demo",
template: `
<rui-tooltip text="Copy to clipboard">
<button
class="rounded-xl border border-primary-300 px-3 py-2 text-sm font-semibold dark:border-primary-700">
Hover me
</button>
</rui-tooltip>
`,
imports: [TooltipComponent],
})
export class TooltipDemoComponent {}
Source Code
import { ChangeDetectionStrategy, Component, HostListener, Input, signal } from "@angular/core";
@Component({
selector: "rui-tooltip",
template: `
<span class="relative inline-flex" (mouseenter)="open()" (mouseleave)="close()">
<ng-content></ng-content>
@if (isOpen()) {
<span
class="absolute -top-9 left-1/2 z-20 -translate-x-1/2 whitespace-nowrap rounded-md bg-primary-900 px-2 py-1 text-xs font-semibold text-primary-100 dark:bg-primary-100 dark:text-primary-900">
{{ text }}
</span>
}
</span>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class TooltipComponent {
@Input() text: string = "Tooltip";
protected isOpen = signal(false);
open() {
this.isOpen.set(true);
}
close() {
this.isOpen.set(false);
}
@HostListener("focusin") onFocusIn() {
this.open();
}
@HostListener("focusout") onFocusOut() {
this.close();
}
}
Copyright © 2026 Jarrett Huang | MIT License | Github