summaryrefslogtreecommitdiffstats
path: root/src/ui/objects/Alert.tsx
blob: f590e181134d4748dacaddd1597eca3a14b1f6de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import type { HTMLTag, Polymorphic } from "corvos/plugins/jsx.ts";

export type Props<Tag extends HTMLTag> = Polymorphic<{
	as?: Tag;
	icon?: JSX.Element;
	variant?: "accent" | "positive" | "negative" | "warning";
}>;

export const Alert = <T extends HTMLTag = "div">({
	children,
	as: Tag = "div" as T,
	variant,
	icon,
	class: cls,
	...props
}: Props<T>) => (
	<Tag class:list={["o-alert", { [`o-alert--${variant}`]: variant }, cls]} {...props}>
		{icon && <span class="u-mie-100">{icon}</span>}
		{children}
	</Tag>
);