From 38300d6f3c9e7ce98d5d684589d7cca43c565cfe Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Thu, 27 Jun 2024 15:46:24 -0400 Subject: [PATCH 01/18] Privacy policy doc and banner --- apps/connect/package-lock.json | 41 ++- apps/connect/package.json | 3 +- apps/connect/src/App.tsx | 16 +- apps/connect/src/assets/imgs/arrow.svg | 3 + apps/connect/src/assets/imgs/cookie.svg | 9 + apps/connect/src/components/atoms/Banner.tsx | 72 +++++ .../src/components/pages/PrivacyPolicy.tsx | 247 ++++++++++++++++++ apps/connect/src/main.tsx | 5 +- apps/connect/src/utils/constants.ts | 3 + apps/connect/src/utils/styles.ts | 7 + 10 files changed, 402 insertions(+), 4 deletions(-) create mode 100644 apps/connect/src/assets/imgs/arrow.svg create mode 100644 apps/connect/src/assets/imgs/cookie.svg create mode 100644 apps/connect/src/components/atoms/Banner.tsx create mode 100644 apps/connect/src/components/pages/PrivacyPolicy.tsx create mode 100644 apps/connect/src/utils/constants.ts create mode 100644 apps/connect/src/utils/styles.ts diff --git a/apps/connect/package-lock.json b/apps/connect/package-lock.json index 96c5ce470..70a01ca07 100644 --- a/apps/connect/package-lock.json +++ b/apps/connect/package-lock.json @@ -28,7 +28,8 @@ "dompurify": "^3.0.6", "mixpanel-browser": "^2.49.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "^6.24.0" }, "devDependencies": { "@types/dompurify": "^3.0.5", @@ -9174,6 +9175,14 @@ } } }, + "node_modules/@remix-run/router": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.0.tgz", + "integrity": "sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.14.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.0.tgz", @@ -25231,6 +25240,36 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.0.tgz", + "integrity": "sha512-sQrgJ5bXk7vbcC4BxQxeNa5UmboFm35we1AFK0VvQaz9g0LzxEIuLOhHIoZ8rnu9BO21ishGeL9no1WB76W/eg==", + "dependencies": { + "@remix-run/router": "1.17.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8" + } + }, + "node_modules/react-router-dom": { + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.0.tgz", + "integrity": "sha512-960sKuau6/yEwS8e+NVEidYQb1hNjAYM327gjEyXlc6r3Skf2vtwuJ2l7lssdegD2YjoKG5l8MsVyeTDlVeY8g==", + "dependencies": { + "@remix-run/router": "1.17.0", + "react-router": "6.24.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", diff --git a/apps/connect/package.json b/apps/connect/package.json index 0c4e8d296..3742a12d8 100644 --- a/apps/connect/package.json +++ b/apps/connect/package.json @@ -35,7 +35,8 @@ "dompurify": "^3.0.6", "mixpanel-browser": "^2.49.0", "react": "^18.2.0", - "react-dom": "^18.2.0" + "react-dom": "^18.2.0", + "react-router-dom": "^6.24.0" }, "devDependencies": { "@types/dompurify": "^3.0.5", diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 0ea2918d5..50c7a92c9 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -11,6 +11,10 @@ import { useQueryParams } from "./hooks/useQueryParams"; import { useFormatAssetParam } from "./hooks/useFormatAssetParam"; import WormholeConnect from "@wormhole-foundation/wormhole-connect"; import { eventHandler } from "./providers/telemetry"; +import { useRoutes } from "react-router-dom"; +import PrivacyPolicies from "./components/pages/PrivacyPolicy"; +import { PrivacyPolicyPath, USDCPath } from "./utils/constants"; +import Banner from "./components/atoms/Banner"; const defaultConfig: WormholeConnectConfig = { ...wormholeConnectConfig, @@ -47,6 +51,16 @@ export default function Root() { useEffect(() => { localStorage.setItem("Connect Config", JSON.stringify(config, null, 2)); }, [config]); + + const Connect = <> + + + + const routes = useRoutes([ + { path: '/', element: Connect }, + { path: USDCPath, element: Connect }, + { path: PrivacyPolicyPath, element: }, +]); return ( <> {versions.map(({ appName, version }, idx) => ( @@ -60,7 +74,7 @@ export default function Root() { - + {routes} ); } diff --git a/apps/connect/src/assets/imgs/arrow.svg b/apps/connect/src/assets/imgs/arrow.svg new file mode 100644 index 000000000..b7d03bcfe --- /dev/null +++ b/apps/connect/src/assets/imgs/arrow.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/connect/src/assets/imgs/cookie.svg b/apps/connect/src/assets/imgs/cookie.svg new file mode 100644 index 000000000..89cc0bf80 --- /dev/null +++ b/apps/connect/src/assets/imgs/cookie.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx new file mode 100644 index 000000000..a61ceea94 --- /dev/null +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -0,0 +1,72 @@ +import { Button, styled } from '@mui/material'; +import { useState } from 'react'; +import { PrivacyPolicyPath } from '../../utils/constants'; +import cookie from "../../assets/imgs/cookie.svg"; +import { Link } from '../../utils/styles'; + +const BannerContainer = styled("div")(({ theme }) => ({ + display: "flex", + justifyContent: "center", + alignItems: "center", + position: "fixed", + bottom: 60, + left: 30, + right: 30, + zIndex: 100, + [theme.breakpoints.down("sm")]: { + bottom: 75, + } +})); + +const Content = styled("div")(({ theme }) => ({ + display: "flex", + justifyContent: "center", + alignItems: "center", + position: "fixed", + padding: 10, + backgroundColor: "#070528", + gap: 18, + borderRadius: 12, + margin: 26, + mixBlendMode: "normal", + backdropFilter: "blur(60px)", + [theme.breakpoints.down("sm")]: { + margin: 5, + borderRadius: 0, + }, +})); + +const CloseButton = styled(Button)(() => ({ + color: "#070528", + backgroundColor: "white", + borderRadius: 6, + fontSize: 16, + maxHeight: 28, + minWidth: 67, + textTransform: "capitalize", + "&:hover": { + color: "white", + }, +})); +const Banner = () => { + const [showBanner, setShowBanner] = useState(true); + + if (!showBanner) { + // TODO this data could be stored in a cookie or localstorage? + return null; + } + return ( + + + cookie +
+ This website is designed to enhance your experience. By continuing to use this site, you consent to our {" "} + Privacy Policy +
+ setShowBanner(false)}>Close +
+
+ ); +}; + +export default Banner; \ No newline at end of file diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx new file mode 100644 index 000000000..eb52fb52d --- /dev/null +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -0,0 +1,247 @@ +import { Button, Container, styled } from "@mui/material"; +import arrow from "../../assets/imgs/arrow.svg"; +import { useNavigate } from "react-router-dom"; +import { Link } from "../../utils/styles"; + +const TitleItem = styled("li")(() => ({ + paddingLeft: 25 +})); + +const P = styled("p")(() => ({ + color: "#9C9DBF", + fontSize: 14, + lineHeight: "20px", +})); + +const H1 = styled("h1")(() => ({ + fontSize: 24, + lineHeight: "24px", + fontWeight: 700, +})); + +const H2 = styled("h2")(() => ({ + fontSize: 20, + lineHeight: "24px", + fontWeight: 700, +})); + +const H3 = styled("h3")(() => ({ + fontSize: 17, + lineHeight: "20px", + fontWeight: 700, +})); + +const ContactButton = styled(Button)(() => ({ + fontSize: 16, + lineHeight: "24px", + fontWeight: 400, + textTransform: "lowercase", + borderRadius: 8, + padding: "8px 16px", + backgroundColor: "#272745", +})); + +const TitleContainer = styled("div")(() => ({ + display: "flex", + flexDirection: "row", + alignItems: "center", + gap: 20, +})); + +const GoBackButton = styled(Button)(() => ({ + minWidth: 24, + height: 24, +})); + +const PrivacyPolicies = () => { + + const navigate = useNavigate(); + return ( + + {/* TODO goback Button */} + + navigate(-1)}> + arrow + +

Privacy Policies

+
+ {/* TODO: Update the date when we doo the release... Or the preview? */} +

Last Updated: May 17, 2024

+

+ xLabs (the “Company,” “we,” “us,” or “our”) is committed to protecting your privacy. It is our policy to respect your privacy and comply with any applicable laws and regulations regarding any personal information we may collect about you, including across our website, portalbridge.com, and other sites we own and operate (collectively, the “Platform”). This Privacy Policy (the "Policy") outlines the data collection, processing, and management practices of the Company in relation to services provided on the Platform (the “Services”). By using our Platform, you agree to the collection, use, and disclosure of your personal information in accordance with this Policy. +

+

+ In the event our Platform contains links to third-party sites and services, please be aware that those sites and services have their own privacy policies. After following a link to any third-party content, you should read their posted privacy policy information about how they collect and use personal information. This Privacy Policy does not apply to any of your activities after you leave our Platform. +

+
    +

    INFORMATION WE COLLECT

    +
      +

      Information About You That You Share With Us Directly

      +
      +

      When you use Services on the Platform you may give us personal information directly (for example, details you connect your wallet to the Platform), and we will store that personal information on our systems and process it for the purposes described in this Privacy Policy.

      +

      Depending on the Service, the personal information we collect will be relevant to providing that Service and include some or all of the following non-personally identifiable data:

      +

      +

        +
      • Your public blockchain wallet address;
      • +
      • Amount of any asset involved in a transaction; and
      • +
      • Any additional information required for verification or participation in the Service offered.
      • +
      +

      +

      We may also collect personal information from you when you communicate with us, such as your name, email address, and any other information you voluntarily provide.

      +
      +

      Information You Generate Using Our Services

      +
      +

      Information you generate while using our Services may be retained to protect the safety and well-being of our users; to protect our rights and property in connection with our Services; to conduct research; to operate, improve, personalize, and optimize our Services and our users’ experiences, including through the use of analytics; and to manage and deliver advertising. Where required by law, we will seek your consent for this.

      +
      +

      Cookies and Other Automated Information Collection

      +
      +

      We use cookies and other similar technologies (e.g., beacons, pixel tags, clear gifs, and device identifiers). We, our service providers, and our business partners use these cookies and other similar technologies to process information, which may include:

      +

      +

        +
      • IP address;
      • +
      • the type of computer or mobile device you are using;
      • +
      • platform type (like Apple iOS or Android);
      • +
      • your operating system version;
      • +
      • the screen resolution of your monitor(s);
      • +
      • your mobile device’s identifiers, like your MAC Address, Apple Identifier For Advertising (IDFA), and/or Android Advertising ID (AAID);
      • +
      • application performance and de-bugging information;
      • +
      • your browser type and language;
      • +
      • referring and exit pages, and URLs;
      • +
      • the number of clicks on an app feature or web page;
      • +
      • the amount of time spent on an app feature or web page;
      • +
      • domain names;
      • +
      • landing pages;
      • +
      • pages viewed and the order of those pages; and/or
      • +
      • what your current progress is in our Services and the date and time of activity.
      • +
      +

      + +
      +
    + +

    PROCESSING AND USE OF YOUR PERSONAL INFORMATION

    +
    +

    We only collect and use your personal information when we have a legitimate reason for doing so. Most commonly, we will use your personal data in the following circumstances:

    +

    +

      +
    • Provide our Services and create accounts in those Services
    • +
    • Monitor and maintain the security and integrity of our Platform
    • +
    • Improve, optimize and personalize our Services and our user’s experiences
    • +
    • Communicate with you about the Services you are using
    • +
    • Customer service and managing user communications, including technical support
    • +
    • Protect the safety and well-being of our users and others
    • +
    • Where you provide sensitive or special category personal information to us
    • +
    • Maintain our business operations, including any business transition, like a merger, acquisition by another company, or sale of all or part of our assets
    • +
    • For security purposes and to prevent fraud or potentially illegal activities, and to enforce the applicable Terms of Service
    • +
    • Cooperate with public authorities and law enforcement where lawfully permitted or required
    • +
    • Protect our rights, including compliance with applicable legal obligations, resolving any disputes we may have, and to administer our agreements with third parties
    • +
    +

    + +
    + +

    DISCLOSURE OF PERSONAL INFORMATION TO THIRD PARTIES

    +
    +

    We share your personal data with our third-party service providers, agents, subcontractors and other associated organizations, our group companies, and affiliates (as described below) in order to complete tasks and provide the Platform and Services to you on our behalf. When using third party service providers, they are required to respect the security of your personal data and to treat it in accordance with the law.

    +

    We may disclose personal information to:

    +

    +

      +
    • a parent, subsidiary, or affiliate of the Company
    • +
    • third-party service providers for the purpose of enabling them to provide their services, including (without limitation) IT service providers, data storage, hosting and server providers, analytics, error loggers, debt collectors, maintenance or problem-solving providers, professional advisors, and payment systems operators
    • +
    • our employees, contractors, and/or related entities
    • +
    • our existing or potential agents or business partners
    • +
    • credit reporting agencies, courts, tribunals, and regulatory authorities, in the event you fail to pay for goods or services we have provided to you
    • +
    • courts, tribunals, regulatory authorities, and law enforcement officers, as required by law, in connection with any actual or prospective legal proceedings, or in order to establish, exercise, or defend our legal rights
    • +
    • third parties, including agents or sub-contractors, who assist us in providing information, products, or services
    • +
    • third parties to collect and process data
    • +
    • an entity that buys, or to which we transfer all or substantially all of our assets and business
    • +
    +

    +
    +

    SECURITY OF YOUR PERSONAL INFORMATION

    +
    +

    We implement reasonable and appropriate security measures to help protect the security of your information both online and offline and to ensure that your data is treated securely and in accordance with this Privacy Policy. These measures vary based upon the sensitivity of your information. It is important that you protect and maintain the security of your personal information, including the secure storage of any keys or other wallet data used to access your crypto assets.

    +

    While we take precautions against possible security breaches of our Services and our customer databases and records, no website or Internet transmission is completely secure. We cannot guarantee that unauthorized access, hacking, data loss, or other breaches will never occur, and we cannot guarantee the security of your information while it is being transmitted to our Service. Any transmission is at your own risk.

    +
    + +

    HOW LONG WE KEEP YOUR PERSONAL INFORMATION

    +
    +

    How long we retain your personal information depends on why we collected it and how we use it, but we will not retain your personal information for longer than is necessary to provide you with the Services or for our legal requirements.

    +

    We will retain personal information that is connected with your account and/or the Services you use from us for as long as you are actively using Services on the Platform. However, you acknowledge that we may retain some information after you have ceased to use the Platform’s Services where necessary to enable us to meet our legal obligations or to exercise, defend, or establish our rights.

    +
    + +

    YOUR RIGHTS AND CONTROLLING YOUR PERSONAL INFORMATION

    +
    +

    + Your choice: By providing personal information to us, you understand we will collect, hold, use, and disclose your personal information in accordance with this Privacy Policy. You may choose to reject cookies and certain other tracking technologies by changing the setting of your browser. You do not have to provide personal information to us, however, if you do not, it may affect your use of our Platform or the products and/or services offered on or through it. You may also request details of the personal information that we hold about you. +

    +

    + Information from third parties: If we receive personal information about you from a third party, we will protect it as set out in this Privacy Policy. If you are a third party providing personal information about somebody else, you represent and warrant that you have such person’s consent to provide the personal information to us. +

    +

    Marketing permission and Unsubscribing: If you have previously agreed to us using your personal information for direct marketing purposes, you may change your mind at any time by opting out of the promotional communications or contacting us using the details below. To unsubscribe from our email database or opt-out of communications (including marketing communications), please contact us using the details provided in this privacy policy or opt-out using the opt-out facilities provided in the communication. We may need to request specific information from you to help us confirm your identity.

    +

    Correction: If you believe that any information we hold about you is inaccurate, out of date, incomplete, irrelevant, or misleading, please contact us using the details provided in this privacy policy. We will take reasonable steps to correct any information found to be inaccurate, incomplete, misleading, or out of date.

    +

    Non-discrimination: We will not discriminate against you for exercising any of your rights over your personal information. Unless your personal information is required to provide you with a particular service or offer (for example providing user support), we will not deny you goods or services and/or charge you different prices or rates for goods or services, including through granting discounts or other benefits, or imposing penalties, or provide you with a different level or quality of goods or services.

    +

    Notification of data breaches: We will comply with laws applicable to us in respect of any data breach.

    +

    Complaints: If you believe that we have breached a relevant data protection law and wish to make a complaint, please contact us using the details below and provide us with full details of the alleged breach. We will promptly investigate your complaint and respond to you, in writing, setting out the outcome of our investigation and the steps we will take to deal with your complaint. You also have the right to contact a regulatory body or data protection authority in relation to your complaint.

    +

    No fee usually required: You will not have to pay a fee to access your personal data (or to exercise any of the other rights). However, we may charge a reasonable fee if your request is manifestly unfounded or excessive. Alternatively, we could refuse to comply with your request in these circumstances. We may need to request specific information from you to help us confirm your identity and ensure your right to access your personal data (or to exercise any of your other rights). This is a security measure to ensure that personal data is not disclosed to any person who has no right to receive it. We may also contact you to ask you for further information in relation to your request to speed up our response.

    +

    Period for replying to a legitimate request: We try to respond to all legitimate requests within one month. Occasionally it may take us longer than a month if your request is particularly complex or you have made a number of requests. In this case, we will notify you and keep you updated. +
    + Notwithstanding the above, we cannot edit or delete any information that is stored on a blockchain as we do not have custody or control over any blockchains. The information stored on the blockchain may include purchases, sales, and transfers related to any blockchain address associated with you. +

    +
    + +

    CHILDREN’S PRIVACY

    +
    +

    The Platform is not directed to children under 18 (or other age as required by local law), and we do not knowingly collect personal information from children. If you are a parent or guardian and believe your child has uploaded personal information to our Platform without your consent, you may contact us. If we become aware that a child has provided us with personal information in violation of applicable law, we will delete any personal information we have collected, unless we have a legal obligation to keep it, and terminate the child’s account if applicable.

    +
    + +

    BUSINESS TRANSFERS

    +
    +

    If we or our assets are acquired, or in the unlikely event that we go out of business or enter bankruptcy, we would include data, including your personal information, among the assets transferred to any parties who acquire us. You acknowledge that such transfers may occur, and that any parties who acquire us may, to the extent permitted by applicable law, continue to use your personal information according to this Privacy Policy, which they will be required to assume as it is the basis for any ownership or use rights we have over such information.

    +
    + +

    INTERNATIONAL TRANSFERS

    +
    +

    All information processed by us may be transferred, processed, and stored anywhere in the world, including, but not limited to, the United States, members of the European Union, or other countries, which may have data protection laws that are different from the laws where you live. We endeavor to safeguard your information consistent with the requirements of applicable laws.

    +
    + +

    LIMITS OF OUR POLICY

    +
    +

    Our Platform may link to external sites that are not operated by us. Please be aware that we have no control over the content and policies of those sites and cannot accept responsibility or liability for their respective privacy practices.

    +
    + +

    CHANGES TO THIS POLICY

    +
    +

    At our discretion, we may change this Privacy Policy to reflect updates to our business processes, current acceptable practices, or legislative or regulatory changes. If we decide to change this Policy, we will post the changes here at the same link by which you are accessing this Policy, and if the changes are significant, or if required by applicable law, we will contact you (based on your selected preferences for communications from us) with details of the changes.

    +

    If required by law, we will get your permission or give you the opportunity to opt in to or opt out of, as applicable, any new uses of your personal information.

    +
    + +

    SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS

    +
    +

    This Supplemental Notice for California Residents only applies to our processing of personal information that is subject to the California Consumer Privacy Act of 2018 (the “CCPA”). The CCPA provides California residents with the right to know what categories of personal information we have collected about them, and whether we disclosed that personal information for a business purpose (e.g., to a service provider) in the preceding 12 months. California residents can find this information by visiting: https://www.oag.ca.gov/privacy/ccpa.

    +
    + +

    SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS

    +
    +

    If you are a resident of Nevada, you have the right to opt-out of the sale of certain personal information to third parties who intend to license or sell that personal information. You can exercise this right by contacting us with the subject line “Nevada Do Not Sell Request” and providing us with your name and the email address associated with your account.

    +
    + +

    YOUR RIGHTS AS A DATA SUBJECT (GDPR)

    +
    +

    You have certain rights under applicable legislation, and in particular under Regulation EU 2016/679 (General Data Protection Regulation or ‘GDPR’). You can find out more about the GDPR and your rights by accessing the European Commission’s website.

    +
    +

    CONTACT US FOR QUESTIONS AND REPORTING VIOLATIONS

    +
    +

    If you have any questions, concerns, or complaints about our Privacy Policy or our data collection and processing practices, or if you want to report any security violations to us, or exercise any of your rights under this Privacy Policy, please contact us at the following address:

    +
    + + legal@xlabs.xyz + +

    +
    +
+
+ ); +}; + +export default PrivacyPolicies; \ No newline at end of file diff --git a/apps/connect/src/main.tsx b/apps/connect/src/main.tsx index 8e565790b..9707e1895 100644 --- a/apps/connect/src/main.tsx +++ b/apps/connect/src/main.tsx @@ -7,6 +7,7 @@ import theme from "./theme/portal.ts"; import Background from "./components/atoms/Background.tsx"; import App from "./App.tsx"; import { OpenTelemetryContext, tracer } from "./providers/telemetry.ts"; +import { BrowserRouter } from "react-router-dom"; if (redirects && redirects?.source?.length > 0) { const matcher = new RegExp(redirects.source.join("|")); @@ -24,7 +25,9 @@ ReactDOM.createRoot(document.getElementById("root")!).render( - + + + diff --git a/apps/connect/src/utils/constants.ts b/apps/connect/src/utils/constants.ts new file mode 100644 index 000000000..f25e17273 --- /dev/null +++ b/apps/connect/src/utils/constants.ts @@ -0,0 +1,3 @@ + +export const USDCPath = "/usdc-bridge"; +export const PrivacyPolicyPath = "/privacy-policy"; \ No newline at end of file diff --git a/apps/connect/src/utils/styles.ts b/apps/connect/src/utils/styles.ts new file mode 100644 index 000000000..338cc2f5a --- /dev/null +++ b/apps/connect/src/utils/styles.ts @@ -0,0 +1,7 @@ +import { styled, Link as MuiLink } from "@mui/material"; + +export const Link = styled(MuiLink)(() => ({ + color: "white", + textDecoration: "underline", + fontWeight: 500, +})); From 0ad255eb2dd32298cb0780dd04b05dd0fafc1aab Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Thu, 27 Jun 2024 15:49:22 -0400 Subject: [PATCH 02/18] fix prettier --- apps/connect/src/App.tsx | 18 +- apps/connect/src/components/atoms/Banner.tsx | 21 +- .../src/components/pages/PrivacyPolicy.tsx | 490 +++++++++++++++--- apps/connect/src/utils/constants.ts | 3 +- apps/connect/src/utils/styles.ts | 6 +- 5 files changed, 440 insertions(+), 98 deletions(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 50c7a92c9..6bf7953ed 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -12,7 +12,7 @@ import { useFormatAssetParam } from "./hooks/useFormatAssetParam"; import WormholeConnect from "@wormhole-foundation/wormhole-connect"; import { eventHandler } from "./providers/telemetry"; import { useRoutes } from "react-router-dom"; -import PrivacyPolicies from "./components/pages/PrivacyPolicy"; +import PrivacyPolicy from "./components/pages/PrivacyPolicy"; import { PrivacyPolicyPath, USDCPath } from "./utils/constants"; import Banner from "./components/atoms/Banner"; @@ -52,15 +52,17 @@ export default function Root() { localStorage.setItem("Connect Config", JSON.stringify(config, null, 2)); }, [config]); - const Connect = <> - - - + const Connect = ( + <> + + + + ); const routes = useRoutes([ - { path: '/', element: Connect }, + { path: "/", element: Connect }, { path: USDCPath, element: Connect }, - { path: PrivacyPolicyPath, element: }, -]); + { path: PrivacyPolicyPath, element: }, + ]); return ( <> {versions.map(({ appName, version }, idx) => ( diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index a61ceea94..f1cce3304 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -1,8 +1,8 @@ -import { Button, styled } from '@mui/material'; -import { useState } from 'react'; -import { PrivacyPolicyPath } from '../../utils/constants'; +import { Button, styled } from "@mui/material"; +import { useState } from "react"; +import { PrivacyPolicyPath } from "../../utils/constants"; import cookie from "../../assets/imgs/cookie.svg"; -import { Link } from '../../utils/styles'; +import { Link } from "../../utils/styles"; const BannerContainer = styled("div")(({ theme }) => ({ display: "flex", @@ -15,7 +15,7 @@ const BannerContainer = styled("div")(({ theme }) => ({ zIndex: 100, [theme.breakpoints.down("sm")]: { bottom: 75, - } + }, })); const Content = styled("div")(({ theme }) => ({ @@ -60,13 +60,16 @@ const Banner = () => { cookie
- This website is designed to enhance your experience. By continuing to use this site, you consent to our {" "} - Privacy Policy + This website is designed to enhance your experience. By continuing to + use this site, you consent to our{" "} + Privacy Policy
- setShowBanner(false)}>Close + setShowBanner(false)}> + Close +
); }; -export default Banner; \ No newline at end of file +export default Banner; diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index eb52fb52d..fc3641eba 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -4,7 +4,7 @@ import { useNavigate } from "react-router-dom"; import { Link } from "../../utils/styles"; const TitleItem = styled("li")(() => ({ - paddingLeft: 25 + paddingLeft: 25, })); const P = styled("p")(() => ({ @@ -53,8 +53,7 @@ const GoBackButton = styled(Button)(() => ({ height: 24, })); -const PrivacyPolicies = () => { - +const PrivacyPolicy = () => { const navigate = useNavigate(); return ( @@ -66,36 +65,95 @@ const PrivacyPolicies = () => {

Privacy Policies

{/* TODO: Update the date when we doo the release... Or the preview? */} -

Last Updated: May 17, 2024

- xLabs (the “Company,” “we,” “us,” or “our”) is committed to protecting your privacy. It is our policy to respect your privacy and comply with any applicable laws and regulations regarding any personal information we may collect about you, including across our website, portalbridge.com, and other sites we own and operate (collectively, the “Platform”). This Privacy Policy (the "Policy") outlines the data collection, processing, and management practices of the Company in relation to services provided on the Platform (the “Services”). By using our Platform, you agree to the collection, use, and disclosure of your personal information in accordance with this Policy. + Last Updated: May 17, 2024 +

+

+ xLabs (the “Company,” “we,” “us,” or “our”) + is committed to protecting your privacy. It is our policy to respect + your privacy and comply with any applicable laws and regulations + regarding any personal information we may collect about you, including + across our website, portalbridge.com, and other sites we own and operate + (collectively, the “Platform”). This Privacy Policy (the "Policy") + outlines the data collection, processing, and management practices of + the Company in relation to services provided on the Platform (the + “Services”). By using our Platform, you agree to the collection, use, + and disclosure of your personal information in accordance with this + Policy.

- In the event our Platform contains links to third-party sites and services, please be aware that those sites and services have their own privacy policies. After following a link to any third-party content, you should read their posted privacy policy information about how they collect and use personal information. This Privacy Policy does not apply to any of your activities after you leave our Platform. + In the event our Platform contains links to third-party sites and + services, please be aware that those sites and services have their own + privacy policies. After following a link to any third-party content, you + should read their posted privacy policy information about how they + collect and use personal information. This Privacy Policy does not apply + to any of your activities after you leave our Platform.

    -

    INFORMATION WE COLLECT

    +

    + INFORMATION WE COLLECT +

      -

      Information About You That You Share With Us Directly

      +

      + + Information About You That You Share With Us Directly + +

      -

      When you use Services on the Platform you may give us personal information directly (for example, details you connect your wallet to the Platform), and we will store that personal information on our systems and process it for the purposes described in this Privacy Policy.

      -

      Depending on the Service, the personal information we collect will be relevant to providing that Service and include some or all of the following non-personally identifiable data:

      +

      + When you use Services on the Platform you may give us personal + information directly (for example, details you connect your wallet + to the Platform), and we will store that personal information on + our systems and process it for the purposes described in this + Privacy Policy. +

      +

      + Depending on the Service, the personal information we collect will + be relevant to providing that Service and include some or all of + the following non-personally identifiable data: +

      • Your public blockchain wallet address;
      • Amount of any asset involved in a transaction; and
      • -
      • Any additional information required for verification or participation in the Service offered.
      • +
      • + Any additional information required for verification or + participation in the Service offered. +

      -

      We may also collect personal information from you when you communicate with us, such as your name, email address, and any other information you voluntarily provide.

      +

      + We may also collect personal information from you when you + communicate with us, such as your name, email address, and any + other information you voluntarily provide. +

      -

      Information You Generate Using Our Services

      +

      + Information You Generate Using Our Services +

      -

      Information you generate while using our Services may be retained to protect the safety and well-being of our users; to protect our rights and property in connection with our Services; to conduct research; to operate, improve, personalize, and optimize our Services and our users’ experiences, including through the use of analytics; and to manage and deliver advertising. Where required by law, we will seek your consent for this.

      +

      + Information you generate while using our Services may be retained + to protect the safety and well-being of our users; to protect our + rights and property in connection with our Services; to conduct + research; to operate, improve, personalize, and optimize our + Services and our users’ experiences, including through the use of + analytics; and to manage and deliver advertising. Where required + by law, we will seek your consent for this. +

      -

      Cookies and Other Automated Information Collection

      +

      + + Cookies and Other Automated Information Collection + +

      -

      We use cookies and other similar technologies (e.g., beacons, pixel tags, clear gifs, and device identifiers). We, our service providers, and our business partners use these cookies and other similar technologies to process information, which may include:

      +

      + We use cookies and other similar technologies (e.g., beacons, + pixel tags, clear gifs, and device identifiers). We, our service + providers, and our business partners use these cookies and other + similar technologies to process information, which may include: +

      • IP address;
      • @@ -103,7 +161,11 @@ const PrivacyPolicies = () => {
      • platform type (like Apple iOS or Android);
      • your operating system version;
      • the screen resolution of your monitor(s);
      • -
      • your mobile device’s identifiers, like your MAC Address, Apple Identifier For Advertising (IDFA), and/or Android Advertising ID (AAID);
      • +
      • + your mobile device’s identifiers, like your MAC Address, Apple + Identifier For Advertising (IDFA), and/or Android Advertising + ID (AAID); +
      • application performance and de-bugging information;
      • your browser type and language;
      • referring and exit pages, and URLs;
      • @@ -112,136 +174,412 @@ const PrivacyPolicies = () => {
      • domain names;
      • landing pages;
      • pages viewed and the order of those pages; and/or
      • -
      • what your current progress is in our Services and the date and time of activity.
      • +
      • + what your current progress is in our Services and the date and + time of activity. +

      -
    -

    PROCESSING AND USE OF YOUR PERSONAL INFORMATION

    +

    + PROCESSING AND USE OF YOUR PERSONAL INFORMATION +

    -

    We only collect and use your personal information when we have a legitimate reason for doing so. Most commonly, we will use your personal data in the following circumstances:

    +

    + We only collect and use your personal information when we have a + legitimate reason for doing so. Most commonly, we will use your + personal data in the following circumstances: +

      -
    • Provide our Services and create accounts in those Services
    • -
    • Monitor and maintain the security and integrity of our Platform
    • -
    • Improve, optimize and personalize our Services and our user’s experiences
    • +
    • + Provide our Services and create accounts in those Services +
    • +
    • + Monitor and maintain the security and integrity of our Platform +
    • +
    • + Improve, optimize and personalize our Services and our user’s + experiences +
    • Communicate with you about the Services you are using
    • -
    • Customer service and managing user communications, including technical support
    • +
    • + Customer service and managing user communications, including + technical support +
    • Protect the safety and well-being of our users and others
    • -
    • Where you provide sensitive or special category personal information to us
    • -
    • Maintain our business operations, including any business transition, like a merger, acquisition by another company, or sale of all or part of our assets
    • -
    • For security purposes and to prevent fraud or potentially illegal activities, and to enforce the applicable Terms of Service
    • -
    • Cooperate with public authorities and law enforcement where lawfully permitted or required
    • -
    • Protect our rights, including compliance with applicable legal obligations, resolving any disputes we may have, and to administer our agreements with third parties
    • +
    • + Where you provide sensitive or special category personal + information to us +
    • +
    • + Maintain our business operations, including any business + transition, like a merger, acquisition by another company, or + sale of all or part of our assets +
    • +
    • + For security purposes and to prevent fraud or potentially + illegal activities, and to enforce the applicable Terms of + Service +
    • +
    • + Cooperate with public authorities and law enforcement where + lawfully permitted or required +
    • +
    • + Protect our rights, including compliance with applicable legal + obligations, resolving any disputes we may have, and to + administer our agreements with third parties +

    -
    -

    DISCLOSURE OF PERSONAL INFORMATION TO THIRD PARTIES

    +

    + + DISCLOSURE OF PERSONAL INFORMATION TO THIRD PARTIES + +

    -

    We share your personal data with our third-party service providers, agents, subcontractors and other associated organizations, our group companies, and affiliates (as described below) in order to complete tasks and provide the Platform and Services to you on our behalf. When using third party service providers, they are required to respect the security of your personal data and to treat it in accordance with the law.

    +

    + We share your personal data with our third-party service providers, + agents, subcontractors and other associated organizations, our group + companies, and affiliates (as described below) in order to complete + tasks and provide the Platform and Services to you on our behalf. + When using third party service providers, they are required to + respect the security of your personal data and to treat it in + accordance with the law. +

    We may disclose personal information to:

    • a parent, subsidiary, or affiliate of the Company
    • -
    • third-party service providers for the purpose of enabling them to provide their services, including (without limitation) IT service providers, data storage, hosting and server providers, analytics, error loggers, debt collectors, maintenance or problem-solving providers, professional advisors, and payment systems operators
    • +
    • + third-party service providers for the purpose of enabling them + to provide their services, including (without limitation) IT + service providers, data storage, hosting and server providers, + analytics, error loggers, debt collectors, maintenance or + problem-solving providers, professional advisors, and payment + systems operators +
    • our employees, contractors, and/or related entities
    • our existing or potential agents or business partners
    • -
    • credit reporting agencies, courts, tribunals, and regulatory authorities, in the event you fail to pay for goods or services we have provided to you
    • -
    • courts, tribunals, regulatory authorities, and law enforcement officers, as required by law, in connection with any actual or prospective legal proceedings, or in order to establish, exercise, or defend our legal rights
    • -
    • third parties, including agents or sub-contractors, who assist us in providing information, products, or services
    • +
    • + credit reporting agencies, courts, tribunals, and regulatory + authorities, in the event you fail to pay for goods or services + we have provided to you +
    • +
    • + courts, tribunals, regulatory authorities, and law enforcement + officers, as required by law, in connection with any actual or + prospective legal proceedings, or in order to establish, + exercise, or defend our legal rights +
    • +
    • + third parties, including agents or sub-contractors, who assist + us in providing information, products, or services +
    • third parties to collect and process data
    • -
    • an entity that buys, or to which we transfer all or substantially all of our assets and business
    • +
    • + an entity that buys, or to which we transfer all or + substantially all of our assets and business +

    -

    SECURITY OF YOUR PERSONAL INFORMATION

    +

    + SECURITY OF YOUR PERSONAL INFORMATION +

    -

    We implement reasonable and appropriate security measures to help protect the security of your information both online and offline and to ensure that your data is treated securely and in accordance with this Privacy Policy. These measures vary based upon the sensitivity of your information. It is important that you protect and maintain the security of your personal information, including the secure storage of any keys or other wallet data used to access your crypto assets.

    -

    While we take precautions against possible security breaches of our Services and our customer databases and records, no website or Internet transmission is completely secure. We cannot guarantee that unauthorized access, hacking, data loss, or other breaches will never occur, and we cannot guarantee the security of your information while it is being transmitted to our Service. Any transmission is at your own risk.

    +

    + We implement reasonable and appropriate security measures to help + protect the security of your information both online and offline and + to ensure that your data is treated securely and in accordance with + this Privacy Policy. These measures vary based upon the sensitivity + of your information. It is important that you protect and maintain + the security of your personal information, including the secure + storage of any keys or other wallet data used to access your crypto + assets. +

    +

    + While we take precautions against possible security breaches of our + Services and our customer databases and records, no website or + Internet transmission is completely secure. We cannot guarantee that + unauthorized access, hacking, data loss, or other breaches will + never occur, and we cannot guarantee the security of your + information while it is being transmitted to our Service. Any + transmission is at your own risk. +

    -

    HOW LONG WE KEEP YOUR PERSONAL INFORMATION

    +

    + HOW LONG WE KEEP YOUR PERSONAL INFORMATION +

    -

    How long we retain your personal information depends on why we collected it and how we use it, but we will not retain your personal information for longer than is necessary to provide you with the Services or for our legal requirements.

    -

    We will retain personal information that is connected with your account and/or the Services you use from us for as long as you are actively using Services on the Platform. However, you acknowledge that we may retain some information after you have ceased to use the Platform’s Services where necessary to enable us to meet our legal obligations or to exercise, defend, or establish our rights.

    +

    + How long we retain your personal information depends on why we + collected it and how we use it, but we will not retain your personal + information for longer than is necessary to provide you with the + Services or for our legal requirements. +

    +

    + We will retain personal information that is connected with your + account and/or the Services you use from us for as long as you are + actively using Services on the Platform. However, you acknowledge + that we may retain some information after you have ceased to use the + Platform’s Services where necessary to enable us to meet our legal + obligations or to exercise, defend, or establish our rights. +

    -

    YOUR RIGHTS AND CONTROLLING YOUR PERSONAL INFORMATION

    +

    + + YOUR RIGHTS AND CONTROLLING YOUR PERSONAL INFORMATION + +

    - Your choice: By providing personal information to us, you understand we will collect, hold, use, and disclose your personal information in accordance with this Privacy Policy. You may choose to reject cookies and certain other tracking technologies by changing the setting of your browser. You do not have to provide personal information to us, however, if you do not, it may affect your use of our Platform or the products and/or services offered on or through it. You may also request details of the personal information that we hold about you. + Your choice: By providing personal information to us, you + understand we will collect, hold, use, and disclose your personal + information in accordance with this Privacy Policy. You may choose + to reject cookies and certain other tracking technologies by + changing the setting of your browser. You do not have to provide + personal information to us, however, if you do not, it may affect + your use of our Platform or the products and/or services offered on + or through it. You may also request details of the personal + information that we hold about you. +

    +

    + Information from third parties: If we receive personal + information about you from a third party, we will protect it as set + out in this Privacy Policy. If you are a third party providing + personal information about somebody else, you represent and warrant + that you have such person’s consent to provide the personal + information to us. +

    +

    + Marketing permission and Unsubscribing: If you have + previously agreed to us using your personal information for direct + marketing purposes, you may change your mind at any time by opting + out of the promotional communications or contacting us using the + details below. To unsubscribe from our email database or opt-out of + communications (including marketing communications), please contact + us using the details provided in this privacy policy or opt-out + using the opt-out facilities provided in the communication. We may + need to request specific information from you to help us confirm + your identity.

    - Information from third parties: If we receive personal information about you from a third party, we will protect it as set out in this Privacy Policy. If you are a third party providing personal information about somebody else, you represent and warrant that you have such person’s consent to provide the personal information to us. + Correction: If you believe that any information we hold about + you is inaccurate, out of date, incomplete, irrelevant, or + misleading, please contact us using the details provided in this + privacy policy. We will take reasonable steps to correct any + information found to be inaccurate, incomplete, misleading, or out + of date.

    -

    Marketing permission and Unsubscribing: If you have previously agreed to us using your personal information for direct marketing purposes, you may change your mind at any time by opting out of the promotional communications or contacting us using the details below. To unsubscribe from our email database or opt-out of communications (including marketing communications), please contact us using the details provided in this privacy policy or opt-out using the opt-out facilities provided in the communication. We may need to request specific information from you to help us confirm your identity.

    -

    Correction: If you believe that any information we hold about you is inaccurate, out of date, incomplete, irrelevant, or misleading, please contact us using the details provided in this privacy policy. We will take reasonable steps to correct any information found to be inaccurate, incomplete, misleading, or out of date.

    -

    Non-discrimination: We will not discriminate against you for exercising any of your rights over your personal information. Unless your personal information is required to provide you with a particular service or offer (for example providing user support), we will not deny you goods or services and/or charge you different prices or rates for goods or services, including through granting discounts or other benefits, or imposing penalties, or provide you with a different level or quality of goods or services.

    -

    Notification of data breaches: We will comply with laws applicable to us in respect of any data breach.

    -

    Complaints: If you believe that we have breached a relevant data protection law and wish to make a complaint, please contact us using the details below and provide us with full details of the alleged breach. We will promptly investigate your complaint and respond to you, in writing, setting out the outcome of our investigation and the steps we will take to deal with your complaint. You also have the right to contact a regulatory body or data protection authority in relation to your complaint.

    -

    No fee usually required: You will not have to pay a fee to access your personal data (or to exercise any of the other rights). However, we may charge a reasonable fee if your request is manifestly unfounded or excessive. Alternatively, we could refuse to comply with your request in these circumstances. We may need to request specific information from you to help us confirm your identity and ensure your right to access your personal data (or to exercise any of your other rights). This is a security measure to ensure that personal data is not disclosed to any person who has no right to receive it. We may also contact you to ask you for further information in relation to your request to speed up our response.

    -

    Period for replying to a legitimate request: We try to respond to all legitimate requests within one month. Occasionally it may take us longer than a month if your request is particularly complex or you have made a number of requests. In this case, we will notify you and keep you updated. +

    + Non-discrimination: We will not discriminate against you for + exercising any of your rights over your personal information. Unless + your personal information is required to provide you with a + particular service or offer (for example providing user support), we + will not deny you goods or services and/or charge you different + prices or rates for goods or services, including through granting + discounts or other benefits, or imposing penalties, or provide you + with a different level or quality of goods or services. +

    +

    + Notification of data breaches: We will comply with laws + applicable to us in respect of any data breach. +

    +

    + Complaints: If you believe that we have breached a relevant + data protection law and wish to make a complaint, please contact us + using the details below and provide us with full details of the + alleged breach. We will promptly investigate your complaint and + respond to you, in writing, setting out the outcome of our + investigation and the steps we will take to deal with your + complaint. You also have the right to contact a regulatory body or + data protection authority in relation to your complaint. +

    +

    + No fee usually required: You will not have to pay a fee to + access your personal data (or to exercise any of the other rights). + However, we may charge a reasonable fee if your request is + manifestly unfounded or excessive. Alternatively, we could refuse to + comply with your request in these circumstances. We may need to + request specific information from you to help us confirm your + identity and ensure your right to access your personal data (or to + exercise any of your other rights). This is a security measure to + ensure that personal data is not disclosed to any person who has no + right to receive it. We may also contact you to ask you for further + information in relation to your request to speed up our response. +

    +

    + Period for replying to a legitimate request: We try to + respond to all legitimate requests within one month. Occasionally it + may take us longer than a month if your request is particularly + complex or you have made a number of requests. In this case, we will + notify you and keep you updated.
    - Notwithstanding the above, we cannot edit or delete any information that is stored on a blockchain as we do not have custody or control over any blockchains. The information stored on the blockchain may include purchases, sales, and transfers related to any blockchain address associated with you. + Notwithstanding the above, we cannot edit or delete any information + that is stored on a blockchain as we do not have custody or control + over any blockchains. The information stored on the blockchain may + include purchases, sales, and transfers related to any blockchain + address associated with you.

    -

    CHILDREN’S PRIVACY

    +

    + CHILDREN’S PRIVACY +

    -

    The Platform is not directed to children under 18 (or other age as required by local law), and we do not knowingly collect personal information from children. If you are a parent or guardian and believe your child has uploaded personal information to our Platform without your consent, you may contact us. If we become aware that a child has provided us with personal information in violation of applicable law, we will delete any personal information we have collected, unless we have a legal obligation to keep it, and terminate the child’s account if applicable.

    +

    + The Platform is not directed to children under 18 (or other age as + required by local law), and we do not knowingly collect personal + information from children. If you are a parent or guardian and + believe your child has uploaded personal information to our Platform + without your consent, you may contact us. If we become aware that a + child has provided us with personal information in violation of + applicable law, we will delete any personal information we have + collected, unless we have a legal obligation to keep it, and + terminate the child’s account if applicable. +

    -

    BUSINESS TRANSFERS

    +

    + BUSINESS TRANSFERS +

    -

    If we or our assets are acquired, or in the unlikely event that we go out of business or enter bankruptcy, we would include data, including your personal information, among the assets transferred to any parties who acquire us. You acknowledge that such transfers may occur, and that any parties who acquire us may, to the extent permitted by applicable law, continue to use your personal information according to this Privacy Policy, which they will be required to assume as it is the basis for any ownership or use rights we have over such information.

    +

    + If we or our assets are acquired, or in the unlikely event that we + go out of business or enter bankruptcy, we would include data, + including your personal information, among the assets transferred to + any parties who acquire us. You acknowledge that such transfers may + occur, and that any parties who acquire us may, to the extent + permitted by applicable law, continue to use your personal + information according to this Privacy Policy, which they will be + required to assume as it is the basis for any ownership or use + rights we have over such information. +

    -

    INTERNATIONAL TRANSFERS

    +

    + INTERNATIONAL TRANSFERS +

    -

    All information processed by us may be transferred, processed, and stored anywhere in the world, including, but not limited to, the United States, members of the European Union, or other countries, which may have data protection laws that are different from the laws where you live. We endeavor to safeguard your information consistent with the requirements of applicable laws.

    +

    + All information processed by us may be transferred, processed, and + stored anywhere in the world, including, but not limited to, the + United States, members of the European Union, or other countries, + which may have data protection laws that are different from the laws + where you live. We endeavor to safeguard your information consistent + with the requirements of applicable laws. +

    -

    LIMITS OF OUR POLICY

    +

    + LIMITS OF OUR POLICY +

    -

    Our Platform may link to external sites that are not operated by us. Please be aware that we have no control over the content and policies of those sites and cannot accept responsibility or liability for their respective privacy practices.

    +

    + Our Platform may link to external sites that are not operated by us. + Please be aware that we have no control over the content and + policies of those sites and cannot accept responsibility or + liability for their respective privacy practices. +

    -

    CHANGES TO THIS POLICY

    +

    + CHANGES TO THIS POLICY +

    -

    At our discretion, we may change this Privacy Policy to reflect updates to our business processes, current acceptable practices, or legislative or regulatory changes. If we decide to change this Policy, we will post the changes here at the same link by which you are accessing this Policy, and if the changes are significant, or if required by applicable law, we will contact you (based on your selected preferences for communications from us) with details of the changes.

    -

    If required by law, we will get your permission or give you the opportunity to opt in to or opt out of, as applicable, any new uses of your personal information.

    +

    + At our discretion, we may change this Privacy Policy to reflect + updates to our business processes, current acceptable practices, or + legislative or regulatory changes. If we decide to change this + Policy, we will post the changes here at the same link by which you + are accessing this Policy, and if the changes are significant, or if + required by applicable law, we will contact you (based on your + selected preferences for communications from us) with details of the + changes. +

    +

    + If required by law, we will get your permission or give you the + opportunity to opt in to or opt out of, as applicable, any new uses + of your personal information. +

    -

    SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS

    +

    + SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS +

    -

    This Supplemental Notice for California Residents only applies to our processing of personal information that is subject to the California Consumer Privacy Act of 2018 (the “CCPA”). The CCPA provides California residents with the right to know what categories of personal information we have collected about them, and whether we disclosed that personal information for a business purpose (e.g., to a service provider) in the preceding 12 months. California residents can find this information by visiting: https://www.oag.ca.gov/privacy/ccpa.

    +

    + This Supplemental Notice for California Residents only applies to + our processing of personal information that is subject to the + California Consumer Privacy Act of 2018 (the “CCPA”). The + CCPA provides California residents with the right to know what + categories of personal information we have collected about them, and + whether we disclosed that personal information for a business + purpose (e.g., to a service provider) in the preceding 12 months. + California residents can find this information by visiting:{" "} + + https://www.oag.ca.gov/privacy/ccpa + + . +

    -

    SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS

    +

    + SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS +

    -

    If you are a resident of Nevada, you have the right to opt-out of the sale of certain personal information to third parties who intend to license or sell that personal information. You can exercise this right by contacting us with the subject line “Nevada Do Not Sell Request” and providing us with your name and the email address associated with your account.

    +

    + If you are a resident of Nevada, you have the right to opt-out of + the sale of certain personal information to third parties who intend + to license or sell that personal information. You can exercise this + right by contacting us with the subject line “Nevada Do Not Sell + Request” and providing us with your name and the email address + associated with your account.{" "} +

    -

    YOUR RIGHTS AS A DATA SUBJECT (GDPR)

    +

    + YOUR RIGHTS AS A DATA SUBJECT (GDPR) +

    -

    You have certain rights under applicable legislation, and in particular under Regulation EU 2016/679 (General Data Protection Regulation or ‘GDPR’). You can find out more about the GDPR and your rights by accessing the European Commission’s website.

    +

    + You have certain rights under applicable legislation, and in + particular under Regulation EU 2016/679 (General Data Protection + Regulation or ‘GDPR’). You can find out more about the GDPR and your + rights by accessing the European Commission’s website. +

    -

    CONTACT US FOR QUESTIONS AND REPORTING VIOLATIONS

    +

    + + CONTACT US FOR QUESTIONS AND REPORTING VIOLATIONS + +

    -

    If you have any questions, concerns, or complaints about our Privacy Policy or our data collection and processing practices, or if you want to report any security violations to us, or exercise any of your rights under this Privacy Policy, please contact us at the following address:

    +

    + If you have any questions, concerns, or complaints about our Privacy + Policy or our data collection and processing practices, or if you + want to report any security violations to us, or exercise any of + your rights under this Privacy Policy, please contact us at the + following address: +


    legal@xlabs.xyz -

    +
    +
); }; -export default PrivacyPolicies; \ No newline at end of file +export default PrivacyPolicy; diff --git a/apps/connect/src/utils/constants.ts b/apps/connect/src/utils/constants.ts index f25e17273..d3ab87411 100644 --- a/apps/connect/src/utils/constants.ts +++ b/apps/connect/src/utils/constants.ts @@ -1,3 +1,2 @@ - export const USDCPath = "/usdc-bridge"; -export const PrivacyPolicyPath = "/privacy-policy"; \ No newline at end of file +export const PrivacyPolicyPath = "/privacy-policy"; diff --git a/apps/connect/src/utils/styles.ts b/apps/connect/src/utils/styles.ts index 338cc2f5a..88b6f6101 100644 --- a/apps/connect/src/utils/styles.ts +++ b/apps/connect/src/utils/styles.ts @@ -1,7 +1,7 @@ import { styled, Link as MuiLink } from "@mui/material"; export const Link = styled(MuiLink)(() => ({ - color: "white", - textDecoration: "underline", - fontWeight: 500, + color: "white", + textDecoration: "underline", + fontWeight: 500, })); From 06b8af4e142d5f8de155dad5a9f5924dcae5a24f Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Fri, 28 Jun 2024 17:15:32 -0400 Subject: [PATCH 03/18] Include table of content and banner cache --- apps/connect/src/components/atoms/Banner.tsx | 24 +- .../src/components/atoms/TableOfContent.tsx | 84 ++ .../src/components/pages/PrivacyPolicy.tsx | 823 +++++++++--------- 3 files changed, 522 insertions(+), 409 deletions(-) create mode 100644 apps/connect/src/components/atoms/TableOfContent.tsx diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index f1cce3304..3695e5c01 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -25,7 +25,7 @@ const Content = styled("div")(({ theme }) => ({ position: "fixed", padding: 10, backgroundColor: "#070528", - gap: 18, + gap: 20, borderRadius: 12, margin: 26, mixBlendMode: "normal", @@ -51,8 +51,24 @@ const CloseButton = styled(Button)(() => ({ const Banner = () => { const [showBanner, setShowBanner] = useState(true); - if (!showBanner) { - // TODO this data could be stored in a cookie or localstorage? + const isNewOrExpired = () => { + const cache = localStorage.getItem("showPrivacyPolicy"); + const expirationDate = new Date(Number(cache)).getTime() + (7 * 24 * 60 * 60 * 1000); + const today = new Date().getTime(); + if (!cache || expirationDate < today) { + return true; + } + return false; + } + const handleClose = () => { + setShowBanner(false); + if (isNewOrExpired()) { + const today = new Date(); + localStorage.setItem("showPrivacyPolicy", today.getTime().toString()); + } + }; + + if (!isNewOrExpired() || !showBanner) { return null; } return ( @@ -64,7 +80,7 @@ const Banner = () => { use this site, you consent to our{" "} Privacy Policy - setShowBanner(false)}> + handleClose()}> Close diff --git a/apps/connect/src/components/atoms/TableOfContent.tsx b/apps/connect/src/components/atoms/TableOfContent.tsx new file mode 100644 index 000000000..5551a64c0 --- /dev/null +++ b/apps/connect/src/components/atoms/TableOfContent.tsx @@ -0,0 +1,84 @@ +import { styled } from "@mui/material"; +import { useEffect, useState } from "react"; + +const TableContainer = styled("div")(({ theme }) => ({ + borderLeft: "1px solid #FFFFFF1A", + width: 320, + [theme.breakpoints.down("md")]: { + width: "100%", + }, +})); + +const TableItem = styled("div")(() => ({ + paddingLeft: 20, + marginBottom: 10, + marginTop: 10, + cursor: "pointer", + textTransform: "capitalize", + fontSize: 14, + color: "#9C9DBF", + fontWeight: 500, + marginLeft: -2, + "&:hover": { + color: "white", + borderLeft: "3px solid white", + fontWeight: 600, + } +})); + +const Title = styled("p")(() => ({ + color: "#9C9DBF", + fontSize: 14, + fontWeight: 500, +})); + +interface TableItem { + title: string | null; + active: boolean; + id: string; +} +export default function TableOfContent() { + const [tableOfContent, setTableOfContent] = useState([]); + const activeItem = { + fontWeight: 600, + color: "white", + borderLeft: "3px solid white", + }; + useEffect(() => { + console.log("TableOfContent", document.querySelectorAll("H2")); + const titles = Array.from(document.querySelectorAll("H2")) + .filter((el) => !!el.children[0].textContent) + .map((el) => { + return { title: el.children[0].textContent, active: false, id: el.id }; + }); + setTableOfContent(titles); + }, []); + const updateActive = (idx: number) => { + const newTableOfContent = tableOfContent.map((item, index) => { + if (index === idx) { + item.active = true; + setTimeout(() => { + //document.querySelector(`#${item.id}`)?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' }); + const el = document.querySelector(`#${item.id}`) as HTMLElement; + window.scroll({top: el?.offsetTop || 0, behavior: 'smooth'}); + }, 100); + } else { + item.active = false; + } + return item; + }); + setTableOfContent(newTableOfContent); + } + return ( +
+ TABLE OF CONTENTS + + {tableOfContent.map((item, idx) => ( + updateActive(idx)}> + {item.title} + + ))} + +
+ ); +} diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index fc3641eba..bef3dbee4 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -1,14 +1,14 @@ -import { Button, Container, styled } from "@mui/material"; +import { Button, Container as MuiContainer, styled } from "@mui/material"; import arrow from "../../assets/imgs/arrow.svg"; import { useNavigate } from "react-router-dom"; import { Link } from "../../utils/styles"; +import TableOfContent from "../atoms/TableOfContent"; const TitleItem = styled("li")(() => ({ paddingLeft: 25, })); const P = styled("p")(() => ({ - color: "#9C9DBF", fontSize: 14, lineHeight: "20px", })); @@ -17,12 +17,14 @@ const H1 = styled("h1")(() => ({ fontSize: 24, lineHeight: "24px", fontWeight: 700, + color: "#FFFFFF", })); const H2 = styled("h2")(() => ({ fontSize: 20, lineHeight: "24px", fontWeight: 700, + color: "#FFFFFF", })); const H3 = styled("h3")(() => ({ @@ -53,66 +55,83 @@ const GoBackButton = styled(Button)(() => ({ height: 24, })); +const ContentContainer = styled(MuiContainer)(() => ({ + color: "#9C9DBF", + maxWidth: 1800, +})); + +const Container = styled("div")(({ theme }) => ({ + display: "flex", + gap: 80, + justifyContent: "center", + margin: "auto", + padding: 40, + [theme.breakpoints.down("md")]: { + flexDirection: "column", + width: "100%", + }, +})); + const PrivacyPolicy = () => { const navigate = useNavigate(); return ( - {/* TODO goback Button */} - - navigate(-1)}> - arrow - -

Privacy Policies

-
- {/* TODO: Update the date when we doo the release... Or the preview? */} -

- Last Updated: May 17, 2024 -

-

- xLabs (the “Company,” “we,” “us,” or “our”) - is committed to protecting your privacy. It is our policy to respect - your privacy and comply with any applicable laws and regulations - regarding any personal information we may collect about you, including - across our website, portalbridge.com, and other sites we own and operate - (collectively, the “Platform”). This Privacy Policy (the "Policy") - outlines the data collection, processing, and management practices of - the Company in relation to services provided on the Platform (the - “Services”). By using our Platform, you agree to the collection, use, - and disclosure of your personal information in accordance with this - Policy. -

-

- In the event our Platform contains links to third-party sites and - services, please be aware that those sites and services have their own - privacy policies. After following a link to any third-party content, you - should read their posted privacy policy information about how they - collect and use personal information. This Privacy Policy does not apply - to any of your activities after you leave our Platform. -

-
    -

    - INFORMATION WE COLLECT -

    -
      -

      - - Information About You That You Share With Us Directly - -

      -
      -

      - When you use Services on the Platform you may give us personal - information directly (for example, details you connect your wallet - to the Platform), and we will store that personal information on - our systems and process it for the purposes described in this - Privacy Policy. -

      -

      - Depending on the Service, the personal information we collect will - be relevant to providing that Service and include some or all of - the following non-personally identifiable data: -

      -

      + + + + navigate(-1)}> + arrow + +

      Privacy Policies

      + + {/* TODO: Update the date when we doo the release... Or the preview? */} +

      + Last Updated: May 17, 2024 +

      +

      + xLabs (the “Company,” “we,” “us,” or “our”) + is committed to protecting your privacy. It is our policy to respect + your privacy and comply with any applicable laws and regulations + regarding any personal information we may collect about you, including + across our website, portalbridge.com, and other sites we own and operate + (collectively, the “Platform”). This Privacy Policy (the "Policy") + outlines the data collection, processing, and management practices of + the Company in relation to services provided on the Platform (the + “Services”). By using our Platform, you agree to the collection, use, + and disclosure of your personal information in accordance with this + Policy. +

      +

      + In the event our Platform contains links to third-party sites and + services, please be aware that those sites and services have their own + privacy policies. After following a link to any third-party content, you + should read their posted privacy policy information about how they + collect and use personal information. This Privacy Policy does not apply + to any of your activities after you leave our Platform. +

      +
        +

        + INFORMATION WE COLLECT +

        +
          +

          + + Information About You That You Share With Us Directly + +

          +
          +

          + When you use Services on the Platform you may give us personal + information directly (for example, details you connect your wallet + to the Platform), and we will store that personal information on + our systems and process it for the purposes described in this + Privacy Policy. +

          +

          + Depending on the Service, the personal information we collect will + be relevant to providing that Service and include some or all of + the following non-personally identifiable data: +

          • Your public blockchain wallet address;
          • Amount of any asset involved in a transaction; and
          • @@ -121,40 +140,38 @@ const PrivacyPolicy = () => { participation in the Service offered.
          -

          -

          - We may also collect personal information from you when you - communicate with us, such as your name, email address, and any - other information you voluntarily provide. -

          -
          -

          - Information You Generate Using Our Services -

          -
          -

          - Information you generate while using our Services may be retained - to protect the safety and well-being of our users; to protect our - rights and property in connection with our Services; to conduct - research; to operate, improve, personalize, and optimize our - Services and our users’ experiences, including through the use of - analytics; and to manage and deliver advertising. Where required - by law, we will seek your consent for this. -

          -
          -

          - - Cookies and Other Automated Information Collection - -

          -
          -

          - We use cookies and other similar technologies (e.g., beacons, - pixel tags, clear gifs, and device identifiers). We, our service - providers, and our business partners use these cookies and other - similar technologies to process information, which may include: -

          -

          +

          + We may also collect personal information from you when you + communicate with us, such as your name, email address, and any + other information you voluntarily provide. +

          +
          +

          + Information You Generate Using Our Services +

          +
          +

          + Information you generate while using our Services may be retained + to protect the safety and well-being of our users; to protect our + rights and property in connection with our Services; to conduct + research; to operate, improve, personalize, and optimize our + Services and our users’ experiences, including through the use of + analytics; and to manage and deliver advertising. Where required + by law, we will seek your consent for this. +

          +
          +

          + + Cookies and Other Automated Information Collection + +

          +
          +

          + We use cookies and other similar technologies (e.g., beacons, + pixel tags, clear gifs, and device identifiers). We, our service + providers, and our business partners use these cookies and other + similar technologies to process information, which may include: +

          • IP address;
          • the type of computer or mobile device you are using;
          • @@ -179,20 +196,18 @@ const PrivacyPolicy = () => { time of activity.
          -

          -
          -
        +
      +
    -

    - PROCESSING AND USE OF YOUR PERSONAL INFORMATION -

    -
    -

    - We only collect and use your personal information when we have a - legitimate reason for doing so. Most commonly, we will use your - personal data in the following circumstances: -

    -

    +

    + PROCESSING AND USE OF YOUR PERSONAL INFORMATION +

    +
    +

    + We only collect and use your personal information when we have a + legitimate reason for doing so. Most commonly, we will use your + personal data in the following circumstances: +

    • Provide our Services and create accounts in those Services @@ -234,26 +249,24 @@ const PrivacyPolicy = () => { administer our agreements with third parties
    -

    -
    +
    -

    - - DISCLOSURE OF PERSONAL INFORMATION TO THIRD PARTIES - -

    -
    -

    - We share your personal data with our third-party service providers, - agents, subcontractors and other associated organizations, our group - companies, and affiliates (as described below) in order to complete - tasks and provide the Platform and Services to you on our behalf. - When using third party service providers, they are required to - respect the security of your personal data and to treat it in - accordance with the law. -

    -

    We may disclose personal information to:

    -

    +

    + + DISCLOSURE OF PERSONAL INFORMATION TO THIRD PARTIES + +

    +
    +

    + We share your personal data with our third-party service providers, + agents, subcontractors and other associated organizations, our group + companies, and affiliates (as described below) in order to complete + tasks and provide the Platform and Services to you on our behalf. + When using third party service providers, they are required to + respect the security of your personal data and to treat it in + accordance with the law. +

    +

    We may disclose personal information to:

    • a parent, subsidiary, or affiliate of the Company
    • @@ -287,297 +300,297 @@ const PrivacyPolicy = () => { substantially all of our assets and business
    -

    -
    -

    - SECURITY OF YOUR PERSONAL INFORMATION -

    -
    -

    - We implement reasonable and appropriate security measures to help - protect the security of your information both online and offline and - to ensure that your data is treated securely and in accordance with - this Privacy Policy. These measures vary based upon the sensitivity - of your information. It is important that you protect and maintain - the security of your personal information, including the secure - storage of any keys or other wallet data used to access your crypto - assets. -

    -

    - While we take precautions against possible security breaches of our - Services and our customer databases and records, no website or - Internet transmission is completely secure. We cannot guarantee that - unauthorized access, hacking, data loss, or other breaches will - never occur, and we cannot guarantee the security of your - information while it is being transmitted to our Service. Any - transmission is at your own risk. -

    -
    +
    +

    + SECURITY OF YOUR PERSONAL INFORMATION +

    +
    +

    + We implement reasonable and appropriate security measures to help + protect the security of your information both online and offline and + to ensure that your data is treated securely and in accordance with + this Privacy Policy. These measures vary based upon the sensitivity + of your information. It is important that you protect and maintain + the security of your personal information, including the secure + storage of any keys or other wallet data used to access your crypto + assets. +

    +

    + While we take precautions against possible security breaches of our + Services and our customer databases and records, no website or + Internet transmission is completely secure. We cannot guarantee that + unauthorized access, hacking, data loss, or other breaches will + never occur, and we cannot guarantee the security of your + information while it is being transmitted to our Service. Any + transmission is at your own risk. +

    +
    -

    - HOW LONG WE KEEP YOUR PERSONAL INFORMATION -

    -
    -

    - How long we retain your personal information depends on why we - collected it and how we use it, but we will not retain your personal - information for longer than is necessary to provide you with the - Services or for our legal requirements. -

    -

    - We will retain personal information that is connected with your - account and/or the Services you use from us for as long as you are - actively using Services on the Platform. However, you acknowledge - that we may retain some information after you have ceased to use the - Platform’s Services where necessary to enable us to meet our legal - obligations or to exercise, defend, or establish our rights. -

    -
    +

    + HOW LONG WE KEEP YOUR PERSONAL INFORMATION +

    +
    +

    + How long we retain your personal information depends on why we + collected it and how we use it, but we will not retain your personal + information for longer than is necessary to provide you with the + Services or for our legal requirements. +

    +

    + We will retain personal information that is connected with your + account and/or the Services you use from us for as long as you are + actively using Services on the Platform. However, you acknowledge + that we may retain some information after you have ceased to use the + Platform’s Services where necessary to enable us to meet our legal + obligations or to exercise, defend, or establish our rights. +

    +
    -

    - - YOUR RIGHTS AND CONTROLLING YOUR PERSONAL INFORMATION - -

    -
    -

    - Your choice: By providing personal information to us, you - understand we will collect, hold, use, and disclose your personal - information in accordance with this Privacy Policy. You may choose - to reject cookies and certain other tracking technologies by - changing the setting of your browser. You do not have to provide - personal information to us, however, if you do not, it may affect - your use of our Platform or the products and/or services offered on - or through it. You may also request details of the personal - information that we hold about you. -

    -

    - Information from third parties: If we receive personal - information about you from a third party, we will protect it as set - out in this Privacy Policy. If you are a third party providing - personal information about somebody else, you represent and warrant - that you have such person’s consent to provide the personal - information to us. -

    -

    - Marketing permission and Unsubscribing: If you have - previously agreed to us using your personal information for direct - marketing purposes, you may change your mind at any time by opting - out of the promotional communications or contacting us using the - details below. To unsubscribe from our email database or opt-out of - communications (including marketing communications), please contact - us using the details provided in this privacy policy or opt-out - using the opt-out facilities provided in the communication. We may - need to request specific information from you to help us confirm - your identity. -

    -

    - Correction: If you believe that any information we hold about - you is inaccurate, out of date, incomplete, irrelevant, or - misleading, please contact us using the details provided in this - privacy policy. We will take reasonable steps to correct any - information found to be inaccurate, incomplete, misleading, or out - of date. -

    -

    - Non-discrimination: We will not discriminate against you for - exercising any of your rights over your personal information. Unless - your personal information is required to provide you with a - particular service or offer (for example providing user support), we - will not deny you goods or services and/or charge you different - prices or rates for goods or services, including through granting - discounts or other benefits, or imposing penalties, or provide you - with a different level or quality of goods or services. -

    -

    - Notification of data breaches: We will comply with laws - applicable to us in respect of any data breach. -

    -

    - Complaints: If you believe that we have breached a relevant - data protection law and wish to make a complaint, please contact us - using the details below and provide us with full details of the - alleged breach. We will promptly investigate your complaint and - respond to you, in writing, setting out the outcome of our - investigation and the steps we will take to deal with your - complaint. You also have the right to contact a regulatory body or - data protection authority in relation to your complaint. -

    -

    - No fee usually required: You will not have to pay a fee to - access your personal data (or to exercise any of the other rights). - However, we may charge a reasonable fee if your request is - manifestly unfounded or excessive. Alternatively, we could refuse to - comply with your request in these circumstances. We may need to - request specific information from you to help us confirm your - identity and ensure your right to access your personal data (or to - exercise any of your other rights). This is a security measure to - ensure that personal data is not disclosed to any person who has no - right to receive it. We may also contact you to ask you for further - information in relation to your request to speed up our response. -

    -

    - Period for replying to a legitimate request: We try to - respond to all legitimate requests within one month. Occasionally it - may take us longer than a month if your request is particularly - complex or you have made a number of requests. In this case, we will - notify you and keep you updated. -
    - Notwithstanding the above, we cannot edit or delete any information - that is stored on a blockchain as we do not have custody or control - over any blockchains. The information stored on the blockchain may - include purchases, sales, and transfers related to any blockchain - address associated with you. -

    -
    +

    + + YOUR RIGHTS AND CONTROLLING YOUR PERSONAL INFORMATION + +

    +
    +

    + Your choice: By providing personal information to us, you + understand we will collect, hold, use, and disclose your personal + information in accordance with this Privacy Policy. You may choose + to reject cookies and certain other tracking technologies by + changing the setting of your browser. You do not have to provide + personal information to us, however, if you do not, it may affect + your use of our Platform or the products and/or services offered on + or through it. You may also request details of the personal + information that we hold about you. +

    +

    + Information from third parties: If we receive personal + information about you from a third party, we will protect it as set + out in this Privacy Policy. If you are a third party providing + personal information about somebody else, you represent and warrant + that you have such person’s consent to provide the personal + information to us. +

    +

    + Marketing permission and Unsubscribing: If you have + previously agreed to us using your personal information for direct + marketing purposes, you may change your mind at any time by opting + out of the promotional communications or contacting us using the + details below. To unsubscribe from our email database or opt-out of + communications (including marketing communications), please contact + us using the details provided in this privacy policy or opt-out + using the opt-out facilities provided in the communication. We may + need to request specific information from you to help us confirm + your identity. +

    +

    + Correction: If you believe that any information we hold about + you is inaccurate, out of date, incomplete, irrelevant, or + misleading, please contact us using the details provided in this + privacy policy. We will take reasonable steps to correct any + information found to be inaccurate, incomplete, misleading, or out + of date. +

    +

    + Non-discrimination: We will not discriminate against you for + exercising any of your rights over your personal information. Unless + your personal information is required to provide you with a + particular service or offer (for example providing user support), we + will not deny you goods or services and/or charge you different + prices or rates for goods or services, including through granting + discounts or other benefits, or imposing penalties, or provide you + with a different level or quality of goods or services. +

    +

    + Notification of data breaches: We will comply with laws + applicable to us in respect of any data breach. +

    +

    + Complaints: If you believe that we have breached a relevant + data protection law and wish to make a complaint, please contact us + using the details below and provide us with full details of the + alleged breach. We will promptly investigate your complaint and + respond to you, in writing, setting out the outcome of our + investigation and the steps we will take to deal with your + complaint. You also have the right to contact a regulatory body or + data protection authority in relation to your complaint. +

    +

    + No fee usually required: You will not have to pay a fee to + access your personal data (or to exercise any of the other rights). + However, we may charge a reasonable fee if your request is + manifestly unfounded or excessive. Alternatively, we could refuse to + comply with your request in these circumstances. We may need to + request specific information from you to help us confirm your + identity and ensure your right to access your personal data (or to + exercise any of your other rights). This is a security measure to + ensure that personal data is not disclosed to any person who has no + right to receive it. We may also contact you to ask you for further + information in relation to your request to speed up our response. +

    +

    + Period for replying to a legitimate request: We try to + respond to all legitimate requests within one month. Occasionally it + may take us longer than a month if your request is particularly + complex or you have made a number of requests. In this case, we will + notify you and keep you updated. +
    + Notwithstanding the above, we cannot edit or delete any information + that is stored on a blockchain as we do not have custody or control + over any blockchains. The information stored on the blockchain may + include purchases, sales, and transfers related to any blockchain + address associated with you. +

    +
    -

    - CHILDREN’S PRIVACY -

    -
    -

    - The Platform is not directed to children under 18 (or other age as - required by local law), and we do not knowingly collect personal - information from children. If you are a parent or guardian and - believe your child has uploaded personal information to our Platform - without your consent, you may contact us. If we become aware that a - child has provided us with personal information in violation of - applicable law, we will delete any personal information we have - collected, unless we have a legal obligation to keep it, and - terminate the child’s account if applicable. -

    -
    +

    + CHILDREN’S PRIVACY +

    +
    +

    + The Platform is not directed to children under 18 (or other age as + required by local law), and we do not knowingly collect personal + information from children. If you are a parent or guardian and + believe your child has uploaded personal information to our Platform + without your consent, you may contact us. If we become aware that a + child has provided us with personal information in violation of + applicable law, we will delete any personal information we have + collected, unless we have a legal obligation to keep it, and + terminate the child’s account if applicable. +

    +
    -

    - BUSINESS TRANSFERS -

    -
    -

    - If we or our assets are acquired, or in the unlikely event that we - go out of business or enter bankruptcy, we would include data, - including your personal information, among the assets transferred to - any parties who acquire us. You acknowledge that such transfers may - occur, and that any parties who acquire us may, to the extent - permitted by applicable law, continue to use your personal - information according to this Privacy Policy, which they will be - required to assume as it is the basis for any ownership or use - rights we have over such information. -

    -
    +

    + BUSINESS TRANSFERS +

    +
    +

    + If we or our assets are acquired, or in the unlikely event that we + go out of business or enter bankruptcy, we would include data, + including your personal information, among the assets transferred to + any parties who acquire us. You acknowledge that such transfers may + occur, and that any parties who acquire us may, to the extent + permitted by applicable law, continue to use your personal + information according to this Privacy Policy, which they will be + required to assume as it is the basis for any ownership or use + rights we have over such information. +

    +
    -

    - INTERNATIONAL TRANSFERS -

    -
    -

    - All information processed by us may be transferred, processed, and - stored anywhere in the world, including, but not limited to, the - United States, members of the European Union, or other countries, - which may have data protection laws that are different from the laws - where you live. We endeavor to safeguard your information consistent - with the requirements of applicable laws. -

    -
    +

    + INTERNATIONAL TRANSFERS +

    +
    +

    + All information processed by us may be transferred, processed, and + stored anywhere in the world, including, but not limited to, the + United States, members of the European Union, or other countries, + which may have data protection laws that are different from the laws + where you live. We endeavor to safeguard your information consistent + with the requirements of applicable laws. +

    +
    -

    - LIMITS OF OUR POLICY -

    -
    -

    - Our Platform may link to external sites that are not operated by us. - Please be aware that we have no control over the content and - policies of those sites and cannot accept responsibility or - liability for their respective privacy practices. -

    -
    +

    + LIMITS OF OUR POLICY +

    +
    +

    + Our Platform may link to external sites that are not operated by us. + Please be aware that we have no control over the content and + policies of those sites and cannot accept responsibility or + liability for their respective privacy practices. +

    +
    -

    - CHANGES TO THIS POLICY -

    -
    -

    - At our discretion, we may change this Privacy Policy to reflect - updates to our business processes, current acceptable practices, or - legislative or regulatory changes. If we decide to change this - Policy, we will post the changes here at the same link by which you - are accessing this Policy, and if the changes are significant, or if - required by applicable law, we will contact you (based on your - selected preferences for communications from us) with details of the - changes. -

    -

    - If required by law, we will get your permission or give you the - opportunity to opt in to or opt out of, as applicable, any new uses - of your personal information. -

    -
    +

    + CHANGES TO THIS POLICY +

    +
    +

    + At our discretion, we may change this Privacy Policy to reflect + updates to our business processes, current acceptable practices, or + legislative or regulatory changes. If we decide to change this + Policy, we will post the changes here at the same link by which you + are accessing this Policy, and if the changes are significant, or if + required by applicable law, we will contact you (based on your + selected preferences for communications from us) with details of the + changes. +

    +

    + If required by law, we will get your permission or give you the + opportunity to opt in to or opt out of, as applicable, any new uses + of your personal information. +

    +
    -

    - SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS -

    -
    -

    - This Supplemental Notice for California Residents only applies to - our processing of personal information that is subject to the - California Consumer Privacy Act of 2018 (the “CCPA”). The - CCPA provides California residents with the right to know what - categories of personal information we have collected about them, and - whether we disclosed that personal information for a business - purpose (e.g., to a service provider) in the preceding 12 months. - California residents can find this information by visiting:{" "} - - https://www.oag.ca.gov/privacy/ccpa - - . -

    -
    +

    + SUPPLEMENTAL NOTICE FOR CALIFORNIA RESIDENTS +

    +
    +

    + This Supplemental Notice for California Residents only applies to + our processing of personal information that is subject to the + California Consumer Privacy Act of 2018 (the “CCPA”). The + CCPA provides California residents with the right to know what + categories of personal information we have collected about them, and + whether we disclosed that personal information for a business + purpose (e.g., to a service provider) in the preceding 12 months. + California residents can find this information by visiting:{" "} + + https://www.oag.ca.gov/privacy/ccpa + + . +

    +
    -

    - SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS -

    -
    -

    - If you are a resident of Nevada, you have the right to opt-out of - the sale of certain personal information to third parties who intend - to license or sell that personal information. You can exercise this - right by contacting us with the subject line “Nevada Do Not Sell - Request” and providing us with your name and the email address - associated with your account.{" "} -

    -
    +

    + SUPPLEMENTAL NOTICE FOR NEVADA RESIDENTS +

    +
    +

    + If you are a resident of Nevada, you have the right to opt-out of + the sale of certain personal information to third parties who intend + to license or sell that personal information. You can exercise this + right by contacting us with the subject line “Nevada Do Not Sell + Request” and providing us with your name and the email address + associated with your account.{" "} +

    +
    -

    - YOUR RIGHTS AS A DATA SUBJECT (GDPR) -

    -
    -

    - You have certain rights under applicable legislation, and in - particular under Regulation EU 2016/679 (General Data Protection - Regulation or ‘GDPR’). You can find out more about the GDPR and your - rights by accessing the European Commission’s website. -

    -
    -

    - - CONTACT US FOR QUESTIONS AND REPORTING VIOLATIONS - -

    -
    -

    - If you have any questions, concerns, or complaints about our Privacy - Policy or our data collection and processing practices, or if you - want to report any security violations to us, or exercise any of - your rights under this Privacy Policy, please contact us at the - following address: -

    -
    - - legal@xlabs.xyz - -
    -
    -
    -
+

+ YOUR RIGHTS AS A DATA SUBJECT (GDPR) +

+
+

+ You have certain rights under applicable legislation, and in + particular under Regulation EU 2016/679 (General Data Protection + Regulation or ‘GDPR’). You can find out more about the GDPR and your + rights by accessing the European Commission’s website. +

+
+

+ + CONTACT US FOR QUESTIONS AND REPORTING VIOLATIONS + +

+
+

+ If you have any questions, concerns, or complaints about our Privacy + Policy or our data collection and processing practices, or if you + want to report any security violations to us, or exercise any of + your rights under this Privacy Policy, please contact us at the + following address: +

+
+ + legal@xlabs.xyz + +
+
+
+ +
); }; From 24b0ff853501a7bbeeb66557dde4b432a15471ea Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Fri, 28 Jun 2024 20:37:16 -0400 Subject: [PATCH 04/18] Fix prettier --- apps/connect/src/components/atoms/Banner.tsx | 7 +- .../src/components/atoms/TableOfContent.tsx | 26 +- .../src/components/pages/PrivacyPolicy.tsx | 270 +++++++++--------- 3 files changed, 156 insertions(+), 147 deletions(-) diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index 3695e5c01..bf12c7330 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -53,17 +53,18 @@ const Banner = () => { const isNewOrExpired = () => { const cache = localStorage.getItem("showPrivacyPolicy"); - const expirationDate = new Date(Number(cache)).getTime() + (7 * 24 * 60 * 60 * 1000); + const expirationDate = + new Date(Number(cache)).getTime() + 7 * 24 * 60 * 60 * 1000; const today = new Date().getTime(); if (!cache || expirationDate < today) { return true; } return false; - } + }; const handleClose = () => { setShowBanner(false); if (isNewOrExpired()) { - const today = new Date(); + const today = new Date(); localStorage.setItem("showPrivacyPolicy", today.getTime().toString()); } }; diff --git a/apps/connect/src/components/atoms/TableOfContent.tsx b/apps/connect/src/components/atoms/TableOfContent.tsx index 5551a64c0..40d7043ab 100644 --- a/apps/connect/src/components/atoms/TableOfContent.tsx +++ b/apps/connect/src/components/atoms/TableOfContent.tsx @@ -23,7 +23,7 @@ const TableItem = styled("div")(() => ({ color: "white", borderLeft: "3px solid white", fontWeight: 600, - } + }, })); const Title = styled("p")(() => ({ @@ -47,10 +47,10 @@ export default function TableOfContent() { useEffect(() => { console.log("TableOfContent", document.querySelectorAll("H2")); const titles = Array.from(document.querySelectorAll("H2")) - .filter((el) => !!el.children[0].textContent) - .map((el) => { - return { title: el.children[0].textContent, active: false, id: el.id }; - }); + .filter((el) => !!el.children[0].textContent) + .map((el) => { + return { title: el.children[0].textContent, active: false, id: el.id }; + }); setTableOfContent(titles); }, []); const updateActive = (idx: number) => { @@ -58,23 +58,27 @@ export default function TableOfContent() { if (index === idx) { item.active = true; setTimeout(() => { - //document.querySelector(`#${item.id}`)?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' }); - const el = document.querySelector(`#${item.id}`) as HTMLElement; - window.scroll({top: el?.offsetTop || 0, behavior: 'smooth'}); - }, 100); + //document.querySelector(`#${item.id}`)?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' }); + const el = document.querySelector(`#${item.id}`) as HTMLElement; + window.scroll({ top: el?.offsetTop || 0, behavior: "smooth" }); + }, 100); } else { item.active = false; } return item; }); setTableOfContent(newTableOfContent); - } + }; return (
TABLE OF CONTENTS {tableOfContent.map((item, idx) => ( - updateActive(idx)}> + updateActive(idx)} + > {item.title} ))} diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index bef3dbee4..9099e30d5 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -89,25 +89,25 @@ const PrivacyPolicy = () => { Last Updated: May 17, 2024

- xLabs (the “Company,” “we,” “us,” or “our”) - is committed to protecting your privacy. It is our policy to respect - your privacy and comply with any applicable laws and regulations - regarding any personal information we may collect about you, including - across our website, portalbridge.com, and other sites we own and operate - (collectively, the “Platform”). This Privacy Policy (the "Policy") - outlines the data collection, processing, and management practices of - the Company in relation to services provided on the Platform (the - “Services”). By using our Platform, you agree to the collection, use, - and disclosure of your personal information in accordance with this - Policy. + xLabs (the “Company,” “we,” “us,” or “our + ”) is committed to protecting your privacy. It is our policy to + respect your privacy and comply with any applicable laws and + regulations regarding any personal information we may collect about + you, including across our website, portalbridge.com, and other sites + we own and operate (collectively, the “Platform”). This Privacy Policy + (the "Policy") outlines the data collection, processing, and + management practices of the Company in relation to services provided + on the Platform (the “Services”). By using our Platform, you agree to + the collection, use, and disclosure of your personal information in + accordance with this Policy.

In the event our Platform contains links to third-party sites and services, please be aware that those sites and services have their own - privacy policies. After following a link to any third-party content, you - should read their posted privacy policy information about how they - collect and use personal information. This Privacy Policy does not apply - to any of your activities after you leave our Platform. + privacy policies. After following a link to any third-party content, + you should read their posted privacy policy information about how they + collect and use personal information. This Privacy Policy does not + apply to any of your activities after you leave our Platform.

    @@ -122,15 +122,15 @@ const PrivacyPolicy = () => {

    When you use Services on the Platform you may give us personal - information directly (for example, details you connect your wallet - to the Platform), and we will store that personal information on - our systems and process it for the purposes described in this - Privacy Policy. + information directly (for example, details you connect your + wallet to the Platform), and we will store that personal + information on our systems and process it for the purposes + described in this Privacy Policy.

    - Depending on the Service, the personal information we collect will - be relevant to providing that Service and include some or all of - the following non-personally identifiable data: + Depending on the Service, the personal information we collect + will be relevant to providing that Service and include some or + all of the following non-personally identifiable data:

    • Your public blockchain wallet address;
    • @@ -151,13 +151,14 @@ const PrivacyPolicy = () => {

    - Information you generate while using our Services may be retained - to protect the safety and well-being of our users; to protect our - rights and property in connection with our Services; to conduct - research; to operate, improve, personalize, and optimize our - Services and our users’ experiences, including through the use of - analytics; and to manage and deliver advertising. Where required - by law, we will seek your consent for this. + Information you generate while using our Services may be + retained to protect the safety and well-being of our users; to + protect our rights and property in connection with our Services; + to conduct research; to operate, improve, personalize, and + optimize our Services and our users’ experiences, including + through the use of analytics; and to manage and deliver + advertising. Where required by law, we will seek your consent + for this.

    @@ -200,7 +201,9 @@ const PrivacyPolicy = () => {

- PROCESSING AND USE OF YOUR PERSONAL INFORMATION + + PROCESSING AND USE OF YOUR PERSONAL INFORMATION +

@@ -258,13 +261,13 @@ const PrivacyPolicy = () => {

- We share your personal data with our third-party service providers, - agents, subcontractors and other associated organizations, our group - companies, and affiliates (as described below) in order to complete - tasks and provide the Platform and Services to you on our behalf. - When using third party service providers, they are required to - respect the security of your personal data and to treat it in - accordance with the law. + We share your personal data with our third-party service + providers, agents, subcontractors and other associated + organizations, our group companies, and affiliates (as described + below) in order to complete tasks and provide the Platform and + Services to you on our behalf. When using third party service + providers, they are required to respect the security of your + personal data and to treat it in accordance with the law.

We may disclose personal information to:

    @@ -307,20 +310,20 @@ const PrivacyPolicy = () => {

    We implement reasonable and appropriate security measures to help - protect the security of your information both online and offline and - to ensure that your data is treated securely and in accordance with - this Privacy Policy. These measures vary based upon the sensitivity - of your information. It is important that you protect and maintain - the security of your personal information, including the secure - storage of any keys or other wallet data used to access your crypto - assets. + protect the security of your information both online and offline + and to ensure that your data is treated securely and in accordance + with this Privacy Policy. These measures vary based upon the + sensitivity of your information. It is important that you protect + and maintain the security of your personal information, including + the secure storage of any keys or other wallet data used to access + your crypto assets.

    - While we take precautions against possible security breaches of our - Services and our customer databases and records, no website or - Internet transmission is completely secure. We cannot guarantee that - unauthorized access, hacking, data loss, or other breaches will - never occur, and we cannot guarantee the security of your + While we take precautions against possible security breaches of + our Services and our customer databases and records, no website or + Internet transmission is completely secure. We cannot guarantee + that unauthorized access, hacking, data loss, or other breaches + will never occur, and we cannot guarantee the security of your information while it is being transmitted to our Service. Any transmission is at your own risk.

    @@ -332,17 +335,17 @@ const PrivacyPolicy = () => {

    How long we retain your personal information depends on why we - collected it and how we use it, but we will not retain your personal - information for longer than is necessary to provide you with the - Services or for our legal requirements. + collected it and how we use it, but we will not retain your + personal information for longer than is necessary to provide you + with the Services or for our legal requirements.

    We will retain personal information that is connected with your account and/or the Services you use from us for as long as you are actively using Services on the Platform. However, you acknowledge - that we may retain some information after you have ceased to use the - Platform’s Services where necessary to enable us to meet our legal - obligations or to exercise, defend, or establish our rights. + that we may retain some information after you have ceased to use + the Platform’s Services where necessary to enable us to meet our + legal obligations or to exercise, defend, or establish our rights.

    @@ -359,44 +362,44 @@ const PrivacyPolicy = () => { to reject cookies and certain other tracking technologies by changing the setting of your browser. You do not have to provide personal information to us, however, if you do not, it may affect - your use of our Platform or the products and/or services offered on - or through it. You may also request details of the personal + your use of our Platform or the products and/or services offered + on or through it. You may also request details of the personal information that we hold about you.

    Information from third parties: If we receive personal - information about you from a third party, we will protect it as set - out in this Privacy Policy. If you are a third party providing - personal information about somebody else, you represent and warrant - that you have such person’s consent to provide the personal - information to us. + information about you from a third party, we will protect it as + set out in this Privacy Policy. If you are a third party providing + personal information about somebody else, you represent and + warrant that you have such person’s consent to provide the + personal information to us.

    Marketing permission and Unsubscribing: If you have previously agreed to us using your personal information for direct marketing purposes, you may change your mind at any time by opting out of the promotional communications or contacting us using the - details below. To unsubscribe from our email database or opt-out of - communications (including marketing communications), please contact - us using the details provided in this privacy policy or opt-out - using the opt-out facilities provided in the communication. We may - need to request specific information from you to help us confirm - your identity. + details below. To unsubscribe from our email database or opt-out + of communications (including marketing communications), please + contact us using the details provided in this privacy policy or + opt-out using the opt-out facilities provided in the + communication. We may need to request specific information from + you to help us confirm your identity.

    - Correction: If you believe that any information we hold about - you is inaccurate, out of date, incomplete, irrelevant, or + Correction: If you believe that any information we hold + about you is inaccurate, out of date, incomplete, irrelevant, or misleading, please contact us using the details provided in this privacy policy. We will take reasonable steps to correct any information found to be inaccurate, incomplete, misleading, or out of date.

    - Non-discrimination: We will not discriminate against you for - exercising any of your rights over your personal information. Unless - your personal information is required to provide you with a - particular service or offer (for example providing user support), we - will not deny you goods or services and/or charge you different + Non-discrimination: We will not discriminate against you + for exercising any of your rights over your personal information. + Unless your personal information is required to provide you with a + particular service or offer (for example providing user support), + we will not deny you goods or services and/or charge you different prices or rates for goods or services, including through granting discounts or other benefits, or imposing penalties, or provide you with a different level or quality of goods or services. @@ -407,8 +410,8 @@ const PrivacyPolicy = () => {

    Complaints: If you believe that we have breached a relevant - data protection law and wish to make a complaint, please contact us - using the details below and provide us with full details of the + data protection law and wish to make a complaint, please contact + us using the details below and provide us with full details of the alleged breach. We will promptly investigate your complaint and respond to you, in writing, setting out the outcome of our investigation and the steps we will take to deal with your @@ -417,29 +420,30 @@ const PrivacyPolicy = () => {

    No fee usually required: You will not have to pay a fee to - access your personal data (or to exercise any of the other rights). - However, we may charge a reasonable fee if your request is - manifestly unfounded or excessive. Alternatively, we could refuse to - comply with your request in these circumstances. We may need to - request specific information from you to help us confirm your - identity and ensure your right to access your personal data (or to - exercise any of your other rights). This is a security measure to - ensure that personal data is not disclosed to any person who has no - right to receive it. We may also contact you to ask you for further - information in relation to your request to speed up our response. + access your personal data (or to exercise any of the other + rights). However, we may charge a reasonable fee if your request + is manifestly unfounded or excessive. Alternatively, we could + refuse to comply with your request in these circumstances. We may + need to request specific information from you to help us confirm + your identity and ensure your right to access your personal data + (or to exercise any of your other rights). This is a security + measure to ensure that personal data is not disclosed to any + person who has no right to receive it. We may also contact you to + ask you for further information in relation to your request to + speed up our response.

    Period for replying to a legitimate request: We try to - respond to all legitimate requests within one month. Occasionally it - may take us longer than a month if your request is particularly - complex or you have made a number of requests. In this case, we will - notify you and keep you updated. + respond to all legitimate requests within one month. Occasionally + it may take us longer than a month if your request is particularly + complex or you have made a number of requests. In this case, we + will notify you and keep you updated.
    - Notwithstanding the above, we cannot edit or delete any information - that is stored on a blockchain as we do not have custody or control - over any blockchains. The information stored on the blockchain may - include purchases, sales, and transfers related to any blockchain - address associated with you. + Notwithstanding the above, we cannot edit or delete any + information that is stored on a blockchain as we do not have + custody or control over any blockchains. The information stored on + the blockchain may include purchases, sales, and transfers related + to any blockchain address associated with you.

    @@ -451,12 +455,12 @@ const PrivacyPolicy = () => { The Platform is not directed to children under 18 (or other age as required by local law), and we do not knowingly collect personal information from children. If you are a parent or guardian and - believe your child has uploaded personal information to our Platform - without your consent, you may contact us. If we become aware that a - child has provided us with personal information in violation of - applicable law, we will delete any personal information we have - collected, unless we have a legal obligation to keep it, and - terminate the child’s account if applicable. + believe your child has uploaded personal information to our + Platform without your consent, you may contact us. If we become + aware that a child has provided us with personal information in + violation of applicable law, we will delete any personal + information we have collected, unless we have a legal obligation + to keep it, and terminate the child’s account if applicable.

@@ -467,9 +471,9 @@ const PrivacyPolicy = () => {

If we or our assets are acquired, or in the unlikely event that we go out of business or enter bankruptcy, we would include data, - including your personal information, among the assets transferred to - any parties who acquire us. You acknowledge that such transfers may - occur, and that any parties who acquire us may, to the extent + including your personal information, among the assets transferred + to any parties who acquire us. You acknowledge that such transfers + may occur, and that any parties who acquire us may, to the extent permitted by applicable law, continue to use your personal information according to this Privacy Policy, which they will be required to assume as it is the basis for any ownership or use @@ -485,9 +489,9 @@ const PrivacyPolicy = () => { All information processed by us may be transferred, processed, and stored anywhere in the world, including, but not limited to, the United States, members of the European Union, or other countries, - which may have data protection laws that are different from the laws - where you live. We endeavor to safeguard your information consistent - with the requirements of applicable laws. + which may have data protection laws that are different from the + laws where you live. We endeavor to safeguard your information + consistent with the requirements of applicable laws.

@@ -496,8 +500,8 @@ const PrivacyPolicy = () => {

- Our Platform may link to external sites that are not operated by us. - Please be aware that we have no control over the content and + Our Platform may link to external sites that are not operated by + us. Please be aware that we have no control over the content and policies of those sites and cannot accept responsibility or liability for their respective privacy practices.

@@ -509,18 +513,18 @@ const PrivacyPolicy = () => {

At our discretion, we may change this Privacy Policy to reflect - updates to our business processes, current acceptable practices, or - legislative or regulatory changes. If we decide to change this - Policy, we will post the changes here at the same link by which you - are accessing this Policy, and if the changes are significant, or if - required by applicable law, we will contact you (based on your - selected preferences for communications from us) with details of the - changes. + updates to our business processes, current acceptable practices, + or legislative or regulatory changes. If we decide to change this + Policy, we will post the changes here at the same link by which + you are accessing this Policy, and if the changes are significant, + or if required by applicable law, we will contact you (based on + your selected preferences for communications from us) with details + of the changes.

If required by law, we will get your permission or give you the - opportunity to opt in to or opt out of, as applicable, any new uses - of your personal information. + opportunity to opt in to or opt out of, as applicable, any new + uses of your personal information.

@@ -533,8 +537,8 @@ const PrivacyPolicy = () => { our processing of personal information that is subject to the California Consumer Privacy Act of 2018 (the “CCPA”). The CCPA provides California residents with the right to know what - categories of personal information we have collected about them, and - whether we disclosed that personal information for a business + categories of personal information we have collected about them, + and whether we disclosed that personal information for a business purpose (e.g., to a service provider) in the preceding 12 months. California residents can find this information by visiting:{" "} @@ -550,11 +554,11 @@ const PrivacyPolicy = () => {

If you are a resident of Nevada, you have the right to opt-out of - the sale of certain personal information to third parties who intend - to license or sell that personal information. You can exercise this - right by contacting us with the subject line “Nevada Do Not Sell - Request” and providing us with your name and the email address - associated with your account.{" "} + the sale of certain personal information to third parties who + intend to license or sell that personal information. You can + exercise this right by contacting us with the subject line “Nevada + Do Not Sell Request” and providing us with your name and the email + address associated with your account.{" "}

@@ -565,8 +569,8 @@ const PrivacyPolicy = () => {

You have certain rights under applicable legislation, and in particular under Regulation EU 2016/679 (General Data Protection - Regulation or ‘GDPR’). You can find out more about the GDPR and your - rights by accessing the European Commission’s website. + Regulation or ‘GDPR’). You can find out more about the GDPR and + your rights by accessing the European Commission’s website.

@@ -576,11 +580,11 @@ const PrivacyPolicy = () => {

- If you have any questions, concerns, or complaints about our Privacy - Policy or our data collection and processing practices, or if you - want to report any security violations to us, or exercise any of - your rights under this Privacy Policy, please contact us at the - following address: + If you have any questions, concerns, or complaints about our + Privacy Policy or our data collection and processing practices, or + if you want to report any security violations to us, or exercise + any of your rights under this Privacy Policy, please contact us at + the following address:


From c9cd3884edea340d4eb2811d1d1f64eb263f00e7 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Mon, 1 Jul 2024 10:42:33 -0400 Subject: [PATCH 05/18] Fixes and include links --- apps/connect/src/App.tsx | 12 ++++++------ apps/connect/src/components/pages/PrivacyPolicy.tsx | 2 +- apps/connect/src/utils/constants.ts | 2 ++ apps/connect/vite.config.ts | 4 ++++ apps/connect/vite.token-bridge.config.ts | 3 ++- apps/connect/vite.usdc-bridge.config.ts | 1 + 6 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 6bf7953ed..3a2120462 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -13,13 +13,12 @@ import WormholeConnect from "@wormhole-foundation/wormhole-connect"; import { eventHandler } from "./providers/telemetry"; import { useRoutes } from "react-router-dom"; import PrivacyPolicy from "./components/pages/PrivacyPolicy"; -import { PrivacyPolicyPath, USDCPath } from "./utils/constants"; +import { PrivacyPolicyPath, USDCPath, isPreview } from "./utils/constants"; import Banner from "./components/atoms/Banner"; const defaultConfig: WormholeConnectConfig = { ...wormholeConnectConfig, - ...((window.location.origin.includes("preview") || - window.location.origin.includes("testnet")) && { + ...(isPreview && { eventHandler: eventHandler, }), }; @@ -58,10 +57,11 @@ export default function Root() { ); + const path = isPreview ? window.location.pathname.split('/')[0] : ""; const routes = useRoutes([ - { path: "/", element: Connect }, - { path: USDCPath, element: Connect }, - { path: PrivacyPolicyPath, element: }, + { path: `/${path}`, element: Connect }, + { path: `${path}${USDCPath}`, element: Connect }, + { path: `${path}${PrivacyPolicyPath}`, element: }, ]); return ( <> diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index 9099e30d5..1b18dc27f 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -76,7 +76,6 @@ const PrivacyPolicy = () => { const navigate = useNavigate(); return ( - navigate(-1)}> @@ -595,6 +594,7 @@ const PrivacyPolicy = () => {
+ ); }; diff --git a/apps/connect/src/utils/constants.ts b/apps/connect/src/utils/constants.ts index d3ab87411..75dfb9ca1 100644 --- a/apps/connect/src/utils/constants.ts +++ b/apps/connect/src/utils/constants.ts @@ -1,2 +1,4 @@ export const USDCPath = "/usdc-bridge"; export const PrivacyPolicyPath = "/privacy-policy"; + +export const isPreview = (window.location.origin.includes("preview") || window.location.origin.includes("testnet")); \ No newline at end of file diff --git a/apps/connect/vite.config.ts b/apps/connect/vite.config.ts index e8274b3ed..3cda463dd 100644 --- a/apps/connect/vite.config.ts +++ b/apps/connect/vite.config.ts @@ -88,6 +88,10 @@ export default defineConfig({ label: 'Advanced Tools', href: `${process.env.PUBLIC_URL}/advanced-tools/`, order: 1 + }, + { + label: 'Privacy Policy', + href: `${process.env.PUBLIC_URL}/privacy-policy/`, } ] } diff --git a/apps/connect/vite.token-bridge.config.ts b/apps/connect/vite.token-bridge.config.ts index 539f13c33..4c1807ccf 100644 --- a/apps/connect/vite.token-bridge.config.ts +++ b/apps/connect/vite.token-bridge.config.ts @@ -3,10 +3,10 @@ import viteConfig, { chains } from './vite.config' import type { WormholeConnectConfig } from '@wormhole-foundation/wormhole-connect' const PUBLIC_URL = viteConfig.base; - const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/` const ADVANCE_TOOLS_HREF_TEMPLATE = `${ADVANCE_TOOLS_HREF}#/transfer?sourceChain={:sourceChain}&targetChain={:targetChain}` const USDC_BRIDGE_HREF = `${PUBLIC_URL}/usdc-bridge/` +const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/privacy-policy/` const ALGORAND = { icon: "data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_5964_23764' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='80' height='80'%3E%3Crect width='80' height='80' fill='%23D9D9D9'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_5964_23764)'%3E%3Cpath d='M17.1382 72.7516L27.3034 55.1578L37.4598 37.6258L47.5588 20.032L49.2361 17.2424L49.9732 20.032L53.0718 31.6141L49.6024 37.6258L39.4461 55.1578L29.3471 72.7516H41.4853L51.6461 55.1578L56.9118 46.0519L59.3925 55.1578L64.0977 72.7516H75L70.2948 55.1578L65.5852 37.6258L64.3493 33.1015L71.9059 20.032H60.8799L60.5048 18.7299L56.6647 4.35825L56.1703 2.5H45.577L45.3298 2.87077L35.4162 20.032L25.2554 37.6258L15.1608 55.1578L5 72.7516H17.1382Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A", @@ -541,6 +541,7 @@ export default defineConfig({ { label: "Home", active: true, href: `${PUBLIC_URL}/` }, { label: "Staking", href: "https://www.tally.xyz/gov/wormhole", isBlank: true }, { label: "USDC", href: USDC_BRIDGE_HREF }, + { label: "Privacy Policy", href: PRIVACY_POLICY_HREF }, ], redirects: { source: [ diff --git a/apps/connect/vite.usdc-bridge.config.ts b/apps/connect/vite.usdc-bridge.config.ts index fe493fde2..154cbdd9a 100644 --- a/apps/connect/vite.usdc-bridge.config.ts +++ b/apps/connect/vite.usdc-bridge.config.ts @@ -15,6 +15,7 @@ export default defineConfig({ { label: "Home", href: `${PUBLIC_URL}/` }, { label: "Staking", href: "https://www.tally.xyz/gov/wormhole", isBlank: true }, { label: "USDC", active: true, href: `${PUBLIC_URL}/usdc-bridge` }, + { label: "Privacy Policy", href: `${PUBLIC_URL}/privacy-policy` }, ], wormholeConnectConfig: { ...viteConfig?.define?.wormholeConnectConfig, From cc1e0d3501044cb346d9789c0e0f0ab0e3a1af0b Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Mon, 1 Jul 2024 10:50:14 -0400 Subject: [PATCH 06/18] Fix prettier --- apps/connect/src/App.tsx | 2 +- apps/connect/src/utils/constants.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 3a2120462..10f11e99a 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -57,7 +57,7 @@ export default function Root() { ); - const path = isPreview ? window.location.pathname.split('/')[0] : ""; + const path = isPreview ? window.location.pathname.split("/")[0] : ""; const routes = useRoutes([ { path: `/${path}`, element: Connect }, { path: `${path}${USDCPath}`, element: Connect }, diff --git a/apps/connect/src/utils/constants.ts b/apps/connect/src/utils/constants.ts index 75dfb9ca1..78b3b04e6 100644 --- a/apps/connect/src/utils/constants.ts +++ b/apps/connect/src/utils/constants.ts @@ -1,4 +1,6 @@ export const USDCPath = "/usdc-bridge"; export const PrivacyPolicyPath = "/privacy-policy"; -export const isPreview = (window.location.origin.includes("preview") || window.location.origin.includes("testnet")); \ No newline at end of file +export const isPreview = + window.location.origin.includes("preview") || + window.location.origin.includes("testnet"); From c0240278797fc56134d296060725398ed251dd86 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Mon, 1 Jul 2024 12:34:17 -0400 Subject: [PATCH 07/18] Fix preview --- apps/connect/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 10f11e99a..7bbb3448b 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -57,7 +57,7 @@ export default function Root() { ); - const path = isPreview ? window.location.pathname.split("/")[0] : ""; + const path = isPreview ? window.location.pathname.split("/")[1] : ""; const routes = useRoutes([ { path: `/${path}`, element: Connect }, { path: `${path}${USDCPath}`, element: Connect }, From 243877f2da16987dbca2716970999780e384e643 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Mon, 1 Jul 2024 13:38:52 -0400 Subject: [PATCH 08/18] Hash router --- apps/connect/src/main.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/connect/src/main.tsx b/apps/connect/src/main.tsx index 9707e1895..e65abcf48 100644 --- a/apps/connect/src/main.tsx +++ b/apps/connect/src/main.tsx @@ -7,7 +7,7 @@ import theme from "./theme/portal.ts"; import Background from "./components/atoms/Background.tsx"; import App from "./App.tsx"; import { OpenTelemetryContext, tracer } from "./providers/telemetry.ts"; -import { BrowserRouter } from "react-router-dom"; +import { HashRouter } from "react-router-dom"; if (redirects && redirects?.source?.length > 0) { const matcher = new RegExp(redirects.source.join("|")); @@ -25,9 +25,9 @@ ReactDOM.createRoot(document.getElementById("root")!).render( - + - + From df57927f488579ecbe004b950a92f9635d43fd5a Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Mon, 1 Jul 2024 15:08:23 -0400 Subject: [PATCH 09/18] test --- apps/connect/src/App.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 7bbb3448b..7ac8a583b 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -57,7 +57,7 @@ export default function Root() { ); - const path = isPreview ? window.location.pathname.split("/")[1] : ""; + const path = /*isPreview ? window.location.pathname.split("/")[1] :*/ ""; const routes = useRoutes([ { path: `/${path}`, element: Connect }, { path: `${path}${USDCPath}`, element: Connect }, From c38587b17ad3011cee003d0a952bb40a7925f6c7 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 10:25:30 -0400 Subject: [PATCH 10/18] Hash routing p2 --- apps/connect/src/App.tsx | 8 ++++---- apps/connect/src/components/atoms/Banner.tsx | 5 ++++- apps/connect/src/components/pages/PrivacyPolicy.tsx | 4 ++-- apps/connect/src/utils/styles.ts | 5 +++-- apps/connect/vite.config.ts | 2 +- apps/connect/vite.token-bridge.config.ts | 2 +- 6 files changed, 15 insertions(+), 11 deletions(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index 7ac8a583b..aba8b5d8a 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -57,11 +57,11 @@ export default function Root() { ); - const path = /*isPreview ? window.location.pathname.split("/")[1] :*/ ""; + const routes = useRoutes([ - { path: `/${path}`, element: Connect }, - { path: `${path}${USDCPath}`, element: Connect }, - { path: `${path}${PrivacyPolicyPath}`, element: }, + { path: `/`, element: Connect }, + { path: `${USDCPath}`, element: Connect }, + { path: `${PrivacyPolicyPath}`, element: }, ]); return ( <> diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index bf12c7330..e15e63e96 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -3,6 +3,7 @@ import { useState } from "react"; import { PrivacyPolicyPath } from "../../utils/constants"; import cookie from "../../assets/imgs/cookie.svg"; import { Link } from "../../utils/styles"; +import { Link as RouterLink } from "react-router-dom"; const BannerContainer = styled("div")(({ theme }) => ({ display: "flex", @@ -79,7 +80,9 @@ const Banner = () => {
This website is designed to enhance your experience. By continuing to use this site, you consent to our{" "} - Privacy Policy + + Privacy Policy +
handleClose()}> Close diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index 1b18dc27f..f9cffcee2 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -67,7 +67,7 @@ const Container = styled("div")(({ theme }) => ({ margin: "auto", padding: 40, [theme.breakpoints.down("md")]: { - flexDirection: "column", + flexDirection: "column-reverse", width: "100%", }, })); @@ -540,7 +540,7 @@ const PrivacyPolicy = () => { and whether we disclosed that personal information for a business purpose (e.g., to a service provider) in the preceding 12 months. California residents can find this information by visiting:{" "} - + https://www.oag.ca.gov/privacy/ccpa . diff --git a/apps/connect/src/utils/styles.ts b/apps/connect/src/utils/styles.ts index 88b6f6101..06320b5d5 100644 --- a/apps/connect/src/utils/styles.ts +++ b/apps/connect/src/utils/styles.ts @@ -1,6 +1,7 @@ -import { styled, Link as MuiLink } from "@mui/material"; +import { styled, Link as MuiLink, LinkProps } from "@mui/material"; +import { LinkProps as RouterLinkProps } from "react-router-dom"; -export const Link = styled(MuiLink)(() => ({ +export const Link = styled(MuiLink)(() => ({ color: "white", textDecoration: "underline", fontWeight: 500, diff --git a/apps/connect/vite.config.ts b/apps/connect/vite.config.ts index 3cda463dd..55f8008a3 100644 --- a/apps/connect/vite.config.ts +++ b/apps/connect/vite.config.ts @@ -91,7 +91,7 @@ export default defineConfig({ }, { label: 'Privacy Policy', - href: `${process.env.PUBLIC_URL}/privacy-policy/`, + href: `${process.env.PUBLIC_URL}/#/privacy-policy/`, } ] } diff --git a/apps/connect/vite.token-bridge.config.ts b/apps/connect/vite.token-bridge.config.ts index 4c1807ccf..90cb92c63 100644 --- a/apps/connect/vite.token-bridge.config.ts +++ b/apps/connect/vite.token-bridge.config.ts @@ -6,7 +6,7 @@ const PUBLIC_URL = viteConfig.base; const ADVANCE_TOOLS_HREF = `${PUBLIC_URL}/advanced-tools/` const ADVANCE_TOOLS_HREF_TEMPLATE = `${ADVANCE_TOOLS_HREF}#/transfer?sourceChain={:sourceChain}&targetChain={:targetChain}` const USDC_BRIDGE_HREF = `${PUBLIC_URL}/usdc-bridge/` -const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/privacy-policy/` +const PRIVACY_POLICY_HREF = `${PUBLIC_URL}/#/privacy-policy/` const ALGORAND = { icon: "data:image/svg+xml,%3Csvg width='80' height='80' viewBox='0 0 80 80' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cmask id='mask0_5964_23764' style='mask-type:alpha' maskUnits='userSpaceOnUse' x='0' y='0' width='80' height='80'%3E%3Crect width='80' height='80' fill='%23D9D9D9'/%3E%3C/mask%3E%3Cg mask='url(%23mask0_5964_23764)'%3E%3Cpath d='M17.1382 72.7516L27.3034 55.1578L37.4598 37.6258L47.5588 20.032L49.2361 17.2424L49.9732 20.032L53.0718 31.6141L49.6024 37.6258L39.4461 55.1578L29.3471 72.7516H41.4853L51.6461 55.1578L56.9118 46.0519L59.3925 55.1578L64.0977 72.7516H75L70.2948 55.1578L65.5852 37.6258L64.3493 33.1015L71.9059 20.032H60.8799L60.5048 18.7299L56.6647 4.35825L56.1703 2.5H45.577L45.3298 2.87077L35.4162 20.032L25.2554 37.6258L15.1608 55.1578L5 72.7516H17.1382Z' fill='white'/%3E%3C/g%3E%3C/svg%3E%0A", From 15751c45b010e5947e4078538a191dce4a0c7759 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 12:47:15 -0400 Subject: [PATCH 11/18] Fix go back button --- apps/connect/src/components/pages/PrivacyPolicy.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index f9cffcee2..71de6e85f 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -1,6 +1,6 @@ import { Button, Container as MuiContainer, styled } from "@mui/material"; import arrow from "../../assets/imgs/arrow.svg"; -import { useNavigate } from "react-router-dom"; +import { useLocation, useNavigate } from "react-router-dom"; import { Link } from "../../utils/styles"; import TableOfContent from "../atoms/TableOfContent"; @@ -74,11 +74,14 @@ const Container = styled("div")(({ theme }) => ({ const PrivacyPolicy = () => { const navigate = useNavigate(); + const { state } = useLocation(); + const from = state?.from || "/"; + return ( - navigate(-1)}> + navigate(from)}> arrow

Privacy Policies

From d5661df29d35fbdb481c4f392ffddce40798aed5 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 12:49:26 -0400 Subject: [PATCH 12/18] Bold some words --- apps/connect/src/components/pages/PrivacyPolicy.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index 71de6e85f..6291cd86f 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -96,10 +96,10 @@ const PrivacyPolicy = () => { respect your privacy and comply with any applicable laws and regulations regarding any personal information we may collect about you, including across our website, portalbridge.com, and other sites - we own and operate (collectively, the “Platform”). This Privacy Policy - (the "Policy") outlines the data collection, processing, and + we own and operate (collectively, the “Platform”). This Privacy Policy + (the "Policy") outlines the data collection, processing, and management practices of the Company in relation to services provided - on the Platform (the “Services”). By using our Platform, you agree to + on the Platform (the “Services”). By using our Platform, you agree to the collection, use, and disclosure of your personal information in accordance with this Policy.

From ca0184f2e31948f5e2e583af6e028e7973b4c188 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 13:24:09 -0400 Subject: [PATCH 13/18] Fix banner background --- apps/connect/src/components/atoms/Banner.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index e15e63e96..340084606 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -25,7 +25,7 @@ const Content = styled("div")(({ theme }) => ({ alignItems: "center", position: "fixed", padding: 10, - backgroundColor: "#070528", + backgroundColor: "#1b1939", gap: 20, borderRadius: 12, margin: 26, From 1d80dc585c648d10daae0ebea645d59fb5727fe2 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 13:45:46 -0400 Subject: [PATCH 14/18] Fix banner background --- apps/connect/src/components/atoms/Banner.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/connect/src/components/atoms/Banner.tsx b/apps/connect/src/components/atoms/Banner.tsx index 340084606..059f58467 100644 --- a/apps/connect/src/components/atoms/Banner.tsx +++ b/apps/connect/src/components/atoms/Banner.tsx @@ -25,7 +25,7 @@ const Content = styled("div")(({ theme }) => ({ alignItems: "center", position: "fixed", padding: 10, - backgroundColor: "#1b1939", + backgroundColor: "#FFFFFF14", gap: 20, borderRadius: 12, margin: 26, From 245d401edca22c054ef214c62d71ade1ec226bb6 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Tue, 2 Jul 2024 14:12:41 -0400 Subject: [PATCH 15/18] Fix prettier --- apps/connect/src/components/pages/PrivacyPolicy.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index 6291cd86f..63d954cb1 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -96,12 +96,12 @@ const PrivacyPolicy = () => { respect your privacy and comply with any applicable laws and regulations regarding any personal information we may collect about you, including across our website, portalbridge.com, and other sites - we own and operate (collectively, the “Platform”). This Privacy Policy - (the "Policy") outlines the data collection, processing, and - management practices of the Company in relation to services provided - on the Platform (the “Services”). By using our Platform, you agree to - the collection, use, and disclosure of your personal information in - accordance with this Policy. + we own and operate (collectively, the “Platform”). This Privacy + Policy (the "Policy") outlines the data collection, processing, + and management practices of the Company in relation to services + provided on the Platform (the “Services”). By using our + Platform, you agree to the collection, use, and disclosure of your + personal information in accordance with this Policy.

In the event our Platform contains links to third-party sites and From 3cc9d46c63ceb5d883e24105b18540a0099d9a43 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Wed, 3 Jul 2024 13:52:20 -0400 Subject: [PATCH 16/18] Fix route --- apps/connect/src/App.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/apps/connect/src/App.tsx b/apps/connect/src/App.tsx index aba8b5d8a..3de1c4bb2 100644 --- a/apps/connect/src/App.tsx +++ b/apps/connect/src/App.tsx @@ -13,7 +13,7 @@ import WormholeConnect from "@wormhole-foundation/wormhole-connect"; import { eventHandler } from "./providers/telemetry"; import { useRoutes } from "react-router-dom"; import PrivacyPolicy from "./components/pages/PrivacyPolicy"; -import { PrivacyPolicyPath, USDCPath, isPreview } from "./utils/constants"; +import { PrivacyPolicyPath, isPreview } from "./utils/constants"; import Banner from "./components/atoms/Banner"; const defaultConfig: WormholeConnectConfig = { @@ -57,11 +57,9 @@ export default function Root() { ); - const routes = useRoutes([ { path: `/`, element: Connect }, - { path: `${USDCPath}`, element: Connect }, - { path: `${PrivacyPolicyPath}`, element: }, + { path: PrivacyPolicyPath, element: }, ]); return ( <> From 044c1d2ec8eb4780831607782c9f7ace9e164c50 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Wed, 3 Jul 2024 14:41:19 -0400 Subject: [PATCH 17/18] Fix ul --- .../src/components/pages/PrivacyPolicy.tsx | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/apps/connect/src/components/pages/PrivacyPolicy.tsx b/apps/connect/src/components/pages/PrivacyPolicy.tsx index 63d954cb1..9c559d692 100644 --- a/apps/connect/src/components/pages/PrivacyPolicy.tsx +++ b/apps/connect/src/components/pages/PrivacyPolicy.tsx @@ -72,6 +72,11 @@ const Container = styled("div")(({ theme }) => ({ }, })); +const UL = styled("ul")(() => ({ + fontSize: 14, + lineHeight: "20px", +})); + const PrivacyPolicy = () => { const navigate = useNavigate(); const { state } = useLocation(); @@ -134,14 +139,14 @@ const PrivacyPolicy = () => { will be relevant to providing that Service and include some or all of the following non-personally identifiable data:

-
    +
    • Your public blockchain wallet address;
    • Amount of any asset involved in a transaction; and
    • Any additional information required for verification or participation in the Service offered.
    • -
    +

We may also collect personal information from you when you communicate with us, such as your name, email address, and any @@ -175,7 +180,7 @@ const PrivacyPolicy = () => { providers, and our business partners use these cookies and other similar technologies to process information, which may include:

-
    +
    • IP address;
    • the type of computer or mobile device you are using;
    • platform type (like Apple iOS or Android);
    • @@ -198,7 +203,7 @@ const PrivacyPolicy = () => { what your current progress is in our Services and the date and time of activity. -
    +
@@ -213,7 +218,7 @@ const PrivacyPolicy = () => { legitimate reason for doing so. Most commonly, we will use your personal data in the following circumstances:

-
    +
    • Provide our Services and create accounts in those Services
    • @@ -253,7 +258,7 @@ const PrivacyPolicy = () => { obligations, resolving any disputes we may have, and to administer our agreements with third parties -
    +

@@ -272,7 +277,7 @@ const PrivacyPolicy = () => { personal data and to treat it in accordance with the law.

We may disclose personal information to:

-
    +
    • a parent, subsidiary, or affiliate of the Company
    • third-party service providers for the purpose of enabling them @@ -304,7 +309,7 @@ const PrivacyPolicy = () => { an entity that buys, or to which we transfer all or substantially all of our assets and business
    • -
    +

SECURITY OF YOUR PERSONAL INFORMATION From add172aeece28cbaf39174d65ebee1de6e8f6b67 Mon Sep 17 00:00:00 2001 From: yuli-ferna Date: Wed, 3 Jul 2024 16:49:35 -0400 Subject: [PATCH 18/18] Fix prettier --- apps/connect/src/utils/constants.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/connect/src/utils/constants.ts b/apps/connect/src/utils/constants.ts index 78b3b04e6..0d6964bbd 100644 --- a/apps/connect/src/utils/constants.ts +++ b/apps/connect/src/utils/constants.ts @@ -1,4 +1,3 @@ -export const USDCPath = "/usdc-bridge"; export const PrivacyPolicyPath = "/privacy-policy"; export const isPreview =