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.
Files changed (189) hide show
  1. package/README.md +115 -115
  2. package/bin/install.cjs +502 -502
  3. package/bin/prepare-publish.cjs +28 -28
  4. package/bin/restore-folders.cjs +28 -28
  5. package/claude/agents/siesa-ui-kit-specialist.md +2445 -0
  6. package/claude/prompts/component-template.md +121 -0
  7. package/claude/prompts/siesa-ui-kit.md +28 -0
  8. package/claude/settings.local.json +67 -2
  9. package/dist/components/Button/icons.d.ts +6 -5
  10. package/dist/components/Button/icons.d.ts.map +1 -1
  11. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -1
  12. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +21 -0
  13. package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -1
  14. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +122 -0
  15. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +1 -0
  16. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +139 -0
  17. package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +1 -0
  18. package/dist/components/NavigationRailCommercial/icons.d.ts +33 -0
  19. package/dist/components/NavigationRailCommercial/icons.d.ts.map +1 -0
  20. package/dist/components/NavigationRailCommercial/index.d.ts +4 -0
  21. package/dist/components/NavigationRailCommercial/index.d.ts.map +1 -0
  22. package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -1
  23. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +7 -0
  24. package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -1
  25. package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -1
  26. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +41 -0
  27. package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -1
  28. package/dist/components/NavigationRailTypes/icons.d.ts +15 -29
  29. package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -1
  30. package/dist/components/Select/Select.d.ts.map +1 -1
  31. package/dist/components/Select/icons.d.ts +6 -2
  32. package/dist/components/Select/icons.d.ts.map +1 -1
  33. package/dist/index.d.ts +32 -0
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/siesa-ui-kit.cjs +404 -190
  36. package/dist/siesa-ui-kit.cjs.map +1 -1
  37. package/dist/siesa-ui-kit.mjs +6590 -1506
  38. package/dist/siesa-ui-kit.mjs.map +1 -1
  39. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +48 -0
  40. package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +1 -0
  41. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +49 -0
  42. package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +1 -0
  43. package/dist/views/LayoutCommercial/index.d.ts +3 -0
  44. package/dist/views/LayoutCommercial/index.d.ts.map +1 -0
  45. package/docs/icons.md +12 -31
  46. package/package.json +111 -110
  47. package/src/components/Avatar/Avatar.stories.tsx +494 -494
  48. package/src/components/Button/Button.stories.tsx +950 -950
  49. package/src/components/Button/Button.tsx +337 -337
  50. package/src/components/Button/Button.types.ts +180 -180
  51. package/src/components/Button/icons.tsx +23 -62
  52. package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
  53. package/src/components/Divider/Divider.stories.tsx +263 -263
  54. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -317
  55. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +307 -287
  56. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +136 -111
  57. package/src/components/DropdownItemCollapsible/README.md +264 -264
  58. package/src/components/DropdownItemCollapsible/icons.tsx +57 -57
  59. package/src/components/DropdownItemCollapsible/index.ts +12 -12
  60. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -386
  61. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -216
  62. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -93
  63. package/src/components/DropdownItemHeading/README.md +573 -573
  64. package/src/components/DropdownItemHeading/icons.tsx +125 -125
  65. package/src/components/DropdownItemHeading/index.ts +3 -3
  66. package/src/components/Input/Input.stories.tsx +583 -583
  67. package/src/components/LoginView/LoginView.stories.tsx +148 -148
  68. package/src/components/LoginView/LoginView.tsx +426 -426
  69. package/src/components/LoginView/LoginView.types.ts +52 -52
  70. package/src/components/LoginView/README.md +396 -396
  71. package/src/components/LoginView/icons.tsx +85 -85
  72. package/src/components/LoginView/index.ts +3 -3
  73. package/src/components/Navbar/Navbar.stories.tsx +810 -810
  74. package/src/components/Navbar/Navbar.tsx +755 -755
  75. package/src/components/Navbar/Navbar.types.ts +219 -219
  76. package/src/components/Navbar/README.md +279 -279
  77. package/src/components/Navbar/index.ts +8 -8
  78. package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +464 -0
  79. package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +301 -0
  80. package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +162 -0
  81. package/src/components/NavigationRailCommercial/README.md +251 -0
  82. package/src/components/NavigationRailCommercial/icons.tsx +54 -0
  83. package/src/components/NavigationRailCommercial/index.ts +6 -0
  84. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -667
  85. package/src/components/NavigationRailItem/NavigationRailItem.tsx +314 -313
  86. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +175 -167
  87. package/src/components/NavigationRailItem/README.md +476 -476
  88. package/src/components/NavigationRailItem/index.ts +2 -2
  89. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -462
  90. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -332
  91. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -178
  92. package/src/components/NavigationRailPanel/README.md +461 -461
  93. package/src/components/NavigationRailPanel/index.ts +6 -6
  94. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +682 -528
  95. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +363 -378
  96. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +178 -130
  97. package/src/components/NavigationRailTypes/README.md +573 -573
  98. package/src/components/NavigationRailTypes/icons.tsx +76 -141
  99. package/src/components/NavigationRailTypes/index.ts +7 -7
  100. package/src/components/Notification/Notification.stories.tsx +513 -513
  101. package/src/components/Notification/Notification.tsx +145 -145
  102. package/src/components/Notification/Notification.types.ts +142 -142
  103. package/src/components/Notification/README.md +409 -409
  104. package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
  105. package/src/components/POSConvention/POSConvention.tsx +129 -129
  106. package/src/components/POSConvention/POSConvention.types.ts +38 -38
  107. package/src/components/POSConvention/README.md +123 -123
  108. package/src/components/POSConvention/icons.tsx +45 -45
  109. package/src/components/POSConvention/index.ts +3 -3
  110. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
  111. package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
  112. package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
  113. package/src/components/POSLocationButton/README.md +253 -253
  114. package/src/components/POSLocationButton/icons.tsx +120 -120
  115. package/src/components/POSLocationButton/index.ts +14 -14
  116. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
  117. package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
  118. package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
  119. package/src/components/POSNumberButton/README.md +321 -321
  120. package/src/components/POSNumberButton/index.ts +3 -3
  121. package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
  122. package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
  123. package/src/components/POSProductCard/POSProductCard.tsx +208 -208
  124. package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
  125. package/src/components/POSProductCard/README.md +179 -179
  126. package/src/components/POSProductCard/icons.tsx +26 -26
  127. package/src/components/POSProductCard/index.ts +2 -2
  128. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
  129. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
  130. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
  131. package/src/components/POSProductSidebarItems/README.md +198 -198
  132. package/src/components/POSProductSidebarItems/icons.tsx +21 -21
  133. package/src/components/POSProductSidebarItems/index.ts +3 -3
  134. package/src/components/POSTable/POSTable.stories.tsx +737 -737
  135. package/src/components/POSTable/POSTable.tsx +401 -401
  136. package/src/components/POSTable/README.md +286 -286
  137. package/src/components/Quantity/Quantity.stories.tsx +457 -457
  138. package/src/components/Radio/Radio.stories.tsx +523 -523
  139. package/src/components/Radio/Radio.tsx +1 -1
  140. package/src/components/Select/Select.stories.tsx +32 -0
  141. package/src/components/Select/Select.tsx +457 -454
  142. package/src/components/Select/icons.tsx +16 -41
  143. package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
  144. package/src/components/SignUpView/SignUpView.tsx +503 -503
  145. package/src/components/SignUpView/SignUpView.types.ts +58 -58
  146. package/src/components/SignUpView/icons.tsx +71 -71
  147. package/src/components/SignUpView/index.ts +3 -3
  148. package/src/components/Switch/README.md +112 -112
  149. package/src/components/Switch/Switch.stories.tsx +550 -550
  150. package/src/components/Switch/Switch.tsx +246 -246
  151. package/src/components/Switch/Switch.types.ts +67 -67
  152. package/src/components/Table/Table.stories.tsx +805 -805
  153. package/src/components/Tabs/README.md +201 -201
  154. package/src/components/Tabs/Tabs.stories.tsx +580 -580
  155. package/src/components/Tabs/Tabs.tsx +356 -356
  156. package/src/components/Tabs/Tabs.types.ts +127 -127
  157. package/src/components/Tabs/icons.tsx +129 -129
  158. package/src/components/Tabs/index.ts +11 -11
  159. package/src/components/Textarea/Textarea.stories.tsx +535 -535
  160. package/src/index.ts +133 -102
  161. package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +374 -0
  162. package/src/views/LayoutCommercial/LayoutCommercial.tsx +125 -0
  163. package/src/views/LayoutCommercial/LayoutCommercial.types.ts +54 -0
  164. package/src/views/LayoutCommercial/README.md +286 -0
  165. package/src/views/LayoutCommercial/index.ts +2 -0
  166. package/src/views/ListView/ListView.stories.tsx +329 -329
  167. package/src/views/ListView/ListView.tsx +570 -570
  168. package/src/views/ListView/ListView.types.ts +211 -211
  169. package/src/views/ListView/icons.tsx +282 -282
  170. package/src/views/ListView/index.ts +11 -11
  171. package/src/views/LoginView/LoginView.tsx +426 -426
  172. package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
  173. package/src/views/ProductsView/ProductsView.tsx +480 -480
  174. package/src/views/ProductsView/ProductsView.types.ts +238 -238
  175. package/src/views/ProductsView/README.md +312 -312
  176. package/src/views/ProductsView/icons.tsx +38 -38
  177. package/src/views/ProductsView/index.ts +8 -8
  178. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
  179. package/src/views/SignUpView/SignUpView.tsx +503 -503
  180. package/src/views/TableLayoutView/README.md +268 -268
  181. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
  182. package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
  183. package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
  184. package/src/views/TableLayoutView/icons.tsx +113 -113
  185. package/src/views/TableLayoutView/index.ts +6 -6
  186. package/storybook/main.ts +19 -19
  187. package/storybook/preview.tsx +84 -84
  188. package/storybook/vitest.setup.ts +6 -6
  189. package/tailwind.config.js +128 -128
@@ -1,129 +1,129 @@
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
+ 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 +1,38 @@
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
+ /**
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 +1,123 @@
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
+ # 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 +1,45 @@
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
+ 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
+ );