pixelon 0.3.25 → 0.3.27
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/dist/components/atoms/chat/AudioWaves/AudioWaves(1).d.ts +21 -0
- package/dist/components/atoms/chat/AudioWaves/index(1).d.ts +2 -0
- package/dist/components/atoms/chat/DateDivider/DateDivider(1).d.ts +7 -0
- package/dist/components/atoms/chat/Loader/Loader(1).d.ts +10 -0
- package/dist/components/atoms/chat/Loader/index(1).d.ts +2 -0
- package/dist/components/atoms/chat/Select/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/Button/Button(1).d.ts +17 -0
- package/dist/components/atoms/lumi/Checkbox/Checkbox(1).d.ts +5 -0
- package/dist/components/atoms/lumi/Checkbox/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/Checkbox/index(2).d.ts +2 -0
- package/dist/components/atoms/lumi/Checkbox/types(1).d.ts +93 -0
- package/dist/components/atoms/lumi/CurrencyDisplay/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/DateDisplay/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/DateDisplay/index(2).d.ts +2 -0
- package/dist/components/atoms/lumi/DateInput/DateInput(1).d.ts +27 -0
- package/dist/components/atoms/lumi/DateInput/WebDatePicker(1).d.ts +19 -0
- package/dist/components/atoms/lumi/DateInput/WebDatePicker(2).d.ts +19 -0
- package/dist/components/atoms/lumi/Icon/Icon(1).d.ts +52 -0
- package/dist/components/atoms/lumi/Input/index(1).d.ts +3 -0
- package/dist/components/atoms/lumi/Popover/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/Popover/types(1).d.ts +62 -0
- package/dist/components/atoms/lumi/TextArea/index(1).d.ts +2 -0
- package/dist/components/atoms/lumi/TextArea/types(1).d.ts +35 -0
- package/dist/components/atoms/lumi/TimeInput/TimeInput(1).d.ts +27 -0
- package/dist/components/atoms/lumi/TimeInput/TimeInput(2).d.ts +27 -0
- package/dist/components/molecules/chat/Drawer/Drawer.d.ts +2 -0
- package/dist/components/molecules/chat/FullscreenViewer/hooks/useSwipeGestures(1).d.ts +12 -0
- package/dist/components/molecules/chat/StructuredContent/StructuredContent(1).d.ts +10 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/CarouselDisplay.d.ts +4 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/components/CarouselCard/CarouselCard.d.ts +15 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/components/CarouselConfirm/CarouselConfirm.d.ts +10 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/components/CarouselSearch/CarouselSearch.d.ts +8 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/components/CarouselTrack/CarouselTrack.d.ts +11 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/store/actions.d.ts +26 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/store/carouselStore.d.ts +8 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/store/index.d.ts +6 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/store/storeKeys.d.ts +10 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/store/types.d.ts +11 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/types.d.ts +43 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/useCarouselSearch.d.ts +15 -0
- package/dist/components/molecules/chat/StructuredContent/components/CarouselDisplay/useStoreState.d.ts +3 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/DynamicField(1).d.ts +13 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/DynamicField.d.ts +13 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/ReactiveForm.d.ts +4 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/ReactiveFormView.d.ts +10 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/buildYupSchema(1).d.ts +4 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/buildYupSchema.d.ts +4 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/resolveVariables.d.ts +20 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/types(1).d.ts +91 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/types.d.ts +100 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/useReactiveEndpoints(1).d.ts +17 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/useReactiveEndpoints(2).d.ts +23 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/useReactiveEndpoints.d.ts +23 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/useReactiveForm(1).d.ts +38 -0
- package/dist/components/molecules/chat/StructuredContent/components/ReactiveForm/useReactiveForm.d.ts +38 -0
- package/dist/components/molecules/chat/StructuredContent/components/index.d.ts +2 -0
- package/dist/components/molecules/chat/StructuredContent/helpers/contentParser(1).d.ts +7 -0
- package/dist/components/molecules/chat/StructuredContent/helpers/fetchViaEventBus.d.ts +2 -0
- package/dist/components/molecules/chat/StructuredContent/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Breadcrumb/Breadcrumb(1).d.ts +10 -0
- package/dist/components/molecules/lumi/Breadcrumb/Breadcrumb(2).d.ts +10 -0
- package/dist/components/molecules/lumi/Breadcrumb/types(1).d.ts +105 -0
- package/dist/components/molecules/lumi/Checkbox/Checkbox(1).d.ts +11 -0
- package/dist/components/molecules/lumi/Checkbox/index(1).d.ts +4 -0
- package/dist/components/molecules/lumi/Checkbox/use-cases/index(1).d.ts +1 -0
- package/dist/components/molecules/lumi/Checkbox/validation-helpers(1).d.ts +151 -0
- package/dist/components/molecules/lumi/DateInput/FormDateInput(1).d.ts +12 -0
- package/dist/components/molecules/lumi/DateInput/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/DateInput/use-cases/FormDateInputClearWithResetUseCase(1).d.ts +21 -0
- package/dist/components/molecules/lumi/DateInput/use-cases/FormDateInputErrorVisibilityUseCase(1).d.ts +21 -0
- package/dist/components/molecules/lumi/Drawer/Drawer(1).d.ts +39 -0
- package/dist/components/molecules/lumi/Drawer/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/DropdownMenu/DropdownMenu(1).d.ts +22 -0
- package/dist/components/molecules/lumi/DropdownMenu/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/DropdownMenu/types(1).d.ts +29 -0
- package/dist/components/molecules/lumi/Filter/FilterRow(1).d.ts +13 -0
- package/dist/components/molecules/lumi/Filter/helpers/conditionHelpers(1).d.ts +14 -0
- package/dist/components/molecules/lumi/Filter/index(1).d.ts +5 -0
- package/dist/components/molecules/lumi/Filter/types(1).d.ts +115 -0
- package/dist/components/molecules/lumi/Input/Input(1).d.ts +12 -0
- package/dist/components/molecules/lumi/Menu/Menu(1).d.ts +18 -0
- package/dist/components/molecules/lumi/Menu/MenuContext(1).d.ts +41 -0
- package/dist/components/molecules/lumi/Menu/MenuItem(1).d.ts +6 -0
- package/dist/components/molecules/lumi/Menu/MenuItem(2).d.ts +6 -0
- package/dist/components/molecules/lumi/Menu/MenuItemGroup(1).d.ts +6 -0
- package/dist/components/molecules/lumi/Menu/SubMenu(1).d.ts +6 -0
- package/dist/components/molecules/lumi/Menu/iconHelper(1).d.ts +15 -0
- package/dist/components/molecules/lumi/Menu/index(1).d.ts +8 -0
- package/dist/components/molecules/lumi/Menu/index(2).d.ts +8 -0
- package/dist/components/molecules/lumi/Menu/types(1).d.ts +119 -0
- package/dist/components/molecules/lumi/Pagination/Pagination(1).d.ts +4 -0
- package/dist/components/molecules/lumi/Pagination/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Select/Select(1).d.ts +14 -0
- package/dist/components/molecules/lumi/Select/Select(2).d.ts +14 -0
- package/dist/components/molecules/lumi/Select/Select(3).d.ts +14 -0
- package/dist/components/molecules/lumi/Select/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Select/index(2).d.ts +2 -0
- package/dist/components/molecules/lumi/Select/use-cases/FormSelectClearWithResetUseCase(1).d.ts +21 -0
- package/dist/components/molecules/lumi/Select/use-cases/FormSelectClearWithResetUseCase(2).d.ts +21 -0
- package/dist/components/molecules/lumi/Select/use-cases/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Select/use-cases/index(2).d.ts +2 -0
- package/dist/components/molecules/lumi/Table/Table(1).d.ts +6 -0
- package/dist/components/molecules/lumi/Table/Table(2).d.ts +6 -0
- package/dist/components/molecules/lumi/Table/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Table/types(1).d.ts +177 -0
- package/dist/components/molecules/lumi/Table/types(2).d.ts +177 -0
- package/dist/components/molecules/lumi/Tabs/Tabs(1).d.ts +4 -0
- package/dist/components/molecules/lumi/Tabs/Tabs(2).d.ts +4 -0
- package/dist/components/molecules/lumi/Tabs/index(1).d.ts +2 -0
- package/dist/components/molecules/lumi/Tabs/index(2).d.ts +2 -0
- package/dist/components/molecules/lumi/TimeInput/FormTimeInput(1).d.ts +12 -0
- package/dist/components/molecules/lumi/TimeInput/use-cases/FormTimeInputClearWithResetUseCase(1).d.ts +21 -0
- package/dist/components/molecules/lumi/TimeInput/use-cases/FormTimeInputErrorVisibilityUseCase(1).d.ts +21 -0
- package/dist/components/molecules/lumi/TimeInput/use-cases/index(1).d.ts +4 -0
- package/dist/components/organisms/chat/Chat/Chat(1).d.ts +12 -0
- package/dist/components/organisms/chat/Chat/hooks/useChatHandlers(1).d.ts +15 -0
- package/dist/components/organisms/chat/Chat/hooks/useChatStore.d.ts +3 -0
- package/dist/components/organisms/chat/Chat/hooks/useKeyboardLock(1).d.ts +15 -0
- package/dist/components/organisms/chat/Chat/index(1).d.ts +3 -0
- package/dist/components/organisms/chat/Chat/store/actions.d.ts +3 -0
- package/dist/components/organisms/chat/Chat/store/index(1).d.ts +4 -0
- package/dist/components/organisms/chat/Chat/store/types.d.ts +3 -0
- package/dist/components/organisms/chat/Chat/use-cases/GroupMessagesByDateUseCase(1).d.ts +20 -0
- package/dist/components/organisms/chat/index(1).d.ts +3 -0
- package/dist/components/organisms/chat/index(2).d.ts +3 -0
- package/dist/components/organisms/lumi/ActionBar/ActionBar(1).d.ts +18 -0
- package/dist/components/organisms/lumi/ActionBar/types(1).d.ts +57 -0
- package/dist/components/organisms/lumi/BaseNavbar/types(1).d.ts +34 -0
- package/dist/components/organisms/lumi/BaseWorkspace/BaseWorkspace(1).d.ts +28 -0
- package/dist/components/organisms/lumi/BaseWorkspace/index(1).d.ts +2 -0
- package/dist/components/organisms/lumi/Calendar/components/CalendarEvent(1).d.ts +18 -0
- package/dist/components/organisms/lumi/Calendar/components/CalendarEvent(2).d.ts +18 -0
- package/dist/components/organisms/lumi/Calendar/components/CalendarEvent(3).d.ts +18 -0
- package/dist/components/organisms/lumi/Calendar/components/CalendarHeader(1).d.ts +14 -0
- package/dist/components/organisms/lumi/Calendar/components/TimeGutter(1).d.ts +10 -0
- package/dist/components/organisms/lumi/Calendar/components/TimeGutter(2).d.ts +10 -0
- package/dist/components/organisms/lumi/Calendar/hooks/index(1).d.ts +4 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useCalendarHeight(1).d.ts +58 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useCalendarHeight(2).d.ts +58 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useEventLayout(1).d.ts +21 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useEventLayout(2).d.ts +21 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useTimeSlots(1).d.ts +14 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useTimeSlots(2).d.ts +14 -0
- package/dist/components/organisms/lumi/Calendar/hooks/useTimeSlots(3).d.ts +14 -0
- package/dist/components/organisms/lumi/Calendar/i18n/index(1).d.ts +1 -0
- package/dist/components/organisms/lumi/Calendar/i18n/index(2).d.ts +1 -0
- package/dist/components/organisms/lumi/Calendar/i18n/translations(1).d.ts +34 -0
- package/dist/components/organisms/lumi/Calendar/index(1).d.ts +2 -0
- package/dist/components/organisms/lumi/Calendar/utils/dateUtils(1).d.ts +140 -0
- package/dist/components/organisms/lumi/Calendar/utils/dateUtils(2).d.ts +140 -0
- package/dist/components/organisms/lumi/Calendar/utils/index(1).d.ts +2 -0
- package/dist/components/organisms/lumi/Calendar/utils/multiDayUtils(1).d.ts +73 -0
- package/dist/components/organisms/lumi/Calendar/views/DayView(1).d.ts +17 -0
- package/dist/components/organisms/lumi/Calendar/views/DayView(2).d.ts +17 -0
- package/dist/components/organisms/lumi/Calendar/views/MonthView(1).d.ts +17 -0
- package/dist/components/organisms/lumi/Calendar/views/MonthView(2).d.ts +17 -0
- package/dist/components/organisms/lumi/Calendar/views/WeekView(1).d.ts +19 -0
- package/dist/components/organisms/lumi/Calendar/views/WeekView(2).d.ts +19 -0
- package/dist/components/organisms/lumi/Calendar/views/YearView(1).d.ts +13 -0
- package/dist/components/organisms/lumi/Calendar/views/index(1).d.ts +4 -0
- package/dist/components/organisms/lumi/Calendar/views/index(2).d.ts +4 -0
- package/dist/components/organisms/lumi/DashboardNavbar/index(1).d.ts +7 -0
- package/dist/components/organisms/lumi/DashboardNavbar/types(1).d.ts +52 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/DashboardWorkspace(1).d.ts +23 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/DashboardWorkspace(2).d.ts +23 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/index(1).d.ts +7 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/index(2).d.ts +7 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/types(1).d.ts +60 -0
- package/dist/components/organisms/lumi/DashboardWorkspace/types(2).d.ts +60 -0
- package/dist/components/organisms/lumi/DynamicForm/DynamicForm(1).d.ts +21 -0
- package/dist/components/organisms/lumi/DynamicForm/helpers/fieldMapper(1).d.ts +17 -0
- package/dist/components/organisms/lumi/DynamicForm/helpers/fieldMapper(2).d.ts +17 -0
- package/dist/components/organisms/lumi/DynamicForm/helpers/fieldRenderer(1).d.ts +6 -0
- package/dist/components/organisms/lumi/DynamicForm/helpers/fieldRenderer(2).d.ts +6 -0
- package/dist/components/organisms/lumi/DynamicForm/index(1).d.ts +2 -0
- package/dist/components/organisms/lumi/DynamicForm/index(2).d.ts +2 -0
- package/dist/components/organisms/lumi/DynamicForm/types(1).d.ts +96 -0
- package/dist/components/organisms/lumi/DynamicForm/types(2).d.ts +96 -0
- package/dist/components/organisms/lumi/FormDrawer/FormDrawer(1).d.ts +5 -0
- package/dist/components/organisms/lumi/FormDrawer/index(1).d.ts +3 -0
- package/dist/components/organisms/lumi/FormDrawer/types(1).d.ts +61 -0
- package/dist/components/organisms/lumi/FormDrawer/types(2).d.ts +61 -0
- package/dist/components/organisms/lumi/Stepper/StepIndicator(1).d.ts +4 -0
- package/dist/components/organisms/lumi/Stepper/Stepper(1).d.ts +5 -0
- package/dist/components/organisms/lumi/Stepper/index(1).d.ts +3 -0
- package/dist/components/organisms/lumi/Stepper/types(1).d.ts +96 -0
- package/dist/components/organisms/lumi/Stepper/types(2).d.ts +96 -0
- package/dist/components/organisms/lumi/index(1).d.ts +10 -0
- package/dist/components/organisms/lumi/index(2).d.ts +10 -0
- package/dist/components/templates/chat/ChatWidget/ChatWidget(1).d.ts +10 -0
- package/dist/components/templates/chat/ChatWidget/hooks/index(1).d.ts +1 -0
- package/dist/components/templates/chat/ChatWidget/index(1).d.ts +2 -0
- package/dist/components/templates/chat/ChatWidget/index(2).d.ts +2 -0
- package/dist/components/templates/chat/ChatWidget/types(1).d.ts +90 -0
- package/dist/components/templates/lumi/Base/hooks/index(1).d.ts +2 -0
- package/dist/components/templates/lumi/Base/hooks/useAppHeight(1).d.ts +21 -0
- package/dist/components/templates/lumi/Base/index(1).d.ts +2 -0
- package/dist/components/templates/lumi/Base/types(1).d.ts +54 -0
- package/dist/components/templates/lumi/Crud/Crud(1).d.ts +6 -0
- package/dist/components/templates/lumi/Crud/Crud(2).d.ts +6 -0
- package/dist/components/templates/lumi/Crud/helpers/fieldMapper(1).d.ts +13 -0
- package/dist/components/templates/lumi/Crud/hooks/useCrudActions(1).d.ts +11 -0
- package/dist/components/templates/lumi/Crud/index(1).d.ts +2 -0
- package/dist/components/templates/lumi/Crud/store/actions(1).d.ts +45 -0
- package/dist/components/templates/lumi/Crud/store/crudStore(1).d.ts +8 -0
- package/dist/components/templates/lumi/Crud/store/index(1).d.ts +5 -0
- package/dist/components/templates/lumi/Crud/store/types(1).d.ts +71 -0
- package/dist/components/templates/lumi/Dashboard/Dashboard(1).d.ts +25 -0
- package/dist/components/templates/lumi/Dashboard/hooks/index(1).d.ts +12 -0
- package/dist/components/templates/lumi/Dashboard/hooks/index(2).d.ts +12 -0
- package/dist/components/templates/lumi/Dashboard/hooks/useDashboardStore(1).d.ts +34 -0
- package/dist/components/templates/lumi/Dashboard/hooks/useScrollToTop(1).d.ts +47 -0
- package/dist/components/templates/lumi/Dashboard/index(1).d.ts +10 -0
- package/dist/components/templates/lumi/Dashboard/store/storeKeys(1).d.ts +13 -0
- package/dist/components/templates/lumi/Dashboard/store/types(1).d.ts +73 -0
- package/dist/components/templates/lumi/Dashboard/store/types(2).d.ts +73 -0
- package/dist/components/templates/lumi/Dashboard/types(1).d.ts +114 -0
- package/dist/components/templates/lumi/Dashboard/types(2).d.ts +114 -0
- package/dist/components/templates/lumi/index(1).d.ts +3 -0
- package/dist/core/chat/ChatConfigContext(1).d.ts +36 -0
- package/dist/core/chat/chatMessage.d.ts +1 -1
- package/dist/core/eventBus/chatEventBus.d.ts +67 -0
- package/dist/index(1).esm.js +19378 -0
- package/dist/index(1).js +19487 -0
- package/dist/index.esm.js +2221 -348
- package/dist/index.js +2221 -348
- package/dist/styles(1).css +1 -0
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +1 -1
- package/src/styles/index.scss +7 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export type StepStatus = 'pending' | 'active' | 'completed' | 'error';
|
|
3
|
+
export interface StepConfig {
|
|
4
|
+
/** Identificador único del paso */
|
|
5
|
+
id: string;
|
|
6
|
+
/** Título del paso (opcional, se muestra en tooltip) */
|
|
7
|
+
title?: string;
|
|
8
|
+
/** Descripción del paso (opcional) */
|
|
9
|
+
description?: string;
|
|
10
|
+
/** Icono personalizado para el paso (opcional) */
|
|
11
|
+
icon?: ReactNode;
|
|
12
|
+
/** Si el paso está deshabilitado */
|
|
13
|
+
disabled?: boolean;
|
|
14
|
+
/** Función de validación antes de avanzar al siguiente paso */
|
|
15
|
+
validate?: () => boolean | Promise<boolean>;
|
|
16
|
+
/** Callback cuando el paso se completa */
|
|
17
|
+
onComplete?: () => void;
|
|
18
|
+
}
|
|
19
|
+
export interface StepperProps {
|
|
20
|
+
/** Configuración de los pasos */
|
|
21
|
+
steps: StepConfig[];
|
|
22
|
+
/** Índice del paso actual (controlado) */
|
|
23
|
+
currentStep?: number;
|
|
24
|
+
/** Paso inicial (no controlado) */
|
|
25
|
+
defaultStep?: number;
|
|
26
|
+
/** Callback cuando cambia el paso */
|
|
27
|
+
onStepChange?: (stepIndex: number, stepId: string) => void;
|
|
28
|
+
/** Callback cuando se completan todos los pasos */
|
|
29
|
+
onComplete?: () => void;
|
|
30
|
+
/** Callback cuando se cancela el flujo */
|
|
31
|
+
onCancel?: () => void;
|
|
32
|
+
/** Contenido de cada paso (children como función o array) */
|
|
33
|
+
children: ReactNode | ((step: StepConfig, index: number) => ReactNode);
|
|
34
|
+
/** Orientación del stepper */
|
|
35
|
+
orientation?: 'horizontal' | 'vertical';
|
|
36
|
+
/** Tamaño de los indicadores */
|
|
37
|
+
size?: 'small' | 'medium' | 'large';
|
|
38
|
+
/** Variante de los indicadores */
|
|
39
|
+
variant?: 'circle' | 'dot' | 'number';
|
|
40
|
+
/** Si se permite navegación libre entre pasos completados */
|
|
41
|
+
allowNavigation?: boolean;
|
|
42
|
+
/** Si se muestra la línea conectora entre pasos */
|
|
43
|
+
showConnector?: boolean;
|
|
44
|
+
/** Texto del botón anterior */
|
|
45
|
+
prevButtonText?: string;
|
|
46
|
+
/** Texto del botón siguiente */
|
|
47
|
+
nextButtonText?: string;
|
|
48
|
+
/** Texto del botón finalizar */
|
|
49
|
+
finishButtonText?: string;
|
|
50
|
+
/** Texto del botón cancelar */
|
|
51
|
+
cancelButtonText?: string;
|
|
52
|
+
/** Si se muestra el botón cancelar */
|
|
53
|
+
showCancelButton?: boolean;
|
|
54
|
+
/** Si se ocultan los botones de navegación */
|
|
55
|
+
hideNavigation?: boolean;
|
|
56
|
+
/** Renderizado personalizado del header */
|
|
57
|
+
renderHeader?: (props: StepperHeaderRenderProps) => ReactNode;
|
|
58
|
+
/** Renderizado personalizado del footer */
|
|
59
|
+
renderFooter?: (props: StepperFooterRenderProps) => ReactNode;
|
|
60
|
+
/** Clase CSS adicional */
|
|
61
|
+
className?: string;
|
|
62
|
+
/** Si está cargando (deshabilita navegación) */
|
|
63
|
+
loading?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export interface StepperHeaderRenderProps {
|
|
66
|
+
steps: StepConfig[];
|
|
67
|
+
currentStep: number;
|
|
68
|
+
goToStep: (index: number) => void;
|
|
69
|
+
getStepStatus: (index: number) => StepStatus;
|
|
70
|
+
}
|
|
71
|
+
export interface StepperFooterRenderProps {
|
|
72
|
+
currentStep: number;
|
|
73
|
+
totalSteps: number;
|
|
74
|
+
isFirstStep: boolean;
|
|
75
|
+
isLastStep: boolean;
|
|
76
|
+
canGoNext: boolean;
|
|
77
|
+
canGoPrev: boolean;
|
|
78
|
+
goNext: () => void;
|
|
79
|
+
goPrev: () => void;
|
|
80
|
+
goToStep: (index: number) => void;
|
|
81
|
+
finish: () => void;
|
|
82
|
+
cancel: () => void;
|
|
83
|
+
loading: boolean;
|
|
84
|
+
}
|
|
85
|
+
export interface StepIndicatorProps {
|
|
86
|
+
step: StepConfig;
|
|
87
|
+
index: number;
|
|
88
|
+
status: StepStatus;
|
|
89
|
+
size: 'small' | 'medium' | 'large';
|
|
90
|
+
variant: 'circle' | 'dot' | 'number';
|
|
91
|
+
onClick?: () => void;
|
|
92
|
+
isClickable: boolean;
|
|
93
|
+
showConnector: boolean;
|
|
94
|
+
isLast: boolean;
|
|
95
|
+
orientation: 'horizontal' | 'vertical';
|
|
96
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ActionBar, type ActionBarProps, type ActionConfig, type EnableCondition, } from './ActionBar';
|
|
2
|
+
export { DynamicForm, type DynamicFormProps, type FormFieldConfig, type MoleculeType, type SelectOption, } from './DynamicForm';
|
|
3
|
+
export { FormDrawer, type FormDrawerProps, type FormDrawerMode, DEFAULT_TITLES, } from './FormDrawer';
|
|
4
|
+
export { DashboardNavbar, type DashboardNavbarProps, } from './DashboardNavbar';
|
|
5
|
+
export { DashboardSidebar, type DashboardSidebarProps, } from './DashboardSidebar';
|
|
6
|
+
export { DashboardWorkspace, type DashboardWorkspaceProps, } from './DashboardWorkspace';
|
|
7
|
+
export { BaseNavbar, type BaseNavbarProps, } from './BaseNavbar';
|
|
8
|
+
export { BaseWorkspace, type BaseWorkspaceProps, } from './BaseWorkspace';
|
|
9
|
+
export { Calendar, type CalendarProps, type CalendarEvent, type CalendarView, type SlotInfo, type EventColorConfig, } from './Calendar';
|
|
10
|
+
export { Stepper, StepIndicator, type StepperProps, type StepConfig, type StepStatus, type StepperHeaderRenderProps, type StepperFooterRenderProps, } from './Stepper';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { ActionBar, type ActionBarProps, type ActionConfig, type EnableCondition, } from './ActionBar';
|
|
2
|
+
export { DynamicForm, type DynamicFormProps, type FormFieldConfig, type MoleculeType, type SelectOption, } from './DynamicForm';
|
|
3
|
+
export { FormDrawer, type FormDrawerProps, type FormDrawerMode, DEFAULT_TITLES, } from './FormDrawer';
|
|
4
|
+
export { DashboardNavbar, type DashboardNavbarProps, } from './DashboardNavbar';
|
|
5
|
+
export { DashboardSidebar, type DashboardSidebarProps, } from './DashboardSidebar';
|
|
6
|
+
export { DashboardWorkspace, type DashboardWorkspaceProps, } from './DashboardWorkspace';
|
|
7
|
+
export { BaseNavbar, type BaseNavbarProps, } from './BaseNavbar';
|
|
8
|
+
export { BaseWorkspace, type BaseWorkspaceProps, } from './BaseWorkspace';
|
|
9
|
+
export { Calendar, type CalendarProps, type CalendarEvent, type CalendarView, type SlotInfo, type EventColorConfig, } from './Calendar';
|
|
10
|
+
export { Stepper, StepIndicator, type StepperProps, type StepConfig, type StepStatus, type StepperHeaderRenderProps, type StepperFooterRenderProps, } from './Stepper';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ChatWidgetProps } from './types';
|
|
3
|
+
import './ChatWidget.scss';
|
|
4
|
+
/**
|
|
5
|
+
* ChatWidget - Template de Chat tipo Widget Flotante
|
|
6
|
+
*
|
|
7
|
+
* Widget de chat estilo WhatsApp/Intercom con un botón flotante (FAB)
|
|
8
|
+
* que al hacer clic despliega el chat en un contenedor elegante.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ChatWidget: FC<ChatWidgetProps>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useChatWidget } from './useChatWidget';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { ChatConfig } from '../../../../core/chat';
|
|
3
|
+
import type { ChatEventBus } from '../../../../core/eventBus';
|
|
4
|
+
/**
|
|
5
|
+
* Posición del widget en la pantalla
|
|
6
|
+
*/
|
|
7
|
+
export type ChatWidgetPosition = 'bottom-right' | 'bottom-left';
|
|
8
|
+
/**
|
|
9
|
+
* Offset del widget desde los bordes
|
|
10
|
+
*/
|
|
11
|
+
export interface ChatWidgetOffset {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Props del componente ChatWidget
|
|
17
|
+
*/
|
|
18
|
+
export interface ChatWidgetProps {
|
|
19
|
+
/**
|
|
20
|
+
* EventBus para comunicación bidireccional con el Chat
|
|
21
|
+
*/
|
|
22
|
+
eventBus: ChatEventBus;
|
|
23
|
+
/**
|
|
24
|
+
* Configuración estática/visual del chat
|
|
25
|
+
*/
|
|
26
|
+
config?: Partial<ChatConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Estado inicial del widget (abierto/cerrado)
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
defaultOpen?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Estado controlado (abierto/cerrado)
|
|
34
|
+
* Si se proporciona, el componente es controlado
|
|
35
|
+
*/
|
|
36
|
+
isOpen?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Callback cuando cambia el estado abierto/cerrado
|
|
39
|
+
*/
|
|
40
|
+
onOpenChange?: (isOpen: boolean) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Posición del widget en la pantalla
|
|
43
|
+
* @default 'bottom-right'
|
|
44
|
+
*/
|
|
45
|
+
position?: ChatWidgetPosition;
|
|
46
|
+
/**
|
|
47
|
+
* Offset desde los bordes (en píxeles)
|
|
48
|
+
* @default { x: 24, y: 24 }
|
|
49
|
+
*/
|
|
50
|
+
offset?: ChatWidgetOffset;
|
|
51
|
+
/**
|
|
52
|
+
* Icono personalizado para el FAB cuando está cerrado
|
|
53
|
+
*/
|
|
54
|
+
fabIcon?: ReactNode;
|
|
55
|
+
/**
|
|
56
|
+
* Icono cuando está abierto
|
|
57
|
+
*/
|
|
58
|
+
fabCloseIcon?: ReactNode;
|
|
59
|
+
/**
|
|
60
|
+
* Color de fondo del FAB
|
|
61
|
+
* @default 'var(--chat-color-primary)'
|
|
62
|
+
*/
|
|
63
|
+
fabColor?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Ancho del contenedor de chat
|
|
66
|
+
* @default 380
|
|
67
|
+
*/
|
|
68
|
+
width?: number | string;
|
|
69
|
+
/**
|
|
70
|
+
* Alto del contenedor de chat
|
|
71
|
+
* @default 520
|
|
72
|
+
*/
|
|
73
|
+
height?: number | string;
|
|
74
|
+
/**
|
|
75
|
+
* Clases CSS adicionales para el contenedor principal
|
|
76
|
+
*/
|
|
77
|
+
className?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Test ID para testing
|
|
80
|
+
* @default 'chat-widget'
|
|
81
|
+
*/
|
|
82
|
+
'data-testid'?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Estado interno del ChatWidget
|
|
86
|
+
*/
|
|
87
|
+
export interface ChatWidgetState {
|
|
88
|
+
isOpen: boolean;
|
|
89
|
+
isAnimating: boolean;
|
|
90
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook para manejar la altura de la aplicación basada en el viewport
|
|
3
|
+
* Configura la variable CSS --app-height para manejar el viewport en dispositivos móviles
|
|
4
|
+
*
|
|
5
|
+
* Este hook es especialmente importante para:
|
|
6
|
+
* - Dispositivos iOS donde la barra de direcciones afecta el viewport
|
|
7
|
+
* - Teclados virtuales que reducen el espacio disponible
|
|
8
|
+
* - Cambios de orientación
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* function Base() {
|
|
12
|
+
* useAppHeight();
|
|
13
|
+
*
|
|
14
|
+
* return (
|
|
15
|
+
* <div style={{ height: 'var(--app-height)' }}>
|
|
16
|
+
* contenido
|
|
17
|
+
* </div>
|
|
18
|
+
* );
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export declare const useAppHeight: () => void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Props del template Base
|
|
4
|
+
*/
|
|
5
|
+
export interface BaseProps {
|
|
6
|
+
/**
|
|
7
|
+
* Contenido del navbar (primera fila)
|
|
8
|
+
* Puede ser cualquier componente React: logos, menús, breadcrumbs, botones, etc.
|
|
9
|
+
*/
|
|
10
|
+
navbarContent?: ReactNode;
|
|
11
|
+
/**
|
|
12
|
+
* Contenido principal (segunda fila - workspace)
|
|
13
|
+
*/
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Altura del navbar en píxeles
|
|
17
|
+
* @default 64
|
|
18
|
+
*/
|
|
19
|
+
navbarHeight?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Color de fondo del navbar
|
|
22
|
+
* @default '#ffffff'
|
|
23
|
+
*/
|
|
24
|
+
navbarBackgroundColor?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Color de fondo del workspace
|
|
27
|
+
* @default '#fafafa'
|
|
28
|
+
*/
|
|
29
|
+
workspaceBackgroundColor?: string;
|
|
30
|
+
/**
|
|
31
|
+
* Habilitar botón scroll to top en el workspace
|
|
32
|
+
* @default true
|
|
33
|
+
*/
|
|
34
|
+
enableScrollToTop?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Mostrar sombra en el navbar
|
|
37
|
+
* @default true
|
|
38
|
+
*/
|
|
39
|
+
navbarShadow?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Padding del workspace (CSS string)
|
|
42
|
+
* Se ajusta automáticamente en móvil (0px) vs desktop (valor prop)
|
|
43
|
+
* @default '24px'
|
|
44
|
+
*/
|
|
45
|
+
workspacePadding?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Clase CSS adicional para el contenedor principal
|
|
48
|
+
*/
|
|
49
|
+
className?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Test ID para testing
|
|
52
|
+
*/
|
|
53
|
+
'data-testid'?: string;
|
|
54
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CrudProps } from './types';
|
|
2
|
+
import './Crud.scss';
|
|
3
|
+
export declare function Crud<T extends Record<string, unknown>>({ size, showActionBar, actionBarMode, renderByFields, dataSource, filters, total, onCreate, onEdit, onDelete, onView, onPaginationChange, onFilterChange, validationSchema, getRowKey, labels, disabledActions, loading, filterFields, defaultFilters, tableHeight, hidePagination, formDrawerWidth, formColumns, showRowActions, rowActionTypes, rowActions, customActions, customDrawers, onCustomAction, className, 'data-testid': testId, }: CrudProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare namespace Crud {
|
|
5
|
+
var displayName: string;
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CrudProps } from './types';
|
|
2
|
+
import './Crud.scss';
|
|
3
|
+
export declare function Crud<T extends Record<string, unknown>>({ size, showActionBar, actionBarMode, renderByFields, dataSource, filters, total, onCreate, onEdit, onDelete, onView, onPaginationChange, onFilterChange, validationSchema, getRowKey, labels, disabledActions, loading, filterFields, defaultFilters, tableHeight, hidePagination, formDrawerWidth, formColumns, showRowActions, rowActionTypes, rowActions, customActions, customDrawers, onCustomAction, className, 'data-testid': testId, }: CrudProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
export declare namespace Crud {
|
|
5
|
+
var displayName: string;
|
|
6
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RenderFieldConfig } from '../types';
|
|
2
|
+
import type { ColumnUI } from '../../../../molecules/lumi/Table/types';
|
|
3
|
+
import type { FormFieldConfig } from '../../../../organisms/lumi/DynamicForm/types';
|
|
4
|
+
/**
|
|
5
|
+
* Mapea RenderFieldConfig a columnas de tabla
|
|
6
|
+
*/
|
|
7
|
+
export declare function mapFieldsToTableColumns(fields: RenderFieldConfig[]): ColumnUI<Record<string, unknown>>[];
|
|
8
|
+
/**
|
|
9
|
+
* Mapea RenderFieldConfig a campos de formulario
|
|
10
|
+
* @param fields - Configuración de campos
|
|
11
|
+
* @param mode - Modo del formulario ('create' | 'edit' | 'view') para filtrar por showInModes
|
|
12
|
+
*/
|
|
13
|
+
export declare function mapFieldsToFormFields(fields: RenderFieldConfig[], mode?: 'create' | 'edit' | 'view'): FormFieldConfig[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook para manejar las acciones del CRUD
|
|
3
|
+
*/
|
|
4
|
+
export declare function useCrudActions<T extends Record<string, unknown>>(selectedRows: T[], onOpenForm: (mode: 'create' | 'edit' | 'view', data?: Partial<T>) => void, onOpenFilter: () => void, onOpenConfirm: (action: 'create' | 'edit' | 'delete', data?: Partial<T>, rows?: T[]) => void, onClearSelection: () => void, onView?: (rows: T[]) => Promise<void>, formMode?: 'create' | 'edit' | 'view' | null): {
|
|
5
|
+
handleCreate: () => void;
|
|
6
|
+
handleEdit: () => void;
|
|
7
|
+
handleView: () => Promise<void>;
|
|
8
|
+
handleDelete: () => void;
|
|
9
|
+
handleFilter: () => void;
|
|
10
|
+
handleFormSubmit: (data: Record<string, unknown>) => Promise<void>;
|
|
11
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
export declare const actionBarActions: {
|
|
2
|
+
setSelectedCount: (count: number, keys: Array<string | number>) => void;
|
|
3
|
+
setButtonDisabled: (buttonKey: "filter" | "create" | "edit" | "delete" | "view", disabled: boolean) => void;
|
|
4
|
+
setButtonLoading: (buttonKey: "filter" | "create" | "edit" | "delete" | "view", loading: boolean) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const tableActions: {
|
|
7
|
+
setSelection: (selectedKeys: Array<string | number>, selectedRows: unknown[]) => void;
|
|
8
|
+
clearSelection: () => void;
|
|
9
|
+
setLoading: (loading: boolean) => void;
|
|
10
|
+
setDataLoaded: (loaded: boolean) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare const formDrawerActions: {
|
|
13
|
+
open: (mode: "create" | "edit" | "view", data?: Record<string, unknown>) => void;
|
|
14
|
+
close: () => void;
|
|
15
|
+
setDirty: (isDirty: boolean) => void;
|
|
16
|
+
setSubmitting: (isSubmitting: boolean) => void;
|
|
17
|
+
};
|
|
18
|
+
export declare const dynamicFormActions: {
|
|
19
|
+
setSubmitting: (isSubmitting: boolean) => void;
|
|
20
|
+
setValidating: (isValidating: boolean) => void;
|
|
21
|
+
setErrors: (errors: Record<string, string>) => void;
|
|
22
|
+
touchField: (fieldName: string) => void;
|
|
23
|
+
setUnsavedChanges: (hasChanges: boolean) => void;
|
|
24
|
+
reset: () => void;
|
|
25
|
+
};
|
|
26
|
+
export declare const filterDrawerActions: {
|
|
27
|
+
open: () => void;
|
|
28
|
+
close: () => void;
|
|
29
|
+
applyFilters: (filters: unknown[]) => void;
|
|
30
|
+
setTempFilters: (filters: unknown[]) => void;
|
|
31
|
+
clearFilters: () => void;
|
|
32
|
+
};
|
|
33
|
+
export declare const paginationActions: {
|
|
34
|
+
setCurrentPage: (page: number) => void;
|
|
35
|
+
setPageSize: (size: number) => void;
|
|
36
|
+
setTotal: (total: number) => void;
|
|
37
|
+
update: (current: number, pageSize: number, total: number) => void;
|
|
38
|
+
};
|
|
39
|
+
export declare const crudStateActions: {
|
|
40
|
+
setLoading: (loading: boolean) => void;
|
|
41
|
+
setInitialized: (initialized: boolean) => void;
|
|
42
|
+
setLastAction: (action: string | null) => void;
|
|
43
|
+
setError: (error: string | null) => void;
|
|
44
|
+
reset: () => void;
|
|
45
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CrudStoreState } from "./types";
|
|
2
|
+
export declare const crudStore: {
|
|
3
|
+
set: <K extends keyof CrudStoreState>(key: K, value: CrudStoreState[K]) => void;
|
|
4
|
+
get: <K extends keyof CrudStoreState>(key: K) => CrudStoreState[K];
|
|
5
|
+
subscribe: <K extends keyof CrudStoreState>(key: K, listener: (val: CrudStoreState[K]) => void) => () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare const setCrudStore: <K extends keyof CrudStoreState>(key: K, partialValue: CrudStoreState[K] extends object ? Partial<CrudStoreState[K]> : CrudStoreState[K]) => void;
|
|
8
|
+
export declare const subscribeCrudProperty: <K extends keyof CrudStoreState>(key: K, path: string, callback: (value: any) => void) => any;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { crudStore, setCrudStore, subscribeCrudProperty } from './crudStore';
|
|
2
|
+
export { CRUD_STORE_KEYS } from './storeKeys';
|
|
3
|
+
export type { CrudStoreKey } from './storeKeys';
|
|
4
|
+
export type { CrudStoreState } from './types';
|
|
5
|
+
export { actionBarActions, tableActions, formDrawerActions, dynamicFormActions, filterDrawerActions, paginationActions, crudStateActions, } from './actions';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { CRUD_STORE_KEYS } from "./storeKeys";
|
|
2
|
+
/**
|
|
3
|
+
* Estado completo del store del CRUD template
|
|
4
|
+
*/
|
|
5
|
+
export interface CrudStoreState {
|
|
6
|
+
[CRUD_STORE_KEYS.ACTION_BAR]: {
|
|
7
|
+
selectedCount: number;
|
|
8
|
+
selectedKeys: Array<string | number>;
|
|
9
|
+
buttons: {
|
|
10
|
+
filter: {
|
|
11
|
+
disabled: boolean;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
};
|
|
14
|
+
create: {
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
loading: boolean;
|
|
17
|
+
};
|
|
18
|
+
edit: {
|
|
19
|
+
disabled: boolean;
|
|
20
|
+
loading: boolean;
|
|
21
|
+
};
|
|
22
|
+
delete: {
|
|
23
|
+
disabled: boolean;
|
|
24
|
+
loading: boolean;
|
|
25
|
+
};
|
|
26
|
+
view: {
|
|
27
|
+
disabled: boolean;
|
|
28
|
+
loading: boolean;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
[CRUD_STORE_KEYS.TABLE]: {
|
|
33
|
+
selection: {
|
|
34
|
+
selectedRowKeys: Array<string | number>;
|
|
35
|
+
selectedRows: unknown[];
|
|
36
|
+
};
|
|
37
|
+
loading: boolean;
|
|
38
|
+
dataLoaded: boolean;
|
|
39
|
+
};
|
|
40
|
+
[CRUD_STORE_KEYS.FORM_DRAWER]: {
|
|
41
|
+
isOpen: boolean;
|
|
42
|
+
mode: "create" | "edit" | "view";
|
|
43
|
+
data: Record<string, unknown> | null;
|
|
44
|
+
isDirty: boolean;
|
|
45
|
+
isSubmitting: boolean;
|
|
46
|
+
};
|
|
47
|
+
[CRUD_STORE_KEYS.DYNAMIC_FORM]: {
|
|
48
|
+
isSubmitting: boolean;
|
|
49
|
+
isValidating: boolean;
|
|
50
|
+
errors: Record<string, string>;
|
|
51
|
+
touchedFields: string[];
|
|
52
|
+
hasUnsavedChanges: boolean;
|
|
53
|
+
};
|
|
54
|
+
[CRUD_STORE_KEYS.FILTER_DRAWER]: {
|
|
55
|
+
isOpen: boolean;
|
|
56
|
+
appliedFilters: unknown[];
|
|
57
|
+
tempFilters: unknown[];
|
|
58
|
+
};
|
|
59
|
+
[CRUD_STORE_KEYS.PAGINATION]: {
|
|
60
|
+
current: number;
|
|
61
|
+
pageSize: number;
|
|
62
|
+
total: number;
|
|
63
|
+
totalPages: number;
|
|
64
|
+
};
|
|
65
|
+
[CRUD_STORE_KEYS.CRUD_STATE]: {
|
|
66
|
+
loading: boolean;
|
|
67
|
+
initialized: boolean;
|
|
68
|
+
lastAction: string | null;
|
|
69
|
+
error: string | null;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { DashboardProps } from './types';
|
|
3
|
+
import './Dashboard.scss';
|
|
4
|
+
/**
|
|
5
|
+
* Dashboard - Template de Lumi
|
|
6
|
+
*
|
|
7
|
+
* Template completo de Dashboard que integra:
|
|
8
|
+
* - DashboardNavbar: Barra superior con menú y breadcrumb
|
|
9
|
+
* - DashboardSidebar: Menú lateral en drawer
|
|
10
|
+
* - DashboardWorkspace: Área de trabajo con scroll
|
|
11
|
+
* - Sistema de store para gestión de estado
|
|
12
|
+
* - Sincronización automática menú-breadcrumb
|
|
13
|
+
* - Props controlado/no controlado
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* <Dashboard
|
|
18
|
+
* menuItems={menuData}
|
|
19
|
+
* onMenuSelect={(info, breadcrumb) => navigate(info.item.route)}
|
|
20
|
+
* >
|
|
21
|
+
* <YourContent />
|
|
22
|
+
* </Dashboard>
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare const Dashboard: FC<DashboardProps>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks personalizados del Dashboard
|
|
3
|
+
*
|
|
4
|
+
* @module DashboardHooks
|
|
5
|
+
*/
|
|
6
|
+
export { useAppHeight } from './useAppHeight';
|
|
7
|
+
export { useResponsive } from './useResponsive';
|
|
8
|
+
export type { ViewportInfo } from './useResponsive';
|
|
9
|
+
export { useScrollToTop } from './useScrollToTop';
|
|
10
|
+
export type { UseScrollToTopOptions, UseScrollToTopReturn } from './useScrollToTop';
|
|
11
|
+
export { useBreadcrumbSync } from './useBreadcrumbSync';
|
|
12
|
+
export { useDashboardStore } from './useDashboardStore';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hooks personalizados del Dashboard
|
|
3
|
+
*
|
|
4
|
+
* @module DashboardHooks
|
|
5
|
+
*/
|
|
6
|
+
export { useAppHeight } from './useAppHeight';
|
|
7
|
+
export { useResponsive } from './useResponsive';
|
|
8
|
+
export type { ViewportInfo } from './useResponsive';
|
|
9
|
+
export { useScrollToTop } from './useScrollToTop';
|
|
10
|
+
export type { UseScrollToTopOptions, UseScrollToTopReturn } from './useScrollToTop';
|
|
11
|
+
export { useBreadcrumbSync } from './useBreadcrumbSync';
|
|
12
|
+
export { useDashboardStore } from './useDashboardStore';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook para interactuar con el store del dashboard
|
|
3
|
+
*
|
|
4
|
+
* Proporciona acceso reactivo a todas las secciones del store.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* function MyComponent() {
|
|
9
|
+
* const {
|
|
10
|
+
* drawerOpen,
|
|
11
|
+
* selectedKeys,
|
|
12
|
+
* breadcrumbItems,
|
|
13
|
+
* showScrollButton,
|
|
14
|
+
* } = useDashboardStore();
|
|
15
|
+
*
|
|
16
|
+
* return <div>{drawerOpen ? 'Open' : 'Closed'}</div>;
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare const useDashboardStore: () => {
|
|
21
|
+
drawerOpen: boolean;
|
|
22
|
+
drawerAnimating: boolean;
|
|
23
|
+
navbarHeight: number;
|
|
24
|
+
navbarShadow: boolean;
|
|
25
|
+
breadcrumbItems: import("../../../../..").LumiBreadcrumbItemType[];
|
|
26
|
+
breadcrumbScrollable: boolean;
|
|
27
|
+
selectedKeys: string[];
|
|
28
|
+
openKeys: string[];
|
|
29
|
+
scrollTop: number;
|
|
30
|
+
showScrollButton: boolean;
|
|
31
|
+
isMobile: boolean;
|
|
32
|
+
isTablet: boolean;
|
|
33
|
+
isDesktop: boolean;
|
|
34
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Opciones para el hook useScrollToTop
|
|
4
|
+
*/
|
|
5
|
+
export interface UseScrollToTopOptions {
|
|
6
|
+
/** Píxeles de scroll para mostrar el botón (default: 400) */
|
|
7
|
+
threshold?: number;
|
|
8
|
+
/** Duración de la animación en ms (default: 500) */
|
|
9
|
+
duration?: number;
|
|
10
|
+
/** Comportamiento del scroll (default: 'smooth') */
|
|
11
|
+
behavior?: ScrollBehavior;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Valor de retorno del hook
|
|
15
|
+
*/
|
|
16
|
+
export interface UseScrollToTopReturn {
|
|
17
|
+
/** Si el botón debe mostrarse */
|
|
18
|
+
showButton: boolean;
|
|
19
|
+
/** Función para hacer scroll al tope */
|
|
20
|
+
scrollToTop: () => void;
|
|
21
|
+
/** Posición actual de scroll */
|
|
22
|
+
scrollTop: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Hook para manejar el comportamiento del botón "scroll to top"
|
|
26
|
+
*
|
|
27
|
+
* @param workspaceRef - Ref del contenedor con scroll
|
|
28
|
+
* @param options - Opciones de configuración
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* function Workspace() {
|
|
32
|
+
* const workspaceRef = useRef<HTMLDivElement>(null);
|
|
33
|
+
* const { showButton, scrollToTop } = useScrollToTop(workspaceRef);
|
|
34
|
+
*
|
|
35
|
+
* return (
|
|
36
|
+
* <>
|
|
37
|
+
* <div ref={workspaceRef} className="workspace">
|
|
38
|
+
* contenido largo
|
|
39
|
+
* </div>
|
|
40
|
+
* {showButton && (
|
|
41
|
+
* <button onClick={scrollToTop}>arriba</button>
|
|
42
|
+
* )}
|
|
43
|
+
* </>
|
|
44
|
+
* );
|
|
45
|
+
* }
|
|
46
|
+
*/
|
|
47
|
+
export declare const useScrollToTop: (workspaceRef: RefObject<HTMLElement>, options?: UseScrollToTopOptions) => UseScrollToTopReturn;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard - Template principal de navegación y layout
|
|
3
|
+
*
|
|
4
|
+
* @module Dashboard
|
|
5
|
+
*/
|
|
6
|
+
export { Dashboard } from './Dashboard';
|
|
7
|
+
export type { DashboardProps } from './types';
|
|
8
|
+
export { useAppHeight, useResponsive, useScrollToTop, useBreadcrumbSync, useDashboardStore, } from './hooks';
|
|
9
|
+
export { dashboardStore, setDashboardStore, subscribeDashboardProperty, DASHBOARD_STORE_KEYS, drawerActions, navbarActions, breadcrumbActions, menuActions, workspaceActions, viewportActions, } from './store';
|
|
10
|
+
export type { DashboardStoreState } from './store';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constantes para las keys del store del Dashboard
|
|
3
|
+
* Mantiene consistencia y evita errores de typo
|
|
4
|
+
*/
|
|
5
|
+
export declare const DASHBOARD_STORE_KEYS: {
|
|
6
|
+
readonly DRAWER: "drawer";
|
|
7
|
+
readonly NAVBAR: "navbar";
|
|
8
|
+
readonly BREADCRUMB: "breadcrumb";
|
|
9
|
+
readonly MENU: "menu";
|
|
10
|
+
readonly WORKSPACE: "workspace";
|
|
11
|
+
readonly VIEWPORT: "viewport";
|
|
12
|
+
};
|
|
13
|
+
export type DashboardStoreKey = typeof DASHBOARD_STORE_KEYS[keyof typeof DASHBOARD_STORE_KEYS];
|