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,50 +1,25 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
ChevronUpDownIcon as HeroChevronUpDown,
|
|
4
|
+
CheckIcon as HeroCheck
|
|
5
|
+
} from '@heroicons/react/24/outline';
|
|
2
6
|
|
|
3
7
|
/**
|
|
4
8
|
* Icono ChevronUpDown para el trigger del Select
|
|
5
|
-
* Heroicons
|
|
9
|
+
* Basado en Heroicons 24/outline (24x24px)
|
|
10
|
+
*
|
|
11
|
+
* @see https://heroicons.com/
|
|
6
12
|
*/
|
|
7
|
-
export const ChevronUpDownIcon: React.FC<{ className?: string }> = ({ className = '' }) =>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
className={className}
|
|
11
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
12
|
-
viewBox="0 0 16 16"
|
|
13
|
-
fill="currentColor"
|
|
14
|
-
aria-hidden="true"
|
|
15
|
-
>
|
|
16
|
-
<path
|
|
17
|
-
fillRule="evenodd"
|
|
18
|
-
d="M11.78 9.78a.75.75 0 0 1-1.06 0L8 7.06 5.28 9.78a.75.75 0 0 1-1.06-1.06l3.25-3.25a.75.75 0 0 1 1.06 0l3.25 3.25a.75.75 0 0 1 0 1.06Z"
|
|
19
|
-
clipRule="evenodd"
|
|
20
|
-
/>
|
|
21
|
-
<path
|
|
22
|
-
fillRule="evenodd"
|
|
23
|
-
d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z"
|
|
24
|
-
clipRule="evenodd"
|
|
25
|
-
/>
|
|
26
|
-
</svg>
|
|
27
|
-
);
|
|
28
|
-
};
|
|
13
|
+
export const ChevronUpDownIcon: React.FC<{ className?: string }> = ({ className = 'size-5' }) => (
|
|
14
|
+
<HeroChevronUpDown className={className} aria-hidden="true" />
|
|
15
|
+
);
|
|
29
16
|
|
|
30
17
|
/**
|
|
31
18
|
* Icono Check para los items seleccionados del menu
|
|
32
|
-
* Heroicons
|
|
19
|
+
* Basado en Heroicons 24/outline (24x24px)
|
|
20
|
+
*
|
|
21
|
+
* @see https://heroicons.com/
|
|
33
22
|
*/
|
|
34
|
-
export const CheckIcon: React.FC<{ className?: string }> = ({ className = '' }) =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
className={className}
|
|
38
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
39
|
-
viewBox="0 0 16 16"
|
|
40
|
-
fill="currentColor"
|
|
41
|
-
aria-hidden="true"
|
|
42
|
-
>
|
|
43
|
-
<path
|
|
44
|
-
fillRule="evenodd"
|
|
45
|
-
d="M12.416 3.376a.75.75 0 0 1 .208 1.04l-5 7.5a.75.75 0 0 1-1.154.114l-3-3a.75.75 0 0 1 1.06-1.06l2.353 2.353 4.493-6.74a.75.75 0 0 1 1.04-.207Z"
|
|
46
|
-
clipRule="evenodd"
|
|
47
|
-
/>
|
|
48
|
-
</svg>
|
|
49
|
-
);
|
|
50
|
-
};
|
|
23
|
+
export const CheckIcon: React.FC<{ className?: string }> = ({ className = 'size-4' }) => (
|
|
24
|
+
<HeroCheck className={className} aria-hidden="true" />
|
|
25
|
+
);
|
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { SignUpView } from './SignUpView';
|
|
3
|
-
|
|
4
|
-
const meta = {
|
|
5
|
-
title: 'Siesa UI Kit/SignUpView',
|
|
6
|
-
component: SignUpView,
|
|
7
|
-
parameters: {
|
|
8
|
-
layout: 'fullscreen',
|
|
9
|
-
docs: {
|
|
10
|
-
description: {
|
|
11
|
-
component: 'Vista completa de registro con formulario para crear una nueva cuenta. Incluye campos de nombre, email y contraseña, botón de registro, enlace para iniciar sesión, y aceptación de términos y condiciones.',
|
|
12
|
-
},
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
tags: ['autodocs'],
|
|
16
|
-
argTypes: {
|
|
17
|
-
onSubmit: {
|
|
18
|
-
action: 'submitted',
|
|
19
|
-
description: 'Handler para el submit del formulario de registro',
|
|
20
|
-
},
|
|
21
|
-
onSignIn: {
|
|
22
|
-
action: 'signInClicked',
|
|
23
|
-
description: 'Handler para el click en "Ya tengo una cuenta"',
|
|
24
|
-
},
|
|
25
|
-
onTermsClick: {
|
|
26
|
-
action: 'termsClicked',
|
|
27
|
-
description: 'Handler para el click en "Condiciones de Uso"',
|
|
28
|
-
},
|
|
29
|
-
onPrivacyClick: {
|
|
30
|
-
action: 'privacyClicked',
|
|
31
|
-
description: 'Handler para el click en "Políticas de Privacidad"',
|
|
32
|
-
},
|
|
33
|
-
isLoading: {
|
|
34
|
-
control: 'boolean',
|
|
35
|
-
description: 'Estado de carga del botón de submit',
|
|
36
|
-
},
|
|
37
|
-
errorMessage: {
|
|
38
|
-
control: 'text',
|
|
39
|
-
description: 'Mensaje de error general para mostrar en el formulario',
|
|
40
|
-
},
|
|
41
|
-
showBackground: {
|
|
42
|
-
control: 'boolean',
|
|
43
|
-
description: 'Si se muestra el fondo decorativo con imagen',
|
|
44
|
-
},
|
|
45
|
-
variant: {
|
|
46
|
-
control: 'select',
|
|
47
|
-
options: ['responsive', 'mobile', 'desktop'],
|
|
48
|
-
description: 'Variante de visualización',
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
} satisfies Meta<typeof SignUpView>;
|
|
52
|
-
|
|
53
|
-
export default meta;
|
|
54
|
-
type Story = StoryObj<typeof meta>;
|
|
55
|
-
|
|
56
|
-
// ============================================
|
|
57
|
-
// 1. DESKTOP (DEFAULT)
|
|
58
|
-
// ============================================
|
|
59
|
-
export const Desktop: Story = {
|
|
60
|
-
render: () => (
|
|
61
|
-
<div className="min-h-screen w-full">
|
|
62
|
-
<SignUpView
|
|
63
|
-
onSubmit={(name, email, password) => {
|
|
64
|
-
console.log('Sign up:', { name, email, password });
|
|
65
|
-
}}
|
|
66
|
-
onSignIn={() => console.log('Go to sign in')}
|
|
67
|
-
onTermsClick={() => console.log('View terms')}
|
|
68
|
-
onPrivacyClick={() => console.log('View privacy')}
|
|
69
|
-
/>
|
|
70
|
-
</div>
|
|
71
|
-
),
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
// ============================================
|
|
75
|
-
// 2. LOADING STATE
|
|
76
|
-
// ============================================
|
|
77
|
-
export const Loading: Story = {
|
|
78
|
-
render: () => (
|
|
79
|
-
<div className="min-h-screen w-full">
|
|
80
|
-
<SignUpView
|
|
81
|
-
isLoading={true}
|
|
82
|
-
onSubmit={(name, email, password) => {
|
|
83
|
-
console.log('Sign up:', { name, email, password });
|
|
84
|
-
}}
|
|
85
|
-
onSignIn={() => console.log('Go to sign in')}
|
|
86
|
-
onTermsClick={() => console.log('View terms')}
|
|
87
|
-
onPrivacyClick={() => console.log('View privacy')}
|
|
88
|
-
/>
|
|
89
|
-
</div>
|
|
90
|
-
),
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
// ============================================
|
|
94
|
-
// 3. WITH ERROR
|
|
95
|
-
// ============================================
|
|
96
|
-
export const WithError: Story = {
|
|
97
|
-
render: () => (
|
|
98
|
-
<div className="min-h-screen w-full">
|
|
99
|
-
<SignUpView
|
|
100
|
-
errorMessage="El email ya está registrado. Por favor usa otro email o inicia sesión."
|
|
101
|
-
onSubmit={(name, email, password) => {
|
|
102
|
-
console.log('Sign up:', { name, email, password });
|
|
103
|
-
}}
|
|
104
|
-
onSignIn={() => console.log('Go to sign in')}
|
|
105
|
-
onTermsClick={() => console.log('View terms')}
|
|
106
|
-
onPrivacyClick={() => console.log('View privacy')}
|
|
107
|
-
/>
|
|
108
|
-
</div>
|
|
109
|
-
),
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
// ============================================
|
|
113
|
-
// 4. WITHOUT BACKGROUND
|
|
114
|
-
// ============================================
|
|
115
|
-
export const WithoutBackground: Story = {
|
|
116
|
-
render: () => (
|
|
117
|
-
<div className="min-h-screen w-full bg-gray-100 dark:bg-gray-900">
|
|
118
|
-
<SignUpView
|
|
119
|
-
showBackground={false}
|
|
120
|
-
onSubmit={(name, email, password) => {
|
|
121
|
-
console.log('Sign up:', { name, email, password });
|
|
122
|
-
}}
|
|
123
|
-
onSignIn={() => console.log('Go to sign in')}
|
|
124
|
-
onTermsClick={() => console.log('View terms')}
|
|
125
|
-
onPrivacyClick={() => console.log('View privacy')}
|
|
126
|
-
/>
|
|
127
|
-
</div>
|
|
128
|
-
),
|
|
129
|
-
};
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
+
import { SignUpView } from './SignUpView';
|
|
3
|
+
|
|
4
|
+
const meta = {
|
|
5
|
+
title: 'Siesa UI Kit/SignUpView',
|
|
6
|
+
component: SignUpView,
|
|
7
|
+
parameters: {
|
|
8
|
+
layout: 'fullscreen',
|
|
9
|
+
docs: {
|
|
10
|
+
description: {
|
|
11
|
+
component: 'Vista completa de registro con formulario para crear una nueva cuenta. Incluye campos de nombre, email y contraseña, botón de registro, enlace para iniciar sesión, y aceptación de términos y condiciones.',
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
tags: ['autodocs'],
|
|
16
|
+
argTypes: {
|
|
17
|
+
onSubmit: {
|
|
18
|
+
action: 'submitted',
|
|
19
|
+
description: 'Handler para el submit del formulario de registro',
|
|
20
|
+
},
|
|
21
|
+
onSignIn: {
|
|
22
|
+
action: 'signInClicked',
|
|
23
|
+
description: 'Handler para el click en "Ya tengo una cuenta"',
|
|
24
|
+
},
|
|
25
|
+
onTermsClick: {
|
|
26
|
+
action: 'termsClicked',
|
|
27
|
+
description: 'Handler para el click en "Condiciones de Uso"',
|
|
28
|
+
},
|
|
29
|
+
onPrivacyClick: {
|
|
30
|
+
action: 'privacyClicked',
|
|
31
|
+
description: 'Handler para el click en "Políticas de Privacidad"',
|
|
32
|
+
},
|
|
33
|
+
isLoading: {
|
|
34
|
+
control: 'boolean',
|
|
35
|
+
description: 'Estado de carga del botón de submit',
|
|
36
|
+
},
|
|
37
|
+
errorMessage: {
|
|
38
|
+
control: 'text',
|
|
39
|
+
description: 'Mensaje de error general para mostrar en el formulario',
|
|
40
|
+
},
|
|
41
|
+
showBackground: {
|
|
42
|
+
control: 'boolean',
|
|
43
|
+
description: 'Si se muestra el fondo decorativo con imagen',
|
|
44
|
+
},
|
|
45
|
+
variant: {
|
|
46
|
+
control: 'select',
|
|
47
|
+
options: ['responsive', 'mobile', 'desktop'],
|
|
48
|
+
description: 'Variante de visualización',
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
} satisfies Meta<typeof SignUpView>;
|
|
52
|
+
|
|
53
|
+
export default meta;
|
|
54
|
+
type Story = StoryObj<typeof meta>;
|
|
55
|
+
|
|
56
|
+
// ============================================
|
|
57
|
+
// 1. DESKTOP (DEFAULT)
|
|
58
|
+
// ============================================
|
|
59
|
+
export const Desktop: Story = {
|
|
60
|
+
render: () => (
|
|
61
|
+
<div className="min-h-screen w-full">
|
|
62
|
+
<SignUpView
|
|
63
|
+
onSubmit={(name, email, password) => {
|
|
64
|
+
console.log('Sign up:', { name, email, password });
|
|
65
|
+
}}
|
|
66
|
+
onSignIn={() => console.log('Go to sign in')}
|
|
67
|
+
onTermsClick={() => console.log('View terms')}
|
|
68
|
+
onPrivacyClick={() => console.log('View privacy')}
|
|
69
|
+
/>
|
|
70
|
+
</div>
|
|
71
|
+
),
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// ============================================
|
|
75
|
+
// 2. LOADING STATE
|
|
76
|
+
// ============================================
|
|
77
|
+
export const Loading: Story = {
|
|
78
|
+
render: () => (
|
|
79
|
+
<div className="min-h-screen w-full">
|
|
80
|
+
<SignUpView
|
|
81
|
+
isLoading={true}
|
|
82
|
+
onSubmit={(name, email, password) => {
|
|
83
|
+
console.log('Sign up:', { name, email, password });
|
|
84
|
+
}}
|
|
85
|
+
onSignIn={() => console.log('Go to sign in')}
|
|
86
|
+
onTermsClick={() => console.log('View terms')}
|
|
87
|
+
onPrivacyClick={() => console.log('View privacy')}
|
|
88
|
+
/>
|
|
89
|
+
</div>
|
|
90
|
+
),
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
// ============================================
|
|
94
|
+
// 3. WITH ERROR
|
|
95
|
+
// ============================================
|
|
96
|
+
export const WithError: Story = {
|
|
97
|
+
render: () => (
|
|
98
|
+
<div className="min-h-screen w-full">
|
|
99
|
+
<SignUpView
|
|
100
|
+
errorMessage="El email ya está registrado. Por favor usa otro email o inicia sesión."
|
|
101
|
+
onSubmit={(name, email, password) => {
|
|
102
|
+
console.log('Sign up:', { name, email, password });
|
|
103
|
+
}}
|
|
104
|
+
onSignIn={() => console.log('Go to sign in')}
|
|
105
|
+
onTermsClick={() => console.log('View terms')}
|
|
106
|
+
onPrivacyClick={() => console.log('View privacy')}
|
|
107
|
+
/>
|
|
108
|
+
</div>
|
|
109
|
+
),
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
// ============================================
|
|
113
|
+
// 4. WITHOUT BACKGROUND
|
|
114
|
+
// ============================================
|
|
115
|
+
export const WithoutBackground: Story = {
|
|
116
|
+
render: () => (
|
|
117
|
+
<div className="min-h-screen w-full bg-gray-100 dark:bg-gray-900">
|
|
118
|
+
<SignUpView
|
|
119
|
+
showBackground={false}
|
|
120
|
+
onSubmit={(name, email, password) => {
|
|
121
|
+
console.log('Sign up:', { name, email, password });
|
|
122
|
+
}}
|
|
123
|
+
onSignIn={() => console.log('Go to sign in')}
|
|
124
|
+
onTermsClick={() => console.log('View terms')}
|
|
125
|
+
onPrivacyClick={() => console.log('View privacy')}
|
|
126
|
+
/>
|
|
127
|
+
</div>
|
|
128
|
+
),
|
|
129
|
+
};
|