siesa-ui-kit 1.0.2 → 1.0.3

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 (236) hide show
  1. package/package.json +2 -9
  2. package/claude/settings.local.json +0 -7
  3. package/docs/border-radius.md +0 -1261
  4. package/docs/colors.md +0 -832
  5. package/docs/dark-mode-guide.md +0 -1426
  6. package/docs/filters.md +0 -1243
  7. package/docs/icons.md +0 -1283
  8. package/docs/shadows.md +0 -1377
  9. package/docs/spacing.md +0 -1684
  10. package/docs/typography.md +0 -1268
  11. package/postcss.config.cjs +0 -6
  12. package/public/,Business Logo.png +0 -0
  13. package/public/.Siesa Logo.png +0 -0
  14. package/public/bg_siesa.png +0 -0
  15. package/public/siesa_logo_mobile.png +0 -0
  16. package/public/vite.svg +0 -1
  17. package/src/App.css +0 -42
  18. package/src/App.tsx +0 -8
  19. package/src/ButtonTest.tsx +0 -147
  20. package/src/assets/fonts/README.md +0 -261
  21. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  22. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  23. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  24. package/src/assets/react.svg +0 -1
  25. package/src/components/Alert/Alert.stories.tsx +0 -332
  26. package/src/components/Alert/Alert.tsx +0 -106
  27. package/src/components/Alert/Alert.types.ts +0 -54
  28. package/src/components/Avatar/Avatar.stories.tsx +0 -494
  29. package/src/components/Avatar/Avatar.tsx +0 -143
  30. package/src/components/Avatar/Avatar.types.ts +0 -53
  31. package/src/components/Badge/Badge.stories.tsx +0 -339
  32. package/src/components/Badge/Badge.tsx +0 -278
  33. package/src/components/Badge/Badge.types.ts +0 -58
  34. package/src/components/Button/Button.stories.tsx +0 -950
  35. package/src/components/Button/Button.tsx +0 -337
  36. package/src/components/Button/Button.types.ts +0 -180
  37. package/src/components/Button/icons.tsx +0 -87
  38. package/src/components/Button/index.ts +0 -3
  39. package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
  40. package/src/components/Checkbox/Checkbox.tsx +0 -208
  41. package/src/components/Checkbox/Checkbox.types.ts +0 -61
  42. package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
  43. package/src/components/DescriptionList/DescriptionList.tsx +0 -96
  44. package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
  45. package/src/components/Divider/Divider.stories.tsx +0 -263
  46. package/src/components/Divider/Divider.tsx +0 -80
  47. package/src/components/Divider/Divider.types.ts +0 -24
  48. package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
  49. package/src/components/Dropdown/Dropdown.tsx +0 -422
  50. package/src/components/Dropdown/Dropdown.types.ts +0 -146
  51. package/src/components/Dropdown/README.md +0 -266
  52. package/src/components/Dropdown/icons.tsx +0 -72
  53. package/src/components/Dropdown/index.ts +0 -8
  54. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
  55. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -287
  56. package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -111
  57. package/src/components/DropdownItemCollapsible/README.md +0 -264
  58. package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
  59. package/src/components/DropdownItemCollapsible/index.ts +0 -12
  60. package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
  61. package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
  62. package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
  63. package/src/components/DropdownItemHeading/README.md +0 -573
  64. package/src/components/DropdownItemHeading/icons.tsx +0 -125
  65. package/src/components/DropdownItemHeading/index.ts +0 -3
  66. package/src/components/Input/Input.stories.tsx +0 -583
  67. package/src/components/Input/Input.tsx +0 -204
  68. package/src/components/Input/Input.types.ts +0 -80
  69. package/src/components/Input/icons.tsx +0 -145
  70. package/src/components/Input/index.ts +0 -2
  71. package/src/components/LoginView/LoginView.stories.tsx +0 -148
  72. package/src/components/LoginView/LoginView.tsx +0 -426
  73. package/src/components/LoginView/LoginView.types.ts +0 -52
  74. package/src/components/LoginView/README.md +0 -396
  75. package/src/components/LoginView/icons.tsx +0 -85
  76. package/src/components/LoginView/index.ts +0 -3
  77. package/src/components/Navbar/Navbar.stories.tsx +0 -810
  78. package/src/components/Navbar/Navbar.tsx +0 -755
  79. package/src/components/Navbar/Navbar.types.ts +0 -219
  80. package/src/components/Navbar/README.md +0 -279
  81. package/src/components/Navbar/icons.tsx +0 -102
  82. package/src/components/Navbar/index.ts +0 -8
  83. package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
  84. package/src/components/NavigationBar/NavigationBar.tsx +0 -246
  85. package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
  86. package/src/components/NavigationBar/README.md +0 -469
  87. package/src/components/NavigationBar/index.ts +0 -2
  88. package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
  89. package/src/components/NavigationRail/NavigationRail.tsx +0 -418
  90. package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
  91. package/src/components/NavigationRail/README.md +0 -224
  92. package/src/components/NavigationRail/index.ts +0 -2
  93. package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
  94. package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -313
  95. package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -167
  96. package/src/components/NavigationRailItem/README.md +0 -476
  97. package/src/components/NavigationRailItem/index.ts +0 -2
  98. package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
  99. package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
  100. package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
  101. package/src/components/NavigationRailPanel/README.md +0 -461
  102. package/src/components/NavigationRailPanel/index.ts +0 -6
  103. package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -528
  104. package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -378
  105. package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -130
  106. package/src/components/NavigationRailTypes/README.md +0 -573
  107. package/src/components/NavigationRailTypes/icons.tsx +0 -141
  108. package/src/components/NavigationRailTypes/index.ts +0 -7
  109. package/src/components/Notification/Notification.stories.tsx +0 -513
  110. package/src/components/Notification/Notification.tsx +0 -145
  111. package/src/components/Notification/Notification.types.ts +0 -142
  112. package/src/components/Notification/README.md +0 -409
  113. package/src/components/Notification/index.ts +0 -3
  114. package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
  115. package/src/components/POSConvention/POSConvention.tsx +0 -129
  116. package/src/components/POSConvention/POSConvention.types.ts +0 -38
  117. package/src/components/POSConvention/README.md +0 -123
  118. package/src/components/POSConvention/icons.tsx +0 -45
  119. package/src/components/POSConvention/index.ts +0 -3
  120. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
  121. package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
  122. package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
  123. package/src/components/POSLocationButton/README.md +0 -253
  124. package/src/components/POSLocationButton/icons.tsx +0 -120
  125. package/src/components/POSLocationButton/index.ts +0 -14
  126. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
  127. package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
  128. package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
  129. package/src/components/POSNumberButton/README.md +0 -321
  130. package/src/components/POSNumberButton/index.ts +0 -3
  131. package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
  132. package/src/components/POSProductButton/POSProductButton.tsx +0 -152
  133. package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
  134. package/src/components/POSProductButton/README.md +0 -269
  135. package/src/components/POSProductButton/index.ts +0 -2
  136. package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
  137. package/src/components/POSProductCard/POSProductCard.tsx +0 -208
  138. package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
  139. package/src/components/POSProductCard/README.md +0 -179
  140. package/src/components/POSProductCard/icons.tsx +0 -26
  141. package/src/components/POSProductCard/index.ts +0 -2
  142. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
  143. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
  144. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
  145. package/src/components/POSProductSidebarItems/README.md +0 -198
  146. package/src/components/POSProductSidebarItems/icons.tsx +0 -21
  147. package/src/components/POSProductSidebarItems/index.ts +0 -3
  148. package/src/components/POSTable/POSTable.stories.tsx +0 -737
  149. package/src/components/POSTable/POSTable.tsx +0 -401
  150. package/src/components/POSTable/POSTable.types.ts +0 -83
  151. package/src/components/POSTable/README.md +0 -286
  152. package/src/components/POSTable/index.ts +0 -7
  153. package/src/components/Pagination/Pagination.stories.tsx +0 -555
  154. package/src/components/Pagination/Pagination.tsx +0 -286
  155. package/src/components/Pagination/Pagination.types.ts +0 -93
  156. package/src/components/Pagination/README.md +0 -298
  157. package/src/components/Pagination/icons.tsx +0 -47
  158. package/src/components/Pagination/index.ts +0 -3
  159. package/src/components/Quantity/Quantity.stories.tsx +0 -457
  160. package/src/components/Quantity/Quantity.tsx +0 -289
  161. package/src/components/Quantity/Quantity.types.ts +0 -70
  162. package/src/components/Radio/Radio.stories.tsx +0 -523
  163. package/src/components/Radio/Radio.tsx +0 -170
  164. package/src/components/Radio/Radio.types.ts +0 -122
  165. package/src/components/Select/README.md +0 -299
  166. package/src/components/Select/Select.stories.tsx +0 -673
  167. package/src/components/Select/Select.tsx +0 -454
  168. package/src/components/Select/Select.types.ts +0 -148
  169. package/src/components/Select/icons.tsx +0 -50
  170. package/src/components/Select/index.ts +0 -3
  171. package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
  172. package/src/components/SignUpView/SignUpView.tsx +0 -503
  173. package/src/components/SignUpView/SignUpView.types.ts +0 -58
  174. package/src/components/SignUpView/icons.tsx +0 -71
  175. package/src/components/SignUpView/index.ts +0 -3
  176. package/src/components/Switch/README.md +0 -112
  177. package/src/components/Switch/Switch.stories.tsx +0 -550
  178. package/src/components/Switch/Switch.tsx +0 -246
  179. package/src/components/Switch/Switch.types.ts +0 -67
  180. package/src/components/Table/README.md +0 -369
  181. package/src/components/Table/Table.stories.tsx +0 -805
  182. package/src/components/Table/Table.tsx +0 -688
  183. package/src/components/Table/Table.types.ts +0 -204
  184. package/src/components/Table/index.ts +0 -9
  185. package/src/components/Tabs/README.md +0 -201
  186. package/src/components/Tabs/Tabs.stories.tsx +0 -580
  187. package/src/components/Tabs/Tabs.tsx +0 -356
  188. package/src/components/Tabs/Tabs.types.ts +0 -127
  189. package/src/components/Tabs/icons.tsx +0 -129
  190. package/src/components/Tabs/index.ts +0 -11
  191. package/src/components/Textarea/Textarea.stories.tsx +0 -535
  192. package/src/components/Textarea/Textarea.tsx +0 -188
  193. package/src/components/Textarea/Textarea.types.ts +0 -54
  194. package/src/context/ThemeContext.tsx +0 -99
  195. package/src/context/index.ts +0 -1
  196. package/src/index.css +0 -29
  197. package/src/index.ts +0 -102
  198. package/src/main.tsx +0 -10
  199. package/src/views/ListView/ListView.stories.tsx +0 -329
  200. package/src/views/ListView/ListView.tsx +0 -570
  201. package/src/views/ListView/ListView.types.ts +0 -211
  202. package/src/views/ListView/icons.tsx +0 -282
  203. package/src/views/ListView/index.ts +0 -11
  204. package/src/views/LoginView/LoginView.stories.tsx +0 -148
  205. package/src/views/LoginView/LoginView.tsx +0 -426
  206. package/src/views/LoginView/LoginView.types.ts +0 -52
  207. package/src/views/LoginView/README.md +0 -396
  208. package/src/views/LoginView/icons.tsx +0 -85
  209. package/src/views/LoginView/index.ts +0 -3
  210. package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
  211. package/src/views/ProductsView/ProductsView.tsx +0 -480
  212. package/src/views/ProductsView/ProductsView.types.ts +0 -238
  213. package/src/views/ProductsView/README.md +0 -312
  214. package/src/views/ProductsView/icons.tsx +0 -38
  215. package/src/views/ProductsView/index.ts +0 -8
  216. package/src/views/RecoverPasswordView/README.md +0 -269
  217. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
  218. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
  219. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
  220. package/src/views/RecoverPasswordView/icons.tsx +0 -17
  221. package/src/views/RecoverPasswordView/index.ts +0 -2
  222. package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
  223. package/src/views/SignUpView/SignUpView.tsx +0 -503
  224. package/src/views/SignUpView/SignUpView.types.ts +0 -58
  225. package/src/views/SignUpView/icons.tsx +0 -71
  226. package/src/views/SignUpView/index.ts +0 -3
  227. package/src/views/TableLayoutView/README.md +0 -268
  228. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
  229. package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
  230. package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
  231. package/src/views/TableLayoutView/icons.tsx +0 -113
  232. package/src/views/TableLayoutView/index.ts +0 -6
  233. package/storybook/main.ts +0 -20
  234. package/storybook/preview.tsx +0 -84
  235. package/storybook/vitest.setup.ts +0 -7
  236. package/tailwind.config.js +0 -128
