Files
fn-design-system/components/alert.tsx
T
Egutierrez 5a824c2eee initial: mirror of @fn_library from fn_registry
75 components + DESIGN_SYSTEM.md + sync script.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 19:06:49 +02:00

71 lines
1.5 KiB
TypeScript

import * as React from 'react'
import { Alert as MantineAlert, Box, Text } from '@mantine/core'
type AlertVariant = 'default' | 'destructive'
const variantColorMap: Record<AlertVariant, string | undefined> = {
default: undefined,
destructive: 'red',
}
function Alert({
className,
variant = 'default',
children,
...props
}: React.ComponentProps<'div'> & { variant?: AlertVariant }) {
return (
<MantineAlert
data-slot="alert"
color={variantColorMap[variant]}
radius="md"
variant="light"
className={className}
{...props}
>
{children}
</MantineAlert>
)
}
function AlertTitle({ className, ...props }: React.ComponentProps<'div'>) {
return (
<Text
component="div"
data-slot="alert-title"
fw={500}
size="sm"
className={className}
{...props}
/>
)
}
function AlertDescription({ className, ...props }: React.ComponentProps<'div'>) {
return (
<Text
component="div"
data-slot="alert-description"
size="sm"
c="dimmed"
className={className}
{...props}
/>
)
}
function AlertAction({ className, style, ...props }: React.ComponentProps<'div'>) {
return (
<Box
data-slot="alert-action"
style={{ position: 'absolute', top: 'var(--mantine-spacing-xs)', right: 'var(--mantine-spacing-xs)', ...style }}
className={className}
{...props}
/>
)
}
const alertVariants = {} as const
export { Alert, AlertTitle, AlertDescription, AlertAction, alertVariants }