@tsiky/components-r19 1.1.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 (47) hide show
  1. package/package.json +1 -1
  2. package/src/components/AnnouncementPanel/FlexRowContainer.css +17 -17
  3. package/src/components/AnnouncementPanel/FlexRowContainer.stories.tsx +329 -329
  4. package/src/components/AnnouncementPanel/FlexRowContainer.tsx +24 -24
  5. package/src/components/AnnouncementPanel/ListBox/CounterListBox.css +56 -56
  6. package/src/components/AnnouncementPanel/ListBox/CounterListBox.stories.tsx +292 -292
  7. package/src/components/AnnouncementPanel/ListBox/CounterListBox.tsx +106 -106
  8. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.css +57 -57
  9. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.stories.tsx +189 -189
  10. package/src/components/AnnouncementPanel/ListBox/SimpleListBox.tsx +138 -138
  11. package/src/components/AnnouncementPanel/ListBox/TrendListBox.css +61 -61
  12. package/src/components/AnnouncementPanel/ListBox/TrendListBox.stories.tsx +257 -257
  13. package/src/components/AnnouncementPanel/ListBox/TrendListBox.tsx +90 -90
  14. package/src/components/AnnouncementPanel/ListBox/index.ts +3 -3
  15. package/src/components/AnnouncementPanel/ListContentContainer.css +23 -23
  16. package/src/components/AnnouncementPanel/ListContentContainer.stories.tsx +212 -212
  17. package/src/components/AnnouncementPanel/ListContentContainer.tsx +33 -33
  18. package/src/components/AnnouncementPanel/index.ts +3 -3
  19. package/src/components/Charts/area-chart-admission/AreaChartAdmission.tsx +7 -1
  20. package/src/components/Charts/bar-chart/BarChart.tsx +6 -2
  21. package/src/components/Charts/boxplot-chart/BoxPlotChart.tsx +114 -114
  22. package/src/components/Charts/mixed-chart/MixedChart.tsx +1 -1
  23. package/src/components/Charts/sankey-adaptation/sankey.tsx +70 -70
  24. package/src/components/DraggableSwitcher/DraggableSwitcherButton.tsx +58 -58
  25. package/src/components/DraggableSwitcher/context/useDraggableSwitcher.tsx +45 -45
  26. package/src/components/DraggableSwitcher/index.ts +2 -2
  27. package/src/components/DynamicInput/input/SelectInput.tsx +75 -75
  28. package/src/components/DynamicInput/input/assets/SelectInput.module.css +95 -95
  29. package/src/components/DynamicTable/AdvancedFilters.tsx +196 -196
  30. package/src/components/DynamicTable/ColumnSorter.tsx +185 -185
  31. package/src/components/DynamicTable/Pagination.tsx +115 -115
  32. package/src/components/DynamicTable/TableCell.tsx +38 -30
  33. package/src/components/DynamicTable/TableHeader.tsx +39 -34
  34. package/src/components/DynamicTable/TableauDynamique.module.css +79 -33
  35. package/src/components/DynamicTable/TableauDynamique.tsx +154 -154
  36. package/src/components/DynamicTable/filters/SelectFilter.tsx +69 -69
  37. package/src/components/DynamicTable/tools/tableTypes.ts +63 -63
  38. package/src/components/EntryControl/EntryControl.tsx +117 -117
  39. package/src/components/Grid/grid.css +285 -285
  40. package/src/components/MetricsPanel/MetricsPanel.tsx +37 -37
  41. package/src/components/MetricsPanel/renderers/CompactRenderer.tsx +1 -1
  42. package/src/components/NavItem/NavItem.tsx +58 -58
  43. package/src/components/PeriodRange/PeriodRange.module.css +158 -158
  44. package/src/components/PeriodRange/PeriodRange.tsx +130 -130
  45. package/src/components/SearchBar/SearchBar.css +40 -40
  46. package/src/components/TranslationKey/TranslationKey.css +272 -272
  47. package/src/components/TranslationKey/TranslationKey.tsx +8 -7
