analytica-frontend-lib 1.2.23 → 1.2.25

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 (135) hide show
  1. package/dist/Accordation/index.js.map +1 -1
  2. package/dist/Accordation/index.mjs.map +1 -1
  3. package/dist/ActivityFilters/index.css +19181 -0
  4. package/dist/ActivityFilters/index.css.map +1 -0
  5. package/dist/ActivityFilters/index.d.mts +5 -0
  6. package/dist/ActivityFilters/index.d.ts +5 -0
  7. package/dist/ActivityFilters/index.js +4902 -0
  8. package/dist/ActivityFilters/index.js.map +1 -0
  9. package/dist/ActivityFilters/index.mjs +4917 -0
  10. package/dist/ActivityFilters/index.mjs.map +1 -0
  11. package/dist/ActivityFilters-Cs3TpGAY.d.ts +97 -0
  12. package/dist/ActivityFilters-CsX8y41f.d.mts +97 -0
  13. package/dist/Alert/index.js.map +1 -1
  14. package/dist/Alert/index.mjs.map +1 -1
  15. package/dist/AlertDialog/index.js.map +1 -1
  16. package/dist/AlertDialog/index.mjs.map +1 -1
  17. package/dist/AlertManager/index.css +21 -0
  18. package/dist/AlertManager/index.css.map +1 -1
  19. package/dist/AlertManager/index.js.map +1 -1
  20. package/dist/AlertManager/index.mjs.map +1 -1
  21. package/dist/AlertManagerView/index.js.map +1 -1
  22. package/dist/AlertManagerView/index.mjs.map +1 -1
  23. package/dist/Alternative/index.js.map +1 -1
  24. package/dist/Alternative/index.mjs.map +1 -1
  25. package/dist/Badge/index.js.map +1 -1
  26. package/dist/Badge/index.mjs.map +1 -1
  27. package/dist/BreadcrumbMenu/index.js.map +1 -1
  28. package/dist/BreadcrumbMenu/index.mjs.map +1 -1
  29. package/dist/Button/index.js.map +1 -1
  30. package/dist/Button/index.mjs.map +1 -1
  31. package/dist/Calendar/index.js.map +1 -1
  32. package/dist/Calendar/index.mjs.map +1 -1
  33. package/dist/Card/index.js.map +1 -1
  34. package/dist/Card/index.mjs.map +1 -1
  35. package/dist/CheckBox/index.d.mts +1 -1
  36. package/dist/CheckBox/index.d.ts +1 -1
  37. package/dist/CheckBox/index.js.map +1 -1
  38. package/dist/CheckBox/index.mjs.map +1 -1
  39. package/dist/Chips/index.js.map +1 -1
  40. package/dist/Chips/index.mjs.map +1 -1
  41. package/dist/Divider/index.js.map +1 -1
  42. package/dist/Divider/index.mjs.map +1 -1
  43. package/dist/DownloadButton/index.js.map +1 -1
  44. package/dist/DownloadButton/index.mjs.map +1 -1
  45. package/dist/DropdownMenu/index.js.map +1 -1
  46. package/dist/DropdownMenu/index.mjs.map +1 -1
  47. package/dist/EmptyState/index.js.map +1 -1
  48. package/dist/EmptyState/index.mjs.map +1 -1
  49. package/dist/IconButton/index.js.map +1 -1
  50. package/dist/IconButton/index.mjs.map +1 -1
  51. package/dist/IconRoundedButton/index.js.map +1 -1
  52. package/dist/IconRoundedButton/index.mjs.map +1 -1
  53. package/dist/LatexRenderer/index.d.mts +50 -0
  54. package/dist/LatexRenderer/index.d.ts +50 -0
  55. package/dist/LatexRenderer/index.js +198 -0
  56. package/dist/LatexRenderer/index.js.map +1 -0
  57. package/dist/LatexRenderer/index.mjs +169 -0
  58. package/dist/LatexRenderer/index.mjs.map +1 -0
  59. package/dist/Menu/index.js.map +1 -1
  60. package/dist/Menu/index.mjs.map +1 -1
  61. package/dist/Modal/index.js.map +1 -1
  62. package/dist/Modal/index.mjs.map +1 -1
  63. package/dist/MultipleChoice/index.js.map +1 -1
  64. package/dist/MultipleChoice/index.mjs.map +1 -1
  65. package/dist/NavButton/index.js.map +1 -1
  66. package/dist/NavButton/index.mjs.map +1 -1
  67. package/dist/NoSearchResult/index.js.map +1 -1
  68. package/dist/NoSearchResult/index.mjs.map +1 -1
  69. package/dist/NotFound/index.js.map +1 -1
  70. package/dist/NotFound/index.mjs.map +1 -1
  71. package/dist/NotificationCard/index.js.map +1 -1
  72. package/dist/NotificationCard/index.mjs.map +1 -1
  73. package/dist/ProgressBar/index.js.map +1 -1
  74. package/dist/ProgressBar/index.mjs.map +1 -1
  75. package/dist/ProgressCircle/index.js.map +1 -1
  76. package/dist/ProgressCircle/index.mjs.map +1 -1
  77. package/dist/Quiz/index.js.map +1 -1
  78. package/dist/Quiz/index.mjs.map +1 -1
  79. package/dist/Radio/index.d.mts +2 -2
  80. package/dist/Radio/index.d.ts +2 -2
  81. package/dist/Radio/index.js.map +1 -1
  82. package/dist/Radio/index.mjs.map +1 -1
  83. package/dist/Search/index.d.mts +1 -1
  84. package/dist/Search/index.d.ts +1 -1
  85. package/dist/Search/index.js.map +1 -1
  86. package/dist/Search/index.mjs.map +1 -1
  87. package/dist/Select/index.js.map +1 -1
  88. package/dist/Select/index.mjs.map +1 -1
  89. package/dist/SelectionButton/index.js.map +1 -1
  90. package/dist/SelectionButton/index.mjs.map +1 -1
  91. package/dist/Skeleton/index.js.map +1 -1
  92. package/dist/Skeleton/index.mjs.map +1 -1
  93. package/dist/StatisticsCard/index.js.map +1 -1
  94. package/dist/StatisticsCard/index.mjs.map +1 -1
  95. package/dist/Stepper/index.js.map +1 -1
  96. package/dist/Stepper/index.mjs.map +1 -1
  97. package/dist/Table/TablePagination/index.js.map +1 -1
  98. package/dist/Table/TablePagination/index.mjs.map +1 -1
  99. package/dist/Table/index.js.map +1 -1
  100. package/dist/Table/index.mjs.map +1 -1
  101. package/dist/TableProvider/index.css +21 -0
  102. package/dist/TableProvider/index.css.map +1 -1
  103. package/dist/TableProvider/index.js.map +1 -1
  104. package/dist/TableProvider/index.mjs.map +1 -1
  105. package/dist/Text/index.js.map +1 -1
  106. package/dist/Text/index.mjs.map +1 -1
  107. package/dist/TextArea/index.js.map +1 -1
  108. package/dist/TextArea/index.mjs.map +1 -1
  109. package/dist/ThemeToggle/index.js.map +1 -1
  110. package/dist/ThemeToggle/index.mjs.map +1 -1
  111. package/dist/Toast/Toaster/index.js.map +1 -1
  112. package/dist/Toast/Toaster/index.mjs.map +1 -1
  113. package/dist/Toast/index.js.map +1 -1
  114. package/dist/Toast/index.mjs.map +1 -1
  115. package/dist/VideoPlayer/index.js.map +1 -1
  116. package/dist/VideoPlayer/index.mjs.map +1 -1
  117. package/dist/Whiteboard/index.js.map +1 -1
  118. package/dist/Whiteboard/index.mjs.map +1 -1
  119. package/dist/index.css +21 -0
  120. package/dist/index.css.map +1 -1
  121. package/dist/index.d.mts +12 -5
  122. package/dist/index.d.ts +12 -5
  123. package/dist/index.js +6560 -6018
  124. package/dist/index.js.map +1 -1
  125. package/dist/index.mjs +6617 -6080
  126. package/dist/index.mjs.map +1 -1
  127. package/dist/styles.css +21 -0
  128. package/dist/styles.css.map +1 -1
  129. package/dist/utils/index.d.mts +25 -1
  130. package/dist/utils/index.d.ts +25 -1
  131. package/dist/utils/index.js +24 -2
  132. package/dist/utils/index.js.map +1 -1
  133. package/dist/utils/index.mjs +20 -1
  134. package/dist/utils/index.mjs.map +1 -1
  135. package/package.json +12 -1
