siesa-ui-kit 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -9
- package/claude/settings.local.json +0 -7
- package/docs/border-radius.md +0 -1261
- package/docs/colors.md +0 -832
- package/docs/dark-mode-guide.md +0 -1426
- package/docs/filters.md +0 -1243
- package/docs/icons.md +0 -1283
- package/docs/shadows.md +0 -1377
- package/docs/spacing.md +0 -1684
- package/docs/typography.md +0 -1268
- package/postcss.config.cjs +0 -6
- package/public/,Business Logo.png +0 -0
- package/public/.Siesa Logo.png +0 -0
- package/public/bg_siesa.png +0 -0
- package/public/siesa_logo_mobile.png +0 -0
- package/public/vite.svg +0 -1
- package/src/App.css +0 -42
- package/src/App.tsx +0 -8
- package/src/ButtonTest.tsx +0 -147
- package/src/assets/fonts/README.md +0 -261
- package/src/assets/fonts/SiesaBT/SiesaBT-Bold.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Light.otf +0 -0
- package/src/assets/fonts/SiesaBT/SiesaBT-Regular.otf +0 -0
- package/src/assets/react.svg +0 -1
- package/src/components/Alert/Alert.stories.tsx +0 -332
- package/src/components/Alert/Alert.tsx +0 -106
- package/src/components/Alert/Alert.types.ts +0 -54
- package/src/components/Avatar/Avatar.stories.tsx +0 -494
- package/src/components/Avatar/Avatar.tsx +0 -143
- package/src/components/Avatar/Avatar.types.ts +0 -53
- package/src/components/Badge/Badge.stories.tsx +0 -339
- package/src/components/Badge/Badge.tsx +0 -278
- package/src/components/Badge/Badge.types.ts +0 -58
- package/src/components/Button/Button.stories.tsx +0 -950
- package/src/components/Button/Button.tsx +0 -337
- package/src/components/Button/Button.types.ts +0 -180
- package/src/components/Button/icons.tsx +0 -87
- package/src/components/Button/index.ts +0 -3
- package/src/components/Checkbox/Checkbox.stories.tsx +0 -453
- package/src/components/Checkbox/Checkbox.tsx +0 -208
- package/src/components/Checkbox/Checkbox.types.ts +0 -61
- package/src/components/DescriptionList/DescriptionList.stories.tsx +0 -250
- package/src/components/DescriptionList/DescriptionList.tsx +0 -96
- package/src/components/DescriptionList/DescriptionList.types.ts +0 -29
- package/src/components/Divider/Divider.stories.tsx +0 -263
- package/src/components/Divider/Divider.tsx +0 -80
- package/src/components/Divider/Divider.types.ts +0 -24
- package/src/components/Dropdown/Dropdown.stories.tsx +0 -552
- package/src/components/Dropdown/Dropdown.tsx +0 -422
- package/src/components/Dropdown/Dropdown.types.ts +0 -146
- package/src/components/Dropdown/README.md +0 -266
- package/src/components/Dropdown/icons.tsx +0 -72
- package/src/components/Dropdown/index.ts +0 -8
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +0 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +0 -287
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +0 -111
- package/src/components/DropdownItemCollapsible/README.md +0 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +0 -57
- package/src/components/DropdownItemCollapsible/index.ts +0 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +0 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +0 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +0 -93
- package/src/components/DropdownItemHeading/README.md +0 -573
- package/src/components/DropdownItemHeading/icons.tsx +0 -125
- package/src/components/DropdownItemHeading/index.ts +0 -3
- package/src/components/Input/Input.stories.tsx +0 -583
- package/src/components/Input/Input.tsx +0 -204
- package/src/components/Input/Input.types.ts +0 -80
- package/src/components/Input/icons.tsx +0 -145
- package/src/components/Input/index.ts +0 -2
- package/src/components/LoginView/LoginView.stories.tsx +0 -148
- package/src/components/LoginView/LoginView.tsx +0 -426
- package/src/components/LoginView/LoginView.types.ts +0 -52
- package/src/components/LoginView/README.md +0 -396
- package/src/components/LoginView/icons.tsx +0 -85
- package/src/components/LoginView/index.ts +0 -3
- package/src/components/Navbar/Navbar.stories.tsx +0 -810
- package/src/components/Navbar/Navbar.tsx +0 -755
- package/src/components/Navbar/Navbar.types.ts +0 -219
- package/src/components/Navbar/README.md +0 -279
- package/src/components/Navbar/icons.tsx +0 -102
- package/src/components/Navbar/index.ts +0 -8
- package/src/components/NavigationBar/NavigationBar.stories.tsx +0 -406
- package/src/components/NavigationBar/NavigationBar.tsx +0 -246
- package/src/components/NavigationBar/NavigationBar.types.ts +0 -74
- package/src/components/NavigationBar/README.md +0 -469
- package/src/components/NavigationBar/index.ts +0 -2
- package/src/components/NavigationRail/NavigationRail.stories.tsx +0 -417
- package/src/components/NavigationRail/NavigationRail.tsx +0 -418
- package/src/components/NavigationRail/NavigationRail.types.ts +0 -109
- package/src/components/NavigationRail/README.md +0 -224
- package/src/components/NavigationRail/index.ts +0 -2
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +0 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +0 -313
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +0 -167
- package/src/components/NavigationRailItem/README.md +0 -476
- package/src/components/NavigationRailItem/index.ts +0 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +0 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +0 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +0 -178
- package/src/components/NavigationRailPanel/README.md +0 -461
- package/src/components/NavigationRailPanel/index.ts +0 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +0 -528
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +0 -378
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +0 -130
- package/src/components/NavigationRailTypes/README.md +0 -573
- package/src/components/NavigationRailTypes/icons.tsx +0 -141
- package/src/components/NavigationRailTypes/index.ts +0 -7
- package/src/components/Notification/Notification.stories.tsx +0 -513
- package/src/components/Notification/Notification.tsx +0 -145
- package/src/components/Notification/Notification.types.ts +0 -142
- package/src/components/Notification/README.md +0 -409
- package/src/components/Notification/index.ts +0 -3
- package/src/components/POSConvention/POSConvention.stories.tsx +0 -235
- package/src/components/POSConvention/POSConvention.tsx +0 -129
- package/src/components/POSConvention/POSConvention.types.ts +0 -38
- package/src/components/POSConvention/README.md +0 -123
- package/src/components/POSConvention/icons.tsx +0 -45
- package/src/components/POSConvention/index.ts +0 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +0 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +0 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +0 -87
- package/src/components/POSLocationButton/README.md +0 -253
- package/src/components/POSLocationButton/icons.tsx +0 -120
- package/src/components/POSLocationButton/index.ts +0 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +0 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +0 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +0 -51
- package/src/components/POSNumberButton/README.md +0 -321
- package/src/components/POSNumberButton/index.ts +0 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +0 -318
- package/src/components/POSProductButton/POSProductButton.tsx +0 -152
- package/src/components/POSProductButton/POSProductButton.types.ts +0 -46
- package/src/components/POSProductButton/README.md +0 -269
- package/src/components/POSProductButton/index.ts +0 -2
- package/src/components/POSProductCard/POSProductCard.stories.tsx +0 -642
- package/src/components/POSProductCard/POSProductCard.tsx +0 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +0 -76
- package/src/components/POSProductCard/README.md +0 -179
- package/src/components/POSProductCard/icons.tsx +0 -26
- package/src/components/POSProductCard/index.ts +0 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +0 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +0 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +0 -119
- package/src/components/POSProductSidebarItems/README.md +0 -198
- package/src/components/POSProductSidebarItems/icons.tsx +0 -21
- package/src/components/POSProductSidebarItems/index.ts +0 -3
- package/src/components/POSTable/POSTable.stories.tsx +0 -737
- package/src/components/POSTable/POSTable.tsx +0 -401
- package/src/components/POSTable/POSTable.types.ts +0 -83
- package/src/components/POSTable/README.md +0 -286
- package/src/components/POSTable/index.ts +0 -7
- package/src/components/Pagination/Pagination.stories.tsx +0 -555
- package/src/components/Pagination/Pagination.tsx +0 -286
- package/src/components/Pagination/Pagination.types.ts +0 -93
- package/src/components/Pagination/README.md +0 -298
- package/src/components/Pagination/icons.tsx +0 -47
- package/src/components/Pagination/index.ts +0 -3
- package/src/components/Quantity/Quantity.stories.tsx +0 -457
- package/src/components/Quantity/Quantity.tsx +0 -289
- package/src/components/Quantity/Quantity.types.ts +0 -70
- package/src/components/Radio/Radio.stories.tsx +0 -523
- package/src/components/Radio/Radio.tsx +0 -170
- package/src/components/Radio/Radio.types.ts +0 -122
- package/src/components/Select/README.md +0 -299
- package/src/components/Select/Select.stories.tsx +0 -673
- package/src/components/Select/Select.tsx +0 -454
- package/src/components/Select/Select.types.ts +0 -148
- package/src/components/Select/icons.tsx +0 -50
- package/src/components/Select/index.ts +0 -3
- package/src/components/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/components/SignUpView/SignUpView.tsx +0 -503
- package/src/components/SignUpView/SignUpView.types.ts +0 -58
- package/src/components/SignUpView/icons.tsx +0 -71
- package/src/components/SignUpView/index.ts +0 -3
- package/src/components/Switch/README.md +0 -112
- package/src/components/Switch/Switch.stories.tsx +0 -550
- package/src/components/Switch/Switch.tsx +0 -246
- package/src/components/Switch/Switch.types.ts +0 -67
- package/src/components/Table/README.md +0 -369
- package/src/components/Table/Table.stories.tsx +0 -805
- package/src/components/Table/Table.tsx +0 -688
- package/src/components/Table/Table.types.ts +0 -204
- package/src/components/Table/index.ts +0 -9
- package/src/components/Tabs/README.md +0 -201
- package/src/components/Tabs/Tabs.stories.tsx +0 -580
- package/src/components/Tabs/Tabs.tsx +0 -356
- package/src/components/Tabs/Tabs.types.ts +0 -127
- package/src/components/Tabs/icons.tsx +0 -129
- package/src/components/Tabs/index.ts +0 -11
- package/src/components/Textarea/Textarea.stories.tsx +0 -535
- package/src/components/Textarea/Textarea.tsx +0 -188
- package/src/components/Textarea/Textarea.types.ts +0 -54
- package/src/context/ThemeContext.tsx +0 -99
- package/src/context/index.ts +0 -1
- package/src/index.css +0 -29
- package/src/index.ts +0 -102
- package/src/main.tsx +0 -10
- package/src/views/ListView/ListView.stories.tsx +0 -329
- package/src/views/ListView/ListView.tsx +0 -570
- package/src/views/ListView/ListView.types.ts +0 -211
- package/src/views/ListView/icons.tsx +0 -282
- package/src/views/ListView/index.ts +0 -11
- package/src/views/LoginView/LoginView.stories.tsx +0 -148
- package/src/views/LoginView/LoginView.tsx +0 -426
- package/src/views/LoginView/LoginView.types.ts +0 -52
- package/src/views/LoginView/README.md +0 -396
- package/src/views/LoginView/icons.tsx +0 -85
- package/src/views/LoginView/index.ts +0 -3
- package/src/views/ProductsView/ProductsView.stories.tsx +0 -344
- package/src/views/ProductsView/ProductsView.tsx +0 -480
- package/src/views/ProductsView/ProductsView.types.ts +0 -238
- package/src/views/ProductsView/README.md +0 -312
- package/src/views/ProductsView/icons.tsx +0 -38
- package/src/views/ProductsView/index.ts +0 -8
- package/src/views/RecoverPasswordView/README.md +0 -269
- package/src/views/RecoverPasswordView/RecoverPasswordView.stories.tsx +0 -131
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +0 -376
- package/src/views/RecoverPasswordView/RecoverPasswordView.types.ts +0 -56
- package/src/views/RecoverPasswordView/icons.tsx +0 -17
- package/src/views/RecoverPasswordView/index.ts +0 -2
- package/src/views/SignUpView/SignUpView.stories.tsx +0 -129
- package/src/views/SignUpView/SignUpView.tsx +0 -503
- package/src/views/SignUpView/SignUpView.types.ts +0 -58
- package/src/views/SignUpView/icons.tsx +0 -71
- package/src/views/SignUpView/index.ts +0 -3
- package/src/views/TableLayoutView/README.md +0 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +0 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +0 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +0 -209
- package/src/views/TableLayoutView/icons.tsx +0 -113
- package/src/views/TableLayoutView/index.ts +0 -6
- package/storybook/main.ts +0 -20
- package/storybook/preview.tsx +0 -84
- package/storybook/vitest.setup.ts +0 -7
- package/tailwind.config.js +0 -128
|
@@ -1,461 +0,0 @@
|
|
|
1
|
-
# NavigationRailPanel
|
|
2
|
-
|
|
3
|
-
Panel de navegación vertical (rail) que puede contener múltiples secciones de items, búsqueda y encabezados. Se usa típicamente en aplicaciones con navegación compleja que requieren una estructura jerárquica.
|
|
4
|
-
|
|
5
|
-
## 📋 Tabla de Contenidos
|
|
6
|
-
|
|
7
|
-
1. [Descripción](#descripción)
|
|
8
|
-
2. [Características](#características)
|
|
9
|
-
3. [Props](#props)
|
|
10
|
-
4. [Estructura](#estructura)
|
|
11
|
-
5. [Ejemplos de Uso](#ejemplos-de-uso)
|
|
12
|
-
6. [Especificaciones de Figma](#especificaciones-de-figma)
|
|
13
|
-
7. [Colores y Dark Mode](#colores-y-dark-mode)
|
|
14
|
-
8. [Espaciado](#espaciado)
|
|
15
|
-
9. [Accesibilidad](#accesibilidad)
|
|
16
|
-
10. [Referencias](#referencias)
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
## Descripción
|
|
21
|
-
|
|
22
|
-
El componente `NavigationRailPanel` es un contenedor de navegación vertical que organiza elementos en una estructura jerárquica. Está diseñado para uso en aplicaciones complejas que requieren navegación por categorías, búsqueda de items y menús expandibles.
|
|
23
|
-
|
|
24
|
-
### Casos de Uso
|
|
25
|
-
|
|
26
|
-
- Aplicaciones con muchas opciones de navegación
|
|
27
|
-
- Paneles de administración con menús colapsables
|
|
28
|
-
- Sistemas de gestión con categorización
|
|
29
|
-
- Aplicaciones POS con categorías de productos
|
|
30
|
-
- Navegación de módulos en aplicaciones empresariales
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Características
|
|
35
|
-
|
|
36
|
-
✅ **Estructura Flexible**
|
|
37
|
-
- Soporte para secciones con encabezados
|
|
38
|
-
- Items simples y colapsables
|
|
39
|
-
- Items anidados con indentación automática
|
|
40
|
-
|
|
41
|
-
✅ **Búsqueda Integrada**
|
|
42
|
-
- Input de búsqueda con placeholder personalizable
|
|
43
|
-
- Callbacks de cambio de valor
|
|
44
|
-
- Controlable desde el padre
|
|
45
|
-
|
|
46
|
-
✅ **Encabezado Personalizable**
|
|
47
|
-
- DropdownItemHeading reutilizado
|
|
48
|
-
- Icono, label, descripción y acción
|
|
49
|
-
- Callback para acción
|
|
50
|
-
|
|
51
|
-
✅ **Dark Mode Completo**
|
|
52
|
-
- Todos los elementos inversos en dark mode
|
|
53
|
-
- Colores adaptativos
|
|
54
|
-
- Accesibilidad mantenida
|
|
55
|
-
|
|
56
|
-
✅ **Estados Visuales**
|
|
57
|
-
- Hover, focus, active, disabled
|
|
58
|
-
- Transiciones suaves
|
|
59
|
-
- Focus rings adaptativos
|
|
60
|
-
|
|
61
|
-
✅ **Scroll**
|
|
62
|
-
- El body es scrolleable
|
|
63
|
-
- Encabezado y búsqueda fijos
|
|
64
|
-
- Comportamiento nativo del navegador
|
|
65
|
-
|
|
66
|
-
✅ **Componentes Reutilizados**
|
|
67
|
-
- `DropdownItemHeading` - Para el encabezado
|
|
68
|
-
- `DropdownItemCollapsible` - Para items colapsables
|
|
69
|
-
- `Input` - Para la búsqueda
|
|
70
|
-
- `Divider` - Para separadores
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## Props
|
|
75
|
-
|
|
76
|
-
### NavigationRailPanelProps
|
|
77
|
-
|
|
78
|
-
```typescript
|
|
79
|
-
interface NavigationRailPanelProps {
|
|
80
|
-
// Dimensiones
|
|
81
|
-
height?: number | string; // Por defecto: 900
|
|
82
|
-
width?: number | string; // Por defecto: 248
|
|
83
|
-
|
|
84
|
-
// Encabezado
|
|
85
|
-
showHeading?: boolean; // Por defecto: true
|
|
86
|
-
heading?: {
|
|
87
|
-
label: string;
|
|
88
|
-
description?: string;
|
|
89
|
-
showDescription?: boolean;
|
|
90
|
-
iconName?: string;
|
|
91
|
-
actionLabel?: string;
|
|
92
|
-
showAction?: boolean;
|
|
93
|
-
onActionClick?: () => void;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
// Búsqueda
|
|
97
|
-
showSearch?: boolean; // Por defecto: true
|
|
98
|
-
search?: {
|
|
99
|
-
placeholder?: string; // Por defecto: "Buscar módulo"
|
|
100
|
-
value?: string;
|
|
101
|
-
onChange?: (value: string) => void;
|
|
102
|
-
showLabel?: boolean; // Por defecto: false
|
|
103
|
-
showLink?: boolean; // Por defecto: true
|
|
104
|
-
};
|
|
105
|
-
|
|
106
|
-
// Contenido
|
|
107
|
-
sections?: NavigationRailPanelSectionProps[];
|
|
108
|
-
items?: NavigationRailPanelItemProps[];
|
|
109
|
-
|
|
110
|
-
// Clases CSS
|
|
111
|
-
className?: string;
|
|
112
|
-
panelClassName?: string;
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### NavigationRailPanelSectionProps
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
interface NavigationRailPanelSectionProps {
|
|
120
|
-
heading?: string; // Encabezado de la sección
|
|
121
|
-
items: NavigationRailPanelItemProps[];
|
|
122
|
-
showDivider?: boolean; // Por defecto: true
|
|
123
|
-
className?: string;
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### NavigationRailPanelItemProps
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
interface NavigationRailPanelItemProps {
|
|
131
|
-
label: string; // Texto del item
|
|
132
|
-
icon?: ReactNode; // Icono opcional
|
|
133
|
-
isCollapsible?: boolean; // Por defecto: false
|
|
134
|
-
children?: DropdownItemCollapsibleChildProps[];
|
|
135
|
-
defaultOpen?: boolean; // Por defecto: false
|
|
136
|
-
disabled?: boolean; // Por defecto: false
|
|
137
|
-
onClick?: (e: React.MouseEvent) => void;
|
|
138
|
-
onOpenChange?: (open: boolean) => void;
|
|
139
|
-
className?: string;
|
|
140
|
-
}
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
---
|
|
144
|
-
|
|
145
|
-
## Estructura
|
|
146
|
-
|
|
147
|
-
### Layout Principal
|
|
148
|
-
|
|
149
|
-
```
|
|
150
|
-
┌─────────────────────────┐
|
|
151
|
-
│ Encabezado (Opcional) │ <- DropdownItemHeading
|
|
152
|
-
├─────────────────────────┤
|
|
153
|
-
│ Búsqueda (Opcional) │ <- Input
|
|
154
|
-
├─────────────────────────┤
|
|
155
|
-
│ Body (Scrolleable) │
|
|
156
|
-
│ ┌─────────────────────┐ │
|
|
157
|
-
│ │ Section Heading │ │
|
|
158
|
-
│ │ Item 1 (Simple) │ │
|
|
159
|
-
│ │ Item 2 (Collapsible)│
|
|
160
|
-
│ │ ├─ Sub Item 1 │ │
|
|
161
|
-
│ │ └─ Sub Item 2 │ │
|
|
162
|
-
│ │ --- │ │
|
|
163
|
-
│ │ Section Heading │ │
|
|
164
|
-
│ │ Item 3 │ │
|
|
165
|
-
│ │ Item 4 │ │
|
|
166
|
-
│ └─────────────────────┘ │
|
|
167
|
-
└─────────────────────────┘
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### Especificaciones
|
|
171
|
-
|
|
172
|
-
| Elemento | Ancho | Altura | Padding | Border Radius |
|
|
173
|
-
|----------|-------|--------|---------|---------------|
|
|
174
|
-
| Panel | 248px | Variable | 12px | 0px |
|
|
175
|
-
| Encabezado | 224px | Auto | 8v, 16h | 8px |
|
|
176
|
-
| Búsqueda | 224px | 40px | 8v, 16h | 6px |
|
|
177
|
-
| Item | 224px | 32px | 8v, 16p | 8px |
|
|
178
|
-
| Section Heading | 224px | Auto | 12t, 4b | 0px |
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## Ejemplos de Uso
|
|
183
|
-
|
|
184
|
-
### Ejemplo Simple con Secciones
|
|
185
|
-
|
|
186
|
-
```tsx
|
|
187
|
-
import { NavigationRailPanel } from '@/components/NavigationRailPanel';
|
|
188
|
-
|
|
189
|
-
export function Dashboard() {
|
|
190
|
-
return (
|
|
191
|
-
<NavigationRailPanel
|
|
192
|
-
height={900}
|
|
193
|
-
showHeading={true}
|
|
194
|
-
heading={{
|
|
195
|
-
label: 'Settings',
|
|
196
|
-
description: 'Configure your preferences',
|
|
197
|
-
iconName: 'cog-6-tooth',
|
|
198
|
-
}}
|
|
199
|
-
showSearch={true}
|
|
200
|
-
sections={[
|
|
201
|
-
{
|
|
202
|
-
heading: 'NAVIGATION',
|
|
203
|
-
items: [
|
|
204
|
-
{ label: 'Dashboard', isCollapsible: false },
|
|
205
|
-
{ label: 'Analytics', isCollapsible: false },
|
|
206
|
-
],
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
heading: 'MANAGEMENT',
|
|
210
|
-
items: [
|
|
211
|
-
{
|
|
212
|
-
label: 'Users',
|
|
213
|
-
isCollapsible: true,
|
|
214
|
-
children: [
|
|
215
|
-
{ label: 'Active Users' },
|
|
216
|
-
{ label: 'Inactive Users' },
|
|
217
|
-
],
|
|
218
|
-
},
|
|
219
|
-
],
|
|
220
|
-
},
|
|
221
|
-
]}
|
|
222
|
-
/>
|
|
223
|
-
);
|
|
224
|
-
}
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### Ejemplo sin Encabezado y Búsqueda
|
|
228
|
-
|
|
229
|
-
```tsx
|
|
230
|
-
<NavigationRailPanel
|
|
231
|
-
showHeading={false}
|
|
232
|
-
showSearch={false}
|
|
233
|
-
items={[
|
|
234
|
-
{ label: 'Dashboard' },
|
|
235
|
-
{ label: 'Users' },
|
|
236
|
-
{ label: 'Settings' },
|
|
237
|
-
]}
|
|
238
|
-
/>
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### Ejemplo con Callbacks
|
|
242
|
-
|
|
243
|
-
```tsx
|
|
244
|
-
<NavigationRailPanel
|
|
245
|
-
heading={{
|
|
246
|
-
label: 'Menu',
|
|
247
|
-
actionLabel: 'Clear',
|
|
248
|
-
showAction: true,
|
|
249
|
-
onActionClick: () => console.log('Clear clicked'),
|
|
250
|
-
}}
|
|
251
|
-
search={{
|
|
252
|
-
placeholder: 'Search...',
|
|
253
|
-
onChange: (value) => console.log('Search:', value),
|
|
254
|
-
}}
|
|
255
|
-
items={[
|
|
256
|
-
{
|
|
257
|
-
label: 'Item 1',
|
|
258
|
-
onClick: () => console.log('Item 1 clicked'),
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
label: 'Category',
|
|
262
|
-
isCollapsible: true,
|
|
263
|
-
onOpenChange: (open) => console.log('Toggled:', open),
|
|
264
|
-
children: [
|
|
265
|
-
{ label: 'Sub Item' },
|
|
266
|
-
],
|
|
267
|
-
},
|
|
268
|
-
]}
|
|
269
|
-
/>
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### Ejemplo con Items Deshabilitados
|
|
273
|
-
|
|
274
|
-
```tsx
|
|
275
|
-
<NavigationRailPanel
|
|
276
|
-
items={[
|
|
277
|
-
{ label: 'Active', disabled: false },
|
|
278
|
-
{ label: 'Disabled', disabled: true },
|
|
279
|
-
{
|
|
280
|
-
label: 'Category',
|
|
281
|
-
isCollapsible: true,
|
|
282
|
-
disabled: true,
|
|
283
|
-
children: [
|
|
284
|
-
{ label: 'Sub Item 1' },
|
|
285
|
-
{ label: 'Sub Item 2', disabled: true },
|
|
286
|
-
],
|
|
287
|
-
},
|
|
288
|
-
]}
|
|
289
|
-
/>
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
---
|
|
293
|
-
|
|
294
|
-
## Especificaciones de Figma
|
|
295
|
-
|
|
296
|
-
- **Nodo**: 6134-34415
|
|
297
|
-
- **URL**: https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6134-34415
|
|
298
|
-
|
|
299
|
-
### Dimensiones
|
|
300
|
-
|
|
301
|
-
- Altura: 900px (variable)
|
|
302
|
-
- Ancho: 248px (estándar)
|
|
303
|
-
- Padding: 12px (todo)
|
|
304
|
-
- Border radius: 0px (panel completo)
|
|
305
|
-
|
|
306
|
-
### Tipografía
|
|
307
|
-
|
|
308
|
-
| Elemento | Escala | Font Weight | Size | Line Height |
|
|
309
|
-
|----------|--------|------------|------|------------|
|
|
310
|
-
| Encabezado | Label/Small | 700 (Bold) | 14px | 20px |
|
|
311
|
-
| Descripción | Paragraph/Tiny | 400 | 12px | 16px |
|
|
312
|
-
| Section Heading | Paragraph/Tiny | 400 | 12px | 16px |
|
|
313
|
-
| Item | Paragraph/Small | 400 | 14px | 20px |
|
|
314
|
-
| Acción | Paragraph/XXSmall | 400 | 10px | 12px |
|
|
315
|
-
|
|
316
|
-
---
|
|
317
|
-
|
|
318
|
-
## Colores y Dark Mode
|
|
319
|
-
|
|
320
|
-
### Light Mode
|
|
321
|
-
|
|
322
|
-
| Elemento | Color | Hex |
|
|
323
|
-
|----------|-------|-----|
|
|
324
|
-
| Background | bg-primary | #ffffff |
|
|
325
|
-
| Border | border-primary | #e4e4e7 |
|
|
326
|
-
| Heading text | content-primary | #18181b |
|
|
327
|
-
| Section heading | content-tertiary | #71717a |
|
|
328
|
-
| Item text | content-primary | #18181b |
|
|
329
|
-
| Icon | content-secondary | #a1a1aa |
|
|
330
|
-
| Hover bg | background-custom-primary | #dbeefe |
|
|
331
|
-
|
|
332
|
-
### Dark Mode
|
|
333
|
-
|
|
334
|
-
| Elemento | Color | Hex |
|
|
335
|
-
|----------|-------|-----|
|
|
336
|
-
| Background | dark:bg-zinc-900 | #18181b |
|
|
337
|
-
| Border | dark:border-zinc-800 | #3f3f46 |
|
|
338
|
-
| Heading text | dark:content-primary-dark | #fafafa |
|
|
339
|
-
| Section heading | dark:content-tertiary-dark | #a1a1aa |
|
|
340
|
-
| Item text | dark:content-primary-dark | #fafafa |
|
|
341
|
-
| Icon | dark:content-secondary | #a1a1aa |
|
|
342
|
-
| Hover bg | dark:bg-background-custom-primary-dark | #0e5ab0 |
|
|
343
|
-
|
|
344
|
-
### Tokens Utilizados
|
|
345
|
-
|
|
346
|
-
- **Colores**: `content-primary`, `content-secondary`, `content-tertiary`, `bg-primary`, `border-primary`, `background-custom-primary`
|
|
347
|
-
- **Dark Mode**: Se invierten automáticamente con prefijo `dark:`
|
|
348
|
-
- **No hay colores hardcodeados**: Todo usa el sistema de tokens
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
## Espaciado
|
|
353
|
-
|
|
354
|
-
| Elemento | Valor | Px |
|
|
355
|
-
|----------|-------|-----|
|
|
356
|
-
| Panel padding | 3 | 12px |
|
|
357
|
-
| Item padding (h) | 4 | 16px |
|
|
358
|
-
| Item padding (v) | 2 | 8px |
|
|
359
|
-
| Gap entre items | 0.5 | 2px |
|
|
360
|
-
| Gap entre elemento e icono | 3 | 12px |
|
|
361
|
-
| Section heading pt | 3 | 12px |
|
|
362
|
-
| Section heading pb | 1 | 4px |
|
|
363
|
-
| Divider margin top | 3 | 12px |
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
## Accesibilidad
|
|
368
|
-
|
|
369
|
-
✅ **Focus Management**
|
|
370
|
-
- Focus rings adaptativos de 4px
|
|
371
|
-
- Offset de 2px en light mode
|
|
372
|
-
- Offset transparente en dark mode
|
|
373
|
-
- Color focus: primary-custom-400 (#60b6fa)
|
|
374
|
-
|
|
375
|
-
✅ **Keyboard Navigation**
|
|
376
|
-
- Tab para navegar entre items
|
|
377
|
-
- Enter/Space para activar
|
|
378
|
-
- Arrow keys para items colapsables (heredado de DropdownItemCollapsible)
|
|
379
|
-
|
|
380
|
-
✅ **ARIA**
|
|
381
|
-
- Roles semánticos (button, heading, menuitem)
|
|
382
|
-
- aria-disabled para items deshabilitados
|
|
383
|
-
- aria-expanded para items colapsables
|
|
384
|
-
|
|
385
|
-
✅ **Colores**
|
|
386
|
-
- Contraste AA/AAA mantenido
|
|
387
|
-
- No depender solo de color para indicar estado
|
|
388
|
-
- Íconos con suficiente contraste
|
|
389
|
-
|
|
390
|
-
---
|
|
391
|
-
|
|
392
|
-
## Dark Mode
|
|
393
|
-
|
|
394
|
-
El componente es **100% compatible con dark mode**:
|
|
395
|
-
|
|
396
|
-
```tsx
|
|
397
|
-
// El componente detecta automáticamente el tema
|
|
398
|
-
<NavigationRailPanel
|
|
399
|
-
// Automáticamente invierte colores en dark mode
|
|
400
|
-
showHeading={true}
|
|
401
|
-
showSearch={true}
|
|
402
|
-
/>
|
|
403
|
-
```
|
|
404
|
-
|
|
405
|
-
### Cambios en Dark Mode
|
|
406
|
-
|
|
407
|
-
1. **Background**: white (#ffffff) → zinc-900 (#18181b)
|
|
408
|
-
2. **Border**: border-primary (#e4e4e7) → border-zinc-800 (#3f3f46)
|
|
409
|
-
3. **Text**: content-primary (#18181b) → content-primary-dark (#fafafa)
|
|
410
|
-
4. **Icon hover**: dbeefe (#dbeefe) → 0e5ab0 (#0e5ab0)
|
|
411
|
-
5. **Focus ring offset**: blanco → zinc-900
|
|
412
|
-
|
|
413
|
-
---
|
|
414
|
-
|
|
415
|
-
## Estados Visuales
|
|
416
|
-
|
|
417
|
-
### Default
|
|
418
|
-
- Sin interacción
|
|
419
|
-
- Colores base
|
|
420
|
-
|
|
421
|
-
### Hover
|
|
422
|
-
- Background sutil: `background-custom-primary`
|
|
423
|
-
- Cursor pointer
|
|
424
|
-
- Transición suave
|
|
425
|
-
|
|
426
|
-
### Focus
|
|
427
|
-
- Focus ring de 4px
|
|
428
|
-
- Color: `primary-custom-400`
|
|
429
|
-
- Offset: 2px (light) / transparent (dark)
|
|
430
|
-
|
|
431
|
-
### Active
|
|
432
|
-
- Item colapsable expandido
|
|
433
|
-
- Indicado por chevron rotado
|
|
434
|
-
|
|
435
|
-
### Disabled
|
|
436
|
-
- Opacidad: 50%
|
|
437
|
-
- Cursor: not-allowed
|
|
438
|
-
- Sin hover/focus interactivo
|
|
439
|
-
|
|
440
|
-
---
|
|
441
|
-
|
|
442
|
-
## Referencias
|
|
443
|
-
|
|
444
|
-
### Documentación del Sistema
|
|
445
|
-
|
|
446
|
-
- [@see docs/colors.md](../../../docs/colors.md) - Sistema de colores
|
|
447
|
-
- [@see docs/typography.md](../../../docs/typography.md) - Sistema tipográfico
|
|
448
|
-
- [@see docs/spacing.md](../../../docs/spacing.md) - Sistema de espaciado
|
|
449
|
-
- [@see docs/shadows.md](../../../docs/shadows.md) - Sistema de sombras
|
|
450
|
-
|
|
451
|
-
### Componentes Relacionados
|
|
452
|
-
|
|
453
|
-
- [@see ../DropdownItemHeading](../DropdownItemHeading) - Encabezado reutilizado
|
|
454
|
-
- [@see ../DropdownItemCollapsible](../DropdownItemCollapsible) - Items colapsables
|
|
455
|
-
- [@see ../Input](../Input) - Búsqueda
|
|
456
|
-
- [@see ../Divider](../Divider) - Separadores
|
|
457
|
-
|
|
458
|
-
### Figma
|
|
459
|
-
|
|
460
|
-
- [NavigationRailPanel en Figma](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit?node-id=6134-34415)
|
|
461
|
-
- [Design System Documentation](https://www.figma.com/design/5XNqf2YTxvwemxwo1LMQ6j/Siesa-UI-Kit)
|