@@ -1,329 +1,329 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { ArrowUp, ArrowDown, TrendingUp, Users } from 'lucide-react';
3
- import { FlexRowContainer } from './FlexRowContainer';
4
- import { ListContentContainer } from './ListContentContainer';
5
- import { CounterListBox } from './ListBox/CounterListBox';
6
- import { SimpleListBox } from './ListBox/SimpleListBox';
7
- import { TrendListBox } from './ListBox/TrendListBox';
8
-
9
- const meta: Meta<typeof FlexRowContainer> = {
10
- title: 'Components/FlexRowContainer',
11
- component: FlexRowContainer,
12
- parameters: {
13
- layout: 'fullscreen',
14
- docs: {
15
- description: {
16
- component:
17
- 'An adaptive flex container that allows children to take their natural size and wrap to new lines when needed.',
18
- },
19
- },
20
- },
21
- tags: ['autodocs'],
22
- argTypes: {
23
- gap: {
24
- control: 'text',
25
- description: 'Space between items',
26
- },
27
- },
28
- };
29
-
30
- export default meta;
31
- type Story = StoryObj<typeof meta>;
32
-
33
- export const AdaptiveDashboard: Story = {
34
- name: 'Adaptive Dashboard',
35
- args: {
36
- gap: '1.5rem',
37
- style: {
38
- padding: '2rem',
39
- background: '#f8fafc',
40
- },
41
- },
42
- render: (args) => (
43
- <FlexRowContainer {...args}>
44
- {/* Small counter box */}
45
- <ListContentContainer background='#0ea5e9'>
46
- <CounterListBox title='Patients' data={[['63', 'Total']]} badgeColor='#0ea5e9' />
47
- </ListContentContainer>
48
-
49
- {/* Medium box with multiple lists */}
50
- <ListContentContainer background='#0ea5e9'>
51
- <SimpleListBox
52
- title='Available beds'
53
- data={[
54
- ['MED', '21 beds'],
55
- ['SURG', '2 beds'],
56
- ['ER', '12 beds'],
57
- ]}
58
- />
59
- <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
60
- <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
61
- <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
62
- </ListContentContainer>
63
-
64
- {/* Large trend box */}
65
- <ListContentContainer background='#0ea5e9'>
66
- <TrendListBox
67
- title='3h Trend'
68
- items={[
69
- { label: 'MED', value: '+3', delta: 3, icon: <ArrowUp size={16} /> },
70
- { label: 'SURG', value: '-2', delta: -2, icon: <ArrowDown size={16} /> },
71
- { label: 'ER', value: '+5', delta: 5, icon: <ArrowUp size={16} /> },
72
- { label: 'PED', value: '+1', delta: 1, icon: <ArrowUp size={16} /> },
73
- ]}
74
- />
75
- </ListContentContainer>
76
-
77
- {/* Very wide box */}
78
- <ListContentContainer background='#0ea5e9'>
79
- <SimpleListBox
80
- title='General information'
81
- data={[
82
- 'All services are operating normally',
83
- 'Planned maintenance tonight at 10pm',
84
- 'Daily report available',
85
- ]}
86
- />
87
- </ListContentContainer>
88
- </FlexRowContainer>
89
- ),
90
- };
91
-
92
- export const MixedSizes: Story = {
93
- name: 'Mixed Content Sizes',
94
- args: {
95
- gap: '1rem',
96
- style: {
97
- padding: '1.5rem',
98
- background: '#f1f5f9',
99
- },
100
- },
101
- render: (args) => (
102
- <FlexRowContainer {...args}>
103
- {/* Tiny box */}
104
- <ListContentContainer background='#10b981'>
105
- <CounterListBox title='Alerts' data={[['3', 'Critical']]} badgeColor='#ef4444' />
106
- </ListContentContainer>
107
-
108
- {/* Small box */}
109
- <ListContentContainer background='#10b981'>
110
- <TrendListBox
111
- title='Stats'
112
- items={[{ label: 'Up', value: '+5', icon: <ArrowUp size={14} /> }]}
113
- />
114
- </ListContentContainer>
115
-
116
- {/* Medium box */}
117
- <ListContentContainer background='#10b981'>
118
- <SimpleListBox
119
- title='Status'
120
- data={[
121
- ['System', 'Operational'],
122
- ['Database', 'Connected'],
123
- ]}
124
- />
125
- </ListContentContainer>
126
-
127
- {/* Large box */}
128
- <ListContentContainer background='#10b981'>
129
- <CounterListBox
130
- title='Details'
131
- data={[
132
- ['156', 'Orders processed'],
133
- ['42', 'New customers'],
134
- ['24', 'Pending'],
135
- ['8', 'Overdue'],
136
- ]}
137
- badgeColor='#8b5cf6'
138
- />
139
- </ListContentContainer>
140
-
141
- {/* Extra large box */}
142
- <ListContentContainer background='#10b981'>
143
- <TrendListBox
144
- title='Detailed Performance'
145
- items={[
146
- { label: 'Response time', value: '125ms', delta: -12, icon: <ArrowDown size={16} /> },
147
- { label: 'CPU usage', value: '45%', delta: 2, icon: <ArrowUp size={16} /> },
148
- { label: 'Memory', value: '68%', delta: 5, icon: <ArrowUp size={16} /> },
149
- { label: 'Storage', value: '82%', delta: 8, icon: <ArrowUp size={16} /> },
150
- ]}
151
- />
152
- </ListContentContainer>
153
- </FlexRowContainer>
154
- ),
155
- };
156
-
157
- export const BusinessAdaptive: Story = {
158
- name: 'Business Adaptive Layout',
159
- args: {
160
- gap: '1.5rem',
161
- style: {
162
- padding: '2rem',
163
- background: '#f8fafc',
164
- minHeight: '100vh',
165
- },
166
- },
167
- render: (args) => (
168
- <FlexRowContainer {...args}>
169
- {/* Sales metrics */}
170
- <ListContentContainer background='#0ea5e9'>
171
- <CounterListBox
172
- title='Sales'
173
- data={[
174
- ['156', 'Orders'],
175
- ['€2.4K', 'Revenue'],
176
- ['42', 'Customers'],
177
- ]}
178
- badgeColor='#0ea5e9'
179
- />
180
- </ListContentContainer>
181
-
182
- {/* Performance trends */}
183
- <ListContentContainer background='#0ea5e9'>
184
- <TrendListBox
185
- title='Performance'
186
- items={[
187
- { label: 'Revenue', value: '+12%', delta: 12, icon: <TrendingUp size={16} /> },
188
- { label: 'Users', value: '+8%', delta: 8, icon: <Users size={16} /> },
189
- { label: 'Engagement', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
190
- ]}
191
- />
192
- </ListContentContainer>
193
-
194
- {/* Quick stats */}
195
- <ListContentContainer background='#0ea5e9'>
196
- <SimpleListBox
197
- title='Quick metrics'
198
- data={[
199
- ['Conversion rate', '3.2%'],
200
- ['Average order value', '€68.50'],
201
- ['Customer satisfaction', '4.8/5'],
202
- ]}
203
- />
204
- </ListContentContainer>
205
-
206
- {/* System status */}
207
- <ListContentContainer background='#0ea5e9'>
208
- <SimpleListBox
209
- title='System status'
210
- data={['All services operational', 'Backup successful', 'Update available']}
211
- />
212
- </ListContentContainer>
213
-
214
- {/* Detailed analytics */}
215
- <ListContentContainer background='#0ea5e9'>
216
- <TrendListBox
217
- title='Detailed analytics'
218
- items={[
219
- { label: 'New signups', value: '24', delta: 4, icon: <ArrowUp size={16} /> },
220
- { label: 'Retention', value: '88%', delta: 2, icon: <ArrowUp size={16} /> },
221
- { label: 'Bounce rate', value: '32%', delta: -3, icon: <ArrowDown size={16} /> },
222
- { label: 'Avg. session time', value: '4:12', delta: 0.5, icon: <ArrowUp size={16} /> },
223
- ]}
224
- />
225
- </ListContentContainer>
226
- </FlexRowContainer>
227
- ),
228
- };
229
-
230
- export const CompactAdaptive: Story = {
231
- name: 'Compact Adaptive',
232
- args: {
233
- gap: '0.8rem',
234
- style: {
235
- padding: '1rem',
236
- background: '#f1f5f9',
237
- },
238
- },
239
- render: (args) => (
240
- <FlexRowContainer {...args}>
241
- <ListContentContainer background='#0ea5e9'>
242
- <CounterListBox title='Active' data={[['42', 'Users']]} badgeColor='#0ea5e9' />
243
- </ListContentContainer>
244
-
245
- <ListContentContainer background='#0ea5e9'>
246
- <SimpleListBox title='Status' data={['System normal']} />
247
- </ListContentContainer>
248
-
249
- <ListContentContainer background='#0ea5e9'>
250
- <TrendListBox
251
- title='Trends'
252
- items={[
253
- { label: 'Up', value: '+3', icon: <ArrowUp size={14} /> },
254
- { label: 'Down', value: '-1', icon: <ArrowDown size={14} /> },
255
- ]}
256
- />
257
- </ListContentContainer>
258
-
259
- <ListContentContainer background='#0ea5e9'>
260
- <CounterListBox title='Alerts' data={[['2', 'Minor']]} badgeColor='#f59e0b' />
261
- </ListContentContainer>
262
- </FlexRowContainer>
263
- ),
264
- };
265
-
266
- export const ResponsiveBehavior: Story = {
267
- name: 'Responsive Behavior Demo',
268
- args: {
269
- gap: '1rem',
270
- style: {
271
- padding: '1.5rem',
272
- background: '#f8fafc',
273
- border: '2px dashed #cbd5e1',
274
- },
275
- },
276
- parameters: {
277
- docs: {
278
- description: {
279
- story:
280
- 'This demo shows how items naturally wrap to new lines based on their content size and available space. Resize the browser window to see the adaptive behavior.',
281
- },
282
- },
283
- },
284
- render: (args) => (
285
- <div>
286
- <div
287
- style={{
288
- textAlign: 'center',
289
- marginBottom: '1rem',
290
- color: '#64748b',
291
- fontStyle: 'italic',
292
- }}
293
- >
294
- ↓ Resize the window to see adaptive behavior ↓
295
- </div>
296
- <FlexRowContainer {...args}>
297
- <ListContentContainer background='#0ea5e9'>
298
- <SimpleListBox title='Small' data={['Short content']} />
299
- </ListContentContainer>
300
-
301
- <ListContentContainer background='#0ea5e9'>
302
- <SimpleListBox title='Medium' data={['Medium-length content', 'Another line here']} />
303
- </ListContentContainer>
304
-
305
- <ListContentContainer background='#0ea5e9'>
306
- <SimpleListBox
307
- title='Large'
308
- data={[
309
- 'Very long content that takes more space',
310
- 'Another line with extra text',
311
- 'Yet another line to show behavior',
312
- ]}
313
- />
314
- </ListContentContainer>
315
-
316
- <ListContentContainer background='#0ea5e9'>
317
- <SimpleListBox
318
- title='Extra Large'
319
- data={[
320
- 'Extremely long content that will take up a lot of width in the layout',
321
- 'A second line also with lots of text for demonstration',
322
- 'Third line to complete the showcase',
323
- ]}
324
- />
325
- </ListContentContainer>
326
- </FlexRowContainer>
327
- </div>
328
- ),
329
- };
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import { ArrowUp, ArrowDown, TrendingUp, Users } from 'lucide-react';
3
+ import { FlexRowContainer } from './FlexRowContainer';
4
+ import { ListContentContainer } from './ListContentContainer';
5
+ import { CounterListBox } from './ListBox/CounterListBox';
6
+ import { SimpleListBox } from './ListBox/SimpleListBox';
7
+ import { TrendListBox } from './ListBox/TrendListBox';
8
+
9
+ const meta: Meta<typeof FlexRowContainer> = {
10
+ title: 'Components/FlexRowContainer',
11
+ component: FlexRowContainer,
12
+ parameters: {
13
+ layout: 'fullscreen',
14
+ docs: {
15
+ description: {
16
+ component:
17
+ 'An adaptive flex container that allows children to take their natural size and wrap to new lines when needed.',
18
+ },
19
+ },
20
+ },
21
+ tags: ['autodocs'],
22
+ argTypes: {
23
+ gap: {
24
+ control: 'text',
25
+ description: 'Space between items',
26
+ },
27
+ },
28
+ };
29
+
30
+ export default meta;
31
+ type Story = StoryObj<typeof meta>;
32
+
33
+ export const AdaptiveDashboard: Story = {
34
+ name: 'Adaptive Dashboard',
35
+ args: {
36
+ gap: '1.5rem',
37
+ style: {
38
+ padding: '2rem',
39
+ background: '#f8fafc',
40
+ },
41
+ },
42
+ render: (args) => (
43
+ <FlexRowContainer {...args}>
44
+ {/* Small counter box */}
45
+ <ListContentContainer background='#0ea5e9'>
46
+ <CounterListBox title='Patients' data={[['63', 'Total']]} badgeColor='#0ea5e9' />
47
+ </ListContentContainer>
48
+
49
+ {/* Medium box with multiple lists */}
50
+ <ListContentContainer background='#0ea5e9'>
51
+ <SimpleListBox
52
+ title='Available beds'
53
+ data={[
54
+ ['MED', '21 beds'],
55
+ ['SURG', '2 beds'],
56
+ ['ER', '12 beds'],
57
+ ]}
58
+ />
59
+ <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
60
+ <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
61
+ <SimpleListBox title='Overdue patients' data={['623152385 - MED', '623168542 - SURG']} />
62
+ </ListContentContainer>
63
+
64
+ {/* Large trend box */}
65
+ <ListContentContainer background='#0ea5e9'>
66
+ <TrendListBox
67
+ title='3h Trend'
68
+ items={[
69
+ { label: 'MED', value: '+3', delta: 3, icon: <ArrowUp size={16} /> },
70
+ { label: 'SURG', value: '-2', delta: -2, icon: <ArrowDown size={16} /> },
71
+ { label: 'ER', value: '+5', delta: 5, icon: <ArrowUp size={16} /> },
72
+ { label: 'PED', value: '+1', delta: 1, icon: <ArrowUp size={16} /> },
73
+ ]}
74
+ />
75
+ </ListContentContainer>
76
+
77
+ {/* Very wide box */}
78
+ <ListContentContainer background='#0ea5e9'>
79
+ <SimpleListBox
80
+ title='General information'
81
+ data={[
82
+ 'All services are operating normally',
83
+ 'Planned maintenance tonight at 10pm',
84
+ 'Daily report available',
85
+ ]}
86
+ />
87
+ </ListContentContainer>
88
+ </FlexRowContainer>
89
+ ),
90
+ };
91
+
92
+ export const MixedSizes: Story = {
93
+ name: 'Mixed Content Sizes',
94
+ args: {
95
+ gap: '1rem',
96
+ style: {
97
+ padding: '1.5rem',
98
+ background: '#f1f5f9',
99
+ },
100
+ },
101
+ render: (args) => (
102
+ <FlexRowContainer {...args}>
103
+ {/* Tiny box */}
104
+ <ListContentContainer background='#10b981'>
105
+ <CounterListBox title='Alerts' data={[['3', 'Critical']]} badgeColor='#ef4444' />
106
+ </ListContentContainer>
107
+
108
+ {/* Small box */}
109
+ <ListContentContainer background='#10b981'>
110
+ <TrendListBox
111
+ title='Stats'
112
+ items={[{ label: 'Up', value: '+5', icon: <ArrowUp size={14} /> }]}
113
+ />
114
+ </ListContentContainer>
115
+
116
+ {/* Medium box */}
117
+ <ListContentContainer background='#10b981'>
118
+ <SimpleListBox
119
+ title='Status'
120
+ data={[
121
+ ['System', 'Operational'],
122
+ ['Database', 'Connected'],
123
+ ]}
124
+ />
125
+ </ListContentContainer>
126
+
127
+ {/* Large box */}
128
+ <ListContentContainer background='#10b981'>
129
+ <CounterListBox
130
+ title='Details'
131
+ data={[
132
+ ['156', 'Orders processed'],
133
+ ['42', 'New customers'],
134
+ ['24', 'Pending'],
135
+ ['8', 'Overdue'],
136
+ ]}
137
+ badgeColor='#8b5cf6'
138
+ />
139
+ </ListContentContainer>
140
+
141
+ {/* Extra large box */}
142
+ <ListContentContainer background='#10b981'>
143
+ <TrendListBox
144
+ title='Detailed Performance'
145
+ items={[
146
+ { label: 'Response time', value: '125ms', delta: -12, icon: <ArrowDown size={16} /> },
147
+ { label: 'CPU usage', value: '45%', delta: 2, icon: <ArrowUp size={16} /> },
148
+ { label: 'Memory', value: '68%', delta: 5, icon: <ArrowUp size={16} /> },
149
+ { label: 'Storage', value: '82%', delta: 8, icon: <ArrowUp size={16} /> },
150
+ ]}
151
+ />
152
+ </ListContentContainer>
153
+ </FlexRowContainer>
154
+ ),
155
+ };
156
+
157
+ export const BusinessAdaptive: Story = {
158
+ name: 'Business Adaptive Layout',
159
+ args: {
160
+ gap: '1.5rem',
161
+ style: {
162
+ padding: '2rem',
163
+ background: '#f8fafc',
164
+ minHeight: '100vh',
165
+ },
166
+ },
167
+ render: (args) => (
168
+ <FlexRowContainer {...args}>
169
+ {/* Sales metrics */}
170
+ <ListContentContainer background='#0ea5e9'>
171
+ <CounterListBox
172
+ title='Sales'
173
+ data={[
174
+ ['156', 'Orders'],
175
+ ['€2.4K', 'Revenue'],
176
+ ['42', 'Customers'],
177
+ ]}
178
+ badgeColor='#0ea5e9'
179
+ />
180
+ </ListContentContainer>
181
+
182
+ {/* Performance trends */}
183
+ <ListContentContainer background='#0ea5e9'>
184
+ <TrendListBox
185
+ title='Performance'
186
+ items={[
187
+ { label: 'Revenue', value: '+12%', delta: 12, icon: <TrendingUp size={16} /> },
188
+ { label: 'Users', value: '+8%', delta: 8, icon: <Users size={16} /> },
189
+ { label: 'Engagement', value: '-2%', delta: -2, icon: <ArrowDown size={16} /> },
190
+ ]}
191
+ />
192
+ </ListContentContainer>
193
+
194
+ {/* Quick stats */}
195
+ <ListContentContainer background='#0ea5e9'>
196
+ <SimpleListBox
197
+ title='Quick metrics'
198
+ data={[
199
+ ['Conversion rate', '3.2%'],
200
+ ['Average order value', '€68.50'],
201
+ ['Customer satisfaction', '4.8/5'],
202
+ ]}
203
+ />
204
+ </ListContentContainer>
205
+
206
+ {/* System status */}
207
+ <ListContentContainer background='#0ea5e9'>
208
+ <SimpleListBox
209
+ title='System status'
210
+ data={['All services operational', 'Backup successful', 'Update available']}
211
+ />
212
+ </ListContentContainer>
213
+
214
+ {/* Detailed analytics */}
215
+ <ListContentContainer background='#0ea5e9'>
216
+ <TrendListBox
217
+ title='Detailed analytics'
218
+ items={[
219
+ { label: 'New signups', value: '24', delta: 4, icon: <ArrowUp size={16} /> },
220
+ { label: 'Retention', value: '88%', delta: 2, icon: <ArrowUp size={16} /> },
221
+ { label: 'Bounce rate', value: '32%', delta: -3, icon: <ArrowDown size={16} /> },
222
+ { label: 'Avg. session time', value: '4:12', delta: 0.5, icon: <ArrowUp size={16} /> },
223
+ ]}
224
+ />
225
+ </ListContentContainer>
226
+ </FlexRowContainer>
227
+ ),
228
+ };
229
+
230
+ export const CompactAdaptive: Story = {
231
+ name: 'Compact Adaptive',
232
+ args: {
233
+ gap: '0.8rem',
234
+ style: {
235
+ padding: '1rem',
236
+ background: '#f1f5f9',
237
+ },
238
+ },
239
+ render: (args) => (
240
+ <FlexRowContainer {...args}>
241
+ <ListContentContainer background='#0ea5e9'>
242
+ <CounterListBox title='Active' data={[['42', 'Users']]} badgeColor='#0ea5e9' />
243
+ </ListContentContainer>
244
+
245
+ <ListContentContainer background='#0ea5e9'>
246
+ <SimpleListBox title='Status' data={['System normal']} />
247
+ </ListContentContainer>
248
+
249
+ <ListContentContainer background='#0ea5e9'>
250
+ <TrendListBox
251
+ title='Trends'
252
+ items={[
253
+ { label: 'Up', value: '+3', icon: <ArrowUp size={14} /> },
254
+ { label: 'Down', value: '-1', icon: <ArrowDown size={14} /> },
255
+ ]}
256
+ />
257
+ </ListContentContainer>
258
+
259
+ <ListContentContainer background='#0ea5e9'>
260
+ <CounterListBox title='Alerts' data={[['2', 'Minor']]} badgeColor='#f59e0b' />
261
+ </ListContentContainer>
262
+ </FlexRowContainer>
263
+ ),
264
+ };
265
+
266
+ export const ResponsiveBehavior: Story = {
267
+ name: 'Responsive Behavior Demo',
268
+ args: {
269
+ gap: '1rem',
270
+ style: {
271
+ padding: '1.5rem',
272
+ background: '#f8fafc',
273
+ border: '2px dashed #cbd5e1',
274
+ },
275
+ },
276
+ parameters: {
277
+ docs: {
278
+ description: {
279
+ story:
280
+ 'This demo shows how items naturally wrap to new lines based on their content size and available space. Resize the browser window to see the adaptive behavior.',
281
+ },
282
+ },
283
+ },
284
+ render: (args) => (
285
+ <div>
286
+ <div
287
+ style={{
288
+ textAlign: 'center',
289
+ marginBottom: '1rem',
290
+ color: '#64748b',
291
+ fontStyle: 'italic',
292
+ }}
293
+ >
294
+ ↓ Resize the window to see adaptive behavior ↓
295
+ </div>
296
+ <FlexRowContainer {...args}>
297
+ <ListContentContainer background='#0ea5e9'>
298
+ <SimpleListBox title='Small' data={['Short content']} />
299
+ </ListContentContainer>
300
+
301
+ <ListContentContainer background='#0ea5e9'>
302
+ <SimpleListBox title='Medium' data={['Medium-length content', 'Another line here']} />
303
+ </ListContentContainer>
304
+
305
+ <ListContentContainer background='#0ea5e9'>
306
+ <SimpleListBox
307
+ title='Large'
308
+ data={[
309
+ 'Very long content that takes more space',
310
+ 'Another line with extra text',
311
+ 'Yet another line to show behavior',
312
+ ]}
313
+ />
314
+ </ListContentContainer>
315
+
316
+ <ListContentContainer background='#0ea5e9'>
317
+ <SimpleListBox
318
+ title='Extra Large'
319
+ data={[
320
+ 'Extremely long content that will take up a lot of width in the layout',
321
+ 'A second line also with lots of text for demonstration',
322
+ 'Third line to complete the showcase',
323
+ ]}
324
+ />
325
+ </ListContentContainer>
326
+ </FlexRowContainer>
327
+ </div>
328
+ ),
329
+ };