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,531 +0,0 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import { POSLocationButton } from './POSLocationButton';
|
|
3
|
-
|
|
4
|
-
const meta = {
|
|
5
|
-
title: 'Siesa UI Kit/POSLocationButton',
|
|
6
|
-
component: POSLocationButton,
|
|
7
|
-
parameters: {
|
|
8
|
-
layout: 'centered',
|
|
9
|
-
docs: {
|
|
10
|
-
description: {
|
|
11
|
-
component:
|
|
12
|
-
'Botón especializado para punto de venta (POS) que muestra el estado de disponibilidad de una ubicación física (mesa, salón, terraza, etc.) con indicadores visuales claros.',
|
|
13
|
-
},
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
tags: ['autodocs'],
|
|
17
|
-
argTypes: {
|
|
18
|
-
locationName: {
|
|
19
|
-
control: 'text',
|
|
20
|
-
description: 'Nombre de la ubicación (ej: "Antejardín", "Terraza")',
|
|
21
|
-
table: {
|
|
22
|
-
type: { summary: 'string' },
|
|
23
|
-
category: 'Contenido',
|
|
24
|
-
},
|
|
25
|
-
},
|
|
26
|
-
status: {
|
|
27
|
-
control: 'select',
|
|
28
|
-
options: ['available', 'occupied', 'reserved', 'outOfService'],
|
|
29
|
-
description: 'Estado de disponibilidad de la ubicación',
|
|
30
|
-
table: {
|
|
31
|
-
type: { summary: 'POSLocationStatus' },
|
|
32
|
-
category: 'Apariencia',
|
|
33
|
-
defaultValue: { summary: 'available' },
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
state: {
|
|
37
|
-
control: 'select',
|
|
38
|
-
options: ['enabled', 'actived'],
|
|
39
|
-
description: 'Estado visual del botón (enabled = normal, actived = seleccionado)',
|
|
40
|
-
table: {
|
|
41
|
-
type: { summary: 'POSLocationState' },
|
|
42
|
-
category: 'Estado',
|
|
43
|
-
defaultValue: { summary: 'enabled' },
|
|
44
|
-
},
|
|
45
|
-
},
|
|
46
|
-
capacity: {
|
|
47
|
-
control: 'object',
|
|
48
|
-
description: 'Información de capacidad (mesas ocupadas/total)',
|
|
49
|
-
table: {
|
|
50
|
-
type: { summary: 'POSLocationCapacity' },
|
|
51
|
-
category: 'Contenido',
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
disabled: {
|
|
55
|
-
control: 'boolean',
|
|
56
|
-
description: 'Si el botón está deshabilitado',
|
|
57
|
-
table: {
|
|
58
|
-
type: { summary: 'boolean' },
|
|
59
|
-
category: 'Estado',
|
|
60
|
-
defaultValue: { summary: 'false' },
|
|
61
|
-
},
|
|
62
|
-
},
|
|
63
|
-
onClick: {
|
|
64
|
-
action: 'clicked',
|
|
65
|
-
description: 'Función a ejecutar al hacer clic',
|
|
66
|
-
table: {
|
|
67
|
-
type: { summary: '(event: MouseEvent<HTMLButtonElement>) => void' },
|
|
68
|
-
category: 'Comportamiento',
|
|
69
|
-
},
|
|
70
|
-
},
|
|
71
|
-
fullWidth: {
|
|
72
|
-
control: 'boolean',
|
|
73
|
-
description: 'Si el botón ocupa todo el ancho del contenedor padre',
|
|
74
|
-
table: {
|
|
75
|
-
type: { summary: 'boolean' },
|
|
76
|
-
category: 'Apariencia',
|
|
77
|
-
defaultValue: { summary: 'true' },
|
|
78
|
-
},
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
} satisfies Meta<typeof POSLocationButton>;
|
|
82
|
-
|
|
83
|
-
export default meta;
|
|
84
|
-
type Story = StoryObj<typeof meta>;
|
|
85
|
-
|
|
86
|
-
// ============================================
|
|
87
|
-
// 1. PLAYGROUND INTERACTIVO
|
|
88
|
-
// ============================================
|
|
89
|
-
export const Playground: Story = {
|
|
90
|
-
args: {
|
|
91
|
-
locationName: 'Antejardín',
|
|
92
|
-
status: 'available',
|
|
93
|
-
state: 'enabled',
|
|
94
|
-
capacity: { current: 1, total: 8 },
|
|
95
|
-
disabled: false,
|
|
96
|
-
},
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
// ============================================
|
|
100
|
-
// 2. TODOS LOS ESTADOS
|
|
101
|
-
// ============================================
|
|
102
|
-
export const TodosLosEstados: Story = {
|
|
103
|
-
args: {
|
|
104
|
-
locationName: 'Antejardín',
|
|
105
|
-
},
|
|
106
|
-
render: () => (
|
|
107
|
-
<div className="space-y-8 p-6">
|
|
108
|
-
{/* Available */}
|
|
109
|
-
<div>
|
|
110
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
111
|
-
Disponible (Available)
|
|
112
|
-
</h3>
|
|
113
|
-
<div className="flex flex-wrap gap-3">
|
|
114
|
-
<POSLocationButton
|
|
115
|
-
locationName="Antejardín"
|
|
116
|
-
status="available"
|
|
117
|
-
capacity={{ current: 1, total: 8 }}
|
|
118
|
-
/>
|
|
119
|
-
<POSLocationButton
|
|
120
|
-
locationName="Antejardín"
|
|
121
|
-
status="available"
|
|
122
|
-
state="actived"
|
|
123
|
-
capacity={{ current: 1, total: 8 }}
|
|
124
|
-
/>
|
|
125
|
-
</div>
|
|
126
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
127
|
-
Izquierda: Enabled | Derecha: Actived (seleccionado)
|
|
128
|
-
</p>
|
|
129
|
-
</div>
|
|
130
|
-
|
|
131
|
-
{/* Occupied */}
|
|
132
|
-
<div>
|
|
133
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
134
|
-
Ocupada (Occupied)
|
|
135
|
-
</h3>
|
|
136
|
-
<div className="flex flex-wrap gap-3">
|
|
137
|
-
<POSLocationButton
|
|
138
|
-
locationName="Antejardín"
|
|
139
|
-
status="occupied"
|
|
140
|
-
capacity={{ current: 1, total: 8 }}
|
|
141
|
-
/>
|
|
142
|
-
<POSLocationButton
|
|
143
|
-
locationName="Antejardín"
|
|
144
|
-
status="occupied"
|
|
145
|
-
state="actived"
|
|
146
|
-
capacity={{ current: 1, total: 8 }}
|
|
147
|
-
/>
|
|
148
|
-
</div>
|
|
149
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
150
|
-
Izquierda: Enabled | Derecha: Actived (seleccionado)
|
|
151
|
-
</p>
|
|
152
|
-
</div>
|
|
153
|
-
|
|
154
|
-
{/* Reserved */}
|
|
155
|
-
<div>
|
|
156
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
157
|
-
Reservada (Reserved)
|
|
158
|
-
</h3>
|
|
159
|
-
<div className="flex flex-wrap gap-3">
|
|
160
|
-
<POSLocationButton
|
|
161
|
-
locationName="Antejardín"
|
|
162
|
-
status="reserved"
|
|
163
|
-
capacity={{ current: 1, total: 8 }}
|
|
164
|
-
/>
|
|
165
|
-
<POSLocationButton
|
|
166
|
-
locationName="Antejardín"
|
|
167
|
-
status="reserved"
|
|
168
|
-
state="actived"
|
|
169
|
-
capacity={{ current: 1, total: 8 }}
|
|
170
|
-
/>
|
|
171
|
-
</div>
|
|
172
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
173
|
-
Izquierda: Enabled | Derecha: Actived (seleccionado)
|
|
174
|
-
</p>
|
|
175
|
-
</div>
|
|
176
|
-
|
|
177
|
-
{/* Out of Service */}
|
|
178
|
-
<div>
|
|
179
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
180
|
-
Fuera de Servicio (Out of Service)
|
|
181
|
-
</h3>
|
|
182
|
-
<div className="flex flex-wrap gap-3">
|
|
183
|
-
<POSLocationButton
|
|
184
|
-
locationName="Antejardín"
|
|
185
|
-
status="outOfService"
|
|
186
|
-
capacity={{ current: 1, total: 8 }}
|
|
187
|
-
/>
|
|
188
|
-
<POSLocationButton
|
|
189
|
-
locationName="Antejardín"
|
|
190
|
-
status="outOfService"
|
|
191
|
-
state="actived"
|
|
192
|
-
capacity={{ current: 1, total: 8 }}
|
|
193
|
-
/>
|
|
194
|
-
</div>
|
|
195
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
196
|
-
Izquierda: Enabled | Derecha: Actived (seleccionado)
|
|
197
|
-
</p>
|
|
198
|
-
</div>
|
|
199
|
-
|
|
200
|
-
{/* Tips */}
|
|
201
|
-
<div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
|
|
202
|
-
<p className="text-xs text-content-primary dark:text-dark-content-primary">
|
|
203
|
-
<strong>💡 Consejos:</strong>
|
|
204
|
-
<br />• <code className="px-1 bg-white dark:bg-gray-700">
|
|
205
|
-
available
|
|
206
|
-
</code>: Ubicación disponible para asignar
|
|
207
|
-
<br />• <code className="px-1 bg-white dark:bg-gray-700">
|
|
208
|
-
occupied
|
|
209
|
-
</code>: Ubicación actualmente en uso
|
|
210
|
-
<br />• <code className="px-1 bg-white dark:bg-gray-700">
|
|
211
|
-
reserved
|
|
212
|
-
</code>: Ubicación reservada para uso futuro
|
|
213
|
-
<br />• <code className="px-1 bg-white dark:bg-gray-700">
|
|
214
|
-
outOfService
|
|
215
|
-
</code>: Ubicación fuera de servicio temporalmente
|
|
216
|
-
<br />• <code className="px-1 bg-white dark:bg-gray-700">
|
|
217
|
-
actived
|
|
218
|
-
</code>: Estado visual cuando la ubicación está seleccionada en la
|
|
219
|
-
interfaz
|
|
220
|
-
</p>
|
|
221
|
-
</div>
|
|
222
|
-
</div>
|
|
223
|
-
),
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
// ============================================
|
|
227
|
-
// 3. EJEMPLOS DE USO
|
|
228
|
-
// ============================================
|
|
229
|
-
export const EjemplosDeUso: Story = {
|
|
230
|
-
args: {
|
|
231
|
-
locationName: 'Antejardín',
|
|
232
|
-
},
|
|
233
|
-
render: () => (
|
|
234
|
-
<div className="space-y-8 p-6">
|
|
235
|
-
{/* Caso 1: Dashboard de Restaurante */}
|
|
236
|
-
<div>
|
|
237
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
238
|
-
Dashboard de Restaurante
|
|
239
|
-
</h3>
|
|
240
|
-
<div className="grid grid-cols-2 gap-3 max-w-[400px]">
|
|
241
|
-
<POSLocationButton
|
|
242
|
-
locationName="Antejardín"
|
|
243
|
-
status="available"
|
|
244
|
-
capacity={{ current: 1, total: 8 }}
|
|
245
|
-
/>
|
|
246
|
-
<POSLocationButton
|
|
247
|
-
locationName="Terraza"
|
|
248
|
-
status="occupied"
|
|
249
|
-
capacity={{ current: 5, total: 8 }}
|
|
250
|
-
/>
|
|
251
|
-
<POSLocationButton
|
|
252
|
-
locationName="Salón Principal"
|
|
253
|
-
status="reserved"
|
|
254
|
-
capacity={{ current: 3, total: 12 }}
|
|
255
|
-
/>
|
|
256
|
-
<POSLocationButton
|
|
257
|
-
locationName="Bar"
|
|
258
|
-
status="outOfService"
|
|
259
|
-
disabled
|
|
260
|
-
/>
|
|
261
|
-
</div>
|
|
262
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
263
|
-
Vista típica de un sistema POS mostrando el estado de diferentes áreas
|
|
264
|
-
</p>
|
|
265
|
-
</div>
|
|
266
|
-
|
|
267
|
-
{/* Caso 2: Selección Activa */}
|
|
268
|
-
<div>
|
|
269
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
270
|
-
Ubicación Seleccionada
|
|
271
|
-
</h3>
|
|
272
|
-
<div className="flex gap-3">
|
|
273
|
-
<POSLocationButton
|
|
274
|
-
locationName="Terraza"
|
|
275
|
-
status="available"
|
|
276
|
-
capacity={{ current: 2, total: 10 }}
|
|
277
|
-
/>
|
|
278
|
-
<POSLocationButton
|
|
279
|
-
locationName="Salón VIP"
|
|
280
|
-
status="available"
|
|
281
|
-
state="actived"
|
|
282
|
-
capacity={{ current: 1, total: 6 }}
|
|
283
|
-
/>
|
|
284
|
-
</div>
|
|
285
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
286
|
-
El estado <code className="px-1 bg-white dark:bg-gray-700">actived</code>{' '}
|
|
287
|
-
indica que la ubicación está seleccionada actualmente
|
|
288
|
-
</p>
|
|
289
|
-
</div>
|
|
290
|
-
|
|
291
|
-
{/* Caso 3: Sin Información de Capacidad */}
|
|
292
|
-
<div>
|
|
293
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
294
|
-
Sin Información de Capacidad
|
|
295
|
-
</h3>
|
|
296
|
-
<div className="flex gap-3">
|
|
297
|
-
<POSLocationButton locationName="Área de Espera" status="available" />
|
|
298
|
-
<POSLocationButton locationName="Zona Exterior" status="occupied" />
|
|
299
|
-
</div>
|
|
300
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
301
|
-
Si no se proporciona capacidad, solo se muestra el nombre y el estado
|
|
302
|
-
</p>
|
|
303
|
-
</div>
|
|
304
|
-
</div>
|
|
305
|
-
),
|
|
306
|
-
};
|
|
307
|
-
|
|
308
|
-
// ============================================
|
|
309
|
-
// 4. ESTADOS INTERACTIVOS
|
|
310
|
-
// ============================================
|
|
311
|
-
export const EstadosInteractivos: Story = {
|
|
312
|
-
args: {
|
|
313
|
-
locationName: 'Antejardín',
|
|
314
|
-
},
|
|
315
|
-
render: () => (
|
|
316
|
-
<div className="space-y-8 p-6">
|
|
317
|
-
{/* Normal */}
|
|
318
|
-
<div>
|
|
319
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
320
|
-
Estado Normal
|
|
321
|
-
</h3>
|
|
322
|
-
<POSLocationButton
|
|
323
|
-
locationName="Terraza"
|
|
324
|
-
status="available"
|
|
325
|
-
capacity={{ current: 2, total: 10 }}
|
|
326
|
-
/>
|
|
327
|
-
</div>
|
|
328
|
-
|
|
329
|
-
{/* Hover */}
|
|
330
|
-
<div>
|
|
331
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
332
|
-
Hover
|
|
333
|
-
</h3>
|
|
334
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mb-2">
|
|
335
|
-
Pasa el mouse sobre el botón para ver el efecto de sombra
|
|
336
|
-
</p>
|
|
337
|
-
<POSLocationButton
|
|
338
|
-
locationName="Salón Principal"
|
|
339
|
-
status="occupied"
|
|
340
|
-
capacity={{ current: 7, total: 12 }}
|
|
341
|
-
/>
|
|
342
|
-
</div>
|
|
343
|
-
|
|
344
|
-
{/* Disabled */}
|
|
345
|
-
<div>
|
|
346
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
347
|
-
Deshabilitado
|
|
348
|
-
</h3>
|
|
349
|
-
<POSLocationButton
|
|
350
|
-
locationName="Bar"
|
|
351
|
-
status="outOfService"
|
|
352
|
-
capacity={{ current: 0, total: 4 }}
|
|
353
|
-
disabled
|
|
354
|
-
/>
|
|
355
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
356
|
-
El botón deshabilitado tiene opacidad reducida y no es clickeable
|
|
357
|
-
</p>
|
|
358
|
-
</div>
|
|
359
|
-
</div>
|
|
360
|
-
),
|
|
361
|
-
};
|
|
362
|
-
|
|
363
|
-
// ============================================
|
|
364
|
-
// 5. ANCHO FLEXIBLE VS FIJO
|
|
365
|
-
// ============================================
|
|
366
|
-
export const AnchoFlexible: Story = {
|
|
367
|
-
args: {
|
|
368
|
-
locationName: 'Antejardín',
|
|
369
|
-
},
|
|
370
|
-
render: () => (
|
|
371
|
-
<div className="space-y-8 p-6">
|
|
372
|
-
{/* Full Width (default) */}
|
|
373
|
-
<div>
|
|
374
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
375
|
-
Ancho Completo (fullWidth=true) - Por defecto
|
|
376
|
-
</h3>
|
|
377
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mb-2">
|
|
378
|
-
El botón ocupa todo el ancho disponible del contenedor padre
|
|
379
|
-
</p>
|
|
380
|
-
<div className="w-[245px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg">
|
|
381
|
-
<p className="text-xs text-content-tertiary mb-2">Contenedor de 245px:</p>
|
|
382
|
-
<POSLocationButton
|
|
383
|
-
locationName="Antejardín"
|
|
384
|
-
status="available"
|
|
385
|
-
capacity={{ current: 1, total: 8 }}
|
|
386
|
-
fullWidth={true}
|
|
387
|
-
/>
|
|
388
|
-
</div>
|
|
389
|
-
<div className="w-[300px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg mt-4">
|
|
390
|
-
<p className="text-xs text-content-tertiary mb-2">Contenedor de 300px:</p>
|
|
391
|
-
<POSLocationButton
|
|
392
|
-
locationName="Terraza"
|
|
393
|
-
status="occupied"
|
|
394
|
-
capacity={{ current: 5, total: 8 }}
|
|
395
|
-
fullWidth={true}
|
|
396
|
-
/>
|
|
397
|
-
</div>
|
|
398
|
-
</div>
|
|
399
|
-
|
|
400
|
-
{/* Fixed Width */}
|
|
401
|
-
<div>
|
|
402
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
403
|
-
Ancho Fijo (fullWidth=false)
|
|
404
|
-
</h3>
|
|
405
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mb-2">
|
|
406
|
-
El botón tiene un ancho fijo de 189px independiente del contenedor
|
|
407
|
-
</p>
|
|
408
|
-
<div className="w-[400px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg">
|
|
409
|
-
<p className="text-xs text-content-tertiary mb-2">Contenedor de 400px:</p>
|
|
410
|
-
<POSLocationButton
|
|
411
|
-
locationName="Salón VIP"
|
|
412
|
-
status="reserved"
|
|
413
|
-
capacity={{ current: 2, total: 6 }}
|
|
414
|
-
fullWidth={false}
|
|
415
|
-
/>
|
|
416
|
-
</div>
|
|
417
|
-
</div>
|
|
418
|
-
|
|
419
|
-
{/* Comparación lado a lado */}
|
|
420
|
-
<div>
|
|
421
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
422
|
-
Comparación: Full Width vs Fixed Width
|
|
423
|
-
</h3>
|
|
424
|
-
<div className="flex gap-4">
|
|
425
|
-
<div className="w-[200px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg">
|
|
426
|
-
<p className="text-xs text-content-tertiary mb-2">fullWidth=true</p>
|
|
427
|
-
<POSLocationButton
|
|
428
|
-
locationName="Antejardín"
|
|
429
|
-
status="available"
|
|
430
|
-
capacity={{ current: 1, total: 8 }}
|
|
431
|
-
fullWidth={true}
|
|
432
|
-
/>
|
|
433
|
-
</div>
|
|
434
|
-
<div className="w-[200px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg">
|
|
435
|
-
<p className="text-xs text-content-tertiary mb-2">fullWidth=false</p>
|
|
436
|
-
<POSLocationButton
|
|
437
|
-
locationName="Antejardín"
|
|
438
|
-
status="available"
|
|
439
|
-
capacity={{ current: 1, total: 8 }}
|
|
440
|
-
fullWidth={false}
|
|
441
|
-
/>
|
|
442
|
-
</div>
|
|
443
|
-
</div>
|
|
444
|
-
</div>
|
|
445
|
-
|
|
446
|
-
{/* Uso en Sidebar */}
|
|
447
|
-
<div>
|
|
448
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
449
|
-
Uso típico en Sidebar (245px)
|
|
450
|
-
</h3>
|
|
451
|
-
<div className="w-[245px] bg-background-secondary dark:bg-dark-bg-secondary p-4 rounded-lg flex flex-col gap-2">
|
|
452
|
-
<p className="text-xs font-bold text-content-primary dark:text-dark-content-primary mb-2">
|
|
453
|
-
Salones
|
|
454
|
-
</p>
|
|
455
|
-
<POSLocationButton
|
|
456
|
-
locationName="Antejardín"
|
|
457
|
-
status="available"
|
|
458
|
-
state="actived"
|
|
459
|
-
capacity={{ current: 1, total: 8 }}
|
|
460
|
-
/>
|
|
461
|
-
<POSLocationButton
|
|
462
|
-
locationName="Terraza"
|
|
463
|
-
status="occupied"
|
|
464
|
-
capacity={{ current: 5, total: 8 }}
|
|
465
|
-
/>
|
|
466
|
-
<POSLocationButton
|
|
467
|
-
locationName="Salón VIP"
|
|
468
|
-
status="reserved"
|
|
469
|
-
capacity={{ current: 2, total: 6 }}
|
|
470
|
-
/>
|
|
471
|
-
<POSLocationButton
|
|
472
|
-
locationName="Bar"
|
|
473
|
-
status="outOfService"
|
|
474
|
-
capacity={{ current: 0, total: 4 }}
|
|
475
|
-
/>
|
|
476
|
-
</div>
|
|
477
|
-
</div>
|
|
478
|
-
</div>
|
|
479
|
-
),
|
|
480
|
-
};
|
|
481
|
-
|
|
482
|
-
// ============================================
|
|
483
|
-
// 6. VARIANTES DE NOMBRES
|
|
484
|
-
// ============================================
|
|
485
|
-
export const VariantesDeNombres: Story = {
|
|
486
|
-
args: {
|
|
487
|
-
locationName: 'Antejardín',
|
|
488
|
-
},
|
|
489
|
-
render: () => (
|
|
490
|
-
<div className="space-y-8 p-6">
|
|
491
|
-
<h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
|
|
492
|
-
Diferentes Nombres de Ubicación
|
|
493
|
-
</h3>
|
|
494
|
-
<div className="grid grid-cols-2 gap-3 max-w-[400px]">
|
|
495
|
-
<POSLocationButton
|
|
496
|
-
locationName="Antejardín"
|
|
497
|
-
status="available"
|
|
498
|
-
capacity={{ current: 1, total: 8 }}
|
|
499
|
-
/>
|
|
500
|
-
<POSLocationButton
|
|
501
|
-
locationName="Terraza Norte"
|
|
502
|
-
status="available"
|
|
503
|
-
capacity={{ current: 3, total: 10 }}
|
|
504
|
-
/>
|
|
505
|
-
<POSLocationButton
|
|
506
|
-
locationName="Salón VIP"
|
|
507
|
-
status="reserved"
|
|
508
|
-
capacity={{ current: 2, total: 6 }}
|
|
509
|
-
/>
|
|
510
|
-
<POSLocationButton
|
|
511
|
-
locationName="Patio Interior"
|
|
512
|
-
status="occupied"
|
|
513
|
-
capacity={{ current: 5, total: 8 }}
|
|
514
|
-
/>
|
|
515
|
-
<POSLocationButton
|
|
516
|
-
locationName="Bar Principal"
|
|
517
|
-
status="available"
|
|
518
|
-
capacity={{ current: 4, total: 12 }}
|
|
519
|
-
/>
|
|
520
|
-
<POSLocationButton
|
|
521
|
-
locationName="Área Lounge"
|
|
522
|
-
status="reserved"
|
|
523
|
-
capacity={{ current: 2, total: 8 }}
|
|
524
|
-
/>
|
|
525
|
-
</div>
|
|
526
|
-
<p className="text-xs text-content-secondary dark:text-content-secondary mt-2">
|
|
527
|
-
El componente se adapta a nombres de ubicación de diferentes longitudes
|
|
528
|
-
</p>
|
|
529
|
-
</div>
|
|
530
|
-
),
|
|
531
|
-
};
|