@@ -1,5 +1,7 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { Dispatch, SetStateAction } from 'react';
3
+ import { C as CategoryConfig } from '../CheckBoxGroup-9n5C0OH4.mjs';
4
+ import 'react/jsx-runtime';
3
5
 
4
6
  /**
5
7
  * Synchronizes dropdown state when it closes externally
@@ -12,6 +14,28 @@ import { Dispatch, SetStateAction } from 'react';
12
14
  */
13
15
  declare const syncDropdownState: (open: boolean, isActive: boolean, setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>, key: string) => void;
14
16
 
17
+ /**
18
+ * Extracts selected IDs from knowledge categories by their keys
19
+ * @param categories - Array of category configurations
20
+ * @param keys - Object mapping output keys to category keys
21
+ * @returns Object with extracted selected IDs for each output key
22
+ */
23
+ declare function getSelectedIdsFromCategories(categories: CategoryConfig[], keys: Record<string, string>): Record<string, string[]>;
24
+ /**
25
+ * Toggles an item in an array (adds if not present, removes if present)
26
+ * @param array - Current array
27
+ * @param item - Item to toggle
28
+ * @returns New array with item toggled
29
+ */
30
+ declare function toggleArrayItem<T>(array: T[], item: T): T[];
31
+ /**
32
+ * Toggles a single value (returns null if current value, otherwise returns new value)
33
+ * @param currentValue - Current selected value
34
+ * @param newValue - Value to toggle to
35
+ * @returns New value or null if toggling off
36
+ */
37
+ declare function toggleSingleValue<T>(currentValue: T | null, newValue: T): T | null;
38
+
15
39
  declare function cn(...inputs: ClassValue[]): string;
