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.
- package/README.md +115 -115
- package/bin/install.cjs +502 -502
- package/bin/prepare-publish.cjs +28 -28
- package/bin/restore-folders.cjs +28 -28
- package/claude/agents/siesa-ui-kit-specialist.md +2445 -0
- package/claude/prompts/component-template.md +121 -0
- package/claude/prompts/siesa-ui-kit.md +28 -0
- package/claude/settings.local.json +67 -2
- package/dist/components/Button/icons.d.ts +6 -5
- package/dist/components/Button/icons.d.ts.map +1 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.d.ts.map +1 -1
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts +21 -0
- package/dist/components/DropdownItemCollapsible/DropdownItemCollapsible.types.d.ts.map +1 -1
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts +122 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts +139 -0
- package/dist/components/NavigationRailCommercial/NavigationRailCommercial.types.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/icons.d.ts +33 -0
- package/dist/components/NavigationRailCommercial/icons.d.ts.map +1 -0
- package/dist/components/NavigationRailCommercial/index.d.ts +4 -0
- package/dist/components/NavigationRailCommercial/index.d.ts.map +1 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.d.ts.map +1 -1
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts +7 -0
- package/dist/components/NavigationRailItem/NavigationRailItem.types.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts +41 -0
- package/dist/components/NavigationRailTypes/NavigationRailTypes.types.d.ts.map +1 -1
- package/dist/components/NavigationRailTypes/icons.d.ts +15 -29
- package/dist/components/NavigationRailTypes/icons.d.ts.map +1 -1
- package/dist/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Select/icons.d.ts +6 -2
- package/dist/components/Select/icons.d.ts.map +1 -1
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/siesa-ui-kit.cjs +404 -190
- package/dist/siesa-ui-kit.cjs.map +1 -1
- package/dist/siesa-ui-kit.mjs +6590 -1506
- package/dist/siesa-ui-kit.mjs.map +1 -1
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts +48 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.d.ts.map +1 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts +49 -0
- package/dist/views/LayoutCommercial/LayoutCommercial.types.d.ts.map +1 -0
- package/dist/views/LayoutCommercial/index.d.ts +3 -0
- package/dist/views/LayoutCommercial/index.d.ts.map +1 -0
- package/docs/icons.md +12 -31
- package/package.json +111 -110
- package/src/components/Avatar/Avatar.stories.tsx +494 -494
- package/src/components/Button/Button.stories.tsx +950 -950
- package/src/components/Button/Button.tsx +337 -337
- package/src/components/Button/Button.types.ts +180 -180
- package/src/components/Button/icons.tsx +23 -62
- package/src/components/DescriptionList/DescriptionList.stories.tsx +250 -250
- package/src/components/Divider/Divider.stories.tsx +263 -263
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.stories.tsx +317 -317
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.tsx +307 -287
- package/src/components/DropdownItemCollapsible/DropdownItemCollapsible.types.ts +136 -111
- package/src/components/DropdownItemCollapsible/README.md +264 -264
- package/src/components/DropdownItemCollapsible/icons.tsx +57 -57
- package/src/components/DropdownItemCollapsible/index.ts +12 -12
- package/src/components/DropdownItemHeading/DropdownItemHeading.stories.tsx +386 -386
- package/src/components/DropdownItemHeading/DropdownItemHeading.tsx +216 -216
- package/src/components/DropdownItemHeading/DropdownItemHeading.types.ts +93 -93
- package/src/components/DropdownItemHeading/README.md +573 -573
- package/src/components/DropdownItemHeading/icons.tsx +125 -125
- package/src/components/DropdownItemHeading/index.ts +3 -3
- package/src/components/Input/Input.stories.tsx +583 -583
- package/src/components/LoginView/LoginView.stories.tsx +148 -148
- package/src/components/LoginView/LoginView.tsx +426 -426
- package/src/components/LoginView/LoginView.types.ts +52 -52
- package/src/components/LoginView/README.md +396 -396
- package/src/components/LoginView/icons.tsx +85 -85
- package/src/components/LoginView/index.ts +3 -3
- package/src/components/Navbar/Navbar.stories.tsx +810 -810
- package/src/components/Navbar/Navbar.tsx +755 -755
- package/src/components/Navbar/Navbar.types.ts +219 -219
- package/src/components/Navbar/README.md +279 -279
- package/src/components/Navbar/index.ts +8 -8
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.stories.tsx +464 -0
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.tsx +301 -0
- package/src/components/NavigationRailCommercial/NavigationRailCommercial.types.ts +162 -0
- package/src/components/NavigationRailCommercial/README.md +251 -0
- package/src/components/NavigationRailCommercial/icons.tsx +54 -0
- package/src/components/NavigationRailCommercial/index.ts +6 -0
- package/src/components/NavigationRailItem/NavigationRailItem.stories.tsx +667 -667
- package/src/components/NavigationRailItem/NavigationRailItem.tsx +314 -313
- package/src/components/NavigationRailItem/NavigationRailItem.types.ts +175 -167
- package/src/components/NavigationRailItem/README.md +476 -476
- package/src/components/NavigationRailItem/index.ts +2 -2
- package/src/components/NavigationRailPanel/NavigationRailPanel.stories.tsx +462 -462
- package/src/components/NavigationRailPanel/NavigationRailPanel.tsx +332 -332
- package/src/components/NavigationRailPanel/NavigationRailPanel.types.ts +178 -178
- package/src/components/NavigationRailPanel/README.md +461 -461
- package/src/components/NavigationRailPanel/index.ts +6 -6
- package/src/components/NavigationRailTypes/NavigationRailTypes.stories.tsx +682 -528
- package/src/components/NavigationRailTypes/NavigationRailTypes.tsx +363 -378
- package/src/components/NavigationRailTypes/NavigationRailTypes.types.ts +178 -130
- package/src/components/NavigationRailTypes/README.md +573 -573
- package/src/components/NavigationRailTypes/icons.tsx +76 -141
- package/src/components/NavigationRailTypes/index.ts +7 -7
- package/src/components/Notification/Notification.stories.tsx +513 -513
- package/src/components/Notification/Notification.tsx +145 -145
- package/src/components/Notification/Notification.types.ts +142 -142
- package/src/components/Notification/README.md +409 -409
- package/src/components/POSConvention/POSConvention.stories.tsx +235 -235
- package/src/components/POSConvention/POSConvention.tsx +129 -129
- package/src/components/POSConvention/POSConvention.types.ts +38 -38
- package/src/components/POSConvention/README.md +123 -123
- package/src/components/POSConvention/icons.tsx +45 -45
- package/src/components/POSConvention/index.ts +3 -3
- package/src/components/POSLocationButton/POSLocationButton.stories.tsx +531 -531
- package/src/components/POSLocationButton/POSLocationButton.tsx +247 -247
- package/src/components/POSLocationButton/POSLocationButton.types.ts +87 -87
- package/src/components/POSLocationButton/README.md +253 -253
- package/src/components/POSLocationButton/icons.tsx +120 -120
- package/src/components/POSLocationButton/index.ts +14 -14
- package/src/components/POSNumberButton/POSNumberButton.stories.tsx +415 -415
- package/src/components/POSNumberButton/POSNumberButton.tsx +179 -179
- package/src/components/POSNumberButton/POSNumberButton.types.ts +51 -51
- package/src/components/POSNumberButton/README.md +321 -321
- package/src/components/POSNumberButton/index.ts +3 -3
- package/src/components/POSProductButton/POSProductButton.stories.tsx +318 -318
- package/src/components/POSProductCard/POSProductCard.stories.tsx +642 -642
- package/src/components/POSProductCard/POSProductCard.tsx +208 -208
- package/src/components/POSProductCard/POSProductCard.types.ts +76 -76
- package/src/components/POSProductCard/README.md +179 -179
- package/src/components/POSProductCard/icons.tsx +26 -26
- package/src/components/POSProductCard/index.ts +2 -2
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.stories.tsx +753 -753
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.tsx +332 -332
- package/src/components/POSProductSidebarItems/POSProductSidebarItems.types.ts +119 -119
- package/src/components/POSProductSidebarItems/README.md +198 -198
- package/src/components/POSProductSidebarItems/icons.tsx +21 -21
- package/src/components/POSProductSidebarItems/index.ts +3 -3
- package/src/components/POSTable/POSTable.stories.tsx +737 -737
- package/src/components/POSTable/POSTable.tsx +401 -401
- package/src/components/POSTable/README.md +286 -286
- package/src/components/Quantity/Quantity.stories.tsx +457 -457
- package/src/components/Radio/Radio.stories.tsx +523 -523
- package/src/components/Radio/Radio.tsx +1 -1
- package/src/components/Select/Select.stories.tsx +32 -0
- package/src/components/Select/Select.tsx +457 -454
- package/src/components/Select/icons.tsx +16 -41
- package/src/components/SignUpView/SignUpView.stories.tsx +129 -129
- package/src/components/SignUpView/SignUpView.tsx +503 -503
- package/src/components/SignUpView/SignUpView.types.ts +58 -58
- package/src/components/SignUpView/icons.tsx +71 -71
- package/src/components/SignUpView/index.ts +3 -3
- package/src/components/Switch/README.md +112 -112
- package/src/components/Switch/Switch.stories.tsx +550 -550
- package/src/components/Switch/Switch.tsx +246 -246
- package/src/components/Switch/Switch.types.ts +67 -67
- package/src/components/Table/Table.stories.tsx +805 -805
- package/src/components/Tabs/README.md +201 -201
- package/src/components/Tabs/Tabs.stories.tsx +580 -580
- package/src/components/Tabs/Tabs.tsx +356 -356
- package/src/components/Tabs/Tabs.types.ts +127 -127
- package/src/components/Tabs/icons.tsx +129 -129
- package/src/components/Tabs/index.ts +11 -11
- package/src/components/Textarea/Textarea.stories.tsx +535 -535
- package/src/index.ts +133 -102
- package/src/views/LayoutCommercial/LayoutCommercial.stories.tsx +374 -0
- package/src/views/LayoutCommercial/LayoutCommercial.tsx +125 -0
- package/src/views/LayoutCommercial/LayoutCommercial.types.ts +54 -0
- package/src/views/LayoutCommercial/README.md +286 -0
- package/src/views/LayoutCommercial/index.ts +2 -0
- package/src/views/ListView/ListView.stories.tsx +329 -329
- package/src/views/ListView/ListView.tsx +570 -570
- package/src/views/ListView/ListView.types.ts +211 -211
- package/src/views/ListView/icons.tsx +282 -282
- package/src/views/ListView/index.ts +11 -11
- package/src/views/LoginView/LoginView.tsx +426 -426
- package/src/views/ProductsView/ProductsView.stories.tsx +344 -344
- package/src/views/ProductsView/ProductsView.tsx +480 -480
- package/src/views/ProductsView/ProductsView.types.ts +238 -238
- package/src/views/ProductsView/README.md +312 -312
- package/src/views/ProductsView/icons.tsx +38 -38
- package/src/views/ProductsView/index.ts +8 -8
- package/src/views/RecoverPasswordView/RecoverPasswordView.tsx +376 -376
- package/src/views/SignUpView/SignUpView.tsx +503 -503
- package/src/views/TableLayoutView/README.md +268 -268
- package/src/views/TableLayoutView/TableLayoutView.stories.tsx +235 -235
- package/src/views/TableLayoutView/TableLayoutView.tsx +461 -461
- package/src/views/TableLayoutView/TableLayoutView.types.ts +209 -209
- package/src/views/TableLayoutView/icons.tsx +113 -113
- package/src/views/TableLayoutView/index.ts +6 -6
- package/storybook/main.ts +19 -19
- package/storybook/preview.tsx +84 -84
- package/storybook/vitest.setup.ts +6 -6
- package/tailwind.config.js +128 -128
|
@@ -1,211 +1,211 @@
|
|
|
1
|
-
import type { ReactNode, ReactElement } from 'react';
|
|
2
|
-
import type { BadgeColor } from '../../components/Badge/Badge.types';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Interfaz para los items de navegación (Navigation Rail)
|
|
6
|
-
*/
|
|
7
|
-
export interface ListViewNavigationItem {
|
|
8
|
-
/** ID único del item */
|
|
9
|
-
id: string;
|
|
10
|
-
/** Icono del item */
|
|
11
|
-
icon: ReactNode;
|
|
12
|
-
/** Label del item */
|
|
13
|
-
label: string;
|
|
14
|
-
/** Si el item está seleccionado */
|
|
15
|
-
selected?: boolean;
|
|
16
|
-
/** Si el item está deshabilitado */
|
|
17
|
-
disabled?: boolean;
|
|
18
|
-
/** Badge de notificación */
|
|
19
|
-
badge?: boolean;
|
|
20
|
-
/** Contador de badge */
|
|
21
|
-
badgeCount?: number;
|
|
22
|
-
/** Handler de click */
|
|
23
|
-
onClick?: () => void;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Interfaz para los filtros rápidos (badges en la barra de navegación)
|
|
28
|
-
*/
|
|
29
|
-
export interface ListViewQuickFilter {
|
|
30
|
-
/** ID único del filtro */
|
|
31
|
-
id: string;
|
|
32
|
-
/** Label del filtro */
|
|
33
|
-
label: string;
|
|
34
|
-
/** Color del badge */
|
|
35
|
-
color: BadgeColor;
|
|
36
|
-
/** Icono del filtro */
|
|
37
|
-
icon?: ReactElement;
|
|
38
|
-
/** Si el filtro está activo */
|
|
39
|
-
active?: boolean;
|
|
40
|
-
/** Handler de click */
|
|
41
|
-
onClick?: () => void;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* Interfaz para las columnas de la tabla
|
|
46
|
-
*/
|
|
47
|
-
export interface ListViewColumn<T = any> {
|
|
48
|
-
/** Título del header */
|
|
49
|
-
header: string;
|
|
50
|
-
/** Key del objeto para acceder al valor */
|
|
51
|
-
accessor: keyof T | ((row: T) => any);
|
|
52
|
-
/** Si es sortable */
|
|
53
|
-
sortable?: boolean;
|
|
54
|
-
/** Render custom */
|
|
55
|
-
render?: (value: any, row: T, index: number) => ReactNode;
|
|
56
|
-
/** Alineación */
|
|
57
|
-
align?: 'left' | 'center' | 'right';
|
|
58
|
-
/** Ancho */
|
|
59
|
-
width?: string;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Interfaz para los datos del dropdown de usuario
|
|
64
|
-
*/
|
|
65
|
-
export interface ListViewUserDropdown {
|
|
66
|
-
/** URL del avatar */
|
|
67
|
-
avatar: string;
|
|
68
|
-
/** Nombre del usuario */
|
|
69
|
-
name: string;
|
|
70
|
-
/** Email o rol del usuario */
|
|
71
|
-
email?: string;
|
|
72
|
-
/** Rol del usuario */
|
|
73
|
-
role?: string;
|
|
74
|
-
/** Handler del click en menú */
|
|
75
|
-
onMenuClick?: () => void;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Interfaz para las notificaciones
|
|
80
|
-
*/
|
|
81
|
-
export interface ListViewNotifications {
|
|
82
|
-
/** Contador del carrito */
|
|
83
|
-
cart?: number;
|
|
84
|
-
/** Si tiene notificaciones de campana */
|
|
85
|
-
bell?: boolean;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Interfaz para los botones de acción
|
|
90
|
-
*/
|
|
91
|
-
export interface ListViewActionButton {
|
|
92
|
-
/** ID del botón */
|
|
93
|
-
id: string;
|
|
94
|
-
/** Label del botón */
|
|
95
|
-
label: string;
|
|
96
|
-
/** Icono del botón */
|
|
97
|
-
icon?: ReactNode;
|
|
98
|
-
/** Handler del click */
|
|
99
|
-
onClick?: () => void;
|
|
100
|
-
/** Variante del botón */
|
|
101
|
-
variant?: 'primary' | 'secondary';
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Dirección de ordenamiento
|
|
106
|
-
*/
|
|
107
|
-
export type ListViewSortDirection = 'asc' | 'desc' | null;
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Props del componente ListView
|
|
111
|
-
*/
|
|
112
|
-
export interface ListViewProps<T = any> {
|
|
113
|
-
/** Título de la vista */
|
|
114
|
-
title?: string;
|
|
115
|
-
|
|
116
|
-
/** Título del navbar */
|
|
117
|
-
navbarTitle?: string;
|
|
118
|
-
|
|
119
|
-
/** Título de la tabla */
|
|
120
|
-
tableTitle?: string;
|
|
121
|
-
|
|
122
|
-
/** Columnas de la tabla */
|
|
123
|
-
columns: ListViewColumn<T>[];
|
|
124
|
-
|
|
125
|
-
/** Datos de la tabla */
|
|
126
|
-
data: T[];
|
|
127
|
-
|
|
128
|
-
/** Items de navegación lateral */
|
|
129
|
-
navigationItems?: ListViewNavigationItem[];
|
|
130
|
-
|
|
131
|
-
/** Filtros rápidos */
|
|
132
|
-
quickFilters?: ListViewQuickFilter[];
|
|
133
|
-
|
|
134
|
-
/** Botones de acción */
|
|
135
|
-
actionButtons?: ListViewActionButton[];
|
|
136
|
-
|
|
137
|
-
/** Dropdown del usuario */
|
|
138
|
-
userDropdown?: ListViewUserDropdown;
|
|
139
|
-
|
|
140
|
-
/** Notificaciones */
|
|
141
|
-
notifications?: ListViewNotifications;
|
|
142
|
-
|
|
143
|
-
/** Badge de ambiente */
|
|
144
|
-
environmentBadge?: string;
|
|
145
|
-
|
|
146
|
-
/** Si mostrar el FAB en navigation rail */
|
|
147
|
-
showFab?: boolean;
|
|
148
|
-
|
|
149
|
-
/** Icono del FAB */
|
|
150
|
-
fabIcon?: ReactNode;
|
|
151
|
-
|
|
152
|
-
/** Handler del FAB */
|
|
153
|
-
onFabClick?: () => void;
|
|
154
|
-
|
|
155
|
-
/** Handler de búsqueda */
|
|
156
|
-
onSearch?: (query: string) => void;
|
|
157
|
-
|
|
158
|
-
/** Placeholder del buscador */
|
|
159
|
-
searchPlaceholder?: string;
|
|
160
|
-
|
|
161
|
-
/** Handler de ordenamiento */
|
|
162
|
-
onSort?: (column: keyof T | string, direction: ListViewSortDirection) => void;
|
|
163
|
-
|
|
164
|
-
/** Columna de ordenamiento actual */
|
|
165
|
-
sortColumn?: keyof T | string;
|
|
166
|
-
|
|
167
|
-
/** Dirección de ordenamiento actual */
|
|
168
|
-
sortDirection?: ListViewSortDirection;
|
|
169
|
-
|
|
170
|
-
/** Props de paginación */
|
|
171
|
-
pagination?: {
|
|
172
|
-
currentPage: number;
|
|
173
|
-
totalPages: number;
|
|
174
|
-
onPageChange: (page: number) => void;
|
|
175
|
-
previousLabel?: string;
|
|
176
|
-
nextLabel?: string;
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
/** Si está cargando */
|
|
180
|
-
loading?: boolean;
|
|
181
|
-
|
|
182
|
-
/** Número de filas skeleton */
|
|
183
|
-
loadingRows?: number;
|
|
184
|
-
|
|
185
|
-
/** Mensaje cuando no hay datos */
|
|
186
|
-
emptyMessage?: string;
|
|
187
|
-
|
|
188
|
-
/** Clases adicionales */
|
|
189
|
-
className?: string;
|
|
190
|
-
|
|
191
|
-
/** ID de navegación seleccionado */
|
|
192
|
-
selectedNavId?: string;
|
|
193
|
-
|
|
194
|
-
/** Handler de selección de navegación */
|
|
195
|
-
onNavSelect?: (id: string) => void;
|
|
196
|
-
|
|
197
|
-
/** Handler click en carrito */
|
|
198
|
-
onCartClick?: () => void;
|
|
199
|
-
|
|
200
|
-
/** Handler click en notificaciones */
|
|
201
|
-
onNotificationsClick?: () => void;
|
|
202
|
-
|
|
203
|
-
/** Opciones del dropdown de vista */
|
|
204
|
-
viewOptions?: Array<{ id: string; label: string }>;
|
|
205
|
-
|
|
206
|
-
/** Opción de vista seleccionada */
|
|
207
|
-
selectedViewOption?: string;
|
|
208
|
-
|
|
209
|
-
/** Handler de cambio de opción de vista */
|
|
210
|
-
onViewOptionChange?: (id: string) => void;
|
|
211
|
-
}
|
|
1
|
+
import type { ReactNode, ReactElement } from 'react';
|
|
2
|
+
import type { BadgeColor } from '../../components/Badge/Badge.types';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Interfaz para los items de navegación (Navigation Rail)
|
|
6
|
+
*/
|
|
7
|
+
export interface ListViewNavigationItem {
|
|
8
|
+
/** ID único del item */
|
|
9
|
+
id: string;
|
|
10
|
+
/** Icono del item */
|
|
11
|
+
icon: ReactNode;
|
|
12
|
+
/** Label del item */
|
|
13
|
+
label: string;
|
|
14
|
+
/** Si el item está seleccionado */
|
|
15
|
+
selected?: boolean;
|
|
16
|
+
/** Si el item está deshabilitado */
|
|
17
|
+
disabled?: boolean;
|
|
18
|
+
/** Badge de notificación */
|
|
19
|
+
badge?: boolean;
|
|
20
|
+
/** Contador de badge */
|
|
21
|
+
badgeCount?: number;
|
|
22
|
+
/** Handler de click */
|
|
23
|
+
onClick?: () => void;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Interfaz para los filtros rápidos (badges en la barra de navegación)
|
|
28
|
+
*/
|
|
29
|
+
export interface ListViewQuickFilter {
|
|
30
|
+
/** ID único del filtro */
|
|
31
|
+
id: string;
|
|
32
|
+
/** Label del filtro */
|
|
33
|
+
label: string;
|
|
34
|
+
/** Color del badge */
|
|
35
|
+
color: BadgeColor;
|
|
36
|
+
/** Icono del filtro */
|
|
37
|
+
icon?: ReactElement;
|
|
38
|
+
/** Si el filtro está activo */
|
|
39
|
+
active?: boolean;
|
|
40
|
+
/** Handler de click */
|
|
41
|
+
onClick?: () => void;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Interfaz para las columnas de la tabla
|
|
46
|
+
*/
|
|
47
|
+
export interface ListViewColumn<T = any> {
|
|
48
|
+
/** Título del header */
|
|
49
|
+
header: string;
|
|
50
|
+
/** Key del objeto para acceder al valor */
|
|
51
|
+
accessor: keyof T | ((row: T) => any);
|
|
52
|
+
/** Si es sortable */
|
|
53
|
+
sortable?: boolean;
|
|
54
|
+
/** Render custom */
|
|
55
|
+
render?: (value: any, row: T, index: number) => ReactNode;
|
|
56
|
+
/** Alineación */
|
|
57
|
+
align?: 'left' | 'center' | 'right';
|
|
58
|
+
/** Ancho */
|
|
59
|
+
width?: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Interfaz para los datos del dropdown de usuario
|
|
64
|
+
*/
|
|
65
|
+
export interface ListViewUserDropdown {
|
|
66
|
+
/** URL del avatar */
|
|
67
|
+
avatar: string;
|
|
68
|
+
/** Nombre del usuario */
|
|
69
|
+
name: string;
|
|
70
|
+
/** Email o rol del usuario */
|
|
71
|
+
email?: string;
|
|
72
|
+
/** Rol del usuario */
|
|
73
|
+
role?: string;
|
|
74
|
+
/** Handler del click en menú */
|
|
75
|
+
onMenuClick?: () => void;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* Interfaz para las notificaciones
|
|
80
|
+
*/
|
|
81
|
+
export interface ListViewNotifications {
|
|
82
|
+
/** Contador del carrito */
|
|
83
|
+
cart?: number;
|
|
84
|
+
/** Si tiene notificaciones de campana */
|
|
85
|
+
bell?: boolean;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Interfaz para los botones de acción
|
|
90
|
+
*/
|
|
91
|
+
export interface ListViewActionButton {
|
|
92
|
+
/** ID del botón */
|
|
93
|
+
id: string;
|
|
94
|
+
/** Label del botón */
|
|
95
|
+
label: string;
|
|
96
|
+
/** Icono del botón */
|
|
97
|
+
icon?: ReactNode;
|
|
98
|
+
/** Handler del click */
|
|
99
|
+
onClick?: () => void;
|
|
100
|
+
/** Variante del botón */
|
|
101
|
+
variant?: 'primary' | 'secondary';
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Dirección de ordenamiento
|
|
106
|
+
*/
|
|
107
|
+
export type ListViewSortDirection = 'asc' | 'desc' | null;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Props del componente ListView
|
|
111
|
+
*/
|
|
112
|
+
export interface ListViewProps<T = any> {
|
|
113
|
+
/** Título de la vista */
|
|
114
|
+
title?: string;
|
|
115
|
+
|
|
116
|
+
/** Título del navbar */
|
|
117
|
+
navbarTitle?: string;
|
|
118
|
+
|
|
119
|
+
/** Título de la tabla */
|
|
120
|
+
tableTitle?: string;
|
|
121
|
+
|
|
122
|
+
/** Columnas de la tabla */
|
|
123
|
+
columns: ListViewColumn<T>[];
|
|
124
|
+
|
|
125
|
+
/** Datos de la tabla */
|
|
126
|
+
data: T[];
|
|
127
|
+
|
|
128
|
+
/** Items de navegación lateral */
|
|
129
|
+
navigationItems?: ListViewNavigationItem[];
|
|
130
|
+
|
|
131
|
+
/** Filtros rápidos */
|
|
132
|
+
quickFilters?: ListViewQuickFilter[];
|
|
133
|
+
|
|
134
|
+
/** Botones de acción */
|
|
135
|
+
actionButtons?: ListViewActionButton[];
|
|
136
|
+
|
|
137
|
+
/** Dropdown del usuario */
|
|
138
|
+
userDropdown?: ListViewUserDropdown;
|
|
139
|
+
|
|
140
|
+
/** Notificaciones */
|
|
141
|
+
notifications?: ListViewNotifications;
|
|
142
|
+
|
|
143
|
+
/** Badge de ambiente */
|
|
144
|
+
environmentBadge?: string;
|
|
145
|
+
|
|
146
|
+
/** Si mostrar el FAB en navigation rail */
|
|
147
|
+
showFab?: boolean;
|
|
148
|
+
|
|
149
|
+
/** Icono del FAB */
|
|
150
|
+
fabIcon?: ReactNode;
|
|
151
|
+
|
|
152
|
+
/** Handler del FAB */
|
|
153
|
+
onFabClick?: () => void;
|
|
154
|
+
|
|
155
|
+
/** Handler de búsqueda */
|
|
156
|
+
onSearch?: (query: string) => void;
|
|
157
|
+
|
|
158
|
+
/** Placeholder del buscador */
|
|
159
|
+
searchPlaceholder?: string;
|
|
160
|
+
|
|
161
|
+
/** Handler de ordenamiento */
|
|
162
|
+
onSort?: (column: keyof T | string, direction: ListViewSortDirection) => void;
|
|
163
|
+
|
|
164
|
+
/** Columna de ordenamiento actual */
|
|
165
|
+
sortColumn?: keyof T | string;
|
|
166
|
+
|
|
167
|
+
/** Dirección de ordenamiento actual */
|
|
168
|
+
sortDirection?: ListViewSortDirection;
|
|
169
|
+
|
|
170
|
+
/** Props de paginación */
|
|
171
|
+
pagination?: {
|
|
172
|
+
currentPage: number;
|
|
173
|
+
totalPages: number;
|
|
174
|
+
onPageChange: (page: number) => void;
|
|
175
|
+
previousLabel?: string;
|
|
176
|
+
nextLabel?: string;
|
|
177
|
+
};
|
|
178
|
+
|
|
179
|
+
/** Si está cargando */
|
|
180
|
+
loading?: boolean;
|
|
181
|
+
|
|
182
|
+
/** Número de filas skeleton */
|
|
183
|
+
loadingRows?: number;
|
|
184
|
+
|
|
185
|
+
/** Mensaje cuando no hay datos */
|
|
186
|
+
emptyMessage?: string;
|
|
187
|
+
|
|
188
|
+
/** Clases adicionales */
|
|
189
|
+
className?: string;
|
|
190
|
+
|
|
191
|
+
/** ID de navegación seleccionado */
|
|
192
|
+
selectedNavId?: string;
|
|
193
|
+
|
|
194
|
+
/** Handler de selección de navegación */
|
|
195
|
+
onNavSelect?: (id: string) => void;
|
|
196
|
+
|
|
197
|
+
/** Handler click en carrito */
|
|
198
|
+
onCartClick?: () => void;
|
|
199
|
+
|
|
200
|
+
/** Handler click en notificaciones */
|
|
201
|
+
onNotificationsClick?: () => void;
|
|
202
|
+
|
|
203
|
+
/** Opciones del dropdown de vista */
|
|
204
|
+
viewOptions?: Array<{ id: string; label: string }>;
|
|
205
|
+
|
|
206
|
+
/** Opción de vista seleccionada */
|
|
207
|
+
selectedViewOption?: string;
|
|
208
|
+
|
|
209
|
+
/** Handler de cambio de opción de vista */
|
|
210
|
+
onViewOptionChange?: (id: string) => void;
|
|
211
|
+
}
|