analytica-frontend-lib 1.2.16 → 1.2.18

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.
@@ -1,12 +1,16 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { A as AlertsConfig } from '../types-DMycdI4U.mjs';
2
+ import { A as AlertsConfig } from '../types-BXzeefgf.mjs';
3
3
  import 'react';
4
4
 
5
5
  interface AlertsManagerProps {
6
6
  config: AlertsConfig;
7
7
  isOpen?: boolean;
8
8
  onClose?: () => void;
9
+ /** URL da imagem após upload (prioritária - será exibida primeiro) */
10
+ imageLink?: string | null;
11
+ /** Imagem padrão a ser exibida quando não há imagem selecionada (deve ser URL string - o front deve converter File para URL se necessário) */
12
+ defaultImage?: string | null;
9
13
  }
10
- declare const AlertsManager: ({ config, isOpen, onClose, }: AlertsManagerProps) => react_jsx_runtime.JSX.Element;
14
+ declare const AlertsManager: ({ config, isOpen, onClose, imageLink, defaultImage, }: AlertsManagerProps) => react_jsx_runtime.JSX.Element;
11
15
 
12
16
  export { AlertsManager };
@@ -1,12 +1,16 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { A as AlertsConfig } from '../types-DMycdI4U.js';
2
+ import { A as AlertsConfig } from '../types-BXzeefgf.js';
3
3
  import 'react';
4
4
 
5
5
  interface AlertsManagerProps {
6
6
  config: AlertsConfig;
7
7
  isOpen?: boolean;
8
8
  onClose?: () => void;
9
+ /** URL da imagem após upload (prioritária - será exibida primeiro) */
10
+ imageLink?: string | null;
11
+ /** Imagem padrão a ser exibida quando não há imagem selecionada (deve ser URL string - o front deve converter File para URL se necessário) */
12
+ defaultImage?: string | null;
9
13
  }
10
- declare const AlertsManager: ({ config, isOpen, onClose, }: AlertsManagerProps) => react_jsx_runtime.JSX.Element;
14
+ declare const AlertsManager: ({ config, isOpen, onClose, imageLink, defaultImage, }: AlertsManagerProps) => react_jsx_runtime.JSX.Element;
11
15
 
12
16
  export { AlertsManager };
@@ -1088,6 +1088,101 @@ var CheckboxGroup = ({
1088
1088
  );
1089
1089
  };
1090
1090
 
1091
+ // src/components/AlertManager/useAlertForm.ts
1092
+ var import_zustand = require("zustand");
1093
+ var initialState = {
1094
+ title: "",
1095
+ message: "",
1096
+ image: null,
1097
+ date: "",
1098
+ time: "",
1099
+ sendToday: false,
1100
+ sendCopyToEmail: false,
1101
+ recipientCategories: {}
1102
+ };
1103
+ var useAlertFormStore = (0, import_zustand.create)((set) => ({
1104
+ ...initialState,
1105
+ // Step 1 - Mensagem
1106
+ setTitle: (title) => set({ title }),
1107
+ setMessage: (message) => set({ message }),
1108
+ setImage: (image) => set({ image }),
1109
+ // Step 2 - Destinatários (Dinâmico)
1110
+ initializeCategory: (category) => set((state) => ({
1111
+ recipientCategories: {
1112
+ ...state.recipientCategories,
1113
+ [category.key]: {
1114
+ ...category,
1115
+ selectedIds: category.selectedIds || [],
1116
+ allSelected: category.allSelected || false
1117
+ }
1118
+ }
1119
+ })),
1120
+ updateCategoryItems: (key, items) => set((state) => {
1121
+ const base = state.recipientCategories[key] ?? {
1122
+ key,
1123
+ label: key,
1124
+ availableItems: [],
1125
+ selectedIds: [],
1126
+ allSelected: false
1127
+ };
1128
+ return {
1129
+ recipientCategories: {
1130
+ ...state.recipientCategories,
1131
+ [key]: { ...base, availableItems: items }
1132
+ }
1133
+ };
1134
+ }),
1135
+ updateCategorySelection: (key, selectedIds, allSelected) => set((state) => {
1136
+ const base = state.recipientCategories[key] ?? {
1137
+ key,
1138
+ label: key,
1139
+ availableItems: [],
1140
+ selectedIds: [],
1141
+ allSelected: false
1142
+ };
1143
+ return {
1144
+ recipientCategories: {
1145
+ ...state.recipientCategories,
1146
+ [key]: { ...base, selectedIds, allSelected }
1147
+ }
1148
+ };
1149
+ }),
1150
+ clearCategorySelection: (key) => set((state) => {
1151
+ const base = state.recipientCategories[key] ?? {
1152
+ key,
1153
+ label: key,
1154
+ availableItems: [],
1155
+ selectedIds: [],
1156
+ allSelected: false
1157
+ };
1158
+ return {
1159
+ recipientCategories: {
1160
+ ...state.recipientCategories,
1161
+ [key]: { ...base, selectedIds: [], allSelected: false }
1162
+ }
1163
+ };
1164
+ }),
1165
+ // Step 3 - Data de envio
1166
+ setDate: (date) => set({ date }),
1167
+ setTime: (time) => set({ time }),
1168
+ setSendToday: (sendToday) => {
1169
+ const now = /* @__PURE__ */ new Date();
1170
+ const year = now.getFullYear();
1171
+ const month = String(now.getMonth() + 1).padStart(2, "0");
1172
+ const day = String(now.getDate()).padStart(2, "0");
1173
+ const hours = String(now.getHours()).padStart(2, "0");
1174
+ const minutes = String(now.getMinutes()).padStart(2, "0");
1175
+ set({
1176
+ sendToday,
1177
+ date: `${year}-${month}-${day}`,
1178
+ time: `${hours}:${minutes}`
1179
+ });
1180
+ },
1181
+ setSendCopyToEmail: (sendCopyToEmail) => set({ sendCopyToEmail }),
1182
+ // Reset form
1183
+ resetForm: () => set(initialState)
1184
+ }));
1185
+
1091
1186
  // src/components/Modal/Modal.tsx
