flysoft-react-ui 0.5.0 → 0.5.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.
Files changed (206) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/App.js +19 -7
  3. package/dist/components/form-controls/AutocompleteInput.d.ts +11 -3
  4. package/dist/components/form-controls/AutocompleteInput.d.ts.map +1 -1
  5. package/dist/components/form-controls/AutocompleteInput.js +411 -31
  6. package/dist/components/form-controls/Button.d.ts +3 -0
  7. package/dist/components/form-controls/Button.d.ts.map +1 -1
  8. package/dist/components/form-controls/Button.js +160 -19
  9. package/dist/components/form-controls/Checkbox.d.ts +14 -0
  10. package/dist/components/form-controls/Checkbox.d.ts.map +1 -0
  11. package/dist/components/form-controls/Checkbox.js +79 -0
  12. package/dist/components/form-controls/DateInput.d.ts +24 -4
  13. package/dist/components/form-controls/DateInput.d.ts.map +1 -1
  14. package/dist/components/form-controls/DateInput.js +492 -70
  15. package/dist/components/form-controls/DatePicker.d.ts +4 -3
  16. package/dist/components/form-controls/DatePicker.d.ts.map +1 -1
  17. package/dist/components/form-controls/DatePicker.js +26 -30
  18. package/dist/components/form-controls/Input.d.ts +10 -1
  19. package/dist/components/form-controls/Input.d.ts.map +1 -1
  20. package/dist/components/form-controls/Input.js +17 -10
  21. package/dist/components/form-controls/LinkButton.d.ts +15 -0
  22. package/dist/components/form-controls/LinkButton.d.ts.map +1 -0
  23. package/dist/components/form-controls/LinkButton.js +248 -0
  24. package/dist/components/form-controls/Pagination.d.ts +1 -0
  25. package/dist/components/form-controls/Pagination.d.ts.map +1 -1
  26. package/dist/components/form-controls/Pagination.js +3 -40
  27. package/dist/components/form-controls/RadioButtonGroup.d.ts +62 -0
  28. package/dist/components/form-controls/RadioButtonGroup.d.ts.map +1 -0
  29. package/dist/components/form-controls/RadioButtonGroup.js +220 -0
  30. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts +68 -0
  31. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts.map +1 -0
  32. package/dist/components/form-controls/SearchSelectInput-OLD.js +963 -0
  33. package/dist/components/form-controls/SearchSelectInput.d.ts +70 -0
  34. package/dist/components/form-controls/SearchSelectInput.d.ts.map +1 -0
  35. package/dist/components/form-controls/SearchSelectInput.js +336 -0
  36. package/dist/components/form-controls/index.d.ts +9 -1
  37. package/dist/components/form-controls/index.d.ts.map +1 -1
  38. package/dist/components/form-controls/index.js +4 -0
  39. package/dist/components/layout/Accordion.d.ts +13 -0
  40. package/dist/components/layout/Accordion.d.ts.map +1 -0
  41. package/dist/components/layout/Accordion.js +67 -0
  42. package/dist/components/layout/AppLayout.d.ts +3 -2
  43. package/dist/components/layout/AppLayout.d.ts.map +1 -1
  44. package/dist/components/layout/AppLayout.js +104 -31
  45. package/dist/components/layout/Card.d.ts +8 -3
  46. package/dist/components/layout/Card.d.ts.map +1 -1
  47. package/dist/components/layout/Card.js +18 -19
  48. package/dist/components/layout/Collection.js +1 -1
  49. package/dist/components/layout/DataTable.d.ts +3 -1
  50. package/dist/components/layout/DataTable.d.ts.map +1 -1
  51. package/dist/components/layout/DataTable.js +34 -29
  52. package/dist/components/layout/index.d.ts +2 -0
  53. package/dist/components/layout/index.d.ts.map +1 -1
  54. package/dist/components/layout/index.js +1 -0
  55. package/dist/components/utils/Avatar.d.ts +49 -0
  56. package/dist/components/utils/Avatar.d.ts.map +1 -0
  57. package/dist/components/utils/Avatar.js +93 -0
  58. package/dist/components/utils/Badge.d.ts +3 -0
  59. package/dist/components/utils/Badge.d.ts.map +1 -1
  60. package/dist/components/utils/Badge.js +131 -26
  61. package/dist/components/utils/Dialog.d.ts.map +1 -1
  62. package/dist/components/utils/Dialog.js +6 -1
  63. package/dist/components/utils/Filter.d.ts +57 -0
  64. package/dist/components/utils/Filter.d.ts.map +1 -0
  65. package/dist/components/utils/Filter.js +581 -0
  66. package/dist/components/utils/FiltersDialog.d.ts +21 -0
  67. package/dist/components/utils/FiltersDialog.d.ts.map +1 -0
  68. package/dist/components/utils/FiltersDialog.js +104 -0
  69. package/dist/components/utils/Loader.js +2 -2
  70. package/dist/components/utils/RoadMap.d.ts +59 -0
  71. package/dist/components/utils/RoadMap.d.ts.map +1 -0
  72. package/dist/components/utils/RoadMap.js +139 -0
  73. package/dist/components/utils/Snackbar.d.ts +13 -0
  74. package/dist/components/utils/Snackbar.d.ts.map +1 -0
  75. package/dist/components/utils/Snackbar.js +122 -0
  76. package/dist/components/utils/SnackbarContainer.d.ts +7 -0
  77. package/dist/components/utils/SnackbarContainer.d.ts.map +1 -0
  78. package/dist/components/utils/SnackbarContainer.js +25 -0
  79. package/dist/components/utils/iconUtils.d.ts +16 -0
  80. package/dist/components/utils/iconUtils.d.ts.map +1 -0
  81. package/dist/components/utils/iconUtils.js +40 -0
  82. package/dist/components/utils/index.d.ts +12 -0
  83. package/dist/components/utils/index.d.ts.map +1 -1
  84. package/dist/components/utils/index.js +6 -0
  85. package/dist/contexts/AppLayoutContext.d.ts +40 -0
  86. package/dist/contexts/AppLayoutContext.d.ts.map +1 -0
  87. package/dist/contexts/AppLayoutContext.js +98 -0
  88. package/dist/contexts/ListCrudContext.d.ts +50 -0
  89. package/dist/contexts/ListCrudContext.d.ts.map +1 -0
  90. package/dist/contexts/ListCrudContext.js +253 -0
  91. package/dist/contexts/SnackbarContext.d.ts +26 -0
  92. package/dist/contexts/SnackbarContext.d.ts.map +1 -0
  93. package/dist/contexts/SnackbarContext.js +34 -0
  94. package/dist/contexts/index.d.ts +6 -0
  95. package/dist/contexts/index.d.ts.map +1 -1
  96. package/dist/contexts/index.js +6 -0
  97. package/dist/contexts/presets.js +6 -6
  98. package/dist/docs/AccordionDocs.d.ts +4 -0
  99. package/dist/docs/AccordionDocs.d.ts.map +1 -0
  100. package/dist/docs/AccordionDocs.js +21 -0
  101. package/dist/docs/AuthDocs.tsx/AuthDocsContent.js +3 -5
  102. package/dist/docs/AutocompleteInputDocs.js +1 -1
  103. package/dist/docs/AvatarDocs.d.ts +4 -0
  104. package/dist/docs/AvatarDocs.d.ts.map +1 -0
  105. package/dist/docs/AvatarDocs.js +7 -0
  106. package/dist/docs/BadgeDocs.d.ts.map +1 -1
  107. package/dist/docs/BadgeDocs.js +4 -2
  108. package/dist/docs/ButtonDocs.d.ts.map +1 -1
  109. package/dist/docs/ButtonDocs.js +1 -1
  110. package/dist/docs/CardDocs.d.ts.map +1 -1
  111. package/dist/docs/CardDocs.js +17 -8
  112. package/dist/docs/CheckboxDocs.d.ts +4 -0
  113. package/dist/docs/CheckboxDocs.d.ts.map +1 -0
  114. package/dist/docs/CheckboxDocs.js +7 -0
  115. package/dist/docs/DataTableDocs.d.ts.map +1 -1
  116. package/dist/docs/DataTableDocs.js +9 -5
  117. package/dist/docs/DateInputDocs.d.ts +1 -0
  118. package/dist/docs/DateInputDocs.d.ts.map +1 -1
  119. package/dist/docs/DateInputDocs.js +7 -9
  120. package/dist/docs/DatePickerDocs.d.ts +1 -0
  121. package/dist/docs/DatePickerDocs.d.ts.map +1 -1
  122. package/dist/docs/DatePickerDocs.js +6 -8
  123. package/dist/docs/DialogDocs.js +1 -1
  124. package/dist/docs/DocAdmin.d.ts +4 -0
  125. package/dist/docs/DocAdmin.d.ts.map +1 -0
  126. package/dist/docs/DocAdmin.js +68 -0
  127. package/dist/docs/DocsMenu.d.ts.map +1 -1
  128. package/dist/docs/DocsMenu.js +3 -3
  129. package/dist/docs/DocsRouter.d.ts.map +1 -1
  130. package/dist/docs/DocsRouter.js +13 -1
  131. package/dist/docs/DropdownMenuDocs.js +1 -1
  132. package/dist/docs/ExampleFormDocs.d.ts +4 -0
  133. package/dist/docs/ExampleFormDocs.d.ts.map +1 -0
  134. package/dist/docs/ExampleFormDocs.js +148 -0
  135. package/dist/docs/FilterDocs.d.ts +4 -0
  136. package/dist/docs/FilterDocs.d.ts.map +1 -0
  137. package/dist/docs/FilterDocs.js +112 -0
  138. package/dist/docs/InputDocs.d.ts.map +1 -1
  139. package/dist/docs/InputDocs.js +11 -1
  140. package/dist/docs/LinkButtonDocs.d.ts +4 -0
  141. package/dist/docs/LinkButtonDocs.d.ts.map +1 -0
  142. package/dist/docs/LinkButtonDocs.js +7 -0
  143. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts +2 -0
  144. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts.map +1 -0
  145. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.js +29 -0
  146. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.d.ts +2 -0
  147. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.d.ts.map +1 -0
  148. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentEmpresas.js +7 -0
  149. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts +2 -0
  150. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts.map +1 -0
  151. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.js +57 -0
  152. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.d.ts +9 -0
  153. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.d.ts.map +1 -0
  154. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsEditDialog.js +30 -0
  155. package/dist/docs/PaginationDocs.js +6 -6
  156. package/dist/docs/RadioButtonGroupDocs.d.ts +4 -0
  157. package/dist/docs/RadioButtonGroupDocs.d.ts.map +1 -0
  158. package/dist/docs/RadioButtonGroupDocs.js +46 -0
  159. package/dist/docs/RoadMapDocs.d.ts +4 -0
  160. package/dist/docs/RoadMapDocs.d.ts.map +1 -0
  161. package/dist/docs/RoadMapDocs.js +171 -0
  162. package/dist/docs/SearchSelectInputDocs.d.ts +4 -0
  163. package/dist/docs/SearchSelectInputDocs.d.ts.map +1 -0
  164. package/dist/docs/SearchSelectInputDocs.js +168 -0
  165. package/dist/docs/SnackbarDocs.d.ts +4 -0
  166. package/dist/docs/SnackbarDocs.d.ts.map +1 -0
  167. package/dist/docs/SnackbarDocs.js +50 -0
  168. package/dist/docs/TabsGroupDocs.d.ts.map +1 -1
  169. package/dist/docs/TabsGroupDocs.js +12 -1
  170. package/dist/docs/docMockServices/empresaService.d.ts +38 -0
  171. package/dist/docs/docMockServices/empresaService.d.ts.map +1 -0
  172. package/dist/docs/docMockServices/empresaService.js +117 -0
  173. package/dist/docs/docMockServices/index.d.ts +9 -0
  174. package/dist/docs/docMockServices/index.d.ts.map +1 -0
  175. package/dist/docs/docMockServices/index.js +8 -0
  176. package/dist/docs/docMockServices/initialData.d.ts +6 -0
  177. package/dist/docs/docMockServices/initialData.d.ts.map +1 -0
  178. package/dist/docs/docMockServices/initialData.js +132 -0
  179. package/dist/docs/docMockServices/interfaces.d.ts +26 -0
  180. package/dist/docs/docMockServices/interfaces.d.ts.map +1 -0
  181. package/dist/docs/docMockServices/interfaces.js +1 -0
  182. package/dist/docs/docMockServices/personaEmpresaService.d.ts +43 -0
  183. package/dist/docs/docMockServices/personaEmpresaService.d.ts.map +1 -0
  184. package/dist/docs/docMockServices/personaEmpresaService.js +113 -0
  185. package/dist/docs/docMockServices/personaService.d.ts +39 -0
  186. package/dist/docs/docMockServices/personaService.d.ts.map +1 -0
  187. package/dist/docs/docMockServices/personaService.js +181 -0
  188. package/dist/hooks/index.d.ts +2 -0
  189. package/dist/hooks/index.d.ts.map +1 -1
  190. package/dist/hooks/index.js +1 -0
  191. package/dist/hooks/useAsyncRequest.d.ts +17 -0
  192. package/dist/hooks/useAsyncRequest.d.ts.map +1 -0
  193. package/dist/hooks/useAsyncRequest.js +70 -0
  194. package/dist/index.css +1 -1
  195. package/dist/index.d.ts +23 -1
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +11 -0
  198. package/dist/index.js.map +1 -1
  199. package/dist/templates/forms/ContactForm.js +2 -2
  200. package/dist/templates/forms/LoginForm.js +1 -1
  201. package/dist/templates/forms/RegistrationForm.js +1 -1
  202. package/dist/templates/layouts/SidebarLayout.d.ts.map +1 -1
  203. package/dist/templates/layouts/SidebarLayout.js +3 -2
  204. package/dist/templates/patterns/FormPattern.d.ts.map +1 -1
  205. package/dist/templates/patterns/FormPattern.js +4 -3
  206. package/package.json +5 -2
