siesa-ui-kit 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. package/dist/index.cjs +1479 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.js +1479 -0
  4. package/dist/index.js.map +1 -0
  5. package/package.json +23 -14
  6. package/claude/agents/siesa-ui-kit-specialist.md +0 -2401
  7. package/claude/prompts/component-template.md +0 -121
  8. package/claude/settings.local.json +0 -61
  9. package/docs/border-radius.md +0 -1261
  10. package/docs/colors.md +0 -832
  11. package/docs/dark-mode-guide.md +0 -1426
  12. package/docs/filters.md +0 -1243
  13. package/docs/icons.md +0 -1283
  14. package/docs/shadows.md +0 -1377
  15. package/docs/spacing.md +0 -1684
  16. package/docs/typography.md +0 -1268
  17. package/postcss.config.cjs +0 -6
  18. package/src/App.css +0 -42
  19. package/src/App.tsx +0 -8
  20. package/src/ButtonTest.tsx +0 -147
  21. package/src/assets/fonts/README.md +0 -261
  22. package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
  23. package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
  24. package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
  25. package/src/assets/react.svg +0 -1
  26. package/src/components/Alert/Alert.stories.tsx +0 -332
  27. package/src/components/Alert/Alert.tsx +0 -106
  28. package/src/components/Alert/Alert.types.ts +0 -54
  29. package/src/components/Avatar/Avatar.stories.tsx +0 -494
  30. package/src/components/Avatar/Avatar.tsx +0 -143
  31. package/src/components/Avatar/Avatar.types.ts +0 -53
  32. package/src/components/Badge/Badge.stories.tsx +0 -339
  33. package/src/components/Badge/Badge.tsx +0 -278
  34. package/src/components/Badge/Badge.types.ts +0 -58
  35. package/src/components/Button/Button.stories.tsx +0 -950
  36. package/src/components/Button/Button.tsx +0 -337
  37. package/src/components/Button/Button.types.ts +0 -180
  38. package/src/components/Button/icons.tsx +0 -87
  39. package/src/components/Button/index.ts +0 -3
  40. package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
  41. package/src/components/Checkbox/Checkbox.tsx +0 -208
  42. package/src/components/Checkbox/Checkbox.types.ts +0 -61
  43. package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
  44. package/src/components/DescriptionList/DescriptionList.tsx +0 -96
  45. package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
  46. package/src/components/Divider/Divider.stories.tsx +0 -263
  47. package/src/components/Divider/Divider.tsx +0 -80
  48. package/src/components/Divider/Divider.types.ts +0 -24
  49. package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
  50. package/src/components/Dropdown/Dropdown.tsx +0 -422
  51. package/src/components/Dropdown/Dropdown.types.ts +0 -146
  52. package/src/components/Dropdown/README.md +0 -266
  53. package/src/components/Dropdown/icons.tsx +0 -72
  54. package/src/components/Dropdown/index.ts +0 -8
  55. package/src/components/Input/Input.stories.tsx +0 -583
  56. package/src/components/Input/Input.tsx +0 -204
  57. package/src/components/Input/Input.types.ts +0 -80
  58. package/src/components/Input/icons.tsx +0 -145
  59. package/src/components/Input/index.ts +0 -2
  60. package/src/components/LoginView/LoginView.stories.tsx +0 -148
  61. package/src/components/LoginView/LoginView.tsx +0 -426
  62. package/src/components/LoginView/LoginView.types.ts +0 -52
  63. package/src/components/LoginView/README.md +0 -396
  64. package/src/components/LoginView/icons.tsx +0 -85
  65. package/src/components/LoginView/index.ts +0 -3
  66. package/src/components/Navbar/Navbar.stories.tsx +0 -810
  67. package/src/components/Navbar/Navbar.tsx +0 -755
  68. package/src/components/Navbar/Navbar.types.ts +0 -219
  69. package/src/components/Navbar/README.md +0 -279
  70. package/src/components/Navbar/icons.tsx +0 -102
  71. package/src/components/Navbar/index.ts +0 -8
  72. package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
  73. package/src/components/NavigationBar/NavigationBar.tsx +0 -246
  74. package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
  75. package/src/components/NavigationBar/README.md +0 -469
  76. package/src/components/NavigationBar/index.ts +0 -2
  77. package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
  78. package/src/components/NavigationRail/NavigationRail.tsx +0 -418
  79. package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
  80. package/src/components/NavigationRail/README.md +0 -224
  81. package/src/components/NavigationRail/index.ts +0 -2
  82. package/src/components/Notification/Notification.stories.tsx +0 -513
  83. package/src/components/Notification/Notification.tsx +0 -145
  84. package/src/components/Notification/Notification.types.ts +0 -142
  85. package/src/components/Notification/README.md +0 -409
  86. package/src/components/Notification/index.ts +0 -3
  87. package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
  88. package/src/components/POSConvention/POSConvention.tsx +0 -129
  89. package/src/components/POSConvention/POSConvention.types.ts +0 -38
  90. package/src/components/POSConvention/README.md +0 -123
  91. package/src/components/POSConvention/icons.tsx +0 -45
  92. package/src/components/POSConvention/index.ts +0 -3
  93. package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
  94. package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
  95. package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
  96. package/src/components/POSLocationButton/README.md +0 -253
  97. package/src/components/POSLocationButton/icons.tsx +0 -120
  98. package/src/components/POSLocationButton/index.ts +0 -14
  99. package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
  100. package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
  101. package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
  102. package/src/components/POSNumberButton/README.md +0 -321
  103. package/src/components/POSNumberButton/index.ts +0 -3
  104. package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
  105. package/src/components/POSProductButton/POSProductButton.tsx +0 -152
  106. package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
  107. package/src/components/POSProductButton/README.md +0 -269
  108. package/src/components/POSProductButton/index.ts +0 -2
  109. package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
  110. package/src/components/POSProductCard/POSProductCard.tsx +0 -208
  111. package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
  112. package/src/components/POSProductCard/README.md +0 -179
  113. package/src/components/POSProductCard/icons.tsx +0 -26
  114. package/src/components/POSProductCard/index.ts +0 -2
  115. package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
  116. package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
  117. package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
  118. package/src/components/POSProductSidebarItems/README.md +0 -198
  119. package/src/components/POSProductSidebarItems/icons.tsx +0 -21
  120. package/src/components/POSProductSidebarItems/index.ts +0 -3
  121. package/src/components/POSTable/POSTable.stories.tsx +0 -737
  122. package/src/components/POSTable/POSTable.tsx +0 -401
  123. package/src/components/POSTable/POSTable.types.ts +0 -83
  124. package/src/components/POSTable/README.md +0 -286
  125. package/src/components/POSTable/index.ts +0 -7
  126. package/src/components/Pagination/Pagination.stories.tsx +0 -555
  127. package/src/components/Pagination/Pagination.tsx +0 -286
  128. package/src/components/Pagination/Pagination.types.ts +0 -93
  129. package/src/components/Pagination/README.md +0 -298
  130. package/src/components/Pagination/icons.tsx +0 -47
  131. package/src/components/Pagination/index.ts +0 -3
  132. package/src/components/Quantity/Quantity.stories.tsx +0 -457
  133. package/src/components/Quantity/Quantity.tsx +0 -289
  134. package/src/components/Quantity/Quantity.types.ts +0 -70
  135. package/src/components/Radio/Radio.stories.tsx +0 -523
  136. package/src/components/Radio/Radio.tsx +0 -170
  137. package/src/components/Radio/Radio.types.ts +0 -122
  138. package/src/components/Select/README.md +0 -299
  139. package/src/components/Select/Select.stories.tsx +0 -673
  140. package/src/components/Select/Select.tsx +0 -454
  141. package/src/components/Select/Select.types.ts +0 -148
  142. package/src/components/Select/icons.tsx +0 -50
  143. package/src/components/Select/index.ts +0 -3
  144. package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
  145. package/src/components/SignUpView/SignUpView.tsx +0 -503
  146. package/src/components/SignUpView/SignUpView.types.ts +0 -58
  147. package/src/components/SignUpView/icons.tsx +0 -71
  148. package/src/components/SignUpView/index.ts +0 -3
  149. package/src/components/Switch/README.md +0 -112
  150. package/src/components/Switch/Switch.stories.tsx +0 -550
  151. package/src/components/Switch/Switch.tsx +0 -246
  152. package/src/components/Switch/Switch.types.ts +0 -67
  153. package/src/components/Table/README.md +0 -369
  154. package/src/components/Table/Table.stories.tsx +0 -805
  155. package/src/components/Table/Table.tsx +0 -688
  156. package/src/components/Table/Table.types.ts +0 -204
  157. package/src/components/Table/index.ts +0 -9
  158. package/src/components/Tabs/README.md +0 -201
  159. package/src/components/Tabs/Tabs.stories.tsx +0 -580
  160. package/src/components/Tabs/Tabs.tsx +0 -356
  161. package/src/components/Tabs/Tabs.types.ts +0 -127
  162. package/src/components/Tabs/icons.tsx +0 -129
  163. package/src/components/Tabs/index.ts +0 -11
  164. package/src/components/Textarea/Textarea.stories.tsx +0 -535
  165. package/src/components/Textarea/Textarea.tsx +0 -188
  166. package/src/components/Textarea/Textarea.types.ts +0 -54
  167. package/src/context/ThemeContext.tsx +0 -99
  168. package/src/context/index.ts +0 -1
  169. package/src/index.css +0 -29
  170. package/src/index.ts +0 -39
  171. package/src/main.tsx +0 -10
  172. package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
  173. package/src/views/ProductsView/ProductsView.tsx +0 -480
  174. package/src/views/ProductsView/ProductsView.types.ts +0 -238
  175. package/src/views/ProductsView/README.md +0 -312
  176. package/src/views/ProductsView/icons.tsx +0 -38
  177. package/src/views/ProductsView/index.ts +0 -8
  178. package/src/views/RecoverPasswordView/README.md +0 -269
  179. package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
  180. package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
  181. package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
  182. package/src/views/RecoverPasswordView/icons.tsx +0 -17
  183. package/src/views/RecoverPasswordView/index.ts +0 -2
  184. package/src/views/TableLayoutView/README.md +0 -268
  185. package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
  186. package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
  187. package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
  188. package/src/views/TableLayoutView/icons.tsx +0 -113
  189. package/src/views/TableLayoutView/index.ts +0 -6
  190. package/storybook/main.ts +0 -20
  191. package/storybook/preview.tsx +0 -84
  192. package/storybook/vitest.setup.ts +0 -7
  193. package/tailwind.config.js +0 -128
  194. /package/{public → dist}/,Business Logo.png +0 -0
  195. /package/{public → dist}/.Siesa Logo.png +0 -0
  196. /package/{public → dist}/bg_siesa.png +0 -0
  197. /package/{public → dist}/siesa_logo_mobile.png +0 -0
  198. /package/{public → dist}/vite.svg +0 -0
@@ -1,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';