diff --git a/src/app.css b/src/app.css index 5fb0a70..f2b2e1c 100644 --- a/src/app.css +++ b/src/app.css @@ -129,6 +129,23 @@ } } + /* Card fade-in animation with stagger support */ + .animate-card-in { + animation: cardFadeIn 0.4s ease-out forwards; + opacity: 0; + } + + @keyframes cardFadeIn { + from { + opacity: 0; + transform: translateY(20px) scale(0.95); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } + } + /* Neon Text Glow Effects */ .text-glow-sm { text-shadow: 0 0 10px currentColor; diff --git a/src/lib/components/data-display/DataTable.svelte b/src/lib/components/data-display/DataTable.svelte index 5cc8e84..6cf9200 100644 --- a/src/lib/components/data-display/DataTable.svelte +++ b/src/lib/components/data-display/DataTable.svelte @@ -10,7 +10,7 @@ render?: (value: T[keyof T], row: T) => unknown; align?: 'left' | 'center' | 'right'; class?: string; - width?: string; // e.g., '200px', '30%', 'auto' + width?: string; } interface Props { @@ -20,7 +20,7 @@ striped?: boolean; hoverable?: boolean; compact?: boolean; - fixedLayout?: boolean; // Use table-layout: fixed for consistent column widths + fixedLayout?: boolean; } let { @@ -71,19 +71,18 @@
| handleSort(column)}
>
@@ -94,16 +93,16 @@
>
{column.label}
{#if column.sortable}
-
+ | |
|---|---|
| + | {#if column.render} {@html column.render(row[column.key], row)} {:else} @@ -129,3 +136,50 @@ |