@@ -0,0 +1,104 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useState, useEffect } from "react";
3
+ import { useSearchParams } from "react-router-dom";
4
+ import { Button } from "../form-controls/Button";
5
+ import { Dialog } from "./Dialog";
6
+ import { Filter } from "./Filter";
7
+ import { Collection } from "../layout/Collection";
8
+ export const FiltersDialog = ({ filters }) => {
9
+ const [searchParams, setSearchParams] = useSearchParams();
10
+ const [isOpen, setIsOpen] = useState(false);
11
+ const [filterValues, setFilterValues] = useState({});
12
+ // Inicializar filterValues con los valores actuales de la URL
13
+ useEffect(() => {
14
+ const initialValues = {};
15
+ filters.forEach((filter) => {
16
+ const urlValue = searchParams.get(filter.paramName);
17
+ initialValues[filter.paramName] = urlValue || undefined;
18
+ });
19
+ setFilterValues(initialValues);
20
+ }, []); // Solo al montar el componente
21
+ // Sincronizar filterValues cuando se abre el dialog con los valores actuales de la URL
22
+ useEffect(() => {
23
+ if (isOpen) {
24
+ const currentValues = {};
25
+ filters.forEach((filter) => {
26
+ const urlValue = searchParams.get(filter.paramName);
27
+ currentValues[filter.paramName] = urlValue || undefined;
28
+ });
29
+ setFilterValues(currentValues);
30
+ }
31
+ }, [isOpen, filters, searchParams]);
32
+ const handleFilterChange = (paramName, value) => {
33
+ setFilterValues((prev) => ({
34
+ ...prev,
35
+ [paramName]: value,
36
+ }));
37
+ };
38
+ const handleApplyFilters = () => {
39
+ const newSearchParams = new URLSearchParams(searchParams);
40
+ // Aplicar todos los filtros a la URL
41
+ filters.forEach((filter) => {
42
+ const value = filterValues[filter.paramName];
43
+ if (value) {
44
+ newSearchParams.set(filter.paramName, value);
45
+ }
46
+ else {
47
+ newSearchParams.delete(filter.paramName);
48
+ }
49
+ });
50
+ setSearchParams(newSearchParams, { replace: true });
51
+ setIsOpen(false);
52
+ };
53
+ const handleClose = () => {
54
+ setIsOpen(false);
55
+ };
56
+ const handleOpen = () => {
57
+ setIsOpen(true);
58
+ };
59
+ // Construir las props de Filter para cada filtro
60
+ const getFilterProps = (filterConfig) => {
61
+ const baseProps = {
62
+ label: filterConfig.label,
63
+ staticOptions: filterConfig.staticOptions,
64
+ inputWidth: filterConfig.inputWidth,
65
+ value: filterValues[filterConfig.paramName],
66
+ onChange: (value) => handleFilterChange(filterConfig.paramName, value),
67
+ };
68
+ switch (filterConfig.filterType) {
69
+ case "text":
70
+ return {
71
+ ...baseProps,
72
+ filterType: "text",
73
+ };
74
+ case "number":
75
+ return {
76
+ ...baseProps,
77
+ filterType: "number",
78
+ min: filterConfig.min,
79
+ max: filterConfig.max,
80
+ };
81
+ case "date":
82
+ return {
83
+ ...baseProps,
84
+ filterType: "date",
85
+ };
86
+ case "autocomplete":
87
+ return {
88
+ ...baseProps,
89
+ filterType: "autocomplete",
90
+ options: filterConfig.options || [],
91
+ getOptionLabel: filterConfig.getOptionLabel,
92
+ getOptionValue: filterConfig.getOptionValue,
93
+ renderOption: filterConfig.renderOption,
94
+ noResultsText: filterConfig.noResultsText,
95
+ };
96
+ default:
97
+ return {
98
+ ...baseProps,
99
+ filterType: "text",
100
+ };
101
+ }
102
+ };
103
+ return (_jsxs(_Fragment, { children: [_jsx(Button, { icon: "fa-filter", variant: "outline", size: "sm", onClick: handleOpen, "aria-label": "Abrir filtros", children: "Filtrar" }), _jsx(Dialog, { isOpen: isOpen, title: "Filtros", dialogBody: _jsx("div", { className: "space-y-4", children: _jsx(Collection, { direction: "column", gap: "1rem", children: filters.map((filter) => (_jsx(Filter, { ...getFilterProps(filter) }, filter.paramName))) }) }), dialogActions: _jsxs(_Fragment, { children: [_jsx(Button, { variant: "outline", onClick: handleClose, children: "Cerrar" }), _jsx(Button, { variant: "primary", onClick: handleApplyFilters, children: "Aplicar filtros" })] }), onClose: handleClose, closeOnOverlayClick: false })] }));
104
+ };
@@ -3,7 +3,7 @@ import React from "react";
3
3
  import { useTheme } from "../../contexts/ThemeContext";
