dc78d8fea3
Componentes React reutilizables: card, dialog, tabs, select, alert, badge, button, input, label, skeleton, tooltip, progress_bar, page_header, form_field, settings_page, crud_page, analytics_page, dashboard_layout. Charts: area, bar, line, sparkline, kpi_card, chart_container. Hooks Wails: use_wails_query, use_wails_mutation, use_wails_stream, use_wails_event, use_animated_canvas. Funciones core: cn, format_compact, chart_colors, get_series_color, wails_cache, theme_config_to_colors. Tipos: chart_series, wails_ipc, theme_config, component_variants. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
35 lines
1.8 KiB
TypeScript
35 lines
1.8 KiB
TypeScript
import * as React from "react"
|
|
import { cva, type VariantProps } from "class-variance-authority"
|
|
import { cn } from "../core/cn"
|
|
|
|
const alertVariants = cva(
|
|
"group/alert relative grid w-full gap-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-2 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-4",
|
|
{
|
|
variants: {
|
|
variant: {
|
|
default: "bg-card text-card-foreground",
|
|
destructive: "bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
|
|
},
|
|
},
|
|
defaultVariants: { variant: "default" },
|
|
}
|
|
)
|
|
|
|
function Alert({ className, variant, ...props }: React.ComponentProps<"div"> & VariantProps<typeof alertVariants>) {
|
|
return <div data-slot="alert" role="alert" className={cn(alertVariants({ variant }), className)} {...props} />
|
|
}
|
|
|
|
function AlertTitle({ className, ...props }: React.ComponentProps<"div">) {
|
|
return <div data-slot="alert-title" className={cn("font-medium group-has-[>svg]/alert:col-start-2 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground", className)} {...props} />
|
|
}
|
|
|
|
function AlertDescription({ className, ...props }: React.ComponentProps<"div">) {
|
|
return <div data-slot="alert-description" className={cn("text-sm text-balance text-muted-foreground md:text-pretty [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4", className)} {...props} />
|
|
}
|
|
|
|
function AlertAction({ className, ...props }: React.ComponentProps<"div">) {
|
|
return <div data-slot="alert-action" className={cn("absolute top-2 right-2", className)} {...props} />
|
|
}
|
|
|
|
export { Alert, AlertTitle, AlertDescription, AlertAction, alertVariants }
|