16
40
 
17
41
  /**
@@ -24,4 +48,4 @@ declare function cn(...inputs: ClassValue[]): string;
24
48
  */
25
49
  declare function getSubjectColorWithOpacity(hexColor: string | undefined, isDark: boolean): string | undefined;
26
50
 
27
- export { cn, getSubjectColorWithOpacity, syncDropdownState };
51
+ export { cn, getSelectedIdsFromCategories, getSubjectColorWithOpacity, syncDropdownState, toggleArrayItem, toggleSingleValue };
@@ -1,5 +1,7 @@
1
1
  import { ClassValue } from 'clsx';
2
2
  import { Dispatch, SetStateAction } from 'react';
3
+ import { C as CategoryConfig } from '../CheckBoxGroup-9n5C0OH4.js';
4
+ import 'react/jsx-runtime';
3
5
 
4
6
  /**
5
7
  * Synchronizes dropdown state when it closes externally
@@ -12,6 +14,28 @@ import { Dispatch, SetStateAction } from 'react';
12
14
  */
13
15
  declare const syncDropdownState: (open: boolean, isActive: boolean, setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>, key: string) => void;
14
16
 
17
+ /**
18
+ * Extracts selected IDs from knowledge categories by their keys
19
+ * @param categories - Array of category configurations
20
+ * @param keys - Object mapping output keys to category keys
21
+ * @returns Object with extracted selected IDs for each output key
22
+ */
23
+ declare function getSelectedIdsFromCategories(categories: CategoryConfig[], keys: Record<string, string>): Record<string, string[]>;
24
+ /**
25
+ * Toggles an item in an array (adds if not present, removes if present)
26
+ * @param array - Current array
27
+ * @param item - Item to toggle
28
+ * @returns New array with item toggled
29
+ */
30
+ declare function toggleArrayItem<T>(array: T[], item: T): T[];
31
+ /**
32
+ * Toggles a single value (returns null if current value, otherwise returns new value)
33
+ * @param currentValue - Current selected value
34
+ * @param newValue - Value to toggle to
35
+ * @returns New value or null if toggling off
36
+ */
37
+ declare function toggleSingleValue<T>(currentValue: T | null, newValue: T): T | null;
38
+
15
39
  declare function cn(...inputs: ClassValue[]): string;
16
40
 
