Refactor card components to standardize density and layout
Publish telemt-api gateway Docker image / test (push) Successful in 24s
Publish telemt-api gateway Docker image / build-and-push (push) Successful in 2m17s

- Updated Card component styles across multiple files to introduce a `density` prop, allowing for compact layouts and improved visual consistency.
- Removed unnecessary padding from card components to enhance alignment and create a more cohesive appearance throughout the application.
This commit is contained in:
Denozordec
2026-03-31 20:15:30 +07:00
parent 31d0db57f1
commit c8724268e9
6 changed files with 18 additions and 8 deletions
@@ -19,7 +19,7 @@
} = $props(); } = $props();
</script> </script>
<Card.Root class={cn('gap-0 py-0 overflow-hidden rounded-lg border border-border shadow-sm', className)}> <Card.Root density="compact" class={cn('overflow-hidden rounded-lg border border-border shadow-sm', className)}>
{#if title} {#if title}
<Card.Header class="border-b border-border bg-muted/40 px-4 py-3"> <Card.Header class="border-b border-border bg-muted/40 px-4 py-3">
<Card.Title class="text-base font-semibold">{title}</Card.Title> <Card.Title class="text-base font-semibold">{title}</Card.Title>
@@ -140,7 +140,7 @@
</script> </script>
<div class="mb-6 grid gap-4 lg:grid-cols-2"> <div class="mb-6 grid gap-4 lg:grid-cols-2">
<Card.Root class="gap-0 py-0 overflow-hidden rounded-lg border border-border shadow-sm"> <Card.Root density="compact" class="overflow-hidden rounded-lg border border-border shadow-sm">
<Card.Header class="border-b border-border bg-muted/40 px-4 py-3"> <Card.Header class="border-b border-border bg-muted/40 px-4 py-3">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<div class="flex size-9 items-center justify-center rounded-lg bg-muted text-muted-foreground"> <div class="flex size-9 items-center justify-center rounded-lg bg-muted text-muted-foreground">
@@ -156,7 +156,7 @@
<canvas bind:this={elDonut} class="max-h-full w-full"></canvas> <canvas bind:this={elDonut} class="max-h-full w-full"></canvas>
</Card.Content> </Card.Content>
</Card.Root> </Card.Root>
<Card.Root class="gap-0 py-0 overflow-hidden rounded-lg border border-border shadow-sm"> <Card.Root density="compact" class="overflow-hidden rounded-lg border border-border shadow-sm">
<Card.Header class="border-b border-border bg-muted/40 px-4 py-3"> <Card.Header class="border-b border-border bg-muted/40 px-4 py-3">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<div class="flex size-9 items-center justify-center rounded-lg bg-muted text-muted-foreground"> <div class="flex size-9 items-center justify-center rounded-lg bg-muted text-muted-foreground">
+1 -1
View File
@@ -26,7 +26,7 @@
} = $props(); } = $props();
</script> </script>
<Card.Root class={cn('gap-0 py-0 border-l-4 shadow-sm', kpiAccent[accent].border, className)}> <Card.Root class={cn('border-l-4 shadow-sm', kpiAccent[accent].border, className)}>
<Card.Header class={cn(headerClass)}> <Card.Header class={cn(headerClass)}>
<div class="flex gap-3"> <div class="flex gap-3">
<div <div
+1 -1
View File
@@ -25,7 +25,7 @@
} = $props(); } = $props();
</script> </script>
<Card.Root class={cn('gap-0 py-0 border-l-4 shadow-sm transition-colors', kpiAccent[accent].border, className)}> <Card.Root class={cn('border-l-4 shadow-sm transition-colors', kpiAccent[accent].border, className)}>
<Card.Header class="pb-2"> <Card.Header class="pb-2">
<div class="flex gap-3"> <div class="flex gap-3">
<div <div
+1 -1
View File
@@ -62,7 +62,7 @@
<Card.Root <Card.Root
class={cn( class={cn(
'gap-0 py-0 border-border bg-card shadow-sm transition-colors dark:bg-card/80', 'border-border bg-card shadow-sm transition-colors dark:bg-card/80',
className className
)} )}
> >
+12 -2
View File
@@ -7,15 +7,25 @@
class: className, class: className,
children, children,
size = "default", size = "default",
density = "default",
...restProps ...restProps
}: WithElementRef<HTMLAttributes<HTMLDivElement>> & { size?: "default" | "sm" } = $props(); }: WithElementRef<HTMLAttributes<HTMLDivElement>> & {
size?: "default" | "sm";
density?: "default" | "compact";
} = $props();
</script> </script>
<div <div
bind:this={ref} bind:this={ref}
data-slot="card" data-slot="card"
data-size={size} data-size={size}
class={cn("ring-foreground/10 bg-card text-card-foreground gap-4 overflow-hidden rounded-xl py-4 text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:gap-3 data-[size=sm]:py-3 data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className)} data-density={density}
class={cn(
"ring-foreground/10 bg-card text-card-foreground overflow-hidden rounded-xl text-sm ring-1 has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col",
"density-default gap-4 py-4 data-[size=sm]:gap-3 data-[size=sm]:py-3",
"density-compact gap-0 py-0",
className
)}
{...restProps} {...restProps}
> >
{@render children?.()} {@render children?.()}