@makolabs/ripple 0.0.1-dev.3 → 0.0.1-dev.30

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