@tsiky/components-r19 1.0.0 → 1.2.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.
Files changed (61) hide show
  1. package/index.ts +35 -33
  2. package/package.json +1 -1
  3. package/src/components/AnnouncementPanel/FlexRowContainer.css +17 -17
  4. package/src/components/AnnouncementPanel/FlexRowContainer.stories.tsx +329 -329
  5. package/src/components/AnnouncementPanel/FlexRowContainer.tsx +24 -24
  6. package/src/components/AnnouncementPanel/ListBox/CounterListBox.css +56 -56
  7. package/src/components/AnnouncementPanel/ListBox/CounterListBox.stories.tsx +292 -292
  8. package/src/components/AnnouncementPanel/ListBox/CounterListBox.tsx +106 -106
  9. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.css +57 -57
  10. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.stories.tsx +189 -189
  11. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.tsx +138 -138
  12. package/src/components/AnnouncementPanel/ListBox/TrendListBox.css +61 -61
  13. package/src/components/AnnouncementPanel/ListBox/TrendListBox.stories.tsx +257 -257
  14. package/src/components/AnnouncementPanel/ListBox/TrendListBox.tsx +90 -90
  15. package/src/components/AnnouncementPanel/ListBox/index.ts +3 -3
  16. package/src/components/AnnouncementPanel/ListContentContainer.css +23 -23
  17. package/src/components/AnnouncementPanel/ListContentContainer.stories.tsx +212 -212
  18. package/src/components/AnnouncementPanel/ListContentContainer.tsx +33 -33
  19. package/src/components/AnnouncementPanel/index.ts +3 -3
  20. package/src/components/Charts/area-chart-admission/AreaChartAdmission.tsx +129 -89
  21. package/src/components/Charts/bar-chart/BarChart.tsx +171 -132
  22. package/src/components/Charts/boxplot-chart/BoxPlotChart.tsx +114 -114
  23. package/src/components/Charts/mixed-chart/MixedChart.tsx +65 -9
  24. package/src/components/Charts/sankey-adaptation/sankey.tsx +70 -70
  25. package/src/components/Charts/sankey-chart/SankeyChart.tsx +183 -155
  26. package/src/components/Confirmationpopup/ConfirmationPopup.module.css +88 -0
  27. package/src/components/Confirmationpopup/ConfirmationPopup.stories.tsx +94 -0
  28. package/src/components/Confirmationpopup/ConfirmationPopup.tsx +47 -0
  29. package/src/components/Confirmationpopup/index.ts +6 -0
  30. package/src/components/Confirmationpopup/useConfirmationPopup.ts +48 -0
  31. package/src/components/DayStatCard/DayStatCard.tsx +96 -69
  32. package/src/components/DraggableSwitcher/DraggableSwitcherButton.tsx +58 -58
  33. package/src/components/DraggableSwitcher/context/useDraggableSwitcher.tsx +45 -45
  34. package/src/components/DraggableSwitcher/index.ts +2 -2
  35. package/src/components/DynamicInput/input/SelectInput.tsx +75 -75
  36. package/src/components/DynamicInput/input/assets/SelectInput.module.css +95 -95
  37. package/src/components/DynamicTable/TableCell.tsx +38 -30
  38. package/src/components/DynamicTable/TableHeader.tsx +39 -34
  39. package/src/components/DynamicTable/TableauDynamique.module.css +1333 -1287
  40. package/src/components/DynamicTable/TableauDynamique.tsx +154 -154
  41. package/src/components/DynamicTable/tools/tableTypes.ts +63 -63
  42. package/src/components/Grid/Grid.tsx +5 -0
  43. package/src/components/Grid/grid.css +285 -285
  44. package/src/components/Header/Header.tsx +4 -2
  45. package/src/components/Header/header.css +61 -31
  46. package/src/components/MetricsPanel/MetricsPanel.module.css +688 -636
  47. package/src/components/MetricsPanel/MetricsPanel.tsx +220 -282
  48. package/src/components/MetricsPanel/renderers/CompactRenderer.tsx +148 -125
  49. package/src/components/NavBar/NavBar.tsx +1 -1
  50. package/src/components/NavItem/NavItem.tsx +58 -58
  51. package/src/components/PeriodRange/PeriodRange.module.css +158 -158
  52. package/src/components/PeriodRange/PeriodRange.tsx +130 -130
  53. package/src/components/SearchBar/SearchBar.css +40 -40
  54. package/src/components/SelectFilter/SelectFilter.module.css +249 -0
  55. package/src/components/SelectFilter/SelectFilter.stories.tsx +321 -0
  56. package/src/components/SelectFilter/SelectFilter.tsx +219 -0
  57. package/src/components/SelectFilter/index.ts +2 -0
  58. package/src/components/SelectFilter/types.ts +19 -0
  59. package/src/components/TranslationKey/TranslationKey.css +272 -272
  60. package/src/components/TranslationKey/TranslationKey.tsx +266 -245
  61. package/src/components/TrendList/TrendList.tsx +72 -45
