MicroClub Alert
mcoli-ui-registry/mc-alertFreeComponent
An alert component for MicroClub UI
Live preview
live · rendered by the registry
Rendered by mcoli-ui-registry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://mcoli-ui.microclub.info/r/mc-alert.jsonSource
1'use client';23import * as React from 'react';4import { CircleAlert, CircleCheck, Popcorn } from 'lucide-react';5import { cn } from '@/lib/utils';67type AlertVariant = 'success' | 'default' | 'destructive';89interface McAlertProps extends React.HTMLAttributes<HTMLDivElement> {10 variant: AlertVariant;11 title: string;12 description?: string;13 items?: string[];14}1516const variantStyles: Record<AlertVariant, string> = {17 success:18 'border border-success rounded-lg w-fit max-w-[719px] pt-[12px] pb-[14px] pl-[12px] pr-[12px]',19 default: 'border border-border rounded-lg w-fit max-w-[719px] pl-[16px] pr-3 py-3',20 destructive: 'border border-destructive rounded-lg w-fit max-w-[719px] pl-[16px] pr-4 py-3',21};2223const titleStyles: Record<AlertVariant, string> = {24 success: 'text-success font-medium text-base leading-6',25 default: 'text-card-foreground font-medium text-base leading-6',26 destructive: 'text-destructive font-medium text-base leading-6',27};2829const descStyles: Record<AlertVariant, string> = {30 success: 'text-success font-normal text-sm leading-5',31 default: 'text-muted-foreground font-normal text-sm leading-5',32 destructive: 'text-destructive font-normal text-sm leading-5',33};3435const iconMap: Record<AlertVariant, React.ReactNode> = {36 success: <CircleCheck className="size-4 shrink-0 stroke-2 text-success" />,37 default: <Popcorn className="size-4 shrink-0 stroke-2 text-card-foreground" />,38 destructive: <CircleAlert className="size-4 shrink-0 stroke-2 text-destructive" />,39};4041const iconGap: Record<AlertVariant, string> = {42 success: 'gap-1',43 default: 'gap-3',44 destructive: 'gap-3',45};4647function McAlert({ variant, title, description, items, className, ...props }: McAlertProps) {48 const hasSupportingContent = !!description || !!items?.length;4950 return (51 <div52 data-slot="mc-alert"53 data-variant={variant}54 className={cn(variantStyles[variant], className)}55 role="alert"56 {...props}57 >58 <div59 className={cn(60 'flex',61 hasSupportingContent ? 'items-start' : 'items-center',62 iconGap[variant]63 )}64 >65 <div className={cn('shrink-0', hasSupportingContent && 'pt-1')}>{iconMap[variant]}</div>66 <div className="min-w-0">67 <span className={cn('block', titleStyles[variant])}>{title}</span>6869 {description && <p className={cn('mt-0.5', descStyles[variant])}>{description}</p>}7071 {items && items.length > 0 && (72// … truncated
What it pulls in
npm packages
Files it writes
More from mcoli-ui-registry
All 42 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| MicroClub Accordionmc-accordion | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Alert Dialogmc-alert-dialog | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Avatarmc-avatar | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Badgemc-badge | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Breadcrumbmc-breadcrumb | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Buttonmc-button | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Calendarmc-calendar | mcoli-ui-registry | Components | Free | 3 deps | |
| MicroClub Cardmc-card | mcoli-ui-registry | Components | Free | no deps |