4
4
  export const Loader = ({ isLoading = false, text, children, keepContentWhileLoading, contentLoadingNode, overlayClassName, }) => {
5
5
  const { theme } = useTheme();
6
- const displayText = text || "Cargando...";
6
+ const displayText = text;
7
7
  // Clases por defecto del overlay (negro semitransparente con blur)
8
8
  const defaultOverlayClasses = "bg-black/50 backdrop-blur-sm";
9
9
  // Combinar clases por defecto con las personalizadas
@@ -34,7 +34,7 @@ export const Loader = ({ isLoading = false, text, children, keepContentWhileLoad
34
34
  if (children) {
35
35
  // Si keepContentWhileLoading es true, mostrar children con overlay
36
36
  if (keepContentWhileLoading) {
37
- return (_jsxs("div", { className: "relative", children: [_jsx("div", { className: "pointer-events-none select-none", children: children }), _jsx("div", { className: `absolute inset-0 flex items-center justify-center z-10 pointer-events-auto px-4 ${overlayClasses}`, children: _jsx("div", { className: "bg-[var(--color-bg-default)] rounded-lg p-6 shadow-lg border border-[var(--color-border-default)] w-full", children: _jsx(ProgressBar, {}) }) })] }));
37
+ return (_jsxs("div", { className: "relative", children: [_jsx("div", { className: "pointer-events-none select-none", children: children }), _jsx("div", { className: `absolute inset-0 flex items-center justify-center z-10 pointer-events-auto px-4 ${overlayClasses}`, children: _jsx("div", { className: "bg-[var(--color-bg-default)] rounded-lg p-6 shadow-lg border border-[var(--color-border-default)] w-full max-w-2xl", children: _jsx(ProgressBar, {}) }) })] }));
38
38
  }
39
39
  // Si no tiene keepContentWhileLoading, ocultar children y mostrar solo loader básico
40
40
  return (_jsx("div", { className: "flex items-center justify-center p-6 w-full", children: _jsx("div", { className: "w-full max-w-2xl", children: _jsx(ProgressBar, {}) }) }));
@@ -0,0 +1,59 @@
1
+ import React from "react";
2
+ export interface RoadMapStage {
3
+ /**
4
+ * Name of the stage
5
+ */
6
+ name: string;
7
+ /**
8
+ * Optional description shown below the name
9
+ */
10
+ description?: string;
11
+ /**
12
+ * Optional FontAwesome 5 icon class (e.g., "fa-check", "fa-user")
13
+ */
14
+ icon?: string;
15
+ /**
16
+ * Whether the stage is disabled (shown with 0.5 opacity)
17
+ */
18
+ disabled?: boolean;
19
+ /**
20
+ * Color variant for the stage circle
21
+ */
22
+ variant?: "primary" | "secondary" | "success" | "warning" | "danger" | "info";
23
+ /**
24
+ * Custom background color (hexadecimal, rgb, or color name)
25
+ * Takes precedence over variant if provided
26
+ */
27
+ bg?: string;
28
+ }
29
+ export interface RoadMapProps {
30
+ /**
31
+ * Array of stages to display
32
+ */
33
+ stages: RoadMapStage[];
34
+ /**
35
+ * Optional additional CSS classes
36
+ */
37
+ className?: string;
38
+ }
39
+ /**
40
+ * RoadMap component displays a series of stages like metro stations
41
+ *
42
+ * @example
43
+ * // Basic usage
44
+ * <RoadMap stages={[
45
+ * { name: "Start", variant: "primary" },
46
+ * { name: "Middle", variant: "success" },
47
+ * { name: "End", variant: "info" }
48
+ * ]} />
49
+ *
50
+ * @example
51
+ * // With icons and descriptions
52
+ * <RoadMap stages={[
53
+ * { name: "Planning", description: "Define requirements", icon: "fa-clipboard", variant: "primary" },
54
+ * { name: "Development", description: "Build the feature", icon: "fa-code", variant: "success" },
55
+ * { name: "Testing", description: "Test thoroughly", icon: "fa-check-circle", variant: "warning" }
56
+ * ]} />
57
+ */
58
+ export declare const RoadMap: React.FC<RoadMapProps>;
59
+ //# sourceMappingURL=RoadMap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoadMap.d.ts","sourceRoot":"","sources":["../../../src/components/utils/RoadMap.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AA6E1B,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9E;;;OAGG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAgH1C,CAAC"}
@@ -0,0 +1,139 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { normalizeIconClass } from "./iconUtils";
4
+ /**
5
+ * Helper function to convert color names to CSS values
6
+ */
7
+ const getColorValue = (color) => {
8
+ if (!color)
9
+ return undefined;
10
+ // If already a valid CSS value (hex, rgb, rgba, hsl, etc.), return it
11
+ if (color.startsWith("#") ||
12
+ color.startsWith("rgb") ||
13
+ color.startsWith("hsl")) {
14
+ return color;
15
+ }
16
+ // Map common color names
17
+ const colorMap = {
18
+ white: "#ffffff",
19
+ black: "#000000",
20
+ "gray-800": "#1f2937",
21
+ "gray-700": "#374151",
22
+ "gray-600": "#4b5563",
23
+ "gray-500": "#6b7280",
24
+ "gray-400": "#9ca3af",
25
+ "gray-300": "#d1d5db",
26
+ "gray-200": "#e5e7eb",
27
+ "gray-100": "#f3f4f6",
28
+ "gray-50": "#f9fafb",
29
+ };
30
+ return colorMap[color.toLowerCase()] || color;
31
+ };
32
+ /**
33
+ * Get the CSS variable name for a variant color
34
+ */
35
+ const getVariantColorVar = (variant) => {
36
+ if (!variant)
37
+ return "var(--color-primary)";
38
+ const variantMap = {
39
+ primary: "var(--color-primary)",
40
+ secondary: "var(--color-secondary)",
41
+ success: "var(--color-success)",
42
+ warning: "var(--color-warning)",
43
+ danger: "var(--color-danger)",
44
+ info: "var(--color-info)",
45
+ };
46
+ return variantMap[variant];
47
+ };
48
+ /**
49
+ * Get the actual color value for a variant (for gradients)
50
+ * This reads the CSS variable value from the computed styles
51
+ */
52
+ const getVariantColorValue = (variant) => {
53
+ if (!variant)
54
+ return "#007aff"; // default primary color
55
+ const variantColorMap = {
56
+ primary: "#007aff",
57
+ secondary: "#6b7280",
58
+ success: "#10b981",
59
+ warning: "#f59e0b",
60
+ danger: "#ef4444",
61
+ info: "#06b6d4",
62
+ };
63
+ return variantColorMap[variant];
64
+ };
65
+ /**
66
+ * RoadMap component displays a series of stages like metro stations
67
+ *
68
+ * @example
69
+ * // Basic usage
70
+ * <RoadMap stages={[
71
+ * { name: "Start", variant: "primary" },
72
+ * { name: "Middle", variant: "success" },
73
+ * { name: "End", variant: "info" }
74
+ * ]} />
75
+ *
76
+ * @example
77
+ * // With icons and descriptions
78
+ * <RoadMap stages={[
79
+ * { name: "Planning", description: "Define requirements", icon: "fa-clipboard", variant: "primary" },
80
+ * { name: "Development", description: "Build the feature", icon: "fa-code", variant: "success" },
81
+ * { name: "Testing", description: "Test thoroughly", icon: "fa-check-circle", variant: "warning" }
82
+ * ]} />
83
+ */
84
+ export const RoadMap = ({ stages, className = "", }) => {
85
+ if (!stages || stages.length === 0) {
86
+ return null;
87
+ }
88
+ /**
89
+ * Get the background color for a stage
90
+ */
91
+ const getStageBgColor = (stage) => {
92
+ if (stage.bg) {
93
+ return getColorValue(stage.bg) || stage.bg;
94
+ }
95
+ return getVariantColorVar(stage.variant || "primary");
96
+ };
97
+ /**
98
+ * Get the color value for gradient calculations
99
+ */
100
+ const getStageColorValue = (stage) => {
101
+ if (stage.bg) {
102
+ return getColorValue(stage.bg) || stage.bg;
103
+ }
104
+ return getVariantColorValue(stage.variant || "primary");
105
+ };
106
+ /**
107
+ * Create a gradient string for the connector line
108
+ * The line transitions smoothly from the source color to the destination color
109
+ */
110
+ const getConnectorGradient = (fromStage, toStage) => {
111
+ const fromColor = getStageColorValue(fromStage);
112
+ const toColor = getStageColorValue(toStage);
113
+ // Create a smooth gradient that transitions from source to destination
114
+ return `linear-gradient(to bottom, ${fromColor}, ${toColor})`;
115
+ };
116
+ return (_jsx("div", { className: `roadmap-container ${className}`, children: stages.map((stage, index) => {
117
+ const isLast = index === stages.length - 1;
118
+ const isDisabled = stage.disabled;
119
+ const bgColor = getStageBgColor(stage);
120
+ const connectorGradient = !isLast
121
+ ? getConnectorGradient(stage, stages[index + 1])
122
+ : null;
123
+ return (_jsxs("div", { className: "relative flex items-start gap-3", children: [_jsxs("div", { className: "flex flex-col items-center", children: [_jsx("div", { className: `
124
+ w-6 h-6 rounded-full
125
+ flex items-center justify-center
126
+ flex-shrink-0
127
+ ${isDisabled ? "opacity-50" : ""}
128
+ `, style: {
129
+ backgroundColor: bgColor,
130
+ color: "#ffffff",
131
+ }, children: stage.icon ? (_jsx("i", { className: `${normalizeIconClass(stage.icon)} text-xs` })) : null }), !isLast && (_jsx("div", { className: "w-0.5 h-4 flex-shrink-0", style: {
132
+ background: connectorGradient || undefined,
133
+ } }))] }), _jsxs("div", { className: `
134
+ flex-1
135
+ ${isDisabled ? "opacity-50" : ""}
136
+ `, children: [_jsx("h3", { className: "text-sm font-semibold font-[var(--font-default)] mb-0.5", style: { color: "var(--color-text-primary)" }, children: stage.name }), stage.description && (_jsx("p", { className: "text-xs font-[var(--font-default)]", style: { color: "var(--color-text-secondary)" }, children: stage.description }))] })] }, index));
137
+ }) }));
138
+ };
139
+ RoadMap.displayName = "RoadMap";
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ import type { SnackbarVariant } from "../../contexts/SnackbarContext";
3
+ export interface SnackbarProps {
4
+ id: string;
5
+ message: string;
6
+ variant: SnackbarVariant;
7
+ duration?: number;
8
+ icon?: string;
9
+ iconLabel?: string;
10
+ onClose: (id: string) => void;
11
+ }
12
+ export declare const Snackbar: React.FC<SnackbarProps>;
13
+ //# sourceMappingURL=Snackbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snackbar.d.ts","sourceRoot":"","sources":["../../../src/components/utils/Snackbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAGtE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAqM5C,CAAC"}
@@ -0,0 +1,122 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useEffect, useState, useRef, useCallback } from "react";
3
+ import { normalizeIconClass } from "./iconUtils";
4
+ export const Snackbar = ({ id, message, variant, duration = 3000, icon, iconLabel, onClose, }) => {
5
+ const [progress, setProgress] = useState(100);
6
+ const [isClosing, setIsClosing] = useState(false);
7
+ const intervalRef = useRef(null);
8
+ const startTimeRef = useRef(Date.now());
9
+ const remainingTimeRef = useRef(duration);
10
+ // Mapeo de variantes a colores y clases
11
+ const variantConfig = {
12
+ primary: {
13
+ bg: "bg-[var(--color-primary-light)]",
14
+ border: "border-[var(--color-primary)]",
15
+ text: "text-gray-800",
16
+ progressColor: "var(--color-primary)",
17
+ },
18
+ secondary: {
19
+ bg: "bg-[var(--color-secondary-light)]",
20
+ border: "border-[var(--color-secondary)]",
21
+ text: "text-gray-800",
22
+ progressColor: "var(--color-secondary)",
23
+ },
24
+ success: {
25
+ bg: "bg-[var(--color-success-light)]",
26
+ border: "border-[var(--color-success)]",
27
+ text: "text-gray-800",
28
+ progressColor: "var(--color-success)",
29
+ },
30
+ warning: {
31
+ bg: "bg-[var(--color-warning-light)]",
32
+ border: "border-[var(--color-warning)]",
33
+ text: "text-gray-800",
34
+ progressColor: "var(--color-warning)",
35
+ },
36
+ danger: {
37
+ bg: "bg-[var(--color-danger-light)]",
38
+ border: "border-[var(--color-danger)]",
39
+ text: "text-gray-800",
40
+ progressColor: "var(--color-danger)",
41
+ },
42
+ info: {
43
+ bg: "bg-[var(--color-info-light)]",
44
+ border: "border-[var(--color-info)]",
45
+ text: "text-gray-800",
46
+ progressColor: "var(--color-info)",
47
+ },
48
+ };
49
+ const config = variantConfig[variant];
50
+ // Función para cerrar el snackbar
51
+ const handleClose = useCallback(() => {
52
+ setIsClosing(true);
53
+ // Esperar a que termine la animación antes de remover
54
+ setTimeout(() => {
55
+ onClose(id);
56
+ }, 300); // Duración de la animación de salida
57
+ }, [id, onClose]);
58
+ // Efecto para la barra de progreso
59
+ useEffect(() => {
60
+ if (duration <= 0) {
61
+ // Si duration es 0 o negativo, no se cierra automáticamente
62
+ return;
63
+ }
64
+ const updateProgress = () => {
65
+ const elapsed = Date.now() - startTimeRef.current;
66
+ const newProgress = Math.max(0, 100 - (elapsed / duration) * 100);
67
+ setProgress(newProgress);
68
+ if (newProgress <= 0) {
69
+ handleClose();
70
+ }
71
+ };
72
+ // Actualizar cada 50ms para una animación suave
73
+ intervalRef.current = setInterval(updateProgress, 50);
74
+ return () => {
75
+ if (intervalRef.current) {
76
+ clearInterval(intervalRef.current);
77
+ }
78
+ };
79
+ }, [duration, handleClose]);
80
+ // Pausar el progreso cuando el mouse está sobre el snackbar
81
+ const handleMouseEnter = () => {
82
+ if (intervalRef.current) {
83
+ clearInterval(intervalRef.current);
84
+ intervalRef.current = null;
85
+ }
86
+ const elapsed = Date.now() - startTimeRef.current;
87
+ remainingTimeRef.current = duration - elapsed;
88
+ };
89
+ // Reanudar el progreso cuando el mouse sale del snackbar
90
+ const handleMouseLeave = () => {
91
+ if (remainingTimeRef.current > 0) {
92
+ startTimeRef.current = Date.now();
93
+ const updateProgress = () => {
94
+ const elapsed = Date.now() - startTimeRef.current;
95
+ const newProgress = Math.max(0, ((remainingTimeRef.current - elapsed) / duration) * 100);
96
+ setProgress(newProgress);
97
+ if (newProgress <= 0) {
98
+ handleClose();
99
+ }
100
+ };
101
+ intervalRef.current = setInterval(updateProgress, 50);
102
+ }
103
+ };
104
+ // Íconos por defecto según la variante
105
+ const defaultIcons = {
106
+ primary: "fa-info-circle",
107
+ secondary: "fa-info-circle",
108
+ success: "fa-check-circle",
109
+ warning: "fa-exclamation-triangle",
110
+ danger: "fa-times-circle",
111
+ info: "fa-info-circle",
112
+ };
113
+ const displayIcon = icon || defaultIcons[variant];
114
+ return (_jsx("div", { className: `
115
+ relative w-[18rem] bg-white rounded-md shadow-lg border border-gray-200
116
+ overflow-hidden transition-all duration-300 ease-in-out
117
+ ${isClosing ? "opacity-0 translate-x-full" : "opacity-100 translate-x-0"}
118
+ `, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, role: "alert", "aria-live": "polite", children: _jsxs("div", { className: `${config.bg} ${config.text} p-4 flex items-start gap-3 relative`, children: [duration > 0 && (_jsx("div", { className: "absolute bottom-0 left-0 right-0 h-[3px] overflow-hidden", children: _jsx("div", { className: "h-full transition-all duration-50 ease-linear", style: {
119
+ width: `${progress}%`,
120
+ backgroundColor: "#00000050",
121
+ } }) })), displayIcon && (_jsx("div", { className: "flex-shrink-0 -mt-0.5", children: _jsx("i", { className: `${normalizeIconClass(displayIcon)} text-base`, "aria-hidden": !iconLabel, "aria-label": iconLabel }) })), _jsx("div", { className: "flex-1 min-w-0", children: _jsx("p", { className: "text-sm font-medium break-words max-w-full", children: message }) }), _jsx("button", { onClick: handleClose, className: "flex-shrink-0 ml-2 text-gray-600 hover:text-gray-800 transition-colors cursor-pointer", "aria-label": "Cerrar notificaci\u00F3n", type: "button", children: _jsx("i", { className: `${normalizeIconClass("fa-times")} text-sm` }) })] }) }));
122
+ };
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export interface SnackbarContainerProps {
3
+ position?: "top-right" | "top-left" | "bottom-right" | "bottom-left" | "top-center" | "bottom-center";
4
+ maxSnackbars?: number;
5
+ }
6
+ export declare const SnackbarContainer: React.FC<SnackbarContainerProps>;
7
+ //# sourceMappingURL=SnackbarContainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SnackbarContainer.d.ts","sourceRoot":"","sources":["../../../src/components/utils/SnackbarContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,eAAe,CAAC;IACtG,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAgD9D,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React from "react";
3
+ import { useSnackbar } from "../../contexts/SnackbarContext";
4
+ import { Snackbar } from "./Snackbar";
5
+ export const SnackbarContainer = ({ position = "top-right", maxSnackbars = 5, }) => {
6
+ const { snackbars, removeSnackbar } = useSnackbar();
7
+ // Limitar el número de snackbars visibles
8
+ const visibleSnackbars = snackbars.slice(-maxSnackbars);
9
+ // Clases de posición
10
+ const positionClasses = {
11
+ "top-right": "top-4 right-4",
12
+ "top-left": "top-4 left-4",
13
+ "bottom-right": "bottom-4 right-4",
14
+ "bottom-left": "bottom-4 left-4",
15
+ "top-center": "top-4 left-1/2 -translate-x-1/2",
16
+ "bottom-center": "bottom-4 left-1/2 -translate-x-1/2",
17
+ };
18
+ if (snackbars.length === 0) {
19
+ return null;
20
+ }
21
+ return (_jsx("div", { className: `
22
+ fixed z-50 pointer-events-none
23
+ ${positionClasses[position]}
24
+ `, "aria-live": "polite", "aria-atomic": "true", children: _jsx("div", { className: "flex flex-col gap-3 pointer-events-auto", children: visibleSnackbars.map((snackbar) => (_jsx(Snackbar, { id: snackbar.id, message: snackbar.message, variant: snackbar.variant, duration: snackbar.duration, icon: snackbar.icon, iconLabel: snackbar.iconLabel, onClose: removeSnackbar }, snackbar.id))) }) }));
25
+ };
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Normaliza las clases de iconos de FontAwesome para usar el estilo light (fal) por defecto
3
+ *
4
+ * Convierte:
5
+ * - "fa fa-user" -> "fal fa-user"
6
+ * - "fas fa-user" -> "fal fa-user"
7
+ * - "far fa-user" -> "fal fa-user"
8
+ * - "fal fa-user" -> "fal fa-user" (ya es light, se mantiene)
9
+ * - "fa-user" -> "fal fa-user"
10
+ * - "fa-spinner fa-spin" -> "fal fa-spinner fa-spin" (preserva clases adicionales)
11
+ *
12
+ * @param iconClass - La clase del icono a normalizar
13
+ * @returns La clase del icono normalizada con el estilo light (fal)
14
+ */
15
+ export declare function normalizeIconClass(iconClass: string | undefined): string;
16
+ //# sourceMappingURL=iconUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iconUtils.d.ts","sourceRoot":"","sources":["../../../src/components/utils/iconUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CA6BxE"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Normaliza las clases de iconos de FontAwesome para usar el estilo light (fal) por defecto
3
+ *
4
+ * Convierte:
5
+ * - "fa fa-user" -> "fal fa-user"
6
+ * - "fas fa-user" -> "fal fa-user"
7
+ * - "far fa-user" -> "fal fa-user"
8
+ * - "fal fa-user" -> "fal fa-user" (ya es light, se mantiene)
9
+ * - "fa-user" -> "fal fa-user"
10
+ * - "fa-spinner fa-spin" -> "fal fa-spinner fa-spin" (preserva clases adicionales)
11
+ *
12
+ * @param iconClass - La clase del icono a normalizar
13
+ * @returns La clase del icono normalizada con el estilo light (fal)
14
+ */
15
+ export function normalizeIconClass(iconClass) {
16
+ if (!iconClass)
17
+ return "";
18
+ // Dividir las clases por espacios
19
+ const classes = iconClass.trim().split(/\s+/);
20
+ // Buscar y reemplazar el prefijo de estilo
21
+ const stylePrefixes = ["fas", "far", "fal", "fab"];
22
+ let hasStylePrefix = false;
23
+ const normalizedClasses = classes.map((cls) => {
24
+ // Si es un prefijo de estilo, reemplazarlo por "fal"
25
+ if (stylePrefixes.includes(cls)) {
26
+ hasStylePrefix = true;
27
+ return "fal";
28
+ }
29
+ return cls;
30
+ });
31
+ // Si no tenía prefijo de estilo y la primera clase empieza con "fa-", agregar "fal" al inicio
32
+ if (!hasStylePrefix && classes[0]?.startsWith("fa-")) {
33
+ normalizedClasses.unshift("fal");
34
+ }
35
+ // Si no tenía prefijo de estilo y ninguna clase es un prefijo, agregar "fal" al inicio
36
+ else if (!hasStylePrefix && !classes.some(cls => stylePrefixes.includes(cls))) {
37
+ normalizedClasses.unshift("fal");
38
+ }
39
+ return normalizedClasses.join(" ");
40
+ }
@@ -1,7 +1,19 @@
1
1
  export { Badge } from "./Badge";
2
2
  export type { BadgeProps } from "./Badge";
3
+ export { Avatar } from "./Avatar";
4
+ export type { AvatarProps } from "./Avatar";
5
+ export { RoadMap } from "./RoadMap";
6
+ export type { RoadMapProps, RoadMapStage } from "./RoadMap";
3
7
  export { Dialog } from "./Dialog";
4
8
  export type { DialogProps } from "./Dialog";
5
9
  export { Loader } from "./Loader";
6
10
  export type { LoaderProps } from "./Loader";
11
+ export { Filter } from "./Filter";
12
+ export type { FilterProps } from "./Filter";
13
+ export { FiltersDialog } from "./FiltersDialog";
14
+ export type { FiltersDialogProps, FilterConfig } from "./FiltersDialog";
15
+ export { Snackbar } from "./Snackbar";
16
+ export type { SnackbarProps } from "./Snackbar";
17
+ export { SnackbarContainer } from "./SnackbarContainer";
18
+ export type { SnackbarContainerProps } from "./SnackbarContainer";
7
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,3 +1,9 @@
1
1
  export { Badge } from "./Badge";
2
+ export { Avatar } from "./Avatar";
3
+ export { RoadMap } from "./RoadMap";
2
4
  export { Dialog } from "./Dialog";
3
5
  export { Loader } from "./Loader";
6
+ export { Filter } from "./Filter";
7
+ export { FiltersDialog } from "./FiltersDialog";
8
+ export { Snackbar } from "./Snackbar";
9
+ export { SnackbarContainer } from "./SnackbarContainer";
@@ -0,0 +1,40 @@
1
+ import React, { type ReactNode, type Dispatch, type SetStateAction } from "react";
2
+ import type { Theme, ThemeContextType } from "./types";
3
+ export interface NavbarInterface {
4
+ navBarLeftNode?: string | ReactNode;
5
+ navBarRightNode?: string | ReactNode;
6
+ fullWidthNavbar: boolean;
7
+ height?: string;
8
+ className?: string;
9
+ }
10
+ export interface LeftDrawerInterface {
11
+ headerNode?: ReactNode;
12
+ contentNode?: ReactNode;
13
+ footerNode?: ReactNode;
14
+ className?: string;
15
+ width?: string;
16
+ }
17
+ export interface AppLayoutContextType extends ThemeContextType {
18
+ navbar: NavbarInterface | undefined;
19
+ leftDrawer: LeftDrawerInterface | undefined;
20
+ className: string;
21
+ setNavbar: Dispatch<SetStateAction<NavbarInterface | undefined>>;
22
+ setLeftDrawer: Dispatch<SetStateAction<LeftDrawerInterface | undefined>>;
23
+ setClassName: (className: string) => void;
24
+ setNavBarLeftNode: (node: string | ReactNode | undefined) => void;
25
+ setNavbarRightNode: (node: string | ReactNode | undefined) => void;
26
+ }
27
+ interface AppLayoutProviderProps {
28
+ children: ReactNode;
29
+ initialTheme?: string | Theme;
30
+ storageKey?: string;
31
+ forceInitialTheme?: boolean;
32
+ initialNavbar?: NavbarInterface;
33
+ initialLeftDrawer?: LeftDrawerInterface;
34
+ className?: string;
35
+ }
36
+ export declare const AppLayoutProvider: React.FC<AppLayoutProviderProps>;
37
+ export declare const useAppLayout: () => AppLayoutContextType;
38
+ export declare const useAppLayoutContext: () => boolean;
39
+ export {};
40
+ //# sourceMappingURL=AppLayoutContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppLayoutContext.d.ts","sourceRoot":"","sources":["../../src/contexts/AppLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAIZ,KAAK,SAAS,EAEd,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAKvD,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAE5D,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,mBAAmB,GAAG,SAAS,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAGlB,SAAS,EAAE,QAAQ,CAAC,cAAc,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC;IACjE,aAAa,EAAE,QAAQ,CAAC,cAAc,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAC,CAAC;IACzE,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAClE,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CACpE;AAMD,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;IAEpB,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAyHD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA2B9D,CAAC;AAIF,eAAO,MAAM,YAAY,QAAO,oBAM/B,CAAC;AAIF,eAAO,MAAM,mBAAmB,eAG/B,CAAC"}