siesa-ui-kit 1.0.2 → 1.0.4
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 +115 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/claude/agents/siesa-ui-kit-specialist.md +2445 -0
- package/claude/prompts/component-template.md +121 -0
- package/claude/prompts/siesa-ui-kit.md +28 -0
- package/claude/settings.local.json +67 -2
- package/dist/components/Button/icons.d.ts +6 -5
- package/dist/components/Button/icons.d.ts.map +1 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +21 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +122 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +139 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/icons.d.ts +33 -0
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/index.d.ts +4 -0
- package/dist/components/NavigationRailCommercial/index.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +7 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +41 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +15 -29
- package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/icons.d.ts +6 -2
- package/dist/components/Select/icons.d.ts.map +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/siesa-ui-kit.cjs +404 -190
- package/dist/siesa-ui-kit.cjs.map +1 -1
- package/dist/siesa-ui-kit.mjs +6590 -1506
- package/dist/siesa-ui-kit.mjs.map +1 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +48 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +1 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +49 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +1 -0
- package/dist/views/LayoutCommercial/index.d.ts +3 -0
- package/dist/views/LayoutCommercial/index.d.ts.map +1 -0
- package/docs/icons.md +12 -31
- package/package.json +111 -110
- package/src/components/Avatar/Avatar.stories.tsx +494 -494
- package/src/components/Button/Button.stories.tsx +950 -950
- package/src/components/Button/Button.tsx +337 -337
- package/src/components/Button/Button.types.ts +180 -180
- package/src/components/Button/icons.tsx +23 -62
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
- package/src/components/Divider/Divider.stories.tsx +263 -263
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +307 -287
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +136 -111
- package/src/components/DropdownItemCollapsible/README.md +264 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +57 -57
- package/src/components/DropdownItemCollapsible/index.ts +12 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -93
- package/src/components/DropdownItemHeading/README.md +573 -573
- package/src/components/DropdownItemHeading/icons.tsx +125 -125
- package/src/components/DropdownItemHeading/index.ts +3 -3
- package/src/components/Input/Input.stories.tsx +583 -583
- package/src/components/LoginView/LoginView.stories.tsx +148 -148
- package/src/components/LoginView/LoginView.tsx +426 -426
- package/src/components/LoginView/LoginView.types.ts +52 -52
- package/src/components/LoginView/README.md +396 -396
- package/src/components/LoginView/icons.tsx +85 -85
- package/src/components/LoginView/index.ts +3 -3
- package/src/components/Navbar/Navbar.stories.tsx +810 -810
- package/src/components/Navbar/Navbar.tsx +755 -755
- package/src/components/Navbar/Navbar.types.ts +219 -219
- package/src/components/Navbar/README.md +279 -279
- package/src/components/Navbar/index.ts +8 -8
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +464 -0
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +301 -0
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +162 -0
- package/src/components/NavigationRailCommercial/README.md +251 -0
- package/src/components/NavigationRailCommercial/icons.tsx +54 -0
- package/src/components/NavigationRailCommercial/index.ts +6 -0
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +314 -313
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +175 -167
- package/src/components/NavigationRailItem/README.md +476 -476
- package/src/components/NavigationRailItem/index.ts +2 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -178
- package/src/components/NavigationRailPanel/README.md +461 -461
- package/src/components/NavigationRailPanel/index.ts +6 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +682 -528
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +363 -378
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +178 -130
- package/src/components/NavigationRailTypes/README.md +573 -573
- package/src/components/NavigationRailTypes/icons.tsx +76 -141
- package/src/components/NavigationRailTypes/index.ts +7 -7
- package/src/components/Notification/Notification.stories.tsx +513 -513
- package/src/components/Notification/Notification.tsx +145 -145
- package/src/components/Notification/Notification.types.ts +142 -142
- package/src/components/Notification/README.md +409 -409
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
- package/src/components/POSConvention/POSConvention.tsx +129 -129
- package/src/components/POSConvention/POSConvention.types.ts +38 -38
- package/src/components/POSConvention/README.md +123 -123
- package/src/components/POSConvention/icons.tsx +45 -45
- package/src/components/POSConvention/index.ts +3 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
- package/src/components/POSLocationButton/README.md +253 -253
- package/src/components/POSLocationButton/icons.tsx +120 -120
- package/src/components/POSLocationButton/index.ts +14 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
- package/src/components/POSNumberButton/README.md +321 -321
- package/src/components/POSNumberButton/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
- package/src/components/POSProductCard/POSProductCard.tsx +208 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
- package/src/components/POSProductCard/README.md +179 -179
- package/src/components/POSProductCard/icons.tsx +26 -26
- package/src/components/POSProductCard/index.ts +2 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
- package/src/components/POSProductSidebarItems/README.md +198 -198
- package/src/components/POSProductSidebarItems/icons.tsx +21 -21
- package/src/components/POSProductSidebarItems/index.ts +3 -3
- package/src/components/POSTable/POSTable.stories.tsx +737 -737
- package/src/components/POSTable/POSTable.tsx +401 -401
- package/src/components/POSTable/README.md +286 -286
- package/src/components/Quantity/Quantity.stories.tsx +457 -457
- package/src/components/Radio/Radio.stories.tsx +523 -523
- package/src/components/Radio/Radio.tsx +1 -1
- package/src/components/Select/Select.stories.tsx +32 -0
- package/src/components/Select/Select.tsx +457 -454
- package/src/components/Select/icons.tsx +16 -41
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
- package/src/components/SignUpView/SignUpView.tsx +503 -503
- package/src/components/SignUpView/SignUpView.types.ts +58 -58
- package/src/components/SignUpView/icons.tsx +71 -71
- package/src/components/SignUpView/index.ts +3 -3
- package/src/components/Switch/README.md +112 -112
- package/src/components/Switch/Switch.stories.tsx +550 -550
- package/src/components/Switch/Switch.tsx +246 -246
- package/src/components/Switch/Switch.types.ts +67 -67
- package/src/components/Table/Table.stories.tsx +805 -805
- package/src/components/Tabs/README.md +201 -201
- package/src/components/Tabs/Tabs.stories.tsx +580 -580
- package/src/components/Tabs/Tabs.tsx +356 -356
- package/src/components/Tabs/Tabs.types.ts +127 -127
- package/src/components/Tabs/icons.tsx +129 -129
- package/src/components/Tabs/index.ts +11 -11
- package/src/components/Textarea/Textarea.stories.tsx +535 -535
- package/src/index.ts +133 -102
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +374 -0
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +125 -0
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +54 -0
- package/src/views/LayoutCommercial/README.md +286 -0
- package/src/views/LayoutCommercial/index.ts +2 -0
- package/src/views/ListView/ListView.stories.tsx +329 -329
- package/src/views/ListView/ListView.tsx +570 -570
- package/src/views/ListView/ListView.types.ts +211 -211
- package/src/views/ListView/icons.tsx +282 -282
- package/src/views/ListView/index.ts +11 -11
- package/src/views/LoginView/LoginView.tsx +426 -426
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
- package/src/views/ProductsView/ProductsView.tsx +480 -480
- package/src/views/ProductsView/ProductsView.types.ts +238 -238
- package/src/views/ProductsView/README.md +312 -312
- package/src/views/ProductsView/icons.tsx +38 -38
- package/src/views/ProductsView/index.ts +8 -8
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
- package/src/views/SignUpView/SignUpView.tsx +503 -503
- package/src/views/TableLayoutView/README.md +268 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
- package/src/views/TableLayoutView/icons.tsx +113 -113
- package/src/views/TableLayoutView/index.ts +6 -6
- package/storybook/main.ts +19 -19
- package/storybook/preview.tsx +84 -84
- package/storybook/vitest.setup.ts +6 -6
- package/tailwind.config.js +128 -128
|
@@ -1,317 +1,317 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { DropdownItemCollapsible } from './DropdownItemCollapsible';
|
|
3
|
-
import { UserIcon } from './icons';
|
|
4
|
-
|
|
5
|
-
const meta = {
|
|
6
|
-
title: 'Components/DropdownItemCollapsible',
|
|
7
|
-
component: DropdownItemCollapsible,
|
|
8
|
-
parameters: {
|
|
9
|
-
layout: 'padded',
|
|
10
|
-
backgrounds: {
|
|
11
|
-
default: 'light',
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
tags: ['autodocs'],
|
|
15
|
-
} satisfies Meta<typeof DropdownItemCollapsible>;
|
|
16
|
-
|
|
17
|
-
export default meta;
|
|
18
|
-
type Story = StoryObj<typeof meta>;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Item colapsable básico sin encabezado ni divisor
|
|
22
|
-
* Muestra estructura simple con header colapsable
|
|
23
|
-
*/
|
|
24
|
-
export const Basic: Story = {
|
|
25
|
-
render: () => (
|
|
26
|
-
<DropdownItemCollapsible
|
|
27
|
-
label="Users"
|
|
28
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
29
|
-
children={[
|
|
30
|
-
{
|
|
31
|
-
label: 'Active Users',
|
|
32
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
label: 'Inactive Users',
|
|
36
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
37
|
-
},
|
|
38
|
-
]}
|
|
39
|
-
/>
|
|
40
|
-
),
|
|
41
|
-
args: {
|
|
42
|
-
label: 'Users',
|
|
43
|
-
},
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
* Item colapsable con encabezado de sección
|
|
48
|
-
* Útil para agrupar items relacionados
|
|
49
|
-
*/
|
|
50
|
-
export const WithHeading: Story = {
|
|
51
|
-
render: () => (
|
|
52
|
-
<DropdownItemCollapsible
|
|
53
|
-
label="Customers"
|
|
54
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
55
|
-
showHeading={true}
|
|
56
|
-
headingLabel="SECTION 1"
|
|
57
|
-
children={[
|
|
58
|
-
{
|
|
59
|
-
label: 'Enterprise',
|
|
60
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
label: 'SMB',
|
|
64
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
label: 'Startup',
|
|
68
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
69
|
-
},
|
|
70
|
-
]}
|
|
71
|
-
showDivider={true}
|
|
72
|
-
/>
|
|
73
|
-
),
|
|
74
|
-
args: {
|
|
75
|
-
label: 'Customers',
|
|
76
|
-
},
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Item colapsable expandido por defecto
|
|
81
|
-
*/
|
|
82
|
-
export const DefaultOpen: Story = {
|
|
83
|
-
render: () => (
|
|
84
|
-
<DropdownItemCollapsible
|
|
85
|
-
label="Departments"
|
|
86
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
87
|
-
defaultOpen={true}
|
|
88
|
-
children={[
|
|
89
|
-
{
|
|
90
|
-
label: 'Sales',
|
|
91
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
label: 'Marketing',
|
|
95
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
label: 'Engineering',
|
|
99
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
label: 'Operations',
|
|
103
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
104
|
-
},
|
|
105
|
-
]}
|
|
106
|
-
/>
|
|
107
|
-
),
|
|
108
|
-
args: {
|
|
109
|
-
label: 'Departments',
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* Item deshabilitado
|
|
115
|
-
* No se puede expandir ni interactuar
|
|
116
|
-
*/
|
|
117
|
-
export const Disabled: Story = {
|
|
118
|
-
render: () => (
|
|
119
|
-
<DropdownItemCollapsible
|
|
120
|
-
label="Archived"
|
|
121
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
122
|
-
disabled={true}
|
|
123
|
-
children={[
|
|
124
|
-
{
|
|
125
|
-
label: 'Old Item 1',
|
|
126
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
label: 'Old Item 2',
|
|
130
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
131
|
-
},
|
|
132
|
-
]}
|
|
133
|
-
/>
|
|
134
|
-
),
|
|
135
|
-
args: {
|
|
136
|
-
label: 'Archived',
|
|
137
|
-
},
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Item simple sin items anidados (no colapsable)
|
|
142
|
-
* Actúa como un botón normal
|
|
143
|
-
*/
|
|
144
|
-
export const Simple: Story = {
|
|
145
|
-
args: {
|
|
146
|
-
label: 'Single Item',
|
|
147
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
148
|
-
isCollapsible: false,
|
|
149
|
-
},
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Item sin icono
|
|
154
|
-
*/
|
|
155
|
-
export const WithoutIcon: Story = {
|
|
156
|
-
render: () => (
|
|
157
|
-
<DropdownItemCollapsible
|
|
158
|
-
label="No Icon Item"
|
|
159
|
-
children={[
|
|
160
|
-
{
|
|
161
|
-
label: 'Child 1',
|
|
162
|
-
},
|
|
163
|
-
{
|
|
164
|
-
label: 'Child 2',
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
label: 'Child 3',
|
|
168
|
-
},
|
|
169
|
-
]}
|
|
170
|
-
/>
|
|
171
|
-
),
|
|
172
|
-
args: {
|
|
173
|
-
label: 'No Icon Item',
|
|
174
|
-
},
|
|
175
|
-
};
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Items anidados sin iconos
|
|
179
|
-
*/
|
|
180
|
-
export const ChildrenWithoutIcons: Story = {
|
|
181
|
-
render: () => (
|
|
182
|
-
<DropdownItemCollapsible
|
|
183
|
-
label="Groups"
|
|
184
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
185
|
-
children={[
|
|
186
|
-
{
|
|
187
|
-
label: 'Admins',
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
label: 'Users',
|
|
191
|
-
},
|
|
192
|
-
{
|
|
193
|
-
label: 'Guests',
|
|
194
|
-
},
|
|
195
|
-
]}
|
|
196
|
-
/>
|
|
197
|
-
),
|
|
198
|
-
args: {
|
|
199
|
-
label: 'Groups',
|
|
200
|
-
},
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Múltiples items colapsables para simular dropdown completo
|
|
205
|
-
*/
|
|
206
|
-
export const MultipleItems: Story = {
|
|
207
|
-
args: {
|
|
208
|
-
label: 'Multi Demo',
|
|
209
|
-
},
|
|
210
|
-
render: () => (
|
|
211
|
-
<div className="flex flex-col gap-0 w-56 bg-bg-primary dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary p-2">
|
|
212
|
-
<DropdownItemCollapsible
|
|
213
|
-
label="Users"
|
|
214
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
215
|
-
showHeading={true}
|
|
216
|
-
headingLabel="RESOURCES"
|
|
217
|
-
showDivider={true}
|
|
218
|
-
children={[
|
|
219
|
-
{
|
|
220
|
-
label: 'Active Users',
|
|
221
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
222
|
-
},
|
|
223
|
-
{
|
|
224
|
-
label: 'Inactive Users',
|
|
225
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
226
|
-
},
|
|
227
|
-
]}
|
|
228
|
-
/>
|
|
229
|
-
|
|
230
|
-
<DropdownItemCollapsible
|
|
231
|
-
label="Departments"
|
|
232
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
233
|
-
showDivider={true}
|
|
234
|
-
children={[
|
|
235
|
-
{
|
|
236
|
-
label: 'Sales',
|
|
237
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
238
|
-
},
|
|
239
|
-
{
|
|
240
|
-
label: 'Marketing',
|
|
241
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
242
|
-
},
|
|
243
|
-
{
|
|
244
|
-
label: 'Engineering',
|
|
245
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
246
|
-
},
|
|
247
|
-
]}
|
|
248
|
-
/>
|
|
249
|
-
|
|
250
|
-
<DropdownItemCollapsible
|
|
251
|
-
label="Settings"
|
|
252
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
253
|
-
showDivider={false}
|
|
254
|
-
isCollapsible={false}
|
|
255
|
-
/>
|
|
256
|
-
</div>
|
|
257
|
-
),
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Ejemplo con callbacks
|
|
262
|
-
*/
|
|
263
|
-
export const WithCallbacks: Story = {
|
|
264
|
-
render: () => (
|
|
265
|
-
<DropdownItemCollapsible
|
|
266
|
-
label="Actions"
|
|
267
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
268
|
-
defaultOpen={false}
|
|
269
|
-
children={[
|
|
270
|
-
{
|
|
271
|
-
label: 'Edit',
|
|
272
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
273
|
-
onClick: () => console.log('Edit clicked'),
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
label: 'Delete',
|
|
277
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
278
|
-
onClick: () => console.log('Delete clicked'),
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
label: 'Archive',
|
|
282
|
-
disabled: true,
|
|
283
|
-
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
284
|
-
},
|
|
285
|
-
]}
|
|
286
|
-
onOpenChange={(open) => console.log('Toggle state:', open)}
|
|
287
|
-
/>
|
|
288
|
-
),
|
|
289
|
-
args: {
|
|
290
|
-
label: 'Actions',
|
|
291
|
-
},
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Item con muchos items anidados
|
|
296
|
-
*/
|
|
297
|
-
export const ManyChildren: Story = {
|
|
298
|
-
render: () => (
|
|
299
|
-
<DropdownItemCollapsible
|
|
300
|
-
label="Countries"
|
|
301
|
-
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
302
|
-
children={[
|
|
303
|
-
{ label: 'United States' },
|
|
304
|
-
{ label: 'Canada' },
|
|
305
|
-
{ label: 'Mexico' },
|
|
306
|
-
{ label: 'Brazil' },
|
|
307
|
-
{ label: 'Argentina' },
|
|
308
|
-
{ label: 'Chile' },
|
|
309
|
-
{ label: 'Colombia' },
|
|
310
|
-
{ label: 'Peru' },
|
|
311
|
-
]}
|
|
312
|
-
/>
|
|
313
|
-
),
|
|
314
|
-
args: {
|
|
315
|
-
label: 'Countries',
|
|
316
|
-
},
|
|
317
|
-
};
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { DropdownItemCollapsible } from './DropdownItemCollapsible';
|
|
3
|
+
import { UserIcon } from './icons';
|
|
4
|
+
|
|
5
|
+
const meta = {
|
|
6
|
+
title: 'Components/DropdownItemCollapsible',
|
|
7
|
+
component: DropdownItemCollapsible,
|
|
8
|
+
parameters: {
|
|
9
|
+
layout: 'padded',
|
|
10
|
+
backgrounds: {
|
|
11
|
+
default: 'light',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
tags: ['autodocs'],
|
|
15
|
+
} satisfies Meta<typeof DropdownItemCollapsible>;
|
|
16
|
+
|
|
17
|
+
export default meta;
|
|
18
|
+
type Story = StoryObj<typeof meta>;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Item colapsable básico sin encabezado ni divisor
|
|
22
|
+
* Muestra estructura simple con header colapsable
|
|
23
|
+
*/
|
|
24
|
+
export const Basic: Story = {
|
|
25
|
+
render: () => (
|
|
26
|
+
<DropdownItemCollapsible
|
|
27
|
+
label="Users"
|
|
28
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
29
|
+
children={[
|
|
30
|
+
{
|
|
31
|
+
label: 'Active Users',
|
|
32
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Inactive Users',
|
|
36
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
37
|
+
},
|
|
38
|
+
]}
|
|
39
|
+
/>
|
|
40
|
+
),
|
|
41
|
+
args: {
|
|
42
|
+
label: 'Users',
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Item colapsable con encabezado de sección
|
|
48
|
+
* Útil para agrupar items relacionados
|
|
49
|
+
*/
|
|
50
|
+
export const WithHeading: Story = {
|
|
51
|
+
render: () => (
|
|
52
|
+
<DropdownItemCollapsible
|
|
53
|
+
label="Customers"
|
|
54
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
55
|
+
showHeading={true}
|
|
56
|
+
headingLabel="SECTION 1"
|
|
57
|
+
children={[
|
|
58
|
+
{
|
|
59
|
+
label: 'Enterprise',
|
|
60
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'SMB',
|
|
64
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
label: 'Startup',
|
|
68
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
69
|
+
},
|
|
70
|
+
]}
|
|
71
|
+
showDivider={true}
|
|
72
|
+
/>
|
|
73
|
+
),
|
|
74
|
+
args: {
|
|
75
|
+
label: 'Customers',
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Item colapsable expandido por defecto
|
|
81
|
+
*/
|
|
82
|
+
export const DefaultOpen: Story = {
|
|
83
|
+
render: () => (
|
|
84
|
+
<DropdownItemCollapsible
|
|
85
|
+
label="Departments"
|
|
86
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
87
|
+
defaultOpen={true}
|
|
88
|
+
children={[
|
|
89
|
+
{
|
|
90
|
+
label: 'Sales',
|
|
91
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'Marketing',
|
|
95
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
label: 'Engineering',
|
|
99
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
label: 'Operations',
|
|
103
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
104
|
+
},
|
|
105
|
+
]}
|
|
106
|
+
/>
|
|
107
|
+
),
|
|
108
|
+
args: {
|
|
109
|
+
label: 'Departments',
|
|
110
|
+
},
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Item deshabilitado
|
|
115
|
+
* No se puede expandir ni interactuar
|
|
116
|
+
*/
|
|
117
|
+
export const Disabled: Story = {
|
|
118
|
+
render: () => (
|
|
119
|
+
<DropdownItemCollapsible
|
|
120
|
+
label="Archived"
|
|
121
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
122
|
+
disabled={true}
|
|
123
|
+
children={[
|
|
124
|
+
{
|
|
125
|
+
label: 'Old Item 1',
|
|
126
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: 'Old Item 2',
|
|
130
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
131
|
+
},
|
|
132
|
+
]}
|
|
133
|
+
/>
|
|
134
|
+
),
|
|
135
|
+
args: {
|
|
136
|
+
label: 'Archived',
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Item simple sin items anidados (no colapsable)
|
|
142
|
+
* Actúa como un botón normal
|
|
143
|
+
*/
|
|
144
|
+
export const Simple: Story = {
|
|
145
|
+
args: {
|
|
146
|
+
label: 'Single Item',
|
|
147
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
148
|
+
isCollapsible: false,
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Item sin icono
|
|
154
|
+
*/
|
|
155
|
+
export const WithoutIcon: Story = {
|
|
156
|
+
render: () => (
|
|
157
|
+
<DropdownItemCollapsible
|
|
158
|
+
label="No Icon Item"
|
|
159
|
+
children={[
|
|
160
|
+
{
|
|
161
|
+
label: 'Child 1',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
label: 'Child 2',
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
label: 'Child 3',
|
|
168
|
+
},
|
|
169
|
+
]}
|
|
170
|
+
/>
|
|
171
|
+
),
|
|
172
|
+
args: {
|
|
173
|
+
label: 'No Icon Item',
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Items anidados sin iconos
|
|
179
|
+
*/
|
|
180
|
+
export const ChildrenWithoutIcons: Story = {
|
|
181
|
+
render: () => (
|
|
182
|
+
<DropdownItemCollapsible
|
|
183
|
+
label="Groups"
|
|
184
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
185
|
+
children={[
|
|
186
|
+
{
|
|
187
|
+
label: 'Admins',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
label: 'Users',
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
label: 'Guests',
|
|
194
|
+
},
|
|
195
|
+
]}
|
|
196
|
+
/>
|
|
197
|
+
),
|
|
198
|
+
args: {
|
|
199
|
+
label: 'Groups',
|
|
200
|
+
},
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Múltiples items colapsables para simular dropdown completo
|
|
205
|
+
*/
|
|
206
|
+
export const MultipleItems: Story = {
|
|
207
|
+
args: {
|
|
208
|
+
label: 'Multi Demo',
|
|
209
|
+
},
|
|
210
|
+
render: () => (
|
|
211
|
+
<div className="flex flex-col gap-0 w-56 bg-bg-primary dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary p-2">
|
|
212
|
+
<DropdownItemCollapsible
|
|
213
|
+
label="Users"
|
|
214
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
215
|
+
showHeading={true}
|
|
216
|
+
headingLabel="RESOURCES"
|
|
217
|
+
showDivider={true}
|
|
218
|
+
children={[
|
|
219
|
+
{
|
|
220
|
+
label: 'Active Users',
|
|
221
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
label: 'Inactive Users',
|
|
225
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
226
|
+
},
|
|
227
|
+
]}
|
|
228
|
+
/>
|
|
229
|
+
|
|
230
|
+
<DropdownItemCollapsible
|
|
231
|
+
label="Departments"
|
|
232
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
233
|
+
showDivider={true}
|
|
234
|
+
children={[
|
|
235
|
+
{
|
|
236
|
+
label: 'Sales',
|
|
237
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
label: 'Marketing',
|
|
241
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
label: 'Engineering',
|
|
245
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
246
|
+
},
|
|
247
|
+
]}
|
|
248
|
+
/>
|
|
249
|
+
|
|
250
|
+
<DropdownItemCollapsible
|
|
251
|
+
label="Settings"
|
|
252
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
253
|
+
showDivider={false}
|
|
254
|
+
isCollapsible={false}
|
|
255
|
+
/>
|
|
256
|
+
</div>
|
|
257
|
+
),
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Ejemplo con callbacks
|
|
262
|
+
*/
|
|
263
|
+
export const WithCallbacks: Story = {
|
|
264
|
+
render: () => (
|
|
265
|
+
<DropdownItemCollapsible
|
|
266
|
+
label="Actions"
|
|
267
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
268
|
+
defaultOpen={false}
|
|
269
|
+
children={[
|
|
270
|
+
{
|
|
271
|
+
label: 'Edit',
|
|
272
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
273
|
+
onClick: () => console.log('Edit clicked'),
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
label: 'Delete',
|
|
277
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
278
|
+
onClick: () => console.log('Delete clicked'),
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
label: 'Archive',
|
|
282
|
+
disabled: true,
|
|
283
|
+
icon: <UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />,
|
|
284
|
+
},
|
|
285
|
+
]}
|
|
286
|
+
onOpenChange={(open) => console.log('Toggle state:', open)}
|
|
287
|
+
/>
|
|
288
|
+
),
|
|
289
|
+
args: {
|
|
290
|
+
label: 'Actions',
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* Item con muchos items anidados
|
|
296
|
+
*/
|
|
297
|
+
export const ManyChildren: Story = {
|
|
298
|
+
render: () => (
|
|
299
|
+
<DropdownItemCollapsible
|
|
300
|
+
label="Countries"
|
|
301
|
+
icon={<UserIcon className="w-4 h-4 stroke-content-secondary dark:stroke-content-secondary" />}
|
|
302
|
+
children={[
|
|
303
|
+
{ label: 'United States' },
|
|
304
|
+
{ label: 'Canada' },
|
|
305
|
+
{ label: 'Mexico' },
|
|
306
|
+
{ label: 'Brazil' },
|
|
307
|
+
{ label: 'Argentina' },
|
|
308
|
+
{ label: 'Chile' },
|
|
309
|
+
{ label: 'Colombia' },
|
|
310
|
+
{ label: 'Peru' },
|
|
311
|
+
]}
|
|
312
|
+
/>
|
|
313
|
+
),
|
|
314
|
+
args: {
|
|
315
|
+
label: 'Countries',
|
|
316
|
+
},
|
|
317
|
+
};
|