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,279 +1,279 @@
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
+ # 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,8 +1,8 @@
1
- export { Navbar } from './Navbar';
2
- export type {
3
- NavbarProps,
4
- NavbarVariant,
5
- UserDropdownProps,
6
- NotificationsProps,
7
- } from './Navbar.types';
8
- export * from './icons';
1
+ export { Navbar } from './Navbar';
2
+ export type {
3
+ NavbarProps,
4
+ NavbarVariant,
5
+ UserDropdownProps,
6
+ NotificationsProps,
7
+ } from './Navbar.types';
8
+ export * from './icons';