This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

core / web / src / lib / components / ui / Card.svelte
1.3 kB 66 lines
1<script module lang="ts"> 2 import { tv, type VariantProps } from "tailwind-variants"; 3 4 export const card = tv({ 5 base: "rounded-sm", 6 variants: { 7 border: { 8 true: "border border-border-default", 9 false: "" 10 }, 11 shadow: { 12 true: "shadow-xs", 13 false: "" 14 }, 15 background: { 16 true: "bg-background-default", 17 false: "" 18 }, 19 padding: { 20 default: "px-6 py-4", 21 sm: "p-4", 22 none: "" 23 } 24 }, 25 defaultVariants: { 26 border: true, 27 shadow: false, 28 background: true, 29 padding: "default" 30 } 31 }); 32 33 export type CardVariants = VariantProps<typeof card>; 34</script> 35 36<script lang="ts"> 37 import type { Snippet } from "svelte"; 38 import type { HTMLAttributes } from "svelte/elements"; 39 40 interface Props extends Omit<HTMLAttributes<HTMLDivElement>, "class" | "children"> { 41 border?: CardVariants["border"]; 42 shadow?: CardVariants["shadow"]; 43 background?: CardVariants["background"]; 44 padding?: CardVariants["padding"]; 45 class?: string; 46 children?: Snippet; 47 } 48 49 let { 50 border = true, 51 shadow = false, 52 background = true, 53 padding = "default", 54 class: className, 55 children, 56 ...rest 57 }: Props = $props(); 58 59 const classes = $derived(card({ border, shadow, background, padding, class: className })); 60</script> 61 62<div class={classes} {...rest}> 63 {#if children} 64 {@render children()} 65 {/if} 66</div>