17
41
  /**
@@ -24,4 +48,4 @@ declare function cn(...inputs: ClassValue[]): string;
24
48
  */
25
49
  declare function getSubjectColorWithOpacity(hexColor: string | undefined, isDark: boolean): string | undefined;
26
50
 
27
- export { cn, getSubjectColorWithOpacity, syncDropdownState };
51
+ export { cn, getSelectedIdsFromCategories, getSubjectColorWithOpacity, syncDropdownState, toggleArrayItem, toggleSingleValue };
@@ -21,8 +21,11 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  var utils_exports = {};
22
22
  __export(utils_exports, {
23
23
  cn: () => cn,
24
+ getSelectedIdsFromCategories: () => getSelectedIdsFromCategories,
24
25
  getSubjectColorWithOpacity: () => getSubjectColorWithOpacity,
25
- syncDropdownState: () => syncDropdownState
26
+ syncDropdownState: () => syncDropdownState,
27
+ toggleArrayItem: () => toggleArrayItem,
28
+ toggleSingleValue: () => toggleSingleValue
26
29
  });
27
30
  module.exports = __toCommonJS(utils_exports);
28
31
  var import_clsx = require("clsx");
@@ -35,6 +38,22 @@ var syncDropdownState = (open, isActive, setActiveStates, key) => {
35
38
  }
36
39
  };
37
40
 
41
+ // src/utils/activityFilters.ts
42
+ function getSelectedIdsFromCategories(categories, keys) {
43
+ const result = {};
44
+ for (const [outputKey, categoryKey] of Object.entries(keys)) {
45
+ const category = categories.find((c) => c.key === categoryKey);
46
+ result[outputKey] = category?.selectedIds || [];
47
+ }
48
+ return result;
49
+ }
50
+ function toggleArrayItem(array, item) {
51
+ return array.includes(item) ? array.filter((i) => i !== item) : [...array, item];
52
+ }
53
+ function toggleSingleValue(currentValue, newValue) {
54
+ return currentValue === newValue ? null : newValue;
55
+ }
56
+
38
57
  // src/utils/utils.ts
