@synthaxai/ui 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +262 -0
- package/dist/app.css +2 -0
- package/dist/app.html +12 -0
- package/dist/data-display/DataTable/DataTable.svelte +773 -0
- package/dist/data-display/DataTable/DataTable.svelte.d.ts +120 -0
- package/dist/data-display/DataTable/DataTable.svelte.d.ts.map +1 -0
- package/dist/data-display/DataTable/index.d.ts +2 -0
- package/dist/data-display/DataTable/index.d.ts.map +1 -0
- package/dist/data-display/DataTable/index.js +1 -0
- package/dist/data-display/StatCard/StatCard.svelte +409 -0
- package/dist/data-display/StatCard/StatCard.svelte.d.ts +63 -0
- package/dist/data-display/StatCard/StatCard.svelte.d.ts.map +1 -0
- package/dist/data-display/StatCard/index.d.ts +2 -0
- package/dist/data-display/StatCard/index.d.ts.map +1 -0
- package/dist/data-display/StatCard/index.js +1 -0
- package/dist/data-display/index.d.ts +8 -0
- package/dist/data-display/index.d.ts.map +1 -0
- package/dist/data-display/index.js +7 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte +693 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts +66 -0
- package/dist/dialogs/ConfirmDialog/ConfirmDialog.svelte.d.ts.map +1 -0
- package/dist/dialogs/ConfirmDialog/index.d.ts +2 -0
- package/dist/dialogs/ConfirmDialog/index.d.ts.map +1 -0
- package/dist/dialogs/ConfirmDialog/index.js +1 -0
- package/dist/dialogs/Modal/Modal.svelte +441 -0
- package/dist/dialogs/Modal/Modal.svelte.d.ts +69 -0
- package/dist/dialogs/Modal/Modal.svelte.d.ts.map +1 -0
- package/dist/dialogs/Modal/index.d.ts +2 -0
- package/dist/dialogs/Modal/index.d.ts.map +1 -0
- package/dist/dialogs/Modal/index.js +1 -0
- package/dist/dialogs/index.d.ts +8 -0
- package/dist/dialogs/index.d.ts.map +1 -0
- package/dist/dialogs/index.js +7 -0
- package/dist/feedback/Alert/Alert.svelte +565 -0
- package/dist/feedback/Alert/Alert.svelte.d.ts +60 -0
- package/dist/feedback/Alert/Alert.svelte.d.ts.map +1 -0
- package/dist/feedback/Alert/index.d.ts +2 -0
- package/dist/feedback/Alert/index.d.ts.map +1 -0
- package/dist/feedback/Alert/index.js +1 -0
- package/dist/feedback/EmptyState/EmptyState.svelte +377 -0
- package/dist/feedback/EmptyState/EmptyState.svelte.d.ts +63 -0
- package/dist/feedback/EmptyState/EmptyState.svelte.d.ts.map +1 -0
- package/dist/feedback/EmptyState/index.d.ts +2 -0
- package/dist/feedback/EmptyState/index.d.ts.map +1 -0
- package/dist/feedback/EmptyState/index.js +1 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte +585 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts +68 -0
- package/dist/feedback/ProgressBar/ProgressBar.svelte.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.d.ts +2 -0
- package/dist/feedback/ProgressBar/index.d.ts.map +1 -0
- package/dist/feedback/ProgressBar/index.js +1 -0
- package/dist/feedback/Skeleton/Skeleton.svelte +568 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts +54 -0
- package/dist/feedback/Skeleton/Skeleton.svelte.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.d.ts +2 -0
- package/dist/feedback/Skeleton/index.d.ts.map +1 -0
- package/dist/feedback/Skeleton/index.js +1 -0
- package/dist/feedback/Spinner/Spinner.svelte +434 -0
- package/dist/feedback/Spinner/Spinner.svelte.d.ts +49 -0
- package/dist/feedback/Spinner/Spinner.svelte.d.ts.map +1 -0
- package/dist/feedback/Spinner/index.d.ts +2 -0
- package/dist/feedback/Spinner/index.d.ts.map +1 -0
- package/dist/feedback/Spinner/index.js +1 -0
- package/dist/feedback/Toast/Toast.svelte +587 -0
- package/dist/feedback/Toast/Toast.svelte.d.ts +55 -0
- package/dist/feedback/Toast/Toast.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/ToastContainer.svelte +168 -0
- package/dist/feedback/Toast/ToastContainer.svelte.d.ts +28 -0
- package/dist/feedback/Toast/ToastContainer.svelte.d.ts.map +1 -0
- package/dist/feedback/Toast/index.d.ts +4 -0
- package/dist/feedback/Toast/index.d.ts.map +1 -0
- package/dist/feedback/Toast/index.js +3 -0
- package/dist/feedback/Toast/toast-store.d.ts +72 -0
- package/dist/feedback/Toast/toast-store.d.ts.map +1 -0
- package/dist/feedback/Toast/toast-store.js +157 -0
- package/dist/feedback/index.d.ts +13 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +12 -0
- package/dist/forms/Checkbox/Checkbox.svelte +404 -0
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts +62 -0
- package/dist/forms/Checkbox/Checkbox.svelte.d.ts.map +1 -0
- package/dist/forms/Checkbox/index.d.ts +2 -0
- package/dist/forms/Checkbox/index.d.ts.map +1 -0
- package/dist/forms/Checkbox/index.js +1 -0
- package/dist/forms/FormField/FormField.svelte +299 -0
- package/dist/forms/FormField/FormField.svelte.d.ts +43 -0
- package/dist/forms/FormField/FormField.svelte.d.ts.map +1 -0
- package/dist/forms/FormField/index.d.ts +2 -0
- package/dist/forms/FormField/index.d.ts.map +1 -0
- package/dist/forms/FormField/index.js +1 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte +418 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts +70 -0
- package/dist/forms/RadioGroup/RadioGroup.svelte.d.ts.map +1 -0
- package/dist/forms/RadioGroup/index.d.ts +2 -0
- package/dist/forms/RadioGroup/index.d.ts.map +1 -0
- package/dist/forms/RadioGroup/index.js +1 -0
- package/dist/forms/Select/Select.svelte +548 -0
- package/dist/forms/Select/Select.svelte.d.ts +74 -0
- package/dist/forms/Select/Select.svelte.d.ts.map +1 -0
- package/dist/forms/Select/index.d.ts +2 -0
- package/dist/forms/Select/index.d.ts.map +1 -0
- package/dist/forms/Select/index.js +1 -0
- package/dist/forms/TextInput/TextInput.svelte +628 -0
- package/dist/forms/TextInput/TextInput.svelte.d.ts +97 -0
- package/dist/forms/TextInput/TextInput.svelte.d.ts.map +1 -0
- package/dist/forms/TextInput/index.d.ts +2 -0
- package/dist/forms/TextInput/index.d.ts.map +1 -0
- package/dist/forms/TextInput/index.js +1 -0
- package/dist/forms/Textarea/Textarea.svelte +587 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts +71 -0
- package/dist/forms/Textarea/Textarea.svelte.d.ts.map +1 -0
- package/dist/forms/Textarea/index.d.ts +2 -0
- package/dist/forms/Textarea/index.d.ts.map +1 -0
- package/dist/forms/Textarea/index.js +1 -0
- package/dist/forms/index.d.ts +13 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +12 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/layout/Card/Card.svelte +316 -0
- package/dist/layout/Card/Card.svelte.d.ts +63 -0
- package/dist/layout/Card/Card.svelte.d.ts.map +1 -0
- package/dist/layout/Card/index.d.ts +2 -0
- package/dist/layout/Card/index.d.ts.map +1 -0
- package/dist/layout/Card/index.js +1 -0
- package/dist/layout/Container/Container.svelte +252 -0
- package/dist/layout/Container/Container.svelte.d.ts +50 -0
- package/dist/layout/Container/Container.svelte.d.ts.map +1 -0
- package/dist/layout/Container/index.d.ts +2 -0
- package/dist/layout/Container/index.d.ts.map +1 -0
- package/dist/layout/Container/index.js +1 -0
- package/dist/layout/index.d.ts +8 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/index.js +7 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte +601 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts +70 -0
- package/dist/navigation/StepIndicator/StepIndicator.svelte.d.ts.map +1 -0
- package/dist/navigation/StepIndicator/index.d.ts +2 -0
- package/dist/navigation/StepIndicator/index.d.ts.map +1 -0
- package/dist/navigation/StepIndicator/index.js +1 -0
- package/dist/navigation/index.d.ts +7 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +6 -0
- package/dist/primitives/Badge/Badge.svelte +365 -0
- package/dist/primitives/Badge/Badge.svelte.d.ts +39 -0
- package/dist/primitives/Badge/Badge.svelte.d.ts.map +1 -0
- package/dist/primitives/Badge/index.d.ts +2 -0
- package/dist/primitives/Badge/index.d.ts.map +1 -0
- package/dist/primitives/Badge/index.js +1 -0
- package/dist/primitives/Button/Button.svelte +430 -0
- package/dist/primitives/Button/Button.svelte.d.ts +50 -0
- package/dist/primitives/Button/Button.svelte.d.ts.map +1 -0
- package/dist/primitives/Button/index.d.ts +2 -0
- package/dist/primitives/Button/index.d.ts.map +1 -0
- package/dist/primitives/Button/index.js +1 -0
- package/dist/primitives/index.d.ts +9 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/index.js +8 -0
- package/dist/routes/+layout.svelte +12 -0
- package/dist/routes/+layout.svelte.d.ts +12 -0
- package/dist/routes/+layout.svelte.d.ts.map +1 -0
- package/dist/routes/+page.svelte +53 -0
- package/dist/routes/+page.svelte.d.ts +27 -0
- package/dist/routes/+page.svelte.d.ts.map +1 -0
- package/dist/styles/tokens.css +399 -0
- package/dist/types/index.d.ts +175 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/utils/accessibility.d.ts +103 -0
- package/dist/utils/accessibility.d.ts.map +1 -0
- package/dist/utils/accessibility.js +202 -0
- package/dist/utils/cn.d.ts +71 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/cn.js +61 -0
- package/dist/utils/form-styles.d.ts +76 -0
- package/dist/utils/form-styles.d.ts.map +1 -0
- package/dist/utils/form-styles.js +95 -0
- package/dist/utils/index.d.ts +10 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +13 -0
- package/dist/utils/keyboard.d.ts +94 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/keyboard.js +179 -0
- package/package.json +119 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { TableColumn, SortState } from '../../types/index.js';
|
|
3
|
+
declare function $$render<T extends Record<string, unknown>>(): {
|
|
4
|
+
props: {
|
|
5
|
+
/** Column definitions */
|
|
6
|
+
columns: TableColumn<T>[];
|
|
7
|
+
/** Data rows */
|
|
8
|
+
data: T[];
|
|
9
|
+
/** Table caption for accessibility - describes the table's purpose */
|
|
10
|
+
caption?: string;
|
|
11
|
+
/** Whether to visually hide the caption (still available to screen readers) */
|
|
12
|
+
captionHidden?: boolean;
|
|
13
|
+
/** Size variant */
|
|
14
|
+
size?: "sm" | "md" | "lg";
|
|
15
|
+
/** Initial sort state */
|
|
16
|
+
sortState?: SortState;
|
|
17
|
+
/** Whether rows are hoverable */
|
|
18
|
+
hoverable?: boolean;
|
|
19
|
+
/** Whether rows are striped */
|
|
20
|
+
striped?: boolean;
|
|
21
|
+
/** Whether the header should stick when scrolling */
|
|
22
|
+
stickyHeader?: boolean;
|
|
23
|
+
/** Maximum height for scrollable table (enables sticky header behavior) */
|
|
24
|
+
maxHeight?: string;
|
|
25
|
+
/** Whether rows are selectable */
|
|
26
|
+
selectable?: boolean;
|
|
27
|
+
/** Currently selected row keys */
|
|
28
|
+
selectedKeys?: Set<string>;
|
|
29
|
+
/** Whether the table is loading */
|
|
30
|
+
loading?: boolean;
|
|
31
|
+
/** Number of skeleton rows to show when loading */
|
|
32
|
+
loadingRows?: number;
|
|
33
|
+
/** Empty state message */
|
|
34
|
+
emptyMessage?: string;
|
|
35
|
+
/** Empty state description */
|
|
36
|
+
emptyDescription?: string;
|
|
37
|
+
/** Row key function */
|
|
38
|
+
getRowKey?: (row: T, index: number) => string;
|
|
39
|
+
/** Custom cell renderer */
|
|
40
|
+
cellRenderer?: Snippet<[{
|
|
41
|
+
value: unknown;
|
|
42
|
+
row: T;
|
|
43
|
+
column: TableColumn<T>;
|
|
44
|
+
}]>;
|
|
45
|
+
/** Custom empty state snippet */
|
|
46
|
+
emptyState?: Snippet;
|
|
47
|
+
/** Row click handler */
|
|
48
|
+
onRowClick?: (row: T) => void;
|
|
49
|
+
/** Sort change handler */
|
|
50
|
+
onSort?: (state: SortState) => void;
|
|
51
|
+
/** Selection change handler */
|
|
52
|
+
onSelectionChange?: (selectedKeys: Set<string>) => void;
|
|
53
|
+
/** Pagination - current page (1-indexed) */
|
|
54
|
+
currentPage?: number;
|
|
55
|
+
/** Pagination - items per page */
|
|
56
|
+
pageSize?: number;
|
|
57
|
+
/** Pagination - total items (for server-side pagination) */
|
|
58
|
+
totalItems?: number;
|
|
59
|
+
/** Pagination - page change handler */
|
|
60
|
+
onPageChange?: (page: number) => void;
|
|
61
|
+
/** Row highlight function - return variant name for highlighting */
|
|
62
|
+
getRowHighlight?: (row: T) => "error" | "warning" | "success" | "info" | null;
|
|
63
|
+
/** Additional CSS classes */
|
|
64
|
+
class?: string;
|
|
65
|
+
/** ID for the table */
|
|
66
|
+
id?: string;
|
|
67
|
+
};
|
|
68
|
+
exports: {};
|
|
69
|
+
bindings: "";
|
|
70
|
+
slots: {};
|
|
71
|
+
events: {};
|
|
72
|
+
};
|
|
73
|
+
declare class __sveltets_Render<T extends Record<string, unknown>> {
|
|
74
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
75
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
76
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
77
|
+
bindings(): "";
|
|
78
|
+
exports(): {};
|
|
79
|
+
}
|
|
80
|
+
interface $$IsomorphicComponent {
|
|
81
|
+
new <T extends Record<string, unknown>>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
82
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
83
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
84
|
+
<T extends Record<string, unknown>>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
85
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* DataTable
|
|
89
|
+
*
|
|
90
|
+
* A world-class responsive data table component designed for healthcare applications.
|
|
91
|
+
* Features sorting, row selection, sticky headers, pagination, and full accessibility.
|
|
92
|
+
*
|
|
93
|
+
* Features:
|
|
94
|
+
* - Full WCAG 2.1 AA compliance with proper semantic markup
|
|
95
|
+
* - Sortable columns with keyboard support
|
|
96
|
+
* - Row selection with checkbox support
|
|
97
|
+
* - Sticky header option for long tables
|
|
98
|
+
* - Size variants (sm, md, lg) for different data densities
|
|
99
|
+
* - Loading state with skeleton placeholders
|
|
100
|
+
* - Empty state with customizable message
|
|
101
|
+
* - Pagination support for large datasets
|
|
102
|
+
* - Mobile-responsive with column hiding
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* <DataTable
|
|
106
|
+
* columns={[
|
|
107
|
+
* { key: 'name', header: 'Patient Name', sortable: true },
|
|
108
|
+
* { key: 'status', header: 'Status' },
|
|
109
|
+
* { key: 'date', header: 'Date', hideOnMobile: true }
|
|
110
|
+
* ]}
|
|
111
|
+
* data={patients}
|
|
112
|
+
* caption="Patient list for Dr. Smith"
|
|
113
|
+
* selectable
|
|
114
|
+
* stickyHeader
|
|
115
|
+
* />
|
|
116
|
+
*/
|
|
117
|
+
declare const DataTable: $$IsomorphicComponent;
|
|
118
|
+
type DataTable<T extends Record<string, unknown>> = InstanceType<typeof DataTable<T>>;
|
|
119
|
+
export default DataTable;
|
|
120
|
+
//# sourceMappingURL=DataTable.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTable.svelte.d.ts","sourceRoot":"","sources":["../../../src/data-display/DataTable/DataTable.svelte.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-display/DataTable/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as DataTable } from './DataTable.svelte';
|
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
@component StatCard
|
|
3
|
+
|
|
4
|
+
A world-class card component for displaying statistics with icon, value, label,
|
|
5
|
+
and optional trend indicator. Designed for healthcare dashboards and KPI displays.
|
|
6
|
+
|
|
7
|
+
Features:
|
|
8
|
+
- Multiple size variants (sm, md, lg)
|
|
9
|
+
- Trend indicators with direction and color coding
|
|
10
|
+
- Comparison context display
|
|
11
|
+
- Loading state with skeleton
|
|
12
|
+
- Sparkline slot for mini charts
|
|
13
|
+
- Interactive mode with proper accessibility
|
|
14
|
+
- Info variant for neutral metrics
|
|
15
|
+
|
|
16
|
+
@example
|
|
17
|
+
<StatCard
|
|
18
|
+
value="1,234"
|
|
19
|
+
label="Total Patients"
|
|
20
|
+
trend="+12%"
|
|
21
|
+
trendDirection="up"
|
|
22
|
+
/>
|
|
23
|
+
-->
|
|
24
|
+
<script lang="ts">
|
|
25
|
+
import type { Snippet } from 'svelte';
|
|
26
|
+
import { TrendingUp, TrendingDown, Minus, HelpCircle } from 'lucide-svelte';
|
|
27
|
+
import { Skeleton } from '../../feedback/Skeleton/index.js';
|
|
28
|
+
|
|
29
|
+
type StatCardVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
30
|
+
type StatCardSize = 'sm' | 'md' | 'lg';
|
|
31
|
+
type TrendDirection = 'up' | 'down' | 'neutral';
|
|
32
|
+
|
|
33
|
+
interface Props {
|
|
34
|
+
/** The main value to display */
|
|
35
|
+
value: string | number;
|
|
36
|
+
/** Label describing the value */
|
|
37
|
+
label: string;
|
|
38
|
+
/** Size variant */
|
|
39
|
+
size?: StatCardSize;
|
|
40
|
+
/** Optional period/context (e.g., "Last 30 days") */
|
|
41
|
+
period?: string;
|
|
42
|
+
/** Optional comparison text (e.g., "vs last month") */
|
|
43
|
+
comparison?: string;
|
|
44
|
+
/** Optional trend indicator text (e.g., "+12%") */
|
|
45
|
+
trend?: string;
|
|
46
|
+
/** Direction of the trend */
|
|
47
|
+
trendDirection?: TrendDirection;
|
|
48
|
+
/** Visual variant for icon styling */
|
|
49
|
+
variant?: StatCardVariant;
|
|
50
|
+
/** Whether the card is in loading state */
|
|
51
|
+
loading?: boolean;
|
|
52
|
+
/** Whether the card is interactive */
|
|
53
|
+
interactive?: boolean;
|
|
54
|
+
/** Icon snippet */
|
|
55
|
+
icon?: Snippet;
|
|
56
|
+
/** Sparkline/chart snippet */
|
|
57
|
+
sparkline?: Snippet;
|
|
58
|
+
/** Optional help/info text */
|
|
59
|
+
helpText?: string;
|
|
60
|
+
/** Additional CSS classes */
|
|
61
|
+
class?: string;
|
|
62
|
+
/** Click handler */
|
|
63
|
+
onclick?: () => void;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
let {
|
|
67
|
+
value,
|
|
68
|
+
label,
|
|
69
|
+
size = 'md',
|
|
70
|
+
period = '',
|
|
71
|
+
comparison = '',
|
|
72
|
+
trend = '',
|
|
73
|
+
trendDirection = 'neutral',
|
|
74
|
+
variant = 'default',
|
|
75
|
+
loading = false,
|
|
76
|
+
interactive = false,
|
|
77
|
+
icon,
|
|
78
|
+
sparkline,
|
|
79
|
+
helpText = '',
|
|
80
|
+
class: className = '',
|
|
81
|
+
onclick
|
|
82
|
+
}: Props = $props();
|
|
83
|
+
|
|
84
|
+
// Size configurations
|
|
85
|
+
const sizeConfig: Record<StatCardSize, {
|
|
86
|
+
padding: string;
|
|
87
|
+
iconSize: string;
|
|
88
|
+
iconWrapperSize: string;
|
|
89
|
+
valueSize: string;
|
|
90
|
+
labelSize: string;
|
|
91
|
+
gap: string;
|
|
92
|
+
}> = {
|
|
93
|
+
sm: {
|
|
94
|
+
padding: '1rem',
|
|
95
|
+
iconSize: '1.125rem',
|
|
96
|
+
iconWrapperSize: '2.25rem',
|
|
97
|
+
valueSize: '1.5rem',
|
|
98
|
+
labelSize: '0.75rem',
|
|
99
|
+
gap: '0.75rem'
|
|
100
|
+
},
|
|
101
|
+
md: {
|
|
102
|
+
padding: '1.25rem',
|
|
103
|
+
iconSize: '1.25rem',
|
|
104
|
+
iconWrapperSize: '2.75rem',
|
|
105
|
+
valueSize: '1.75rem',
|
|
106
|
+
labelSize: '0.8125rem',
|
|
107
|
+
gap: '1rem'
|
|
108
|
+
},
|
|
109
|
+
lg: {
|
|
110
|
+
padding: '1.5rem',
|
|
111
|
+
iconSize: '1.5rem',
|
|
112
|
+
iconWrapperSize: '3.5rem',
|
|
113
|
+
valueSize: '2.25rem',
|
|
114
|
+
labelSize: '0.875rem',
|
|
115
|
+
gap: '1.25rem'
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
const config = $derived(sizeConfig[size]);
|
|
120
|
+
</script>
|
|
121
|
+
|
|
122
|
+
{#snippet statContent()}
|
|
123
|
+
<!-- Icon -->
|
|
124
|
+
{#if icon && !loading}
|
|
125
|
+
<div
|
|
126
|
+
class="stat-card-icon stat-card-icon-{variant}"
|
|
127
|
+
style="width: {config.iconWrapperSize}; height: {config.iconWrapperSize}; font-size: {config.iconSize};"
|
|
128
|
+
aria-hidden="true"
|
|
129
|
+
>
|
|
130
|
+
{@render icon()}
|
|
131
|
+
</div>
|
|
132
|
+
{:else if loading}
|
|
133
|
+
<Skeleton variant="circle" width={config.iconWrapperSize} height={config.iconWrapperSize} animation="wave" />
|
|
134
|
+
{/if}
|
|
135
|
+
|
|
136
|
+
<!-- Content -->
|
|
137
|
+
<div class="stat-card-content">
|
|
138
|
+
{#if loading}
|
|
139
|
+
<Skeleton variant="text" width="4rem" height={config.valueSize} animation="wave" />
|
|
140
|
+
<Skeleton variant="text" width="6rem" height={config.labelSize} animation="wave" />
|
|
141
|
+
{:else}
|
|
142
|
+
<!-- Value Row -->
|
|
143
|
+
<div class="stat-card-value-row">
|
|
144
|
+
<span class="stat-card-value" style="font-size: {config.valueSize};">
|
|
145
|
+
{value}
|
|
146
|
+
</span>
|
|
147
|
+
{#if trend}
|
|
148
|
+
<span class="stat-card-trend stat-card-trend-{trendDirection}">
|
|
149
|
+
{#if trendDirection === 'up'}
|
|
150
|
+
<TrendingUp size={14} />
|
|
151
|
+
{:else if trendDirection === 'down'}
|
|
152
|
+
<TrendingDown size={14} />
|
|
153
|
+
{:else}
|
|
154
|
+
<Minus size={14} />
|
|
155
|
+
{/if}
|
|
156
|
+
{trend}
|
|
157
|
+
</span>
|
|
158
|
+
{/if}
|
|
159
|
+
{#if helpText}
|
|
160
|
+
<span class="stat-card-help" title={helpText}>
|
|
161
|
+
<HelpCircle size={14} />
|
|
162
|
+
</span>
|
|
163
|
+
{/if}
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
<!-- Label -->
|
|
167
|
+
<span class="stat-card-label" style="font-size: {config.labelSize};">
|
|
168
|
+
{label}
|
|
169
|
+
</span>
|
|
170
|
+
|
|
171
|
+
<!-- Period / Comparison -->
|
|
172
|
+
{#if period || comparison}
|
|
173
|
+
<span class="stat-card-period">
|
|
174
|
+
{period}
|
|
175
|
+
{#if period && comparison}
|
|
176
|
+
<span class="stat-card-separator">·</span>
|
|
177
|
+
{/if}
|
|
178
|
+
{comparison}
|
|
179
|
+
</span>
|
|
180
|
+
{/if}
|
|
181
|
+
{/if}
|
|
182
|
+
</div>
|
|
183
|
+
|
|
184
|
+
<!-- Sparkline -->
|
|
185
|
+
{#if sparkline && !loading}
|
|
186
|
+
<div class="stat-card-sparkline" aria-hidden="true">
|
|
187
|
+
{@render sparkline()}
|
|
188
|
+
</div>
|
|
189
|
+
{/if}
|
|
190
|
+
{/snippet}
|
|
191
|
+
|
|
192
|
+
{#if interactive}
|
|
193
|
+
<button
|
|
194
|
+
type="button"
|
|
195
|
+
class="stat-card stat-card-{size} stat-card-interactive {className}"
|
|
196
|
+
style="padding: {config.padding}; gap: {config.gap};"
|
|
197
|
+
onclick={onclick}
|
|
198
|
+
>
|
|
199
|
+
{@render statContent()}
|
|
200
|
+
</button>
|
|
201
|
+
{:else}
|
|
202
|
+
<div
|
|
203
|
+
class="stat-card stat-card-{size} {className}"
|
|
204
|
+
style="padding: {config.padding}; gap: {config.gap};"
|
|
205
|
+
>
|
|
206
|
+
{@render statContent()}
|
|
207
|
+
</div>
|
|
208
|
+
{/if}
|
|
209
|
+
|
|
210
|
+
<style>
|
|
211
|
+
/* ========================================
|
|
212
|
+
BASE STYLES
|
|
213
|
+
======================================== */
|
|
214
|
+
.stat-card {
|
|
215
|
+
display: flex;
|
|
216
|
+
align-items: center;
|
|
217
|
+
background-color: var(--ui-bg-primary);
|
|
218
|
+
border: 1px solid var(--ui-border-default);
|
|
219
|
+
border-radius: 0.75rem;
|
|
220
|
+
transition: all 0.2s ease;
|
|
221
|
+
overflow: hidden;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* Reset button styles */
|
|
225
|
+
button.stat-card {
|
|
226
|
+
width: 100%;
|
|
227
|
+
text-align: left;
|
|
228
|
+
font: inherit;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/* ========================================
|
|
232
|
+
INTERACTIVE STATE
|
|
233
|
+
======================================== */
|
|
234
|
+
.stat-card-interactive {
|
|
235
|
+
cursor: pointer;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
.stat-card-interactive:hover {
|
|
239
|
+
transform: translateY(-2px);
|
|
240
|
+
border-color: var(--ui-border-hover);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
.stat-card-interactive:active {
|
|
244
|
+
transform: translateY(0);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
.stat-card-interactive:focus-visible {
|
|
248
|
+
outline: none;
|
|
249
|
+
box-shadow: 0 0 0 3px rgb(var(--ui-color-primary) / 0.4);
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
:global([data-theme='dark']) .stat-card-interactive:focus-visible {
|
|
253
|
+
box-shadow: 0 0 0 3px rgb(var(--ui-color-primary-light) / 0.5);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
@media (prefers-color-scheme: dark) {
|
|
257
|
+
:global(:root:not([data-theme='light'])) .stat-card-interactive:focus-visible {
|
|
258
|
+
box-shadow: 0 0 0 3px rgb(var(--ui-color-primary-light) / 0.5);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
/* ========================================
|
|
263
|
+
ICON STYLES
|
|
264
|
+
======================================== */
|
|
265
|
+
.stat-card-icon {
|
|
266
|
+
display: flex;
|
|
267
|
+
align-items: center;
|
|
268
|
+
justify-content: center;
|
|
269
|
+
border-radius: 0.75rem;
|
|
270
|
+
flex-shrink: 0;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
.stat-card-icon-default,
|
|
274
|
+
.stat-card-icon-primary {
|
|
275
|
+
background-color: rgb(var(--ui-color-primary) / 0.1);
|
|
276
|
+
color: rgb(var(--ui-color-primary));
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.stat-card-icon-success {
|
|
280
|
+
background-color: rgb(var(--ui-color-success) / 0.1);
|
|
281
|
+
color: rgb(var(--ui-color-success));
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
.stat-card-icon-warning {
|
|
285
|
+
background-color: rgb(var(--ui-color-warning) / 0.1);
|
|
286
|
+
color: rgb(var(--ui-color-warning));
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
.stat-card-icon-error {
|
|
290
|
+
background-color: rgb(var(--ui-color-error) / 0.1);
|
|
291
|
+
color: rgb(var(--ui-color-error));
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.stat-card-icon-info {
|
|
295
|
+
background-color: rgb(var(--ui-color-info) / 0.1);
|
|
296
|
+
color: rgb(var(--ui-color-info));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/* ========================================
|
|
300
|
+
CONTENT STYLES
|
|
301
|
+
======================================== */
|
|
302
|
+
.stat-card-content {
|
|
303
|
+
display: flex;
|
|
304
|
+
flex-direction: column;
|
|
305
|
+
min-width: 0;
|
|
306
|
+
flex: 1;
|
|
307
|
+
gap: 0.125rem;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
.stat-card-value-row {
|
|
311
|
+
display: flex;
|
|
312
|
+
align-items: baseline;
|
|
313
|
+
gap: 0.5rem;
|
|
314
|
+
flex-wrap: wrap;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
.stat-card-value {
|
|
318
|
+
font-weight: 700;
|
|
319
|
+
color: var(--ui-text-primary);
|
|
320
|
+
line-height: 1.2;
|
|
321
|
+
overflow: hidden;
|
|
322
|
+
text-overflow: ellipsis;
|
|
323
|
+
white-space: nowrap;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
.stat-card-label {
|
|
327
|
+
color: var(--ui-text-secondary);
|
|
328
|
+
line-height: 1.4;
|
|
329
|
+
overflow: hidden;
|
|
330
|
+
text-overflow: ellipsis;
|
|
331
|
+
white-space: nowrap;
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
.stat-card-period {
|
|
335
|
+
font-size: 0.6875rem;
|
|
336
|
+
color: var(--ui-text-tertiary);
|
|
337
|
+
line-height: 1.4;
|
|
338
|
+
overflow: hidden;
|
|
339
|
+
text-overflow: ellipsis;
|
|
340
|
+
white-space: nowrap;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.stat-card-separator {
|
|
344
|
+
margin: 0 0.25rem;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/* ========================================
|
|
348
|
+
TREND INDICATOR
|
|
349
|
+
======================================== */
|
|
350
|
+
.stat-card-trend {
|
|
351
|
+
display: inline-flex;
|
|
352
|
+
align-items: center;
|
|
353
|
+
gap: 0.125rem;
|
|
354
|
+
font-size: 0.75rem;
|
|
355
|
+
font-weight: 600;
|
|
356
|
+
padding: 0.125rem 0.375rem;
|
|
357
|
+
border-radius: 0.25rem;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
.stat-card-trend-up {
|
|
361
|
+
color: rgb(var(--ui-color-success));
|
|
362
|
+
background-color: rgb(var(--ui-color-success) / 0.1);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
.stat-card-trend-down {
|
|
366
|
+
color: rgb(var(--ui-color-error));
|
|
367
|
+
background-color: rgb(var(--ui-color-error) / 0.1);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
.stat-card-trend-neutral {
|
|
371
|
+
color: var(--ui-text-tertiary);
|
|
372
|
+
background-color: var(--ui-bg-tertiary);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
/* ========================================
|
|
376
|
+
HELP ICON
|
|
377
|
+
======================================== */
|
|
378
|
+
.stat-card-help {
|
|
379
|
+
color: var(--ui-text-tertiary);
|
|
380
|
+
cursor: help;
|
|
381
|
+
display: inline-flex;
|
|
382
|
+
align-items: center;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.stat-card-help:hover {
|
|
386
|
+
color: var(--ui-text-secondary);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
/* ========================================
|
|
390
|
+
SPARKLINE
|
|
391
|
+
======================================== */
|
|
392
|
+
.stat-card-sparkline {
|
|
393
|
+
margin-left: auto;
|
|
394
|
+
flex-shrink: 0;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/* ========================================
|
|
398
|
+
REDUCED MOTION
|
|
399
|
+
======================================== */
|
|
400
|
+
@media (prefers-reduced-motion: reduce) {
|
|
401
|
+
.stat-card {
|
|
402
|
+
transition: none;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.stat-card-interactive:hover {
|
|
406
|
+
transform: none;
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
</style>
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type StatCardVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
3
|
+
type StatCardSize = 'sm' | 'md' | 'lg';
|
|
4
|
+
type TrendDirection = 'up' | 'down' | 'neutral';
|
|
5
|
+
interface Props {
|
|
6
|
+
/** The main value to display */
|
|
7
|
+
value: string | number;
|
|
8
|
+
/** Label describing the value */
|
|
9
|
+
label: string;
|
|
10
|
+
/** Size variant */
|
|
11
|
+
size?: StatCardSize;
|
|
12
|
+
/** Optional period/context (e.g., "Last 30 days") */
|
|
13
|
+
period?: string;
|
|
14
|
+
/** Optional comparison text (e.g., "vs last month") */
|
|
15
|
+
comparison?: string;
|
|
16
|
+
/** Optional trend indicator text (e.g., "+12%") */
|
|
17
|
+
trend?: string;
|
|
18
|
+
/** Direction of the trend */
|
|
19
|
+
trendDirection?: TrendDirection;
|
|
20
|
+
/** Visual variant for icon styling */
|
|
21
|
+
variant?: StatCardVariant;
|
|
22
|
+
/** Whether the card is in loading state */
|
|
23
|
+
loading?: boolean;
|
|
24
|
+
/** Whether the card is interactive */
|
|
25
|
+
interactive?: boolean;
|
|
26
|
+
/** Icon snippet */
|
|
27
|
+
icon?: Snippet;
|
|
28
|
+
/** Sparkline/chart snippet */
|
|
29
|
+
sparkline?: Snippet;
|
|
30
|
+
/** Optional help/info text */
|
|
31
|
+
helpText?: string;
|
|
32
|
+
/** Additional CSS classes */
|
|
33
|
+
class?: string;
|
|
34
|
+
/** Click handler */
|
|
35
|
+
onclick?: () => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* StatCard
|
|
39
|
+
*
|
|
40
|
+
* A world-class card component for displaying statistics with icon, value, label,
|
|
41
|
+
* and optional trend indicator. Designed for healthcare dashboards and KPI displays.
|
|
42
|
+
*
|
|
43
|
+
* Features:
|
|
44
|
+
* - Multiple size variants (sm, md, lg)
|
|
45
|
+
* - Trend indicators with direction and color coding
|
|
46
|
+
* - Comparison context display
|
|
47
|
+
* - Loading state with skeleton
|
|
48
|
+
* - Sparkline slot for mini charts
|
|
49
|
+
* - Interactive mode with proper accessibility
|
|
50
|
+
* - Info variant for neutral metrics
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* <StatCard
|
|
54
|
+
* value="1,234"
|
|
55
|
+
* label="Total Patients"
|
|
56
|
+
* trend="+12%"
|
|
57
|
+
* trendDirection="up"
|
|
58
|
+
* />
|
|
59
|
+
*/
|
|
60
|
+
declare const StatCard: import("svelte").Component<Props, {}, "">;
|
|
61
|
+
type StatCard = ReturnType<typeof StatCard>;
|
|
62
|
+
export default StatCard;
|
|
63
|
+
//# sourceMappingURL=StatCard.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatCard.svelte.d.ts","sourceRoot":"","sources":["../../../src/data-display/StatCard/StatCard.svelte.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAKrC,KAAK,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AACxF,KAAK,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AACvC,KAAK,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,UAAU,KAAK;IACd,gCAAgC;IAChC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,sCAAsC;IACtC,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mBAAmB;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAmJF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data-display/StatCard/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as StatCard } from './StatCard.svelte';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @synthaxai/ui - Data Display Components
|
|
3
|
+
*
|
|
4
|
+
* Components for displaying data in tables, cards, and other formats.
|
|
5
|
+
*/
|
|
6
|
+
export { StatCard } from './StatCard/index.js';
|
|
7
|
+
export { DataTable } from './DataTable/index.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/data-display/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC"}
|