Preview card

Preview card composes Base UI’s preview card primitives for rich link previews that appear on hover or focus.

import { PreviewCard } from "density-base-ui";

export default function PreviewCardExample() {
  return (
    <PreviewCard
      trigger="Preview Density"
      title="Density"
      summary="A quiet, durable interface system for focused product work."
    >
      <div className="preview-card-example-kicker">Preview</div>
    </PreviewCard>
  );
}

Props

Prop Attribute Values Default
href None URL string None
trigger None React node title
title, summary None React node None
children None React node None
presentation data-dn-presentation button button
emphasis data-dn-emphasis primary, secondary, outline, ghost ghost
size data-dn-size 2xs, xs, sm, md, lg, xl, 2xl, 3xl md
padding data-dn-padding none, 2xs, xs, sm, md, lg, xl, 2xl, 3xl md
popupPresentation data-dn-presentation card card
depth data-dn-depth 1, 2, 3, 4, 5, 6, 7 1

Emphasis

import { PreviewCard } from "density-base-ui";
export default function PreviewCardEmphasisExample() {
  return (
    <div style={styles.row}>
      <PreviewCard
        emphasis="primary"
        title="Primary"
        summary="Primary trigger"
      />
      <PreviewCard
        emphasis="secondary"
        title="Secondary"
        summary="Secondary trigger"
      />
      <PreviewCard
        emphasis="outline"
        title="Outline"
        summary="Outline trigger"
      />
      <PreviewCard emphasis="ghost" title="Ghost" summary="Ghost trigger" />
    </div>
  );
}
const styles = {
  row: { display: "flex", flexWrap: "wrap", gap: "0.5rem" },
} as const;

Size

import { PreviewCard } from "density-base-ui";
export default function PreviewCardSizeExample() {
  return (
    <div style={styles.row}>
      <PreviewCard size="2xs" title="2xs" />
      <PreviewCard size="xs" title="xs" />
      <PreviewCard size="sm" title="sm" />
      <PreviewCard size="md" title="md" />
      <PreviewCard size="lg" title="lg" />
      <PreviewCard size="xl" title="xl" />
      <PreviewCard size="2xl" title="2xl" />
      <PreviewCard size="3xl" title="3xl" />
    </div>
  );
}
const styles = {
  row: { display: "flex", flexWrap: "wrap", gap: "0.5rem" },
} as const;

Padding

import { PreviewCard } from "density-base-ui";
export default function PreviewCardPaddingExample() {
  return (
    <div style={styles.row}>
      <PreviewCard padding="none" title="None" />
      <PreviewCard padding="2xs" title="2xs" />
      <PreviewCard padding="xs" title="xs" />
      <PreviewCard padding="sm" title="sm" />
      <PreviewCard padding="md" title="md" />
      <PreviewCard padding="lg" title="lg" />
      <PreviewCard padding="xl" title="xl" />
      <PreviewCard padding="2xl" title="2xl" />
      <PreviewCard padding="3xl" title="3xl" />
    </div>
  );
}
const styles = {
  row: { display: "flex", flexWrap: "wrap", gap: "0.5rem" },
} as const;

Depth

import { PreviewCard } from "density-base-ui";
export default function PreviewCardDepthExample() {
  return (
    <div style={styles.row}>
      <PreviewCard depth="1" title="Depth 1" />
      <PreviewCard depth="2" title="Depth 2" />
      <PreviewCard depth="3" title="Depth 3" />
      <PreviewCard depth="4" title="Depth 4" />
      <PreviewCard depth="5" title="Depth 5" />
      <PreviewCard depth="6" title="Depth 6" />
      <PreviewCard depth="7" title="Depth 7" />
    </div>
  );
}
const styles = {
  row: { display: "flex", flexWrap: "wrap", gap: "0.5rem" },
} as const;