39
58
  function cn(...inputs) {
40
59
  return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
@@ -62,7 +81,10 @@ function getSubjectColorWithOpacity(hexColor, isDark) {
62
81
  // Annotate the CommonJS export names for ESM import in node:
63
82
  0 && (module.exports = {
64
83
  cn,
84
+ getSelectedIdsFromCategories,
65
85
  getSubjectColorWithOpacity,
66
- syncDropdownState
86
+ syncDropdownState,
87
+ toggleArrayItem,
88
+ toggleSingleValue
67
89
  });
68
90
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/utils.ts","../../src/utils/dropdown.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n","import type { Dispatch, SetStateAction } from 'react';\n\n/**\n * Synchronizes dropdown state when it closes externally\n * This ensures the toggle button state matches the dropdown state\n *\n * @param open - Current dropdown open state\n * @param isActive - Current active state of the toggle button\n * @param setActiveStates - Function to update active states\n * @param key - Key identifier for the specific dropdown\n */\nexport const syncDropdownState = (\n open: boolean,\n isActive: boolean,\n setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>,\n key: string\n) => {\n if (!open && isActive) {\n setActiveStates((prev) => ({ ...prev, [key]: false }));\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAsC;AACtC,4BAAwB;;;ACUjB,IAAM,oBAAoB,CAC/B,MACA,UACA,iBACA,QACG;AACH,MAAI,CAAC,QAAQ,UAAU;AACrB,oBAAgB,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE;AAAA,EACvD;AACF;;;ADjBO,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;AAYO,SAAS,2BACd,UACA,QACoB;AACpB,MAAI,CAAC,SAAU,QAAO;AAEtB,MAAI,QAAQ,SAAS,QAAQ,MAAM,EAAE,EAAE,YAAY;AAEnD,MAAI,QAAQ;AAEV,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,MAAM,MAAM,GAAG,CAAC;AAAA,IAC1B;AACA,WAAO,IAAI,KAAK;AAAA,EAClB,OAAO;AAEL,QAAI;AACJ,QAAI,MAAM,WAAW,GAAG;AAEtB,oBAAc,IAAI,KAAK;AAAA,IACzB,WAAW,MAAM,WAAW,GAAG;AAE7B,oBAAc,IAAI,KAAK;AAAA,IACzB,OAAO;AAEL,oBAAc,IAAI,KAAK;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/utils.ts","../../src/utils/dropdown.ts","../../src/utils/activityFilters.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\nexport {\n getSelectedIdsFromCategories,\n toggleArrayItem,\n toggleSingleValue,\n} from './activityFilters';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n","import type { Dispatch, SetStateAction } from 'react';\n\n/**\n * Synchronizes dropdown state when it closes externally\n * This ensures the toggle button state matches the dropdown state\n *\n * @param open - Current dropdown open state\n * @param isActive - Current active state of the toggle button\n * @param setActiveStates - Function to update active states\n * @param key - Key identifier for the specific dropdown\n */\nexport const syncDropdownState = (\n open: boolean,\n isActive: boolean,\n setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>,\n key: string\n) => {\n if (!open && isActive) {\n setActiveStates((prev) => ({ ...prev, [key]: false }));\n }\n};\n","import type { CategoryConfig } from '../components/CheckBoxGroup/CheckBoxGroup';\n\n/**\n * Extracts selected IDs from knowledge categories by their keys\n * @param categories - Array of category configurations\n * @param keys - Object mapping output keys to category keys\n * @returns Object with extracted selected IDs for each output key\n */\nexport function getSelectedIdsFromCategories(\n categories: CategoryConfig[],\n keys: Record<string, string>\n): Record<string, string[]> {\n const result: Record<string, string[]> = {};\n\n for (const [outputKey, categoryKey] of Object.entries(keys)) {\n const category = categories.find((c) => c.key === categoryKey);\n result[outputKey] = category?.selectedIds || [];\n }\n\n return result;\n}\n\n/**\n * Toggles an item in an array (adds if not present, removes if present)\n * @param array - Current array\n * @param item - Item to toggle\n * @returns New array with item toggled\n */\nexport function toggleArrayItem<T>(array: T[], item: T): T[] {\n return array.includes(item)\n ? array.filter((i) => i !== item)\n : [...array, item];\n}\n\n/**\n * Toggles a single value (returns null if current value, otherwise returns new value)\n * @param currentValue - Current selected value\n * @param newValue - Value to toggle to\n * @returns New value or null if toggling off\n */\nexport function toggleSingleValue<T>(\n currentValue: T | null,\n newValue: T\n): T | null {\n return currentValue === newValue ? null : newValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAsC;AACtC,4BAAwB;;;ACUjB,IAAM,oBAAoB,CAC/B,MACA,UACA,iBACA,QACG;AACH,MAAI,CAAC,QAAQ,UAAU;AACrB,oBAAgB,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE;AAAA,EACvD;AACF;;;ACZO,SAAS,6BACd,YACA,MAC0B;AAC1B,QAAM,SAAmC,CAAC;AAE1C,aAAW,CAAC,WAAW,WAAW,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC3D,UAAM,WAAW,WAAW,KAAK,CAAC,MAAM,EAAE,QAAQ,WAAW;AAC7D,WAAO,SAAS,IAAI,UAAU,eAAe,CAAC;AAAA,EAChD;AAEA,SAAO;AACT;AAQO,SAAS,gBAAmB,OAAY,MAAc;AAC3D,SAAO,MAAM,SAAS,IAAI,IACtB,MAAM,OAAO,CAAC,MAAM,MAAM,IAAI,IAC9B,CAAC,GAAG,OAAO,IAAI;AACrB;AAQO,SAAS,kBACd,cACA,UACU;AACV,SAAO,iBAAiB,WAAW,OAAO;AAC5C;;;AF1CO,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;AAiBO,SAAS,2BACd,UACA,QACoB;AACpB,MAAI,CAAC,SAAU,QAAO;AAEtB,MAAI,QAAQ,SAAS,QAAQ,MAAM,EAAE,EAAE,YAAY;AAEnD,MAAI,QAAQ;AAEV,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,MAAM,MAAM,GAAG,CAAC;AAAA,IAC1B;AACA,WAAO,IAAI,KAAK;AAAA,EAClB,OAAO;AAEL,QAAI;AACJ,QAAI,MAAM,WAAW,GAAG;AAEtB,oBAAc,IAAI,KAAK;AAAA,IACzB,WAAW,MAAM,WAAW,GAAG;AAE7B,oBAAc,IAAI,KAAK;AAAA,IACzB,OAAO;AAEL,oBAAc,IAAI,KAAK;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
@@ -9,6 +9,22 @@ var syncDropdownState = (open, isActive, setActiveStates, key) => {
9
9
  }
10
10
  };
11
11
 
12
+ // src/utils/activityFilters.ts
13
+ function getSelectedIdsFromCategories(categories, keys) {
14
+ const result = {};
15
+ for (const [outputKey, categoryKey] of Object.entries(keys)) {
16
+ const category = categories.find((c) => c.key === categoryKey);
17
+ result[outputKey] = category?.selectedIds || [];
18
+ }
19
+ return result;
20
+ }
21
+ function toggleArrayItem(array, item) {
22
+ return array.includes(item) ? array.filter((i) => i !== item) : [...array, item];
23
+ }
24
+ function toggleSingleValue(currentValue, newValue) {
25
+ return currentValue === newValue ? null : newValue;
26
+ }
27
+
12
28
  // src/utils/utils.ts
13
29
  function cn(...inputs) {
14
30
  return twMerge(clsx(inputs));
@@ -35,7 +51,10 @@ function getSubjectColorWithOpacity(hexColor, isDark) {
35
51
  }
36
52
  export {
37
53
  cn,
54
+ getSelectedIdsFromCategories,
38
55
  getSubjectColorWithOpacity,
39
- syncDropdownState
56
+ syncDropdownState,
57
+ toggleArrayItem,
58
+ toggleSingleValue
40
59
  };
41
60
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/utils.ts","../../src/utils/dropdown.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n","import type { Dispatch, SetStateAction } from 'react';\n\n/**\n * Synchronizes dropdown state when it closes externally\n * This ensures the toggle button state matches the dropdown state\n *\n * @param open - Current dropdown open state\n * @param isActive - Current active state of the toggle button\n * @param setActiveStates - Function to update active states\n * @param key - Key identifier for the specific dropdown\n */\nexport const syncDropdownState = (\n open: boolean,\n isActive: boolean,\n setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>,\n key: string\n) => {\n if (!open && isActive) {\n setActiveStates((prev) => ({ ...prev, [key]: false }));\n }\n};\n"],"mappings":";AAAA,SAAS,YAA6B;AACtC,SAAS,eAAe;;;ACUjB,IAAM,oBAAoB,CAC/B,MACA,UACA,iBACA,QACG;AACH,MAAI,CAAC,QAAQ,UAAU;AACrB,oBAAgB,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE;AAAA,EACvD;AACF;;;ADjBO,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAYO,SAAS,2BACd,UACA,QACoB;AACpB,MAAI,CAAC,SAAU,QAAO;AAEtB,MAAI,QAAQ,SAAS,QAAQ,MAAM,EAAE,EAAE,YAAY;AAEnD,MAAI,QAAQ;AAEV,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,MAAM,MAAM,GAAG,CAAC;AAAA,IAC1B;AACA,WAAO,IAAI,KAAK;AAAA,EAClB,OAAO;AAEL,QAAI;AACJ,QAAI,MAAM,WAAW,GAAG;AAEtB,oBAAc,IAAI,KAAK;AAAA,IACzB,WAAW,MAAM,WAAW,GAAG;AAE7B,oBAAc,IAAI,KAAK;AAAA,IACzB,OAAO;AAEL,oBAAc,IAAI,KAAK;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/utils.ts","../../src/utils/dropdown.ts","../../src/utils/activityFilters.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport { syncDropdownState } from './dropdown';\nexport {\n getSelectedIdsFromCategories,\n toggleArrayItem,\n toggleSingleValue,\n} from './activityFilters';\n\n/**\n * Retorna a cor hexadecimal com opacidade 0.3 (4d) se não estiver em dark mode.\n * Se estiver em dark mode, retorna a cor original.\n *\n * @param hexColor - Cor hexadecimal (ex: \"#0066b8\" ou \"0066b8\")\n * @param isDark - booleano indicando se está em dark mode\n * @returns string - cor hexadecimal com opacidade se necessário\n */\nexport function getSubjectColorWithOpacity(\n hexColor: string | undefined,\n isDark: boolean\n): string | undefined {\n if (!hexColor) return undefined;\n // Remove o '#' se existir\n let color = hexColor.replace(/^#/, '').toLowerCase();\n\n if (isDark) {\n // Se está em dark mode, sempre remove opacidade se existir\n if (color.length === 8) {\n color = color.slice(0, 6);\n }\n return `#${color}`;\n } else {\n // Se não está em dark mode (light mode)\n let resultColor: string;\n if (color.length === 6) {\n // Adiciona opacidade 0.3 (4D) para cores de 6 dígitos\n resultColor = `#${color}4d`;\n } else if (color.length === 8) {\n // Já tem opacidade, retorna como está\n resultColor = `#${color}`;\n } else {\n // Para outros tamanhos (3, 4, 5 dígitos), retorna como está\n resultColor = `#${color}`;\n }\n return resultColor;\n }\n}\n","import type { Dispatch, SetStateAction } from 'react';\n\n/**\n * Synchronizes dropdown state when it closes externally\n * This ensures the toggle button state matches the dropdown state\n *\n * @param open - Current dropdown open state\n * @param isActive - Current active state of the toggle button\n * @param setActiveStates - Function to update active states\n * @param key - Key identifier for the specific dropdown\n */\nexport const syncDropdownState = (\n open: boolean,\n isActive: boolean,\n setActiveStates: Dispatch<SetStateAction<Record<string, boolean>>>,\n key: string\n) => {\n if (!open && isActive) {\n setActiveStates((prev) => ({ ...prev, [key]: false }));\n }\n};\n","import type { CategoryConfig } from '../components/CheckBoxGroup/CheckBoxGroup';\n\n/**\n * Extracts selected IDs from knowledge categories by their keys\n * @param categories - Array of category configurations\n * @param keys - Object mapping output keys to category keys\n * @returns Object with extracted selected IDs for each output key\n */\nexport function getSelectedIdsFromCategories(\n categories: CategoryConfig[],\n keys: Record<string, string>\n): Record<string, string[]> {\n const result: Record<string, string[]> = {};\n\n for (const [outputKey, categoryKey] of Object.entries(keys)) {\n const category = categories.find((c) => c.key === categoryKey);\n result[outputKey] = category?.selectedIds || [];\n }\n\n return result;\n}\n\n/**\n * Toggles an item in an array (adds if not present, removes if present)\n * @param array - Current array\n * @param item - Item to toggle\n * @returns New array with item toggled\n */\nexport function toggleArrayItem<T>(array: T[], item: T): T[] {\n return array.includes(item)\n ? array.filter((i) => i !== item)\n : [...array, item];\n}\n\n/**\n * Toggles a single value (returns null if current value, otherwise returns new value)\n * @param currentValue - Current selected value\n * @param newValue - Value to toggle to\n * @returns New value or null if toggling off\n */\nexport function toggleSingleValue<T>(\n currentValue: T | null,\n newValue: T\n): T | null {\n return currentValue === newValue ? null : newValue;\n}\n"],"mappings":";AAAA,SAAS,YAA6B;AACtC,SAAS,eAAe;;;ACUjB,IAAM,oBAAoB,CAC/B,MACA,UACA,iBACA,QACG;AACH,MAAI,CAAC,QAAQ,UAAU;AACrB,oBAAgB,CAAC,UAAU,EAAE,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,EAAE;AAAA,EACvD;AACF;;;ACZO,SAAS,6BACd,YACA,MAC0B;AAC1B,QAAM,SAAmC,CAAC;AAE1C,aAAW,CAAC,WAAW,WAAW,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC3D,UAAM,WAAW,WAAW,KAAK,CAAC,MAAM,EAAE,QAAQ,WAAW;AAC7D,WAAO,SAAS,IAAI,UAAU,eAAe,CAAC;AAAA,EAChD;AAEA,SAAO;AACT;AAQO,SAAS,gBAAmB,OAAY,MAAc;AAC3D,SAAO,MAAM,SAAS,IAAI,IACtB,MAAM,OAAO,CAAC,MAAM,MAAM,IAAI,IAC9B,CAAC,GAAG,OAAO,IAAI;AACrB;AAQO,SAAS,kBACd,cACA,UACU;AACV,SAAO,iBAAiB,WAAW,OAAO;AAC5C;;;AF1CO,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAiBO,SAAS,2BACd,UACA,QACoB;AACpB,MAAI,CAAC,SAAU,QAAO;AAEtB,MAAI,QAAQ,SAAS,QAAQ,MAAM,EAAE,EAAE,YAAY;AAEnD,MAAI,QAAQ;AAEV,QAAI,MAAM,WAAW,GAAG;AACtB,cAAQ,MAAM,MAAM,GAAG,CAAC;AAAA,IAC1B;AACA,WAAO,IAAI,KAAK;AAAA,EAClB,OAAO;AAEL,QAAI;AACJ,QAAI,MAAM,WAAW,GAAG;AAEtB,oBAAc,IAAI,KAAK;AAAA,IACzB,WAAW,MAAM,WAAW,GAAG;AAE7B,oBAAc,IAAI,KAAK;AAAA,IACzB,OAAO;AAEL,oBAAc,IAAI,KAAK;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "analytica-frontend-lib",
3
- "version": "1.2.23",
3
+ "version": "1.2.25",
4
4
  "description": "Repositório público dos componentes utilizados nas plataformas da Analytica Ensino",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "./dist/index.js",
@@ -21,6 +21,7 @@
21
21
  },
22
22
  "./styles.css": "./dist/styles.css",
23
23
  "./accordation": "./dist/Accordation/index.js",
24
+ "./activity-filters": "./dist/ActivityFilters/index.js",
24
25
  "./alert": "./dist/Alert/index.js",
25
26
  "./alert-dialog": "./dist/AlertDialog/index.js",
26
27
  "./alternative": "./dist/Alternative/index.js",
@@ -42,6 +43,7 @@
42
43
  "./icon-rounded-button": "./dist/IconRoundedButton/index.js",
43
44
  "./image-upload": "./dist/ImageUpload/index.js",
44
45
  "./input": "./dist/Input/index.js",
46
+ "./latex-renderer": "./dist/LatexRenderer/index.js",
45
47
  "./menu": "./dist/Menu/index.js",
46
48
  "./modal": "./dist/Modal/index.js",
47
49
  "./modal/videoutils": "./dist/Modal/videoUtils/index.js",
@@ -122,9 +124,13 @@
122
124
  },
123
125
  "dependencies": {
124
126
  "clsx": "^2.1.1",
127
+ "dompurify": "^3.3.0",
128
+ "html-react-parser": "^5.2.8",
129
+ "katex": "^0.16.25",
125
130
  "phosphor-react": "^1.4.1",
126
131
  "react": "^19.1.0",
127
132
  "react-dom": "^19.1.0",
133
+ "react-katex": "^3.1.0",
128
134
  "tailwind-merge": "^3.3.1",
129
135
  "zustand": "^5.0.5"
130
136
  },
@@ -137,9 +143,13 @@
137
143
  "@testing-library/jest-dom": "^6.6.3",
138
144
  "@testing-library/react": "^16.3.0",
139
145
  "@testing-library/user-event": "^14.6.1",
146
+ "@types/dompurify": "^3.2.0",
147
+ "@types/identity-obj-proxy": "^3",
140
148
  "@types/jest": "^29.5.14",
149
+ "@types/katex": "^0.16.7",
141
150
  "@types/react": "^19.1.6",
142
151
  "@types/react-dom": "^19.1.6",
152
+ "@types/react-katex": "^3",
143
153
  "@typescript-eslint/eslint-plugin": "^8.34.0",
144
154
  "@typescript-eslint/parser": "^8.34.0",
145
155
  "autoprefixer": "^10.4.21",
@@ -148,6 +158,7 @@
148
158
  "eslint-plugin-jsdoc": "^50.7.1",
149
159
  "eslint-plugin-prettier": "^5.4.1",
150
160
  "husky": "^9.1.7",
161
+ "identity-obj-proxy": "^3.0.0",
151
162
  "jest": "^29.7.0",
152
163
  "jest-environment-jsdom": "^29.7.0",
153
164
  "jest-sonar-reporter": "^2.0.0",