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.
Files changed (198) hide show
  1. package/dist/index.cjs +1479 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.js +1479 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +23 -14
  6. package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
  7. package/claude/prompts/component-template.md +0 -121
  8. package/claude/settings.local.json +0 -61
  9. package/docs/border-radius.md +0 -1261
  10. package/docs/colors.md +0 -832
  11. package/docs/dark-mode-guide.md +0 -1426
  12. package/docs/filters.md +0 -1243
  13. package/docs/icons.md +0 -1283
  14. package/docs/shadows.md +0 -1377
  15. package/docs/spacing.md +0 -1684
  16. package/docs/typography.md +0 -1268
  17. package/postcss.config.cjs +0 -6
  18. package/src/App.css +0 -42
  19. package/src/App.tsx +0 -8
  20. package/src/ButtonTest.tsx +0 -147
  21. package/src/assets/fonts/README.md +0 -261
  22. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  23. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  24. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  25. package/src/assets/react.svg +0 -1
  26. package/src/components/Alert/Alert.stories.tsx +0 -332
  27. package/src/components/Alert/Alert.tsx +0 -106
  28. package/src/components/Alert/Alert.types.ts +0 -54
  29. package/src/components/Avatar/Avatar.stories.tsx +0 -494
  30. package/src/components/Avatar/Avatar.tsx +0 -143
  31. package/src/components/Avatar/Avatar.types.ts +0 -53
  32. package/src/components/Badge/Badge.stories.tsx +0 -339
  33. package/src/components/Badge/Badge.tsx +0 -278
  34. package/src/components/Badge/Badge.types.ts +0 -58
  35. package/src/components/Button/Button.stories.tsx +0 -950
  36. package/src/components/Button/Button.tsx +0 -337
  37. package/src/components/Button/Button.types.ts +0 -180
  38. package/src/components/Button/icons.tsx +0 -87
  39. package/src/components/Button/index.ts +0 -3
  40. package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
  41. package/src/components/Checkbox/Checkbox.tsx +0 -208
  42. package/src/components/Checkbox/Checkbox.types.ts +0 -61
  43. package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
  44. package/src/components/DescriptionList/DescriptionList.tsx +0 -96
  45. package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
  46. package/src/components/Divider/Divider.stories.tsx +0 -263
  47. package/src/components/Divider/Divider.tsx +0 -80
  48. package/src/components/Divider/Divider.types.ts +0 -24
  49. package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
  50. package/src/components/Dropdown/Dropdown.tsx +0 -422
  51. package/src/components/Dropdown/Dropdown.types.ts +0 -146
  52. package/src/components/Dropdown/README.md +0 -266
  53. package/src/components/Dropdown/icons.tsx +0 -72
  54. package/src/components/Dropdown/index.ts +0 -8
  55. package/src/components/Input/Input.stories.tsx +0 -583
  56. package/src/components/Input/Input.tsx +0 -204
  57. package/src/components/Input/Input.types.ts +0 -80
  58. package/src/components/Input/icons.tsx +0 -145
  59. package/src/components/Input/index.ts +0 -2
  60. package/src/components/LoginView/LoginView.stories.tsx +0 -148
  61. package/src/components/LoginView/LoginView.tsx +0 -426
  62. package/src/components/LoginView/LoginView.types.ts +0 -52
  63. package/src/components/LoginView/README.md +0 -396
  64. package/src/components/LoginView/icons.tsx +0 -85
  65. package/src/components/LoginView/index.ts +0 -3
  66. package/src/components/Navbar/Navbar.stories.tsx +0 -810
  67. package/src/components/Navbar/Navbar.tsx +0 -755
  68. package/src/components/Navbar/Navbar.types.ts +0 -219
  69. package/src/components/Navbar/README.md +0 -279
  70. package/src/components/Navbar/icons.tsx +0 -102
  71. package/src/components/Navbar/index.ts +0 -8
  72. package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
  73. package/src/components/NavigationBar/NavigationBar.tsx +0 -246
  74. package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
  75. package/src/components/NavigationBar/README.md +0 -469
  76. package/src/components/NavigationBar/index.ts +0 -2
  77. package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
  78. package/src/components/NavigationRail/NavigationRail.tsx +0 -418
  79. package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
  80. package/src/components/NavigationRail/README.md +0 -224
  81. package/src/components/NavigationRail/index.ts +0 -2
  82. package/src/components/Notification/Notification.stories.tsx +0 -513
  83. package/src/components/Notification/Notification.tsx +0 -145
  84. package/src/components/Notification/Notification.types.ts +0 -142
  85. package/src/components/Notification/README.md +0 -409
  86. package/src/components/Notification/index.ts +0 -3
  87. package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
  88. package/src/components/POSConvention/POSConvention.tsx +0 -129
  89. package/src/components/POSConvention/POSConvention.types.ts +0 -38
  90. package/src/components/POSConvention/README.md +0 -123
  91. package/src/components/POSConvention/icons.tsx +0 -45
  92. package/src/components/POSConvention/index.ts +0 -3
  93. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
  94. package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
  95. package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
  96. package/src/components/POSLocationButton/README.md +0 -253
  97. package/src/components/POSLocationButton/icons.tsx +0 -120
  98. package/src/components/POSLocationButton/index.ts +0 -14
  99. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
  100. package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
  101. package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
  102. package/src/components/POSNumberButton/README.md +0 -321
  103. package/src/components/POSNumberButton/index.ts +0 -3
  104. package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
  105. package/src/components/POSProductButton/POSProductButton.tsx +0 -152
  106. package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
  107. package/src/components/POSProductButton/README.md +0 -269
  108. package/src/components/POSProductButton/index.ts +0 -2
  109. package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
  110. package/src/components/POSProductCard/POSProductCard.tsx +0 -208
  111. package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
  112. package/src/components/POSProductCard/README.md +0 -179
  113. package/src/components/POSProductCard/icons.tsx +0 -26
  114. package/src/components/POSProductCard/index.ts +0 -2
  115. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
  116. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
  117. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
  118. package/src/components/POSProductSidebarItems/README.md +0 -198
  119. package/src/components/POSProductSidebarItems/icons.tsx +0 -21
  120. package/src/components/POSProductSidebarItems/index.ts +0 -3
  121. package/src/components/POSTable/POSTable.stories.tsx +0 -737
  122. package/src/components/POSTable/POSTable.tsx +0 -401
  123. package/src/components/POSTable/POSTable.types.ts +0 -83
  124. package/src/components/POSTable/README.md +0 -286
  125. package/src/components/POSTable/index.ts +0 -7
  126. package/src/components/Pagination/Pagination.stories.tsx +0 -555
  127. package/src/components/Pagination/Pagination.tsx +0 -286
  128. package/src/components/Pagination/Pagination.types.ts +0 -93
  129. package/src/components/Pagination/README.md +0 -298
  130. package/src/components/Pagination/icons.tsx +0 -47
  131. package/src/components/Pagination/index.ts +0 -3
  132. package/src/components/Quantity/Quantity.stories.tsx +0 -457
  133. package/src/components/Quantity/Quantity.tsx +0 -289
  134. package/src/components/Quantity/Quantity.types.ts +0 -70
  135. package/src/components/Radio/Radio.stories.tsx +0 -523
  136. package/src/components/Radio/Radio.tsx +0 -170
  137. package/src/components/Radio/Radio.types.ts +0 -122
  138. package/src/components/Select/README.md +0 -299
  139. package/src/components/Select/Select.stories.tsx +0 -673
  140. package/src/components/Select/Select.tsx +0 -454
  141. package/src/components/Select/Select.types.ts +0 -148
  142. package/src/components/Select/icons.tsx +0 -50
  143. package/src/components/Select/index.ts +0 -3
  144. package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
  145. package/src/components/SignUpView/SignUpView.tsx +0 -503
  146. package/src/components/SignUpView/SignUpView.types.ts +0 -58
  147. package/src/components/SignUpView/icons.tsx +0 -71
  148. package/src/components/SignUpView/index.ts +0 -3
  149. package/src/components/Switch/README.md +0 -112
  150. package/src/components/Switch/Switch.stories.tsx +0 -550
  151. package/src/components/Switch/Switch.tsx +0 -246
  152. package/src/components/Switch/Switch.types.ts +0 -67
  153. package/src/components/Table/README.md +0 -369
  154. package/src/components/Table/Table.stories.tsx +0 -805
  155. package/src/components/Table/Table.tsx +0 -688
  156. package/src/components/Table/Table.types.ts +0 -204
  157. package/src/components/Table/index.ts +0 -9
  158. package/src/components/Tabs/README.md +0 -201
  159. package/src/components/Tabs/Tabs.stories.tsx +0 -580
  160. package/src/components/Tabs/Tabs.tsx +0 -356
  161. package/src/components/Tabs/Tabs.types.ts +0 -127
  162. package/src/components/Tabs/icons.tsx +0 -129
  163. package/src/components/Tabs/index.ts +0 -11
  164. package/src/components/Textarea/Textarea.stories.tsx +0 -535
  165. package/src/components/Textarea/Textarea.tsx +0 -188
  166. package/src/components/Textarea/Textarea.types.ts +0 -54
  167. package/src/context/ThemeContext.tsx +0 -99
  168. package/src/context/index.ts +0 -1
  169. package/src/index.css +0 -29
  170. package/src/index.ts +0 -39
  171. package/src/main.tsx +0 -10
  172. package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
  173. package/src/views/ProductsView/ProductsView.tsx +0 -480
  174. package/src/views/ProductsView/ProductsView.types.ts +0 -238
  175. package/src/views/ProductsView/README.md +0 -312
  176. package/src/views/ProductsView/icons.tsx +0 -38
  177. package/src/views/ProductsView/index.ts +0 -8
  178. package/src/views/RecoverPasswordView/README.md +0 -269
  179. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
  180. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
  181. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
  182. package/src/views/RecoverPasswordView/icons.tsx +0 -17
  183. package/src/views/RecoverPasswordView/index.ts +0 -2
  184. package/src/views/TableLayoutView/README.md +0 -268
  185. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
  186. package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
  187. package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
  188. package/src/views/TableLayoutView/icons.tsx +0 -113
  189. package/src/views/TableLayoutView/index.ts +0 -6
  190. package/storybook/main.ts +0 -20
  191. package/storybook/preview.tsx +0 -84
  192. package/storybook/vitest.setup.ts +0 -7
  193. package/tailwind.config.js +0 -128
  194. /package/{public → dist}/,Business Logo.png +0 -0
  195. /package/{public → dist}/.Siesa Logo.png +0 -0
  196. /package/{public → dist}/bg_siesa.png +0 -0
  197. /package/{public → dist}/siesa_logo_mobile.png +0 -0
  198. /package/{public → dist}/vite.svg +0 -0
