@makolabs/ripple 0.0.1-dev.7 → 0.0.1-dev.8
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 +393 -53
- package/dist/button/Button.svelte +5 -3
- package/dist/button/Button.svelte.d.ts +1 -1
- package/dist/button/button.d.ts +40 -63
- package/dist/button/button.js +15 -14
- package/dist/charts/Chart.svelte +533 -0
- package/dist/charts/Chart.svelte.d.ts +4 -0
- package/dist/drawer/Drawer.svelte +13 -2
- package/dist/drawer/Drawer.svelte.d.ts +1 -1
- package/dist/drawer/drawer.d.ts +0 -17
- package/dist/elements/alert/Alert.svelte +53 -0
- package/dist/elements/alert/Alert.svelte.d.ts +4 -0
- package/dist/elements/badge/Badge.svelte +13 -5
- package/dist/elements/badge/Badge.svelte.d.ts +1 -1
- package/dist/elements/badge/badge.d.ts +0 -12
- package/dist/elements/dropdown/Dropdown.svelte +32 -37
- package/dist/elements/dropdown/Dropdown.svelte.d.ts +1 -1
- package/dist/elements/dropdown/Select.svelte +143 -59
- package/dist/elements/dropdown/Select.svelte.d.ts +1 -1
- package/dist/elements/dropdown/dropdown.d.ts +34 -57
- package/dist/elements/dropdown/dropdown.js +10 -4
- package/dist/elements/dropdown/select.d.ts +34 -54
- package/dist/elements/dropdown/select.js +22 -14
- package/dist/elements/file-upload/FileUpload.svelte +213 -0
- package/dist/elements/file-upload/FileUpload.svelte.d.ts +4 -0
- package/dist/elements/progress/Progress.svelte +87 -0
- package/dist/elements/progress/Progress.svelte.d.ts +4 -0
- package/dist/elements/timeline/Timeline.svelte +92 -0
- package/dist/elements/timeline/Timeline.svelte.d.ts +7 -0
- package/dist/forms/Checkbox.svelte +54 -0
- package/dist/forms/Checkbox.svelte.d.ts +4 -0
- package/dist/forms/DateRange.svelte +493 -0
- package/dist/forms/DateRange.svelte.d.ts +4 -0
- package/dist/forms/Form.svelte +39 -0
- package/dist/forms/Form.svelte.d.ts +4 -0
- package/dist/forms/Input.svelte +86 -0
- package/dist/forms/Input.svelte.d.ts +4 -0
- package/dist/forms/NumberInput.svelte +159 -0
- package/dist/forms/NumberInput.svelte.d.ts +4 -0
- package/dist/forms/RadioInputs.svelte +64 -0
- package/dist/forms/RadioInputs.svelte.d.ts +4 -0
- package/dist/forms/RadioPill.svelte +66 -0
- package/dist/forms/RadioPill.svelte.d.ts +4 -0
- package/dist/forms/Slider.svelte +342 -0
- package/dist/forms/Slider.svelte.d.ts +4 -0
- package/dist/forms/Tags.svelte +181 -0
- package/dist/forms/Tags.svelte.d.ts +4 -0
- package/dist/forms/Toggle.svelte +132 -0
- package/dist/forms/Toggle.svelte.d.ts +4 -0
- package/dist/forms/slider.d.ts +143 -0
- package/dist/forms/slider.js +62 -0
- package/dist/header/Breadcrumbs.svelte +2 -1
- package/dist/header/Breadcrumbs.svelte.d.ts +1 -1
- package/dist/header/PageHeader.svelte +2 -2
- package/dist/header/PageHeader.svelte.d.ts +1 -1
- package/dist/header/breadcrumbs.d.ts +20 -14
- package/dist/header/breadcrumbs.js +6 -0
- package/dist/header/pageheaders.d.ts +1 -1
- package/dist/helper/date.d.ts +7 -0
- package/dist/helper/date.js +15 -0
- package/dist/index.d.ts +742 -9
- package/dist/index.js +59 -16
- package/dist/layout/card/Card.svelte +5 -8
- package/dist/layout/card/Card.svelte.d.ts +1 -1
- package/dist/layout/card/StatsCard.svelte +116 -87
- package/dist/layout/card/card.d.ts +22 -33
- package/dist/layout/card/card.js +9 -8
- package/dist/layout/card/stats-card.d.ts +23 -25
- package/dist/layout/card/stats-card.js +13 -13
- package/dist/layout/navbar/navbar.d.ts +0 -23
- package/dist/layout/sidebar/NavGroup.svelte +20 -44
- package/dist/layout/sidebar/NavGroup.svelte.d.ts +1 -1
- package/dist/layout/sidebar/NavItem.svelte +1 -1
- package/dist/layout/sidebar/NavItem.svelte.d.ts +1 -1
- package/dist/layout/sidebar/Sidebar.svelte +19 -25
- package/dist/layout/sidebar/Sidebar.svelte.d.ts +1 -1
- package/dist/layout/table/table.d.ts +1 -1
- package/dist/layout/tabs/tabs.d.ts +1 -1
- package/dist/modal/Modal.svelte +2 -1
- package/dist/modal/Modal.svelte.d.ts +1 -1
- package/dist/modal/modal.d.ts +0 -23
- package/dist/sonner/sonner.svelte +13 -0
- package/dist/sonner/sonner.svelte.d.ts +4 -0
- package/dist/types/variants.d.ts +1 -21
- package/dist/types/variants.js +1 -19
- package/dist/variants.d.ts +20 -0
- package/dist/variants.js +19 -0
- package/package.json +6 -2
- package/dist/button/index.d.ts +0 -1
- package/dist/button/index.js +0 -1
- package/dist/drawer/index.d.ts +0 -2
- package/dist/drawer/index.js +0 -1
- package/dist/elements/badge/index.d.ts +0 -2
- package/dist/elements/badge/index.js +0 -2
- package/dist/elements/dropdown/index.d.ts +0 -3
- package/dist/elements/dropdown/index.js +0 -2
- package/dist/header/index.d.ts +0 -4
- package/dist/header/index.js +0 -2
- package/dist/layout/card/index.d.ts +0 -4
- package/dist/layout/card/index.js +0 -2
- package/dist/layout/index.d.ts +0 -5
- package/dist/layout/index.js +0 -5
- package/dist/layout/navbar/index.d.ts +0 -2
- package/dist/layout/navbar/index.js +0 -2
- package/dist/layout/sidebar/index.d.ts +0 -2
- package/dist/layout/sidebar/index.js +0 -1
- package/dist/layout/sidebar/sidebar.d.ts +0 -46
- package/dist/layout/sidebar/sidebar.js +0 -1
- package/dist/layout/table/index.d.ts +0 -3
- package/dist/layout/table/index.js +0 -2
- package/dist/layout/tabs/index.d.ts +0 -3
- package/dist/layout/tabs/index.js +0 -3
- package/dist/modal/index.d.ts +0 -1
- package/dist/modal/index.js +0 -1
package/dist/index.js
CHANGED
|
@@ -1,18 +1,61 @@
|
|
|
1
|
-
|
|
2
|
-
export * from './button/index.js';
|
|
3
|
-
// Modal components
|
|
4
|
-
export * from './modal/index.js';
|
|
5
|
-
// Drawer components
|
|
6
|
-
export * from './drawer/index.js';
|
|
7
|
-
// Header components
|
|
8
|
-
export * from './header/index.js';
|
|
9
|
-
// Layout components
|
|
10
|
-
export * from './layout/index.js';
|
|
11
|
-
// Elements
|
|
12
|
-
export * from './elements/dropdown/index.js';
|
|
13
|
-
export * from './elements/badge/index.js';
|
|
14
|
-
// Types
|
|
15
|
-
export * from './types/variants.js';
|
|
1
|
+
import { Color } from './variants.js';
|
|
16
2
|
// Helper utilities
|
|
17
3
|
export { tv, cn } from './helper/cls.js';
|
|
18
|
-
export
|
|
4
|
+
export { isRouteActive } from './helper/nav.svelte.js';
|
|
5
|
+
// Direct Component Exports
|
|
6
|
+
// Button
|
|
7
|
+
export { default as Button } from './button/Button.svelte';
|
|
8
|
+
// Modal
|
|
9
|
+
export { default as Modal } from './modal/Modal.svelte';
|
|
10
|
+
// Drawer
|
|
11
|
+
export { default as Drawer } from './drawer/Drawer.svelte';
|
|
12
|
+
// Header
|
|
13
|
+
export { default as PageHeader } from './header/PageHeader.svelte';
|
|
14
|
+
export { default as Breadcrumbs } from './header/Breadcrumbs.svelte';
|
|
15
|
+
// Elements
|
|
16
|
+
export { default as Badge } from './elements/badge/Badge.svelte';
|
|
17
|
+
export { default as Dropdown } from './elements/dropdown/Dropdown.svelte';
|
|
18
|
+
export { default as Select } from './elements/dropdown/Select.svelte';
|
|
19
|
+
// Elements - Card
|
|
20
|
+
export { default as Card } from './layout/card/Card.svelte';
|
|
21
|
+
export { default as StatsCard } from './layout/card/StatsCard.svelte';
|
|
22
|
+
// Elements - Alert
|
|
23
|
+
export { default as Alert } from './elements/alert/Alert.svelte';
|
|
24
|
+
// Elements - Tabs
|
|
25
|
+
export { default as Tab } from './layout/tabs/Tab.svelte';
|
|
26
|
+
export { default as TabContent } from './layout/tabs/TabContent.svelte';
|
|
27
|
+
export { default as TabGroup } from './layout/tabs/TabGroup.svelte';
|
|
28
|
+
// Elements - Table
|
|
29
|
+
export { default as Table } from './layout/table/Table.svelte';
|
|
30
|
+
export { default as Cells } from './layout/table/Cells.svelte';
|
|
31
|
+
// Elements - Navbar
|
|
32
|
+
export { default as Navbar } from './layout/navbar/Navbar.svelte';
|
|
33
|
+
// Elements - Sidebar
|
|
34
|
+
export { default as Sidebar } from './layout/sidebar/Sidebar.svelte';
|
|
35
|
+
export { default as NavItem } from './layout/sidebar/NavItem.svelte';
|
|
36
|
+
export { default as NavGroup } from './layout/sidebar/NavGroup.svelte';
|
|
37
|
+
// Component Variant Utilities
|
|
38
|
+
export { dropdownMenu } from './elements/dropdown/dropdown.js';
|
|
39
|
+
export { badge } from './elements/badge/badge.js';
|
|
40
|
+
export { buttonVariants } from './button/button.js';
|
|
41
|
+
export { modal } from './modal/modal.js';
|
|
42
|
+
export { drawer } from './drawer/drawer.js';
|
|
43
|
+
export { selectTV } from './elements/dropdown/select.js';
|
|
44
|
+
export { breadcrumbs } from './header/breadcrumbs.js';
|
|
45
|
+
export { default as Chart } from './charts/Chart.svelte';
|
|
46
|
+
export { default as FileUpload } from './elements/file-upload/FileUpload.svelte';
|
|
47
|
+
// Toaster: Should be registered in +layout.svelte
|
|
48
|
+
export { default as Toaster } from './sonner/sonner.svelte';
|
|
49
|
+
// Form Component Exports
|
|
50
|
+
export { default as Form } from './forms/Form.svelte';
|
|
51
|
+
export { default as Input } from './forms/Input.svelte';
|
|
52
|
+
export { default as RadioInputs } from './forms/RadioInputs.svelte';
|
|
53
|
+
export { default as Checkbox } from './forms/Checkbox.svelte';
|
|
54
|
+
export { default as Toggle } from './forms/Toggle.svelte';
|
|
55
|
+
export { default as Slider } from './forms/Slider.svelte';
|
|
56
|
+
export { default as NumberInput } from './forms/NumberInput.svelte';
|
|
57
|
+
export { default as DateRange } from './forms/DateRange.svelte';
|
|
58
|
+
export { default as Tags } from './forms/Tags.svelte';
|
|
59
|
+
export { default as RadioPill } from './forms/RadioPill.svelte';
|
|
60
|
+
export { default as Progress } from './elements/progress/Progress.svelte';
|
|
61
|
+
export { default as Timeline } from './elements/timeline/Timeline.svelte';
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { cn } from '../../helper/cls.js';
|
|
3
|
-
import { card
|
|
3
|
+
import { card } from './card.js';
|
|
4
|
+
import type { CardProps } from '../../index.js';
|
|
5
|
+
import { Color } from '../../variants.js';
|
|
4
6
|
|
|
5
7
|
let {
|
|
6
8
|
children,
|
|
7
9
|
custom,
|
|
8
10
|
title,
|
|
9
|
-
color =
|
|
11
|
+
color = Color.DEFAULT,
|
|
10
12
|
class: className = '',
|
|
11
13
|
titleclass: titleClass = '',
|
|
12
14
|
bodyclass: bodyClass = ''
|
|
13
15
|
}: CardProps = $props();
|
|
14
16
|
|
|
15
|
-
// Get the slots from the card with fixed default settings
|
|
16
17
|
const {
|
|
17
18
|
base,
|
|
18
19
|
title: titleSlot,
|
|
19
20
|
body: bodySlot
|
|
20
|
-
} = $derived(
|
|
21
|
-
card({
|
|
22
|
-
color
|
|
23
|
-
})
|
|
24
|
-
);
|
|
21
|
+
} = $derived(card({ color }));
|
|
25
22
|
|
|
26
23
|
const baseClass = $derived(cn(base(), className));
|
|
27
24
|
const titleClasses = $derived(cn(titleSlot(), titleClass));
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
import { GridComponent } from 'echarts/components';
|
|
12
12
|
// @ts-expect-error - ECharts types are not available
|
|
13
13
|
import { SVGRenderer } from 'echarts/renderers';
|
|
14
|
+
import { Color } from '../../variants.js';
|
|
14
15
|
|
|
15
16
|
// @ts-expect-error - ECharts types are not available
|
|
16
17
|
echarts.use([LineChart, GridComponent, SVGRenderer]);
|
|
@@ -21,11 +22,11 @@
|
|
|
21
22
|
previousValue,
|
|
22
23
|
previousValuePrefix = 'from',
|
|
23
24
|
trend,
|
|
24
|
-
color =
|
|
25
|
+
color = Color.PRIMARY,
|
|
25
26
|
chartData,
|
|
26
27
|
children,
|
|
27
28
|
class: className = '',
|
|
28
|
-
formatLargeNumbers = true
|
|
29
|
+
formatLargeNumbers = true
|
|
29
30
|
}: StatsCardProps = $props();
|
|
30
31
|
|
|
31
32
|
// Chart container reference
|
|
@@ -37,8 +38,7 @@
|
|
|
37
38
|
if (trendX === undefined || trendX === null) return 'neutral';
|
|
38
39
|
if (trendX > 0) {
|
|
39
40
|
return 'up';
|
|
40
|
-
}
|
|
41
|
-
else if (trendX < 0) {
|
|
41
|
+
} else if (trendX < 0) {
|
|
42
42
|
return 'down';
|
|
43
43
|
}
|
|
44
44
|
return 'neutral';
|
|
@@ -46,56 +46,84 @@
|
|
|
46
46
|
|
|
47
47
|
function formatValue(val?: string | number): string {
|
|
48
48
|
if (val === undefined || val === null) return '';
|
|
49
|
+
|
|
50
|
+
let numValue: number;
|
|
51
|
+
let currencySymbol: string | null = null;
|
|
52
|
+
|
|
53
|
+
// Handle string inputs
|
|
49
54
|
if (typeof val === 'string') {
|
|
50
|
-
|
|
55
|
+
// Check for currency symbols
|
|
56
|
+
const currencyMatch = val.match(/^(\$|€|£|¥)/);
|
|
57
|
+
if (currencyMatch) {
|
|
58
|
+
currencySymbol = currencyMatch[0];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Extract the numeric value
|
|
62
|
+
const cleanedStr = val.replace(/[^0-9.-]/g, '');
|
|
51
63
|
if (/^-?\d+(\.\d+)?$/.test(cleanedStr)) {
|
|
52
|
-
|
|
53
|
-
|
|
64
|
+
numValue = parseFloat(cleanedStr);
|
|
65
|
+
} else {
|
|
66
|
+
// Not a number we can format
|
|
67
|
+
return val;
|
|
54
68
|
}
|
|
55
|
-
|
|
69
|
+
} else {
|
|
70
|
+
// Already a number
|
|
71
|
+
numValue = val;
|
|
56
72
|
}
|
|
57
73
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
74
|
+
// Format based on whether it's currency and size
|
|
75
|
+
if (currencySymbol) {
|
|
76
|
+
// Currency formatting with compact notation if needed
|
|
77
|
+
return new Intl.NumberFormat('en-US', {
|
|
78
|
+
style: 'currency',
|
|
79
|
+
currency: currencySymbolToCode(currencySymbol),
|
|
80
|
+
notation: formatLargeNumbers ? 'compact' : 'standard',
|
|
81
|
+
compactDisplay: 'short',
|
|
82
|
+
maximumFractionDigits: 1
|
|
83
|
+
}).format(numValue);
|
|
84
|
+
} else {
|
|
85
|
+
// Regular number formatting with compact notation if needed
|
|
86
|
+
return new Intl.NumberFormat('en-US', {
|
|
87
|
+
notation: formatLargeNumbers ? 'compact' : 'standard',
|
|
88
|
+
compactDisplay: 'short',
|
|
89
|
+
maximumFractionDigits: 1
|
|
90
|
+
}).format(numValue);
|
|
64
91
|
}
|
|
65
|
-
|
|
66
|
-
return val.toString();
|
|
67
92
|
}
|
|
68
93
|
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
return '#10B981';
|
|
79
|
-
case 'warning':
|
|
80
|
-
return '#F59E0B';
|
|
81
|
-
case 'danger':
|
|
82
|
-
return '#EF4444';
|
|
83
|
-
default:
|
|
84
|
-
return '#6B7280';
|
|
85
|
-
}
|
|
94
|
+
// Helper function to convert currency symbols to ISO codes
|
|
95
|
+
function currencySymbolToCode(symbol: string): string {
|
|
96
|
+
const map: Record<string, string> = {
|
|
97
|
+
$: 'USD',
|
|
98
|
+
'€': 'EUR',
|
|
99
|
+
'£': 'GBP',
|
|
100
|
+
'¥': 'JPY'
|
|
101
|
+
};
|
|
102
|
+
return map[symbol] || 'USD';
|
|
86
103
|
}
|
|
87
104
|
|
|
105
|
+
const chartColorMap = {
|
|
106
|
+
[Color.PRIMARY]: '#4F46E5',
|
|
107
|
+
[Color.SECONDARY]: '#6B7280',
|
|
108
|
+
[Color.INFO]: '#3B82F6',
|
|
109
|
+
[Color.SUCCESS]: '#10B981',
|
|
110
|
+
[Color.WARNING]: '#F59E0B',
|
|
111
|
+
[Color.DANGER]: '#EF4444',
|
|
112
|
+
[Color.DEFAULT]: '#6B7280'
|
|
113
|
+
};
|
|
114
|
+
|
|
88
115
|
const trendDirection = $derived(getTrendDirection(trend));
|
|
89
116
|
const formattedValue = $derived(formatValue(value));
|
|
90
|
-
const formattedPreviousValue = $derived(
|
|
117
|
+
const formattedPreviousValue = $derived(
|
|
118
|
+
previousValue !== undefined ? formatValue(previousValue) : undefined
|
|
119
|
+
);
|
|
91
120
|
|
|
92
121
|
const {
|
|
93
122
|
base,
|
|
94
123
|
label: labelSlot,
|
|
95
124
|
value: valueSlot,
|
|
96
125
|
trend: trendSlot,
|
|
97
|
-
previousValue: previousValueSlot
|
|
98
|
-
chartContainer: chartContainerSlot
|
|
126
|
+
previousValue: previousValueSlot
|
|
99
127
|
} = $derived(
|
|
100
128
|
statsCard({
|
|
101
129
|
color,
|
|
@@ -103,12 +131,10 @@
|
|
|
103
131
|
})
|
|
104
132
|
);
|
|
105
133
|
|
|
106
|
-
const baseClass = $derived(cn(base(), 'flex flex-col p-6 rounded-lg border border-gray-200 bg-white shadow-sm', className));
|
|
107
134
|
const labelClasses = $derived(cn(labelSlot(), 'text-sm font-medium mb-1'));
|
|
108
135
|
const valueClasses = $derived(cn(valueSlot(), 'text-4xl font-bold'));
|
|
109
136
|
const trendClasses = $derived(cn(trendSlot(), 'text-sm font-medium ml-2'));
|
|
110
137
|
const previousValueClasses = $derived(cn(previousValueSlot(), 'text-sm text-gray-500 mt-1'));
|
|
111
|
-
const chartContainerClasses = $derived(cn(chartContainerSlot(), 'ml-auto h-10 w-32'));
|
|
112
138
|
|
|
113
139
|
const trendFormatted = $derived.by(() => {
|
|
114
140
|
if (trend === undefined || trend === null) return '';
|
|
@@ -117,8 +143,7 @@
|
|
|
117
143
|
return trend >= 0 ? `+${formattedValue}%` : `-${formattedValue}%`;
|
|
118
144
|
});
|
|
119
145
|
|
|
120
|
-
|
|
121
|
-
const chartColor = $derived(getChartColor());
|
|
146
|
+
const chartColor = $derived(chartColorMap[color] || chartColorMap[Color.DEFAULT]);
|
|
122
147
|
|
|
123
148
|
onMount(() => {
|
|
124
149
|
if (!chartData || chartData.length < 2 || !chartContainer) return;
|
|
@@ -143,41 +168,43 @@
|
|
|
143
168
|
type: 'value',
|
|
144
169
|
show: false
|
|
145
170
|
},
|
|
146
|
-
series: [
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
171
|
+
series: [
|
|
172
|
+
{
|
|
173
|
+
data: chartData,
|
|
174
|
+
type: 'line',
|
|
175
|
+
symbol: 'none',
|
|
176
|
+
lineStyle: {
|
|
177
|
+
color: chartColor,
|
|
178
|
+
width: 2
|
|
179
|
+
},
|
|
180
|
+
areaStyle: {
|
|
181
|
+
color: {
|
|
182
|
+
type: 'linear',
|
|
183
|
+
x: 0,
|
|
184
|
+
y: 0,
|
|
185
|
+
x2: 0,
|
|
186
|
+
y2: 1,
|
|
187
|
+
colorStops: [
|
|
188
|
+
{
|
|
189
|
+
offset: 0,
|
|
190
|
+
color: chartColor + '40' // 25% opacity
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
offset: 1,
|
|
194
|
+
color: chartColor + '00' // 0% opacity
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
smooth: true
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
animation: false,
|
|
203
|
+
animationDuration: 1000
|
|
176
204
|
};
|
|
177
205
|
|
|
178
206
|
chart.setOption(options);
|
|
179
207
|
|
|
180
|
-
// Handle resize
|
|
181
208
|
const resizeObserver = new ResizeObserver(() => {
|
|
182
209
|
chart && chart.resize();
|
|
183
210
|
});
|
|
@@ -191,40 +218,42 @@
|
|
|
191
218
|
});
|
|
192
219
|
</script>
|
|
193
220
|
|
|
194
|
-
<div
|
|
195
|
-
|
|
196
|
-
|
|
221
|
+
<div
|
|
222
|
+
class={cn(
|
|
223
|
+
base(),
|
|
224
|
+
'@container flex flex-col rounded-lg border border-gray-200 bg-white p-6 shadow-sm',
|
|
225
|
+
className
|
|
226
|
+
)}
|
|
227
|
+
>
|
|
228
|
+
<div class="flex items-center justify-between">
|
|
197
229
|
{#if label}
|
|
198
230
|
<dt class={labelClasses}>{label}</dt>
|
|
199
231
|
{/if}
|
|
200
232
|
{#if trend !== undefined && trend !== null}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
233
|
+
<span class={trendClasses}>
|
|
234
|
+
{trendFormatted}
|
|
235
|
+
</span>
|
|
204
236
|
{/if}
|
|
205
237
|
</div>
|
|
206
238
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
<!-- Value section -->
|
|
210
|
-
<div class="flex-grow">
|
|
239
|
+
<div class="mt-1 flex flex-row items-center overflow-clip">
|
|
240
|
+
<div class="w-full flex-grow">
|
|
211
241
|
{#if value !== undefined}
|
|
212
|
-
<dd class={valueClasses}>
|
|
242
|
+
<dd class={valueClasses} title={value}>
|
|
213
243
|
{formattedValue}
|
|
214
244
|
</dd>
|
|
215
245
|
{/if}
|
|
216
246
|
|
|
217
|
-
<!-- Previous value or tagline underneath -->
|
|
218
247
|
{#if previousValue !== undefined}
|
|
219
248
|
<div class={previousValueClasses}>
|
|
220
|
-
{previousValuePrefix}
|
|
249
|
+
{previousValuePrefix}
|
|
250
|
+
{formattedPreviousValue}
|
|
221
251
|
</div>
|
|
222
252
|
{/if}
|
|
223
253
|
</div>
|
|
224
254
|
|
|
225
|
-
<!-- ECharts chart -->
|
|
226
255
|
{#if chartData && chartData.length > 1}
|
|
227
|
-
<div class=
|
|
256
|
+
<div class="h-10 w-full min-w-32 @max-[212.862px]:hidden" bind:this={chartContainer}></div>
|
|
228
257
|
{/if}
|
|
229
258
|
</div>
|
|
230
259
|
|
|
@@ -233,4 +262,4 @@
|
|
|
233
262
|
{@render children()}
|
|
234
263
|
</div>
|
|
235
264
|
{/if}
|
|
236
|
-
</div>
|
|
265
|
+
</div>
|
|
@@ -1,39 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type { Snippet } from 'svelte';
|
|
3
|
-
import type { VariantColors } from '../../types/variants.js';
|
|
1
|
+
import { Color } from '../../variants.js';
|
|
4
2
|
export declare const card: import("tailwind-variants").TVReturnType<{
|
|
5
3
|
color: {
|
|
6
|
-
|
|
4
|
+
[Color.DEFAULT]: {
|
|
7
5
|
base: string;
|
|
8
6
|
title: string;
|
|
9
7
|
body: string;
|
|
10
8
|
};
|
|
11
|
-
|
|
9
|
+
[Color.PRIMARY]: {
|
|
12
10
|
base: string;
|
|
13
11
|
title: string;
|
|
14
12
|
body: string;
|
|
15
13
|
};
|
|
16
|
-
|
|
14
|
+
[Color.SECONDARY]: {
|
|
17
15
|
base: string;
|
|
18
16
|
title: string;
|
|
19
17
|
body: string;
|
|
20
18
|
};
|
|
21
|
-
|
|
19
|
+
[Color.INFO]: {
|
|
22
20
|
base: string;
|
|
23
21
|
title: string;
|
|
24
22
|
body: string;
|
|
25
23
|
};
|
|
26
|
-
|
|
24
|
+
[Color.SUCCESS]: {
|
|
27
25
|
base: string;
|
|
28
26
|
title: string;
|
|
29
27
|
body: string;
|
|
30
28
|
};
|
|
31
|
-
|
|
29
|
+
[Color.WARNING]: {
|
|
32
30
|
base: string;
|
|
33
31
|
title: string;
|
|
34
32
|
body: string;
|
|
35
33
|
};
|
|
36
|
-
|
|
34
|
+
[Color.DANGER]: {
|
|
37
35
|
base: string;
|
|
38
36
|
title: string;
|
|
39
37
|
body: string;
|
|
@@ -45,37 +43,37 @@ export declare const card: import("tailwind-variants").TVReturnType<{
|
|
|
45
43
|
body: string;
|
|
46
44
|
}, undefined, {
|
|
47
45
|
color: {
|
|
48
|
-
|
|
46
|
+
[Color.DEFAULT]: {
|
|
49
47
|
base: string;
|
|
50
48
|
title: string;
|
|
51
49
|
body: string;
|
|
52
50
|
};
|
|
53
|
-
|
|
51
|
+
[Color.PRIMARY]: {
|
|
54
52
|
base: string;
|
|
55
53
|
title: string;
|
|
56
54
|
body: string;
|
|
57
55
|
};
|
|
58
|
-
|
|
56
|
+
[Color.SECONDARY]: {
|
|
59
57
|
base: string;
|
|
60
58
|
title: string;
|
|
61
59
|
body: string;
|
|
62
60
|
};
|
|
63
|
-
|
|
61
|
+
[Color.INFO]: {
|
|
64
62
|
base: string;
|
|
65
63
|
title: string;
|
|
66
64
|
body: string;
|
|
67
65
|
};
|
|
68
|
-
|
|
66
|
+
[Color.SUCCESS]: {
|
|
69
67
|
base: string;
|
|
70
68
|
title: string;
|
|
71
69
|
body: string;
|
|
72
70
|
};
|
|
73
|
-
|
|
71
|
+
[Color.WARNING]: {
|
|
74
72
|
base: string;
|
|
75
73
|
title: string;
|
|
76
74
|
body: string;
|
|
77
75
|
};
|
|
78
|
-
|
|
76
|
+
[Color.DANGER]: {
|
|
79
77
|
base: string;
|
|
80
78
|
title: string;
|
|
81
79
|
body: string;
|
|
@@ -87,37 +85,37 @@ export declare const card: import("tailwind-variants").TVReturnType<{
|
|
|
87
85
|
body: string;
|
|
88
86
|
}, import("tailwind-variants").TVReturnType<{
|
|
89
87
|
color: {
|
|
90
|
-
|
|
88
|
+
[Color.DEFAULT]: {
|
|
91
89
|
base: string;
|
|
92
90
|
title: string;
|
|
93
91
|
body: string;
|
|
94
92
|
};
|
|
95
|
-
|
|
93
|
+
[Color.PRIMARY]: {
|
|
96
94
|
base: string;
|
|
97
95
|
title: string;
|
|
98
96
|
body: string;
|
|
99
97
|
};
|
|
100
|
-
|
|
98
|
+
[Color.SECONDARY]: {
|
|
101
99
|
base: string;
|
|
102
100
|
title: string;
|
|
103
101
|
body: string;
|
|
104
102
|
};
|
|
105
|
-
|
|
103
|
+
[Color.INFO]: {
|
|
106
104
|
base: string;
|
|
107
105
|
title: string;
|
|
108
106
|
body: string;
|
|
109
107
|
};
|
|
110
|
-
|
|
108
|
+
[Color.SUCCESS]: {
|
|
111
109
|
base: string;
|
|
112
110
|
title: string;
|
|
113
111
|
body: string;
|
|
114
112
|
};
|
|
115
|
-
|
|
113
|
+
[Color.WARNING]: {
|
|
116
114
|
base: string;
|
|
117
115
|
title: string;
|
|
118
116
|
body: string;
|
|
119
117
|
};
|
|
120
|
-
|
|
118
|
+
[Color.DANGER]: {
|
|
121
119
|
base: string;
|
|
122
120
|
title: string;
|
|
123
121
|
body: string;
|
|
@@ -128,12 +126,3 @@ export declare const card: import("tailwind-variants").TVReturnType<{
|
|
|
128
126
|
title: string;
|
|
129
127
|
body: string;
|
|
130
128
|
}, undefined, unknown, unknown, undefined>>;
|
|
131
|
-
export type CardProps = {
|
|
132
|
-
color?: VariantColors;
|
|
133
|
-
title?: string;
|
|
134
|
-
class?: ClassValue;
|
|
135
|
-
titleclass?: ClassValue;
|
|
136
|
-
bodyclass?: ClassValue;
|
|
137
|
-
children?: Snippet;
|
|
138
|
-
custom?: Snippet;
|
|
139
|
-
};
|
package/dist/layout/card/card.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tv } from 'tailwind-variants';
|
|
2
|
+
import { Color } from '../../variants.js';
|
|
2
3
|
export const card = tv({
|
|
3
4
|
slots: {
|
|
4
5
|
base: 'flex flex-col p-4 gap-2 border rounded-md shadow-sm',
|
|
@@ -7,37 +8,37 @@ export const card = tv({
|
|
|
7
8
|
},
|
|
8
9
|
variants: {
|
|
9
10
|
color: {
|
|
10
|
-
|
|
11
|
+
[Color.DEFAULT]: {
|
|
11
12
|
base: 'bg-default-50 border-default-200',
|
|
12
13
|
title: 'text-default-900',
|
|
13
14
|
body: 'text-default-700'
|
|
14
15
|
},
|
|
15
|
-
|
|
16
|
+
[Color.PRIMARY]: {
|
|
16
17
|
base: 'bg-primary-50 border-primary-200',
|
|
17
18
|
title: 'text-primary-900',
|
|
18
19
|
body: 'text-primary-700'
|
|
19
20
|
},
|
|
20
|
-
|
|
21
|
+
[Color.SECONDARY]: {
|
|
21
22
|
base: 'bg-secondary-50 border-secondary-200',
|
|
22
23
|
title: 'text-secondary-900',
|
|
23
24
|
body: 'text-secondary-700'
|
|
24
25
|
},
|
|
25
|
-
|
|
26
|
+
[Color.INFO]: {
|
|
26
27
|
base: 'bg-info-50 border-info-200',
|
|
27
28
|
title: 'text-info-900',
|
|
28
29
|
body: 'text-info-700'
|
|
29
30
|
},
|
|
30
|
-
|
|
31
|
+
[Color.SUCCESS]: {
|
|
31
32
|
base: 'bg-success-50 border-success-200',
|
|
32
33
|
title: 'text-success-900',
|
|
33
34
|
body: 'text-success-700'
|
|
34
35
|
},
|
|
35
|
-
|
|
36
|
+
[Color.WARNING]: {
|
|
36
37
|
base: 'bg-warning-50 border-warning-200',
|
|
37
38
|
title: 'text-warning-900',
|
|
38
39
|
body: 'text-warning-700'
|
|
39
40
|
},
|
|
40
|
-
|
|
41
|
+
[Color.DANGER]: {
|
|
41
42
|
base: 'bg-danger-50 border-danger-200',
|
|
42
43
|
title: 'text-danger-900',
|
|
43
44
|
body: 'text-danger-700'
|
|
@@ -45,6 +46,6 @@ export const card = tv({
|
|
|
45
46
|
}
|
|
46
47
|
},
|
|
47
48
|
defaultVariants: {
|
|
48
|
-
color:
|
|
49
|
+
color: Color.DEFAULT
|
|
49
50
|
}
|
|
50
51
|
});
|