Card Preview 01

PreviousNext

Preview card using Base UI PreviewCard with hover popup displaying content preview and Material UI styling

Docs
mui-treasuryitem

Preview

Loading preview…
components/card-preview-01/card-preview-01.tsx
"use client";

import * as React from "react";
import { PreviewCard } from "@base-ui-components/react/preview-card";
import Box from "@mui/material/Box";
import Card from "@mui/material/Card";
import CardContent from "@mui/material/CardContent";
import CardMedia from "@mui/material/CardMedia";
import Typography from "@mui/material/Typography";
import Link from "@mui/material/Link";

export default function CardPreview01() {
  return (
    <Box sx={{ maxWidth: 600, mx: "auto", p: 4 }}>
      <Typography variant="body1" sx={{ lineHeight: 1.8 }}>
        The principles of good{" "}
        <PreviewCard.Root>
          <PreviewCard.Trigger
            aria-haspopup="dialog"
            render={<Link href="#" />}
          >
            typography
          </PreviewCard.Trigger>
          <PreviewCard.Portal>
            <PreviewCard.Positioner side="bottom" sideOffset={8}>
              <PreviewCard.Popup
                render={
                  <Box
                    sx={{
                      transformOrigin: "var(--transform-origin)",
                      "&[data-starting-style]": {
                        opacity: 0,
                        transform: "scale(0.95)",
                      },
                      "&[data-ending-style]": {
                        opacity: 0,
                        transform: "scale(0.95)",
                        transition: "opacity 150ms, transform 150ms",
                      },
                      transition: "opacity 150ms, transform 150ms",
                    }}
                  />
                }
              >
                <Card sx={{ maxWidth: 320 }}>
                  <CardMedia
                    component="img"
                    image="https://placehold.co/640x360"
                    alt="Typography example showing Station Hopplein signage"
                    sx={{
                      aspectRatio: "16/9",
                      objectFit: "cover",
                    }}
                  />
                  <CardContent>
                    <Typography
                      variant="subtitle1"
                      component="h3"
                      fontWeight="bold"
                      gutterBottom
                    >
                      Typography
                    </Typography>
                    <Typography variant="body2" color="text.secondary">
                      Typography is the art and science of arranging type to
                      make written language clear, visually appealing, and
                      effective in communication.
                    </Typography>
                  </CardContent>
                </Card>
              </PreviewCard.Popup>
            </PreviewCard.Positioner>
          </PreviewCard.Portal>
        </PreviewCard.Root>{" "}
        remain into
      </Typography>
    </Box>
  );
}

Installation

npx shadcn@latest add @mui-treasury/card-preview-01

Usage

import { CardPreview01 } from "@/components/card-preview-01"
<CardPreview01 />