@@ -1,235 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/react';
2
- import { POSConvention } from './POSConvention';
3
-
4
- /**
5
- * Stories para POSConvention
6
- *
7
- * Componente de leyenda/convención para mostrar el estado de las mesas en el sistema POS.
8
- * Basado en especificaciones de Figma (node-id: 4418-40139).
9
- */
10
- const meta = {
11
- title: 'Siesa UI Kit/POSConvention',
12
- component: POSConvention,
13
- parameters: {
14
- layout: 'centered',
15
- docs: {
16
- description: {
17
- component:
18
- 'Componente de leyenda para mostrar los estados de mesas en el sistema POS. Incluye 4 estados: Disponible (azul), Ocupada (naranja), Reservada (morado) y Fuera de Servicio (gris).',
19
- },
20
- },
21
- },
22
- tags: ['autodocs'],
23
- argTypes: {
24
- status: {
25
- control: 'select',
26
- options: ['available', 'occupied', 'reserved', 'outOfService'],
27
- description: 'Estado de la convención a mostrar',
28
- table: {
29
- type: { summary: 'ConventionStatus' },
30
- defaultValue: { summary: 'available' },
31
- category: 'Contenido',
32
- },
33
- },
34
- className: {
35
- control: 'text',
36
- description: 'Clases CSS adicionales para el contenedor',
37
- table: {
38
- type: { summary: 'string' },
39
- category: 'Apariencia',
40
- },
41
- },
42
- },
43
- } satisfies Meta<typeof POSConvention>;
44
-
45
- export default meta;
46
- type Story = StoryObj<typeof meta>;
47
-
48
- // ============================================
49
- // 1. PLAYGROUND INTERACTIVO
50
- // ============================================
51
- /**
52
- * Playground interactivo para probar el componente con diferentes estados.
53
- */
54
- export const Playground: Story = {
55
- args: {
56
- status: 'available',
57
- },
58
- };
59
-
60
- // ============================================
61
- // 2. TODOS LOS ESTADOS
62
- // ============================================
63
- /**
64
- * Muestra todos los estados disponibles del componente POSConvention.
65
- */
66
- export const TodosLosEstados: Story = {
67
- render: () => (
68
- <div className="space-y-8 p-6">
69
- <div>
70
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
71
- Estados de Mesas
72
- </h3>
73
- <div className="flex flex-col gap-4">
74
- <div className="flex items-center gap-6">
75
- <POSConvention status="available" />
76
- <span className="text-xs text-content-secondary dark:text-content-secondary">
77
- Mesa lista para recibir clientes
78
- </span>
79
- </div>
80
- <div className="flex items-center gap-6">
81
- <POSConvention status="occupied" />
82
- <span className="text-xs text-content-secondary dark:text-content-secondary">
83
- Mesa actualmente en uso
84
- </span>
85
- </div>
86
- <div className="flex items-center gap-6">
87
- <POSConvention status="reserved" />
88
- <span className="text-xs text-content-secondary dark:text-content-secondary">
89
- Mesa con reservación confirmada
90
- </span>
91
- </div>
92
- <div className="flex items-center gap-6">
93
- <POSConvention status="outOfService" />
94
- <span className="text-xs text-content-secondary dark:text-content-secondary">
95
- Mesa no disponible temporalmente
96
- </span>
97
- </div>
98
- </div>
99
- </div>
100
-
101
- {/* Tips */}
102
- <div className="mt-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
103
- <p className="text-xs text-gray-600 dark:text-gray-300">
104
- <strong>💡 Consejo:</strong>
105
- <br />• Usa este componente para crear leyendas en la vista de mesas del POS
106
- <br />• Los colores son consistentes con el diseño de Figma
107
- </p>
108
- </div>
109
- </div>
110
- ),
111
- };
112
-
113
- // ============================================
114
- // 3. LEYENDA COMPLETA (COMO EN FIGMA)
115
- // ============================================
116
- /**
117
- * Leyenda completa con borde punteado como se muestra en Figma.
118
- */
119
- export const LeyendaCompleta: Story = {
120
- render: () => (
121
- <div className="space-y-8 p-6">
122
- <div>
123
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
124
- Leyenda de Convenciones (Figma)
125
- </h3>
126
-
127
- {/* Contenedor con borde punteado como en Figma */}
128
- <div className="p-5 rounded-lg border-2 border-dashed border-primary-custom-300 dark:border-dark-border-custom inline-block">
129
- <div className="flex flex-col gap-9">
130
- <POSConvention status="available" />
131
- <POSConvention status="occupied" />
132
- <POSConvention status="reserved" />
133
- <POSConvention status="outOfService" />
134
- </div>
135
- </div>
136
- </div>
137
-
138
- <p className="text-xs text-content-secondary dark:text-content-secondary">
139
- Diseño exacto según especificaciones de Figma (node-id: 4418-40139)
140
- </p>
141
- </div>
142
- ),
143
- };
144
-
145
- // ============================================
146
- // 4. USO EN HORIZONTAL
147
- // ============================================
148
- /**
149
- * Ejemplo de uso horizontal para barras de estado o headers.
150
- */
151
- export const UsoHorizontal: Story = {
152
- render: () => (
153
- <div className="space-y-8 p-6">
154
- <div>
155
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
156
- Disposición Horizontal
157
- </h3>
158
-
159
- {/* Disposición horizontal con separadores */}
160
- <div className="flex items-center gap-6 p-4 bg-white dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary">
161
- <POSConvention status="available" />
162
- <div className="w-px h-4 bg-border-primary dark:bg-dark-border-primary" />
163
- <POSConvention status="occupied" />
164
- <div className="w-px h-4 bg-border-primary dark:bg-dark-border-primary" />
165
- <POSConvention status="reserved" />
166
- <div className="w-px h-4 bg-border-primary dark:bg-dark-border-primary" />
167
- <POSConvention status="outOfService" />
168
- </div>
169
- </div>
170
-
171
- <p className="text-xs text-content-secondary dark:text-content-secondary">
172
- Útil para barras de herramientas o encabezados de sección
173
- </p>
174
- </div>
175
- ),
176
- };
177
-
178
- // ============================================
179
- // 5. INTEGRACIÓN CON CONTADORES
180
- // ============================================
181
- /**
182
- * Ejemplo de integración con contadores de mesas.
183
- */
184
- export const ConContadores: Story = {
185
- render: () => (
186
- <div className="space-y-8 p-6">
187
- <div>
188
- <h3 className="text-sm font-bold mb-4 text-content-primary dark:text-dark-content-primary">
189
- Leyenda con Contadores
190
- </h3>
191
-
192
- <div className="flex flex-col gap-3 p-4 bg-white dark:bg-dark-bg-primary rounded-lg border border-border-primary dark:border-dark-border-primary">
193
- <div className="flex items-center justify-between min-w-[200px]">
194
- <POSConvention status="available" />
195
- <span className="text-sm font-bold text-content-primary dark:text-dark-content-primary">
196
- 12
197
- </span>
198
- </div>
199
- <div className="flex items-center justify-between">
200
- <POSConvention status="occupied" />
201
- <span className="text-sm font-bold text-content-primary dark:text-dark-content-primary">
202
- 8
203
- </span>
204
- </div>
205
- <div className="flex items-center justify-between">
206
- <POSConvention status="reserved" />
207
- <span className="text-sm font-bold text-content-primary dark:text-dark-content-primary">
208
- 3
209
- </span>
210
- </div>
211
- <div className="flex items-center justify-between">
212
- <POSConvention status="outOfService" />
213
- <span className="text-sm font-bold text-content-primary dark:text-dark-content-primary">
214
- 2
215
- </span>
216
- </div>
217
-
218
- {/* Total */}
219
- <div className="mt-2 pt-3 border-t border-border-primary dark:border-dark-border-primary flex items-center justify-between">
220
- <span className="text-xs font-bold text-content-secondary dark:text-content-secondary">
221
- Total de mesas
222
- </span>
223
- <span className="text-sm font-bold text-primary-custom-600 dark:text-primary-custom-600">
224
- 25
225
- </span>
226
- </div>
227
- </div>
228
- </div>
229
-
230
- <p className="text-xs text-content-secondary dark:text-content-secondary">
231
- Ejemplo de uso con contadores para panel de resumen
232
- </p>
233
- </div>
234
- ),
235
- };
@@ -1,129 +0,0 @@
1
- import React from 'react';
2
- import type { POSConventionProps } from './POSConvention.types';
3
- import { ConventionIcon } from './icons';
4
-
5
- /**
6
- * POSConvention - Componente de leyenda/convención para estados de mesas POS
7
- *
8
- * Muestra un indicador circular de color con su respectiva etiqueta según el diseño de Figma.
9
- * Se usa típicamente para crear leyendas que explican el significado de colores en el sistema POS.
10
- *
11
- * **Colores según Figma (node-id: 4418-40139):**
12
- *
13
- * | Estado | Light Mode | Dark Mode |
14
- * |--------|------------|-----------|
15
- * | Available | #0e79fd (azul) | #93d1fd (azul claro) |
16
- * | Occupied | #af460e (naranja) | #f5a927 (amarillo) |
17
- * | Reserved | #7e22ce (morado) | #c084fc (morado claro) |
18
- * | Out of Service | #3f3f46 (gris) | #a1a1aa (gris claro) |
19
- *
20
- * **Dimensiones según Figma:**
21
- * - Icono: 16x16px (círculo con fill)
22
- * - Texto: 12px (Paragraph/Tiny - text-xs)
23
- * - Gap: 4px (gap-1)
24
- * - Line-height: 16px (leading-4)
25
- *
26
- * Mejores prácticas implementadas:
27
- * - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
28
- * - Dark mode con estrategia 'class' (darkMode: 'class')
29
- * - Colores exactos de Figma para Light y Dark mode
30
- * - Type safety con TypeScript estricto
31
- * - Accesibilidad con aria-label
32
- *
33
- * @see docs/colors.md - Sistema de colores
34
- * @see docs/typography.md - Sistema tipográfico (Paragraph Tiny)
35
- * @see docs/spacing.md - Sistema de espaciado
36
- *
37
- * @example
38
- * ```tsx
39
- * // Indicador de disponible
40
- * <POSConvention status="available" />
41
- *
42
- * // Indicador de ocupada
43
- * <POSConvention status="occupied" />
44
- *
45
- * // Leyenda completa en contenedor
46
- * <div className="p-5 rounded-lg border border-dashed border-primary-custom-300">
47
- * <div className="flex flex-col gap-9">
48
- * <POSConvention status="available" />
49
- * <POSConvention status="occupied" />
50
- * <POSConvention status="reserved" />
51
- * <POSConvention status="outOfService" />
52
- * </div>
53
- * </div>
54
- * ```
55
- */
56
- export const POSConvention: React.FC<POSConventionProps> = ({
57
- status = 'available',
58
- className = '',
59
- }) => {
60
- // ===== CONFIGURACIÓN DE COLORES Y LABELS SEGÚN FIGMA =====
61
- // Colores extraídos del nodo 4418-40139 (Light) y 4418-40349 (Dark) de Figma
62
- // Variables de Figma: contentCustomPrimary, contentYellow, contentPurple, contentZinc
63
- const conventionConfig = {
64
- available: {
65
- lightColor: '#0e79fd', // Azul - contentCustomPrimary Light
66
- darkColor: '#93d1fd', // Azul claro - contentCustomPrimary Dark
67
- label: 'Disponible',
68
- },
69
- occupied: {
70
- lightColor: '#af460e', // Naranja - contentOrange Light
71
- darkColor: '#f5a927', // Amarillo - contentYellow Dark
72
- label: 'Ocupada',
73
- },
74
- reserved: {
75
- lightColor: '#7e22ce', // Morado - contentPurple Light
76
- darkColor: '#c084fc', // Morado claro - contentPurple Dark
77
- label: 'Reservada',
78
- },
79
- outOfService: {
80
- lightColor: '#3f3f46', // Gris - contentZinc Light (zinc-700)
81
- darkColor: '#a1a1aa', // Gris claro - contentZinc Dark (zinc-400)
82
- label: 'Fuera de Servicio',
83
- },
84
- };
85
-
86
- const config = conventionConfig[status];
87
-
88
- // ===== CLASES BASE =====
89
- const baseClasses = `
90
- inline-flex
91
- items-center
92
- gap-1
93
- shrink-0
94
- `;
95
-
96
- // ===== COMBINAR CLASES =====
97
- const finalClasses = [baseClasses, className]
98
- .join(' ')
99
- .replace(/\s+/g, ' ')
100
- .trim();
101
-
102
- return (
103
- <div
104
- className={finalClasses}
105
- role="presentation"
106
- aria-label={`Estado: ${config.label}`}
107
- >
108
- {/* Icono circular 16x16 con colores para Light y Dark mode */}
109
- <ConventionIcon lightColor={config.lightColor} darkColor={config.darkColor} />
110
-
111
- {/* Label de texto según Figma: Paragraph/Tiny 12px */}
112
- {/* Light: contentPrimary #18181b, Dark: contentPrimary #f4f4f5 */}
113
- <span
114
- className={`
115
- text-xs
116
- leading-4
117
- font-normal
118
- text-content-primary
119
- dark:text-dark-content-primary
120
- whitespace-nowrap
121
- `
122
- .replace(/\s+/g, ' ')
123
- .trim()}
124
- >
125
- {config.label}
126
- </span>
127
- </div>
128
- );
129
- };
@@ -1,38 +0,0 @@
1
- /**
2
- * Tipo para los estados de convención posibles en el sistema POS
3
- *
4
- * Colores según Figma:
5
- *
6
- * | Estado | Light Mode | Dark Mode |
7
- * |--------|------------|-----------|
8
- * | `available` | #0e79fd (azul) | #93d1fd (azul claro) |
9
- * | `occupied` | #af460e (naranja) | #f5a927 (amarillo) |
10
- * | `reserved` | #7e22ce (morado) | #c084fc (morado claro) |
11
- * | `outOfService` | #3f3f46 (gris) | #a1a1aa (gris claro) |
12
- */
13
- export type ConventionStatus = 'available' | 'occupied' | 'reserved' | 'outOfService';
14
-
15
- /**
16
- * Props del componente POSConvention
17
- *
18
- * Componente de leyenda para mostrar el estado de las mesas en el sistema POS.
19
- * Muestra un indicador circular de color con su respectiva etiqueta.
20
- */
21
- export interface POSConventionProps {
22
- /**
23
- * Estado de la convención a mostrar
24
- *
25
- * - `available`: Disponible (Azul)
26
- * - `occupied`: Ocupada (Naranja)
27
- * - `reserved`: Reservada (Morado)
28
- * - `outOfService`: F. de Servicio (Gris)
29
- *
30
- * @default 'available'
31
- */
32
- status?: ConventionStatus;
33
-
34
- /**
35
- * Clases CSS adicionales para el contenedor
36
- */
37
- className?: string;
38
- }
@@ -1,123 +0,0 @@
1
- # POSConvention
2
-
3
- Componente de leyenda/convención para mostrar el estado de las mesas en el sistema POS.
4
-
5
- ## Descripción
6
-
7
- El componente `POSConvention` muestra un indicador circular de color con su respectiva etiqueta según el diseño de Figma. Se usa típicamente para crear leyendas que explican el significado de colores en el sistema de Punto de Venta.
8
-
9
- ## Instalación
10
-
11
- ```tsx
12
- import { POSConvention } from '@siesa/ui-kit';
13
- ```
14
-
15
- ## Estados Disponibles
16
-
17
- | Estado | Light Mode | Dark Mode | Etiqueta | Uso |
18
- |--------|------------|-----------|----------|-----|
19
- | `available` | `#0e79fd` (azul) | `#93d1fd` (azul claro) | Disponible | Mesa lista para clientes |
20
- | `occupied` | `#af460e` (naranja) | `#f5a927` (amarillo) | Ocupada | Mesa actualmente en uso |
21
- | `reserved` | `#7e22ce` (morado) | `#c084fc` (morado claro) | Reservada | Mesa con reservación |
22
- | `outOfService` | `#3f3f46` (gris) | `#a1a1aa` (gris claro) | F. de Servicio | Mesa no disponible |
23
-
24
- ## Uso Básico
25
-
26
- ```tsx
27
- // Indicador individual
28
- <POSConvention status="available" />
29
-
30
- // Leyenda completa
31
- <div className="flex flex-col gap-4">
32
- <POSConvention status="available" />
33
- <POSConvention status="occupied" />
34
- <POSConvention status="reserved" />
35
- <POSConvention status="outOfService" />
36
- </div>
37
- ```
38
-
39
- ## Props
40
-
41
- | Prop | Tipo | Default | Descripción |
42
- |------|------|---------|-------------|
43
- | `status` | `'available' \| 'occupied' \| 'reserved' \| 'outOfService'` | `'available'` | Estado a mostrar |
44
- | `className` | `string` | `''` | Clases CSS adicionales |
45
-
46
- ## Especificaciones de Figma
47
-
48
- - **Node ID**: `4418-40139`
49
- - **Icono**: 16x16px (círculo con fill)
50
- - **Texto**: 12px (Paragraph/Tiny)
51
- - **Gap**: 4px
52
- - **Line-height**: 16px
53
-
54
- ## Dark Mode
55
-
56
- El componente soporta dark mode automáticamente:
57
- - El texto cambia de `content-primary` a `dark-content-primary`
58
- - Los colores de los iconos permanecen constantes para mantener la identificación visual
59
-
60
- ## Ejemplos Avanzados
61
-
62
- ### Leyenda con Borde Punteado (Como en Figma)
63
-
64
- ```tsx
65
- <div className="p-5 rounded-lg border-2 border-dashed border-primary-custom-300">
66
- <div className="flex flex-col gap-9">
67
- <POSConvention status="available" />
68
- <POSConvention status="occupied" />
69
- <POSConvention status="reserved" />
70
- <POSConvention status="outOfService" />
71
- </div>
72
- </div>
73
- ```
74
-
75
- ### Leyenda Horizontal
76
-
77
- ```tsx
78
- <div className="flex items-center gap-6">
79
- <POSConvention status="available" />
80
- <POSConvention status="occupied" />
81
- <POSConvention status="reserved" />
82
- <POSConvention status="outOfService" />
83
- </div>
84
- ```
85
-
86
- ### Con Contadores
87
-
88
- ```tsx
89
- <div className="flex flex-col gap-3">
90
- <div className="flex items-center justify-between">
91
- <POSConvention status="available" />
92
- <span className="font-bold">12</span>
93
- </div>
94
- <div className="flex items-center justify-between">
95
- <POSConvention status="occupied" />
96
- <span className="font-bold">8</span>
97
- </div>
98
- </div>
99
- ```
100
-
101
- ## Accesibilidad
102
-
103
- - El componente incluye `role="presentation"` ya que es puramente visual
104
- - Incluye `aria-label` con el estado actual para lectores de pantalla
105
- - Los iconos SVG tienen `aria-hidden="true"`
106
-
107
- ## Archivos del Componente
108
-
109
- ```
110
- POSConvention/
111
- ├── POSConvention.tsx # Componente principal
112
- ├── POSConvention.types.ts # Tipos TypeScript
113
- ├── POSConvention.stories.tsx # Stories de Storybook
114
- ├── icons.tsx # Icono SVG del círculo
115
- ├── index.ts # Exports
116
- └── README.md # Esta documentación
117
- ```
118
-
119
- ## Referencias
120
-
121
- - **Figma**: [POS Convention](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4418-40139)
122
- - **Documentación de Colores**: `docs/colors.md`
123
- - **Documentación de Tipografía**: `docs/typography.md`
@@ -1,45 +0,0 @@
1
- import React from 'react';
2
-
3
- /**
4
- * Icono de convención para POSConvention
5
- *
6
- * Círculo SVG de 16x16px con colores diferentes para Light y Dark mode.
7
- * Basado en especificaciones de Figma:
8
- * - Light mode: node-id 4418-40139
9
- * - Dark mode: node-id 4418-40349
10
- *
11
- * Usa dos círculos superpuestos con clases CSS para alternar entre modos.
12
- *
13
- * @param lightColor - Color hexadecimal para Light mode
14
- * @param darkColor - Color hexadecimal para Dark mode
15
- * @param className - Clases CSS adicionales (opcional)
16
- */
17
- export const ConventionIcon: React.FC<{
18
- lightColor: string;
19
- darkColor: string;
20
- className?: string;
21
- }> = ({ lightColor, darkColor, className = '' }) => (
22
- <svg
23
- className={`w-4 h-4 shrink-0 ${className}`.trim()}
24
- xmlns="http://www.w3.org/2000/svg"
25
- viewBox="0 0 16 16"
26
- aria-hidden="true"
27
- >
28
- {/* Círculo para Light mode - visible por defecto, oculto en dark */}
29
- <circle
30
- cx="8"
31
- cy="8"
32
- r="8"
33
- fill={lightColor}
34
- className="dark:hidden"
35
- />
36
- {/* Círculo para Dark mode - oculto por defecto, visible en dark */}
37
- <circle
38
- cx="8"
39
- cy="8"
40
- r="8"
41
- fill={darkColor}
42
- className="hidden dark:block"
43
- />
44
- </svg>
45
- );
@@ -1,3 +0,0 @@
1
- export { POSConvention } from './POSConvention';
2
- export { ConventionIcon } from './icons';
3
- export type { POSConventionProps, ConventionStatus } from './POSConvention.types';