@@ -1,61 +1,61 @@
1
- .tlb-root {
2
- padding: 0.125rem;
3
- }
4
- .tlb-title {
5
- font-weight: var(--font-bold);
6
- padding: 0.0625rem 0.125rem;
7
- margin-bottom: 0.0625rem;
8
- }
9
-
10
- .tlb-grid {
11
- display: flex;
12
- flex-direction: column;
13
- gap: 0.03125rem;
14
- }
15
-
16
- /* row wrapper */
17
- .tlb-row {
18
- display: grid;
19
- grid-template-columns: minmax(max-content, 1fr) minmax(max-content, 1fr);
20
- gap: var(--col-gap, 0.125rem);
21
- align-items: center;
22
- padding: 0;
23
- }
24
-
25
- .tlb-label {
26
- padding: 0.0625rem 0 0.0625rem 0.0625rem;
27
- min-width: 0;
28
- justify-self: start;
29
- }
30
- .tlb-value-group {
31
- display: flex;
32
- align-items: center;
33
- gap: 0.015625rem;
34
- min-width: 0;
35
- justify-self: center;
36
- }
37
- .tlb-value-wrap {
38
- display: flex;
39
- gap: 0.03125rem;
40
- align-items: center;
41
- min-width: 0;
42
- }
43
- .tlb-value,
44
- .tlb-delta {
45
- min-width: 0;
46
- white-space: nowrap;
47
- }
48
- .tlb-icon-col {
49
- display: flex;
50
- align-items: center;
51
- justify-content: center;
52
- }
53
- .tlb-delta.positive {
54
- color: #15803d;
55
- }
56
- .tlb-delta.negative {
57
- color: #dc2626;
58
- }
59
- .tlb-delta.neutral {
60
- color: #6b7280;
61
- }
1
+ .tlb-root {
2
+ padding: 0.125rem;
3
+ }
4
+ .tlb-title {
5
+ font-weight: var(--font-bold);
6
+ padding: 0.0625rem 0.125rem;
7
+ margin-bottom: 0.0625rem;
8
+ }
9
+
10
+ .tlb-grid {
11
+ display: flex;
12
+ flex-direction: column;
13
+ gap: 0.03125rem;
14
+ }
15
+
16
+ /* row wrapper */
17
+ .tlb-row {
18
+ display: grid;
19
+ grid-template-columns: minmax(max-content, 1fr) minmax(max-content, 1fr);
20
+ gap: var(--col-gap, 0.125rem);
21
+ align-items: center;
22
+ padding: 0;
23
+ }
24
+
25
+ .tlb-label {
26
+ padding: 0.0625rem 0 0.0625rem 0.0625rem;
27
+ min-width: 0;
28
+ justify-self: start;
29
+ }
30
+ .tlb-value-group {
31
+ display: flex;
32
+ align-items: center;
33
+ gap: 0.015625rem;
34
+ min-width: 0;
35
+ justify-self: center;
36
+ }
37
+ .tlb-value-wrap {
38
+ display: flex;
39
+ gap: 0.03125rem;
40
+ align-items: center;
41
+ min-width: 0;
42
+ }
43
+ .tlb-value,
44
+ .tlb-delta {
45
+ min-width: 0;
46
+ white-space: nowrap;
47
+ }
48
+ .tlb-icon-col {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ }
53
+ .tlb-delta.positive {
54
+ color: #15803d;
55
+ }
56
+ .tlb-delta.negative {
57
+ color: #dc2626;
58
+ }
59
+ .tlb-delta.neutral {
60
+ color: #6b7280;
61
+ }
@@ -1,257 +1,257 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { TrendListBox } from './TrendListBox';
3
- import {
4
- ArrowUp,
5
- ArrowDown,
6
- Minus,
7
- TrendingUp,
8
- Users,
9
- DollarSign,
10
- Activity,
11
- Star,
12
- AlertTriangle,
13
- Zap,
14
- Clock,
15
- Target,
16
- } from 'lucide-react';
17
-
18
- const meta: Meta<typeof TrendListBox> = {
19
- title: 'Components/ListBox/TrendListBox',
20
- component: TrendListBox,
21
- parameters: {
22
- layout: 'centered',
23
- docs: {
24
- description: {
25
- component: 'A component to display trends with icons, values, and variations.',
26
- },
27
- },
28
- },
29
- tags: ['autodocs'],
30
- argTypes: {
31
- items: {
32
- control: 'object',
33
- description: 'Array of trend items with label, value, delta, and optional icon',
34
- },
35
- titleBg: {
36
- control: 'color',
37
- description: 'Background color of the title',
38
- },
39
- titleColor: {
40
- control: 'color',
41
- description: 'Text color of the title',
42
- },
43
- },
44
- };
45
-
46
- export default meta;
47
- type Story = StoryObj<typeof meta>;
48
-
49
- export const Default: Story = {
50
- name: 'Default',
51
- args: {
52
- title: "Today's Trends",
53
- items: [
54
- { label: 'Sales', value: '+12%', delta: 12, icon: <ArrowUp size={16} /> },
55
- { label: 'Visits', value: '-3%', delta: -3, icon: <ArrowDown size={16} /> },
56
- { label: 'Conversion', value: '+5%', delta: 5, icon: <ArrowUp size={16} /> },
57
- { label: 'Bounce Rate', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
58
- ],
59
- },
60
- };
61
-
62
- export const PerformanceTrends: Story = {
63
- name: 'Performance Trends',
64
- args: {
65
- title: 'Department Performance',
66
- items: [
67
- { label: 'Marketing', value: '+15%', delta: 15, icon: <TrendingUp size={16} /> },
68
- { label: 'Sales', value: '+8%', delta: 8, icon: <ArrowUp size={16} /> },
69
- { label: 'Support', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
70
- { label: 'IT', value: '+22%', delta: 22, icon: <Zap size={16} /> },
71
- ],
72
- lineClasses: {
73
- 0: 'trend-excellent',
74
- 1: 'trend-good',
75
- 2: 'trend-warning',
76
- 3: 'trend-outstanding',
77
- },
78
- },
79
- decorators: [
80
- (Story) => (
81
- <>
82
- <style>
83
- {`
84
- .trend-excellent { background-color: #f0fdf4; }
85
- .trend-good { background-color: #f0f9ff; }
86
- .trend-warning { background-color: #fffbeb; }
87
- .trend-outstanding { background-color: #faf5ff; }
88
- `}
89
- </style>
90
- <Story />
91
- </>
92
- ),
93
- ],
94
- };
95
-
96
- export const StatusMonitoring: Story = {
97
- name: 'Status Monitoring',
98
- args: {
99
- title: 'System Health',
100
- items: [
101
- { label: 'Availability', value: '99.9%', delta: 0.1, icon: <Activity size={16} /> },
102
- { label: 'Performance', value: '96%', delta: -2, icon: <AlertTriangle size={16} /> },
103
- { label: 'Security', value: '100%', delta: 0, icon: <Star size={16} /> },
104
- { label: 'Capacity', value: '78%', delta: 8, icon: <TrendingUp size={16} /> },
105
- ],
106
- },
107
- };
108
-
109
- export const AlertLevels: Story = {
110
- name: 'Alert Levels',
111
- args: {
112
- title: 'Real-time Alerts',
113
- items: [
114
- {
115
- label: 'Security',
116
- value: 'High',
117
- delta: 3,
118
- icon: <AlertTriangle size={16} color='#dc2626' />,
119
- },
120
- {
121
- label: 'Performance',
122
- value: 'Medium',
123
- delta: -1,
124
- icon: <Activity size={16} color='#f59e0b' />,
125
- },
126
- { label: 'Network', value: 'Normal', delta: 0, icon: <Zap size={16} color='#22c55e' /> },
127
- {
128
- label: 'Storage',
129
- value: 'Critical',
130
- delta: 15,
131
- icon: <AlertTriangle size={16} color='#dc2626' />,
132
- },
133
- ],
134
- lineClasses: {
135
- 0: 'alert-high',
136
- 2: 'alert-normal',
137
- 3: 'alert-critical',
138
- },
139
- },
140
- decorators: [
141
- (Story) => (
142
- <>
143
- <style>
144
- {`
145
- .alert-high { background-color: #fef2f2; }
146
- .alert-normal { background-color: #f0fdf4; }
147
- .alert-critical { background-color: #fef2f2; border-left: 3px solid #dc2626; }
148
- `}
149
- </style>
150
- <Story />
151
- </>
152
- ),
153
- ],
154
- };
155
-
156
- export const CustomIcons: Story = {
157
- name: 'Custom Icons',
158
- args: {
159
- title: 'Business Indicators',
160
- items: [
161
- { label: 'Revenue', value: '€45.2K', delta: 12.5 },
162
- { label: 'New Customers', value: '+24', delta: 8 },
163
- { label: 'Satisfaction', value: '4.8/5', delta: 0.3 },
164
- { label: 'Avg. Delay', value: '-15%', delta: -15 },
165
- ],
166
- renderTrendIcon: (item) => {
167
- if (item.delta && item.delta > 10) {
168
- return <Zap size={16} color='#f59e0b' />;
169
- } else if (item.delta && item.delta > 0) {
170
- return <ArrowUp size={16} color='#10b981' />;
171
- } else if (item.delta && item.delta < 0) {
172
- return <ArrowDown size={16} color='#ef4444' />;
173
- }
174
- return <Minus size={16} color='#6b7280' />;
175
- },
176
- },
177
- };
178
-
179
- export const RatingTrends: Story = {
180
- name: 'Rating Trends',
181
- args: {
182
- title: 'Ratings Evolution',
183
- items: [
184
- { label: 'Product Quality', value: '4.8→4.9', delta: 0.1, icon: <ArrowUp size={16} /> },
185
- { label: 'Customer Service', value: '4.5→4.3', delta: -0.2, icon: <ArrowDown size={16} /> },
186
- { label: 'Speed', value: '4.7→4.7', delta: 0, icon: <Minus size={16} /> },
187
- { label: 'Value for Money', value: '4.2→4.6', delta: 0.4, icon: <ArrowUp size={16} /> },
188
- ],
189
- },
190
- };
191
-
192
- export const FinancialMetrics: Story = {
193
- name: 'Financial Metrics',
194
- args: {
195
- title: 'Financial Indicators',
196
- titleBg: '#059669',
197
- titleColor: 'white',
198
- items: [
199
- { label: 'Revenue Q1', value: '€125K', delta: 8.5, icon: <DollarSign size={16} /> },
200
- { label: 'Gross Margin', value: '42%', delta: 2.1, icon: <TrendingUp size={16} /> },
201
- { label: 'Expenses', value: '€89K', delta: -1.2, icon: <ArrowDown size={16} /> },
202
- { label: 'ROI', value: '18%', delta: 3.4, icon: <Zap size={16} /> },
203
- ],
204
- },
205
- };
206
-
207
- export const UserAnalytics: Story = {
208
- name: 'User Analytics',
209
- args: {
210
- title: 'User Engagement',
211
- items: [
212
- { label: 'New Signups', value: '+156', delta: 12, icon: <Users size={16} /> },
213
- { label: 'Active Users', value: '1.2K', delta: 8, icon: <Activity size={16} /> },
214
- { label: 'Retention Rate', value: '78%', delta: 4, icon: <TrendingUp size={16} /> },
215
- { label: 'Churn Rate', value: '2.1%', delta: -0.5, icon: <ArrowDown size={16} /> },
216
- ],
217
- },
218
- };
219
-
220
- export const TimeMetrics: Story = {
221
- name: 'Time Metrics',
222
- args: {
223
- title: 'Time Performance',
224
- items: [
225
- { label: 'Load Time', value: '1.2s', delta: -0.3, icon: <ArrowDown size={16} /> },
226
- { label: 'Response Time', value: '245ms', delta: 15, icon: <ArrowUp size={16} /> },
227
- { label: 'Availability', value: '99.95%', delta: 0.05, icon: <ArrowUp size={16} /> },
228
- { label: 'Avg. Session', value: '4m 12s', delta: 23, icon: <Clock size={16} /> },
229
- ],
230
- },
231
- };
232
-
233
- export const GoalTracking: Story = {
234
- name: 'Goal Tracking',
235
- args: {
236
- title: 'Objective Progress',
237
- items: [
238
- { label: 'Monthly Sales', value: '85%', delta: 5, icon: <Target size={16} /> },
239
- { label: 'New Clients', value: '120%', delta: 20, icon: <Target size={16} /> },
240
- { label: 'Customer Satisfaction', value: '92%', delta: -3, icon: <Target size={16} /> },
241
- { label: 'Operational Efficiency', value: '78%', delta: 8, icon: <Target size={16} /> },
242
- ],
243
- },
244
- };
245
-
246
- export const WithoutDeltas: Story = {
247
- name: 'Without Variations',
248
- args: {
249
- title: 'Current Stats',
250
- items: [
251
- { label: 'Online Users', value: '423', icon: <Users size={16} /> },
252
- { label: 'Orders Today', value: '156', icon: <DollarSign size={16} /> },
253
- { label: 'Open Tickets', value: '24', icon: <Activity size={16} /> },
254
- { label: 'Active Servers', value: '8', icon: <Zap size={16} /> },
255
- ],
256
- },
257
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { TrendListBox } from './TrendListBox';
3
+ import {
4
+ ArrowUp,
5
+ ArrowDown,
6
+ Minus,
7
+ TrendingUp,
8
+ Users,
9
+ DollarSign,
10
+ Activity,
11
+ Star,
12
+ AlertTriangle,
13
+ Zap,
14
+ Clock,
15
+ Target,
16
+ } from 'lucide-react';
17
+
18
+ const meta: Meta<typeof TrendListBox> = {
19
+ title: 'Components/ListBox/TrendListBox',
20
+ component: TrendListBox,
21
+ parameters: {
22
+ layout: 'centered',
23
+ docs: {
24
+ description: {
25
+ component: 'A component to display trends with icons, values, and variations.',
26
+ },
27
+ },
28
+ },
29
+ tags: ['autodocs'],
30
+ argTypes: {
31
+ items: {
32
+ control: 'object',
33
+ description: 'Array of trend items with label, value, delta, and optional icon',
34
+ },
35
+ titleBg: {
36
+ control: 'color',
37
+ description: 'Background color of the title',
38
+ },
39
+ titleColor: {
40
+ control: 'color',
41
+ description: 'Text color of the title',
42
+ },
43
+ },
44
+ };
45
+
46
+ export default meta;
47
+ type Story = StoryObj<typeof meta>;
48
+
49
+ export const Default: Story = {
50
+ name: 'Default',
51
+ args: {
52
+ title: "Today's Trends",
53
+ items: [
54
+ { label: 'Sales', value: '+12%', delta: 12, icon: <ArrowUp size={16} /> },
55
+ { label: 'Visits', value: '-3%', delta: -3, icon: <ArrowDown size={16} /> },
56
+ { label: 'Conversion', value: '+5%', delta: 5, icon: <ArrowUp size={16} /> },
57
+ { label: 'Bounce Rate', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
58
+ ],
59
+ },
60
+ };
61
+
62
+ export const PerformanceTrends: Story = {
63
+ name: 'Performance Trends',
64
+ args: {
65
+ title: 'Department Performance',
66
+ items: [
67
+ { label: 'Marketing', value: '+15%', delta: 15, icon: <TrendingUp size={16} /> },
68
+ { label: 'Sales', value: '+8%', delta: 8, icon: <ArrowUp size={16} /> },
69
+ { label: 'Support', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
70
+ { label: 'IT', value: '+22%', delta: 22, icon: <Zap size={16} /> },
71
+ ],
72
+ lineClasses: {
73
+ 0: 'trend-excellent',
74
+ 1: 'trend-good',
75
+ 2: 'trend-warning',
76
+ 3: 'trend-outstanding',
77
+ },
78
+ },
79
+ decorators: [
80
+ (Story) => (
81
+ <>
82
+ <style>
83
+ {`
84
+ .trend-excellent { background-color: #f0fdf4; }
85
+ .trend-good { background-color: #f0f9ff; }
86
+ .trend-warning { background-color: #fffbeb; }
87
+ .trend-outstanding { background-color: #faf5ff; }
88
+ `}
89
+ </style>
90
+ <Story />
91
+ </>
92
+ ),
93
+ ],
94
+ };
95
+
96
+ export const StatusMonitoring: Story = {
97
+ name: 'Status Monitoring',
98
+ args: {
99
+ title: 'System Health',
100
+ items: [
101
+ { label: 'Availability', value: '99.9%', delta: 0.1, icon: <Activity size={16} /> },
102
+ { label: 'Performance', value: '96%', delta: -2, icon: <AlertTriangle size={16} /> },
103
+ { label: 'Security', value: '100%', delta: 0, icon: <Star size={16} /> },
104
+ { label: 'Capacity', value: '78%', delta: 8, icon: <TrendingUp size={16} /> },
105
+ ],
106
+ },
107
+ };
108
+
109
+ export const AlertLevels: Story = {
110
+ name: 'Alert Levels',
111
+ args: {
112
+ title: 'Real-time Alerts',
113
+ items: [
114
+ {
115
+ label: 'Security',
116
+ value: 'High',
117
+ delta: 3,
118
+ icon: <AlertTriangle size={16} color='#dc2626' />,
119
+ },
120
+ {
121
+ label: 'Performance',
122
+ value: 'Medium',
123
+ delta: -1,
124
+ icon: <Activity size={16} color='#f59e0b' />,
125
+ },
126
+ { label: 'Network', value: 'Normal', delta: 0, icon: <Zap size={16} color='#22c55e' /> },
127
+ {
128
+ label: 'Storage',
129
+ value: 'Critical',
130
+ delta: 15,
131
+ icon: <AlertTriangle size={16} color='#dc2626' />,
132
+ },
133
+ ],
134
+ lineClasses: {
135
+ 0: 'alert-high',
136
+ 2: 'alert-normal',
137
+ 3: 'alert-critical',
138
+ },
139
+ },
140
+ decorators: [
141
+ (Story) => (
142
+ <>
143
+ <style>
144
+ {`
145
+ .alert-high { background-color: #fef2f2; }
146
+ .alert-normal { background-color: #f0fdf4; }
147
+ .alert-critical { background-color: #fef2f2; border-left: 3px solid #dc2626; }
148
+ `}
149
+ </style>
150
+ <Story />
151
+ </>
152
+ ),
153
+ ],
154
+ };
155
+
156
+ export const CustomIcons: Story = {
157
+ name: 'Custom Icons',
158
+ args: {
159
+ title: 'Business Indicators',
160
+ items: [
161
+ { label: 'Revenue', value: '€45.2K', delta: 12.5 },
162
+ { label: 'New Customers', value: '+24', delta: 8 },
163
+ { label: 'Satisfaction', value: '4.8/5', delta: 0.3 },
164
+ { label: 'Avg. Delay', value: '-15%', delta: -15 },
165
+ ],
166
+ renderTrendIcon: (item) => {
167
+ if (item.delta && item.delta > 10) {
168
+ return <Zap size={16} color='#f59e0b' />;
169
+ } else if (item.delta && item.delta > 0) {
170
+ return <ArrowUp size={16} color='#10b981' />;
171
+ } else if (item.delta && item.delta < 0) {
172
+ return <ArrowDown size={16} color='#ef4444' />;
173
+ }
174
+ return <Minus size={16} color='#6b7280' />;
175
+ },
176
+ },
177
+ };
178
+
179
+ export const RatingTrends: Story = {
180
+ name: 'Rating Trends',
181
+ args: {
182
+ title: 'Ratings Evolution',
183
+ items: [
184
+ { label: 'Product Quality', value: '4.8→4.9', delta: 0.1, icon: <ArrowUp size={16} /> },
185
+ { label: 'Customer Service', value: '4.5→4.3', delta: -0.2, icon: <ArrowDown size={16} /> },
186
+ { label: 'Speed', value: '4.7→4.7', delta: 0, icon: <Minus size={16} /> },
187
+ { label: 'Value for Money', value: '4.2→4.6', delta: 0.4, icon: <ArrowUp size={16} /> },
188
+ ],
189
+ },
190
+ };
191
+
192
+ export const FinancialMetrics: Story = {
193
+ name: 'Financial Metrics',
194
+ args: {
195
+ title: 'Financial Indicators',
196
+ titleBg: '#059669',
197
+ titleColor: 'white',
198
+ items: [
199
+ { label: 'Revenue Q1', value: '€125K', delta: 8.5, icon: <DollarSign size={16} /> },
200
+ { label: 'Gross Margin', value: '42%', delta: 2.1, icon: <TrendingUp size={16} /> },
201
+ { label: 'Expenses', value: '€89K', delta: -1.2, icon: <ArrowDown size={16} /> },
202
+ { label: 'ROI', value: '18%', delta: 3.4, icon: <Zap size={16} /> },
203
+ ],
204
+ },
205
+ };
206
+
207
+ export const UserAnalytics: Story = {
208
+ name: 'User Analytics',
209
+ args: {
210
+ title: 'User Engagement',
211
+ items: [
212
+ { label: 'New Signups', value: '+156', delta: 12, icon: <Users size={16} /> },
213
+ { label: 'Active Users', value: '1.2K', delta: 8, icon: <Activity size={16} /> },
214
+ { label: 'Retention Rate', value: '78%', delta: 4, icon: <TrendingUp size={16} /> },
215
+ { label: 'Churn Rate', value: '2.1%', delta: -0.5, icon: <ArrowDown size={16} /> },
216
+ ],
217
+ },
218
+ };
219
+
220
+ export const TimeMetrics: Story = {
221
+ name: 'Time Metrics',
222
+ args: {
223
+ title: 'Time Performance',
224
+ items: [
225
+ { label: 'Load Time', value: '1.2s', delta: -0.3, icon: <ArrowDown size={16} /> },
226
+ { label: 'Response Time', value: '245ms', delta: 15, icon: <ArrowUp size={16} /> },
227
+ { label: 'Availability', value: '99.95%', delta: 0.05, icon: <ArrowUp size={16} /> },
228
+ { label: 'Avg. Session', value: '4m 12s', delta: 23, icon: <Clock size={16} /> },
229
+ ],
230
+ },
231
+ };
232
+
233
+ export const GoalTracking: Story = {
234
+ name: 'Goal Tracking',
235
+ args: {
236
+ title: 'Objective Progress',
237
+ items: [
238
+ { label: 'Monthly Sales', value: '85%', delta: 5, icon: <Target size={16} /> },
239
+ { label: 'New Clients', value: '120%', delta: 20, icon: <Target size={16} /> },
240
+ { label: 'Customer Satisfaction', value: '92%', delta: -3, icon: <Target size={16} /> },
241
+ { label: 'Operational Efficiency', value: '78%', delta: 8, icon: <Target size={16} /> },
242
+ ],
243
+ },
244
+ };
245
+
246
+ export const WithoutDeltas: Story = {
247
+ name: 'Without Variations',
248
+ args: {
249
+ title: 'Current Stats',
250
+ items: [
251
+ { label: 'Online Users', value: '423', icon: <Users size={16} /> },
252
+ { label: 'Orders Today', value: '156', icon: <DollarSign size={16} /> },
253
+ { label: 'Open Tickets', value: '24', icon: <Activity size={16} /> },
254
+ { label: 'Active Servers', value: '8', icon: <Zap size={16} /> },
255
+ ],
256
+ },
257
+ };