mitre-actions-widget 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -12
- package/dist/index.cjs +117 -42
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +0 -4
- package/dist/index.d.ts +0 -4
- package/dist/index.js +115 -40
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -43,10 +43,6 @@ import { MitreActionsWidget } from "mitre-actions-widget";
|
|
|
43
43
|
productId={process.env.VITE_PRODUCT_ID!}
|
|
44
44
|
apiUrl={process.env.VITE_REGISTER_LEADS_URL!}
|
|
45
45
|
apiToken={process.env.VITE_REGISTER_LEADS_TOKEN!}
|
|
46
|
-
utm_source="google" //Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
47
|
-
utm_medium="cpc" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
48
|
-
utm_campaign="mitre" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
49
|
-
utm_term="mitre" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
50
46
|
/>;
|
|
51
47
|
```
|
|
52
48
|
|
|
@@ -88,10 +84,6 @@ O `MitreActionsWidget` aceita as seguintes props:
|
|
|
88
84
|
- **`productId`** (string): O ID do produto relacionado ao empreendimento.
|
|
89
85
|
- **`apiUrl`** (string): URL da API para registro dos leads.
|
|
90
86
|
- **`apiToken`** (string): Token de autenticação da API.
|
|
91
|
-
- **`utm_source`** (string): Parâmetro UTM de origem da campanha (ex: `'google'`).
|
|
92
|
-
- **`utm_medium`** (opcional, string): Parâmetro UTM de meio da campanha (ex: `'cpc'`).
|
|
93
|
-
- **`utm_campaign`** (opcional, string): Parâmetro UTM de nome da campanha (ex: `'mitre'`).
|
|
94
|
-
- **`utm_term`** (opcional, string): Parâmetro UTM de termo da campanha (ex: `'mitre'`).
|
|
95
87
|
|
|
96
88
|
---
|
|
97
89
|
|
|
@@ -115,10 +107,6 @@ const MitreActionsWidget = dynamic(
|
|
|
115
107
|
productId={process.env.NEXT_PUBLIC_PRODUCT_ID!}
|
|
116
108
|
apiUrl={process.env.NEXT_PUBLIC_REGISTER_LEADS_URL!}
|
|
117
109
|
apiToken={process.env.NEXT_PUBLIC_REGISTER_LEADS_TOKEN!}
|
|
118
|
-
utm_source="google" //Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
119
|
-
utm_medium="cpc" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
120
|
-
utm_campaign="mitre" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
121
|
-
utm_term="mitre" //[Opcional] Apenas um exemplo. Definir com MKT ou extrair da URL
|
|
122
110
|
/>
|
|
123
111
|
</ErrorBoundary>;
|
|
124
112
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -35,7 +35,7 @@ __export(index_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(index_exports);
|
|
36
36
|
|
|
37
37
|
// src/components/MitreActionsWidget/index.tsx
|
|
38
|
-
var
|
|
38
|
+
var import_react6 = __toESM(require("react"), 1);
|
|
39
39
|
|
|
40
40
|
// src/components/styles/utils.ts
|
|
41
41
|
function flex(direction = "row", alignItems, justifyContent) {
|
|
@@ -245,7 +245,7 @@ var FontLoader = () => {
|
|
|
245
245
|
var global_default = FontLoader;
|
|
246
246
|
|
|
247
247
|
// src/components/Selector/index.tsx
|
|
248
|
-
var
|
|
248
|
+
var import_react5 = require("react");
|
|
249
249
|
|
|
250
250
|
// src/components/hooks/useClickOutside.ts
|
|
251
251
|
var import_react2 = require("react");
|
|
@@ -506,6 +506,95 @@ var Navbar = ({ setCurrentOpen, currentOpen }) => {
|
|
|
506
506
|
};
|
|
507
507
|
var Navbar_default = Navbar;
|
|
508
508
|
|
|
509
|
+
// src/components/TalkWithASeller/index.tsx
|
|
510
|
+
var import_react3 = require("react");
|
|
511
|
+
|
|
512
|
+
// src/components/utils/utm.ts
|
|
513
|
+
var UTM_STORAGE_KEY = "utm_meta";
|
|
514
|
+
var TTL_DAYS = 7;
|
|
515
|
+
var isBrowser = () => typeof window !== "undefined" && typeof document !== "undefined";
|
|
516
|
+
var daysToMs = (days) => days * 24 * 60 * 60 * 1e3;
|
|
517
|
+
function readStoredUtm(maxAgeDays = TTL_DAYS) {
|
|
518
|
+
if (!isBrowser()) return { data: null, isValid: false };
|
|
519
|
+
try {
|
|
520
|
+
const raw = window.localStorage.getItem(UTM_STORAGE_KEY);
|
|
521
|
+
if (!raw) return { data: null, isValid: false };
|
|
522
|
+
const parsed = JSON.parse(raw);
|
|
523
|
+
if (!parsed?.createdAt) return { data: null, isValid: false };
|
|
524
|
+
const age = Date.now() - new Date(parsed.createdAt).getTime();
|
|
525
|
+
const isValid = age <= daysToMs(maxAgeDays);
|
|
526
|
+
return { data: isValid ? parsed : null, isValid };
|
|
527
|
+
} catch {
|
|
528
|
+
return { data: null, isValid: false };
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
function saveUtm(data, now = /* @__PURE__ */ new Date()) {
|
|
532
|
+
if (!isBrowser()) return null;
|
|
533
|
+
const payload = {
|
|
534
|
+
utm_source: data.utm_source || "direto",
|
|
535
|
+
utm_campaign: data.utm_campaign,
|
|
536
|
+
utm_medium: data.utm_medium,
|
|
537
|
+
utm_term: data.utm_term,
|
|
538
|
+
createdAt: now.toISOString()
|
|
539
|
+
};
|
|
540
|
+
try {
|
|
541
|
+
window.localStorage.setItem(UTM_STORAGE_KEY, JSON.stringify(payload));
|
|
542
|
+
} catch {
|
|
543
|
+
}
|
|
544
|
+
return payload;
|
|
545
|
+
}
|
|
546
|
+
function parseUrlUtm(loc) {
|
|
547
|
+
if (!isBrowser()) return {};
|
|
548
|
+
const locationObj = loc || window.location;
|
|
549
|
+
const sp = new URL(locationObj.href).searchParams;
|
|
550
|
+
const utm_source = sp.get("utm_source") || void 0;
|
|
551
|
+
const utm_campaign = sp.get("utm_campaign") || void 0;
|
|
552
|
+
const utm_medium = sp.get("utm_medium") || void 0;
|
|
553
|
+
const utm_term = sp.get("utm_term") || void 0;
|
|
554
|
+
return { utm_source, utm_campaign, utm_medium, utm_term };
|
|
555
|
+
}
|
|
556
|
+
function inferSourceFromReferrer(ref) {
|
|
557
|
+
if (!isBrowser()) return void 0;
|
|
558
|
+
const href = (ref ?? document.referrer ?? "").toLowerCase();
|
|
559
|
+
if (!href) return "direto";
|
|
560
|
+
const hostMatch = href.match(/https?:\/\/([^/]+)/);
|
|
561
|
+
const host = hostMatch?.[1] ?? href;
|
|
562
|
+
if (/google\./.test(host) || /^g\.co$/.test(host) || /^goo\.gl$/.test(host)) return "google";
|
|
563
|
+
if (/(^|\.)facebook\.com$/.test(host) || /(^|\.)m\.facebook\.com$/.test(host) || /(^|\.)fb\.com$/.test(host) || /(^|\.)fb\.me$/.test(host) || /(^|\.)fb\.watch$/.test(host) || /(^|\.)m\.me$/.test(host)) return "facebook";
|
|
564
|
+
if (/(^|\.)instagram\.com$/.test(host) || /(^|\.)l\.instagram\.com$/.test(host) || /(^|\.)instagr\.am$/.test(host) || /^ig\.me$/.test(host)) return "instagram";
|
|
565
|
+
if (/(^|\.)linkedin\.com$/.test(host) || /^lnkd\.in$/.test(host)) return "linkedin";
|
|
566
|
+
if (/^t\.co$/.test(host) || /(^|\.)twitter\.com$/.test(host) || /(^|\.)x\.com$/.test(host)) return "twitter";
|
|
567
|
+
if (/(^|\.)youtube\.com$/.test(host) || /^youtu\.be$/.test(host)) return "youtube";
|
|
568
|
+
if (/(^|\.)mail\.google\.com$/.test(host)) return "email";
|
|
569
|
+
if (/(^|\.)outlook\.live\.com$/.test(host) || /(^|\.)outlook\.office\.com$/.test(host)) return "email";
|
|
570
|
+
if (/^(wa\.me)$/.test(host) || /(^|\.)api\.whatsapp\.com$/.test(host) || /(^|\.)web\.whatsapp\.com$/.test(host)) return "whatsapp";
|
|
571
|
+
if (/^t\.me$/.test(host)) return "telegram";
|
|
572
|
+
if (/(^|\.)tiktok\.com$/.test(host)) return "tiktok";
|
|
573
|
+
return "direto";
|
|
574
|
+
}
|
|
575
|
+
function resolveUtmWithPriority(now = /* @__PURE__ */ new Date(), propOverride) {
|
|
576
|
+
const stored = readStoredUtm();
|
|
577
|
+
if (stored.data) {
|
|
578
|
+
const merged = { ...stored.data, ...propOverride };
|
|
579
|
+
return { data: merged, source: "localStorage" };
|
|
580
|
+
}
|
|
581
|
+
const fromUrl = parseUrlUtm();
|
|
582
|
+
if (fromUrl.utm_source) {
|
|
583
|
+
const saved = saveUtm(fromUrl, now);
|
|
584
|
+
const merged = { ...saved, ...propOverride };
|
|
585
|
+
return { data: merged, source: "url" };
|
|
586
|
+
}
|
|
587
|
+
const utm_source = inferSourceFromReferrer();
|
|
588
|
+
const payload = {
|
|
589
|
+
utm_source: utm_source || "direto",
|
|
590
|
+
utm_campaign: propOverride?.utm_campaign,
|
|
591
|
+
utm_medium: propOverride?.utm_medium,
|
|
592
|
+
utm_term: propOverride?.utm_term,
|
|
593
|
+
createdAt: now.toISOString()
|
|
594
|
+
};
|
|
595
|
+
return { data: payload, source: "referrer" };
|
|
596
|
+
}
|
|
597
|
+
|
|
509
598
|
// src/components/styles.ts
|
|
510
599
|
var import_styled_components5 = __toESM(require("styled-components"), 1);
|
|
511
600
|
var Container2 = import_styled_components5.default.div`
|
|
@@ -620,23 +709,25 @@ var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
|
620
709
|
var TalkWithSeller = ({
|
|
621
710
|
productId,
|
|
622
711
|
apiUrl,
|
|
623
|
-
utm_source,
|
|
624
|
-
utm_medium,
|
|
625
|
-
utm_campaign,
|
|
626
|
-
utm_term,
|
|
627
712
|
setCurrentFormOpen
|
|
628
713
|
}) => {
|
|
714
|
+
const [utm, setUtm] = (0, import_react3.useState)({ utm_source: "direto", createdAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
715
|
+
(0, import_react3.useEffect)(() => {
|
|
716
|
+
if (!isBrowser()) return;
|
|
717
|
+
const { data } = resolveUtmWithPriority(/* @__PURE__ */ new Date());
|
|
718
|
+
setUtm(data);
|
|
719
|
+
}, []);
|
|
629
720
|
const onWhatsClick = async () => {
|
|
630
721
|
try {
|
|
631
|
-
if (!productId
|
|
722
|
+
if (!productId) {
|
|
632
723
|
throw new Error("Missing required parameters");
|
|
633
724
|
}
|
|
634
725
|
const params = new URLSearchParams();
|
|
635
726
|
params.append("id_produto", productId);
|
|
636
|
-
params.append("utm_source", utm_source);
|
|
637
|
-
if (utm_medium) params.append("utm_medium", utm_medium);
|
|
638
|
-
if (utm_campaign) params.append("utm_campaign", utm_campaign);
|
|
639
|
-
if (utm_term) params.append("utm_term", utm_term);
|
|
727
|
+
params.append("utm_source", utm.utm_source);
|
|
728
|
+
if (utm.utm_medium) params.append("utm_medium", utm.utm_medium);
|
|
729
|
+
if (utm.utm_campaign) params.append("utm_campaign", utm.utm_campaign);
|
|
730
|
+
if (utm.utm_term) params.append("utm_term", utm.utm_term);
|
|
640
731
|
params.append("canal", "whatsapp");
|
|
641
732
|
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
642
733
|
openWindowPopup(url);
|
|
@@ -646,15 +737,15 @@ var TalkWithSeller = ({
|
|
|
646
737
|
};
|
|
647
738
|
const onChatClick = async () => {
|
|
648
739
|
try {
|
|
649
|
-
if (!productId
|
|
740
|
+
if (!productId) {
|
|
650
741
|
throw new Error("Missing required parameters");
|
|
651
742
|
}
|
|
652
743
|
const params = new URLSearchParams();
|
|
653
744
|
params.append("id_produto", productId);
|
|
654
|
-
params.append("utm_source", utm_source);
|
|
655
|
-
if (utm_medium) params.append("utm_medium", utm_medium);
|
|
656
|
-
if (utm_campaign) params.append("utm_campaign", utm_campaign);
|
|
657
|
-
if (utm_term) params.append("utm_term", utm_term);
|
|
745
|
+
params.append("utm_source", utm.utm_source);
|
|
746
|
+
if (utm.utm_medium) params.append("utm_medium", utm.utm_medium);
|
|
747
|
+
if (utm.utm_campaign) params.append("utm_campaign", utm.utm_campaign);
|
|
748
|
+
if (utm.utm_term) params.append("utm_term", utm.utm_term);
|
|
658
749
|
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
659
750
|
openWindowPopup(url);
|
|
660
751
|
} catch (error) {
|
|
@@ -690,10 +781,10 @@ var TalkWithSeller = ({
|
|
|
690
781
|
var TalkWithASeller_default = TalkWithSeller;
|
|
691
782
|
|
|
692
783
|
// src/components/hooks/useDeviceType.ts
|
|
693
|
-
var
|
|
784
|
+
var import_react4 = require("react");
|
|
694
785
|
function useDeviceType() {
|
|
695
|
-
const [deviceType, setDeviceType] = (0,
|
|
696
|
-
(0,
|
|
786
|
+
const [deviceType, setDeviceType] = (0, import_react4.useState)("Unknown");
|
|
787
|
+
(0, import_react4.useEffect)(() => {
|
|
697
788
|
const userAgent = navigator.userAgent || navigator.vendor;
|
|
698
789
|
if (/android/i.test(userAgent)) {
|
|
699
790
|
setDeviceType("Android");
|
|
@@ -839,15 +930,11 @@ var Selector = ({
|
|
|
839
930
|
productId,
|
|
840
931
|
apiUrl,
|
|
841
932
|
apiToken,
|
|
842
|
-
utm_source,
|
|
843
|
-
utm_medium,
|
|
844
|
-
utm_campaign,
|
|
845
|
-
utm_term,
|
|
846
933
|
close
|
|
847
934
|
}) => {
|
|
848
|
-
const ref = (0,
|
|
849
|
-
const [currentOpen, setCurrentOpen] = (0,
|
|
850
|
-
const [currentFormOpen, setCurrentFormOpen] = (0,
|
|
935
|
+
const ref = (0, import_react5.useRef)(null);
|
|
936
|
+
const [currentOpen, setCurrentOpen] = (0, import_react5.useState)(0);
|
|
937
|
+
const [currentFormOpen, setCurrentFormOpen] = (0, import_react5.useState)(-1);
|
|
851
938
|
useClickOutside_default(ref, close);
|
|
852
939
|
const tabs = [
|
|
853
940
|
TalkWithASeller_default,
|
|
@@ -893,10 +980,6 @@ var Selector = ({
|
|
|
893
980
|
productId,
|
|
894
981
|
apiUrl,
|
|
895
982
|
apiToken,
|
|
896
|
-
utm_source,
|
|
897
|
-
utm_medium,
|
|
898
|
-
utm_campaign,
|
|
899
|
-
utm_term,
|
|
900
983
|
backgroundColor: "var(--transparent)"
|
|
901
984
|
}
|
|
902
985
|
) }) }) }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
@@ -905,11 +988,7 @@ var Selector = ({
|
|
|
905
988
|
{
|
|
906
989
|
setCurrentFormOpen,
|
|
907
990
|
productId,
|
|
908
|
-
apiUrl
|
|
909
|
-
utm_source,
|
|
910
|
-
utm_medium,
|
|
911
|
-
utm_campaign,
|
|
912
|
-
utm_term
|
|
991
|
+
apiUrl
|
|
913
992
|
}
|
|
914
993
|
) }),
|
|
915
994
|
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(FooterContainer, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
@@ -926,16 +1005,12 @@ var Selector_default = Selector;
|
|
|
926
1005
|
|
|
927
1006
|
// src/components/MitreActionsWidget/index.tsx
|
|
928
1007
|
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
929
|
-
var MitreActionsWidget =
|
|
1008
|
+
var MitreActionsWidget = import_react6.default.forwardRef(({
|
|
930
1009
|
productId,
|
|
931
|
-
utm_source,
|
|
932
|
-
utm_medium,
|
|
933
|
-
utm_campaign,
|
|
934
|
-
utm_term,
|
|
935
1010
|
apiUrl,
|
|
936
1011
|
apiToken
|
|
937
1012
|
}, ref) => {
|
|
938
|
-
const [open, setOpen] = (0,
|
|
1013
|
+
const [open, setOpen] = (0, import_react6.useState)(false);
|
|
939
1014
|
function handleOpen() {
|
|
940
1015
|
setOpen(true);
|
|
941
1016
|
}
|
|
@@ -945,7 +1020,7 @@ var MitreActionsWidget = import_react5.default.forwardRef(({
|
|
|
945
1020
|
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Container, { children: [
|
|
946
1021
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(global_default, {}),
|
|
947
1022
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(GlobalStyles, {}),
|
|
948
|
-
open && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Selector_default, { productId,
|
|
1023
|
+
open && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Selector_default, { productId, apiUrl, apiToken, close: () => close() }),
|
|
949
1024
|
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ButtonContainer, { ref, open, onClick: () => handleOpen(), children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
950
1025
|
"img",
|
|
951
1026
|
{
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/MitreActionsWidget/index.tsx","../src/components/styles/utils.ts","../src/components/MitreActionsWidget/styles.ts","../src/components/styles/global.ts","../src/components/Selector/index.tsx","../src/components/hooks/useClickOutside.ts","../src/components/Selector/styles.ts","../src/components/Navbar/styles.ts","../src/assets/icons.ts","../src/components/Navbar/index.tsx","../src/components/styles.ts","../src/components/utils/windowPopup.ts","../src/components/TalkWithASeller/index.tsx","../src/components/hooks/useDeviceType.ts","../src/components/LeadSupport/index.tsx","../src/components/OtherTopics/index.tsx"],"sourcesContent":["export { default as MitreActionsWidget } from \"./components/MitreActionsWidget\";\nexport type { MitreActionsWidgetProps } from \"./components/MitreActionsWidget\";\n","import React, { useState } from \"react\";\nimport { Container, ButtonContainer } from \"./styles\";\n\nimport FontLoader, { GlobalStyles } from \"../styles/global\";\n\nimport Selector from \"../Selector\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nexport interface MitreActionsWidgetProps {\n productId: string;\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n apiUrl: string;\n apiToken: string;\n}\n\nconst MitreActionsWidget = React.forwardRef<HTMLDivElement, MitreActionsWidgetProps> (({\n productId,\n utm_source,\n utm_medium,\n utm_campaign,\n utm_term, \n apiUrl, \n apiToken \n}, ref) => { \n const [ open, setOpen ] = useState(false);\n\n function handleOpen() {\n setOpen(true);\n }\n\n function close() {\n setOpen(false);\n }\n\n return (\n <Container>\n <FontLoader />\n <GlobalStyles />\n {open && <Selector productId={ productId } utm_source={utm_source} utm_medium={utm_medium} utm_campaign={utm_campaign} utm_term={utm_term} apiUrl={ apiUrl } apiToken={ apiToken } close={ () => close()}/>}\n <ButtonContainer ref={ref} open={ open } onClick={() => handleOpen()}>\n <img\n src={iconMap[\"balloon\"]}\n height={ 32 }\n width={ 32 } \n alt=\"Balão com mais opções\"\n draggable={ false }\n />\n </ButtonContainer> \n\n </Container>\n )\n});\n\nMitreActionsWidget.displayName = \"MitreActionsWidget\";\n\nexport default MitreActionsWidget;","type directionType = \"column\" | \"row\";\ntype alignItemsType = \"center\" | \"flex-start\";\n\ntype jutifyContentType = \"center\" | \"space-between\";\n\nexport function flex(\n direction: directionType = \"row\",\n alignItems?: alignItemsType,\n justifyContent?: jutifyContentType\n) {\n return `\n align-items:${alignItems || null};\n display:flex;\n flex-direction:${direction};\n justify-content:${justifyContent || null};\n `;\n}\n\nexport const alignX = `\n left:50%;\n transform:translateX(-50%);\n`;\n\nexport const alignXAndY = `\n left:50%;\n top:50%;\n transform:translate(-50%, -50%);\n`;\n\nexport const darkEffect = `\n &:hover {\n cursor:pointer;\n filter:brightness(98%);\n }\n\n &:active {\n filter:brightness(95%);\n }\n`;\n\nexport const opacityEffect = `\n &:hover {\n cursor:pointer;\n opacity:.9;\n }\n\n &:active {\n opacity:.7;\n }\n`;\n\nexport const modalZIndex = 9999;\n\nexport const breakpoints = {\n tablet: \"1024px\",\n};\n","import { flex, darkEffect, breakpoints } from \"../styles/utils\";\n\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n background-color: var(--green-2);\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n","import { useEffect } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nexport const GlobalStyles = createGlobalStyle`\n :root {\n --red: #e52e4d;\n --white: #FFF;\n --black: #2F2F2F;\n --black-2:#1E1E1E;\n --alphaBlack: #000000;\n --black-2:#1E1E1E;\n --black-3:#353535;\n\n --yellow-400:#FFD789;\n --yellow-500: #F6C76B;\n --gray-40:#F0F0F0;\n --gray-45:#767676;\n --gray-50: #686A69;\n --gray-60: #8F8F8F;\n --gray-100: #B6B6B6;\n --gray-150: #B9B9B9;\n --gray-200: #D2D2D2;\n --gray-300: #EBEBEB;\n --gray-400: #ECECEC;\n --gray-500: #F4F4F4;\n --gray-550:#6F6F6F;\n --gray-600:#686868;\n --gray-700: #535353;\n --gray-800:#9D9D9D;\n --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);\n --green:#57C06E;\n --green-2:#2DCE68;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html {\n scroll-behavior: smooth;\n\n @media (max-width: 1080px) {\n font-size: 93.75%;\n }\n @media (max-width: 720px) {\n font-size: 87.5%;\n }\n }\n\n body {\n background: var(--white);\n -webkit-font-smoothing: antialiased;\n }\n\n body, input, textarea, select, button {\n font-family: \"Montserrat\", sans-serif;\n font-weight: 400;\n } \n\n h1, h2, h3, h4, h5, h6, strong {\n font-weight: 600;\n }\n\n button {\n cursor: pointer;\n }\n\n [disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .hidden {\n overflow: hidden;\n }\n\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n background: var(--gray-500);\n width: 6px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--gray-50);\n }\n\n .aligncenter {\n text-align: center;\n }\n\n .width-190px {\n width:190px;\n }\n\n .hidden-content {\n display:none !important;\n }\n\n .global-margin-bottom {\n margin-bottom:20px;\n }\n\n .background-light-gray {\n background:#F4F4F4;\n }\n\n .full-width-and-height {\n height:100%;\n width:100%;\n }\n\n .flex-direction-column {\n flex-direction:column;\n }\n\n .bold {\n font-weight:700;\n }\n\n .margin-center-x {\n margin:0 auto;\n }\n\n .border-none {\n border:none;\n }\n\n .text-center {\n text-align:center;\n }\n\n .relative {\n position:relative;\n }\n`;\n\nconst FontLoader: React.FC = () => {\n useEffect(() => {\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n }, []);\n\n return null;\n};\n\nexport default FontLoader;\n","import { useRef, useState } from \"react\";\n\nimport useClickOutside from \"../hooks/useClickOutside\";\n\nimport { \n HeaderContainer, \n ContentContainer, \n FormContainer, \n SelectorContainer, \n FooterContainer,\n FormErrorContainer,\n TextError\n} from \"./styles\";\n\nimport { HiX, HiArrowNarrowLeft, HiOutlineExclamation } from 'react-icons/hi';\n\nimport Navbar from \"../Navbar\";\n\nimport TalkWithSeller from \"../TalkWithASeller\";\nimport LeadSupport from \"../LeadSupport\";\nimport OtherTopics from \"../OtherTopics\";\n\nimport { MitreFormComponent } from 'mitre-form-component'\n\nimport { ErrorBoundary } from 'react-error-boundary';\n\ntype Props = {\n productId: string,\n apiUrl: string,\n apiToken: string,\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n close:() => void;\n}\n\nconst Selector = ({ \n productId, \n apiUrl, \n apiToken, \n utm_source, \n utm_medium, \n utm_campaign,\n utm_term,\n close \n}:Props) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const [ currentOpen, setCurrentOpen ] = useState(0);\n\n const [ currentFormOpen, setCurrentFormOpen ] = useState(-1);\n\n useClickOutside(ref, close);\n\n const tabs = [\n TalkWithSeller,\n LeadSupport,\n OtherTopics\n ];\n\n const DefaultComponent = () => <></>;\n\n const CurrentComponent = tabs[currentOpen] || DefaultComponent;\n\n return (\n <SelectorContainer ref={ ref }>\n\n <HeaderContainer>\n <HiArrowNarrowLeft \n className=\"back-icon\" \n onClick={ () => setCurrentFormOpen(-1) }\n size={ 28 }\n visibility={ currentFormOpen >= 0 ? \"visible\" : \"hidden\" }\n color={ \"var(--black)\" }\n />\n\n <HiX \n className=\"close-icon\" \n onClick={ close }\n size={ 28 }\n color={ \"var(--black)\" }\n />\n </HeaderContainer>\n\n { currentFormOpen >= 0 ?\n <>\n <FormContainer>\n <ErrorBoundary fallback={\n <FormErrorContainer>\n <HiOutlineExclamation \n size={ 28 }\n color={ \"var(--red)\" }\n />\n <TextError>Ocorreu um erro ao carregar o formulário!</TextError>\n </FormErrorContainer>\n }>\n <MitreFormComponent \n productId={ productId }\n apiUrl={ apiUrl }\n apiToken={ apiToken }\n utm_source={ utm_source }\n utm_medium={ utm_medium }\n utm_campaign={ utm_campaign }\n utm_term={ utm_term }\n backgroundColor=\"var(--transparent)\"\n />\n </ErrorBoundary>\n </FormContainer>\n </>\n : \n <>\n <ContentContainer>\n <CurrentComponent \n setCurrentFormOpen={setCurrentFormOpen}\n productId={ productId }\n apiUrl={ apiUrl }\n utm_source={ utm_source }\n utm_medium={ utm_medium }\n utm_campaign={ utm_campaign }\n utm_term={ utm_term }\n />\n </ContentContainer>\n\n <FooterContainer>\n <Navbar \n currentOpen={ currentOpen } \n setCurrentOpen={ setCurrentOpen }\n />\n </FooterContainer>\n </>\n }\n \n </SelectorContainer>\n );\n}\n\nexport default Selector;","import { useEffect } from \"react\";\n\nfunction useClickOutside(\n ref: React.RefObject<HTMLElement | null>,\n methodToRunWhenClickOutside: (e?: MouseEvent) => void,\n exemptedIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n // Explicit null check (TypeScript will now understand ref.current could be null)\n if (!ref.current) return;\n\n const isClickOutside = !ref.current.contains(event.target as Node);\n\n // Check if the clicked element or any of its ancestors have an exempted ID\n const isAnElementAllowedToClose = exemptedIds.some((id) => {\n let element = event.target as HTMLElement | null;\n while (element) {\n if (element.id === id) {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n });\n\n // Only run the method if the click is outside and not exempted\n if (isClickOutside && !isAnElementAllowedToClose) {\n methodToRunWhenClickOutside(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, methodToRunWhenClickOutside, exemptedIds]);\n}\n\nexport default useClickOutside;\n","import { flex, opacityEffect, breakpoints } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const HeaderContainer = styled.div`\n position: relative;\n width: 100%;\n height: 52px;\n padding-top: 20px;\n padding-bottom: 8px;\n padding-left: 20px;\n padding-right: 20px;\n\n justify-content: space-between;\n align-items: center;\n display: flex;\n\n .close-icon {\n ${opacityEffect}\n color: var(--black-100);\n }\n\n .back-icon {\n ${opacityEffect}\n }\n`;\n\nexport const ContentContainer = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n\n /* Optional: Add padding to prevent content from touching edges */\n padding-left: 20px;\n padding-right: 20px;\n padding-bottom: 10px;\n padding-top: 10px;\n`;\n\nexport const FormContainer = styled.div`\n ${flex(\"column\")}\n overflow-x: hidden;\n overflow-y: auto;\n height: 100%;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n`;\n\nexport const SelectorContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 85vh;\n margin-bottom: 8px;\n max-height: 660px;\n position: relative;\n background: var(--gray-300);\n border-radius: 8px;\n\n @media (max-width: ${breakpoints.tablet}) {\n height: 100%;\n width: 100%;\n max-height: 100%;\n border-radius: 0px;\n position: fixed;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 50;\n padding-bottom: env(safe-area-inset-bottom);\n }\n`;\n\nexport const FooterContainer = styled.div`\n height: 90px;\n width: 100%;\n`;\n\nexport const FormErrorContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n background: var(--white);\n border-radius: 8px;\n border: none;\n`;\n\nexport const TextError = styled.h3`\n color: var(--red);\n text-align: center;\n padding-top: 10px;\n`;\n","import { flex, opacityEffect } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const NavContainer = styled.nav`\n ${flex(\"row\")}\n gap:10px;\n position: absolute;\n left: 15px;\n right: 15px;\n bottom: 10px;\n\n button {\n ${flex(\"column\", \"center\")}\n ${opacityEffect}\n background: black;\n border-radius: 10px;\n border: none;\n color: white;\n font-size: 11px;\n gap: 5px;\n padding: 10px 5px;\n width: 33%;\n\n &.active {\n background: var(--yellow-500);\n color: black;\n font-weight: 700;\n\n img,\n svg {\n filter: initial;\n }\n }\n\n img,\n svg {\n filter: invert(100%);\n }\n }\n`;\n","import apple_mac from \"./images/apple-mac.svg\";\nimport balloon from \"./images/balloon.svg\";\nimport chat from \"./images/chat.svg\";\nimport google_play_store from \"./images/google-play-store.svg\";\nimport house_with_hand from \"./images/house-with-hand.svg\";\nimport mala from \"./images/mala.svg\";\nimport message from \"./images/message.svg\";\nimport person from \"./images/person.svg\";\nimport question_mark_circle from \"./images/question-mark-circle.svg\";\nimport shake_hands from \"./images/shake-hands.svg\";\nimport star from \"./images/star.svg\";\nimport whatsapp from \"./images/whatsapp.svg\";\n\nexport const iconMap: Record<string, string> = {\n apple_mac,\n balloon,\n chat,\n google_play_store,\n house_with_hand,\n mala,\n message,\n person,\n question_mark_circle,\n shake_hands,\n star,\n whatsapp,\n};\n","import { NavContainer } from \"./styles\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n currentOpen:number;\n setCurrentOpen:Dispatch<number>;\n}\n\nconst Navbar = ({ setCurrentOpen, currentOpen }:Props) => {\n\n const itens = [\n { name:\"Converse com um corretor\", icon:\"house_with_hand\" },\n { name:\"Atendimento ao cliente\", icon:\"person\" },\n { name:\"Outros assuntos\", icon:\"question_mark_circle\" }\n ]\n\n return (\n <NavContainer>\n \n { itens.map((tab, index) => (\n <button \n className={index === currentOpen ? \"active\" : \"\" } \n key={ tab.name } \n onClick={ () => setCurrentOpen(index) }\n >\n <img\n alt={ tab.name }\n height={ 20 }\n src={iconMap[tab.icon!]}\n width={ 20 }\n />\n { tab.name }\n </button>\n ))}\n\n </NavContainer>\n )\n}\n\nexport default Navbar","import { darkEffect, flex, breakpoints } from \"./styles/utils\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n\nexport const Title = styled.h2<{ $textColor?: string }>`\n font-size: 1.25rem;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const Text = styled.p<{ $textColor?: string }>`\n font-size: 1rem;\n font-weight: 400;\n line-height: 23px;\n letter-spacing: 0em;\n margin-top: 10px;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const SelectorOptionsContainer = styled.div`\n ${flex(\"column\")}\n gap: 10px;\n padding: 20px 0;\n\n a {\n text-decoration: none;\n }\n\n button {\n border: none;\n border-radius: 8px;\n background: transparent;\n }\n`;\n\nexport const SelectorOption = styled.div`\n ${flex(\"row\", \"center\", \"space-between\")}\n ${darkEffect}\n background: var(--white);\n color: black;\n border-radius: 8px;\n padding: 12px;\n width: 100%;\n\n h3 {\n font-size: 0.81rem;\n font-weight: 700;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-bottom: 10px;\n margin-right: 10px;\n }\n\n p {\n font-size: 0.75rem;\n font-weight: 300;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-right: 10px;\n }\n`;\n","export const openWindowPopup = (url: string) => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft =\n window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop =\n window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const w = 674;\n const h = 540;\n const left = (width - w) / 2 / systemZoom + dualScreenLeft;\n const top = (height - h) / 2 / systemZoom + dualScreenTop;\n\n window.open(\n url,\n `mitre-window`,\n `width=${w / systemZoom}, \n height=${h / systemZoom}, \n top=${top}, \n left=${left}, \n status=no, \n toolbar=no, \n location=no, \n menubar=no, \n resizable=no, \n fullscreen=no`\n );\n};\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { openWindowPopup } from \"../utils/windowPopup\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n productId: string;\n apiUrl :string,\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n setCurrentFormOpen:Dispatch<number>;\n}\n\nconst TalkWithSeller = ({ \n productId, \n apiUrl, \n utm_source,\n utm_medium,\n utm_campaign,\n utm_term,\n setCurrentFormOpen \n} : Props) => {\n const onWhatsClick = async () => {\n try {\n if (!productId || !utm_source) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm_source);\n \n if (utm_medium) params.append('utm_medium', utm_medium);\n if (utm_campaign) params.append('utm_campaign', utm_campaign);\n if (utm_term) params.append('utm_term', utm_term);\n\n params.append('canal', 'whatsapp');\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onWhatsClick:\", error);\n }\n };\n\n const onChatClick = async () => {\n try {\n if (!productId || !utm_source) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm_source);\n \n if (utm_medium) params.append('utm_medium', utm_medium);\n if (utm_campaign) params.append('utm_campaign', utm_campaign);\n if (utm_term) params.append('utm_term', utm_term);\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onChatClick:\", error);\n }\n };\n\n const itens = [\n { title:\"Atendimento por Whatsapp\", text:\"Canal exclusivo para vendas\", onClick:() => onWhatsClick(), icon:\"whatsapp\" },\n { title:\"Atendimento por chat\", text:\"Canal exclusivo para vendas\", onClick:() => onChatClick(), icon:\"chat\" },\n { title:\"Atendimento por mensagem\", text:\"Canal exclusivo para vendas\", onClick:() => setCurrentFormOpen(0), icon:\"message\" },\n ];\n\n return (\n <div>\n\n <Title>\n Converse com um corretor\n </Title>\n\n <Text>\n Selecione uma opção de contato a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((value) => (\n <button key={ value.title } onClick={ value.onClick }>\n <SelectorOption >\n <div>\n <h3>{value.title}</h3>\n <p>{value.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[value.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </button>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default TalkWithSeller\n","import { useEffect, useState } from \"react\";\n\ntype DeviceType = \"Android\" | \"iPhone\" | \"Unknown\";\n\nexport function useDeviceType(): DeviceType {\n const [deviceType, setDeviceType] = useState<DeviceType>(\"Unknown\");\n\n useEffect(() => {\n const userAgent = navigator.userAgent || navigator.vendor;\n\n if (/android/i.test(userAgent)) {\n setDeviceType(\"Android\");\n } else if (/iPad|iPhone|iPod/.test(userAgent)) {\n setDeviceType(\"iPhone\");\n } else {\n setDeviceType(\"Unknown\");\n }\n }, []);\n\n return deviceType;\n}\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { useDeviceType } from \"../hooks/useDeviceType\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Client = () => {\n const device = useDeviceType()\n const mobileLink = device === \"Android\" ? \"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" : \"https://apps.apple.com/br/app/mitre-experience/id1543244752\";\n const mobileIcon = device === \"Android\" ? \"google-play-store\" : \"apple-mac\";\n const mobileMessage = device === \"Android\" ? \"Encontre nosso app na Google Play Store\" : \"Encontre nosso app na App Store\";\n\n const items = [\n { title:\"Atendimento ao Cliente Mitre\", text:\"Acesso ao portal do cliente\", icon:\"person\", link:\"https://portal.mitrerealty.com.br/Clientes/\", },\n { title:\"Baixe o Aplicativo Mitre Experience\", text:mobileMessage, icon:mobileIcon, link:mobileLink },\n ];\n\n const mobileItems = [\n { title:\"Baixe o Aplicativo Mitre Experience no Android\", text:\"Encontre nosso app na Google Play Store\", icon:\"google_play_store\", link:\"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" },\n { title:\"Baixe o Aplicativo Mitre Experience no IOS\", text:\"Encontre nosso app na App Store\", icon:\"apple_mac\", link:\"https://apps.apple.com/br/app/mitre-experience/id1543244752\" }\n ];\n\n function isInMobileItemButInDesktop(index:number) {\n const itemIndex = 1;\n return index === itemIndex && device === \"Unknown\";\n }\n\n return (\n <div>\n\n <Title>\n Central de Relacionamento\n </Title>\n\n <Text>\n <>\n Já é cliente Mitre Reality? Precisa falar conosco?\n <br/><br/>\n Acesse o Portal do Cliente para enviar sua solicitação à nossa Central de Relacionamento: \n </>\n </Text>\n\n <SelectorOptionsContainer>\n <>\n { items.map((item, index) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n style={isInMobileItemButInDesktop(index) ? { display:\"none\" } : {}}\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n\n { device === \"Unknown\" &&\n mobileItems.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))\n }\n\n </>\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Client;\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Other = () => {\n const itens = [\n { title:\"Trabalhe conosco\", text:\"Canal exclusivo para vagas\", icon:\"mala\", link:`https://mitrerealty.gupy.io/` },\n { title:\"Fornecedores\", text:\"Seja um fornecedor da Mitre\", icon:\"shake_hands\", link:`https://www.mitrerealty.com.br/fornecedores` },\n { title:\"Seja um Parceiro Mitre\", text:\"Seja um corretor ou imobiliária parceira da Mitre.\", icon:\"star\", link:`https://www.mitrerealty.com.br/seja-parceiro-mitre` },\n { title:\"Outros assuntos\", text:\"Entre em contato com a Mitre\", icon:\"question_mark_circle\", link:`https://www.mitrerealty.com.br/contato` }\n ];\n\n return (\n <div>\n\n <Title>\n Outros assuntos\n </Title>\n\n <Text>\n Selecione uma das opções a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption >\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={ iconMap[item.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Other; "],"mappings":"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","names":["import_react","styled","import_styled_components","import_react","import_react","import_styled_components","styled","import_styled_components","styled","import_styled_components","Container","styled","ButtonContainer","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/MitreActionsWidget/index.tsx","../src/components/styles/utils.ts","../src/components/MitreActionsWidget/styles.ts","../src/components/styles/global.ts","../src/components/Selector/index.tsx","../src/components/hooks/useClickOutside.ts","../src/components/Selector/styles.ts","../src/components/Navbar/styles.ts","../src/assets/icons.ts","../src/components/Navbar/index.tsx","../src/components/TalkWithASeller/index.tsx","../src/components/utils/utm.ts","../src/components/styles.ts","../src/components/utils/windowPopup.ts","../src/components/hooks/useDeviceType.ts","../src/components/LeadSupport/index.tsx","../src/components/OtherTopics/index.tsx"],"sourcesContent":["export { default as MitreActionsWidget } from \"./components/MitreActionsWidget\";\nexport type { MitreActionsWidgetProps } from \"./components/MitreActionsWidget\";\n","import React, { useState } from \"react\";\nimport { Container, ButtonContainer } from \"./styles\";\n\nimport FontLoader, { GlobalStyles } from \"../styles/global\";\n\nimport Selector from \"../Selector\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nexport interface MitreActionsWidgetProps {\n productId: string;\n apiUrl: string;\n apiToken: string;\n}\n\nconst MitreActionsWidget = React.forwardRef<HTMLDivElement, MitreActionsWidgetProps>(({\n productId,\n apiUrl,\n apiToken\n}, ref) => {\n const [open, setOpen] = useState(false);\n\n function handleOpen() {\n setOpen(true);\n }\n\n function close() {\n setOpen(false);\n }\n\n return (\n <Container>\n <FontLoader />\n <GlobalStyles />\n {open && <Selector productId={productId} apiUrl={apiUrl} apiToken={apiToken} close={() => close()} />}\n <ButtonContainer ref={ref} open={open} onClick={() => handleOpen()}>\n <img\n src={iconMap[\"balloon\"]}\n height={32}\n width={32}\n alt=\"Balão com mais opções\"\n draggable={false}\n />\n </ButtonContainer>\n\n </Container>\n )\n});\n\nMitreActionsWidget.displayName = \"MitreActionsWidget\";\n\nexport default MitreActionsWidget;","type directionType = \"column\" | \"row\";\ntype alignItemsType = \"center\" | \"flex-start\";\n\ntype jutifyContentType = \"center\" | \"space-between\";\n\nexport function flex(\n direction: directionType = \"row\",\n alignItems?: alignItemsType,\n justifyContent?: jutifyContentType\n) {\n return `\n align-items:${alignItems || null};\n display:flex;\n flex-direction:${direction};\n justify-content:${justifyContent || null};\n `;\n}\n\nexport const alignX = `\n left:50%;\n transform:translateX(-50%);\n`;\n\nexport const alignXAndY = `\n left:50%;\n top:50%;\n transform:translate(-50%, -50%);\n`;\n\nexport const darkEffect = `\n &:hover {\n cursor:pointer;\n filter:brightness(98%);\n }\n\n &:active {\n filter:brightness(95%);\n }\n`;\n\nexport const opacityEffect = `\n &:hover {\n cursor:pointer;\n opacity:.9;\n }\n\n &:active {\n opacity:.7;\n }\n`;\n\nexport const modalZIndex = 9999;\n\nexport const breakpoints = {\n tablet: \"1024px\",\n};\n","import { flex, darkEffect, breakpoints } from \"../styles/utils\";\n\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n background-color: var(--green-2);\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n","import { useEffect } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nexport const GlobalStyles = createGlobalStyle`\n :root {\n --red: #e52e4d;\n --white: #FFF;\n --black: #2F2F2F;\n --black-2:#1E1E1E;\n --alphaBlack: #000000;\n --black-2:#1E1E1E;\n --black-3:#353535;\n\n --yellow-400:#FFD789;\n --yellow-500: #F6C76B;\n --gray-40:#F0F0F0;\n --gray-45:#767676;\n --gray-50: #686A69;\n --gray-60: #8F8F8F;\n --gray-100: #B6B6B6;\n --gray-150: #B9B9B9;\n --gray-200: #D2D2D2;\n --gray-300: #EBEBEB;\n --gray-400: #ECECEC;\n --gray-500: #F4F4F4;\n --gray-550:#6F6F6F;\n --gray-600:#686868;\n --gray-700: #535353;\n --gray-800:#9D9D9D;\n --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);\n --green:#57C06E;\n --green-2:#2DCE68;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html {\n scroll-behavior: smooth;\n\n @media (max-width: 1080px) {\n font-size: 93.75%;\n }\n @media (max-width: 720px) {\n font-size: 87.5%;\n }\n }\n\n body {\n background: var(--white);\n -webkit-font-smoothing: antialiased;\n }\n\n body, input, textarea, select, button {\n font-family: \"Montserrat\", sans-serif;\n font-weight: 400;\n } \n\n h1, h2, h3, h4, h5, h6, strong {\n font-weight: 600;\n }\n\n button {\n cursor: pointer;\n }\n\n [disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .hidden {\n overflow: hidden;\n }\n\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n background: var(--gray-500);\n width: 6px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--gray-50);\n }\n\n .aligncenter {\n text-align: center;\n }\n\n .width-190px {\n width:190px;\n }\n\n .hidden-content {\n display:none !important;\n }\n\n .global-margin-bottom {\n margin-bottom:20px;\n }\n\n .background-light-gray {\n background:#F4F4F4;\n }\n\n .full-width-and-height {\n height:100%;\n width:100%;\n }\n\n .flex-direction-column {\n flex-direction:column;\n }\n\n .bold {\n font-weight:700;\n }\n\n .margin-center-x {\n margin:0 auto;\n }\n\n .border-none {\n border:none;\n }\n\n .text-center {\n text-align:center;\n }\n\n .relative {\n position:relative;\n }\n`;\n\nconst FontLoader: React.FC = () => {\n useEffect(() => {\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n }, []);\n\n return null;\n};\n\nexport default FontLoader;\n","import { useRef, useState } from \"react\";\n\nimport useClickOutside from \"../hooks/useClickOutside\";\n\nimport {\n HeaderContainer,\n ContentContainer,\n FormContainer,\n SelectorContainer,\n FooterContainer,\n FormErrorContainer,\n TextError\n} from \"./styles\";\n\nimport { HiX, HiArrowNarrowLeft, HiOutlineExclamation } from 'react-icons/hi';\n\nimport Navbar from \"../Navbar\";\n\nimport TalkWithSeller from \"../TalkWithASeller\";\nimport LeadSupport from \"../LeadSupport\";\nimport OtherTopics from \"../OtherTopics\";\n\nimport { MitreFormComponent } from 'mitre-form-component'\n\nimport { ErrorBoundary } from 'react-error-boundary';\n\ntype Props = {\n productId: string,\n apiUrl: string,\n apiToken: string,\n close: () => void;\n}\n\nconst Selector = ({\n productId,\n apiUrl,\n apiToken,\n close\n}: Props) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const [currentOpen, setCurrentOpen] = useState(0);\n\n const [currentFormOpen, setCurrentFormOpen] = useState(-1);\n\n useClickOutside(ref, close);\n\n const tabs = [\n TalkWithSeller,\n LeadSupport,\n OtherTopics\n ];\n\n const DefaultComponent = () => <></>;\n\n const CurrentComponent = tabs[currentOpen] || DefaultComponent;\n\n return (\n <SelectorContainer ref={ref}>\n\n <HeaderContainer>\n <HiArrowNarrowLeft\n className=\"back-icon\"\n onClick={() => setCurrentFormOpen(-1)}\n size={28}\n visibility={currentFormOpen >= 0 ? \"visible\" : \"hidden\"}\n color={\"var(--black)\"}\n />\n\n <HiX\n className=\"close-icon\"\n onClick={close}\n size={28}\n color={\"var(--black)\"}\n />\n </HeaderContainer>\n\n {currentFormOpen >= 0 ?\n <>\n <FormContainer>\n <ErrorBoundary fallback={\n <FormErrorContainer>\n <HiOutlineExclamation\n size={28}\n color={\"var(--red)\"}\n />\n <TextError>Ocorreu um erro ao carregar o formulário!</TextError>\n </FormErrorContainer>\n }>\n <MitreFormComponent\n productId={productId}\n apiUrl={apiUrl}\n apiToken={apiToken}\n backgroundColor=\"var(--transparent)\"\n />\n </ErrorBoundary>\n </FormContainer>\n </>\n :\n <>\n <ContentContainer>\n <CurrentComponent\n setCurrentFormOpen={setCurrentFormOpen}\n productId={productId}\n apiUrl={apiUrl}\n />\n </ContentContainer>\n\n <FooterContainer>\n <Navbar\n currentOpen={currentOpen}\n setCurrentOpen={setCurrentOpen}\n />\n </FooterContainer>\n </>\n }\n\n </SelectorContainer>\n );\n}\n\nexport default Selector;","import { useEffect } from \"react\";\n\nfunction useClickOutside(\n ref: React.RefObject<HTMLElement | null>,\n methodToRunWhenClickOutside: (e?: MouseEvent) => void,\n exemptedIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n // Explicit null check (TypeScript will now understand ref.current could be null)\n if (!ref.current) return;\n\n const isClickOutside = !ref.current.contains(event.target as Node);\n\n // Check if the clicked element or any of its ancestors have an exempted ID\n const isAnElementAllowedToClose = exemptedIds.some((id) => {\n let element = event.target as HTMLElement | null;\n while (element) {\n if (element.id === id) {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n });\n\n // Only run the method if the click is outside and not exempted\n if (isClickOutside && !isAnElementAllowedToClose) {\n methodToRunWhenClickOutside(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, methodToRunWhenClickOutside, exemptedIds]);\n}\n\nexport default useClickOutside;\n","import { flex, opacityEffect, breakpoints } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const HeaderContainer = styled.div`\n position: relative;\n width: 100%;\n height: 52px;\n padding-top: 20px;\n padding-bottom: 8px;\n padding-left: 20px;\n padding-right: 20px;\n\n justify-content: space-between;\n align-items: center;\n display: flex;\n\n .close-icon {\n ${opacityEffect}\n color: var(--black-100);\n }\n\n .back-icon {\n ${opacityEffect}\n }\n`;\n\nexport const ContentContainer = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n\n /* Optional: Add padding to prevent content from touching edges */\n padding-left: 20px;\n padding-right: 20px;\n padding-bottom: 10px;\n padding-top: 10px;\n`;\n\nexport const FormContainer = styled.div`\n ${flex(\"column\")}\n overflow-x: hidden;\n overflow-y: auto;\n height: 100%;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n`;\n\nexport const SelectorContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 85vh;\n margin-bottom: 8px;\n max-height: 660px;\n position: relative;\n background: var(--gray-300);\n border-radius: 8px;\n\n @media (max-width: ${breakpoints.tablet}) {\n height: 100%;\n width: 100%;\n max-height: 100%;\n border-radius: 0px;\n position: fixed;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 50;\n padding-bottom: env(safe-area-inset-bottom);\n }\n`;\n\nexport const FooterContainer = styled.div`\n height: 90px;\n width: 100%;\n`;\n\nexport const FormErrorContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n background: var(--white);\n border-radius: 8px;\n border: none;\n`;\n\nexport const TextError = styled.h3`\n color: var(--red);\n text-align: center;\n padding-top: 10px;\n`;\n","import { flex, opacityEffect } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const NavContainer = styled.nav`\n ${flex(\"row\")}\n gap:10px;\n position: absolute;\n left: 15px;\n right: 15px;\n bottom: 10px;\n\n button {\n ${flex(\"column\", \"center\")}\n ${opacityEffect}\n background: black;\n border-radius: 10px;\n border: none;\n color: white;\n font-size: 11px;\n gap: 5px;\n padding: 10px 5px;\n width: 33%;\n\n &.active {\n background: var(--yellow-500);\n color: black;\n font-weight: 700;\n\n img,\n svg {\n filter: initial;\n }\n }\n\n img,\n svg {\n filter: invert(100%);\n }\n }\n`;\n","import apple_mac from \"./images/apple-mac.svg\";\nimport balloon from \"./images/balloon.svg\";\nimport chat from \"./images/chat.svg\";\nimport google_play_store from \"./images/google-play-store.svg\";\nimport house_with_hand from \"./images/house-with-hand.svg\";\nimport mala from \"./images/mala.svg\";\nimport message from \"./images/message.svg\";\nimport person from \"./images/person.svg\";\nimport question_mark_circle from \"./images/question-mark-circle.svg\";\nimport shake_hands from \"./images/shake-hands.svg\";\nimport star from \"./images/star.svg\";\nimport whatsapp from \"./images/whatsapp.svg\";\n\nexport const iconMap: Record<string, string> = {\n apple_mac,\n balloon,\n chat,\n google_play_store,\n house_with_hand,\n mala,\n message,\n person,\n question_mark_circle,\n shake_hands,\n star,\n whatsapp,\n};\n","import { NavContainer } from \"./styles\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n currentOpen:number;\n setCurrentOpen:Dispatch<number>;\n}\n\nconst Navbar = ({ setCurrentOpen, currentOpen }:Props) => {\n\n const itens = [\n { name:\"Converse com um corretor\", icon:\"house_with_hand\" },\n { name:\"Atendimento ao cliente\", icon:\"person\" },\n { name:\"Outros assuntos\", icon:\"question_mark_circle\" }\n ]\n\n return (\n <NavContainer>\n \n { itens.map((tab, index) => (\n <button \n className={index === currentOpen ? \"active\" : \"\" } \n key={ tab.name } \n onClick={ () => setCurrentOpen(index) }\n >\n <img\n alt={ tab.name }\n height={ 20 }\n src={iconMap[tab.icon!]}\n width={ 20 }\n />\n { tab.name }\n </button>\n ))}\n\n </NavContainer>\n )\n}\n\nexport default Navbar","import { Dispatch, useEffect, useState } from \"react\";\nimport { UTM, isBrowser, resolveUtmWithPriority } from \"../utils/utm\";\nimport { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { openWindowPopup } from \"../utils/windowPopup\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n productId: string;\n apiUrl: string,\n setCurrentFormOpen: Dispatch<number>;\n}\n\nconst TalkWithSeller = ({\n productId,\n apiUrl,\n setCurrentFormOpen\n}: Props) => {\n const [utm, setUtm] = useState<UTM>({ utm_source: 'direto', createdAt: new Date().toISOString() });\n\n useEffect(() => {\n if (!isBrowser()) return;\n const { data } = resolveUtmWithPriority(new Date());\n setUtm(data);\n }, []);\n\n const onWhatsClick = async () => {\n try {\n if (!productId) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm.utm_source);\n if (utm.utm_medium) params.append('utm_medium', utm.utm_medium);\n if (utm.utm_campaign) params.append('utm_campaign', utm.utm_campaign);\n if (utm.utm_term) params.append('utm_term', utm.utm_term);\n params.append('canal', 'whatsapp');\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onWhatsClick:\", error);\n }\n };\n\n const onChatClick = async () => {\n try {\n if (!productId) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm.utm_source);\n if (utm.utm_medium) params.append('utm_medium', utm.utm_medium);\n if (utm.utm_campaign) params.append('utm_campaign', utm.utm_campaign);\n if (utm.utm_term) params.append('utm_term', utm.utm_term);\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onChatClick:\", error);\n }\n };\n\n const itens = [\n { title: \"Atendimento por Whatsapp\", text: \"Canal exclusivo para vendas\", onClick: () => onWhatsClick(), icon: \"whatsapp\" },\n { title: \"Atendimento por chat\", text: \"Canal exclusivo para vendas\", onClick: () => onChatClick(), icon: \"chat\" },\n { title: \"Atendimento por mensagem\", text: \"Canal exclusivo para vendas\", onClick: () => setCurrentFormOpen(0), icon: \"message\" },\n ];\n\n return (\n <div>\n\n <Title>\n Converse com um corretor\n </Title>\n\n <Text>\n Selecione uma opção de contato a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n {itens.map((value) => (\n <button key={value.title} onClick={value.onClick}>\n <SelectorOption >\n <div>\n <h3>{value.title}</h3>\n <p>{value.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={26}\n src={iconMap[value.icon]}\n width={26}\n />\n </SelectorOption>\n </button>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default TalkWithSeller\n","export type UTM = {\n utm_source: string; // default 'direto'\n utm_campaign?: string;\n utm_medium?: string;\n utm_term?: string;\n createdAt: string; // ISO 8601\n };\n \n const UTM_STORAGE_KEY = 'utm_meta';\n const TTL_DAYS = 7;\n \n export const isBrowser = () =>\n typeof window !== 'undefined' && typeof document !== 'undefined';\n \n const daysToMs = (days: number) => days * 24 * 60 * 60 * 1000;\n \n export function readStoredUtm(maxAgeDays = TTL_DAYS): { data: UTM | null; isValid: boolean } {\n if (!isBrowser()) return { data: null, isValid: false };\n try {\n const raw = window.localStorage.getItem(UTM_STORAGE_KEY);\n if (!raw) return { data: null, isValid: false };\n const parsed = JSON.parse(raw) as UTM;\n if (!parsed?.createdAt) return { data: null, isValid: false };\n const age = Date.now() - new Date(parsed.createdAt).getTime();\n const isValid = age <= daysToMs(maxAgeDays);\n return { data: isValid ? parsed : null, isValid };\n } catch {\n return { data: null, isValid: false };\n }\n }\n \n export function saveUtm(data: Partial<UTM>, now = new Date()): UTM | null {\n if (!isBrowser()) return null;\n const payload: UTM = {\n utm_source: data.utm_source || 'direto',\n utm_campaign: data.utm_campaign,\n utm_medium: data.utm_medium,\n utm_term: data.utm_term,\n createdAt: now.toISOString(),\n };\n try {\n window.localStorage.setItem(UTM_STORAGE_KEY, JSON.stringify(payload));\n } catch { /* ignore quota errors */ }\n return payload;\n }\n \n export function parseUrlUtm(loc?: Location): Partial<UTM> {\n if (!isBrowser()) return {};\n const locationObj = loc || window.location;\n const sp = new URL(locationObj.href).searchParams;\n const utm_source = sp.get('utm_source') || undefined;\n const utm_campaign = sp.get('utm_campaign') || undefined;\n const utm_medium = sp.get('utm_medium') || undefined;\n const utm_term = sp.get('utm_term') || undefined;\n return { utm_source, utm_campaign, utm_medium, utm_term };\n }\n \n export function inferSourceFromReferrer(ref?: string): string | undefined {\n if (!isBrowser()) return undefined;\n const href = (ref ?? document.referrer ?? '').toLowerCase();\n if (!href) return 'direto';\n const hostMatch = href.match(/https?:\\/\\/([^/]+)/);\n const host = hostMatch?.[1] ?? href;\n if (/google\\./.test(host) || /^g\\.co$/.test(host) || /^goo\\.gl$/.test(host)) return 'google';\n\n if (\n /(^|\\.)facebook\\.com$/.test(host) ||\n /(^|\\.)m\\.facebook\\.com$/.test(host) ||\n /(^|\\.)fb\\.com$/.test(host) ||\n /(^|\\.)fb\\.me$/.test(host) ||\n /(^|\\.)fb\\.watch$/.test(host) ||\n /(^|\\.)m\\.me$/.test(host)\n ) return 'facebook';\n\n if (\n /(^|\\.)instagram\\.com$/.test(host) ||\n /(^|\\.)l\\.instagram\\.com$/.test(host) ||\n /(^|\\.)instagr\\.am$/.test(host) ||\n /^ig\\.me$/.test(host)\n ) return 'instagram';\n\n if (/(^|\\.)linkedin\\.com$/.test(host) || /^lnkd\\.in$/.test(host)) return 'linkedin';\n\n if (/^t\\.co$/.test(host) || /(^|\\.)twitter\\.com$/.test(host) || /(^|\\.)x\\.com$/.test(host)) return 'twitter';\n\n if (/(^|\\.)youtube\\.com$/.test(host) || /^youtu\\.be$/.test(host)) return 'youtube';\n\n if (/(^|\\.)mail\\.google\\.com$/.test(host)) return 'email';\n\n if (/(^|\\.)outlook\\.live\\.com$/.test(host) || /(^|\\.)outlook\\.office\\.com$/.test(host)) return 'email';\n\n if (/^(wa\\.me)$/.test(host) || /(^|\\.)api\\.whatsapp\\.com$/.test(host) || /(^|\\.)web\\.whatsapp\\.com$/.test(host)) return 'whatsapp';\n\n if (/^t\\.me$/.test(host)) return 'telegram';\n\n if (/(^|\\.)tiktok\\.com$/.test(host)) return 'tiktok';\n return 'direto';\n }\n \n /** Resolve UTM e persiste quando necessário. Prioridade: localStorage (válido) > URL > referrer */\n export function resolveUtmWithPriority(\n now = new Date(),\n propOverride?: Partial<UTM>\n ): { data: UTM; source: 'localStorage' | 'url' | 'referrer' } {\n // 1) Se houver UTM válido no localStorage (<= 7 dias), usar SEM sobrescrever\n const stored = readStoredUtm();\n if (stored.data) {\n const merged = { ...stored.data, ...propOverride } as UTM;\n return { data: merged, source: 'localStorage' };\n }\n \n // 2) Se NÃO houver válido no localStorage, tentar URL. Se houver, salvar e usar\n const fromUrl = parseUrlUtm();\n if (fromUrl.utm_source) {\n const saved = saveUtm(fromUrl, now)!;\n const merged = { ...saved, ...propOverride } as UTM;\n return { data: merged, source: 'url' };\n }\n \n // 3) Fallback: inferir do referrer, apenas ler (não salvar no localStorage)\n const utm_source = inferSourceFromReferrer();\n const payload: UTM = {\n utm_source: utm_source || 'direto',\n utm_campaign: propOverride?.utm_campaign,\n utm_medium: propOverride?.utm_medium,\n utm_term: propOverride?.utm_term,\n createdAt: now.toISOString(),\n };\n return { data: payload, source: 'referrer' };\n }","import { darkEffect, flex, breakpoints } from \"./styles/utils\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n\nexport const Title = styled.h2<{ $textColor?: string }>`\n font-size: 1.25rem;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const Text = styled.p<{ $textColor?: string }>`\n font-size: 1rem;\n font-weight: 400;\n line-height: 23px;\n letter-spacing: 0em;\n margin-top: 10px;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const SelectorOptionsContainer = styled.div`\n ${flex(\"column\")}\n gap: 10px;\n padding: 20px 0;\n\n a {\n text-decoration: none;\n }\n\n button {\n border: none;\n border-radius: 8px;\n background: transparent;\n }\n`;\n\nexport const SelectorOption = styled.div`\n ${flex(\"row\", \"center\", \"space-between\")}\n ${darkEffect}\n background: var(--white);\n color: black;\n border-radius: 8px;\n padding: 12px;\n width: 100%;\n\n h3 {\n font-size: 0.81rem;\n font-weight: 700;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-bottom: 10px;\n margin-right: 10px;\n }\n\n p {\n font-size: 0.75rem;\n font-weight: 300;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-right: 10px;\n }\n`;\n","export const openWindowPopup = (url: string) => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft =\n window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop =\n window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const w = 674;\n const h = 540;\n const left = (width - w) / 2 / systemZoom + dualScreenLeft;\n const top = (height - h) / 2 / systemZoom + dualScreenTop;\n\n window.open(\n url,\n `mitre-window`,\n `width=${w / systemZoom}, \n height=${h / systemZoom}, \n top=${top}, \n left=${left}, \n status=no, \n toolbar=no, \n location=no, \n menubar=no, \n resizable=no, \n fullscreen=no`\n );\n};\n","import { useEffect, useState } from \"react\";\n\ntype DeviceType = \"Android\" | \"iPhone\" | \"Unknown\";\n\nexport function useDeviceType(): DeviceType {\n const [deviceType, setDeviceType] = useState<DeviceType>(\"Unknown\");\n\n useEffect(() => {\n const userAgent = navigator.userAgent || navigator.vendor;\n\n if (/android/i.test(userAgent)) {\n setDeviceType(\"Android\");\n } else if (/iPad|iPhone|iPod/.test(userAgent)) {\n setDeviceType(\"iPhone\");\n } else {\n setDeviceType(\"Unknown\");\n }\n }, []);\n\n return deviceType;\n}\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { useDeviceType } from \"../hooks/useDeviceType\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Client = () => {\n const device = useDeviceType()\n const mobileLink = device === \"Android\" ? \"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" : \"https://apps.apple.com/br/app/mitre-experience/id1543244752\";\n const mobileIcon = device === \"Android\" ? \"google-play-store\" : \"apple-mac\";\n const mobileMessage = device === \"Android\" ? \"Encontre nosso app na Google Play Store\" : \"Encontre nosso app na App Store\";\n\n const items = [\n { title:\"Atendimento ao Cliente Mitre\", text:\"Acesso ao portal do cliente\", icon:\"person\", link:\"https://portal.mitrerealty.com.br/Clientes/\", },\n { title:\"Baixe o Aplicativo Mitre Experience\", text:mobileMessage, icon:mobileIcon, link:mobileLink },\n ];\n\n const mobileItems = [\n { title:\"Baixe o Aplicativo Mitre Experience no Android\", text:\"Encontre nosso app na Google Play Store\", icon:\"google_play_store\", link:\"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" },\n { title:\"Baixe o Aplicativo Mitre Experience no IOS\", text:\"Encontre nosso app na App Store\", icon:\"apple_mac\", link:\"https://apps.apple.com/br/app/mitre-experience/id1543244752\" }\n ];\n\n function isInMobileItemButInDesktop(index:number) {\n const itemIndex = 1;\n return index === itemIndex && device === \"Unknown\";\n }\n\n return (\n <div>\n\n <Title>\n Central de Relacionamento\n </Title>\n\n <Text>\n <>\n Já é cliente Mitre Reality? Precisa falar conosco?\n <br/><br/>\n Acesse o Portal do Cliente para enviar sua solicitação à nossa Central de Relacionamento: \n </>\n </Text>\n\n <SelectorOptionsContainer>\n <>\n { items.map((item, index) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n style={isInMobileItemButInDesktop(index) ? { display:\"none\" } : {}}\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n\n { device === \"Unknown\" &&\n mobileItems.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))\n }\n\n </>\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Client;\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Other = () => {\n const itens = [\n { title:\"Trabalhe conosco\", text:\"Canal exclusivo para vagas\", icon:\"mala\", link:`https://mitrerealty.gupy.io/` },\n { title:\"Fornecedores\", text:\"Seja um fornecedor da Mitre\", icon:\"shake_hands\", link:`https://www.mitrerealty.com.br/fornecedores` },\n { title:\"Seja um Parceiro Mitre\", text:\"Seja um corretor ou imobiliária parceira da Mitre.\", icon:\"star\", link:`https://www.mitrerealty.com.br/seja-parceiro-mitre` },\n { title:\"Outros assuntos\", text:\"Entre em contato com a Mitre\", icon:\"question_mark_circle\", link:`https://www.mitrerealty.com.br/contato` }\n ];\n\n return (\n <div>\n\n <Title>\n Outros assuntos\n </Title>\n\n <Text>\n Selecione uma das opções a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption >\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={ iconMap[item.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Other; "],"mappings":"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","names":["import_react","styled","import_styled_components","import_react","import_react","import_styled_components","styled","import_styled_components","styled","import_react","import_styled_components","Container","styled","ButtonContainer","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","React"]}
|
package/dist/index.d.cts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/components/MitreActionsWidget/index.tsx
|
|
2
|
-
import React, { useState as
|
|
2
|
+
import React, { useState as useState4 } from "react";
|
|
3
3
|
|
|
4
4
|
// src/components/styles/utils.ts
|
|
5
5
|
function flex(direction = "row", alignItems, justifyContent) {
|
|
@@ -209,7 +209,7 @@ var FontLoader = () => {
|
|
|
209
209
|
var global_default = FontLoader;
|
|
210
210
|
|
|
211
211
|
// src/components/Selector/index.tsx
|
|
212
|
-
import { useRef, useState as
|
|
212
|
+
import { useRef, useState as useState3 } from "react";
|
|
213
213
|
|
|
214
214
|
// src/components/hooks/useClickOutside.ts
|
|
215
215
|
import { useEffect as useEffect2 } from "react";
|
|
@@ -470,6 +470,95 @@ var Navbar = ({ setCurrentOpen, currentOpen }) => {
|
|
|
470
470
|
};
|
|
471
471
|
var Navbar_default = Navbar;
|
|
472
472
|
|
|
473
|
+
// src/components/TalkWithASeller/index.tsx
|
|
474
|
+
import { useEffect as useEffect3, useState } from "react";
|
|
475
|
+
|
|
476
|
+
// src/components/utils/utm.ts
|
|
477
|
+
var UTM_STORAGE_KEY = "utm_meta";
|
|
478
|
+
var TTL_DAYS = 7;
|
|
479
|
+
var isBrowser = () => typeof window !== "undefined" && typeof document !== "undefined";
|
|
480
|
+
var daysToMs = (days) => days * 24 * 60 * 60 * 1e3;
|
|
481
|
+
function readStoredUtm(maxAgeDays = TTL_DAYS) {
|
|
482
|
+
if (!isBrowser()) return { data: null, isValid: false };
|
|
483
|
+
try {
|
|
484
|
+
const raw = window.localStorage.getItem(UTM_STORAGE_KEY);
|
|
485
|
+
if (!raw) return { data: null, isValid: false };
|
|
486
|
+
const parsed = JSON.parse(raw);
|
|
487
|
+
if (!parsed?.createdAt) return { data: null, isValid: false };
|
|
488
|
+
const age = Date.now() - new Date(parsed.createdAt).getTime();
|
|
489
|
+
const isValid = age <= daysToMs(maxAgeDays);
|
|
490
|
+
return { data: isValid ? parsed : null, isValid };
|
|
491
|
+
} catch {
|
|
492
|
+
return { data: null, isValid: false };
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
function saveUtm(data, now = /* @__PURE__ */ new Date()) {
|
|
496
|
+
if (!isBrowser()) return null;
|
|
497
|
+
const payload = {
|
|
498
|
+
utm_source: data.utm_source || "direto",
|
|
499
|
+
utm_campaign: data.utm_campaign,
|
|
500
|
+
utm_medium: data.utm_medium,
|
|
501
|
+
utm_term: data.utm_term,
|
|
502
|
+
createdAt: now.toISOString()
|
|
503
|
+
};
|
|
504
|
+
try {
|
|
505
|
+
window.localStorage.setItem(UTM_STORAGE_KEY, JSON.stringify(payload));
|
|
506
|
+
} catch {
|
|
507
|
+
}
|
|
508
|
+
return payload;
|
|
509
|
+
}
|
|
510
|
+
function parseUrlUtm(loc) {
|
|
511
|
+
if (!isBrowser()) return {};
|
|
512
|
+
const locationObj = loc || window.location;
|
|
513
|
+
const sp = new URL(locationObj.href).searchParams;
|
|
514
|
+
const utm_source = sp.get("utm_source") || void 0;
|
|
515
|
+
const utm_campaign = sp.get("utm_campaign") || void 0;
|
|
516
|
+
const utm_medium = sp.get("utm_medium") || void 0;
|
|
517
|
+
const utm_term = sp.get("utm_term") || void 0;
|
|
518
|
+
return { utm_source, utm_campaign, utm_medium, utm_term };
|
|
519
|
+
}
|
|
520
|
+
function inferSourceFromReferrer(ref) {
|
|
521
|
+
if (!isBrowser()) return void 0;
|
|
522
|
+
const href = (ref ?? document.referrer ?? "").toLowerCase();
|
|
523
|
+
if (!href) return "direto";
|
|
524
|
+
const hostMatch = href.match(/https?:\/\/([^/]+)/);
|
|
525
|
+
const host = hostMatch?.[1] ?? href;
|
|
526
|
+
if (/google\./.test(host) || /^g\.co$/.test(host) || /^goo\.gl$/.test(host)) return "google";
|
|
527
|
+
if (/(^|\.)facebook\.com$/.test(host) || /(^|\.)m\.facebook\.com$/.test(host) || /(^|\.)fb\.com$/.test(host) || /(^|\.)fb\.me$/.test(host) || /(^|\.)fb\.watch$/.test(host) || /(^|\.)m\.me$/.test(host)) return "facebook";
|
|
528
|
+
if (/(^|\.)instagram\.com$/.test(host) || /(^|\.)l\.instagram\.com$/.test(host) || /(^|\.)instagr\.am$/.test(host) || /^ig\.me$/.test(host)) return "instagram";
|
|
529
|
+
if (/(^|\.)linkedin\.com$/.test(host) || /^lnkd\.in$/.test(host)) return "linkedin";
|
|
530
|
+
if (/^t\.co$/.test(host) || /(^|\.)twitter\.com$/.test(host) || /(^|\.)x\.com$/.test(host)) return "twitter";
|
|
531
|
+
if (/(^|\.)youtube\.com$/.test(host) || /^youtu\.be$/.test(host)) return "youtube";
|
|
532
|
+
if (/(^|\.)mail\.google\.com$/.test(host)) return "email";
|
|
533
|
+
if (/(^|\.)outlook\.live\.com$/.test(host) || /(^|\.)outlook\.office\.com$/.test(host)) return "email";
|
|
534
|
+
if (/^(wa\.me)$/.test(host) || /(^|\.)api\.whatsapp\.com$/.test(host) || /(^|\.)web\.whatsapp\.com$/.test(host)) return "whatsapp";
|
|
535
|
+
if (/^t\.me$/.test(host)) return "telegram";
|
|
536
|
+
if (/(^|\.)tiktok\.com$/.test(host)) return "tiktok";
|
|
537
|
+
return "direto";
|
|
538
|
+
}
|
|
539
|
+
function resolveUtmWithPriority(now = /* @__PURE__ */ new Date(), propOverride) {
|
|
540
|
+
const stored = readStoredUtm();
|
|
541
|
+
if (stored.data) {
|
|
542
|
+
const merged = { ...stored.data, ...propOverride };
|
|
543
|
+
return { data: merged, source: "localStorage" };
|
|
544
|
+
}
|
|
545
|
+
const fromUrl = parseUrlUtm();
|
|
546
|
+
if (fromUrl.utm_source) {
|
|
547
|
+
const saved = saveUtm(fromUrl, now);
|
|
548
|
+
const merged = { ...saved, ...propOverride };
|
|
549
|
+
return { data: merged, source: "url" };
|
|
550
|
+
}
|
|
551
|
+
const utm_source = inferSourceFromReferrer();
|
|
552
|
+
const payload = {
|
|
553
|
+
utm_source: utm_source || "direto",
|
|
554
|
+
utm_campaign: propOverride?.utm_campaign,
|
|
555
|
+
utm_medium: propOverride?.utm_medium,
|
|
556
|
+
utm_term: propOverride?.utm_term,
|
|
557
|
+
createdAt: now.toISOString()
|
|
558
|
+
};
|
|
559
|
+
return { data: payload, source: "referrer" };
|
|
560
|
+
}
|
|
561
|
+
|
|
473
562
|
// src/components/styles.ts
|
|
474
563
|
import styled4 from "styled-components";
|
|
475
564
|
var Container2 = styled4.div`
|
|
@@ -584,23 +673,25 @@ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
|
584
673
|
var TalkWithSeller = ({
|
|
585
674
|
productId,
|
|
586
675
|
apiUrl,
|
|
587
|
-
utm_source,
|
|
588
|
-
utm_medium,
|
|
589
|
-
utm_campaign,
|
|
590
|
-
utm_term,
|
|
591
676
|
setCurrentFormOpen
|
|
592
677
|
}) => {
|
|
678
|
+
const [utm, setUtm] = useState({ utm_source: "direto", createdAt: (/* @__PURE__ */ new Date()).toISOString() });
|
|
679
|
+
useEffect3(() => {
|
|
680
|
+
if (!isBrowser()) return;
|
|
681
|
+
const { data } = resolveUtmWithPriority(/* @__PURE__ */ new Date());
|
|
682
|
+
setUtm(data);
|
|
683
|
+
}, []);
|
|
593
684
|
const onWhatsClick = async () => {
|
|
594
685
|
try {
|
|
595
|
-
if (!productId
|
|
686
|
+
if (!productId) {
|
|
596
687
|
throw new Error("Missing required parameters");
|
|
597
688
|
}
|
|
598
689
|
const params = new URLSearchParams();
|
|
599
690
|
params.append("id_produto", productId);
|
|
600
|
-
params.append("utm_source", utm_source);
|
|
601
|
-
if (utm_medium) params.append("utm_medium", utm_medium);
|
|
602
|
-
if (utm_campaign) params.append("utm_campaign", utm_campaign);
|
|
603
|
-
if (utm_term) params.append("utm_term", utm_term);
|
|
691
|
+
params.append("utm_source", utm.utm_source);
|
|
692
|
+
if (utm.utm_medium) params.append("utm_medium", utm.utm_medium);
|
|
693
|
+
if (utm.utm_campaign) params.append("utm_campaign", utm.utm_campaign);
|
|
694
|
+
if (utm.utm_term) params.append("utm_term", utm.utm_term);
|
|
604
695
|
params.append("canal", "whatsapp");
|
|
605
696
|
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
606
697
|
openWindowPopup(url);
|
|
@@ -610,15 +701,15 @@ var TalkWithSeller = ({
|
|
|
610
701
|
};
|
|
611
702
|
const onChatClick = async () => {
|
|
612
703
|
try {
|
|
613
|
-
if (!productId
|
|
704
|
+
if (!productId) {
|
|
614
705
|
throw new Error("Missing required parameters");
|
|
615
706
|
}
|
|
616
707
|
const params = new URLSearchParams();
|
|
617
708
|
params.append("id_produto", productId);
|
|
618
|
-
params.append("utm_source", utm_source);
|
|
619
|
-
if (utm_medium) params.append("utm_medium", utm_medium);
|
|
620
|
-
if (utm_campaign) params.append("utm_campaign", utm_campaign);
|
|
621
|
-
if (utm_term) params.append("utm_term", utm_term);
|
|
709
|
+
params.append("utm_source", utm.utm_source);
|
|
710
|
+
if (utm.utm_medium) params.append("utm_medium", utm.utm_medium);
|
|
711
|
+
if (utm.utm_campaign) params.append("utm_campaign", utm.utm_campaign);
|
|
712
|
+
if (utm.utm_term) params.append("utm_term", utm.utm_term);
|
|
622
713
|
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
623
714
|
openWindowPopup(url);
|
|
624
715
|
} catch (error) {
|
|
@@ -654,10 +745,10 @@ var TalkWithSeller = ({
|
|
|
654
745
|
var TalkWithASeller_default = TalkWithSeller;
|
|
655
746
|
|
|
656
747
|
// src/components/hooks/useDeviceType.ts
|
|
657
|
-
import { useEffect as
|
|
748
|
+
import { useEffect as useEffect4, useState as useState2 } from "react";
|
|
658
749
|
function useDeviceType() {
|
|
659
|
-
const [deviceType, setDeviceType] =
|
|
660
|
-
|
|
750
|
+
const [deviceType, setDeviceType] = useState2("Unknown");
|
|
751
|
+
useEffect4(() => {
|
|
661
752
|
const userAgent = navigator.userAgent || navigator.vendor;
|
|
662
753
|
if (/android/i.test(userAgent)) {
|
|
663
754
|
setDeviceType("Android");
|
|
@@ -803,15 +894,11 @@ var Selector = ({
|
|
|
803
894
|
productId,
|
|
804
895
|
apiUrl,
|
|
805
896
|
apiToken,
|
|
806
|
-
utm_source,
|
|
807
|
-
utm_medium,
|
|
808
|
-
utm_campaign,
|
|
809
|
-
utm_term,
|
|
810
897
|
close
|
|
811
898
|
}) => {
|
|
812
899
|
const ref = useRef(null);
|
|
813
|
-
const [currentOpen, setCurrentOpen] =
|
|
814
|
-
const [currentFormOpen, setCurrentFormOpen] =
|
|
900
|
+
const [currentOpen, setCurrentOpen] = useState3(0);
|
|
901
|
+
const [currentFormOpen, setCurrentFormOpen] = useState3(-1);
|
|
815
902
|
useClickOutside_default(ref, close);
|
|
816
903
|
const tabs = [
|
|
817
904
|
TalkWithASeller_default,
|
|
@@ -857,10 +944,6 @@ var Selector = ({
|
|
|
857
944
|
productId,
|
|
858
945
|
apiUrl,
|
|
859
946
|
apiToken,
|
|
860
|
-
utm_source,
|
|
861
|
-
utm_medium,
|
|
862
|
-
utm_campaign,
|
|
863
|
-
utm_term,
|
|
864
947
|
backgroundColor: "var(--transparent)"
|
|
865
948
|
}
|
|
866
949
|
) }) }) }) : /* @__PURE__ */ jsxs5(Fragment2, { children: [
|
|
@@ -869,11 +952,7 @@ var Selector = ({
|
|
|
869
952
|
{
|
|
870
953
|
setCurrentFormOpen,
|
|
871
954
|
productId,
|
|
872
|
-
apiUrl
|
|
873
|
-
utm_source,
|
|
874
|
-
utm_medium,
|
|
875
|
-
utm_campaign,
|
|
876
|
-
utm_term
|
|
955
|
+
apiUrl
|
|
877
956
|
}
|
|
878
957
|
) }),
|
|
879
958
|
/* @__PURE__ */ jsx5(FooterContainer, { children: /* @__PURE__ */ jsx5(
|
|
@@ -892,14 +971,10 @@ var Selector_default = Selector;
|
|
|
892
971
|
import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
893
972
|
var MitreActionsWidget = React.forwardRef(({
|
|
894
973
|
productId,
|
|
895
|
-
utm_source,
|
|
896
|
-
utm_medium,
|
|
897
|
-
utm_campaign,
|
|
898
|
-
utm_term,
|
|
899
974
|
apiUrl,
|
|
900
975
|
apiToken
|
|
901
976
|
}, ref) => {
|
|
902
|
-
const [open, setOpen] =
|
|
977
|
+
const [open, setOpen] = useState4(false);
|
|
903
978
|
function handleOpen() {
|
|
904
979
|
setOpen(true);
|
|
905
980
|
}
|
|
@@ -909,7 +984,7 @@ var MitreActionsWidget = React.forwardRef(({
|
|
|
909
984
|
return /* @__PURE__ */ jsxs6(Container, { children: [
|
|
910
985
|
/* @__PURE__ */ jsx6(global_default, {}),
|
|
911
986
|
/* @__PURE__ */ jsx6(GlobalStyles, {}),
|
|
912
|
-
open && /* @__PURE__ */ jsx6(Selector_default, { productId,
|
|
987
|
+
open && /* @__PURE__ */ jsx6(Selector_default, { productId, apiUrl, apiToken, close: () => close() }),
|
|
913
988
|
/* @__PURE__ */ jsx6(ButtonContainer, { ref, open, onClick: () => handleOpen(), children: /* @__PURE__ */ jsx6(
|
|
914
989
|
"img",
|
|
915
990
|
{
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/MitreActionsWidget/index.tsx","../src/components/styles/utils.ts","../src/components/MitreActionsWidget/styles.ts","../src/components/styles/global.ts","../src/components/Selector/index.tsx","../src/components/hooks/useClickOutside.ts","../src/components/Selector/styles.ts","../src/components/Navbar/styles.ts","../src/assets/icons.ts","../src/components/Navbar/index.tsx","../src/components/styles.ts","../src/components/utils/windowPopup.ts","../src/components/TalkWithASeller/index.tsx","../src/components/hooks/useDeviceType.ts","../src/components/LeadSupport/index.tsx","../src/components/OtherTopics/index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Container, ButtonContainer } from \"./styles\";\n\nimport FontLoader, { GlobalStyles } from \"../styles/global\";\n\nimport Selector from \"../Selector\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nexport interface MitreActionsWidgetProps {\n productId: string;\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n apiUrl: string;\n apiToken: string;\n}\n\nconst MitreActionsWidget = React.forwardRef<HTMLDivElement, MitreActionsWidgetProps> (({\n productId,\n utm_source,\n utm_medium,\n utm_campaign,\n utm_term, \n apiUrl, \n apiToken \n}, ref) => { \n const [ open, setOpen ] = useState(false);\n\n function handleOpen() {\n setOpen(true);\n }\n\n function close() {\n setOpen(false);\n }\n\n return (\n <Container>\n <FontLoader />\n <GlobalStyles />\n {open && <Selector productId={ productId } utm_source={utm_source} utm_medium={utm_medium} utm_campaign={utm_campaign} utm_term={utm_term} apiUrl={ apiUrl } apiToken={ apiToken } close={ () => close()}/>}\n <ButtonContainer ref={ref} open={ open } onClick={() => handleOpen()}>\n <img\n src={iconMap[\"balloon\"]}\n height={ 32 }\n width={ 32 } \n alt=\"Balão com mais opções\"\n draggable={ false }\n />\n </ButtonContainer> \n\n </Container>\n )\n});\n\nMitreActionsWidget.displayName = \"MitreActionsWidget\";\n\nexport default MitreActionsWidget;","type directionType = \"column\" | \"row\";\ntype alignItemsType = \"center\" | \"flex-start\";\n\ntype jutifyContentType = \"center\" | \"space-between\";\n\nexport function flex(\n direction: directionType = \"row\",\n alignItems?: alignItemsType,\n justifyContent?: jutifyContentType\n) {\n return `\n align-items:${alignItems || null};\n display:flex;\n flex-direction:${direction};\n justify-content:${justifyContent || null};\n `;\n}\n\nexport const alignX = `\n left:50%;\n transform:translateX(-50%);\n`;\n\nexport const alignXAndY = `\n left:50%;\n top:50%;\n transform:translate(-50%, -50%);\n`;\n\nexport const darkEffect = `\n &:hover {\n cursor:pointer;\n filter:brightness(98%);\n }\n\n &:active {\n filter:brightness(95%);\n }\n`;\n\nexport const opacityEffect = `\n &:hover {\n cursor:pointer;\n opacity:.9;\n }\n\n &:active {\n opacity:.7;\n }\n`;\n\nexport const modalZIndex = 9999;\n\nexport const breakpoints = {\n tablet: \"1024px\",\n};\n","import { flex, darkEffect, breakpoints } from \"../styles/utils\";\n\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n background-color: var(--green-2);\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n","import { useEffect } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nexport const GlobalStyles = createGlobalStyle`\n :root {\n --red: #e52e4d;\n --white: #FFF;\n --black: #2F2F2F;\n --black-2:#1E1E1E;\n --alphaBlack: #000000;\n --black-2:#1E1E1E;\n --black-3:#353535;\n\n --yellow-400:#FFD789;\n --yellow-500: #F6C76B;\n --gray-40:#F0F0F0;\n --gray-45:#767676;\n --gray-50: #686A69;\n --gray-60: #8F8F8F;\n --gray-100: #B6B6B6;\n --gray-150: #B9B9B9;\n --gray-200: #D2D2D2;\n --gray-300: #EBEBEB;\n --gray-400: #ECECEC;\n --gray-500: #F4F4F4;\n --gray-550:#6F6F6F;\n --gray-600:#686868;\n --gray-700: #535353;\n --gray-800:#9D9D9D;\n --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);\n --green:#57C06E;\n --green-2:#2DCE68;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html {\n scroll-behavior: smooth;\n\n @media (max-width: 1080px) {\n font-size: 93.75%;\n }\n @media (max-width: 720px) {\n font-size: 87.5%;\n }\n }\n\n body {\n background: var(--white);\n -webkit-font-smoothing: antialiased;\n }\n\n body, input, textarea, select, button {\n font-family: \"Montserrat\", sans-serif;\n font-weight: 400;\n } \n\n h1, h2, h3, h4, h5, h6, strong {\n font-weight: 600;\n }\n\n button {\n cursor: pointer;\n }\n\n [disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .hidden {\n overflow: hidden;\n }\n\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n background: var(--gray-500);\n width: 6px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--gray-50);\n }\n\n .aligncenter {\n text-align: center;\n }\n\n .width-190px {\n width:190px;\n }\n\n .hidden-content {\n display:none !important;\n }\n\n .global-margin-bottom {\n margin-bottom:20px;\n }\n\n .background-light-gray {\n background:#F4F4F4;\n }\n\n .full-width-and-height {\n height:100%;\n width:100%;\n }\n\n .flex-direction-column {\n flex-direction:column;\n }\n\n .bold {\n font-weight:700;\n }\n\n .margin-center-x {\n margin:0 auto;\n }\n\n .border-none {\n border:none;\n }\n\n .text-center {\n text-align:center;\n }\n\n .relative {\n position:relative;\n }\n`;\n\nconst FontLoader: React.FC = () => {\n useEffect(() => {\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n }, []);\n\n return null;\n};\n\nexport default FontLoader;\n","import { useRef, useState } from \"react\";\n\nimport useClickOutside from \"../hooks/useClickOutside\";\n\nimport { \n HeaderContainer, \n ContentContainer, \n FormContainer, \n SelectorContainer, \n FooterContainer,\n FormErrorContainer,\n TextError\n} from \"./styles\";\n\nimport { HiX, HiArrowNarrowLeft, HiOutlineExclamation } from 'react-icons/hi';\n\nimport Navbar from \"../Navbar\";\n\nimport TalkWithSeller from \"../TalkWithASeller\";\nimport LeadSupport from \"../LeadSupport\";\nimport OtherTopics from \"../OtherTopics\";\n\nimport { MitreFormComponent } from 'mitre-form-component'\n\nimport { ErrorBoundary } from 'react-error-boundary';\n\ntype Props = {\n productId: string,\n apiUrl: string,\n apiToken: string,\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n close:() => void;\n}\n\nconst Selector = ({ \n productId, \n apiUrl, \n apiToken, \n utm_source, \n utm_medium, \n utm_campaign,\n utm_term,\n close \n}:Props) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const [ currentOpen, setCurrentOpen ] = useState(0);\n\n const [ currentFormOpen, setCurrentFormOpen ] = useState(-1);\n\n useClickOutside(ref, close);\n\n const tabs = [\n TalkWithSeller,\n LeadSupport,\n OtherTopics\n ];\n\n const DefaultComponent = () => <></>;\n\n const CurrentComponent = tabs[currentOpen] || DefaultComponent;\n\n return (\n <SelectorContainer ref={ ref }>\n\n <HeaderContainer>\n <HiArrowNarrowLeft \n className=\"back-icon\" \n onClick={ () => setCurrentFormOpen(-1) }\n size={ 28 }\n visibility={ currentFormOpen >= 0 ? \"visible\" : \"hidden\" }\n color={ \"var(--black)\" }\n />\n\n <HiX \n className=\"close-icon\" \n onClick={ close }\n size={ 28 }\n color={ \"var(--black)\" }\n />\n </HeaderContainer>\n\n { currentFormOpen >= 0 ?\n <>\n <FormContainer>\n <ErrorBoundary fallback={\n <FormErrorContainer>\n <HiOutlineExclamation \n size={ 28 }\n color={ \"var(--red)\" }\n />\n <TextError>Ocorreu um erro ao carregar o formulário!</TextError>\n </FormErrorContainer>\n }>\n <MitreFormComponent \n productId={ productId }\n apiUrl={ apiUrl }\n apiToken={ apiToken }\n utm_source={ utm_source }\n utm_medium={ utm_medium }\n utm_campaign={ utm_campaign }\n utm_term={ utm_term }\n backgroundColor=\"var(--transparent)\"\n />\n </ErrorBoundary>\n </FormContainer>\n </>\n : \n <>\n <ContentContainer>\n <CurrentComponent \n setCurrentFormOpen={setCurrentFormOpen}\n productId={ productId }\n apiUrl={ apiUrl }\n utm_source={ utm_source }\n utm_medium={ utm_medium }\n utm_campaign={ utm_campaign }\n utm_term={ utm_term }\n />\n </ContentContainer>\n\n <FooterContainer>\n <Navbar \n currentOpen={ currentOpen } \n setCurrentOpen={ setCurrentOpen }\n />\n </FooterContainer>\n </>\n }\n \n </SelectorContainer>\n );\n}\n\nexport default Selector;","import { useEffect } from \"react\";\n\nfunction useClickOutside(\n ref: React.RefObject<HTMLElement | null>,\n methodToRunWhenClickOutside: (e?: MouseEvent) => void,\n exemptedIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n // Explicit null check (TypeScript will now understand ref.current could be null)\n if (!ref.current) return;\n\n const isClickOutside = !ref.current.contains(event.target as Node);\n\n // Check if the clicked element or any of its ancestors have an exempted ID\n const isAnElementAllowedToClose = exemptedIds.some((id) => {\n let element = event.target as HTMLElement | null;\n while (element) {\n if (element.id === id) {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n });\n\n // Only run the method if the click is outside and not exempted\n if (isClickOutside && !isAnElementAllowedToClose) {\n methodToRunWhenClickOutside(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, methodToRunWhenClickOutside, exemptedIds]);\n}\n\nexport default useClickOutside;\n","import { flex, opacityEffect, breakpoints } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const HeaderContainer = styled.div`\n position: relative;\n width: 100%;\n height: 52px;\n padding-top: 20px;\n padding-bottom: 8px;\n padding-left: 20px;\n padding-right: 20px;\n\n justify-content: space-between;\n align-items: center;\n display: flex;\n\n .close-icon {\n ${opacityEffect}\n color: var(--black-100);\n }\n\n .back-icon {\n ${opacityEffect}\n }\n`;\n\nexport const ContentContainer = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n\n /* Optional: Add padding to prevent content from touching edges */\n padding-left: 20px;\n padding-right: 20px;\n padding-bottom: 10px;\n padding-top: 10px;\n`;\n\nexport const FormContainer = styled.div`\n ${flex(\"column\")}\n overflow-x: hidden;\n overflow-y: auto;\n height: 100%;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n`;\n\nexport const SelectorContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 85vh;\n margin-bottom: 8px;\n max-height: 660px;\n position: relative;\n background: var(--gray-300);\n border-radius: 8px;\n\n @media (max-width: ${breakpoints.tablet}) {\n height: 100%;\n width: 100%;\n max-height: 100%;\n border-radius: 0px;\n position: fixed;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 50;\n padding-bottom: env(safe-area-inset-bottom);\n }\n`;\n\nexport const FooterContainer = styled.div`\n height: 90px;\n width: 100%;\n`;\n\nexport const FormErrorContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n background: var(--white);\n border-radius: 8px;\n border: none;\n`;\n\nexport const TextError = styled.h3`\n color: var(--red);\n text-align: center;\n padding-top: 10px;\n`;\n","import { flex, opacityEffect } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const NavContainer = styled.nav`\n ${flex(\"row\")}\n gap:10px;\n position: absolute;\n left: 15px;\n right: 15px;\n bottom: 10px;\n\n button {\n ${flex(\"column\", \"center\")}\n ${opacityEffect}\n background: black;\n border-radius: 10px;\n border: none;\n color: white;\n font-size: 11px;\n gap: 5px;\n padding: 10px 5px;\n width: 33%;\n\n &.active {\n background: var(--yellow-500);\n color: black;\n font-weight: 700;\n\n img,\n svg {\n filter: initial;\n }\n }\n\n img,\n svg {\n filter: invert(100%);\n }\n }\n`;\n","import apple_mac from \"./images/apple-mac.svg\";\nimport balloon from \"./images/balloon.svg\";\nimport chat from \"./images/chat.svg\";\nimport google_play_store from \"./images/google-play-store.svg\";\nimport house_with_hand from \"./images/house-with-hand.svg\";\nimport mala from \"./images/mala.svg\";\nimport message from \"./images/message.svg\";\nimport person from \"./images/person.svg\";\nimport question_mark_circle from \"./images/question-mark-circle.svg\";\nimport shake_hands from \"./images/shake-hands.svg\";\nimport star from \"./images/star.svg\";\nimport whatsapp from \"./images/whatsapp.svg\";\n\nexport const iconMap: Record<string, string> = {\n apple_mac,\n balloon,\n chat,\n google_play_store,\n house_with_hand,\n mala,\n message,\n person,\n question_mark_circle,\n shake_hands,\n star,\n whatsapp,\n};\n","import { NavContainer } from \"./styles\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n currentOpen:number;\n setCurrentOpen:Dispatch<number>;\n}\n\nconst Navbar = ({ setCurrentOpen, currentOpen }:Props) => {\n\n const itens = [\n { name:\"Converse com um corretor\", icon:\"house_with_hand\" },\n { name:\"Atendimento ao cliente\", icon:\"person\" },\n { name:\"Outros assuntos\", icon:\"question_mark_circle\" }\n ]\n\n return (\n <NavContainer>\n \n { itens.map((tab, index) => (\n <button \n className={index === currentOpen ? \"active\" : \"\" } \n key={ tab.name } \n onClick={ () => setCurrentOpen(index) }\n >\n <img\n alt={ tab.name }\n height={ 20 }\n src={iconMap[tab.icon!]}\n width={ 20 }\n />\n { tab.name }\n </button>\n ))}\n\n </NavContainer>\n )\n}\n\nexport default Navbar","import { darkEffect, flex, breakpoints } from \"./styles/utils\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n\nexport const Title = styled.h2<{ $textColor?: string }>`\n font-size: 1.25rem;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const Text = styled.p<{ $textColor?: string }>`\n font-size: 1rem;\n font-weight: 400;\n line-height: 23px;\n letter-spacing: 0em;\n margin-top: 10px;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const SelectorOptionsContainer = styled.div`\n ${flex(\"column\")}\n gap: 10px;\n padding: 20px 0;\n\n a {\n text-decoration: none;\n }\n\n button {\n border: none;\n border-radius: 8px;\n background: transparent;\n }\n`;\n\nexport const SelectorOption = styled.div`\n ${flex(\"row\", \"center\", \"space-between\")}\n ${darkEffect}\n background: var(--white);\n color: black;\n border-radius: 8px;\n padding: 12px;\n width: 100%;\n\n h3 {\n font-size: 0.81rem;\n font-weight: 700;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-bottom: 10px;\n margin-right: 10px;\n }\n\n p {\n font-size: 0.75rem;\n font-weight: 300;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-right: 10px;\n }\n`;\n","export const openWindowPopup = (url: string) => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft =\n window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop =\n window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const w = 674;\n const h = 540;\n const left = (width - w) / 2 / systemZoom + dualScreenLeft;\n const top = (height - h) / 2 / systemZoom + dualScreenTop;\n\n window.open(\n url,\n `mitre-window`,\n `width=${w / systemZoom}, \n height=${h / systemZoom}, \n top=${top}, \n left=${left}, \n status=no, \n toolbar=no, \n location=no, \n menubar=no, \n resizable=no, \n fullscreen=no`\n );\n};\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { openWindowPopup } from \"../utils/windowPopup\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n productId: string;\n apiUrl :string,\n utm_source: string,\n utm_medium?: string,\n utm_campaign?: string,\n utm_term?: string,\n setCurrentFormOpen:Dispatch<number>;\n}\n\nconst TalkWithSeller = ({ \n productId, \n apiUrl, \n utm_source,\n utm_medium,\n utm_campaign,\n utm_term,\n setCurrentFormOpen \n} : Props) => {\n const onWhatsClick = async () => {\n try {\n if (!productId || !utm_source) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm_source);\n \n if (utm_medium) params.append('utm_medium', utm_medium);\n if (utm_campaign) params.append('utm_campaign', utm_campaign);\n if (utm_term) params.append('utm_term', utm_term);\n\n params.append('canal', 'whatsapp');\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onWhatsClick:\", error);\n }\n };\n\n const onChatClick = async () => {\n try {\n if (!productId || !utm_source) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm_source);\n \n if (utm_medium) params.append('utm_medium', utm_medium);\n if (utm_campaign) params.append('utm_campaign', utm_campaign);\n if (utm_term) params.append('utm_term', utm_term);\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onChatClick:\", error);\n }\n };\n\n const itens = [\n { title:\"Atendimento por Whatsapp\", text:\"Canal exclusivo para vendas\", onClick:() => onWhatsClick(), icon:\"whatsapp\" },\n { title:\"Atendimento por chat\", text:\"Canal exclusivo para vendas\", onClick:() => onChatClick(), icon:\"chat\" },\n { title:\"Atendimento por mensagem\", text:\"Canal exclusivo para vendas\", onClick:() => setCurrentFormOpen(0), icon:\"message\" },\n ];\n\n return (\n <div>\n\n <Title>\n Converse com um corretor\n </Title>\n\n <Text>\n Selecione uma opção de contato a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((value) => (\n <button key={ value.title } onClick={ value.onClick }>\n <SelectorOption >\n <div>\n <h3>{value.title}</h3>\n <p>{value.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[value.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </button>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default TalkWithSeller\n","import { useEffect, useState } from \"react\";\n\ntype DeviceType = \"Android\" | \"iPhone\" | \"Unknown\";\n\nexport function useDeviceType(): DeviceType {\n const [deviceType, setDeviceType] = useState<DeviceType>(\"Unknown\");\n\n useEffect(() => {\n const userAgent = navigator.userAgent || navigator.vendor;\n\n if (/android/i.test(userAgent)) {\n setDeviceType(\"Android\");\n } else if (/iPad|iPhone|iPod/.test(userAgent)) {\n setDeviceType(\"iPhone\");\n } else {\n setDeviceType(\"Unknown\");\n }\n }, []);\n\n return deviceType;\n}\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { useDeviceType } from \"../hooks/useDeviceType\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Client = () => {\n const device = useDeviceType()\n const mobileLink = device === \"Android\" ? \"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" : \"https://apps.apple.com/br/app/mitre-experience/id1543244752\";\n const mobileIcon = device === \"Android\" ? \"google-play-store\" : \"apple-mac\";\n const mobileMessage = device === \"Android\" ? \"Encontre nosso app na Google Play Store\" : \"Encontre nosso app na App Store\";\n\n const items = [\n { title:\"Atendimento ao Cliente Mitre\", text:\"Acesso ao portal do cliente\", icon:\"person\", link:\"https://portal.mitrerealty.com.br/Clientes/\", },\n { title:\"Baixe o Aplicativo Mitre Experience\", text:mobileMessage, icon:mobileIcon, link:mobileLink },\n ];\n\n const mobileItems = [\n { title:\"Baixe o Aplicativo Mitre Experience no Android\", text:\"Encontre nosso app na Google Play Store\", icon:\"google_play_store\", link:\"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" },\n { title:\"Baixe o Aplicativo Mitre Experience no IOS\", text:\"Encontre nosso app na App Store\", icon:\"apple_mac\", link:\"https://apps.apple.com/br/app/mitre-experience/id1543244752\" }\n ];\n\n function isInMobileItemButInDesktop(index:number) {\n const itemIndex = 1;\n return index === itemIndex && device === \"Unknown\";\n }\n\n return (\n <div>\n\n <Title>\n Central de Relacionamento\n </Title>\n\n <Text>\n <>\n Já é cliente Mitre Reality? Precisa falar conosco?\n <br/><br/>\n Acesse o Portal do Cliente para enviar sua solicitação à nossa Central de Relacionamento: \n </>\n </Text>\n\n <SelectorOptionsContainer>\n <>\n { items.map((item, index) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n style={isInMobileItemButInDesktop(index) ? { display:\"none\" } : {}}\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n\n { device === \"Unknown\" &&\n mobileItems.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))\n }\n\n </>\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Client;\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Other = () => {\n const itens = [\n { title:\"Trabalhe conosco\", text:\"Canal exclusivo para vagas\", icon:\"mala\", link:`https://mitrerealty.gupy.io/` },\n { title:\"Fornecedores\", text:\"Seja um fornecedor da Mitre\", icon:\"shake_hands\", link:`https://www.mitrerealty.com.br/fornecedores` },\n { title:\"Seja um Parceiro Mitre\", text:\"Seja um corretor ou imobiliária parceira da Mitre.\", icon:\"star\", link:`https://www.mitrerealty.com.br/seja-parceiro-mitre` },\n { title:\"Outros assuntos\", text:\"Entre em contato com a Mitre\", icon:\"question_mark_circle\", link:`https://www.mitrerealty.com.br/contato` }\n ];\n\n return (\n <div>\n\n <Title>\n Outros assuntos\n </Title>\n\n <Text>\n Selecione uma das opções a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption >\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={ iconMap[item.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Other; "],"mappings":"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","names":["useState","useState","useEffect","styled","styled","styled","Container","ButtonContainer","jsx","jsxs","useEffect","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","useState","jsx","jsxs","useState"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/MitreActionsWidget/index.tsx","../src/components/styles/utils.ts","../src/components/MitreActionsWidget/styles.ts","../src/components/styles/global.ts","../src/components/Selector/index.tsx","../src/components/hooks/useClickOutside.ts","../src/components/Selector/styles.ts","../src/components/Navbar/styles.ts","../src/assets/icons.ts","../src/components/Navbar/index.tsx","../src/components/TalkWithASeller/index.tsx","../src/components/utils/utm.ts","../src/components/styles.ts","../src/components/utils/windowPopup.ts","../src/components/hooks/useDeviceType.ts","../src/components/LeadSupport/index.tsx","../src/components/OtherTopics/index.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { Container, ButtonContainer } from \"./styles\";\n\nimport FontLoader, { GlobalStyles } from \"../styles/global\";\n\nimport Selector from \"../Selector\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nexport interface MitreActionsWidgetProps {\n productId: string;\n apiUrl: string;\n apiToken: string;\n}\n\nconst MitreActionsWidget = React.forwardRef<HTMLDivElement, MitreActionsWidgetProps>(({\n productId,\n apiUrl,\n apiToken\n}, ref) => {\n const [open, setOpen] = useState(false);\n\n function handleOpen() {\n setOpen(true);\n }\n\n function close() {\n setOpen(false);\n }\n\n return (\n <Container>\n <FontLoader />\n <GlobalStyles />\n {open && <Selector productId={productId} apiUrl={apiUrl} apiToken={apiToken} close={() => close()} />}\n <ButtonContainer ref={ref} open={open} onClick={() => handleOpen()}>\n <img\n src={iconMap[\"balloon\"]}\n height={32}\n width={32}\n alt=\"Balão com mais opções\"\n draggable={false}\n />\n </ButtonContainer>\n\n </Container>\n )\n});\n\nMitreActionsWidget.displayName = \"MitreActionsWidget\";\n\nexport default MitreActionsWidget;","type directionType = \"column\" | \"row\";\ntype alignItemsType = \"center\" | \"flex-start\";\n\ntype jutifyContentType = \"center\" | \"space-between\";\n\nexport function flex(\n direction: directionType = \"row\",\n alignItems?: alignItemsType,\n justifyContent?: jutifyContentType\n) {\n return `\n align-items:${alignItems || null};\n display:flex;\n flex-direction:${direction};\n justify-content:${justifyContent || null};\n `;\n}\n\nexport const alignX = `\n left:50%;\n transform:translateX(-50%);\n`;\n\nexport const alignXAndY = `\n left:50%;\n top:50%;\n transform:translate(-50%, -50%);\n`;\n\nexport const darkEffect = `\n &:hover {\n cursor:pointer;\n filter:brightness(98%);\n }\n\n &:active {\n filter:brightness(95%);\n }\n`;\n\nexport const opacityEffect = `\n &:hover {\n cursor:pointer;\n opacity:.9;\n }\n\n &:active {\n opacity:.7;\n }\n`;\n\nexport const modalZIndex = 9999;\n\nexport const breakpoints = {\n tablet: \"1024px\",\n};\n","import { flex, darkEffect, breakpoints } from \"../styles/utils\";\n\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n background-color: var(--green-2);\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n","import { useEffect } from \"react\";\nimport { createGlobalStyle } from \"styled-components\";\n\nexport const GlobalStyles = createGlobalStyle`\n :root {\n --red: #e52e4d;\n --white: #FFF;\n --black: #2F2F2F;\n --black-2:#1E1E1E;\n --alphaBlack: #000000;\n --black-2:#1E1E1E;\n --black-3:#353535;\n\n --yellow-400:#FFD789;\n --yellow-500: #F6C76B;\n --gray-40:#F0F0F0;\n --gray-45:#767676;\n --gray-50: #686A69;\n --gray-60: #8F8F8F;\n --gray-100: #B6B6B6;\n --gray-150: #B9B9B9;\n --gray-200: #D2D2D2;\n --gray-300: #EBEBEB;\n --gray-400: #ECECEC;\n --gray-500: #F4F4F4;\n --gray-550:#6F6F6F;\n --gray-600:#686868;\n --gray-700: #535353;\n --gray-800:#9D9D9D;\n --shadow-500: 0px 4px 8px rgba(91, 91, 91, 0.2);\n --green:#57C06E;\n --green-2:#2DCE68;\n }\n\n * {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n\n html {\n scroll-behavior: smooth;\n\n @media (max-width: 1080px) {\n font-size: 93.75%;\n }\n @media (max-width: 720px) {\n font-size: 87.5%;\n }\n }\n\n body {\n background: var(--white);\n -webkit-font-smoothing: antialiased;\n }\n\n body, input, textarea, select, button {\n font-family: \"Montserrat\", sans-serif;\n font-weight: 400;\n } \n\n h1, h2, h3, h4, h5, h6, strong {\n font-weight: 600;\n }\n\n button {\n cursor: pointer;\n }\n\n [disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .hidden {\n overflow: hidden;\n }\n\n ::-webkit-scrollbar {\n -webkit-appearance: none;\n background: var(--gray-500);\n width: 6px;\n height: 10px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: var(--gray-50);\n }\n\n .aligncenter {\n text-align: center;\n }\n\n .width-190px {\n width:190px;\n }\n\n .hidden-content {\n display:none !important;\n }\n\n .global-margin-bottom {\n margin-bottom:20px;\n }\n\n .background-light-gray {\n background:#F4F4F4;\n }\n\n .full-width-and-height {\n height:100%;\n width:100%;\n }\n\n .flex-direction-column {\n flex-direction:column;\n }\n\n .bold {\n font-weight:700;\n }\n\n .margin-center-x {\n margin:0 auto;\n }\n\n .border-none {\n border:none;\n }\n\n .text-center {\n text-align:center;\n }\n\n .relative {\n position:relative;\n }\n`;\n\nconst FontLoader: React.FC = () => {\n useEffect(() => {\n const link = document.createElement(\"link\");\n link.href =\n \"https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap\";\n link.rel = \"stylesheet\";\n document.head.appendChild(link);\n }, []);\n\n return null;\n};\n\nexport default FontLoader;\n","import { useRef, useState } from \"react\";\n\nimport useClickOutside from \"../hooks/useClickOutside\";\n\nimport {\n HeaderContainer,\n ContentContainer,\n FormContainer,\n SelectorContainer,\n FooterContainer,\n FormErrorContainer,\n TextError\n} from \"./styles\";\n\nimport { HiX, HiArrowNarrowLeft, HiOutlineExclamation } from 'react-icons/hi';\n\nimport Navbar from \"../Navbar\";\n\nimport TalkWithSeller from \"../TalkWithASeller\";\nimport LeadSupport from \"../LeadSupport\";\nimport OtherTopics from \"../OtherTopics\";\n\nimport { MitreFormComponent } from 'mitre-form-component'\n\nimport { ErrorBoundary } from 'react-error-boundary';\n\ntype Props = {\n productId: string,\n apiUrl: string,\n apiToken: string,\n close: () => void;\n}\n\nconst Selector = ({\n productId,\n apiUrl,\n apiToken,\n close\n}: Props) => {\n const ref = useRef<HTMLDivElement | null>(null);\n const [currentOpen, setCurrentOpen] = useState(0);\n\n const [currentFormOpen, setCurrentFormOpen] = useState(-1);\n\n useClickOutside(ref, close);\n\n const tabs = [\n TalkWithSeller,\n LeadSupport,\n OtherTopics\n ];\n\n const DefaultComponent = () => <></>;\n\n const CurrentComponent = tabs[currentOpen] || DefaultComponent;\n\n return (\n <SelectorContainer ref={ref}>\n\n <HeaderContainer>\n <HiArrowNarrowLeft\n className=\"back-icon\"\n onClick={() => setCurrentFormOpen(-1)}\n size={28}\n visibility={currentFormOpen >= 0 ? \"visible\" : \"hidden\"}\n color={\"var(--black)\"}\n />\n\n <HiX\n className=\"close-icon\"\n onClick={close}\n size={28}\n color={\"var(--black)\"}\n />\n </HeaderContainer>\n\n {currentFormOpen >= 0 ?\n <>\n <FormContainer>\n <ErrorBoundary fallback={\n <FormErrorContainer>\n <HiOutlineExclamation\n size={28}\n color={\"var(--red)\"}\n />\n <TextError>Ocorreu um erro ao carregar o formulário!</TextError>\n </FormErrorContainer>\n }>\n <MitreFormComponent\n productId={productId}\n apiUrl={apiUrl}\n apiToken={apiToken}\n backgroundColor=\"var(--transparent)\"\n />\n </ErrorBoundary>\n </FormContainer>\n </>\n :\n <>\n <ContentContainer>\n <CurrentComponent\n setCurrentFormOpen={setCurrentFormOpen}\n productId={productId}\n apiUrl={apiUrl}\n />\n </ContentContainer>\n\n <FooterContainer>\n <Navbar\n currentOpen={currentOpen}\n setCurrentOpen={setCurrentOpen}\n />\n </FooterContainer>\n </>\n }\n\n </SelectorContainer>\n );\n}\n\nexport default Selector;","import { useEffect } from \"react\";\n\nfunction useClickOutside(\n ref: React.RefObject<HTMLElement | null>,\n methodToRunWhenClickOutside: (e?: MouseEvent) => void,\n exemptedIds: string[] = []\n) {\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n // Explicit null check (TypeScript will now understand ref.current could be null)\n if (!ref.current) return;\n\n const isClickOutside = !ref.current.contains(event.target as Node);\n\n // Check if the clicked element or any of its ancestors have an exempted ID\n const isAnElementAllowedToClose = exemptedIds.some((id) => {\n let element = event.target as HTMLElement | null;\n while (element) {\n if (element.id === id) {\n return true;\n }\n element = element.parentElement;\n }\n return false;\n });\n\n // Only run the method if the click is outside and not exempted\n if (isClickOutside && !isAnElementAllowedToClose) {\n methodToRunWhenClickOutside(event);\n }\n }\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref, methodToRunWhenClickOutside, exemptedIds]);\n}\n\nexport default useClickOutside;\n","import { flex, opacityEffect, breakpoints } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const HeaderContainer = styled.div`\n position: relative;\n width: 100%;\n height: 52px;\n padding-top: 20px;\n padding-bottom: 8px;\n padding-left: 20px;\n padding-right: 20px;\n\n justify-content: space-between;\n align-items: center;\n display: flex;\n\n .close-icon {\n ${opacityEffect}\n color: var(--black-100);\n }\n\n .back-icon {\n ${opacityEffect}\n }\n`;\n\nexport const ContentContainer = styled.div`\n flex: 1;\n overflow-x: hidden;\n overflow-y: auto;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n\n /* Optional: Add padding to prevent content from touching edges */\n padding-left: 20px;\n padding-right: 20px;\n padding-bottom: 10px;\n padding-top: 10px;\n`;\n\nexport const FormContainer = styled.div`\n ${flex(\"column\")}\n overflow-x: hidden;\n overflow-y: auto;\n height: 100%;\n\n /* Hide scrollbars for WebKit browsers */\n ::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbars for Firefox */\n scrollbar-width: none;\n`;\n\nexport const SelectorContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 85vh;\n margin-bottom: 8px;\n max-height: 660px;\n position: relative;\n background: var(--gray-300);\n border-radius: 8px;\n\n @media (max-width: ${breakpoints.tablet}) {\n height: 100%;\n width: 100%;\n max-height: 100%;\n border-radius: 0px;\n position: fixed;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n margin: 0;\n z-index: 50;\n padding-bottom: env(safe-area-inset-bottom);\n }\n`;\n\nexport const FooterContainer = styled.div`\n height: 90px;\n width: 100%;\n`;\n\nexport const FormErrorContainer = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 100%;\n\n background: var(--white);\n border-radius: 8px;\n border: none;\n`;\n\nexport const TextError = styled.h3`\n color: var(--red);\n text-align: center;\n padding-top: 10px;\n`;\n","import { flex, opacityEffect } from \"../styles/utils\";\nimport styled from \"styled-components\";\n\nexport const NavContainer = styled.nav`\n ${flex(\"row\")}\n gap:10px;\n position: absolute;\n left: 15px;\n right: 15px;\n bottom: 10px;\n\n button {\n ${flex(\"column\", \"center\")}\n ${opacityEffect}\n background: black;\n border-radius: 10px;\n border: none;\n color: white;\n font-size: 11px;\n gap: 5px;\n padding: 10px 5px;\n width: 33%;\n\n &.active {\n background: var(--yellow-500);\n color: black;\n font-weight: 700;\n\n img,\n svg {\n filter: initial;\n }\n }\n\n img,\n svg {\n filter: invert(100%);\n }\n }\n`;\n","import apple_mac from \"./images/apple-mac.svg\";\nimport balloon from \"./images/balloon.svg\";\nimport chat from \"./images/chat.svg\";\nimport google_play_store from \"./images/google-play-store.svg\";\nimport house_with_hand from \"./images/house-with-hand.svg\";\nimport mala from \"./images/mala.svg\";\nimport message from \"./images/message.svg\";\nimport person from \"./images/person.svg\";\nimport question_mark_circle from \"./images/question-mark-circle.svg\";\nimport shake_hands from \"./images/shake-hands.svg\";\nimport star from \"./images/star.svg\";\nimport whatsapp from \"./images/whatsapp.svg\";\n\nexport const iconMap: Record<string, string> = {\n apple_mac,\n balloon,\n chat,\n google_play_store,\n house_with_hand,\n mala,\n message,\n person,\n question_mark_circle,\n shake_hands,\n star,\n whatsapp,\n};\n","import { NavContainer } from \"./styles\";\n\nimport { Dispatch } from \"react\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n currentOpen:number;\n setCurrentOpen:Dispatch<number>;\n}\n\nconst Navbar = ({ setCurrentOpen, currentOpen }:Props) => {\n\n const itens = [\n { name:\"Converse com um corretor\", icon:\"house_with_hand\" },\n { name:\"Atendimento ao cliente\", icon:\"person\" },\n { name:\"Outros assuntos\", icon:\"question_mark_circle\" }\n ]\n\n return (\n <NavContainer>\n \n { itens.map((tab, index) => (\n <button \n className={index === currentOpen ? \"active\" : \"\" } \n key={ tab.name } \n onClick={ () => setCurrentOpen(index) }\n >\n <img\n alt={ tab.name }\n height={ 20 }\n src={iconMap[tab.icon!]}\n width={ 20 }\n />\n { tab.name }\n </button>\n ))}\n\n </NavContainer>\n )\n}\n\nexport default Navbar","import { Dispatch, useEffect, useState } from \"react\";\nimport { UTM, isBrowser, resolveUtmWithPriority } from \"../utils/utm\";\nimport { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { openWindowPopup } from \"../utils/windowPopup\";\n\nimport { iconMap } from \"../../assets/icons\";\n\ntype Props = {\n productId: string;\n apiUrl: string,\n setCurrentFormOpen: Dispatch<number>;\n}\n\nconst TalkWithSeller = ({\n productId,\n apiUrl,\n setCurrentFormOpen\n}: Props) => {\n const [utm, setUtm] = useState<UTM>({ utm_source: 'direto', createdAt: new Date().toISOString() });\n\n useEffect(() => {\n if (!isBrowser()) return;\n const { data } = resolveUtmWithPriority(new Date());\n setUtm(data);\n }, []);\n\n const onWhatsClick = async () => {\n try {\n if (!productId) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm.utm_source);\n if (utm.utm_medium) params.append('utm_medium', utm.utm_medium);\n if (utm.utm_campaign) params.append('utm_campaign', utm.utm_campaign);\n if (utm.utm_term) params.append('utm_term', utm.utm_term);\n params.append('canal', 'whatsapp');\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onWhatsClick:\", error);\n }\n };\n\n const onChatClick = async () => {\n try {\n if (!productId) {\n throw new Error(\"Missing required parameters\");\n }\n\n const params = new URLSearchParams();\n params.append('id_produto', productId);\n params.append('utm_source', utm.utm_source);\n if (utm.utm_medium) params.append('utm_medium', utm.utm_medium);\n if (utm.utm_campaign) params.append('utm_campaign', utm.utm_campaign);\n if (utm.utm_term) params.append('utm_term', utm.utm_term);\n\n const url = `${apiUrl}/atendimento?${params.toString()}`;\n openWindowPopup(url);\n } catch (error) {\n console.error(\"Error in onChatClick:\", error);\n }\n };\n\n const itens = [\n { title: \"Atendimento por Whatsapp\", text: \"Canal exclusivo para vendas\", onClick: () => onWhatsClick(), icon: \"whatsapp\" },\n { title: \"Atendimento por chat\", text: \"Canal exclusivo para vendas\", onClick: () => onChatClick(), icon: \"chat\" },\n { title: \"Atendimento por mensagem\", text: \"Canal exclusivo para vendas\", onClick: () => setCurrentFormOpen(0), icon: \"message\" },\n ];\n\n return (\n <div>\n\n <Title>\n Converse com um corretor\n </Title>\n\n <Text>\n Selecione uma opção de contato a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n {itens.map((value) => (\n <button key={value.title} onClick={value.onClick}>\n <SelectorOption >\n <div>\n <h3>{value.title}</h3>\n <p>{value.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={26}\n src={iconMap[value.icon]}\n width={26}\n />\n </SelectorOption>\n </button>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default TalkWithSeller\n","export type UTM = {\n utm_source: string; // default 'direto'\n utm_campaign?: string;\n utm_medium?: string;\n utm_term?: string;\n createdAt: string; // ISO 8601\n };\n \n const UTM_STORAGE_KEY = 'utm_meta';\n const TTL_DAYS = 7;\n \n export const isBrowser = () =>\n typeof window !== 'undefined' && typeof document !== 'undefined';\n \n const daysToMs = (days: number) => days * 24 * 60 * 60 * 1000;\n \n export function readStoredUtm(maxAgeDays = TTL_DAYS): { data: UTM | null; isValid: boolean } {\n if (!isBrowser()) return { data: null, isValid: false };\n try {\n const raw = window.localStorage.getItem(UTM_STORAGE_KEY);\n if (!raw) return { data: null, isValid: false };\n const parsed = JSON.parse(raw) as UTM;\n if (!parsed?.createdAt) return { data: null, isValid: false };\n const age = Date.now() - new Date(parsed.createdAt).getTime();\n const isValid = age <= daysToMs(maxAgeDays);\n return { data: isValid ? parsed : null, isValid };\n } catch {\n return { data: null, isValid: false };\n }\n }\n \n export function saveUtm(data: Partial<UTM>, now = new Date()): UTM | null {\n if (!isBrowser()) return null;\n const payload: UTM = {\n utm_source: data.utm_source || 'direto',\n utm_campaign: data.utm_campaign,\n utm_medium: data.utm_medium,\n utm_term: data.utm_term,\n createdAt: now.toISOString(),\n };\n try {\n window.localStorage.setItem(UTM_STORAGE_KEY, JSON.stringify(payload));\n } catch { /* ignore quota errors */ }\n return payload;\n }\n \n export function parseUrlUtm(loc?: Location): Partial<UTM> {\n if (!isBrowser()) return {};\n const locationObj = loc || window.location;\n const sp = new URL(locationObj.href).searchParams;\n const utm_source = sp.get('utm_source') || undefined;\n const utm_campaign = sp.get('utm_campaign') || undefined;\n const utm_medium = sp.get('utm_medium') || undefined;\n const utm_term = sp.get('utm_term') || undefined;\n return { utm_source, utm_campaign, utm_medium, utm_term };\n }\n \n export function inferSourceFromReferrer(ref?: string): string | undefined {\n if (!isBrowser()) return undefined;\n const href = (ref ?? document.referrer ?? '').toLowerCase();\n if (!href) return 'direto';\n const hostMatch = href.match(/https?:\\/\\/([^/]+)/);\n const host = hostMatch?.[1] ?? href;\n if (/google\\./.test(host) || /^g\\.co$/.test(host) || /^goo\\.gl$/.test(host)) return 'google';\n\n if (\n /(^|\\.)facebook\\.com$/.test(host) ||\n /(^|\\.)m\\.facebook\\.com$/.test(host) ||\n /(^|\\.)fb\\.com$/.test(host) ||\n /(^|\\.)fb\\.me$/.test(host) ||\n /(^|\\.)fb\\.watch$/.test(host) ||\n /(^|\\.)m\\.me$/.test(host)\n ) return 'facebook';\n\n if (\n /(^|\\.)instagram\\.com$/.test(host) ||\n /(^|\\.)l\\.instagram\\.com$/.test(host) ||\n /(^|\\.)instagr\\.am$/.test(host) ||\n /^ig\\.me$/.test(host)\n ) return 'instagram';\n\n if (/(^|\\.)linkedin\\.com$/.test(host) || /^lnkd\\.in$/.test(host)) return 'linkedin';\n\n if (/^t\\.co$/.test(host) || /(^|\\.)twitter\\.com$/.test(host) || /(^|\\.)x\\.com$/.test(host)) return 'twitter';\n\n if (/(^|\\.)youtube\\.com$/.test(host) || /^youtu\\.be$/.test(host)) return 'youtube';\n\n if (/(^|\\.)mail\\.google\\.com$/.test(host)) return 'email';\n\n if (/(^|\\.)outlook\\.live\\.com$/.test(host) || /(^|\\.)outlook\\.office\\.com$/.test(host)) return 'email';\n\n if (/^(wa\\.me)$/.test(host) || /(^|\\.)api\\.whatsapp\\.com$/.test(host) || /(^|\\.)web\\.whatsapp\\.com$/.test(host)) return 'whatsapp';\n\n if (/^t\\.me$/.test(host)) return 'telegram';\n\n if (/(^|\\.)tiktok\\.com$/.test(host)) return 'tiktok';\n return 'direto';\n }\n \n /** Resolve UTM e persiste quando necessário. Prioridade: localStorage (válido) > URL > referrer */\n export function resolveUtmWithPriority(\n now = new Date(),\n propOverride?: Partial<UTM>\n ): { data: UTM; source: 'localStorage' | 'url' | 'referrer' } {\n // 1) Se houver UTM válido no localStorage (<= 7 dias), usar SEM sobrescrever\n const stored = readStoredUtm();\n if (stored.data) {\n const merged = { ...stored.data, ...propOverride } as UTM;\n return { data: merged, source: 'localStorage' };\n }\n \n // 2) Se NÃO houver válido no localStorage, tentar URL. Se houver, salvar e usar\n const fromUrl = parseUrlUtm();\n if (fromUrl.utm_source) {\n const saved = saveUtm(fromUrl, now)!;\n const merged = { ...saved, ...propOverride } as UTM;\n return { data: merged, source: 'url' };\n }\n \n // 3) Fallback: inferir do referrer, apenas ler (não salvar no localStorage)\n const utm_source = inferSourceFromReferrer();\n const payload: UTM = {\n utm_source: utm_source || 'direto',\n utm_campaign: propOverride?.utm_campaign,\n utm_medium: propOverride?.utm_medium,\n utm_term: propOverride?.utm_term,\n createdAt: now.toISOString(),\n };\n return { data: payload, source: 'referrer' };\n }","import { darkEffect, flex, breakpoints } from \"./styles/utils\";\nimport styled from \"styled-components\";\n\nexport const Container = styled.div`\n ${flex(\"column\")}\n bottom: 1.5rem;\n right: 3rem;\n position: fixed;\n width: 375px;\n\n @media (max-width: ${breakpoints.tablet}) {\n bottom: 1.5rem;\n right: 1.5rem;\n }\n`;\n\ntype Props = {\n open?: boolean;\n};\n\nexport const ButtonContainer = styled.div<Props>`\n ${darkEffect}\n ${flex(\"row\", \"center\", \"center\")}\n align-self:end;\n border-radius: 100px;\n height: 56px;\n width: 56px;\n pointer-events: ${(props) => (props.open ? \"none\" : \"\")};\n`;\n\nexport const Title = styled.h2<{ $textColor?: string }>`\n font-size: 1.25rem;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const Text = styled.p<{ $textColor?: string }>`\n font-size: 1rem;\n font-weight: 400;\n line-height: 23px;\n letter-spacing: 0em;\n margin-top: 10px;\n color: ${(props) => props.$textColor || \"var(--black)\"};\n`;\n\nexport const SelectorOptionsContainer = styled.div`\n ${flex(\"column\")}\n gap: 10px;\n padding: 20px 0;\n\n a {\n text-decoration: none;\n }\n\n button {\n border: none;\n border-radius: 8px;\n background: transparent;\n }\n`;\n\nexport const SelectorOption = styled.div`\n ${flex(\"row\", \"center\", \"space-between\")}\n ${darkEffect}\n background: var(--white);\n color: black;\n border-radius: 8px;\n padding: 12px;\n width: 100%;\n\n h3 {\n font-size: 0.81rem;\n font-weight: 700;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-bottom: 10px;\n margin-right: 10px;\n }\n\n p {\n font-size: 0.75rem;\n font-weight: 300;\n letter-spacing: 0em;\n text-align: left;\n line-height: 1.4;\n margin-right: 10px;\n }\n`;\n","export const openWindowPopup = (url: string) => {\n // Fixes dual-screen position Most browsers Firefox\n const dualScreenLeft =\n window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop =\n window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth\n ? window.innerWidth\n : document.documentElement.clientWidth\n ? document.documentElement.clientWidth\n : screen.width;\n const height = window.innerHeight\n ? window.innerHeight\n : document.documentElement.clientHeight\n ? document.documentElement.clientHeight\n : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const w = 674;\n const h = 540;\n const left = (width - w) / 2 / systemZoom + dualScreenLeft;\n const top = (height - h) / 2 / systemZoom + dualScreenTop;\n\n window.open(\n url,\n `mitre-window`,\n `width=${w / systemZoom}, \n height=${h / systemZoom}, \n top=${top}, \n left=${left}, \n status=no, \n toolbar=no, \n location=no, \n menubar=no, \n resizable=no, \n fullscreen=no`\n );\n};\n","import { useEffect, useState } from \"react\";\n\ntype DeviceType = \"Android\" | \"iPhone\" | \"Unknown\";\n\nexport function useDeviceType(): DeviceType {\n const [deviceType, setDeviceType] = useState<DeviceType>(\"Unknown\");\n\n useEffect(() => {\n const userAgent = navigator.userAgent || navigator.vendor;\n\n if (/android/i.test(userAgent)) {\n setDeviceType(\"Android\");\n } else if (/iPad|iPhone|iPod/.test(userAgent)) {\n setDeviceType(\"iPhone\");\n } else {\n setDeviceType(\"Unknown\");\n }\n }, []);\n\n return deviceType;\n}\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\nimport { useDeviceType } from \"../hooks/useDeviceType\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Client = () => {\n const device = useDeviceType()\n const mobileLink = device === \"Android\" ? \"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" : \"https://apps.apple.com/br/app/mitre-experience/id1543244752\";\n const mobileIcon = device === \"Android\" ? \"google-play-store\" : \"apple-mac\";\n const mobileMessage = device === \"Android\" ? \"Encontre nosso app na Google Play Store\" : \"Encontre nosso app na App Store\";\n\n const items = [\n { title:\"Atendimento ao Cliente Mitre\", text:\"Acesso ao portal do cliente\", icon:\"person\", link:\"https://portal.mitrerealty.com.br/Clientes/\", },\n { title:\"Baixe o Aplicativo Mitre Experience\", text:mobileMessage, icon:mobileIcon, link:mobileLink },\n ];\n\n const mobileItems = [\n { title:\"Baixe o Aplicativo Mitre Experience no Android\", text:\"Encontre nosso app na Google Play Store\", icon:\"google_play_store\", link:\"https://play.google.com/store/apps/details?id=com.mitre.experience&pli=1\" },\n { title:\"Baixe o Aplicativo Mitre Experience no IOS\", text:\"Encontre nosso app na App Store\", icon:\"apple_mac\", link:\"https://apps.apple.com/br/app/mitre-experience/id1543244752\" }\n ];\n\n function isInMobileItemButInDesktop(index:number) {\n const itemIndex = 1;\n return index === itemIndex && device === \"Unknown\";\n }\n\n return (\n <div>\n\n <Title>\n Central de Relacionamento\n </Title>\n\n <Text>\n <>\n Já é cliente Mitre Reality? Precisa falar conosco?\n <br/><br/>\n Acesse o Portal do Cliente para enviar sua solicitação à nossa Central de Relacionamento: \n </>\n </Text>\n\n <SelectorOptionsContainer>\n <>\n { items.map((item, index) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n style={isInMobileItemButInDesktop(index) ? { display:\"none\" } : {}}\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n\n { device === \"Unknown\" &&\n mobileItems.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption>\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={iconMap[item.icon]}\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))\n }\n\n </>\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Client;\n","import { Title, Text, SelectorOptionsContainer, SelectorOption } from \"../styles\";\n\nimport { iconMap } from \"../../assets/icons\";\n\nconst Other = () => {\n const itens = [\n { title:\"Trabalhe conosco\", text:\"Canal exclusivo para vagas\", icon:\"mala\", link:`https://mitrerealty.gupy.io/` },\n { title:\"Fornecedores\", text:\"Seja um fornecedor da Mitre\", icon:\"shake_hands\", link:`https://www.mitrerealty.com.br/fornecedores` },\n { title:\"Seja um Parceiro Mitre\", text:\"Seja um corretor ou imobiliária parceira da Mitre.\", icon:\"star\", link:`https://www.mitrerealty.com.br/seja-parceiro-mitre` },\n { title:\"Outros assuntos\", text:\"Entre em contato com a Mitre\", icon:\"question_mark_circle\", link:`https://www.mitrerealty.com.br/contato` }\n ];\n\n return (\n <div>\n\n <Title>\n Outros assuntos\n </Title>\n\n <Text>\n Selecione uma das opções a seguir:\n </Text>\n\n <SelectorOptionsContainer>\n { itens.map((item) => (\n <a \n key={ item.title } \n href={ item.link }\n target=\"_blank\" rel=\"noreferrer\"\n >\n <SelectorOption >\n <div>\n <h3>{ item.title }</h3>\n <p>{item.text}</p>\n </div>\n\n <img\n alt=\"\"\n aria-hidden=\"true\"\n height={ 26 }\n src={ iconMap[item.icon] }\n width={ 26 }\n />\n </SelectorOption>\n </a>\n ))}\n </SelectorOptionsContainer>\n\n </div>\n )\n}\n\nexport default Other; "],"mappings":"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","names":["useState","useState","useEffect","styled","styled","useEffect","styled","Container","ButtonContainer","jsx","jsxs","useEffect","useEffect","useState","jsx","jsxs","jsx","jsxs","Fragment","jsx","jsxs","useState","jsx","jsxs","useState"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mitre-actions-widget",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Componente flutuante de botões com ações de contato para ser usado em projetos da Mitre Realty.",
|
|
6
6
|
"type": "module",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"license": "MIT",
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"axios": "^1.8.4",
|
|
30
|
-
"mitre-form-component": "^0.0.
|
|
30
|
+
"mitre-form-component": "^0.0.41",
|
|
31
31
|
"react-error-boundary": "^5.0.0",
|
|
32
32
|
"react-icons": "^5.5.0"
|
|
33
33
|
},
|
|
@@ -55,4 +55,4 @@
|
|
|
55
55
|
"typescript-eslint": "^8.26.1",
|
|
56
56
|
"vite": "^6.3.1"
|
|
57
57
|
}
|
|
58
|
-
}
|
|
58
|
+
}
|