mitre-actions-widget 0.0.5 → 0.0.7
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 +11 -11
- package/dist/index.cjs +17 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +17 -4
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -43,10 +43,10 @@ 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"
|
|
47
|
-
utm_medium="cpc"
|
|
48
|
-
utm_campaign="mitre"
|
|
49
|
-
utm_term="mitre"
|
|
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
50
|
/>;
|
|
51
51
|
```
|
|
52
52
|
|
|
@@ -89,9 +89,9 @@ O `MitreActionsWidget` aceita as seguintes props:
|
|
|
89
89
|
- **`apiUrl`** (string): URL da API para registro dos leads.
|
|
90
90
|
- **`apiToken`** (string): Token de autenticação da API.
|
|
91
91
|
- **`utm_source`** (string): Parâmetro UTM de origem da campanha (ex: `'google'`).
|
|
92
|
-
- **`utm_medium`** (string): Parâmetro UTM de meio da campanha (ex: `'cpc'`).
|
|
93
|
-
- **`utm_campaign`** (string): Parâmetro UTM de nome da campanha (ex: `'mitre'`).
|
|
94
|
-
- **`utm_term`** (string): Parâmetro UTM de termo da campanha (ex: `'mitre'`).
|
|
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
95
|
|
|
96
96
|
---
|
|
97
97
|
|
|
@@ -115,10 +115,10 @@ const MitreActionsWidget = dynamic(
|
|
|
115
115
|
productId={process.env.NEXT_PUBLIC_PRODUCT_ID!}
|
|
116
116
|
apiUrl={process.env.NEXT_PUBLIC_REGISTER_LEADS_URL!}
|
|
117
117
|
apiToken={process.env.NEXT_PUBLIC_REGISTER_LEADS_TOKEN!}
|
|
118
|
-
utm_source="google"
|
|
119
|
-
utm_medium="cpc"
|
|
120
|
-
utm_campaign="mitre"
|
|
121
|
-
utm_term="mitre"
|
|
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
122
|
/>
|
|
123
123
|
</ErrorBoundary>;
|
|
124
124
|
```
|
package/dist/index.cjs
CHANGED
|
@@ -628,10 +628,17 @@ var TalkWithSeller = ({
|
|
|
628
628
|
}) => {
|
|
629
629
|
const onWhatsClick = async () => {
|
|
630
630
|
try {
|
|
631
|
-
if (!productId || !utm_source
|
|
631
|
+
if (!productId || !utm_source) {
|
|
632
632
|
throw new Error("Missing required parameters");
|
|
633
633
|
}
|
|
634
|
-
const
|
|
634
|
+
const params = new URLSearchParams();
|
|
635
|
+
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);
|
|
640
|
+
params.append("canal", "whatsapp");
|
|
641
|
+
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
635
642
|
openWindowPopup(url);
|
|
636
643
|
} catch (error) {
|
|
637
644
|
console.error("Error in onWhatsClick:", error);
|
|
@@ -639,10 +646,16 @@ var TalkWithSeller = ({
|
|
|
639
646
|
};
|
|
640
647
|
const onChatClick = async () => {
|
|
641
648
|
try {
|
|
642
|
-
if (!productId || !utm_source
|
|
649
|
+
if (!productId || !utm_source) {
|
|
643
650
|
throw new Error("Missing required parameters");
|
|
644
651
|
}
|
|
645
|
-
const
|
|
652
|
+
const params = new URLSearchParams();
|
|
653
|
+
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);
|
|
658
|
+
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
646
659
|
openWindowPopup(url);
|
|
647
660
|
} catch (error) {
|
|
648
661
|
console.error("Error in onChatClick:", error);
|
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 || !utm_medium || !utm_campaign || !utm_term) {\n throw new Error(\"Missing required parameters\");\n }\n\n const url = `${apiUrl}/atendimento?id_produto_terceiro=${productId}&utm_source=${utm_source}&utm_medium=${utm_medium}&utm_campaign=${utm_campaign}&utm_term=${utm_term}&canal=whatsapp`;\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 || !utm_medium || !utm_campaign || !utm_term) {\n throw new Error(\"Missing required parameters\");\n }\n\n const url = `${apiUrl}/atendimento?id_produto_terceiro=${productId}&utm_source=${utm_source}&utm_medium=${utm_medium}&utm_campaign=${utm_campaign}&utm_term=${utm_term}`;\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/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"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -3,9 +3,9 @@ import React from 'react';
|
|
|
3
3
|
interface MitreActionsWidgetProps {
|
|
4
4
|
productId: string;
|
|
5
5
|
utm_source: string;
|
|
6
|
-
utm_medium
|
|
7
|
-
utm_campaign
|
|
8
|
-
utm_term
|
|
6
|
+
utm_medium?: string;
|
|
7
|
+
utm_campaign?: string;
|
|
8
|
+
utm_term?: string;
|
|
9
9
|
apiUrl: string;
|
|
10
10
|
apiToken: string;
|
|
11
11
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,9 +3,9 @@ import React from 'react';
|
|
|
3
3
|
interface MitreActionsWidgetProps {
|
|
4
4
|
productId: string;
|
|
5
5
|
utm_source: string;
|
|
6
|
-
utm_medium
|
|
7
|
-
utm_campaign
|
|
8
|
-
utm_term
|
|
6
|
+
utm_medium?: string;
|
|
7
|
+
utm_campaign?: string;
|
|
8
|
+
utm_term?: string;
|
|
9
9
|
apiUrl: string;
|
|
10
10
|
apiToken: string;
|
|
11
11
|
}
|
package/dist/index.js
CHANGED
|
@@ -592,10 +592,17 @@ var TalkWithSeller = ({
|
|
|
592
592
|
}) => {
|
|
593
593
|
const onWhatsClick = async () => {
|
|
594
594
|
try {
|
|
595
|
-
if (!productId || !utm_source
|
|
595
|
+
if (!productId || !utm_source) {
|
|
596
596
|
throw new Error("Missing required parameters");
|
|
597
597
|
}
|
|
598
|
-
const
|
|
598
|
+
const params = new URLSearchParams();
|
|
599
|
+
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);
|
|
604
|
+
params.append("canal", "whatsapp");
|
|
605
|
+
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
599
606
|
openWindowPopup(url);
|
|
600
607
|
} catch (error) {
|
|
601
608
|
console.error("Error in onWhatsClick:", error);
|
|
@@ -603,10 +610,16 @@ var TalkWithSeller = ({
|
|
|
603
610
|
};
|
|
604
611
|
const onChatClick = async () => {
|
|
605
612
|
try {
|
|
606
|
-
if (!productId || !utm_source
|
|
613
|
+
if (!productId || !utm_source) {
|
|
607
614
|
throw new Error("Missing required parameters");
|
|
608
615
|
}
|
|
609
|
-
const
|
|
616
|
+
const params = new URLSearchParams();
|
|
617
|
+
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);
|
|
622
|
+
const url = `${apiUrl}/atendimento?${params.toString()}`;
|
|
610
623
|
openWindowPopup(url);
|
|
611
624
|
} catch (error) {
|
|
612
625
|
console.error("Error in onChatClick:", error);
|
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 || !utm_medium || !utm_campaign || !utm_term) {\n throw new Error(\"Missing required parameters\");\n }\n\n const url = `${apiUrl}/atendimento?id_produto_terceiro=${productId}&utm_source=${utm_source}&utm_medium=${utm_medium}&utm_campaign=${utm_campaign}&utm_term=${utm_term}&canal=whatsapp`;\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 || !utm_medium || !utm_campaign || !utm_term) {\n throw new Error(\"Missing required parameters\");\n }\n\n const url = `${apiUrl}/atendimento?id_produto_terceiro=${productId}&utm_source=${utm_source}&utm_medium=${utm_medium}&utm_campaign=${utm_campaign}&utm_term=${utm_term}`;\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":";AAAA,OAAO,SAAS,YAAAA,iBAAgB;;;ACKzB,SAAS,KACd,YAA2B,OAC3B,YACA,gBACA;AACA,SAAO;AAAA,kBACS,cAAc,IAAI;AAAA;AAAA,qBAEf,SAAS;AAAA,sBACR,kBAAkB,IAAI;AAAA;AAE5C;AAaO,IAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWnB,IAAM,gBAAgB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAatB,IAAM,cAAc;AAAA,EACzB,QAAQ;AACV;;;ACrDA,OAAO,YAAY;AAEZ,IAAM,YAAY,OAAO;AAAA,IAC5B,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMK,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA;AAUlC,IAAM,kBAAkB,OAAO;AAAA,IAClC,UAAU;AAAA,IACV,KAAK,OAAO,UAAU,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMf,CAAC,UAAW,MAAM,OAAO,SAAS,EAAG;AAAA;;;AC7BzD,SAAS,iBAAiB;AAC1B,SAAS,yBAAyB;AAE3B,IAAM,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwI5B,IAAM,aAAuB,MAAM;AACjC,YAAU,MAAM;AACd,UAAM,OAAO,SAAS,cAAc,MAAM;AAC1C,SAAK,OACH;AACF,SAAK,MAAM;AACX,aAAS,KAAK,YAAY,IAAI;AAAA,EAChC,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;AAEA,IAAO,iBAAQ;;;ACvJf,SAAS,QAAQ,YAAAC,iBAAgB;;;ACAjC,SAAS,aAAAC,kBAAiB;AAE1B,SAAS,gBACP,KACA,6BACA,cAAwB,CAAC,GACzB;AACA,EAAAA,WAAU,MAAM;AACd,aAAS,mBAAmB,OAAmB;AAE7C,UAAI,CAAC,IAAI,QAAS;AAElB,YAAM,iBAAiB,CAAC,IAAI,QAAQ,SAAS,MAAM,MAAc;AAGjE,YAAM,4BAA4B,YAAY,KAAK,CAAC,OAAO;AACzD,YAAI,UAAU,MAAM;AACpB,eAAO,SAAS;AACd,cAAI,QAAQ,OAAO,IAAI;AACrB,mBAAO;AAAA,UACT;AACA,oBAAU,QAAQ;AAAA,QACpB;AACA,eAAO;AAAA,MACT,CAAC;AAGD,UAAI,kBAAkB,CAAC,2BAA2B;AAChD,oCAA4B,KAAK;AAAA,MACnC;AAAA,IACF;AAEA,aAAS,iBAAiB,aAAa,kBAAkB;AACzD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,kBAAkB;AAAA,IAC9D;AAAA,EACF,GAAG,CAAC,KAAK,6BAA6B,WAAW,CAAC;AACpD;AAEA,IAAO,0BAAQ;;;ACtCf,OAAOC,aAAY;AAEZ,IAAM,kBAAkBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAchC,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,MAKb,aAAa;AAAA;AAAA;AAIZ,IAAM,mBAAmBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBhC,IAAM,gBAAgBA,QAAO;AAAA,IAChC,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcX,IAAM,oBAAoBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAUjB,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgBlC,IAAM,kBAAkBA,QAAO;AAAA;AAAA;AAAA;AAK/B,IAAM,qBAAqBA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAalC,IAAM,YAAYA,QAAO;AAAA;AAAA;AAAA;AAAA;;;AF3FhC,SAAS,KAAK,mBAAmB,4BAA4B;;;AGb7D,OAAOC,aAAY;AAEZ,IAAM,eAAeA,QAAO;AAAA,IAC/B,KAAK,KAAK,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQT,KAAK,UAAU,QAAQ,CAAC;AAAA,MACxB,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAZ,IAAM,UAAkC;AAAA,EAC7C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;ACHQ,SAKE,KALF;AAZR,IAAM,SAAS,CAAC,EAAE,gBAAgB,YAAY,MAAY;AAExD,QAAM,QAAQ;AAAA,IACZ,EAAE,MAAK,4BAA4B,MAAK,kBAAkB;AAAA,IAC1D,EAAE,MAAK,0BAA0B,MAAK,SAAS;AAAA,IAC/C,EAAE,MAAK,mBAAmB,MAAK,uBAAuB;AAAA,EACxD;AAEA,SACE,oBAAC,gBAEG,gBAAM,IAAI,CAAC,KAAK,UAChB;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,UAAU,cAAc,WAAW;AAAA,MAE9C,SAAU,MAAM,eAAe,KAAK;AAAA,MAEpC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAM,IAAI;AAAA,YACV,QAAS;AAAA,YACT,KAAK,QAAQ,IAAI,IAAK;AAAA,YACtB,OAAQ;AAAA;AAAA,QACV;AAAA,QACE,IAAI;AAAA;AAAA;AAAA,IATA,IAAI;AAAA,EAUZ,CACD,GAEH;AAEJ;AAEA,IAAO,iBAAQ;;;ACzCf,OAAOC,aAAY;AAEZ,IAAMC,aAAYD,QAAO;AAAA,IAC5B,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAMK,YAAY,MAAM;AAAA;AAAA;AAAA;AAAA;AAUlC,IAAME,mBAAkBF,QAAO;AAAA,IAClC,UAAU;AAAA,IACV,KAAK,OAAO,UAAU,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKf,CAAC,UAAW,MAAM,OAAO,SAAS,EAAG;AAAA;AAGlD,IAAM,QAAQA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA,WAKjB,CAAC,UAAU,MAAM,cAAc,cAAc;AAAA;AAGjD,IAAM,OAAOA,QAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAMhB,CAAC,UAAU,MAAM,cAAc,cAAc;AAAA;AAGjD,IAAM,2BAA2BA,QAAO;AAAA,IAC3C,KAAK,QAAQ,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeX,IAAM,iBAAiBA,QAAO;AAAA,IACjC,KAAK,OAAO,UAAU,eAAe,CAAC;AAAA,IACtC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACjEP,IAAM,kBAAkB,CAAC,QAAgB;AAE9C,QAAM,iBACJ,OAAO,eAAe,SAAY,OAAO,aAAa,OAAO;AAC/D,QAAM,gBACJ,OAAO,cAAc,SAAY,OAAO,YAAY,OAAO;AAE7D,QAAM,QAAQ,OAAO,aACjB,OAAO,aACP,SAAS,gBAAgB,cACzB,SAAS,gBAAgB,cACzB,OAAO;AACX,QAAM,SAAS,OAAO,cAClB,OAAO,cACP,SAAS,gBAAgB,eACzB,SAAS,gBAAgB,eACzB,OAAO;AAEX,QAAM,aAAa,QAAQ,OAAO,OAAO;AACzC,QAAM,IAAI;AACV,QAAM,IAAI;AACV,QAAM,QAAQ,QAAQ,KAAK,IAAI,aAAa;AAC5C,QAAM,OAAO,SAAS,KAAK,IAAI,aAAa;AAE5C,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS,IAAI,UAAU;AAAA,eACZ,IAAI,UAAU;AAAA,YACjB,GAAG;AAAA,aACF,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOf;AACF;;;ACuBM,gBAAAG,MAYQ,QAAAC,aAZR;AA5CN,IAAM,iBAAiB,CAAC;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAc;AACZ,QAAM,eAAe,YAAY;AAC/B,QAAI;AACF,UAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU;AAC1E,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAEA,YAAM,MAAM,GAAG,MAAM,oCAAoC,SAAS,eAAe,UAAU,eAAe,UAAU,iBAAiB,YAAY,aAAa,QAAQ;AACtK,sBAAgB,GAAG;AAAA,IACrB,SAAS,OAAO;AACd,cAAQ,MAAM,0BAA0B,KAAK;AAAA,IAC/C;AAAA,EACF;AAEA,QAAM,cAAc,YAAY;AAC9B,QAAI;AACF,UAAI,CAAC,aAAa,CAAC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,UAAU;AAC1E,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAEA,YAAM,MAAM,GAAG,MAAM,oCAAoC,SAAS,eAAe,UAAU,eAAe,UAAU,iBAAiB,YAAY,aAAa,QAAQ;AACtK,sBAAgB,GAAG;AAAA,IACrB,SAAS,OAAO;AACd,cAAQ,MAAM,yBAAyB,KAAK;AAAA,IAC9C;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ,EAAE,OAAM,4BAA4B,MAAK,+BAA+B,SAAQ,MAAM,aAAa,GAAG,MAAK,WAAW;AAAA,IACtH,EAAE,OAAM,wBAAwB,MAAK,+BAA+B,SAAQ,MAAM,YAAY,GAAG,MAAK,OAAO;AAAA,IAC7G,EAAE,OAAM,4BAA4B,MAAK,+BAA+B,SAAQ,MAAM,mBAAmB,CAAC,GAAG,MAAK,UAAU;AAAA,EAC9H;AAEA,SACE,gBAAAA,MAAC,SAEC;AAAA,oBAAAD,KAAC,SAAM,sCAEP;AAAA,IAEA,gBAAAA,KAAC,QAAK,4DAEN;AAAA,IAEA,gBAAAA,KAAC,4BACG,gBAAM,IAAI,CAAC,UACX,gBAAAA,KAAC,YAA2B,SAAU,MAAM,SAC1C,0BAAAC,MAAC,kBACC;AAAA,sBAAAA,MAAC,SACC;AAAA,wBAAAD,KAAC,QAAI,gBAAM,OAAM;AAAA,QACjB,gBAAAA,KAAC,OAAG,gBAAM,MAAK;AAAA,SACjB;AAAA,MAEF,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,KAAI;AAAA,UACJ,eAAY;AAAA,UACZ,QAAS;AAAA,UACT,KAAK,QAAQ,MAAM,IAAI;AAAA,UACvB,OAAQ;AAAA;AAAA,MACV;AAAA,OACA,KAdY,MAAM,KAepB,CACD,GACH;AAAA,KAEF;AAEJ;AAEA,IAAO,0BAAQ;;;AC9Ff,SAAS,aAAAE,YAAW,gBAAgB;AAI7B,SAAS,gBAA4B;AAC1C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAqB,SAAS;AAElE,EAAAA,WAAU,MAAM;AACd,UAAM,YAAY,UAAU,aAAa,UAAU;AAEnD,QAAI,WAAW,KAAK,SAAS,GAAG;AAC9B,oBAAc,SAAS;AAAA,IACzB,WAAW,mBAAmB,KAAK,SAAS,GAAG;AAC7C,oBAAc,QAAQ;AAAA,IACxB,OAAO;AACL,oBAAc,SAAS;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;;;ACSM,SAKE,UALF,OAAAC,MAKE,QAAAC,aALF;AAxBN,IAAM,SAAS,MAAM;AACnB,QAAM,SAAS,cAAc;AAC7B,QAAM,aAAa,WAAW,YAAY,6EAA6E;AACvH,QAAM,aAAa,WAAW,YAAY,sBAAsB;AAChE,QAAM,gBAAgB,WAAW,YAAY,4CAA4C;AAEzF,QAAM,QAAQ;AAAA,IACZ,EAAE,OAAM,gCAAgC,MAAK,+BAA+B,MAAK,UAAU,MAAK,8CAA+C;AAAA,IAC/I,EAAE,OAAM,uCAAuC,MAAK,eAAe,MAAK,YAAY,MAAK,WAAW;AAAA,EACtG;AAEA,QAAM,cAAc;AAAA,IAClB,EAAE,OAAM,kDAAkD,MAAK,2CAA2C,MAAK,qBAAqB,MAAK,2EAA2E;AAAA,IACpN,EAAE,OAAM,8CAA8C,MAAK,mCAAmC,MAAK,aAAa,MAAK,8DAA8D;AAAA,EACrL;AAEA,WAAS,2BAA2B,OAAc;AAChD,UAAM,YAAY;AAClB,WAAO,UAAU,aAAa,WAAW;AAAA,EAC3C;AAEA,SACE,gBAAAA,MAAC,SAEC;AAAA,oBAAAD,KAAC,SAAM,uCAEP;AAAA,IAEA,gBAAAA,KAAC,QACC,0BAAAC,MAAA,YAAE;AAAA;AAAA,MAEA,gBAAAD,KAAC,QAAE;AAAA,MAAE,gBAAAA,KAAC,QAAE;AAAA,MAAE;AAAA,OAEZ,GACF;AAAA,IAEA,gBAAAA,KAAC,4BACC,0BAAAC,MAAA,YACI;AAAA,YAAM,IAAI,CAAC,MAAM,UACjB,gBAAAD;AAAA,QAAC;AAAA;AAAA,UAEC,MAAO,KAAK;AAAA,UACZ,QAAO;AAAA,UAAS,KAAI;AAAA,UACpB,OAAO,2BAA2B,KAAK,IAAI,EAAE,SAAQ,OAAO,IAAI,CAAC;AAAA,UAEjE,0BAAAC,MAAC,kBACC;AAAA,4BAAAA,MAAC,SACC;AAAA,8BAAAD,KAAC,QAAK,eAAK,OAAO;AAAA,cAClB,gBAAAA,KAAC,OAAG,eAAK,MAAK;AAAA,eAChB;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAI;AAAA,gBACJ,eAAY;AAAA,gBACZ,QAAS;AAAA,gBACT,KAAK,QAAQ,KAAK,IAAI;AAAA,gBACtB,OAAQ;AAAA;AAAA,YACV;AAAA,aACF;AAAA;AAAA,QAjBM,KAAK;AAAA,MAkBb,CACD;AAAA,MAEC,WAAW,aACX,YAAY,IAAI,CAAC,SACf,gBAAAA;AAAA,QAAC;AAAA;AAAA,UAEC,MAAO,KAAK;AAAA,UACZ,QAAO;AAAA,UAAS,KAAI;AAAA,UAEpB,0BAAAC,MAAC,kBACC;AAAA,4BAAAA,MAAC,SACC;AAAA,8BAAAD,KAAC,QAAK,eAAK,OAAO;AAAA,cAClB,gBAAAA,KAAC,OAAG,eAAK,MAAK;AAAA,eAChB;AAAA,YACA,gBAAAA;AAAA,cAAC;AAAA;AAAA,gBACC,KAAI;AAAA,gBACJ,eAAY;AAAA,gBACZ,QAAS;AAAA,gBACT,KAAK,QAAQ,KAAK,IAAI;AAAA,gBACtB,OAAQ;AAAA;AAAA,YACV;AAAA,aACF;AAAA;AAAA,QAhBM,KAAK;AAAA,MAiBb,CACD;AAAA,OAGL,GACF;AAAA,KAEF;AAEJ;AAEA,IAAO,sBAAQ;;;AClFT,gBAAAE,MAgBU,QAAAC,aAhBV;AAXN,IAAM,QAAQ,MAAM;AAClB,QAAM,QAAQ;AAAA,IACZ,EAAE,OAAM,oBAAoB,MAAK,8BAA8B,MAAK,QAAQ,MAAK,+BAA+B;AAAA,IAChH,EAAE,OAAM,gBAAgB,MAAK,+BAA+B,MAAK,eAAe,MAAK,8CAA8C;AAAA,IACnI,EAAE,OAAM,gCAA2B,MAAK,+DAAuD,MAAK,QAAQ,MAAK,qDAAqD;AAAA,IACtK,EAAE,OAAM,mBAAmB,MAAK,gCAAgC,MAAK,wBAAwB,MAAK,yCAAyC;AAAA,EAC7I;AAEA,SACE,gBAAAA,MAAC,SAEC;AAAA,oBAAAD,KAAC,SAAM,6BAEP;AAAA,IAEA,gBAAAA,KAAC,QAAK,sDAEN;AAAA,IAEA,gBAAAA,KAAC,4BACG,gBAAM,IAAI,CAAC,SACT,gBAAAA;AAAA,MAAC;AAAA;AAAA,QAEC,MAAO,KAAK;AAAA,QACZ,QAAO;AAAA,QAAS,KAAI;AAAA,QAEpB,0BAAAC,MAAC,kBACC;AAAA,0BAAAA,MAAC,SACC;AAAA,4BAAAD,KAAC,QAAK,eAAK,OAAO;AAAA,YAClB,gBAAAA,KAAC,OAAG,eAAK,MAAK;AAAA,aAChB;AAAA,UAEF,gBAAAA;AAAA,YAAC;AAAA;AAAA,cACC,KAAI;AAAA,cACJ,eAAY;AAAA,cACZ,QAAS;AAAA,cACT,KAAM,QAAQ,KAAK,IAAI;AAAA,cACvB,OAAQ;AAAA;AAAA,UACV;AAAA,WACA;AAAA;AAAA,MAjBM,KAAK;AAAA,IAkBb,CACH,GACH;AAAA,KAEF;AAEJ;AAEA,IAAO,sBAAQ;;;AX9Bf,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAoCG,qBAAAE,WAAA,OAAAC,MAO3B,QAAAC,aAP2B;AAvBjC,IAAM,WAAW,CAAC;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAY;AACV,QAAM,MAAM,OAA8B,IAAI;AAC9C,QAAM,CAAE,aAAa,cAAe,IAAIC,UAAS,CAAC;AAElD,QAAM,CAAE,iBAAiB,kBAAmB,IAAIA,UAAS,EAAE;AAE3D,0BAAgB,KAAK,KAAK;AAE1B,QAAM,OAAO;AAAA,IACX;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM,gBAAAF,KAAAD,WAAA,EAAE;AAEjC,QAAM,mBAAmB,KAAK,WAAW,KAAK;AAE9C,SACE,gBAAAE,MAAC,qBAAkB,KAEjB;AAAA,oBAAAA,MAAC,mBACC;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAU,MAAM,mBAAmB,EAAE;AAAA,UACrC,MAAO;AAAA,UACP,YAAa,mBAAmB,IAAI,YAAY;AAAA,UAChD,OAAQ;AAAA;AAAA,MACV;AAAA,MAEA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,SAAU;AAAA,UACV,MAAO;AAAA,UACP,OAAQ;AAAA;AAAA,MACV;AAAA,OACF;AAAA,IAEE,mBAAmB,IACnB,gBAAAA,KAAAD,WAAA,EACE,0BAAAC,KAAC,iBACC,0BAAAA,KAAC,iBAAc,UACX,gBAAAC,MAAC,sBACC;AAAA,sBAAAD;AAAA,QAAC;AAAA;AAAA,UACC,MAAO;AAAA,UACP,OAAQ;AAAA;AAAA,MACV;AAAA,MACA,gBAAAA,KAAC,aAAU,0DAAyC;AAAA,OACtD,GAEF,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,iBAAgB;AAAA;AAAA,IAClB,GACF,GACF,GACF,IAEA,gBAAAC,MAAAF,WAAA,EACE;AAAA,sBAAAC,KAAC,oBACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACG;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,MACF,GACJ;AAAA,MAEA,gBAAAA,KAAC,mBACC,0BAAAA;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA;AAAA,MACF,GACF;AAAA,OACF;AAAA,KAGJ;AAEJ;AAEA,IAAO,mBAAQ;;;AJjGX,SACE,OAAAG,MADF,QAAAC,aAAA;AApBJ,IAAM,qBAAqB,MAAM,WAAqD,CAAC;AAAA,EACrF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAG,QAAQ;AACT,QAAM,CAAE,MAAM,OAAQ,IAAIC,UAAS,KAAK;AAExC,WAAS,aAAa;AACpB,YAAQ,IAAI;AAAA,EACd;AAEA,WAAS,QAAQ;AACf,YAAQ,KAAK;AAAA,EACf;AAEA,SACE,gBAAAD,MAAC,aACC;AAAA,oBAAAD,KAAC,kBAAW;AAAA,IACZ,gBAAAA,KAAC,gBAAa;AAAA,IACb,QAAQ,gBAAAA,KAAC,oBAAS,WAAwB,YAAwB,YAAwB,cAA4B,UAAoB,QAAkB,UAAsB,OAAQ,MAAM,MAAM,GAAE;AAAA,IACzM,gBAAAA,KAAC,mBAAgB,KAAU,MAAc,SAAS,MAAM,WAAW,GACjE,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,QAAQ,SAAS;AAAA,QACtB,QAAS;AAAA,QACT,OAAQ;AAAA,QACR,KAAI;AAAA,QACJ,WAAY;AAAA;AAAA,IACd,GACF;AAAA,KAEF;AAEJ,CAAC;AAED,mBAAmB,cAAc;AAEjC,IAAO,6BAAQ;","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/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"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mitre-actions-widget",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.7",
|
|
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.38",
|
|
31
31
|
"react-error-boundary": "^5.0.0",
|
|
32
32
|
"react-icons": "^5.5.0"
|
|
33
33
|
},
|