Card
blok/cardFreeComponent
Containers for displaying content and actions about a single subject.
Install it
npx shadcn@latest add https://blok.sitecore.com/r/card.jsonSource
1import { type VariantProps, cva } from "class-variance-authority";2import type * as React from "react";34import { cn } from "@/lib/utils";56const cardVariants = cva(7 "flex flex-col gap-6 border transition-shadow focus-visible:outline-none",8 {9 variants: {10 elevation: {11 none: "shadow-none",12 xs: "shadow-xs hover:shadow-sm focus-visible:shadow-sm",13 sm: "shadow-sm hover:shadow-base focus-visible:shadow-base",14 base: "shadow-base hover:shadow-md focus-visible:shadow-md",15 md: "shadow-md hover:shadow-lg focus-visible:shadow-lg",16 lg: "shadow-lg hover:shadow-xl focus-visible:shadow-xl",17 },18 style: {19 flat: "bg-body-bg border-transparent",20 outline: "bg-body-bg border-border-color",21 filled: "bg-subtle-bg border-transparent",22 },23 padding: {24 sm: "px-3 py-3 rounded-base",25 md: "px-5 py-5 rounded-md",26 lg: "px-7 py-7 rounded-lg",27 },28 },29 defaultVariants: {30 elevation: "none",31 style: "flat",32 padding: "lg",33 },34 compoundVariants: [35 {36 style: "outline",37 class: "shadow-none hover:shadow-base focus-visible:shadow-base",38 },39 ],40 },41);4243function Card({44 className,45 elevation,46 style,47 padding,48 ...props49}: React.ComponentProps<"div"> & VariantProps<typeof cardVariants>) {50 return (51 <div52 data-slot="card"53 className={cn(cardVariants({ elevation, style, padding }), className)}54 {...props}55 />56 );57}5859function CardHeader({ className, ...props }: React.ComponentProps<"div">) {60 return (61 <div62 data-slot="card-header"63 className={cn(64 "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",65 className,66 )}67 {...props}68 />69 );70}7172function CardTitle({ className, ...props }: React.ComponentProps<"div">) {73 return (74 <div75 data-slot="card-title"76 className={cn("leading-none font-semibold", className)}77 {...props}78 />79 );80}8182function CardDescription({ className, ...props }: React.ComponentProps<"div">) {83 return (84 <div85 data-slot="card-description"86 className={cn("text-subtle-text text-sm", className)}87 {...props}88 />89 );90}9192function CardAction({ className, ...props }: React.ComponentProps<"div">) {93 return (94 <div95 data-slot="card-action"96 className={cn(97// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from blok
All 72 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | blok | Components | Free | 2 deps · 2 files | |
| Action baraction-bar | blok | Components | Free | 1 dep · 2 files | |
| Alertalert | blok | Components | Free | 2 deps · 2 files | |
| Alert dialogalert-dialog | blok | Components | Free | 2 deps | |
| Aspect ratioaspect-ratio | blok | Components | Free | 1 dep | |
| Avataravatar | blok | Components | Free | 1 dep | |
| Badgebadge | blok | Components | Free | 2 deps | |
| All componentsblok-components | blok | Components | Free | no deps |
