Openstatus www.openstatus.dev
at main 66 lines 1.6 kB view raw
1import { type VariantProps, cva } from "class-variance-authority"; 2import type * as React from "react"; 3 4import { cn } from "@/lib/utils"; 5 6const alertVariants = cva( 7 "relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current", 8 { 9 variants: { 10 variant: { 11 default: "bg-card text-card-foreground", 12 destructive: 13 "text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90", 14 }, 15 }, 16 defaultVariants: { 17 variant: "default", 18 }, 19 }, 20); 21 22function Alert({ 23 className, 24 variant, 25 ...props 26}: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>) { 27 return ( 28 <div 29 data-slot="alert" 30 role="alert" 31 className={cn(alertVariants({ variant }), className)} 32 {...props} 33 /> 34 ); 35} 36 37function AlertTitle({ className, ...props }: React.ComponentProps<"div">) { 38 return ( 39 <div 40 data-slot="alert-title" 41 className={cn( 42 "col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", 43 className, 44 )} 45 {...props} 46 /> 47 ); 48} 49 50function AlertDescription({ 51 className, 52 ...props 53}: React.ComponentProps<"div">) { 54 return ( 55 <div 56 data-slot="alert-description" 57 className={cn( 58 "col-start-2 grid justify-items-start gap-1 text-muted-foreground text-sm [&_p]:leading-relaxed", 59 className, 60 )} 61 {...props} 62 /> 63 ); 64} 65 66export { Alert, AlertTitle, AlertDescription };