@@ -1,219 +0,0 @@
1
- import type { ReactNode } from 'react';
2
-
3
- /**
4
- * Variante de dispositivo del Navbar
5
- * - `responsive`: Se adapta automáticamente al viewport (por defecto)
6
- * - `desktop`: Versión completa (≥1024px) con todos los elementos
7
- * - `tablet`: Versión tablet (≥768px) con elementos reducidos
8
- * - `mobile`: Versión simplificada (<768px) con logo icono y avatar circular
9
- *
10
- * @see https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4278-18626
11
- */
12
- export type NavbarVariant = 'responsive' | 'desktop' | 'tablet' | 'mobile';
13
-
14
- /**
15
- * Datos del dropdown de usuario
16
- *
17
- * @example
18
- * ```tsx
19
- * const userDropdown: UserDropdownProps = {
20
- * avatar: '/path/to/avatar.jpg',
21
- * name: 'Juan Pérez',
22
- * email: 'juan@ejemplo.com',
23
- * onMenuClick: () => setMenuOpen(true),
24
- * };
25
- * ```
26
- */
27
- export interface UserDropdownProps {
28
- /**
29
- * URL del avatar del usuario
30
- * Recomendado: mínimo 80x80px para retina
31
- */
32
- avatar: string;
33
-
34
- /**
35
- * Nombre del usuario (se muestra en desktop/tablet)
36
- */
37
- name: string;
38
-
39
- /**
40
- * Email del usuario (se muestra en desktop/tablet)
41
- */
42
- email?: string;
43
-
44
- /**
45
- * Rol del usuario (alternativa a email, ej: "Administrador")
46
- */
47
- role?: string;
48
-
49
- /**
50
- * Handler para click en el dropdown de usuario
51
- */
52
- onMenuClick?: () => void;
53
- }
54
-
55
- /**
56
- * Configuración de badges de notificación
57
- *
58
- * @example
59
- * ```tsx
60
- * const notifications: NotificationsProps = {
61
- * cart: 15, // Muestra badge con "15"
62
- * bell: true, // Muestra dot de notificación
63
- * };
64
- * ```
65
- */
66
- export interface NotificationsProps {
67
- /**
68
- * Número de items en el carrito
69
- * Si es > 99, muestra "+99"
70
- */
71
- cart?: number;
72
-
73
- /**
74
- * Muestra dot de notificación en la campana
75
- */
76
- bell?: boolean;
77
- }
78
-
79
- /**
80
- * Props del componente Navbar
81
- *
82
- * Barra de navegación principal con soporte completo para responsive design y dark mode.
83
- * Incluye logo, nombre de producto, badge de ambiente, botones de acción y dropdown de usuario.
84
- *
85
- * **Mejores prácticas implementadas:**
86
- * - Orden de modificadores: {responsive}:{dark}:{state}:{utility}
87
- * - Dark mode con estrategia 'class' (darkMode: 'class')
88
- * - Tokens de color consistentes con la documentación
89
- * - Focus rings adaptativos para light y dark mode
90
- * - Tipografía del sistema: Heading/Tiny (20px Bold), Paragraph/Small (14px), Paragraph/Tiny (12px)
91
- * - Spacing del sistema: 4px, 8px, 12px, 16px, 32px
92
- *
93
- * @see docs/colors.md - Sistema de colores y tokens dark mode
94
- * @see docs/typography.md - Sistema tipográfico (Heading, Paragraph)
95
- * @see docs/spacing.md - Sistema de espaciado
96
- * @see docs/shadows.md - Sistema de sombras (button-inset)
97
- */
98
- export interface NavbarProps {
99
- /**
100
- * Logo del negocio/cliente (componente o imagen)
101
- * Solo visible en desktop/tablet
102
- *
103
- * @default Logo por defecto de la carpeta public
104
- */
105
- logo?: ReactNode;
106
-
107
- /**
108
- * Logo de Siesa personalizado
109
- * Si no se proporciona, usa el logo por defecto según variante
110
- *
111
- * @default Logo Siesa de la carpeta public
112
- */
113
- siesaLogo?: ReactNode;
114
-
115
- /**
116
- * Nombre del producto que aparece después del logo
117
- * Solo visible en desktop/tablet (se oculta en mobile)
118
- *
119
- * @default 'Nombre Producto'
120
- */
121
- productName?: string;
122
-
123
- /**
124
- * Badge de ambiente/entorno (ej: "Ambiente de Pruebas")
125
- * En mobile muestra versión corta ("Pruebas")
126
- */
127
- environmentBadge?: string;
128
-
129
- /**
130
- * Contenido del dropdown de usuario
131
- */
132
- userDropdown?: UserDropdownProps;
133
-
134
- /**
135
- * Elementos de acción adicionales en la barra (botones, iconos, etc.)
136
- * Se muestran a la derecha después del dropdown de usuario
137
- */
138
- actions?: ReactNode;
139
-
140
- /**
141
- * Configuración de badges de notificación para los botones
142
- */
143
- notifications?: NotificationsProps;
144
-
145
- /**
146
- * Clases CSS adicionales para el contenedor del navbar
147
- */
148
- className?: string;
149
-
150
- /**
151
- * Modo de visualización del navbar
152
- * - `responsive`: Se adapta automáticamente al viewport
153
- * - `desktop`: Versión completa (1360x64px)
154
- * - `tablet`: Versión tablet (1024x64px)
155
- * - `mobile`: Versión compacta (428x40px)
156
- *
157
- * @default 'responsive'
158
- */
159
- variant?: NavbarVariant;
160
-
161
- /**
162
- * Ocultar botones de acción (carrito, notificaciones, búsqueda)
163
- *
164
- * @default false
165
- */
166
- hideActionButtons?: boolean;
167
-
168
- /**
169
- * Elemento leading personalizado (reemplaza el botón de navegación por defecto)
170
- * Solo visible en desktop/tablet
171
- */
172
- leadingAction?: ReactNode;
173
-
174
- /**
175
- * Mostrar Business Logo en el leading (lado izquierdo)
176
- * Solo visible en desktop/tablet
177
- *
178
- * @default false
179
- */
180
- showBusinessLogo?: boolean;
181
-
182
- /**
183
- * Mostrar Logo de Siesa en el leading (lado izquierdo)
184
- * Solo visible en desktop/tablet (en mobile siempre muestra el icono)
185
- *
186
- * @default true
187
- */
188
- showSiesaLogoLeading?: boolean;
189
-
190
- /**
191
- * Mostrar Logo de Siesa en el trailing (lado derecho)
192
- * Solo visible en desktop/tablet
193
- *
194
- * @default false
195
- */
196
- showSiesaLogoTrailing?: boolean;
197
-
198
- /**
199
- * Handler para click en el botón de navegación (flecha izquierda)
200
- * Solo visible en desktop/tablet cuando no hay leadingAction
201
- */
202
- onNavigationClick?: () => void;
203
-
204
- /**
205
- * Handler para click en el botón de búsqueda
206
- * Solo visible en mobile
207
- */
208
- onSearchClick?: () => void;
209
-
210
- /**
211
- * Handler para click en el botón de carrito
212
- */
213
- onCartClick?: () => void;
214
-
215
- /**
216
- * Handler para click en el botón de notificaciones
217
- */
218
- onNotificationsClick?: () => void;
219
- }
@@ -1,279 +0,0 @@
1
- # Navbar
2
-
3
- Barra de navegación principal del sistema de diseño Siesa UI Kit con soporte completo para responsive design y dark mode.
4
-
5
- ## Características
6
-
7
- - **4 Variantes**: `responsive` (default), `desktop`, `tablet`, `mobile`
8
- - **Dark Mode Completo**: Todos los elementos con tokens adaptativos
9
- - **Tokens del Sistema**: NO colores hardcodeados
10
- - **Focus Rings Adaptativos**: Para accesibilidad en light y dark mode
11
- - **Logo Personalizable**: Acepta componente custom o usa logo por defecto
12
- - **Badge de Ambiente**: Usa el componente Badge con color yellow del sistema
13
- - **Notificaciones**: Badges con token `error-content` para consistencia
14
- - **Dropdown de Usuario**: Avatar con nombre y email
15
- - **Logo Siesa Trailing**: Opcional, solo en desktop
16
- - **TypeScript Estricto**: Tipado completo con interfaces
17
- - **Accesibilidad**: ARIA labels en todos los botones
18
- - **Handlers de Eventos**: Callbacks para navegación, búsqueda, carrito y notificaciones
19
-
20
- ## Especificaciones de Figma
21
-
22
- | Variante | Tamaño | Elementos |
23
- |----------|--------|-----------|
24
- | **Desktop** | 1360x64px | Botón nav, Logo business, Siesa logo, Nombre producto, Badge, Botones, Dropdown, Siesa logo trailing |
25
- | **Tablet** | 1024x64px | Similar a desktop pero logos más pequeños, sin Siesa trailing |
26
- | **Mobile** | 428x40px | Solo Siesa icono (30x30), Badge "Pruebas", Botón búsqueda, Avatar circular |
27
-
28
- ## Instalación
29
-
30
- ```tsx
31
- import { Navbar } from '@/components/Navbar';
32
- ```
33
-
34
- ## Uso Básico
35
-
36
- ```tsx
37
- <Navbar
38
- productName="Mi Aplicación"
39
- environmentBadge="Ambiente de Pruebas"
40
- userDropdown={{
41
- avatar: "/path/to/avatar.jpg",
42
- name: "Juan Pérez",
43
- email: "juan@ejemplo.com",
44
- }}
45
- />
46
- ```
47
-
48
- ## Con Handlers de Eventos
49
-
50
- ```tsx
51
- <Navbar
52
- productName="Portal Empresarial"
53
- environmentBadge="Ambiente de Pruebas"
54
- userDropdown={{
55
- avatar: "/path/to/avatar.jpg",
56
- name: "María García",
57
- email: "maria@miempresa.com",
58
- onMenuClick: () => openUserMenu(),
59
- }}
60
- notifications={{
61
- cart: 15,
62
- bell: true,
63
- }}
64
- onNavigationClick={() => router.back()}
65
- onSearchClick={() => openSearch()}
66
- onCartClick={() => openCart()}
67
- onNotificationsClick={() => openNotifications()}
68
- />
69
- ```
70
-
71
- ## Variantes de Dispositivo
72
-
73
- ### Desktop
74
-
75
- ```tsx
76
- <Navbar
77
- variant="desktop"
78
- productName="Sistema de Gestión"
79
- showTrailingSiesaLogo={true}
80
- // ... resto de props
81
- />
82
- ```
83
-
84
- ### Tablet
85
-
86
- ```tsx
87
- <Navbar
88
- variant="tablet"
89
- productName="Sistema de Gestión"
90
- // ... resto de props
91
- />
92
- ```
93
-
94
- ### Mobile
95
-
96
- ```tsx
97
- <Navbar
98
- variant="mobile"
99
- environmentBadge="Ambiente de Pruebas"
100
- // productName se ignora en mobile
101
- // ... resto de props
102
- />
103
- ```
104
-
105
- ## Props
106
-
107
- ### NavbarProps
108
-
109
- | Prop | Tipo | Default | Descripción |
110
- |------|------|---------|-------------|
111
- | `logo` | `ReactNode` | Logo business | Logo del negocio/cliente (solo desktop/tablet) |
112
- | `siesaLogo` | `ReactNode` | Logo Siesa | Logo de Siesa personalizado |
113
- | `productName` | `string` | `'Nombre Producto'` | Nombre del producto (solo desktop/tablet) |
114
- | `environmentBadge` | `string` | `undefined` | Texto del badge de ambiente |
115
- | `userDropdown` | `UserDropdownProps` | `undefined` | Datos del dropdown de usuario |
116
- | `actions` | `ReactNode` | `undefined` | Elementos adicionales en trailing |
117
- | `notifications` | `NotificationsProps` | `undefined` | Configuración de badges |
118
- | `className` | `string` | `''` | Clases CSS adicionales |
119
- | `variant` | `NavbarVariant` | `'responsive'` | Modo de visualización |
120
- | `hideActionButtons` | `boolean` | `false` | Ocultar botones de acción |
121
- | `leadingAction` | `ReactNode` | `undefined` | Elemento leading personalizado |
122
- | `showTrailingSiesaLogo` | `boolean` | `true` | Mostrar Siesa logo en trailing (solo desktop) |
123
- | `onNavigationClick` | `() => void` | `undefined` | Handler para botón de navegación |
124
- | `onSearchClick` | `() => void` | `undefined` | Handler para búsqueda (solo mobile) |
125
- | `onCartClick` | `() => void` | `undefined` | Handler para carrito |
126
- | `onNotificationsClick` | `() => void` | `undefined` | Handler para notificaciones |
127
-
128
- ### UserDropdownProps
129
-
130
- ```typescript
131
- interface UserDropdownProps {
132
- avatar: string; // URL del avatar (mínimo 80x80px para retina)
133
- name: string; // Nombre del usuario
134
- email?: string; // Email del usuario
135
- role?: string; // Rol (alternativa a email)
136
- onMenuClick?: () => void; // Handler para click
137
- }
138
- ```
139
-
140
- ### NotificationsProps
141
-
142
- ```typescript
143
- interface NotificationsProps {
144
- cart?: number; // Número de items (>99 muestra "+99")
145
- bell?: boolean; // Dot de notificación
146
- }
147
- ```
148
-
149
- ### NavbarVariant
150
-
151
- ```typescript
152
- type NavbarVariant = 'responsive' | 'desktop' | 'tablet' | 'mobile';
153
- ```
154
-
155
- ## Dark Mode
156
-
157
- El componente se adapta automáticamente al dark mode usando la clase `.dark` en el elemento `<html>`.
158
-
159
- ### Tokens de Color
160
-
161
- | Elemento | Light Token | Dark Token |
162
- |----------|-------------|------------|
163
- | **Fondo** | `bg-background-primary` | `dark:bg-dark-bg-primary` |
164
- | **Texto principal** | `text-content-primary` | `dark:text-dark-content-primary` |
165
- | **Texto secundario** | `text-content-secondary` | `dark:text-content-secondary` |
166
- | **Bordes divider** | `bg-border-primary` | `dark:bg-dark-border-primary` |
167
- | **Iconos acción** | `text-primary-custom-600` | `dark:text-primary-custom-600` |
168
- | **Hover buttons** | `hover:bg-background-secondary` | `dark:hover:bg-dark-bg-secondary` |
169
- | **Botón navegación** | `bg-primary-custom-600` | `dark:bg-dark-bg-inverse` |
170
- | **Badge notificación** | `bg-error-content` | `dark:bg-error-content` |
171
- | **Focus ring** | `focus:ring-primary-custom-400` | `dark:focus:ring-dark-border-custom` |
172
- | **Focus offset** | `focus:ring-offset-2` | `dark:focus:ring-offset-dark-bg-primary` |
173
-
174
- ### Estados Interactivos
175
-
176
- Todos los botones incluyen:
177
- - **Hover**: Cambio de fondo adaptativo
178
- - **Active**: `scale-95` para feedback visual
179
- - **Focus**: Ring adaptativo con offset correcto
180
- - **Transiciones**: `transition-all duration-150`
181
-
182
- ## Responsive Behavior
183
-
184
- | Elemento | Desktop (lg:) | Tablet (md:) | Mobile |
185
- |----------|---------------|--------------|--------|
186
- | **Altura** | 64px | 64px | 40px |
187
- | **Botón navegación** | Visible | Visible | Oculto |
188
- | **Business Logo** | 168x30px | 140x25px | Oculto |
189
- | **Siesa Logo Leading** | 120x30px | 100x25px | 30x30px (icono) |
190
- | **Nombre producto** | Visible | Visible | Oculto |
191
- | **Dividers** | Visibles | Visibles | Ocultos |
192
- | **Badge ambiente** | Texto completo | Texto completo | "Pruebas" |
193
- | **Botón búsqueda** | Oculto | Oculto | Visible |
194
- | **Avatar** | 40x40 rounded-md | 40x40 rounded-md | 32x32 rounded-full |
195
- | **Nombre/email** | Visibles | Visibles | Ocultos |
196
- | **Chevron** | Visible | Visible | Oculto |
197
- | **Siesa Logo Trailing** | Visible | Oculto | Oculto |
198
-
199
- ## Mejores Prácticas
200
-
201
- ### Hacer
202
-
203
- 1. Usar la variante `responsive` (default) para adaptación automática
204
- 2. Proporcionar siempre `userDropdown` para mostrar información del usuario
205
- 3. Usar avatares de alta resolución (mínimo 80x80px)
206
- 4. Mantener `productName` corto (idealmente <25 caracteres)
207
- 5. Actualizar `notifications` dinámicamente
208
- 6. Usar solo tokens del sistema para customización
209
- 7. Testear estados de focus con teclado (Tab)
210
- 8. Implementar handlers para interactividad
211
-
212
- ### Evitar
213
-
214
- 1. No forzar variantes a menos que sea necesario
215
- 2. No usar textos muy largos en `productName`
216
- 3. No olvidar `environmentBadge` en desarrollo/prueba
217
- 4. No mezclar el navbar con otros headers
218
- 5. No usar colores hardcodeados (hex)
219
- 6. No omitir handlers para elementos interactivos
220
-
221
- ## Archivos del Componente
222
-
223
- ```
224
- src/components/Navbar/
225
- ├── Navbar.tsx # Componente principal
226
- ├── Navbar.types.ts # Tipos e interfaces
227
- ├── Navbar.stories.tsx # Stories de Storybook
228
- ├── icons.tsx # Iconos Heroicons Micro
229
- ├── index.ts # Exports
230
- └── README.md # Documentación
231
- ```
232
-
233
- ## Referencias
234
-
235
- - **Figma**: [Navbar Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4278-18626&m=dev)
236
- - **Docs**:
237
- - `docs/colors.md` - Sistema de colores
238
- - `docs/typography.md` - Sistema tipográfico
239
- - `docs/spacing.md` - Sistema de espaciado
240
- - `docs/shadows.md` - Sistema de sombras
241
- - `docs/dark-mode-guide.md` - Guía de dark mode
242
-
243
- ## Changelog
244
-
245
- ### Version 1.2.0 (2025-12-02) - Corrección Completa Siesa UI Kit Specialist
246
-
247
- **Nuevas características:**
248
- - Variante `tablet` añadida para soporte completo responsive
249
- - `showTrailingSiesaLogo` prop para controlar logo Siesa en trailing
250
- - Handlers de eventos: `onNavigationClick`, `onSearchClick`, `onCartClick`, `onNotificationsClick`
251
- - Tipos exportados: `NavbarVariant`, `UserDropdownProps`, `NotificationsProps`
252
-
253
- **Correcciones:**
254
- - Dark mode completo en todos los elementos con tokens del sistema
255
- - Focus rings adaptativos para light y dark mode
256
- - Botón de navegación con `shadow-button-inset` según Button de referencia
257
- - Badge de ambiente usa componente Badge correctamente
258
- - Hover states con tokens: `hover:bg-background-secondary` / `dark:hover:bg-dark-bg-secondary`
259
- - Fondo del navbar con tokens: `bg-background-primary` / `dark:bg-dark-bg-primary`
260
-
261
- **Mejoras:**
262
- - JSDoc completo con referencias `@see` a documentación
263
- - Stories actualizadas con ejemplos de todas las variantes
264
- - README actualizado con tabla de tokens y especificaciones
265
-
266
- ### Version 1.1.0 (2025-11-19)
267
- - Corrección de colores hardcodeados
268
- - Añadidos focus rings adaptativos
269
- - Active states con scale-95
270
-
271
- ### Version 1.0.0 (2025-11-18)
272
- - Componente inicial con soporte responsive
273
- - Dark mode básico
274
- - Badges de notificación
275
-
276
- ---
277
-
278
- **Mantenido por**: Equipo Siesa UI Kit
279
- **Última actualización**: 2025-12-02
@@ -1,102 +0,0 @@
1
- /**
2
- * Iconos para el componente Navbar
3
- * Basados en Heroicons Micro (16x16px)
4
- */
5
-
6
- export const ShoppingCartIcon = () => (
7
- <svg
8
- xmlns="http://www.w3.org/2000/svg"
9
- viewBox="0 0 16 16"
10
- fill="currentColor"
11
- width="16"
12
- height="16"
13
- >
14
- <path d="M1.75 1.002a.75.75 0 1 0 0 1.5h1.035l1.38 5.514a2.75 2.75 0 0 0 2.658 2.048h5.355a2.75 2.75 0 0 0 2.658-2.048l.9-3.597a.75.75 0 0 0-.728-.919H4.655l-.22-.88A.75.75 0 0 0 3.71 2H1.75ZM5 13a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0ZM11.5 13a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Z" />
15
- </svg>
16
- );
17
-
18
- export const BellIcon = () => (
19
- <svg
20
- xmlns="http://www.w3.org/2000/svg"
21
- viewBox="0 0 16 16"
22
- fill="currentColor"
23
- width="16"
24
- height="16"
25
- >
26
- <path
27
- fillRule="evenodd"
28
- d="M12 5a4 4 0 0 0-8 0v2.379a1.5 1.5 0 0 1-.44 1.06L2.294 9.707a1 1 0 0 0-.293.707V11a1 1 0 0 0 1 1h2a3 3 0 1 0 6 0h2a1 1 0 0 0 1-1v-.586a1 1 0 0 0-.293-.707L12.44 8.44A1.5 1.5 0 0 1 12 7.38V5Zm-5.5 7a1.5 1.5 0 0 0 3 0h-3Z"
29
- clipRule="evenodd"
30
- />
31
- </svg>
32
- );
33
-
34
- export const MagnifyingGlassIcon = () => (
35
- <svg
36
- xmlns="http://www.w3.org/2000/svg"
37
- viewBox="0 0 16 16"
38
- fill="currentColor"
39
- width="16"
40
- height="16"
41
- >
42
- <path
43
- fillRule="evenodd"
44
- d="M9.965 11.026a5 5 0 1 1 1.06-1.06l2.755 2.754a.75.75 0 1 1-1.06 1.06l-2.755-2.754ZM10.5 7a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z"
45
- clipRule="evenodd"
46
- />
47
- </svg>
48
- );
49
-
50
- export const ChevronDownIcon = () => (
51
- <svg
52
- xmlns="http://www.w3.org/2000/svg"
53
- viewBox="0 0 16 16"
54
- fill="currentColor"
55
- width="16"
56
- height="16"
57
- >
58
- <path
59
- fillRule="evenodd"
60
- d="M4.22 6.22a.75.75 0 0 1 1.06 0L8 8.94l2.72-2.72a.75.75 0 1 1 1.06 1.06l-3.25 3.25a.75.75 0 0 1-1.06 0L4.22 7.28a.75.75 0 0 1 0-1.06Z"
61
- clipRule="evenodd"
62
- />
63
- </svg>
64
- );
65
-
66
- export const ExclamationTriangleIcon = () => (
67
- <svg
68
- xmlns="http://www.w3.org/2000/svg"
69
- viewBox="0 0 16 16"
70
- fill="currentColor"
71
- width="16"
72
- height="16"
73
- >
74
- <path
75
- fillRule="evenodd"
76
- d="M6.701 2.25c.577-1 2.02-1 2.598 0l5.196 9a1.5 1.5 0 0 1-1.299 2.25H2.804a1.5 1.5 0 0 1-1.3-2.25l5.197-9ZM8 4a.75.75 0 0 1 .75.75v3a.75.75 0 1 1-1.5 0v-3A.75.75 0 0 1 8 4Zm0 7.25a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"
77
- clipRule="evenodd"
78
- />
79
- </svg>
80
- );
81
-
82
- export const NotificationDot = () => (
83
- <svg width="8" height="8" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
84
- <circle cx="4" cy="4" r="4" fill="currentColor" />
85
- </svg>
86
- );
87
-
88
- export const ArrowLeftStartOnRectangleIcon = () => (
89
- <svg
90
- xmlns="http://www.w3.org/2000/svg"
91
- viewBox="0 0 16 16"
92
- fill="currentColor"
93
- width="16"
94
- height="16"
95
- >
96
- <path
97
- fillRule="evenodd"
98
- d="M14 4.75A2.75 2.75 0 0 0 11.25 2h-3A2.75 2.75 0 0 0 5.5 4.75v.5a.75.75 0 0 0 1.5 0v-.5c0-.69.56-1.25 1.25-1.25h3c.69 0 1.25.56 1.25 1.25v6.5c0 .69-.56 1.25-1.25 1.25h-3c-.69 0-1.25-.56-1.25-1.25v-.5a.75.75 0 0 0-1.5 0v.5A2.75 2.75 0 0 0 8.25 14h3A2.75 2.75 0 0 0 14 11.25v-6.5Zm-9.47.47a.75.75 0 0 0-1.06 0L1.22 7.47a.75.75 0 0 0 0 1.06l2.25 2.25a.75.75 0 1 0 1.06-1.06l-.97-.97h5.69a.75.75 0 0 0 0-1.5H3.56l.97-.97a.75.75 0 0 0 0-1.06Z"
99
- clipRule="evenodd"
100
- />
101
- </svg>
102
- );
@@ -1,8 +0,0 @@
1
- export { Navbar } from './Navbar';
2
- export type {
3
- NavbarProps,
4
- NavbarVariant,
5
- UserDropdownProps,
6
- NotificationsProps,
7
- } from './Navbar.types';
8
- export * from './icons';