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,179 +1,179 @@
|
|
|
1
|
-
# POSProductCard
|
|
2
|
-
|
|
3
|
-
Card de producto especializado para sistemas de punto de venta (POS). Muestra información de producto con imagen, nombre, precio y botón de agregar.
|
|
4
|
-
|
|
5
|
-
## Características
|
|
6
|
-
|
|
7
|
-
- Imagen de producto con aspect ratio fijo (146x88px)
|
|
8
|
-
- Nombre del producto (Label Small - 14px Bold)
|
|
9
|
-
- Precio con tipografía destacada (Heading Small - 24px Bold, tracking-tighter)
|
|
10
|
-
- **Botón "Agregar" reutiliza el componente Button del sistema**
|
|
11
|
-
- 3 estados: enabled, active, disabled
|
|
12
|
-
- **Soporte completo de dark mode pixel-perfect**
|
|
13
|
-
- Focus rings adaptativos para accesibilidad
|
|
14
|
-
- Transiciones suaves
|
|
15
|
-
|
|
16
|
-
## Uso Básico
|
|
17
|
-
|
|
18
|
-
```tsx
|
|
19
|
-
import { POSProductCard } from './components/POSProductCard';
|
|
20
|
-
|
|
21
|
-
// Card normal
|
|
22
|
-
<POSProductCard
|
|
23
|
-
image="/images/ensalada.jpg"
|
|
24
|
-
productName="Ensalada Caprese"
|
|
25
|
-
price="$ 40.000"
|
|
26
|
-
onAddClick={() => console.log('Producto agregado')}
|
|
27
|
-
/>
|
|
28
|
-
|
|
29
|
-
// Card activo/seleccionado
|
|
30
|
-
<POSProductCard
|
|
31
|
-
image="/images/ensalada.jpg"
|
|
32
|
-
productName="Ensalada Caprese"
|
|
33
|
-
price="$ 40.000"
|
|
34
|
-
active={true}
|
|
35
|
-
/>
|
|
36
|
-
|
|
37
|
-
// Card deshabilitado
|
|
38
|
-
<POSProductCard
|
|
39
|
-
image="/images/ensalada.jpg"
|
|
40
|
-
productName="Ensalada Caprese"
|
|
41
|
-
price="$ 40.000"
|
|
42
|
-
disabled={true}
|
|
43
|
-
/>
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## Props
|
|
47
|
-
|
|
48
|
-
| Prop | Tipo | Default | Descripción |
|
|
49
|
-
|------|------|---------|-------------|
|
|
50
|
-
| `image` | `string` | - | URL de la imagen del producto |
|
|
51
|
-
| `productName` | `string` | - | Nombre del producto |
|
|
52
|
-
| `price` | `string` | - | Precio formateado (ej: "$ 40.000") |
|
|
53
|
-
| `buttonText` | `string` | "Agregar" | Texto del botón de acción |
|
|
54
|
-
| `active` | `boolean` | `false` | Estado activo/seleccionado |
|
|
55
|
-
| `disabled` | `boolean` | `false` | Estado deshabilitado |
|
|
56
|
-
| `onAddClick` | `function` | - | Handler del clic en botón |
|
|
57
|
-
| `onCardClick` | `function` | - | Handler del clic en card |
|
|
58
|
-
| `className` | `string` | - | Clases CSS adicionales |
|
|
59
|
-
| `ariaLabel` | `string` | - | Label de accesibilidad |
|
|
60
|
-
|
|
61
|
-
## Estados y Colores
|
|
62
|
-
|
|
63
|
-
### Enabled (Normal)
|
|
64
|
-
|
|
65
|
-
| Elemento | Light Mode | Dark Mode |
|
|
66
|
-
|----------|------------|-----------|
|
|
67
|
-
| Fondo card | `#ffffff` | `#18181b` |
|
|
68
|
-
| Texto | `#18181b` | `#f4f4f5` |
|
|
69
|
-
|
|
70
|
-
### Active (Seleccionado)
|
|
71
|
-
|
|
72
|
-
| Elemento | Light Mode | Dark Mode |
|
|
73
|
-
|----------|------------|-----------|
|
|
74
|
-
| Fondo card | `#dbeefe` | `#112d57` |
|
|
75
|
-
| Texto | `#0e79fd` | `#93d1fd` |
|
|
76
|
-
|
|
77
|
-
### Disabled
|
|
78
|
-
|
|
79
|
-
- Opacidad reducida (55%)
|
|
80
|
-
- No interactivo
|
|
81
|
-
- Para productos no disponibles
|
|
82
|
-
|
|
83
|
-
### Botón "Agregar" (Dark Mode Invertido)
|
|
84
|
-
|
|
85
|
-
El botón invierte sus colores en dark mode según especificación de Figma:
|
|
86
|
-
|
|
87
|
-
| Elemento | Light Mode | Dark Mode |
|
|
88
|
-
|----------|------------|-----------|
|
|
89
|
-
| Fondo | `#0e79fd` (azul) | `#bfe2fe` (celeste claro) |
|
|
90
|
-
| Texto | `#eff8ff` (blanco) | `#0e79fd` (azul) |
|
|
91
|
-
| Borde | `#3c9bf6` | `#93d1fd` |
|
|
92
|
-
|
|
93
|
-
## Especificaciones de Figma
|
|
94
|
-
|
|
95
|
-
| Propiedad | Valor |
|
|
96
|
-
|-----------|-------|
|
|
97
|
-
| **Tamaño** | 170 x 212px |
|
|
98
|
-
| **Padding** | 12px (p-3) |
|
|
99
|
-
| **Gap** | 8px (gap-2) |
|
|
100
|
-
| **Border Radius** | 8px (rounded-lg) |
|
|
101
|
-
| **Imagen** | 146 x 88px |
|
|
102
|
-
| **Tipografía nombre** | Label Small (14px Bold) |
|
|
103
|
-
| **Tipografía precio** | Heading Small (24px Bold, tracking-tighter) |
|
|
104
|
-
| **Botón** | Button default size xs (reutilizado) |
|
|
105
|
-
|
|
106
|
-
## Reutilización del Componente Button
|
|
107
|
-
|
|
108
|
-
El botón "Agregar" **reutiliza el componente Button existente** del sistema. Esto garantiza:
|
|
109
|
-
|
|
110
|
-
- Consistencia visual con el resto del sistema
|
|
111
|
-
- Mantenimiento centralizado de estilos
|
|
112
|
-
- Soporte automático de dark mode
|
|
113
|
-
- Focus rings y accesibilidad heredados
|
|
114
|
-
|
|
115
|
-
```tsx
|
|
116
|
-
<Button
|
|
117
|
-
type="default"
|
|
118
|
-
size="xs"
|
|
119
|
-
leftIcon={<PlusIcon />}
|
|
120
|
-
onClick={handleButtonClick}
|
|
121
|
-
disabled={disabled}
|
|
122
|
-
fullWidth
|
|
123
|
-
>
|
|
124
|
-
{buttonText}
|
|
125
|
-
</Button>
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Tokens de Tailwind Utilizados
|
|
129
|
-
|
|
130
|
-
### Card
|
|
131
|
-
|
|
132
|
-
```js
|
|
133
|
-
// Card - Light Mode
|
|
134
|
-
'bg-white' // Fondo enabled
|
|
135
|
-
'primary-custom-100' // Fondo active (#dbeefe)
|
|
136
|
-
'content-primary' // Texto enabled (#18181b)
|
|
137
|
-
'primary-custom-600' // Texto active (#0e79fd)
|
|
138
|
-
|
|
139
|
-
// Card - Dark Mode
|
|
140
|
-
'dark-bg-primary' // Fondo enabled (#18181b)
|
|
141
|
-
'dark-bg-custom' // Fondo active (#112d57)
|
|
142
|
-
'dark-content-primary' // Texto enabled (#f4f4f5)
|
|
143
|
-
'dark-content-custom' // Texto active (#93d1fd)
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### Botón (Dark Mode Invertido)
|
|
147
|
-
|
|
148
|
-
```js
|
|
149
|
-
// Botón - Light Mode
|
|
150
|
-
'bg-primary-custom-600' // Fondo (#0e79fd)
|
|
151
|
-
'text-primary-inverse-content' // Texto (#eff8ff)
|
|
152
|
-
'border-primary-inverse-border' // Borde (#3c9bf6)
|
|
153
|
-
|
|
154
|
-
// Botón - Dark Mode (invertido)
|
|
155
|
-
'dark:bg-dark-bg-inverse' // Fondo (#bfe2fe)
|
|
156
|
-
'dark:text-dark-content-inverse' // Texto (#0e79fd)
|
|
157
|
-
'dark:border-dark-border-inverse' // Borde (#93d1fd)
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## Archivos
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
POSProductCard/
|
|
164
|
-
├── POSProductCard.tsx # Componente principal
|
|
165
|
-
├── POSProductCard.types.ts # Tipos TypeScript
|
|
166
|
-
├── POSProductCard.stories.tsx # Stories de Storybook
|
|
167
|
-
├── icons.tsx # Icono Plus
|
|
168
|
-
├── index.ts # Exports
|
|
169
|
-
└── README.md # Esta documentación
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
## Referencias
|
|
173
|
-
|
|
174
|
-
- [Figma: POS Product Card](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336)
|
|
175
|
-
- [src/components/Button](../Button) - Componente Button reutilizado
|
|
176
|
-
- [docs/colors.md](../../docs/colors.md) - Sistema de colores
|
|
177
|
-
- [docs/typography.md](../../docs/typography.md) - Tipografía
|
|
178
|
-
- [docs/spacing.md](../../docs/spacing.md) - Espaciado
|
|
179
|
-
- [docs/shadows.md](../../docs/shadows.md) - Sombras
|
|
1
|
+
# POSProductCard
|
|
2
|
+
|
|
3
|
+
Card de producto especializado para sistemas de punto de venta (POS). Muestra información de producto con imagen, nombre, precio y botón de agregar.
|
|
4
|
+
|
|
5
|
+
## Características
|
|
6
|
+
|
|
7
|
+
- Imagen de producto con aspect ratio fijo (146x88px)
|
|
8
|
+
- Nombre del producto (Label Small - 14px Bold)
|
|
9
|
+
- Precio con tipografía destacada (Heading Small - 24px Bold, tracking-tighter)
|
|
10
|
+
- **Botón "Agregar" reutiliza el componente Button del sistema**
|
|
11
|
+
- 3 estados: enabled, active, disabled
|
|
12
|
+
- **Soporte completo de dark mode pixel-perfect**
|
|
13
|
+
- Focus rings adaptativos para accesibilidad
|
|
14
|
+
- Transiciones suaves
|
|
15
|
+
|
|
16
|
+
## Uso Básico
|
|
17
|
+
|
|
18
|
+
```tsx
|
|
19
|
+
import { POSProductCard } from './components/POSProductCard';
|
|
20
|
+
|
|
21
|
+
// Card normal
|
|
22
|
+
<POSProductCard
|
|
23
|
+
image="/images/ensalada.jpg"
|
|
24
|
+
productName="Ensalada Caprese"
|
|
25
|
+
price="$ 40.000"
|
|
26
|
+
onAddClick={() => console.log('Producto agregado')}
|
|
27
|
+
/>
|
|
28
|
+
|
|
29
|
+
// Card activo/seleccionado
|
|
30
|
+
<POSProductCard
|
|
31
|
+
image="/images/ensalada.jpg"
|
|
32
|
+
productName="Ensalada Caprese"
|
|
33
|
+
price="$ 40.000"
|
|
34
|
+
active={true}
|
|
35
|
+
/>
|
|
36
|
+
|
|
37
|
+
// Card deshabilitado
|
|
38
|
+
<POSProductCard
|
|
39
|
+
image="/images/ensalada.jpg"
|
|
40
|
+
productName="Ensalada Caprese"
|
|
41
|
+
price="$ 40.000"
|
|
42
|
+
disabled={true}
|
|
43
|
+
/>
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Props
|
|
47
|
+
|
|
48
|
+
| Prop | Tipo | Default | Descripción |
|
|
49
|
+
|------|------|---------|-------------|
|
|
50
|
+
| `image` | `string` | - | URL de la imagen del producto |
|
|
51
|
+
| `productName` | `string` | - | Nombre del producto |
|
|
52
|
+
| `price` | `string` | - | Precio formateado (ej: "$ 40.000") |
|
|
53
|
+
| `buttonText` | `string` | "Agregar" | Texto del botón de acción |
|
|
54
|
+
| `active` | `boolean` | `false` | Estado activo/seleccionado |
|
|
55
|
+
| `disabled` | `boolean` | `false` | Estado deshabilitado |
|
|
56
|
+
| `onAddClick` | `function` | - | Handler del clic en botón |
|
|
57
|
+
| `onCardClick` | `function` | - | Handler del clic en card |
|
|
58
|
+
| `className` | `string` | - | Clases CSS adicionales |
|
|
59
|
+
| `ariaLabel` | `string` | - | Label de accesibilidad |
|
|
60
|
+
|
|
61
|
+
## Estados y Colores
|
|
62
|
+
|
|
63
|
+
### Enabled (Normal)
|
|
64
|
+
|
|
65
|
+
| Elemento | Light Mode | Dark Mode |
|
|
66
|
+
|----------|------------|-----------|
|
|
67
|
+
| Fondo card | `#ffffff` | `#18181b` |
|
|
68
|
+
| Texto | `#18181b` | `#f4f4f5` |
|
|
69
|
+
|
|
70
|
+
### Active (Seleccionado)
|
|
71
|
+
|
|
72
|
+
| Elemento | Light Mode | Dark Mode |
|
|
73
|
+
|----------|------------|-----------|
|
|
74
|
+
| Fondo card | `#dbeefe` | `#112d57` |
|
|
75
|
+
| Texto | `#0e79fd` | `#93d1fd` |
|
|
76
|
+
|
|
77
|
+
### Disabled
|
|
78
|
+
|
|
79
|
+
- Opacidad reducida (55%)
|
|
80
|
+
- No interactivo
|
|
81
|
+
- Para productos no disponibles
|
|
82
|
+
|
|
83
|
+
### Botón "Agregar" (Dark Mode Invertido)
|
|
84
|
+
|
|
85
|
+
El botón invierte sus colores en dark mode según especificación de Figma:
|
|
86
|
+
|
|
87
|
+
| Elemento | Light Mode | Dark Mode |
|
|
88
|
+
|----------|------------|-----------|
|
|
89
|
+
| Fondo | `#0e79fd` (azul) | `#bfe2fe` (celeste claro) |
|
|
90
|
+
| Texto | `#eff8ff` (blanco) | `#0e79fd` (azul) |
|
|
91
|
+
| Borde | `#3c9bf6` | `#93d1fd` |
|
|
92
|
+
|
|
93
|
+
## Especificaciones de Figma
|
|
94
|
+
|
|
95
|
+
| Propiedad | Valor |
|
|
96
|
+
|-----------|-------|
|
|
97
|
+
| **Tamaño** | 170 x 212px |
|
|
98
|
+
| **Padding** | 12px (p-3) |
|
|
99
|
+
| **Gap** | 8px (gap-2) |
|
|
100
|
+
| **Border Radius** | 8px (rounded-lg) |
|
|
101
|
+
| **Imagen** | 146 x 88px |
|
|
102
|
+
| **Tipografía nombre** | Label Small (14px Bold) |
|
|
103
|
+
| **Tipografía precio** | Heading Small (24px Bold, tracking-tighter) |
|
|
104
|
+
| **Botón** | Button default size xs (reutilizado) |
|
|
105
|
+
|
|
106
|
+
## Reutilización del Componente Button
|
|
107
|
+
|
|
108
|
+
El botón "Agregar" **reutiliza el componente Button existente** del sistema. Esto garantiza:
|
|
109
|
+
|
|
110
|
+
- Consistencia visual con el resto del sistema
|
|
111
|
+
- Mantenimiento centralizado de estilos
|
|
112
|
+
- Soporte automático de dark mode
|
|
113
|
+
- Focus rings y accesibilidad heredados
|
|
114
|
+
|
|
115
|
+
```tsx
|
|
116
|
+
<Button
|
|
117
|
+
type="default"
|
|
118
|
+
size="xs"
|
|
119
|
+
leftIcon={<PlusIcon />}
|
|
120
|
+
onClick={handleButtonClick}
|
|
121
|
+
disabled={disabled}
|
|
122
|
+
fullWidth
|
|
123
|
+
>
|
|
124
|
+
{buttonText}
|
|
125
|
+
</Button>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Tokens de Tailwind Utilizados
|
|
129
|
+
|
|
130
|
+
### Card
|
|
131
|
+
|
|
132
|
+
```js
|
|
133
|
+
// Card - Light Mode
|
|
134
|
+
'bg-white' // Fondo enabled
|
|
135
|
+
'primary-custom-100' // Fondo active (#dbeefe)
|
|
136
|
+
'content-primary' // Texto enabled (#18181b)
|
|
137
|
+
'primary-custom-600' // Texto active (#0e79fd)
|
|
138
|
+
|
|
139
|
+
// Card - Dark Mode
|
|
140
|
+
'dark-bg-primary' // Fondo enabled (#18181b)
|
|
141
|
+
'dark-bg-custom' // Fondo active (#112d57)
|
|
142
|
+
'dark-content-primary' // Texto enabled (#f4f4f5)
|
|
143
|
+
'dark-content-custom' // Texto active (#93d1fd)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Botón (Dark Mode Invertido)
|
|
147
|
+
|
|
148
|
+
```js
|
|
149
|
+
// Botón - Light Mode
|
|
150
|
+
'bg-primary-custom-600' // Fondo (#0e79fd)
|
|
151
|
+
'text-primary-inverse-content' // Texto (#eff8ff)
|
|
152
|
+
'border-primary-inverse-border' // Borde (#3c9bf6)
|
|
153
|
+
|
|
154
|
+
// Botón - Dark Mode (invertido)
|
|
155
|
+
'dark:bg-dark-bg-inverse' // Fondo (#bfe2fe)
|
|
156
|
+
'dark:text-dark-content-inverse' // Texto (#0e79fd)
|
|
157
|
+
'dark:border-dark-border-inverse' // Borde (#93d1fd)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Archivos
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
POSProductCard/
|
|
164
|
+
├── POSProductCard.tsx # Componente principal
|
|
165
|
+
├── POSProductCard.types.ts # Tipos TypeScript
|
|
166
|
+
├── POSProductCard.stories.tsx # Stories de Storybook
|
|
167
|
+
├── icons.tsx # Icono Plus
|
|
168
|
+
├── index.ts # Exports
|
|
169
|
+
└── README.md # Esta documentación
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Referencias
|
|
173
|
+
|
|
174
|
+
- [Figma: POS Product Card](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4368-31336)
|
|
175
|
+
- [src/components/Button](../Button) - Componente Button reutilizado
|
|
176
|
+
- [docs/colors.md](../../docs/colors.md) - Sistema de colores
|
|
177
|
+
- [docs/typography.md](../../docs/typography.md) - Tipografía
|
|
178
|
+
- [docs/spacing.md](../../docs/spacing.md) - Espaciado
|
|
179
|
+
- [docs/shadows.md](../../docs/shadows.md) - Sombras
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Icono Plus (heroicons-micro/plus)
|
|
5
|
-
* Usado en el botón "Agregar" del POSProductCard
|
|
6
|
-
* Tamaño: 16x16px según especificación de Figma
|
|
7
|
-
*/
|
|
8
|
-
export const PlusIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
9
|
-
<svg
|
|
10
|
-
width="16"
|
|
11
|
-
height="16"
|
|
12
|
-
viewBox="0 0 16 16"
|
|
13
|
-
fill="none"
|
|
14
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
15
|
-
className={className}
|
|
16
|
-
aria-hidden="true"
|
|
17
|
-
>
|
|
18
|
-
<path
|
|
19
|
-
d="M8 3V13M3 8H13"
|
|
20
|
-
stroke="currentColor"
|
|
21
|
-
strokeWidth="1.5"
|
|
22
|
-
strokeLinecap="round"
|
|
23
|
-
strokeLinejoin="round"
|
|
24
|
-
/>
|
|
25
|
-
</svg>
|
|
26
|
-
);
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Icono Plus (heroicons-micro/plus)
|
|
5
|
+
* Usado en el botón "Agregar" del POSProductCard
|
|
6
|
+
* Tamaño: 16x16px según especificación de Figma
|
|
7
|
+
*/
|
|
8
|
+
export const PlusIcon: React.FC<{ className?: string }> = ({ className = '' }) => (
|
|
9
|
+
<svg
|
|
10
|
+
width="16"
|
|
11
|
+
height="16"
|
|
12
|
+
viewBox="0 0 16 16"
|
|
13
|
+
fill="none"
|
|
14
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
15
|
+
className={className}
|
|
16
|
+
aria-hidden="true"
|
|
17
|
+
>
|
|
18
|
+
<path
|
|
19
|
+
d="M8 3V13M3 8H13"
|
|
20
|
+
stroke="currentColor"
|
|
21
|
+
strokeWidth="1.5"
|
|
22
|
+
strokeLinecap="round"
|
|
23
|
+
strokeLinejoin="round"
|
|
24
|
+
/>
|
|
25
|
+
</svg>
|
|
26
|
+
);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { POSProductCard } from './POSProductCard';
|
|
2
|
-
export type { POSProductCardProps } from './POSProductCard.types';
|
|
1
|
+
export { POSProductCard } from './POSProductCard';
|
|
2
|
+
export type { POSProductCardProps } from './POSProductCard.types';
|