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,201 +1,201 @@
1
- # Tabs
2
-
3
- Componente de navegación por pestañas del sistema de diseño Siesa UI Kit.
4
-
5
- ## Descripción
6
-
7
- El componente `Tabs` proporciona una interfaz de navegación horizontal que permite a los usuarios cambiar entre diferentes vistas o secciones de contenido. Está diseñado siguiendo las especificaciones de Figma con soporte completo para dark mode.
8
-
9
- ## Características
10
-
11
- - ✅ Estados: Default, Hover, Focus, Active, Disabled
12
- - ✅ Soporte para iconos (Heroicons Micro 16x16)
13
- - ✅ Badge de notificación con contador
14
- - ✅ Dark mode completo
15
- - ✅ Modo controlado y no controlado
16
- - ✅ Accesibilidad con ARIA roles
17
- - ✅ TypeScript estricto
18
-
19
- ## Instalación
20
-
21
- El componente está incluido en el Siesa UI Kit. Importa desde la carpeta de componentes:
22
-
23
- ```tsx
24
- import { Tabs, Tab } from '@/components/Tabs';
25
- import type { TabItem } from '@/components/Tabs';
26
- ```
27
-
28
- ## Uso Básico
29
-
30
- ### Modo No Controlado
31
-
32
- ```tsx
33
- <Tabs
34
- items={[
35
- { id: 'inicio', label: 'Inicio' },
36
- { id: 'perfil', label: 'Perfil' },
37
- { id: 'configuracion', label: 'Configuración' },
38
- ]}
39
- defaultActiveId="inicio"
40
- />
41
- ```
42
-
43
- ### Modo Controlado
44
-
45
- ```tsx
46
- const [activeTab, setActiveTab] = useState('inicio');
47
-
48
- <Tabs
49
- items={[
50
- { id: 'inicio', label: 'Inicio' },
51
- { id: 'perfil', label: 'Perfil' },
52
- { id: 'configuracion', label: 'Configuración' },
53
- ]}
54
- activeId={activeTab}
55
- onChange={setActiveTab}
56
- />
57
- ```
58
-
59
- ### Con Iconos
60
-
61
- ```tsx
62
- import { HomeIcon, UserIcon, CogIcon } from '@/components/Tabs';
63
-
64
- <Tabs
65
- items={[
66
- { id: 'inicio', label: 'Inicio', icon: <HomeIcon className="w-3 h-3" /> },
67
- { id: 'perfil', label: 'Perfil', icon: <UserIcon className="w-3 h-3" /> },
68
- { id: 'configuracion', label: 'Configuración', icon: <CogIcon className="w-3 h-3" /> },
69
- ]}
70
- activeId={activeTab}
71
- onChange={setActiveTab}
72
- />
73
- ```
74
-
75
- ### Con Badges de Notificación
76
-
77
- ```tsx
78
- <Tabs
79
- items={[
80
- { id: 'mensajes', label: 'Mensajes', badge: 5 },
81
- { id: 'notificaciones', label: 'Notificaciones', badge: 12 },
82
- { id: 'tareas', label: 'Tareas' },
83
- ]}
84
- activeId={activeTab}
85
- onChange={setActiveTab}
86
- />
87
- ```
88
-
89
- ### Full Width
90
-
91
- ```tsx
92
- <Tabs
93
- items={[...]}
94
- activeId={activeTab}
95
- onChange={setActiveTab}
96
- fullWidth
97
- />
98
- ```
99
-
100
- ## Props
101
-
102
- ### TabsProps (Contenedor)
103
-
104
- | Prop | Tipo | Default | Descripción |
105
- |------|------|---------|-------------|
106
- | `items` | `TabItem[]` | **requerido** | Lista de tabs a mostrar |
107
- | `activeId` | `string` | - | ID del tab seleccionado (modo controlado) |
108
- | `defaultActiveId` | `string` | - | ID del tab inicial (modo no controlado) |
109
- | `onChange` | `(id: string) => void` | - | Callback al cambiar de tab |
110
- | `fullWidth` | `boolean` | `false` | Si los tabs ocupan todo el ancho |
111
- | `size` | `'sm' \| 'base' \| 'lg'` | `'base'` | Tamaño (espaciado entre tabs) |
112
- | `showBorder` | `boolean` | `true` | Mostrar línea inferior |
113
- | `className` | `string` | - | Clases CSS adicionales |
114
-
115
- ### TabItem
116
-
117
- | Prop | Tipo | Default | Descripción |
118
- |------|------|---------|-------------|
119
- | `id` | `string` | **requerido** | Identificador único |
120
- | `label` | `string` | **requerido** | Texto del tab |
121
- | `icon` | `ReactNode` | - | Icono a la izquierda |
122
- | `badge` | `number` | - | Número de notificaciones |
123
- | `disabled` | `boolean` | `false` | Si está deshabilitado |
124
-
125
- ### TabProps (Tab Individual)
126
-
127
- | Prop | Tipo | Default | Descripción |
128
- |------|------|---------|-------------|
129
- | `label` | `string` | **requerido** | Texto del tab |
130
- | `active` | `boolean` | `false` | Si está activo |
131
- | `icon` | `ReactNode` | - | Icono a la izquierda |
132
- | `badge` | `number` | - | Número de notificaciones |
133
- | `disabled` | `boolean` | `false` | Si está deshabilitado |
134
- | `onClick` | `() => void` | - | Callback al hacer click |
135
- | `className` | `string` | - | Clases CSS adicionales |
136
- | `ariaLabel` | `string` | - | Etiqueta accesible |
137
-
138
- ## Iconos Incluidos
139
-
140
- El componente incluye los siguientes iconos Heroicons Micro (16x16):
141
-
142
- - `CheckIcon` - Icono de verificación
143
- - `HomeIcon` - Icono de inicio
144
- - `UserIcon` - Icono de usuario
145
- - `CogIcon` - Icono de configuración
146
- - `BellIcon` - Icono de notificaciones
147
- - `DocumentIcon` - Icono de documento
148
- - `ChartIcon` - Icono de estadísticas
149
-
150
- ## Especificaciones de Diseño
151
-
152
- ### Dimensiones (según Figma)
153
-
154
- - **Padding interno**: 8px
155
- - **Gap entre icono y texto**: 4px
156
- - **Altura del indicador activo**: 2px
157
- - **Border radius**: 8px (rounded-lg)
158
-
159
- ### Tipografía
160
-
161
- - **Texto**: Label Small (14px Bold, line-height 20px)
162
- - **Badge**: 12px Regular
163
-
164
- ### Colores
165
-
166
- **Light Mode:**
167
- - Texto inactivo: `#18181b` (content-primary)
168
- - Texto activo: `#0e79fd` (primary-custom-600)
169
- - Hover overlay: `rgba(0,0,0,0.03)`
170
- - Indicador activo: `#0e79fd`
171
-
172
- **Dark Mode:**
173
- - Texto inactivo: `#ffffff` (dark-content-primary)
174
- - Texto activo: `#0e79fd` (primary-custom-600)
175
- - Hover overlay: `rgba(255,255,255,0.05)`
176
- - Indicador activo: `#0e79fd`
177
-
178
- ## Accesibilidad
179
-
180
- El componente implementa las siguientes características de accesibilidad:
181
-
182
- - `role="tablist"` en el contenedor
183
- - `role="tab"` en cada tab individual
184
- - `aria-selected` para indicar el tab activo
185
- - `aria-disabled` para tabs deshabilitados
186
- - Navegación con teclado (Tab para focus)
187
- - Focus visible con anillo de foco
188
-
189
- ## Mejores Prácticas
190
-
191
- 1. **Usa iconos consistentemente** - Si un tab tiene icono, considera agregar iconos a todos
192
- 2. **Badges para notificaciones** - Usa badges solo cuando hay información relevante para el usuario
193
- 3. **Deshabilita en lugar de ocultar** - Si un tab no está disponible, deshabilítalo en lugar de ocultarlo
194
- 4. **Textos cortos** - Mantén los labels de los tabs concisos
195
- 5. **Orden lógico** - Organiza los tabs en orden de importancia o flujo de trabajo
196
-
197
- ## Referencias
198
-
199
- - **Figma**: [Tabs Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4514-29083)
200
- - **Documentación de colores**: `docs/colors.md`
201
- - **Documentación de tipografía**: `docs/typography.md`
1
+ # Tabs
2
+
3
+ Componente de navegación por pestañas del sistema de diseño Siesa UI Kit.
4
+
5
+ ## Descripción
6
+
7
+ El componente `Tabs` proporciona una interfaz de navegación horizontal que permite a los usuarios cambiar entre diferentes vistas o secciones de contenido. Está diseñado siguiendo las especificaciones de Figma con soporte completo para dark mode.
8
+
9
+ ## Características
10
+
11
+ - ✅ Estados: Default, Hover, Focus, Active, Disabled
12
+ - ✅ Soporte para iconos (Heroicons Micro 16x16)
13
+ - ✅ Badge de notificación con contador
14
+ - ✅ Dark mode completo
15
+ - ✅ Modo controlado y no controlado
16
+ - ✅ Accesibilidad con ARIA roles
17
+ - ✅ TypeScript estricto
18
+
19
+ ## Instalación
20
+
21
+ El componente está incluido en el Siesa UI Kit. Importa desde la carpeta de componentes:
22
+
23
+ ```tsx
24
+ import { Tabs, Tab } from '@/components/Tabs';
25
+ import type { TabItem } from '@/components/Tabs';
26
+ ```
27
+
28
+ ## Uso Básico
29
+
30
+ ### Modo No Controlado
31
+
32
+ ```tsx
33
+ <Tabs
34
+ items={[
35
+ { id: 'inicio', label: 'Inicio' },
36
+ { id: 'perfil', label: 'Perfil' },
37
+ { id: 'configuracion', label: 'Configuración' },
38
+ ]}
39
+ defaultActiveId="inicio"
40
+ />
41
+ ```
42
+
43
+ ### Modo Controlado
44
+
45
+ ```tsx
46
+ const [activeTab, setActiveTab] = useState('inicio');
47
+
48
+ <Tabs
49
+ items={[
50
+ { id: 'inicio', label: 'Inicio' },
51
+ { id: 'perfil', label: 'Perfil' },
52
+ { id: 'configuracion', label: 'Configuración' },
53
+ ]}
54
+ activeId={activeTab}
55
+ onChange={setActiveTab}
56
+ />
57
+ ```
58
+
59
+ ### Con Iconos
60
+
61
+ ```tsx
62
+ import { HomeIcon, UserIcon, CogIcon } from '@/components/Tabs';
63
+
64
+ <Tabs
65
+ items={[
66
+ { id: 'inicio', label: 'Inicio', icon: <HomeIcon className="w-3 h-3" /> },
67
+ { id: 'perfil', label: 'Perfil', icon: <UserIcon className="w-3 h-3" /> },
68
+ { id: 'configuracion', label: 'Configuración', icon: <CogIcon className="w-3 h-3" /> },
69
+ ]}
70
+ activeId={activeTab}
71
+ onChange={setActiveTab}
72
+ />
73
+ ```
74
+
75
+ ### Con Badges de Notificación
76
+
77
+ ```tsx
78
+ <Tabs
79
+ items={[
80
+ { id: 'mensajes', label: 'Mensajes', badge: 5 },
81
+ { id: 'notificaciones', label: 'Notificaciones', badge: 12 },
82
+ { id: 'tareas', label: 'Tareas' },
83
+ ]}
84
+ activeId={activeTab}
85
+ onChange={setActiveTab}
86
+ />
87
+ ```
88
+
89
+ ### Full Width
90
+
91
+ ```tsx
92
+ <Tabs
93
+ items={[...]}
94
+ activeId={activeTab}
95
+ onChange={setActiveTab}
96
+ fullWidth
97
+ />
98
+ ```
99
+
100
+ ## Props
101
+
102
+ ### TabsProps (Contenedor)
103
+
104
+ | Prop | Tipo | Default | Descripción |
105
+ |------|------|---------|-------------|
106
+ | `items` | `TabItem[]` | **requerido** | Lista de tabs a mostrar |
107
+ | `activeId` | `string` | - | ID del tab seleccionado (modo controlado) |
108
+ | `defaultActiveId` | `string` | - | ID del tab inicial (modo no controlado) |
109
+ | `onChange` | `(id: string) => void` | - | Callback al cambiar de tab |
110
+ | `fullWidth` | `boolean` | `false` | Si los tabs ocupan todo el ancho |
111
+ | `size` | `'sm' \| 'base' \| 'lg'` | `'base'` | Tamaño (espaciado entre tabs) |
112
+ | `showBorder` | `boolean` | `true` | Mostrar línea inferior |
113
+ | `className` | `string` | - | Clases CSS adicionales |
114
+
115
+ ### TabItem
116
+
117
+ | Prop | Tipo | Default | Descripción |
118
+ |------|------|---------|-------------|
119
+ | `id` | `string` | **requerido** | Identificador único |
120
+ | `label` | `string` | **requerido** | Texto del tab |
121
+ | `icon` | `ReactNode` | - | Icono a la izquierda |
122
+ | `badge` | `number` | - | Número de notificaciones |
123
+ | `disabled` | `boolean` | `false` | Si está deshabilitado |
124
+
125
+ ### TabProps (Tab Individual)
126
+
127
+ | Prop | Tipo | Default | Descripción |
128
+ |------|------|---------|-------------|
129
+ | `label` | `string` | **requerido** | Texto del tab |
130
+ | `active` | `boolean` | `false` | Si está activo |
131
+ | `icon` | `ReactNode` | - | Icono a la izquierda |
132
+ | `badge` | `number` | - | Número de notificaciones |
133
+ | `disabled` | `boolean` | `false` | Si está deshabilitado |
134
+ | `onClick` | `() => void` | - | Callback al hacer click |
135
+ | `className` | `string` | - | Clases CSS adicionales |
136
+ | `ariaLabel` | `string` | - | Etiqueta accesible |
137
+
138
+ ## Iconos Incluidos
139
+
140
+ El componente incluye los siguientes iconos Heroicons Micro (16x16):
141
+
142
+ - `CheckIcon` - Icono de verificación
143
+ - `HomeIcon` - Icono de inicio
144
+ - `UserIcon` - Icono de usuario
145
+ - `CogIcon` - Icono de configuración
146
+ - `BellIcon` - Icono de notificaciones
147
+ - `DocumentIcon` - Icono de documento
148
+ - `ChartIcon` - Icono de estadísticas
149
+
150
+ ## Especificaciones de Diseño
151
+
152
+ ### Dimensiones (según Figma)
153
+
154
+ - **Padding interno**: 8px
155
+ - **Gap entre icono y texto**: 4px
156
+ - **Altura del indicador activo**: 2px
157
+ - **Border radius**: 8px (rounded-lg)
158
+
159
+ ### Tipografía
160
+
161
+ - **Texto**: Label Small (14px Bold, line-height 20px)
162
+ - **Badge**: 12px Regular
163
+
164
+ ### Colores
165
+
166
+ **Light Mode:**
167
+ - Texto inactivo: `#18181b` (content-primary)
168
+ - Texto activo: `#0e79fd` (primary-custom-600)
169
+ - Hover overlay: `rgba(0,0,0,0.03)`
170
+ - Indicador activo: `#0e79fd`
171
+
172
+ **Dark Mode:**
173
+ - Texto inactivo: `#ffffff` (dark-content-primary)
174
+ - Texto activo: `#0e79fd` (primary-custom-600)
175
+ - Hover overlay: `rgba(255,255,255,0.05)`
176
+ - Indicador activo: `#0e79fd`
177
+
178
+ ## Accesibilidad
179
+
180
+ El componente implementa las siguientes características de accesibilidad:
181
+
182
+ - `role="tablist"` en el contenedor
183
+ - `role="tab"` en cada tab individual
184
+ - `aria-selected` para indicar el tab activo
185
+ - `aria-disabled` para tabs deshabilitados
186
+ - Navegación con teclado (Tab para focus)
187
+ - Focus visible con anillo de foco
188
+
189
+ ## Mejores Prácticas
190
+
191
+ 1. **Usa iconos consistentemente** - Si un tab tiene icono, considera agregar iconos a todos
192
+ 2. **Badges para notificaciones** - Usa badges solo cuando hay información relevante para el usuario
193
+ 3. **Deshabilita en lugar de ocultar** - Si un tab no está disponible, deshabilítalo en lugar de ocultarlo
194
+ 4. **Textos cortos** - Mantén los labels de los tabs concisos
195
+ 5. **Orden lógico** - Organiza los tabs en orden de importancia o flujo de trabajo
196
+
197
+ ## Referencias
198
+
199
+ - **Figma**: [Tabs Component](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=4514-29083)
200
+ - **Documentación de colores**: `docs/colors.md`
201
+ - **Documentación de tipografía**: `docs/typography.md`