siesa-ui-kit 1.0.5 → 1.0.6
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/dist/index.cjs +1479 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.js +1479 -0
- package/dist/index.js.map +1 -0
- package/package.json +23 -14
- package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
- package/claude/prompts/component-template.md +0 -121
- package/claude/settings.local.json +0 -61
- package/docs/border-radius.md +0 -1261
- package/docs/colors.md +0 -832
- package/docs/dark-mode-guide.md +0 -1426
- package/docs/filters.md +0 -1243
- package/docs/icons.md +0 -1283
- package/docs/shadows.md +0 -1377
- package/docs/spacing.md +0 -1684
- package/docs/typography.md +0 -1268
- package/postcss.config.cjs +0 -6
- package/src/App.css +0 -42
- package/src/App.tsx +0 -8
- package/src/ButtonTest.tsx +0 -147
- package/src/assets/fonts/README.md +0 -261
- package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
- package/src/assets/react.svg +0 -1
- package/src/components/Alert/Alert.stories.tsx +0 -332
- package/src/components/Alert/Alert.tsx +0 -106
- package/src/components/Alert/Alert.types.ts +0 -54
- package/src/components/Avatar/Avatar.stories.tsx +0 -494
- package/src/components/Avatar/Avatar.tsx +0 -143
- package/src/components/Avatar/Avatar.types.ts +0 -53
- package/src/components/Badge/Badge.stories.tsx +0 -339
- package/src/components/Badge/Badge.tsx +0 -278
- package/src/components/Badge/Badge.types.ts +0 -58
- package/src/components/Button/Button.stories.tsx +0 -950
- package/src/components/Button/Button.tsx +0 -337
- package/src/components/Button/Button.types.ts +0 -180
- package/src/components/Button/icons.tsx +0 -87
- package/src/components/Button/index.ts +0 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
- package/src/components/Checkbox/Checkbox.tsx +0 -208
- package/src/components/Checkbox/Checkbox.types.ts +0 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
- package/src/components/DescriptionList/DescriptionList.tsx +0 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
- package/src/components/Divider/Divider.stories.tsx +0 -263
- package/src/components/Divider/Divider.tsx +0 -80
- package/src/components/Divider/Divider.types.ts +0 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
- package/src/components/Dropdown/Dropdown.tsx +0 -422
- package/src/components/Dropdown/Dropdown.types.ts +0 -146
- package/src/components/Dropdown/README.md +0 -266
- package/src/components/Dropdown/icons.tsx +0 -72
- package/src/components/Dropdown/index.ts +0 -8
- package/src/components/Input/Input.stories.tsx +0 -583
- package/src/components/Input/Input.tsx +0 -204
- package/src/components/Input/Input.types.ts +0 -80
- package/src/components/Input/icons.tsx +0 -145
- package/src/components/Input/index.ts +0 -2
- package/src/components/LoginView/LoginView.stories.tsx +0 -148
- package/src/components/LoginView/LoginView.tsx +0 -426
- package/src/components/LoginView/LoginView.types.ts +0 -52
- package/src/components/LoginView/README.md +0 -396
- package/src/components/LoginView/icons.tsx +0 -85
- package/src/components/LoginView/index.ts +0 -3
- package/src/components/Navbar/Navbar.stories.tsx +0 -810
- package/src/components/Navbar/Navbar.tsx +0 -755
- package/src/components/Navbar/Navbar.types.ts +0 -219
- package/src/components/Navbar/README.md +0 -279
- package/src/components/Navbar/icons.tsx +0 -102
- package/src/components/Navbar/index.ts +0 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
- package/src/components/NavigationBar/NavigationBar.tsx +0 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
- package/src/components/NavigationBar/README.md +0 -469
- package/src/components/NavigationBar/index.ts +0 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
- package/src/components/NavigationRail/NavigationRail.tsx +0 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
- package/src/components/NavigationRail/README.md +0 -224
- package/src/components/NavigationRail/index.ts +0 -2
- package/src/components/Notification/Notification.stories.tsx +0 -513
- package/src/components/Notification/Notification.tsx +0 -145
- package/src/components/Notification/Notification.types.ts +0 -142
- package/src/components/Notification/README.md +0 -409
- package/src/components/Notification/index.ts +0 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
- package/src/components/POSConvention/POSConvention.tsx +0 -129
- package/src/components/POSConvention/POSConvention.types.ts +0 -38
- package/src/components/POSConvention/README.md +0 -123
- package/src/components/POSConvention/icons.tsx +0 -45
- package/src/components/POSConvention/index.ts +0 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
- package/src/components/POSLocationButton/README.md +0 -253
- package/src/components/POSLocationButton/icons.tsx +0 -120
- package/src/components/POSLocationButton/index.ts +0 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
- package/src/components/POSNumberButton/README.md +0 -321
- package/src/components/POSNumberButton/index.ts +0 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
- package/src/components/POSProductButton/POSProductButton.tsx +0 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
- package/src/components/POSProductButton/README.md +0 -269
- package/src/components/POSProductButton/index.ts +0 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
- package/src/components/POSProductCard/POSProductCard.tsx +0 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
- package/src/components/POSProductCard/README.md +0 -179
- package/src/components/POSProductCard/icons.tsx +0 -26
- package/src/components/POSProductCard/index.ts +0 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
- package/src/components/POSProductSidebarItems/README.md +0 -198
- package/src/components/POSProductSidebarItems/icons.tsx +0 -21
- package/src/components/POSProductSidebarItems/index.ts +0 -3
- package/src/components/POSTable/POSTable.stories.tsx +0 -737
- package/src/components/POSTable/POSTable.tsx +0 -401
- package/src/components/POSTable/POSTable.types.ts +0 -83
- package/src/components/POSTable/README.md +0 -286
- package/src/components/POSTable/index.ts +0 -7
- package/src/components/Pagination/Pagination.stories.tsx +0 -555
- package/src/components/Pagination/Pagination.tsx +0 -286
- package/src/components/Pagination/Pagination.types.ts +0 -93
- package/src/components/Pagination/README.md +0 -298
- package/src/components/Pagination/icons.tsx +0 -47
- package/src/components/Pagination/index.ts +0 -3
- package/src/components/Quantity/Quantity.stories.tsx +0 -457
- package/src/components/Quantity/Quantity.tsx +0 -289
- package/src/components/Quantity/Quantity.types.ts +0 -70
- package/src/components/Radio/Radio.stories.tsx +0 -523
- package/src/components/Radio/Radio.tsx +0 -170
- package/src/components/Radio/Radio.types.ts +0 -122
- package/src/components/Select/README.md +0 -299
- package/src/components/Select/Select.stories.tsx +0 -673
- package/src/components/Select/Select.tsx +0 -454
- package/src/components/Select/Select.types.ts +0 -148
- package/src/components/Select/icons.tsx +0 -50
- package/src/components/Select/index.ts +0 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/components/SignUpView/SignUpView.tsx +0 -503
- package/src/components/SignUpView/SignUpView.types.ts +0 -58
- package/src/components/SignUpView/icons.tsx +0 -71
- package/src/components/SignUpView/index.ts +0 -3
- package/src/components/Switch/README.md +0 -112
- package/src/components/Switch/Switch.stories.tsx +0 -550
- package/src/components/Switch/Switch.tsx +0 -246
- package/src/components/Switch/Switch.types.ts +0 -67
- package/src/components/Table/README.md +0 -369
- package/src/components/Table/Table.stories.tsx +0 -805
- package/src/components/Table/Table.tsx +0 -688
- package/src/components/Table/Table.types.ts +0 -204
- package/src/components/Table/index.ts +0 -9
- package/src/components/Tabs/README.md +0 -201
- package/src/components/Tabs/Tabs.stories.tsx +0 -580
- package/src/components/Tabs/Tabs.tsx +0 -356
- package/src/components/Tabs/Tabs.types.ts +0 -127
- package/src/components/Tabs/icons.tsx +0 -129
- package/src/components/Tabs/index.ts +0 -11
- package/src/components/Textarea/Textarea.stories.tsx +0 -535
- package/src/components/Textarea/Textarea.tsx +0 -188
- package/src/components/Textarea/Textarea.types.ts +0 -54
- package/src/context/ThemeContext.tsx +0 -99
- package/src/context/index.ts +0 -1
- package/src/index.css +0 -29
- package/src/index.ts +0 -39
- package/src/main.tsx +0 -10
- package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
- package/src/views/ProductsView/ProductsView.tsx +0 -480
- package/src/views/ProductsView/ProductsView.types.ts +0 -238
- package/src/views/ProductsView/README.md +0 -312
- package/src/views/ProductsView/icons.tsx +0 -38
- package/src/views/ProductsView/index.ts +0 -8
- package/src/views/RecoverPasswordView/README.md +0 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
- package/src/views/RecoverPasswordView/icons.tsx +0 -17
- package/src/views/RecoverPasswordView/index.ts +0 -2
- package/src/views/TableLayoutView/README.md +0 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
- package/src/views/TableLayoutView/icons.tsx +0 -113
- package/src/views/TableLayoutView/index.ts +0 -6
- package/storybook/main.ts +0 -20
- package/storybook/preview.tsx +0 -84
- package/storybook/vitest.setup.ts +0 -7
- package/tailwind.config.js +0 -128
- /package/{public → dist}/,Business Logo.png +0 -0
- /package/{public → dist}/.Siesa Logo.png +0 -0
- /package/{public → dist}/bg_siesa.png +0 -0
- /package/{public → dist}/siesa_logo_mobile.png +0 -0
- /package/{public → dist}/vite.svg +0 -0
|
@@ -1,552 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
3
|
-
import { Dropdown } from './Dropdown';
|
|
4
|
-
import { UserIcon, CogIcon, BellIcon, CreditCardIcon } from './icons';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Dropdown - Componente de menú desplegable del sistema de diseño Siesa
|
|
8
|
-
*
|
|
9
|
-
* Componente dropdown completo con menú desplegable, items, headings y dividers.
|
|
10
|
-
* Implementado con React, TypeScript y Tailwind CSS siguiendo pixel-perfect las
|
|
11
|
-
* especificaciones de Figma.
|
|
12
|
-
*
|
|
13
|
-
* **Características:**
|
|
14
|
-
* - Múltiples tipos de items (con iconos, descripciones, shortcuts)
|
|
15
|
-
* - Headings y dividers para organizar el menú
|
|
16
|
-
* - Estados: Default, Hover, Focus, Disabled
|
|
17
|
-
* - Cierre automático al hacer click fuera
|
|
18
|
-
* - Soporte para teclado (Escape para cerrar)
|
|
19
|
-
* - Dark mode completo
|
|
20
|
-
*/
|
|
21
|
-
const meta = {
|
|
22
|
-
title: 'Siesa UI Kit/Dropdown',
|
|
23
|
-
component: Dropdown,
|
|
24
|
-
parameters: {
|
|
25
|
-
layout: 'centered',
|
|
26
|
-
docs: {
|
|
27
|
-
description: {
|
|
28
|
-
component:
|
|
29
|
-
'Menú desplegable con soporte para items, headings, dividers y múltiples estados. Diseñado para mantener consistencia visual y funcional en toda la aplicación.',
|
|
30
|
-
},
|
|
31
|
-
},
|
|
32
|
-
},
|
|
33
|
-
tags: ['autodocs'],
|
|
34
|
-
argTypes: {
|
|
35
|
-
variant: {
|
|
36
|
-
control: 'select',
|
|
37
|
-
options: ['default', 'icon-only'],
|
|
38
|
-
description: 'Variante visual del dropdown',
|
|
39
|
-
table: {
|
|
40
|
-
type: { summary: 'string' },
|
|
41
|
-
defaultValue: { summary: 'default' },
|
|
42
|
-
category: 'Apariencia',
|
|
43
|
-
},
|
|
44
|
-
},
|
|
45
|
-
children: {
|
|
46
|
-
control: 'text',
|
|
47
|
-
description: 'Texto del botón trigger',
|
|
48
|
-
table: {
|
|
49
|
-
type: { summary: 'ReactNode' },
|
|
50
|
-
category: 'Contenido',
|
|
51
|
-
},
|
|
52
|
-
},
|
|
53
|
-
placeholder: {
|
|
54
|
-
control: 'text',
|
|
55
|
-
description: 'Placeholder cuando no hay children',
|
|
56
|
-
table: {
|
|
57
|
-
type: { summary: 'string' },
|
|
58
|
-
defaultValue: { summary: 'Options' },
|
|
59
|
-
category: 'Contenido',
|
|
60
|
-
},
|
|
61
|
-
},
|
|
62
|
-
disabled: {
|
|
63
|
-
control: 'boolean',
|
|
64
|
-
description: 'Deshabilita el dropdown',
|
|
65
|
-
table: {
|
|
66
|
-
type: { summary: 'boolean' },
|
|
67
|
-
defaultValue: { summary: 'false' },
|
|
68
|
-
category: 'Estado',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
items: {
|
|
72
|
-
description: 'Array de items del menú',
|
|
73
|
-
table: {
|
|
74
|
-
type: { summary: 'DropdownItemProps[]' },
|
|
75
|
-
category: 'Contenido',
|
|
76
|
-
},
|
|
77
|
-
},
|
|
78
|
-
},
|
|
79
|
-
} satisfies Meta<typeof Dropdown>;
|
|
80
|
-
|
|
81
|
-
export default meta;
|
|
82
|
-
type Story = StoryObj<typeof meta>;
|
|
83
|
-
|
|
84
|
-
// ============================================
|
|
85
|
-
// 1. PLAYGROUND INTERACTIVO
|
|
86
|
-
// ============================================
|
|
87
|
-
export const Playground: Story = {
|
|
88
|
-
args: {
|
|
89
|
-
variant: 'default',
|
|
90
|
-
placeholder: 'Opciones',
|
|
91
|
-
items: [
|
|
92
|
-
{ children: 'Cuenta', icon: <UserIcon /> },
|
|
93
|
-
{ children: 'Notificaciones', icon: <BellIcon /> },
|
|
94
|
-
{ children: 'Facturación', icon: <CreditCardIcon /> },
|
|
95
|
-
{ isDivider: true },
|
|
96
|
-
{ isHeading: true, children: 'Mis eventos' },
|
|
97
|
-
{ children: 'Próximos eventos' },
|
|
98
|
-
{ children: 'Eventos pasados' },
|
|
99
|
-
],
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
// ============================================
|
|
104
|
-
// 2. VARIANTES
|
|
105
|
-
// ============================================
|
|
106
|
-
export const Variantes: Story = {
|
|
107
|
-
args: {
|
|
108
|
-
items: [],
|
|
109
|
-
},
|
|
110
|
-
render: () => (
|
|
111
|
-
<div className="space-y-8 p-6">
|
|
112
|
-
{/* Default Variant */}
|
|
113
|
-
<div>
|
|
114
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
115
|
-
Por Defecto (con texto)
|
|
116
|
-
</h3>
|
|
117
|
-
<Dropdown
|
|
118
|
-
variant="default"
|
|
119
|
-
placeholder="Opciones"
|
|
120
|
-
items={[
|
|
121
|
-
{ children: 'Cuenta' },
|
|
122
|
-
{ children: 'Configuración' },
|
|
123
|
-
{ children: 'Cerrar sesión' },
|
|
124
|
-
]}
|
|
125
|
-
/>
|
|
126
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
127
|
-
Botón con texto + ícono de chevron
|
|
128
|
-
</p>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
{/* Icon Only Variant */}
|
|
132
|
-
<div>
|
|
133
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
134
|
-
Solo Ícono
|
|
135
|
-
</h3>
|
|
136
|
-
<Dropdown
|
|
137
|
-
variant="icon-only"
|
|
138
|
-
items={[
|
|
139
|
-
{ children: 'Cuenta', icon: <UserIcon /> },
|
|
140
|
-
{ children: 'Configuración', icon: <CogIcon /> },
|
|
141
|
-
{ children: 'Cerrar sesión' },
|
|
142
|
-
]}
|
|
143
|
-
/>
|
|
144
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
145
|
-
Solo ícono de chevron (36x36px) - ideal para espacios reducidos
|
|
146
|
-
</p>
|
|
147
|
-
</div>
|
|
148
|
-
</div>
|
|
149
|
-
),
|
|
150
|
-
};
|
|
151
|
-
|
|
152
|
-
// ============================================
|
|
153
|
-
// 3. TIPOS DE MENÚ
|
|
154
|
-
// ============================================
|
|
155
|
-
export const TodosLosTiposDeMenu: Story = {
|
|
156
|
-
args: {
|
|
157
|
-
items: [],
|
|
158
|
-
},
|
|
159
|
-
render: () => (
|
|
160
|
-
<div className="space-y-8 p-6">
|
|
161
|
-
{/* Basic */}
|
|
162
|
-
<div>
|
|
163
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
164
|
-
Básico
|
|
165
|
-
</h3>
|
|
166
|
-
<Dropdown
|
|
167
|
-
placeholder="Opciones"
|
|
168
|
-
items={[
|
|
169
|
-
{ children: 'Cuenta' },
|
|
170
|
-
{ children: 'Notificaciones' },
|
|
171
|
-
{ children: 'Facturación' },
|
|
172
|
-
{ isDivider: true },
|
|
173
|
-
{ isHeading: true, children: 'Mis eventos' },
|
|
174
|
-
{ children: 'Próximos eventos' },
|
|
175
|
-
{ children: 'Eventos pasados' },
|
|
176
|
-
]}
|
|
177
|
-
/>
|
|
178
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
179
|
-
Menú básico con items, dividers y headings
|
|
180
|
-
</p>
|
|
181
|
-
</div>
|
|
182
|
-
|
|
183
|
-
{/* With Icons */}
|
|
184
|
-
<div>
|
|
185
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
186
|
-
Con Iconos
|
|
187
|
-
</h3>
|
|
188
|
-
<Dropdown
|
|
189
|
-
placeholder="Acciones"
|
|
190
|
-
items={[
|
|
191
|
-
{ children: 'Cuenta', icon: <UserIcon /> },
|
|
192
|
-
{ children: 'Configuración', icon: <CogIcon /> },
|
|
193
|
-
{ children: 'Notificaciones', icon: <BellIcon /> },
|
|
194
|
-
{ isDivider: true },
|
|
195
|
-
{ children: 'Facturación', icon: <CreditCardIcon /> },
|
|
196
|
-
]}
|
|
197
|
-
/>
|
|
198
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
199
|
-
Items con iconos a la izquierda
|
|
200
|
-
</p>
|
|
201
|
-
</div>
|
|
202
|
-
|
|
203
|
-
{/* With Shortcuts */}
|
|
204
|
-
<div>
|
|
205
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
206
|
-
Con Atajos de Teclado
|
|
207
|
-
</h3>
|
|
208
|
-
<Dropdown
|
|
209
|
-
placeholder="Editar"
|
|
210
|
-
items={[
|
|
211
|
-
{ children: 'Deshacer', shortcut: '⌘ Z' },
|
|
212
|
-
{ children: 'Rehacer', shortcut: '⌘ ⇧ Z' },
|
|
213
|
-
{ isDivider: true },
|
|
214
|
-
{ children: 'Cortar', shortcut: '⌘ X' },
|
|
215
|
-
{ children: 'Copiar', shortcut: '⌘ C' },
|
|
216
|
-
{ children: 'Pegar', shortcut: '⌘ V' },
|
|
217
|
-
]}
|
|
218
|
-
/>
|
|
219
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
220
|
-
Items con shortcuts de teclado
|
|
221
|
-
</p>
|
|
222
|
-
</div>
|
|
223
|
-
|
|
224
|
-
{/* With Description */}
|
|
225
|
-
<div>
|
|
226
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
227
|
-
Con Descripción
|
|
228
|
-
</h3>
|
|
229
|
-
<Dropdown
|
|
230
|
-
placeholder="Configuración"
|
|
231
|
-
items={[
|
|
232
|
-
{
|
|
233
|
-
children: 'Perfil',
|
|
234
|
-
icon: <UserIcon />,
|
|
235
|
-
description: 'Administra tu perfil público',
|
|
236
|
-
},
|
|
237
|
-
{
|
|
238
|
-
children: 'Configuración',
|
|
239
|
-
icon: <CogIcon />,
|
|
240
|
-
description: 'Configura las preferencias de la app',
|
|
241
|
-
},
|
|
242
|
-
{
|
|
243
|
-
children: 'Facturación',
|
|
244
|
-
icon: <CreditCardIcon />,
|
|
245
|
-
description: 'Métodos de pago y facturas',
|
|
246
|
-
},
|
|
247
|
-
]}
|
|
248
|
-
/>
|
|
249
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
250
|
-
Items con descripciones secundarias
|
|
251
|
-
</p>
|
|
252
|
-
</div>
|
|
253
|
-
|
|
254
|
-
{/* With Menu Header */}
|
|
255
|
-
<div>
|
|
256
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
257
|
-
Con Encabezados de Menú
|
|
258
|
-
</h3>
|
|
259
|
-
<Dropdown
|
|
260
|
-
placeholder="Cuenta"
|
|
261
|
-
items={[
|
|
262
|
-
{ isHeading: true, children: 'Cuenta' },
|
|
263
|
-
{ children: 'Perfil', icon: <UserIcon /> },
|
|
264
|
-
{ children: 'Configuración', icon: <CogIcon /> },
|
|
265
|
-
{ isDivider: true },
|
|
266
|
-
{ isHeading: true, children: 'Preferencias' },
|
|
267
|
-
{ children: 'Notificaciones', icon: <BellIcon /> },
|
|
268
|
-
{ children: 'Facturación', icon: <CreditCardIcon /> },
|
|
269
|
-
]}
|
|
270
|
-
/>
|
|
271
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
272
|
-
Menú con múltiples secciones y headers
|
|
273
|
-
</p>
|
|
274
|
-
</div>
|
|
275
|
-
|
|
276
|
-
{/* Tips */}
|
|
277
|
-
<div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
278
|
-
<p className="text-xs text-gray-600 dark:text-gray-300">
|
|
279
|
-
<strong>💡 Consejos:</strong>
|
|
280
|
-
<br />• Usa <code className="px-1 bg-white dark:bg-gray-700">isDivider: true</code> para
|
|
281
|
-
separadores
|
|
282
|
-
<br />• Usa <code className="px-1 bg-white dark:bg-gray-700">isHeading: true</code> para
|
|
283
|
-
encabezados
|
|
284
|
-
<br />• Agrega <code className="px-1 bg-white dark:bg-gray-700">description</code> para
|
|
285
|
-
texto secundario
|
|
286
|
-
<br />• Agrega <code className="px-1 bg-white dark:bg-gray-700">shortcut</code> para
|
|
287
|
-
atajos de teclado
|
|
288
|
-
</p>
|
|
289
|
-
</div>
|
|
290
|
-
</div>
|
|
291
|
-
),
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
// ============================================
|
|
295
|
-
// 4. ESTADOS
|
|
296
|
-
// ============================================
|
|
297
|
-
export const Estados: Story = {
|
|
298
|
-
args: {
|
|
299
|
-
items: [],
|
|
300
|
-
},
|
|
301
|
-
render: () => (
|
|
302
|
-
<div className="space-y-8 p-6">
|
|
303
|
-
{/* Default */}
|
|
304
|
-
<div>
|
|
305
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
306
|
-
Por Defecto
|
|
307
|
-
</h3>
|
|
308
|
-
<Dropdown
|
|
309
|
-
placeholder="Opciones"
|
|
310
|
-
items={[
|
|
311
|
-
{ children: 'Cuenta' },
|
|
312
|
-
{ children: 'Configuración' },
|
|
313
|
-
{ children: 'Cerrar sesión' },
|
|
314
|
-
]}
|
|
315
|
-
/>
|
|
316
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
317
|
-
Estado normal del dropdown
|
|
318
|
-
</p>
|
|
319
|
-
</div>
|
|
320
|
-
|
|
321
|
-
{/* Hover */}
|
|
322
|
-
<div>
|
|
323
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
324
|
-
Hover
|
|
325
|
-
</h3>
|
|
326
|
-
<Dropdown
|
|
327
|
-
placeholder="Opciones"
|
|
328
|
-
items={[
|
|
329
|
-
{ children: 'Cuenta' },
|
|
330
|
-
{ children: 'Configuración' },
|
|
331
|
-
{ children: 'Cerrar sesión' },
|
|
332
|
-
]}
|
|
333
|
-
/>
|
|
334
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
335
|
-
Pasa el mouse sobre el botón para ver el efecto hover
|
|
336
|
-
</p>
|
|
337
|
-
</div>
|
|
338
|
-
|
|
339
|
-
{/* Focus */}
|
|
340
|
-
<div>
|
|
341
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
342
|
-
Focus
|
|
343
|
-
</h3>
|
|
344
|
-
<Dropdown
|
|
345
|
-
placeholder="Opciones"
|
|
346
|
-
items={[
|
|
347
|
-
{ children: 'Cuenta' },
|
|
348
|
-
{ children: 'Configuración' },
|
|
349
|
-
{ children: 'Cerrar sesión' },
|
|
350
|
-
]}
|
|
351
|
-
/>
|
|
352
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
353
|
-
Haz click en el botón para ver el focus ring
|
|
354
|
-
</p>
|
|
355
|
-
</div>
|
|
356
|
-
|
|
357
|
-
{/* Disabled */}
|
|
358
|
-
<div>
|
|
359
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
360
|
-
Deshabilitado
|
|
361
|
-
</h3>
|
|
362
|
-
<Dropdown
|
|
363
|
-
placeholder="Opciones"
|
|
364
|
-
disabled
|
|
365
|
-
items={[
|
|
366
|
-
{ children: 'Cuenta' },
|
|
367
|
-
{ children: 'Configuración' },
|
|
368
|
-
{ children: 'Cerrar sesión' },
|
|
369
|
-
]}
|
|
370
|
-
/>
|
|
371
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
372
|
-
Dropdown deshabilitado (no interactivo)
|
|
373
|
-
</p>
|
|
374
|
-
</div>
|
|
375
|
-
|
|
376
|
-
{/* Item Disabled */}
|
|
377
|
-
<div>
|
|
378
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
379
|
-
Con Item Deshabilitado
|
|
380
|
-
</h3>
|
|
381
|
-
<Dropdown
|
|
382
|
-
placeholder="Opciones"
|
|
383
|
-
items={[
|
|
384
|
-
{ children: 'Cuenta' },
|
|
385
|
-
{ children: 'Configuración', disabled: true },
|
|
386
|
-
{ children: 'Cerrar sesión' },
|
|
387
|
-
]}
|
|
388
|
-
/>
|
|
389
|
-
<p className="text-xs text-gray-500 dark:text-gray-300 mt-2">
|
|
390
|
-
Item individual deshabilitado
|
|
391
|
-
</p>
|
|
392
|
-
</div>
|
|
393
|
-
</div>
|
|
394
|
-
),
|
|
395
|
-
};
|
|
396
|
-
|
|
397
|
-
// ============================================
|
|
398
|
-
// 5. EJEMPLOS DE USO
|
|
399
|
-
// ============================================
|
|
400
|
-
export const EjemplosDeUso: Story = {
|
|
401
|
-
args: {
|
|
402
|
-
items: [],
|
|
403
|
-
},
|
|
404
|
-
render: () => (
|
|
405
|
-
<div className="space-y-8 p-6">
|
|
406
|
-
{/* User Menu */}
|
|
407
|
-
<div>
|
|
408
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
409
|
-
Menú de Usuario
|
|
410
|
-
</h3>
|
|
411
|
-
<Dropdown
|
|
412
|
-
placeholder="Juan Pérez"
|
|
413
|
-
items={[
|
|
414
|
-
{ children: 'Perfil', icon: <UserIcon />, description: 'Ver tu perfil' },
|
|
415
|
-
{
|
|
416
|
-
children: 'Configuración',
|
|
417
|
-
icon: <CogIcon />,
|
|
418
|
-
description: 'Administra tu cuenta',
|
|
419
|
-
shortcut: '⌘ ,',
|
|
420
|
-
},
|
|
421
|
-
{ isDivider: true },
|
|
422
|
-
{ children: 'Cerrar sesión' },
|
|
423
|
-
]}
|
|
424
|
-
/>
|
|
425
|
-
</div>
|
|
426
|
-
|
|
427
|
-
{/* Edit Menu */}
|
|
428
|
-
<div>
|
|
429
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
430
|
-
Menú de Edición
|
|
431
|
-
</h3>
|
|
432
|
-
<Dropdown
|
|
433
|
-
placeholder="Editar"
|
|
434
|
-
items={[
|
|
435
|
-
{ children: 'Deshacer', shortcut: '⌘ Z' },
|
|
436
|
-
{ children: 'Rehacer', shortcut: '⌘ ⇧ Z' },
|
|
437
|
-
{ isDivider: true },
|
|
438
|
-
{ children: 'Cortar', shortcut: '⌘ X' },
|
|
439
|
-
{ children: 'Copiar', shortcut: '⌘ C' },
|
|
440
|
-
{ children: 'Pegar', shortcut: '⌘ V' },
|
|
441
|
-
{ isDivider: true },
|
|
442
|
-
{ children: 'Seleccionar todo', shortcut: '⌘ A' },
|
|
443
|
-
]}
|
|
444
|
-
/>
|
|
445
|
-
</div>
|
|
446
|
-
|
|
447
|
-
{/* View Menu */}
|
|
448
|
-
<div>
|
|
449
|
-
<h3 className="text-sm font-bold mb-4 text-gray-700 dark:text-white">
|
|
450
|
-
Menú de Vista
|
|
451
|
-
</h3>
|
|
452
|
-
<Dropdown
|
|
453
|
-
placeholder="Vista"
|
|
454
|
-
items={[
|
|
455
|
-
{ isHeading: true, children: 'Diseño' },
|
|
456
|
-
{ children: 'Mostrar barra lateral', shortcut: '⌘ B' },
|
|
457
|
-
{ children: 'Mostrar barra de herramientas', shortcut: '⌘ T' },
|
|
458
|
-
{ isDivider: true },
|
|
459
|
-
{ isHeading: true, children: 'Apariencia' },
|
|
460
|
-
{ children: 'Modo claro' },
|
|
461
|
-
{ children: 'Modo oscuro' },
|
|
462
|
-
{ children: 'Automático' },
|
|
463
|
-
]}
|
|
464
|
-
/>
|
|
465
|
-
</div>
|
|
466
|
-
</div>
|
|
467
|
-
),
|
|
468
|
-
};
|
|
469
|
-
|
|
470
|
-
// ============================================
|
|
471
|
-
// 6. CONTROLLED VS UNCONTROLLED
|
|
472
|
-
// ============================================
|
|
473
|
-
export const Controlado: Story = {
|
|
474
|
-
args: {
|
|
475
|
-
items: [],
|
|
476
|
-
},
|
|
477
|
-
render: () => {
|
|
478
|
-
const [open, setOpen] = React.useState(false);
|
|
479
|
-
|
|
480
|
-
return (
|
|
481
|
-
<div className="space-y-4 p-6">
|
|
482
|
-
<h3 className="text-sm font-bold text-gray-700 dark:text-white">
|
|
483
|
-
Dropdown Controlado
|
|
484
|
-
</h3>
|
|
485
|
-
<div className="flex items-center gap-4">
|
|
486
|
-
<Dropdown
|
|
487
|
-
placeholder="Controlado"
|
|
488
|
-
open={open}
|
|
489
|
-
onOpenChange={setOpen}
|
|
490
|
-
items={[
|
|
491
|
-
{ children: 'Cuenta' },
|
|
492
|
-
{ children: 'Configuración' },
|
|
493
|
-
{ children: 'Cerrar sesión' },
|
|
494
|
-
]}
|
|
495
|
-
/>
|
|
496
|
-
<button
|
|
497
|
-
onClick={() => setOpen(!open)}
|
|
498
|
-
className="px-4 py-2 bg-primary-custom-600 dark:bg-dark-bg-inverse text-white rounded-md text-sm font-bold"
|
|
499
|
-
>
|
|
500
|
-
Alternar Dropdown
|
|
501
|
-
</button>
|
|
502
|
-
</div>
|
|
503
|
-
<p className="text-xs text-gray-500 dark:text-gray-300">
|
|
504
|
-
Estado: {open ? 'Abierto' : 'Cerrado'}
|
|
505
|
-
</p>
|
|
506
|
-
</div>
|
|
507
|
-
);
|
|
508
|
-
},
|
|
509
|
-
};
|
|
510
|
-
|
|
511
|
-
// ============================================
|
|
512
|
-
// 7. WITH CALLBACKS
|
|
513
|
-
// ============================================
|
|
514
|
-
export const ConCallbacks: Story = {
|
|
515
|
-
args: {
|
|
516
|
-
items: [],
|
|
517
|
-
},
|
|
518
|
-
render: () => {
|
|
519
|
-
const [lastAction, setLastAction] = React.useState('Ninguna');
|
|
520
|
-
|
|
521
|
-
return (
|
|
522
|
-
<div className="space-y-4 p-6">
|
|
523
|
-
<h3 className="text-sm font-bold text-gray-700 dark:text-white">
|
|
524
|
-
Con Callbacks
|
|
525
|
-
</h3>
|
|
526
|
-
<Dropdown
|
|
527
|
-
placeholder="Acciones"
|
|
528
|
-
onOpenChange={(open) => setLastAction(open ? 'Abierto' : 'Cerrado')}
|
|
529
|
-
items={[
|
|
530
|
-
{
|
|
531
|
-
children: 'Editar',
|
|
532
|
-
onClick: () => setLastAction('Editar clickeado'),
|
|
533
|
-
},
|
|
534
|
-
{
|
|
535
|
-
children: 'Duplicar',
|
|
536
|
-
onClick: () => setLastAction('Duplicar clickeado'),
|
|
537
|
-
},
|
|
538
|
-
{
|
|
539
|
-
children: 'Eliminar',
|
|
540
|
-
onClick: () => setLastAction('Eliminar clickeado'),
|
|
541
|
-
},
|
|
542
|
-
]}
|
|
543
|
-
/>
|
|
544
|
-
<div className="p-4 bg-gray-100 dark:bg-gray-800 rounded-lg">
|
|
545
|
-
<p className="text-sm text-gray-700 dark:text-white">
|
|
546
|
-
Última acción: <strong>{lastAction}</strong>
|
|
547
|
-
</p>
|
|
548
|
-
</div>
|
|
549
|
-
</div>
|
|
550
|
-
);
|
|
551
|
-
},
|
|
552
|
-
};
|