summaryrefslogtreecommitdiff
path: root/frontend/src/lib/components/ui/alert/alert.svelte
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/lib/components/ui/alert/alert.svelte')
-rw-r--r--frontend/src/lib/components/ui/alert/alert.svelte43
1 files changed, 43 insertions, 0 deletions
diff --git a/frontend/src/lib/components/ui/alert/alert.svelte b/frontend/src/lib/components/ui/alert/alert.svelte
new file mode 100644
index 0000000..e8f3489
--- /dev/null
+++ b/frontend/src/lib/components/ui/alert/alert.svelte
@@ -0,0 +1,43 @@
+<script lang="ts" module>
+ import { type VariantProps, tv } from "tailwind-variants";
+
+ export const alertVariants = tv({
+ base: "grid gap-0.5 rounded-lg border px-2 py-1.5 text-left text-xs/relaxed has-data-[slot=alert-action]:relative has-data-[slot=alert-action]:pr-18 has-[>svg]:grid-cols-[auto_1fr] has-[>svg]:gap-x-1.5 *:[svg]:row-span-2 *:[svg]:translate-y-0.5 *:[svg]:text-current *:[svg:not([class*='size-'])]:size-3.5 group/alert relative w-full",
+ variants: {
+ variant: {
+ default: "bg-card text-card-foreground",
+ destructive: "text-destructive bg-card *:data-[slot=alert-description]:text-destructive/90 *:[svg]:text-current",
+ },
+ },
+ defaultVariants: {
+ variant: "default",
+ },
+ });
+
+ export type AlertVariant = VariantProps<typeof alertVariants>["variant"];
+</script>
+
+<script lang="ts">
+ import { cn, type WithElementRef } from "$lib/utils.js";
+ import type { HTMLAttributes } from "svelte/elements";
+
+ let {
+ ref = $bindable(null),
+ class: className,
+ variant = "default",
+ children,
+ ...restProps
+ }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
+ variant?: AlertVariant;
+ } = $props();
+</script>
+
+<div
+ bind:this={ref}
+ data-slot="alert"
+ role="alert"
+ class={cn(alertVariants({ variant }), className)}
+ {...restProps}
+>
+ {@render children?.()}
+</div>