1092
1187
  var import_react5 = require("react");
1093
1188
  var import_phosphor_react4 = require("phosphor-react");
@@ -1355,9 +1450,6 @@ var Divider = ({
1355
1450
  };
1356
1451
  var Divider_default = Divider;
1357
1452
 
1358
- // src/assets/img/notification.png
1359
- var notification_default = "../notification-TD7ZFRLL.png";
1360
-
1361
1453
  // src/components/TextArea/TextArea.tsx
1362
1454
  var import_react6 = require("react");
1363
1455
  var import_phosphor_react5 = require("phosphor-react");
@@ -1693,7 +1785,7 @@ var Input_default = Input;
1693
1785
  // src/components/DropdownMenu/DropdownMenu.tsx
1694
1786
  var import_phosphor_react8 = require("phosphor-react");
1695
1787
  var import_react10 = require("react");
1696
- var import_zustand2 = require("zustand");
1788
+ var import_zustand3 = require("zustand");
1697
1789
 
1698
1790
  // src/components/ThemeToggle/ThemeToggle.tsx
1699
1791
  var import_phosphor_react7 = require("phosphor-react");
@@ -1703,7 +1795,7 @@ var import_react9 = require("react");
1703
1795
  var import_react8 = require("react");
1704
1796
 
1705
1797
  // src/store/themeStore.ts
1706
- var import_zustand = require("zustand");
1798
+ var import_zustand2 = require("zustand");
1707
1799
  var import_middleware = require("zustand/middleware");
1708
1800
  var applyThemeToDOM = (mode) => {
1709
1801
  const htmlElement = document.documentElement;
@@ -1737,7 +1829,7 @@ var saveOriginalTheme = () => {
1737
1829
  htmlElement.setAttribute("data-original-theme", currentTheme);
1738
1830
  }
1739
1831
  };
1740
- var useThemeStore = (0, import_zustand.create)()(
1832
+ var useThemeStore = (0, import_zustand2.create)()(
1741
1833
  (0, import_middleware.devtools)(
1742
1834
  (0, import_middleware.persist)(
1743
1835
  (set, get) => ({
@@ -1891,7 +1983,7 @@ var ThemeToggle = ({
1891
1983
  // src/components/DropdownMenu/DropdownMenu.tsx
1892
1984
  var import_jsx_runtime13 = require("react/jsx-runtime");
1893
1985
  function createDropdownStore() {
1894
- return (0, import_zustand2.create)((set) => ({
1986
+ return (0, import_zustand3.create)((set) => ({
1895
1987
  open: false,
1896
1988
  setOpen: (open) => set({ open })
1897
1989
  }));
@@ -1941,7 +2033,7 @@ var DropdownMenu = ({
1941
2033
  const storeRef = (0, import_react10.useRef)(null);
1942
2034
  storeRef.current ??= createDropdownStore();
1943
2035
  const store = storeRef.current;
1944
- const { open, setOpen: storeSetOpen } = (0, import_zustand2.useStore)(store, (s) => s);
2036
+ const { open, setOpen: storeSetOpen } = (0, import_zustand3.useStore)(store, (s) => s);
1945
2037
  const setOpen = (newOpen) => {
1946
2038
  storeSetOpen(newOpen);
1947
2039
  };
@@ -2007,7 +2099,7 @@ var DropdownMenuTrigger = ({
2007
2099
  ...props
2008
2100
  }) => {
2009
2101
  const store = useDropdownStore(externalStore);
2010
- const open = (0, import_zustand2.useStore)(store, (s) => s.open);
2102
+ const open = (0, import_zustand3.useStore)(store, (s) => s.open);
2011
2103
  const toggleOpen = () => store.setState({ open: !open });
2012
2104
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2013
2105
  "div",
@@ -2076,7 +2168,7 @@ var DropdownMenuContent = (0, import_react10.forwardRef)(
2076
2168
  ...props
2077
2169
  }, ref) => {
2078
2170
  const store = useDropdownStore(externalStore);
2079
- const open = (0, import_zustand2.useStore)(store, (s) => s.open);
2171
+ const open = (0, import_zustand3.useStore)(store, (s) => s.open);
2080
2172
  const [isVisible, setIsVisible] = (0, import_react10.useState)(open);
2081
2173
  (0, import_react10.useEffect)(() => {
2082
2174
  if (open) {
@@ -2133,7 +2225,7 @@ var DropdownMenuItem = (0, import_react10.forwardRef)(
2133
2225
  ...props
2134
2226
  }, ref) => {
2135
2227
  const store = useDropdownStore(externalStore);
2136
- const setOpen = (0, import_zustand2.useStore)(store, (s) => s.setOpen);
2228
+ const setOpen = (0, import_zustand3.useStore)(store, (s) => s.setOpen);
2137
2229
  const sizeClasses = ITEM_SIZE_CLASSES[size];
2138
2230
  const handleClick = (e) => {
2139
2231
  if (disabled) {
@@ -2207,7 +2299,7 @@ var DropdownMenuSeparator = (0, import_react10.forwardRef)(({ className, store:
2207
2299
  DropdownMenuSeparator.displayName = "DropdownMenuSeparator";
2208
2300
  var ProfileMenuTrigger = (0, import_react10.forwardRef)(({ className, onClick, store: externalStore, ...props }, ref) => {
2209
2301
  const store = useDropdownStore(externalStore);
2210
- const open = (0, import_zustand2.useStore)(store, (s) => s.open);
2302
+ const open = (0, import_zustand3.useStore)(store, (s) => s.open);
2211
2303
  const toggleOpen = () => store.setState({ open: !open });
2212
2304
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
2213
2305
  "button",
@@ -2265,7 +2357,7 @@ var ProfileToggleTheme = ({
2265
2357
  const internalStoreRef = (0, import_react10.useRef)(null);
2266
2358
  internalStoreRef.current ??= createDropdownStore();
2267
2359
  const store = externalStore ?? internalStoreRef.current;
2268
- const setOpen = (0, import_zustand2.useStore)(store, (s) => s.setOpen);
2360
+ const setOpen = (0, import_zustand3.useStore)(store, (s) => s.setOpen);
2269
2361
  const handleClick = (e) => {
2270
2362
  e.preventDefault();
2271
2363
  e.stopPropagation();
@@ -2350,7 +2442,7 @@ var ProfileMenuFooter = ({
2350
2442
  ...props
2351
2443
  }) => {
2352
2444
  const store = useDropdownStore(externalStore);
2353
- const setOpen = (0, import_zustand2.useStore)(store, (s) => s.setOpen);
2445
+ const setOpen = (0, import_zustand3.useStore)(store, (s) => s.setOpen);
2354
2446
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
2355
2447
  Button_default,
2356
2448
  {
@@ -5172,10 +5264,10 @@ CardAccordation.displayName = "CardAccordation";
5172
5264
 
5173
5265
  // src/components/Accordation/AccordionGroup.tsx
5174
5266
  var import_react15 = require("react");
5175
- var import_zustand3 = require("zustand");
5267
+ var import_zustand4 = require("zustand");
5176
5268
  var import_jsx_runtime23 = require("react/jsx-runtime");
5177
5269
  function createAccordionGroupStore(type, initialValue, collapsible) {
5178
- return (0, import_zustand3.create)((set, get) => ({
5270
+ return (0, import_zustand4.create)((set, get) => ({
5179
5271
  type,
5180
5272
  value: initialValue,
5181
5273
  collapsible,
@@ -5321,101 +5413,6 @@ AccordionGroup.displayName = "AccordionGroup";
5321
5413
  // src/components/AlertManager/AlertsManager.tsx
5322
5414
  var import_phosphor_react13 = require("phosphor-react");
5323
5415
 
5324
- // src/components/AlertManager/useAlertForm.ts
5325
- var import_zustand4 = require("zustand");
5326
- var initialState = {
5327
- title: "",
5328
- message: "",
5329
- image: null,
5330
- date: "",
5331
- time: "",
5332
- sendToday: false,
5333
- sendCopyToEmail: false,
5334
- recipientCategories: {}
5335
- };
5336
- var useAlertFormStore = (0, import_zustand4.create)((set) => ({
5337
- ...initialState,
5338
- // Step 1 - Mensagem
5339
- setTitle: (title) => set({ title }),
5340
- setMessage: (message) => set({ message }),
5341
- setImage: (image) => set({ image }),
5342
- // Step 2 - Destinatários (Dinâmico)
5343
- initializeCategory: (category) => set((state) => ({
5344
- recipientCategories: {
5345
- ...state.recipientCategories,
5346
- [category.key]: {
5347
- ...category,
5348
- selectedIds: category.selectedIds || [],
5349
- allSelected: category.allSelected || false
5350
- }
5351
- }
5352
- })),
5353
- updateCategoryItems: (key, items) => set((state) => {
5354
- const base = state.recipientCategories[key] ?? {
5355
- key,
5356
- label: key,
5357
- availableItems: [],
5358
- selectedIds: [],
5359
- allSelected: false
5360
- };
5361
- return {
5362
- recipientCategories: {
5363
- ...state.recipientCategories,
5364
- [key]: { ...base, availableItems: items }
5365
- }
5366
- };
5367
- }),
5368
- updateCategorySelection: (key, selectedIds, allSelected) => set((state) => {
5369
- const base = state.recipientCategories[key] ?? {
5370
- key,
5371
- label: key,
5372
- availableItems: [],
5373
- selectedIds: [],
5374
- allSelected: false
5375
- };
5376
- return {
5377
- recipientCategories: {
5378
- ...state.recipientCategories,
5379
- [key]: { ...base, selectedIds, allSelected }
5380
- }
5381
- };
5382
- }),
5383
- clearCategorySelection: (key) => set((state) => {
5384
- const base = state.recipientCategories[key] ?? {
5385
- key,
5386
- label: key,
5387
- availableItems: [],
5388
- selectedIds: [],
5389
- allSelected: false
5390
- };
5391
- return {
5392
- recipientCategories: {
5393
- ...state.recipientCategories,
5394
- [key]: { ...base, selectedIds: [], allSelected: false }
5395
- }
5396
- };
5397
- }),
5398
- // Step 3 - Data de envio
5399
- setDate: (date) => set({ date }),
5400
- setTime: (time) => set({ time }),
5401
- setSendToday: (sendToday) => {
5402
- const now = /* @__PURE__ */ new Date();
5403
- const year = now.getFullYear();
5404
- const month = String(now.getMonth() + 1).padStart(2, "0");
5405
- const day = String(now.getDate()).padStart(2, "0");
5406
- const hours = String(now.getHours()).padStart(2, "0");
5407
- const minutes = String(now.getMinutes()).padStart(2, "0");
5408
- set({
5409
- sendToday,
5410
- date: `${year}-${month}-${day}`,
5411
- time: `${hours}:${minutes}`
5412
- });
5413
- },
5414
- setSendCopyToEmail: (sendCopyToEmail) => set({ sendCopyToEmail }),
5415
- // Reset form
5416
- resetForm: () => set(initialState)
5417
- }));
5418
-
5419
5416
  // src/components/AlertManager/AlertSteps/MessageStep.tsx
5420
5417
  var import_shallow = require("zustand/react/shallow");
5421
5418
  var import_jsx_runtime24 = require("react/jsx-runtime");
@@ -5439,6 +5436,7 @@ var MessageStep = ({
5439
5436
  const handleRemoveFile = () => {
5440
5437
  setImage(null);
5441
5438
  };
5439
+ const isImageFile = image instanceof File;
5442
5440
  return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("section", { className: "flex flex-col gap-4", children: [
5443
5441
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
5444
5442
  Input_default,
@@ -5464,7 +5462,7 @@ var MessageStep = ({
5464
5462
  allowImageAttachment && /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
5465
5463
  ImageUpload,
5466
5464
  {
5467
- selectedFile: image,
5465
+ selectedFile: isImageFile ? image : null,
5468
5466
  onFileSelect: handleFileSelect,
5469
5467
  onRemoveFile: handleRemoveFile
5470
5468
  }
@@ -5668,7 +5666,7 @@ var DateStep = ({
5668
5666
  // src/components/AlertManager/AlertSteps/PreviewStep.tsx
5669
5667
  var import_react18 = require("react");
5670
5668
  var import_jsx_runtime27 = require("react/jsx-runtime");
5671
- var PreviewStep = () => {
5669
+ var PreviewStep = ({ imageLink, defaultImage }) => {
5672
5670
  const title = useAlertFormStore((state) => state.title);
5673
5671
  const message = useAlertFormStore((state) => state.message);
5674
5672
  const image = useAlertFormStore((state) => state.image);
@@ -5679,17 +5677,21 @@ var PreviewStep = () => {
5679
5677
  if (image instanceof File) {
5680
5678
  return globalThis.window.URL.createObjectURL(image);
5681
5679
  }
5680
+ if (typeof image === "string") {
5681
+ return image;
5682
+ }
5682
5683
  return void 0;
5683
5684
  }, [image]);
5684
5685
  (0, import_react18.useEffect)(() => {
5685
5686
  return () => {
5686
- if (imageUrl && globalThis.window !== void 0) {
5687
+ if (globalThis.window !== void 0 && imageUrl && image instanceof File) {
5687
5688
  URL.revokeObjectURL(imageUrl);
5688
5689
  }
5689
5690
  };
5690
- }, [imageUrl]);
5691
+ }, [imageUrl, image]);
5692
+ const finalImageUrl = imageLink || imageUrl || defaultImage || void 0;
5691
5693
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("section", { className: "flex flex-col gap-4", children: /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "bg-background-50 px-5 py-6 flex flex-col items-center gap-4 rounded-xl", children: [
5692
- /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("img", { src: imageUrl || notification_default, alt: title || "Imagem do alerta" }),
5694
+ finalImageUrl && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)("img", { src: finalImageUrl, alt: title || "Imagem do alerta" }),
5693
5695
  /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)("div", { className: "flex flex-col items-center text-center gap-3", children: [
5694
5696
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text_default, { size: "lg", weight: "semibold", children: title || "Nenhum T\xEDtulo de Alerta" }),
5695
5697
  /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Text_default, { size: "sm", weight: "normal", className: "text-text-500", children: message || "Aqui aparecer\xE1 a mensagem do alerta definido pelo usu\xE1rio" })
@@ -5783,7 +5785,9 @@ var StepWrapper = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime28.jsx
5783
5785
  var AlertsManager = ({
5784
5786
  config,
5785
5787
  isOpen = false,
5786
- onClose
5788
+ onClose,
5789
+ imageLink,
5790
+ defaultImage
5787
5791
  }) => {
5788
5792
  const [isModalOpen, setIsModalOpen] = (0, import_react19.useState)(isOpen);
5789
5793
  const [currentStep, setCurrentStep] = (0, import_react19.useState)(0);
@@ -5942,7 +5946,7 @@ var AlertsManager = ({
5942
5946
  }
5943
5947
  ) });
5944
5948
  case 3:
5945
- return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(StepWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PreviewStep, {}) });
5949
+ return /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(StepWrapper, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(PreviewStep, { imageLink, defaultImage }) });
5946
5950
  default:
5947
5951
  return null;
5948
5952
  }
@@ -5953,7 +5957,9 @@ var AlertsManager = ({
5953
5957
  labels,
5954
5958
  behavior,
5955
5959
  handleNext2,
5956
- handlePrevious
5960
+ handlePrevious,
5961
+ imageLink,
5962
+ defaultImage
5957
5963
  ]);
5958
5964
  const isFirstStep = currentStep === 0;
5959
5965
  const isLastStep = currentStep === steps.length - 1;