From 35d492a6db120887b9155e03ea9d664f3c2009f0 Mon Sep 17 00:00:00 2001 From: Viet Date: Fri, 19 Jan 2024 09:39:48 +0700 Subject: [PATCH 01/12] Tracking SOP --- src/AnalyticsNext/handle.tsx | 11 ++++++----- src/AnalyticsNext/index.tsx | 5 +++-- src/utils/index.ts | 14 ++++++++++---- 3 files changed, 19 insertions(+), 11 deletions(-) diff --git a/src/AnalyticsNext/handle.tsx b/src/AnalyticsNext/handle.tsx index dbe8b74..657c755 100644 --- a/src/AnalyticsNext/handle.tsx +++ b/src/AnalyticsNext/handle.tsx @@ -4,18 +4,19 @@ import { startTracker, endTracker, endTrackerVisibilityState } from '../utils/in interface AnalyticsHandle { router: any; + attributes: any; children?: ReactNode; } -const AnalyticsHandle = ({ router, children }: AnalyticsHandle) => { +const AnalyticsHandle = ({ router, attributes, children }: AnalyticsHandle) => { const AnalyticsStore = React.useContext(AnalyticsContext); const endPoint = process.env.NEXT_PUBLIC_ENDPOINT_ANALYTICS_URL; const [prevRoute, setPrevRoute] = useState(''); const handleStartTracker = useCallback( - async (prevRoute: string) => { + async (prevRoute: string, attributes: any) => { const referer = prevRoute ? prevRoute : ''; window['referer'] = referer; - const responseStart = await startTracker(endPoint, '', referer); + const responseStart = await startTracker(endPoint, '', referer, '', attributes); responseStart?.event_uuid && AnalyticsStore.setEventID(responseStart.event_uuid); responseStart?.visitor_uuid && AnalyticsStore.setUUID(responseStart.visitor_uuid); }, @@ -26,7 +27,7 @@ const AnalyticsHandle = ({ router, children }: AnalyticsHandle) => { const init = async () => { if (!AnalyticsStore.visitor_uuid) { setPrevRoute(router.asPath); - await handleStartTracker(router.asPath); + await handleStartTracker(router.asPath, attributes); } }; init(); @@ -37,7 +38,7 @@ const AnalyticsHandle = ({ router, children }: AnalyticsHandle) => { setPrevRoute(router.asPath); if (AnalyticsStore.visitor_uuid) { endTracker(endPoint, window['event_uuid'], AnalyticsStore.visitor_uuid); - await handleStartTracker(prevRoute); + await handleStartTracker(prevRoute, attributes); } }; router.events.on('routeChangeComplete', handleRouteChange); diff --git a/src/AnalyticsNext/index.tsx b/src/AnalyticsNext/index.tsx index 48ec8ff..6abbc82 100644 --- a/src/AnalyticsNext/index.tsx +++ b/src/AnalyticsNext/index.tsx @@ -9,14 +9,15 @@ const ConsentComponent = dynamic(() => import('../Components/Consent'), { ssr: f interface AnalyticsNext { router: NextRouter; + attributes: any; children?: ReactNode; } -const AnalyticsNext = ({ router, children }: AnalyticsNext) => { +const AnalyticsNext = ({ router, attributes, children }: AnalyticsNext) => { return ( <> - + {children} {process.env.NEXT_PUBLIC_DISABLE_ANALYTICS_CONSENT !== 'true' && ( { const allow = sessionStorage.getItem('aesirx-analytics-allow'); if (allow === '0') { return null; } - + console.log('attributesVisitattributesVisitattributesVisit', attributesVisit); const { location, document } = window; const { pathname, search, origin } = location; url = `${origin}${pathname}${search}`; referer = referer ? location.protocol + '//' + location.host + referer : document.referrer - ? document.referrer - : ''; + ? document.referrer + : ''; user_agent = window.navigator.userAgent; const browser = Bowser.parse(window.navigator.userAgent); const browser_name = browser?.browser?.name; @@ -50,6 +51,11 @@ const startTracker = async ( urlParams.get(key) && attributes.push({ name: key, value: urlParams.get(key) }); } } + if (attributesVisit?.length) { + attributesVisit?.forEach((element: any) => { + element?.name && attributes.push({ name: element?.name, value: element?.value }); + }); + } const responseStart = await trackerService(createRequestV2(endpoint, 'start'), { fingerprint: fingerprint, url: url, From d89500bafe51e620227f59ee19643bea1fcc3d7e Mon Sep 17 00:00:00 2001 From: Viet Date: Fri, 19 Jan 2024 09:41:13 +0700 Subject: [PATCH 02/12] Remove debug --- src/utils/index.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/index.ts b/src/utils/index.ts index 566246f..adb05b7 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -24,7 +24,6 @@ const startTracker = async ( if (allow === '0') { return null; } - console.log('attributesVisitattributesVisitattributesVisit', attributesVisit); const { location, document } = window; const { pathname, search, origin } = location; url = `${origin}${pathname}${search}`; From 0207d5411790f1b32fd7b11ba3a940e318ee4f16 Mon Sep 17 00:00:00 2001 From: Viet Date: Wed, 24 Jan 2024 16:41:04 +0700 Subject: [PATCH 03/12] Consent Custom Layout --- src/AnalyticsNext/index.tsx | 25 +- src/Assets/check_circle.svg | 5 + src/Assets/check_line.svg | 3 + src/Assets/checkbox.svg | 3 + src/Assets/checkbox_active.svg | 4 + src/Components/ConsentCustom.tsx | 987 +++++++++++++++++++++++++++++++ src/Components/Terms.tsx | 354 +++++++++-- src/styles/style.scss | 87 +++ src/translations/dk/common.json | 32 +- src/translations/en/common.json | 30 +- src/translations/es/common.json | 32 +- src/translations/fr/common.json | 32 +- src/translations/hr/common.json | 32 +- src/translations/th/common.json | 32 +- src/translations/ua/common.json | 32 +- src/translations/vi/common.json | 32 +- 16 files changed, 1652 insertions(+), 70 deletions(-) create mode 100644 src/Assets/check_circle.svg create mode 100644 src/Assets/check_line.svg create mode 100644 src/Assets/checkbox.svg create mode 100644 src/Assets/checkbox_active.svg create mode 100644 src/Components/ConsentCustom.tsx diff --git a/src/AnalyticsNext/index.tsx b/src/AnalyticsNext/index.tsx index 6abbc82..5815e8d 100644 --- a/src/AnalyticsNext/index.tsx +++ b/src/AnalyticsNext/index.tsx @@ -6,25 +6,38 @@ import { NextRouter } from 'next/router'; import dynamic from 'next/dynamic'; const ConsentComponent = dynamic(() => import('../Components/Consent'), { ssr: false }); +const ConsentComponentCustom = dynamic(() => import('../Components/ConsentCustom'), { ssr: false }); interface AnalyticsNext { router: NextRouter; attributes: any; + customLayout: boolean; children?: ReactNode; } -const AnalyticsNext = ({ router, attributes, children }: AnalyticsNext) => { +const AnalyticsNext = ({ router, attributes, customLayout = false, children }: AnalyticsNext) => { + console.log('customLayout', customLayout); return ( <> {children} {process.env.NEXT_PUBLIC_DISABLE_ANALYTICS_CONSENT !== 'true' && ( - + <> + {customLayout ? ( + + ) : ( + + )} + )} diff --git a/src/Assets/check_circle.svg b/src/Assets/check_circle.svg new file mode 100644 index 0000000..9bd75fd --- /dev/null +++ b/src/Assets/check_circle.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/Assets/check_line.svg b/src/Assets/check_line.svg new file mode 100644 index 0000000..7af6fb2 --- /dev/null +++ b/src/Assets/check_line.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Assets/checkbox.svg b/src/Assets/checkbox.svg new file mode 100644 index 0000000..793b662 --- /dev/null +++ b/src/Assets/checkbox.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Assets/checkbox_active.svg b/src/Assets/checkbox_active.svg new file mode 100644 index 0000000..1abde84 --- /dev/null +++ b/src/Assets/checkbox_active.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/Components/ConsentCustom.tsx b/src/Components/ConsentCustom.tsx new file mode 100644 index 0000000..096a630 --- /dev/null +++ b/src/Components/ConsentCustom.tsx @@ -0,0 +1,987 @@ +/* eslint-disable no-case-declarations */ +import { + agreeConsents, + getConsents, + getMember, + getNonce, + getSignature, + getWalletNonce, + revokeConsents, + verifySignature, +} from '../utils/consent'; +import React, { useContext, useEffect, useState } from 'react'; +import { Button, Form } from 'react-bootstrap'; +import useConsentStatus from '../Hooks/useConsentStatus'; +import '../styles/style.scss'; +import { TermsComponent } from './Terms'; +import { ToastContainer, toast } from 'react-toastify'; + +import yes from '../Assets/yes.svg'; +import no from '../Assets/no.svg'; +import bg from '../Assets/bg.png'; +import privacy from '../Assets/privacy.svg'; +import arrow from '../Assets/arrow.svg'; +import checkbox from '../Assets/checkbox.svg'; +import checkbox_active from '../Assets/checkbox_active.svg'; + +import ContentLoader from 'react-content-loader'; +import { SSOButton } from 'aesirx-sso'; +import { + MAINNET, + WithWalletConnector, + WalletConnectionProps, + useConnection, + useConnect, + ConnectorType, + stringMessage, + useGrpcClient, + TESTNET, +} from '@concordium/react-components'; +import { BROWSER_WALLET, WALLET_CONNECT } from '../Hooks/config'; +import { OsTypes, isDesktop, isMobile, osName } from 'react-device-detect'; +import { LoadingStatus } from './LoadingStatus'; +import ConnectModal from './Connect'; +import { AnalyticsContext } from '../utils/AnalyticsContextProvider'; +import { useTranslation } from 'react-i18next'; +import { useAccount, useSignMessage } from 'wagmi'; +import SSOEthereumProvider from './Ethereum'; +import { getWeb3ID } from '../utils/Concordium'; +interface WalletConnectionPropsExtends extends WalletConnectionProps { + endpoint: string; + aesirXEndpoint: string; + networkEnv?: string; +} +const ConsentComponentCustom = ({ endpoint, aesirXEndpoint, networkEnv }: any) => { + return ( + + {(props) => ( +
+ + + +
+ )} +
+ ); +}; +const ConsentComponentCustomApp = (props: WalletConnectionPropsExtends) => { + const { + endpoint, + aesirXEndpoint, + activeConnectorType, + activeConnector, + activeConnectorError, + connectedAccounts, + genesisHashes, + setActiveConnectorType, + network, + } = props; + const { setConnection } = useConnection(connectedAccounts, genesisHashes); + + const { isConnecting } = useConnect(activeConnector, setConnection); + + const handleOnConnect = async (connectorType: ConnectorType, network = 'concordium') => { + if (network === 'concordium') { + setActiveConnectorType(connectorType); + } + setLoading('done'); + }; + + const [ + uuid, + level, + connection, + account, + show, + setShow, + web3ID, + setWeb3ID, + handleLevel, + showRevoke, + handleRevoke, + ] = useConsentStatus(endpoint, props); + + const [consents, setConsents] = useState([1, 2]); + const [loading, setLoading] = useState('done'); + const [loadingCheckAccount, setLoadingCheckAccount] = useState(false); + const [showExpandConsent, setShowExpandConsent] = useState(true); + const [showExpandRevoke, setShowExpandRevoke] = useState(false); + const [showBackdrop, setShowBackdrop] = useState(true); + const [consentTier4, setConsentTier4] = useState({}); + const [upgradeLayout, setUpgradeLayout] = useState(false); + const [upgradeShowDetail, setUpgradeShowDetail] = useState(false); + const [upgradeLevel, setUpgradeLevel] = useState(0); + const analyticsContext = useContext(AnalyticsContext); + const { t } = useTranslation(); + const gRPCClient = useGrpcClient(network); + + // Metamask + const { address, connector } = useAccount(); + + const { signMessage } = useSignMessage({ + async onSuccess(data, variables) { + const signature = Buffer.from( + typeof data === 'object' && data !== null ? JSON.stringify(data) : data, + 'utf-8' + ).toString('base64'); + const jwt = sessionStorage.getItem('aesirx-analytics-jwt'); + if (variables?.message.indexOf('Revoke consent') > -1) { + // Revoke Metamask + const levelRevoke = sessionStorage.getItem('aesirx-analytics-revoke'); + const consentList = await getConsents(endpoint, uuid); + consentList.forEach(async (consent: any) => { + !consent?.expiration && + (await revokeConsents( + endpoint, + levelRevoke, + consent?.consent_uuid, + address, + signature, + web3ID, + jwt, + 'metamask' + )); + }); + setLoading('done'); + handleRevoke(false); + setShowExpandConsent(false); + setShow(true); + setShowBackdrop(false); + sessionStorage.removeItem('aesirx-analytics-allow'); + } else if (variables?.message.indexOf('Login with nonce') > -1) { + const res = await verifySignature(aesirXEndpoint, 'metamask', address, data); + sessionStorage.setItem('aesirx-analytics-jwt', res?.jwt); + setLoadingCheckAccount(false); + const nonce = await getNonce( + endpoint, + address, + 'Give consent Tier 4:{nonce} {domain} {time}', + 'metamask' + ); + signMessage({ message: `${nonce}` }); + } else { + setLoading('saving'); + // Consent Metamask + await agreeConsents( + endpoint, + level, + uuid, + consents, + address, + signature, + web3ID, + jwt, + 'metamask' + ); + sessionStorage.setItem('aesirx-analytics-uuid', uuid); + sessionStorage.setItem('aesirx-analytics-allow', '1'); + sessionStorage.setItem('aesirx-analytics-consent-type', 'metamask'); + + setShow(false); + setLoading('done'); + handleRevoke(true, level); + setShowBackdrop(false); + } + }, + async onError(error) { + setLoading('done'); + toast.error(error.message); + }, + }); + + const handleChange = async ({ target: { value } }: any) => { + if (consents.indexOf(parseInt(value)) === -1) { + setConsents([...consents, ...[parseInt(value)]]); + } else { + setConsents(consents.filter((consent) => consent !== parseInt(value))); + } + }; + + const handleAgree = async () => { + try { + let flag = true; + // Wallets + let jwt = ''; + if (level > 2) { + if (level === 4) { + try { + setLoadingCheckAccount(true); + const nonceLogin = await getWalletNonce( + aesirXEndpoint, + account ? 'concordium' : 'metamask', + account ?? address + ); + if (nonceLogin) { + try { + if (account) { + const signature = await connection.signMessage( + account, + stringMessage(`${nonceLogin}`) + ); + const convertedSignature = + typeof signature === 'object' && signature !== null + ? signature + : JSON.parse(signature); + + if (signature) { + const data = await verifySignature( + aesirXEndpoint, + 'concordium', + account, + convertedSignature + ); + sessionStorage.setItem('aesirx-analytics-jwt', data?.jwt); + jwt = data?.jwt; + setLoadingCheckAccount(false); + } + } else { + signMessage({ message: `${nonceLogin}` }); + } + } catch (error) { + setLoadingCheckAccount(false); + toast(error.message); + } + } + } catch (error) { + SSOClick('.loginSSO'); + setLoadingCheckAccount(false); + return; + } + } + if (account) { + // Concordium + const signature = await getSignature( + endpoint, + account, + connection, + level === 3 + ? 'Give consent:{nonce} {domain} {time}' + : 'Give consent Tier 4:{nonce} {domain} {time}' + ); + setLoading('saving'); + await agreeConsents(endpoint, level, uuid, consents, account, signature, web3ID, jwt); + sessionStorage.setItem('aesirx-analytics-consent-type', 'concordium'); + } else if (connector) { + // Metamask + if (level === 3) { + const nonce = await getNonce( + endpoint, + address, + level === 3 + ? 'Give consent:{nonce} {domain} {time}' + : 'Give consent Tier 4:{nonce} {domain} {time}', + 'metamask' + ); + signMessage({ message: `${nonce}` }); + } + } else { + setLoading('connect'); + flag = false; + } + } else { + setLoading('saving'); + const consentList = await getConsents(endpoint, analyticsContext.visitor_uuid); + consents.forEach(async (consent) => { + const existConsent = consentList.find((item: any) => item?.consent === consent); + if (!existConsent) { + await agreeConsents(endpoint, 1, uuid, consent); + } else if ( + !!existConsent?.consent_uuid && + existConsent?.expiration && + new Date(existConsent.expiration) < new Date() + ) { + await agreeConsents(endpoint, 1, uuid, consent); + } + }); + } + + if (flag && (account || level < 3)) { + sessionStorage.setItem('aesirx-analytics-uuid', uuid); + sessionStorage.setItem('aesirx-analytics-allow', '1'); + + setShow(false); + setLoading('done'); + handleRevoke(true, level); + setShowBackdrop(false); + } + } catch (error) { + console.log(error); + handleNotAllow(); + + setLoading('done'); + toast.error(error?.response?.data?.error ?? error.message); + } + }; + + useEffect(() => { + const init = async () => { + if (Object.keys(consentTier4)?.length && (account || address)) { + await consentTier4Init(consentTier4); + setConsentTier4({}); + } + }; + init(); + }, [consentTier4, account, address]); + + const consentTier4Init = async (response: any) => { + let hasWeb3ID = true; + if (response?.loginType === 'concordium') { + const web3ID = await getWeb3ID(account, gRPCClient, network?.name); + if (web3ID) { + setWeb3ID(web3ID); + } else { + hasWeb3ID = false; + } + } else { + const memberData = await getMember(aesirXEndpoint, response?.access_token); + hasWeb3ID = memberData?.web3id ? true : false; + } + if (hasWeb3ID) { + if (response?.loginType === 'concordium') { + // Concordium + sessionStorage.setItem('aesirx-analytics-consent-type', 'concordium'); + const signature = await getSignature( + endpoint, + account, + connection, + 'Give consent Tier 4:{nonce} {domain} {time}' + ); + await agreeConsents( + endpoint, + level, + uuid, + consents, + account, + signature, + null, + response?.jwt + ); + setShow(false); + handleRevoke(true, level); + setLoading('done'); + } else if (response?.loginType === 'metamask') { + // Metamask + sessionStorage.setItem('aesirx-analytics-consent-type', 'metamask'); + const nonce = await getNonce( + endpoint, + address, + 'Give consent Tier 4:{nonce} {domain} {time}', + 'metamask' + ); + signMessage({ message: `${nonce}` }); + } + } else { + handleLevel(3); + toast("You haven't minted any WEB3 ID yet. Try to mint at https://dapp.shield.aesirx.io"); + setLoading('done'); + } + }; + const onGetData = async (response: any) => { + // on Login Tier 2 & 4 + try { + setLoading('saving'); + const levelRevoke = sessionStorage.getItem('aesirx-analytics-revoke'); + sessionStorage.setItem('aesirx-analytics-jwt', response?.jwt); + if (levelRevoke && levelRevoke !== '0') { + // Revoke Consent + sessionStorage.setItem( + 'aesirx-analytics-consent-type', + response?.loginType === 'concordium' ? 'concordium' : 'metamask' + ); + handleRevokeBtn(); + } else { + // Agree Consent + if (level === 4) { + if (response?.loginType === 'concordium' && isDesktop) { + setActiveConnectorType(BROWSER_WALLET); + } + setConsentTier4(response); + } else { + await agreeConsents(endpoint, level, uuid, consents, null, null, null, response?.jwt); + setShow(false); + handleRevoke(true, level); + setLoading('done'); + } + } + } catch (error) { + console.log(error); + setShow(false); + setLoading('done'); + toast.error(error?.response?.data?.error ?? error.message); + } + }; + + const handleNotAllow = () => { + sessionStorage.setItem('aesirx-analytics-uuid', uuid); + sessionStorage.setItem('aesirx-analytics-rejected', 'true'); + setShowExpandConsent(false); + setShowBackdrop(false); + }; + const handleRevokeBtn = async () => { + const levelRevoke = sessionStorage.getItem('aesirx-analytics-revoke'); + const consentType = sessionStorage.getItem('aesirx-analytics-consent-type'); + const jwt = sessionStorage.getItem('aesirx-analytics-jwt'); + try { + let flag = true; + + if (levelRevoke !== '1') { + if (parseInt(levelRevoke) > 2) { + if (!jwt && (parseInt(levelRevoke) === 2 || parseInt(levelRevoke) === 4)) { + SSOClick('.revokeLogin'); + return; + } + if (account && consentType !== 'metamask') { + setLoading('sign'); + const signature = await getSignature( + endpoint, + account, + connection, + 'Revoke consent:{nonce} {domain} {time}' + ); + setLoading('saving'); + const consentList = await getConsents(endpoint, uuid); + consentList.forEach(async (consent: any) => { + !consent?.expiration && + (await revokeConsents( + endpoint, + levelRevoke, + consent?.consent_uuid, + account, + signature, + web3ID, + jwt + )); + }); + setLoading('done'); + handleRevoke(false); + } else if (connector) { + // Metamask + setLoading('sign'); + setLoading('saving'); + const nonce = await getNonce( + endpoint, + address, + 'Revoke consent:{nonce} {domain} {time}', + 'metamask' + ); + signMessage({ message: `${nonce}` }); + } else { + setLoading('connect'); + flag = false; + } + } else { + setLoading('saving'); + const consentList = await getConsents(endpoint, uuid); + consentList.forEach(async (consent: any) => { + !consent?.expiration && + (await revokeConsents( + endpoint, + levelRevoke, + consent?.consent_uuid, + null, + null, + null, + jwt + )); + }); + setLoading('done'); + handleRevoke(false); + } + + if (flag && ((account && consentType !== 'metamask') || level < 3)) { + setShowExpandConsent(false); + setShow(true); + setShowBackdrop(false); + sessionStorage.removeItem('aesirx-analytics-allow'); + } + } else { + handleRevoke(false); + setShowExpandConsent(false); + setShow(true); + setShowBackdrop(false); + sessionStorage.removeItem('aesirx-analytics-allow'); + } + } catch (error) { + console.log(error); + setLoading('done'); + toast.error(error?.response?.data?.error ?? error.message); + } + }; + + const SSOClick = (selector: string) => { + const element: HTMLElement = document.querySelector(selector) as HTMLElement; + element.click(); + }; + + useEffect(() => { + if (activeConnectorError) { + toast.error(activeConnectorError); + } + }, [activeConnectorError]); + + useEffect(() => { + if (sessionStorage.getItem('aesirx-analytics-rejected') === 'true') { + setShowBackdrop(false); + setShowExpandConsent(false); + } + }, []); + + console.log('level', uuid, level, web3ID, account, loading); + + const ConsentLevelUprade = ({ + level, + tier, + levelname, + term_custom, + content_custom, + isUpgrade = false, + }: any) => { + return ( +
{ + setUpgradeLevel(level); + }} + > +
+
+
+
+ {tier} - {levelname} +
+
+ {!isUpgrade ? ( +
{term_custom}
+ ) : ( + <> + {upgradeShowDetail ? ( +
{term_custom}
+ ) : ( + <> + )} + + )} +
+ {!isUpgrade ? ( +
+ {content_custom} +
+ ) : ( + <>{upgradeShowDetail ?
{content_custom}
: <>} + )} + {isUpgrade ? ( + <> +
+ +
+ + ) : ( + <> + )} +
+ ); + }; + + return ( +
+ +
+
+
+ +
+
+ {!showExpandRevoke && ( + <> + +
{ + if ( + osName !== OsTypes?.IOS && + isMobile && + !connection && + sessionStorage.getItem('aesirx-analytics-revoke') && + parseInt(sessionStorage.getItem('aesirx-analytics-revoke')) > 2 + ) { + setActiveConnectorType(WALLET_CONNECT); + } + setShowExpandRevoke(true); + }} + > + Shield of Privacy + {t('txt_shield_of_privacy')} +
+ + )} + + {showExpandRevoke && ( + <> +
{ + setShowExpandRevoke(false); + }} + > + +
+
+ {t('txt_you_can_revoke')}
+ {t('txt_visit')}{' '} + + {t('txt_link')} + {' '} + {t('txt_for_more_information')} +
+
+ +
+
+
+ Shield of Privacy {t('txt_shield_of_privacy')} +
+
+ + {t('txt_manage_consent')} + + {loading === 'done' ? ( + + ) : ( + <> + )} + {(sessionStorage.getItem('aesirx-analytics-revoke') === '4' || + sessionStorage.getItem('aesirx-analytics-revoke') === '2') && ( +
+ Login Revoke} + ssoState={'noscopes'} + onGetData={onGetData} + /> +
+ )} +
+
+
+
+ + )} +
+
+
+
+
+
+ +
+ {!showExpandConsent ? ( + <> +
+ +
{ + setShowExpandConsent(true); + sessionStorage.removeItem('aesirx-analytics-rejected'); + }} + > + Shield of Privacy + {t('txt_shield_of_privacy')} +
+
+ + ) : ( +
+ {level ? ( + <> + {upgradeLayout ? ( + <> +
+ {loading === 'done' ? ( + <> +

{t('txt_upgrade_consent_text')}

+

{t('txt_your_current_level')}

+ +
+

+ {t('txt_upgrade_consent_to')} +

+
{ + setUpgradeShowDetail(!upgradeShowDetail ? true : false); + }} + > + {!upgradeShowDetail + ? t('txt_show_details') + : t('txt_hide_details')}{' '} + +
+
+
+ {level !== 1 && ( + + )} + {level !== 2 && ( + + )} + {level !== 3 && ( + + )} + {level !== 4 && ( + + )} + +
+ + +
+ + ) : ( + <> + )} +
+ + ) : ( + <> + +
+ + +
+ {loading === 'done' ? ( + <> + {' '} + +
+ + + {t('txt_yes_i_consent')} + + } + ssoState={'noscopes'} + onGetData={onGetData} + {...(level === 2 ? { noCreateAccount: true } : {})} + /> +
+ {level === 2 || (level === 4 && !account && !address) ? ( + <> + ) : ( + + )} + + ) : ( + <> + )} +
+ +
+ + )} + + ) : ( +
+ + + + + + + + + + +
+ )} +
+ )} +
+
+
+ + {!account && loading === 'connect' && ( + + )} +
+ ); +}; + +export default ConsentComponentCustom; diff --git a/src/Components/Terms.tsx b/src/Components/Terms.tsx index 7fa3502..4e33dd0 100644 --- a/src/Components/Terms.tsx +++ b/src/Components/Terms.tsx @@ -5,8 +5,10 @@ import shield_of_privacy from '../Assets/shield_of_privacy.png'; import concordium from '../Assets/concordium.svg'; import privacy from '../Assets/privacy.svg'; import arrow from '../Assets/arrow.svg'; +import check_line from '../Assets/check_line.svg'; +import check_circle from '../Assets/check_circle.svg'; import { useTranslation } from 'react-i18next'; - +import { Tab, Tabs } from 'react-bootstrap'; const terms = [ { level: 1, @@ -14,7 +16,9 @@ const terms = [ name: 'txt_tier_1_name', levelname: 'txt_tier_1_levelname', content: 'txt_tier_1_content', + content_custom: 'txt_tier_1_content_custom', term: 'txt_tier_1_term', + term_custom: 'txt_tier_1_term_custom', upgrade: 'txt_tier_1_upgrade', upgradetext: 'txt_tier_1_upgradetext', logos: [aesirx], @@ -25,7 +29,9 @@ const terms = [ name: 'txt_tier_2_name', levelname: 'txt_tier_2_levelname', content: 'txt_tier_2_content', + content_custom: 'txt_tier_2_content_custom', term: 'txt_tier_2_term', + term_custom: 'txt_tier_2_term_custom', upgrade: 'txt_tier_2_upgrade', upgradetext: 'txt_tier_2_upgradetext', logos: [shield_of_privacy], @@ -36,7 +42,9 @@ const terms = [ name: 'txt_tier_3_name', levelname: 'txt_tier_3_levelname', content: 'txt_tier_3_content', + content_custom: 'txt_tier_3_content_custom', term: 'txt_tier_3_term', + term_custom: 'txt_tier_3_term_custom', upgrade: 'txt_tier_3_upgrade', upgradetext: 'txt_tier_3_upgradetext', logos: [shield_of_privacy], @@ -47,81 +55,312 @@ const terms = [ name: 'txt_tier_4_name', levelname: 'txt_tier_4_levelname', content: 'txt_tier_4_content', + content_custom: 'txt_tier_4_content_custom', term: 'txt_tier_4_term', + term_custom: 'txt_tier_4_term_custom', upgradetext: 'txt_tier_4_upgradetext', logos: [shield_of_privacy, concordium], }, ]; -const TermsComponent = ({ children, level, handleLevel }: any) => { +const TermsComponent = ({ children, level, handleLevel, isCustom = false }: any) => { const { t } = useTranslation(); const handleReadmore = (status: boolean) => { setShowReadmore(status); }; const [showReadmore, setShowReadmore] = useState(false); + const [activeTab, setActiveTab] = useState('consent'); return ( <> {terms.map( (term, key) => term.level === level && ( -
-
{t(term.name)}
+
+
+ {isCustom ? t('txt_take_full_control') : t(term.name)} +
-
-
- {t(term.tier)} - {t(term.levelname)} -
+ {isCustom ? ( + <> +
+ +
+ Shield of Privacy + {t('txt_shield_of_privacy')} +
+
+ + ) : ( + <> +
+
+ {t(term.tier)} - {t(term.levelname)} +
+ + )}
-
- {t(term.content)}{' '} - {t(term.term)} -
- {term.upgrade && ( - handleLevel(terms[key + 1].level)} +
+ {isCustom ? ( + <> + setActiveTab(k)} + className="mb-3 w-100 flex-nowrap consent_info_tab" > - {t(term.upgrade)} - - )} -
{ - handleReadmore(!showReadmore ? true : false); - }} - > - {!showReadmore ? t('txt_show_details') : t('txt_hide_details')}{' '} - + +

{t('txt_consent_to_data')}

+
+
{t('txt_ethical_compliant')}
+
+
+ + GDPR +
+
+ + CCPA +
+
+
+
+ {t('txt_your_current_level')} +
+ +
+ +
+
+ + + +
+
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+
+
+
+ {t('txt_understanding_your_consent')} +
+
{t('txt_this_website_uses')}
+ + + + +
+ + +
+ + + +
+
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+
+
+
+ + + +
+
+
+
+
+
{t('txt_ethical_compliant')}
+
+
+ + GDPR +
+
+ + CCPA +
+
+
+ + + + ) : ( + <> + {t(term.content)}{' '} + {t(term.term)} +
+ {term.upgrade && ( + handleLevel(terms[key + 1].level)} + > + {t(term.upgrade)} + + )} +
{ + handleReadmore(!showReadmore ? true : false); + }} + > + {!showReadmore ? t('txt_show_details') : t('txt_hide_details')}{' '} + +
+
+ + )} +
+ {isCustom ? ( +
+
+
+ {children} +
-
-
- - -
- {showReadmore && ( - <> -
- {term.upgrade && t(term.upgrade)} - {t(term.upgradetext)} -
* {t('txt_no_collect')}
+ ) : ( +
+ + +
+ {showReadmore && ( + <> +
+ {term.upgrade && t(term.upgrade)} + {t(term.upgradetext)} +
* {t('txt_no_collect')}
+
+ + )} +
+
+ {t(term.name)} {t('txt_shield_of_privacy')}
- - )} -
-
- {t(term.name)} {t('txt_shield_of_privacy')} + {children}
- {children}
-
+ )} ) )} @@ -129,4 +368,21 @@ const TermsComponent = ({ children, level, handleLevel }: any) => { ); }; +const ConsentLevel = ({ level, tier, levelname, term_custom, content_custom }: any) => { + return ( +
+
+
+
+
+ {tier} - {levelname} +
+
+
{term_custom}
+
+
{content_custom}
+
+ ); +}; + export { TermsComponent }; diff --git a/src/styles/style.scss b/src/styles/style.scss index 366acd1..de68ae3 100644 --- a/src/styles/style.scss +++ b/src/styles/style.scss @@ -54,6 +54,9 @@ $dark: #222328; .fs-14 { font-size: 14px; } + .w-30 { + width: 30%; + } button { text-transform: none; } @@ -102,6 +105,58 @@ $dark: #222328; } } } + &.custom { + --#{$prefix}toast-max-width: 800px; + .consent_info_tab { + .nav-item { + width: 100%; + button { + width: 100%; + font-weight: 600; + color: #a5a4b5; + border: 0; + &.active { + color: $primary; + border-bottom: 2px solid $success; + } + } + } + } + .about_section { + height: 373px; + overflow: auto; + padding: 0 10px; + @include media-breakpoint-down(lg) { + padding: 0; + } + &::-webkit-scrollbar-track { + border-radius: 5px; + background-color: #e9e9e9; + } + &::-webkit-scrollbar { + width: 4px; + background-color: #e9e9e9; + } + &::-webkit-scrollbar-thumb { + border-radius: 5px; + background-color: $dark; + } + } + .status-tier { + &.tier-1 { + background-color: #c8192e; + } + &.tier-2 { + background-color: #e67e22; + } + &.tier-3 { + background-color: #ffc700; + } + &.tier-4 { + background-color: #1c9678; + } + } + } } .toast-container { box-sizing: border-box; @@ -222,6 +277,38 @@ $dark: #222328; background-color: var(--#{$prefix}body-bg); } + .item_compliant { + padding: 6px 14px 6px 8px; + background-color: #f0f3fb; + border-radius: 17px; + } + + .consent_level { + border: 2px solid #dedede; + border-radius: 6px; + padding: 20px; + position: relative; + &.active { + border: 2px solid $success; + background-color: #eaffff; + } + .checkbox_img { + position: absolute; + bottom: 20px; + right: 20px; + } + .consent_upgrade_content { + width: 95%; + } + @include media-breakpoint-down(lg) { + padding: 10px; + .checkbox_img { + bottom: 10px; + right: 10px; + } + } + } + @-webkit-keyframes flash { from { opacity: 0; diff --git a/src/translations/dk/common.json b/src/translations/dk/common.json index c455e1f..719ae98 100644 --- a/src/translations/dk/common.json +++ b/src/translations/dk/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Sessionsbaseret", "txt_tier_1_levelname": "Grundlæggende", "txt_tier_1_content": "Ideelt til nye besøgende på webstedet, eller hvis du ikke vil have dine data gemt ud over dit nuværende besøg.", + "txt_tier_1_content_custom": "I en 30-minutters session bruger vi kun adfærdsdata (ikke personlige data) til at forbedre din browseroplevelse.", "txt_tier_1_term": "Du giver kun samtykke til dataindsamling i en 30-minutters session.", + "txt_tier_1_term_custom": "30-minutters sessionsbaseret privatliv", "txt_tier_1_upgrade": "Opgrader til niveau 2-samtykke - medium", "txt_tier_1_upgradetext": " & tilføj en Web3 Wallet for større datakontrol og samtykke eller tilbagekald til enhver tid, du vælger.", "txt_tier_2_tier": "Tier 2", "txt_tier_2_name": "AesirX Shield of Privacy", "txt_tier_2_levelname": "Medium", "txt_tier_2_content": "Ideel til personlige onlineoplevelser og sikker samtykkestyring på tværs af sessioner og platforme.", + "txt_tier_2_content_custom": "Nyd personliggjorte onlineoplevelser på tværs af flere sessioner og platforme med sikker administration af samtykke.", "txt_tier_2_term": "Du giver samtykke til databrug på tværs af flere sessioner.", + "txt_tier_2_term_custom": "Forbedrede digitale oplevelser med Shield of Privacy", "txt_tier_2_upgrade": "Opgrader til niveau 3-samtykke - høj", "txt_tier_2_upgradetext": " & tilføj tegnebogsbaseret decentraliseret samtykke for at give eksplicit samtykke til dataindsamling og -behandling for den mest sikre, private og personlige oplevelse.", "txt_tier_3_tier": "Tier 3", "txt_tier_3_name": "Decentral tegnebog", "txt_tier_3_levelname": "Høj", "txt_tier_3_content": "Brug din Web3 Wallet til at få større kontrol over dine data.", + "txt_tier_3_content_custom": "Nyd større privatliv og mere kontrol over dine data med muligheden for at tilbagekalde samtykke til enhver tid.", "txt_tier_3_term": "Du giver samtykke til, at dine data bliver brugt, som kan tilbagekaldes når som helst, du vælger.", + "txt_tier_3_term_custom": "Web3 Wallet Integration", "txt_tier_3_upgrade": "Opgrader til niveau 4-samtykke - superavanceret (vores højeste niveau!)", "txt_tier_3_upgradetext": " & tilføj AesirX Shield of Privacy for at give eksplicit samtykke til dataindsamling og -behandling for den mest sikre, private og personlige oplevelse.", "txt_tier_4_tier": "Tier 4", "txt_tier_4_name": "Kombineret tegnebog + AesirX Shield of Privacy", "txt_tier_4_levelname": "Superavanceret", "txt_tier_4_content": "Brug din Web3 Wallet + AesirX Shield of Privacy og få fuld kontrol på flere websteder over din databrug. Giv samtykke eller tilbagekald tilladelser til enhver tid for ægte decentraliseret dataejerskab.", + "txt_tier_4_content_custom": "Kombiner din Web3 Wallet med AesirX SoP for fuld kontrol på flere websteder og ægte decentraliseret dataejerskab.", "txt_tier_4_term": "Du giver samtykke til, at dine data bliver brugt, som kan tilbagekaldes når som helst, du vælger.", + "txt_tier_4_term_custom": "Fuld datakontrol med Shield of Privacy", "txt_tier_4_upgradetext": "Den mest personlige og privatlivsbevarende oplevelse!", "txt_show_details": "Vis detaljer", "txt_hide_details": "Skjul detaljer", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Forbind venligst til din tegnebog", "txt_connecting": "Opretter forbindelse", "txt_here": "HER", - "txt_visit": "Besøg" -} \ No newline at end of file + "txt_visit": "Besøg", + "txt_take_full_control": "Tag fuld kontrol over dine personlige data", + "txt_consent": "Samtykke", + "txt_about": "Om", + "txt_detail": "Detaljer", + "txt_consent_to_data": "Samtykke til databrug via Shield of Privacy (SoP) for fuld kontrol over dine personlige data. Oplev privatlivsrespekterende, sikker og personlig browsing uden cookies.", + "txt_ethical_compliant": "Etisk og kompatibel:", + "txt_detail_1": "Revolutionær datakontrol: Giv dig selv fuld kontrol over dine data.", + "txt_detail_2": "Dine data forbliver dine: Vi garanterer, at dine data aldrig sælges eller deles.", + "txt_detail_3": "Vi bruger aldrig cookies: Dit indhold er personliggjort uden brug af cookies.", + "txt_understanding_your_consent": "Forstå dine samtykkeniveauer", + "txt_this_website_uses": "Denne hjemmeside bruger en revolutionerende 4-trins decentraliseret samtykkemodel. Hvert niveau repræsenterer et forskelligt niveau af tilladelse eller adgang, som brugere kan give til deres data.", + "txt_about_1": "Overholdelse sikret: Brug af SoP sikrer overholdelse af GDPR, CCPA og andre love om beskyttelse af personlige oplysninger.", + "txt_about_2": "Fleksibelt samtykke: Du kan til enhver tid ændre eller trække dit samtykke tilbage via vores dApp.", + "txt_about_3": "Få flere oplysninger: Opdag vores tilgang til databehandling i vores Privatlivspolitik.", + "txt_about_4": "For virksomheder: Forbedre tillid, sikre brugeridentiteter og forhindre brud. Mere info på https://shield.aesirx.io.", + "txt_your_current_level": "Dit nuværende samtykkeniveau er:", + "txt_upgrade_consent_to": "Opgrader samtykke til:", + "txt_upgrade_consent": "Opgraderingssamtykke", + "txt_upgrade_consent_text": "Opgrader dit samtykkeniveau og lås op for de fulde fordele ved Shield of Privacy for tilpassede, sikre, ID-godkendte digitale oplevelser.", + "txt_cancel": "Annuller" +} diff --git a/src/translations/en/common.json b/src/translations/en/common.json index ba58662..2b599d0 100644 --- a/src/translations/en/common.json +++ b/src/translations/en/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Session-Based", "txt_tier_1_levelname": "Basic", "txt_tier_1_content": "Ideal for new site visitors or if you don't want your data stored beyond your current visit.", + "txt_tier_1_content_custom": "For a 30-minute session, we only use behavioral data (not personal data) to enhance your browsing experience.", "txt_tier_1_term": "You consent to data collection for a 30-minute session only.", + "txt_tier_1_term_custom": "30-Minute Session Based Privacy", "txt_tier_1_upgrade": "Upgrade to Tier 2 Consent - Medium", "txt_tier_1_upgradetext": " & add on a Web3 Wallet for greater data control & consent or revoke at any time you choose.", "txt_tier_2_tier": "Tier 2", "txt_tier_2_name": "AesirX Shield of Privacy", "txt_tier_2_levelname": "Medium", "txt_tier_2_content": "Ideal for personalized online experiences & secure consent management across sessions & platforms.", + "txt_tier_2_content_custom": "Enjoy personalized online experiences across multiple sessions & platforms, with secure consent management.", "txt_tier_2_term": "You consent to data use across multiple sessions.", + "txt_tier_2_term_custom": "Enhanced Digital Experiences with Shield of Privacy", "txt_tier_2_upgrade": "Upgrade to Tier 3 Consent - High", "txt_tier_2_upgradetext": " & add on Wallet-Based Decentralized Consent to give explicit consent for data collection & processing for the most secure, private & personalized experience.", "txt_tier_3_tier": "Tier 3", "txt_tier_3_name": "Decentralized Wallet", "txt_tier_3_levelname": "High", "txt_tier_3_content": "Utilize your Web3 Wallet for greater control over your data.", + "txt_tier_3_content_custom": "Enjoy greater privacy and more control over your data with the option to revoke consent at any time.", "txt_tier_3_term": "You consent for your data to be used, which can be revoked at any time you choose.", + "txt_tier_3_term_custom": "Web3 Wallet Integration", "txt_tier_3_upgrade": "Upgrade to Tier 4 Consent - Super Advanced (our highest tier!)", "txt_tier_3_upgradetext": " & add on AesirX Shield of Privacy to give explicit consent for data collection & processing for the most secure, private & personalized experience.", "txt_tier_4_tier": "Tier 4", "txt_tier_4_name": "Combined Wallet + AesirX Shield of Privacy", "txt_tier_4_levelname": "Super Advanced", "txt_tier_4_content": "Use your Web3 Wallet + AesirX Shield of Privacy & get full multi-site control of your data use. Consent or revoke permissions at any time for true decentralized data ownership.", + "txt_tier_4_content_custom": "Combine your Web3 Wallet with AesirX SoP for full multi-site control & true decentralized data ownership.", "txt_tier_4_term": "You consent for your data to be used, which can be revoked at any time you choose.", + "txt_tier_4_term_custom": "Full Data Control with Shield of Privacy", "txt_tier_4_upgradetext": "The most personalized and privacy-preserving experience!", "txt_show_details": "Show details", "txt_hide_details": "Hide details", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Please connect to your wallet", "txt_connecting": "Connecting", "txt_here": "HERE", - "txt_visit": "Visit" + "txt_visit": "Visit", + "txt_take_full_control": "Take full control over your personal data", + "txt_consent": "Consent", + "txt_about": "About", + "txt_detail": "Details", + "txt_consent_to_data": "Consent to data use via Shield of Privacy (SoP) for full control over your personal data. Experience privacy-respecting, secure, & personalized browsing without cookies.", + "txt_ethical_compliant": "Ethical & Compliant :", + "txt_detail_1": "Revolutionary Data Control: Empower yourself with full control over your data.", + "txt_detail_2": "Your Data Stays Yours: We guarantee that your data is never sold or shared.", + "txt_detail_3": "We Never Use Cookies: Your content is personalized without the use of cookies.", + "txt_understanding_your_consent": "Understanding Your Consent Levels", + "txt_this_website_uses": "This website uses a revolutionary 4-Tier Decentralized Consent Model. Each tier represents a different level of permission or access that users can grant to their data.", + "txt_about_1": "Compliance Assured: Using SoP ensures compliance with GDPR, CCPA, & other privacy laws.", + "txt_about_2": "Flexible Consent: You can change or withdraw your consent anytime via our dApp.", + "txt_about_3": "Learn More: Discover our approach to data processing in our Privacy Policy.", + "txt_about_4": "For Businesses: Enhance trust, secure user identities, & prevent breaches. More info at https://shield.aesirx.io.", + "txt_your_current_level": "Your Current Level of Consent is:", + "txt_upgrade_consent_to": "Upgrade Consent to:", + "txt_upgrade_consent": "Upgrade Consent", + "txt_upgrade_consent_text": "Upgrade your Level of Consent & unlock the full benefits of Shield of Privacy for customized, secure, ID-authenticated digital experiences.", + "txt_cancel": "Cancel" } diff --git a/src/translations/es/common.json b/src/translations/es/common.json index 8316948..ad28e7b 100644 --- a/src/translations/es/common.json +++ b/src/translations/es/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Basado en sesión", "txt_tier_1_levelname": "Básico", "txt_tier_1_content": "Ideal para nuevos visitantes del sitio o si no desea que sus datos se almacenen más allá de su visita actual", + "txt_tier_1_content_custom": "Durante una sesión de 30 minutos, solo utilizamos datos de comportamiento (no datos personales) para mejorar tu experiencia de navegación.", "txt_tier_1_term": "Consientes la recopilación de datos solo para una sesión de 30 minutos.", + "txt_tier_1_term_custom": "Privacidad basada en sesiones de 30 minutos", "txt_tier_1_upgrade": "Actualizar a Consentimiento de Nivel 2 - Medio", "txt_tier_1_upgradetext": " Y agregue una billetera Web3 para un mayor control de datos y consentimiento o revoque en cualquier momento que elija.", "txt_tier_2_tier": "Nivel 2", "txt_tier_2_name": "Escudo de Privacidad de AesirX", "txt_tier_2_levelname": "Medio", "txt_tier_2_content": "Ideal para experiencias en línea personalizadas y administración segura de consentimiento en sesiones y plataformas", + "txt_tier_2_content_custom": "Disfruta de experiencias en línea personalizadas en múltiples sesiones y plataformas, con gestión segura del consentimiento.", "txt_tier_2_term": "Consientes el uso de datos en múltiples sesiones.", + "txt_tier_2_term_custom": "Experiencias digitales mejoradas con Escudo de Privacidad", "txt_tier_2_upgrade": "Actualizar a Consentimiento de Nivel 3 - Alto", "txt_tier_2_upgradetext": " & agregue el Consentimiento descentralizado basado en billetera para dar consentimiento explícito para la recopilación y el procesamiento de datos para la experiencia más segura, privada y personalizada.", "txt_tier_3_tier": "Nivel 3", "txt_tier_3_name": "Monedero Descentralizado", "txt_tier_3_levelname": "Alto", "txt_tier_3_content": "Utilice su Monedero Web3 para un mayor control sobre sus datos.", + "txt_tier_3_content_custom": "Disfruta de una mayor privacidad y más control sobre tus datos con la opción de revocar el consentimiento en cualquier momento.", "txt_tier_3_term": "Usted da su consentimiento para que se utilicen sus datos, que puede revocar en cualquier momento que elija.", + "txt_tier_3_term_custom": "Integración de billetera Web3", "txt_tier_3_upgrade": "Actualizar a Consentimiento de Nivel 4 - Súper Avanzado (¡nuestro nivel más alto!)", "txt_tier_3_upgradetext": " & agregue AesirX Shield of Privacy para dar consentimiento explícito para la recopilación y procesamiento de datos para la experiencia más segura, privada y personalizada.", "txt_tier_4_tier": "Nivel 4", "txt_tier_4_name": "Monedero Combinado + Escudo de Privacidad AesirX", "txt_tier_4_levelname": "Súper Avanzado", "txt_tier_4_content": "Use su Monedero Web3 + AesirX Shield of Privacy y obtenga un control total del uso de sus datos en múltiples sitios. Consienta o revoque los permisos en cualquier momento para una verdadera propiedad descentralizada de los datos.", + "txt_tier_4_content_custom": "Combine su Web3 Wallet con AesirX SoP para un control total de múltiples sitios y una verdadera propiedad descentralizada de los datos.", "txt_tier_4_term": "Usted da su consentimiento para que se utilicen sus datos, que puede revocar en cualquier momento que elija.", + "txt_tier_4_term_custom": "Control total de datos con escudo de privacidad", "txt_tier_4_upgradetext": "¡La experiencia más personalizada y que preserva la privacidad!", "txt_show_details": "Mostrar detalles", "txt_hide_details": "Ocultar detalles", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Conéctese a su billetera", "txt_connecting": "Conectando", "txt_here": "AQUÍ", - "txt_visit": "Visita" -} \ No newline at end of file + "txt_visit": "Visita", + "txt_take_full_control": "Toma control total sobre tus datos personales", + "txt_consent": "Consentimiento", + "txt_about": "Acerca de", + "txt_detail": "Detalles", + "txt_consent_to_data": "Consentimiento para el uso de datos a través del Escudo de Privacidad (SoP) para un control total sobre sus datos personales. Experimente una navegación personalizada, segura y respetuosa con la privacidad sin cookies.", + "txt_ethical_compliant": "Ético y compatible :", + "txt_detail_1": "Control de datos revolucionario: Otorga control total sobre tus datos.", + "txt_detail_2": "Tus datos siguen siendo tuyos: Garantizamos que tus datos nunca se venden ni se comparten.", + "txt_detail_3": "Nunca utilizamos cookies: Su contenido es personalizado sin el uso de cookies.", + "txt_understanding_your_consent": "Comprensión de sus niveles de consentimiento", + "txt_this_website_uses": "Este sitio web utiliza un revolucionario modelo de consentimiento descentralizado de 4 niveles. Cada nivel representa un nivel diferente de permiso o acceso que los usuarios pueden otorgar a sus datos.", + "txt_about_1": "Cumplimiento garantizado: el uso de SoP garantiza el cumplimiento de GDPR, CCPA y otras leyes de privacidad.", + "txt_about_2": "Consentimiento flexible: puede cambiar o retirar su consentimiento en cualquier momento a través de nuestro dApp.", + "txt_about_3": "Más información: Descubra nuestro enfoque del procesamiento de datos en nuestro Política de Privacidad.", + "txt_about_4": "Para empresas: mejore la confianza, proteja las identidades de los usuarios y evite infracciones. Más información en https://shield.aesirx.io.", + "txt_your_current_level": "Su nivel actual de consentimiento es:", + "txt_upgrade_consent_to": "Actualizar consentimiento a:", + "txt_upgrade_consent": "Consentimiento de actualización", + "txt_upgrade_consent_text": "Mejora tu nivel de consentimiento y desbloquea todos los beneficios del Escudo de Privacidad para experiencias digitales personalizadas, seguras y autenticadas por identificación.", + "txt_cancel": "Cancelar" +} diff --git a/src/translations/fr/common.json b/src/translations/fr/common.json index 9038269..605aba0 100644 --- a/src/translations/fr/common.json +++ b/src/translations/fr/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Basé sur la session", "txt_tier_1_levelname": "De base", "txt_tier_1_content": "Idéal pour les nouveaux visiteurs du site ou si vous ne souhaitez pas que vos données soient stockées au-delà de votre visite actuelle.", + "txt_tier_1_content_custom": "Pour une session de 30 minutes, nous utilisons uniquement des données comportementales (et non des données personnelles) pour améliorer votre expérience de navigation.", "txt_tier_1_term": "Vous consentez à la collecte de données pour une session de 30 minutes uniquement.", + "txt_tier_1_term_custom": "Confidentialité basée sur une session de 30 minutes", "txt_tier_1_upgrade": "Mettre à niveau vers le consentement de niveau 2 - Moyen", "txt_tier_1_upgradetext": " & ajouter un portefeuille Web3 pour un meilleur contrôle des données et un consentement ou révoquer à tout moment.", "txt_tier_2_tier": "Niveau 2", "txt_tier_2_name": "Bouclier de confidentialité AesirX", "txt_tier_2_levelname": "Moyen", "txt_tier_2_content": "Idéal pour des expériences en ligne personnalisées et une gestion sécurisée du consentement entre les sessions et les plateformes.", + "txt_tier_2_content_custom": "Profitez d'expériences en ligne personnalisées sur plusieurs sessions et plateformes, avec une gestion sécurisée du consentement.", "txt_tier_2_term": "Vous consentez à l'utilisation des données sur plusieurs sessions.", + "txt_tier_2_term_custom": "Expériences numériques améliorées avec Bouclier de confidentialité", "txt_tier_2_upgrade": "Mettre à niveau vers le consentement de niveau 3 - Élevé", "txt_tier_2_upgradetext": " & ajoutez le consentement décentralisé basé sur le portefeuille pour donner un consentement explicite à la collecte et au traitement des données pour l'expérience la plus sécurisée, privée et personnalisée.", "txt_tier_3_tier": "Niveau 3", "txt_tier_3_name": "Portefeuille décentralisé", "txt_tier_3_levelname": "Élevé", "txt_tier_3_content": "Utilisez votre portefeuille Web3 pour un meilleur contrôle sur vos données.", + "txt_tier_3_content_custom": "Profitez d'une plus grande confidentialité et d'un meilleur contrôle sur vos données avec la possibilité de révoquer votre consentement à tout moment.", "txt_tier_3_term": "Vous consentez à ce que vos données soient utilisées, qui peuvent être révoquées à tout moment.", + "txt_tier_3_term_custom": "Intégration du portefeuille Web3", "txt_tier_3_upgrade": "Mettre à niveau vers le consentement de niveau 4 - Super avancé (notre niveau le plus élevé !)", "txt_tier_3_upgradetext": " & ajouter AesirX Shield of Privacy pour donner un consentement explicite à la collecte et au traitement des données pour l'expérience la plus sécurisée, privée et personnalisée.", "txt_tier_4_tier": "Niveau 4", "txt_tier_4_name": "Portefeuille combiné + bouclier de confidentialité AesirX", "txt_tier_4_levelname": "Super avancé", "txt_tier_4_content": "Utilisez votre portefeuille Web3 + AesirX Shield of Privacy et obtenez un contrôle multisite total de l'utilisation de vos données. Consentez ou révoquez les autorisations à tout moment pour une véritable propriété décentralisée des données.", + "txt_tier_4_content_custom": "Combinez votre portefeuille Web3 avec AesirX SoP pour un contrôle multi-sites complet et une véritable propriété décentralisée des données.", "txt_tier_4_term": "Vous consentez à ce que vos données soient utilisées, qui peuvent être révoquées à tout moment.", + "txt_tier_4_term_custom": "Contrôle total des données avec bouclier de confidentialité", "txt_tier_4_upgradetext": "L'expérience la plus personnalisée et la plus respectueuse de la vie privée !", "txt_show_details": "Afficher les détails", "txt_hide_details": "Masquer les détails", @@ -44,5 +52,25 @@ "txt_Please_connect_your_wallet": "Veuillez vous connecter à votre portefeuille", "txt_connecting": "Connexion", "txt_here": "ICI", - "txt_visit": "Visite" -} \ No newline at end of file + "txt_visit": "Visite", + "txt_take_full_control": "Prenez le contrôle total de vos données personnelles", + "txt_consent": "Consentement", + "txt_about": "À propos", + "txt_detail": "Détails", + "txt_consent_to_data": "Consentement à l'utilisation des données via Shield of Privacy (SoP) pour un contrôle total sur vos données personnelles. Bénéficiez d'une navigation respectueuse de la vie privée, sécurisée et personnalisée sans cookies.", + "txt_ethical_compliant": "Éthique et conforme :", + "txt_detail_1": "Contrôle révolutionnaire des données : Donnez-vous le contrôle total de vos données.", + "txt_detail_2": "Vos données restent les vôtres : Nous garantissons que vos données ne sont jamais vendues ou partagées.", + "txt_detail_3": "Nous n'utilisons jamais de cookies : Votre contenu est personnalisé sans utilisation de cookies.", + "txt_understanding_your_consent": "Comprendre vos niveaux de consentement", + "txt_this_website_uses": "Ce site Web utilise un modèle de consentement décentralisé révolutionnaire à 4 niveaux. Chaque niveau représente un niveau différent d'autorisation ou d'accès que les utilisateurs peuvent accorder à leurs données.", + "txt_about_1": "Conformité assurée : l'utilisation de SoP garantit la conformité au RGPD, au CCPA et aux autres lois sur la confidentialité.", + "txt_about_2": "Consentement flexible : vous pouvez modifier ou retirer votre consentement à tout moment via notre dApp.", + "txt_about_3": "En savoir plus : découvrez notre approche du traitement des données dans notre Politique de confidentialité.", + "txt_about_4": "Pour les entreprises : améliorez la confiance, sécurisez les identités des utilisateurs et prévenez les violations. Plus d'informations sur https://shield.aesirx.io.", + "txt_your_current_level": "Votre niveau de consentement actuel est :", + "txt_upgrade_consent_to": "Mettre à niveau le consentement vers :", + "txt_upgrade_consent": "Consentement de mise à niveau", + "txt_upgrade_consent_text": "Améliorez votre niveau de consentement et bénéficiez de tous les avantages du Bouclier de confidentialité pour des expériences numériques personnalisées, sécurisées et authentifiées par identification.", + "txt_cancel": "Annuler" +} diff --git a/src/translations/hr/common.json b/src/translations/hr/common.json index d030814..fbb4521 100644 --- a/src/translations/hr/common.json +++ b/src/translations/hr/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Na temelju sesije", "txt_tier_1_levelname": "Osnovno", "txt_tier_1_content": "Idealno za nove posjetitelje stranice ili ako ne želite da se vaši podaci pohranjuju nakon trenutne posjete.", + "txt_tier_1_content_custom": "Za sesiju od 30 minuta koristimo samo podatke o ponašanju (ne osobne podatke) kako bismo poboljšali vaše iskustvo pregledavanja.", "txt_tier_1_term": "Pristajete na prikupljanje podataka samo za sesiju od 30 minuta.", + "txt_tier_1_term_custom": "Privatnost temeljena na 30-minutnoj sesiji", "txt_tier_1_upgrade": "Nadogradnja na Tier 2 Consent - Medium", "txt_tier_1_upgradetext": "i dodajte Web3 Wallet za veću kontrolu podataka i pristanak ili opoziv u bilo kojem trenutku po vašem izboru.", "txt_tier_2_tier": "Razina 2", "txt_tier_2_name": "AesirX Shield of Privacy", "txt_tier_2_levelname": "Srednji", "txt_tier_2_content": "Idealan za personalizirana online iskustva i sigurno upravljanje pristankom na svim sesijama i platformama.", + "txt_tier_2_content_custom": "Uživajte u personaliziranim online iskustvima na više sesija i platformi, uz sigurno upravljanje pristankom.", "txt_tier_2_term": "Pristajete na korištenje podataka u više sesija.", + "txt_tier_2_term_custom": "Poboljšana digitalna iskustva sa Shield of Privacy", "txt_tier_2_upgrade": "Nadogradnja na Tier 3 Consent - High", "txt_tier_2_upgradetext": "i dodajte decentralizirani pristanak temeljen na novčaniku za davanje izričitog pristanka za prikupljanje i obradu podataka za najsigurnije, privatno i personalizirano iskustvo.", "txt_tier_3_tier": "Razina 3", "txt_tier_3_name": "Decentralizirani novčanik", "txt_tier_3_levelname": "Visoka", "txt_tier_3_content": "Upotrijebite svoj Web3 novčanik za veću kontrolu nad svojim podacima.", + "txt_tier_3_content_custom": "Uživajte u većoj privatnosti i većoj kontroli nad svojim podacima uz opciju opoziva privole u bilo kojem trenutku.", "txt_tier_3_term": "Pristajete na korištenje vaših podataka, što se može opozvati u bilo kojem trenutku po vašem izboru.", + "txt_tier_3_term_custom": "Integracija Web3 novčanika", "txt_tier_3_upgrade": "Nadogradite na Tier 4 Consent - Super Advanced (naša najviša razina!)", "txt_tier_3_upgradetext": "i dodajte AesirX Shield of Privacy kako biste dali izričit pristanak za prikupljanje i obradu podataka za najsigurnije, privatno i personalizirano iskustvo.", "txt_tier_4_tier": "Razina 4", "txt_tier_4_name": "Kombinirani novčanik + AesirX Shield of Privacy", "txt_tier_4_levelname": "Super napredno", "txt_tier_4_content": "Upotrijebite svoj Web3 Wallet + AesirX Shield of Privacy i ostvarite potpunu višestruku kontrolu nad upotrebom podataka. Dajte pristanak ili opozovite dopuštenja u bilo kojem trenutku za pravo decentralizirano vlasništvo nad podacima.", + "txt_tier_4_content_custom": "Kombinirajte svoj Web3 novčanik s AesirX SoP za potpunu kontrolu više stranica i pravo decentralizirano vlasništvo nad podacima.", "txt_tier_4_term": "Pristajete na korištenje vaših podataka, što se može opozvati u bilo kojem trenutku po vašem izboru.", + "txt_tier_4_term_custom": "Potpuna kontrola podataka uz zaštitu privatnosti", "txt_tier_4_upgradetext": "Najpersonaliziranije iskustvo koje čuva privatnost!", "txt_show_details": "Prikaži detalje", "txt_hide_details": "Sakrij detalje", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Povežite se sa svojim novčanikom", "txt_connecting": "Povezivanje", "txt_here": "OVDJE", - "txt_visit": "Posjetiti" -} \ No newline at end of file + "txt_visit": "Posjetiti", + "txt_take_full_control": "Preuzmite potpunu kontrolu nad svojim osobnim podacima", + "txt_consent": "Pristanak", + "txt_about": "O", + "txt_detail": "Detalji", + "txt_consent_to_data": "Pristanak na korištenje podataka putem Shield of Privacy (SoP) za potpunu kontrolu nad vašim osobnim podacima. Doživite sigurno i personalizirano pregledavanje bez kolačića koje poštuje privatnost.", + "txt_ethical_compliant": "Etičko i usklađeno:", + "txt_detail_1": "Revolucionarna kontrola podataka: Osnažite se s potpunom kontrolom nad svojim podacima.", + "txt_detail_2": "Vaši podaci ostaju vaši: Jamčimo da se vaši podaci nikada ne prodaju ili dijele.", + "txt_detail_3": "Nikada ne koristimo kolačiće: Vaš je sadržaj personaliziran bez upotrebe kolačića.", + "txt_understanding_your_consent": "Razumijevanje vaših razina pristanka", + "txt_this_website_uses": "Ova web stranica koristi revolucionarni 4-slojni decentralizirani model pristanka. Svaka razina predstavlja različitu razinu dopuštenja ili pristupa koje korisnici mogu dati svojim podacima.", + "txt_about_1": "Zajamčena usklađenost: korištenje SoP-a osigurava usklađenost s GDPR-om, CCPA-om i drugim zakonima o privatnosti.", + "txt_about_2": "Fleksibilni pristanak: možete promijeniti ili povući svoj pristanak bilo kada putem našeg dApp.", + "txt_about_3": "Saznajte više: otkrijte naš pristup obradi podataka u našem Pravila o privatnosti.", + "txt_about_4": "Za tvrtke: Povećajte povjerenje, osigurajte korisničke identitete i spriječite provale. Više informacija na https://shield.aesirx.io.", + "txt_your_current_level": "Vaša trenutna razina pristanka je:", + "txt_upgrade_consent_to": "Nadogradi pristanak na:", + "txt_upgrade_consent": "Pristanak za nadogradnju", + "txt_upgrade_consent_text": "Nadogradite svoju razinu pristanka i otključajte sve prednosti Shield of Privacy za prilagođena, sigurna digitalna iskustva s autentifikacijom ID-a.", + "txt_cancel": "Odustani" +} diff --git a/src/translations/th/common.json b/src/translations/th/common.json index cc1800c..10b3977 100644 --- a/src/translations/th/common.json +++ b/src/translations/th/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "ตามเซสชัน", "txt_tier_1_levelname": "พื้นฐาน", "txt_tier_1_content": "เหมาะสำหรับผู้เยี่ยมชมเว็บไซต์รายใหม่หรือหากคุณไม่ต้องการให้ข้อมูลของคุณเก็บไว้นอกเหนือการเยี่ยมชมปัจจุบันของคุณ", + "txt_tier_1_content_custom": "สำหรับเซสชัน 30 นาที เราจะใช้เฉพาะข้อมูลพฤติกรรม (ไม่ใช่ข้อมูลส่วนบุคคล) เพื่อปรับปรุงประสบการณ์การท่องเว็บของคุณ", "txt_tier_1_term": "คุณยินยอมให้มีการรวบรวมข้อมูลสำหรับเซสชัน 30 นาทีเท่านั้น", + "txt_tier_1_term_custom": "ความเป็นส่วนตัวตามเซสชัน 30 นาที", "txt_tier_1_upgrade": "อัปเกรดเป็นการยินยอมระดับ 2 - ปานกลาง", "txt_tier_1_upgradetext": " & เพิ่มใน Web3 Wallet เพื่อการควบคุมข้อมูลที่ดีขึ้น & ยินยอมหรือเพิกถอนได้ทุกเมื่อที่คุณเลือก", "txt_tier_2_tier": "ระดับ 2", "txt_tier_2_name": "โล่ความเป็นส่วนตัวของ AesirX", "txt_tier_2_levelname": "ปานกลาง", "txt_tier_2_content": "เหมาะสำหรับประสบการณ์ออนไลน์ส่วนบุคคลและการจัดการความยินยอมที่ปลอดภัยในเซสชันและแพลตฟอร์มต่างๆ", + "txt_tier_2_content_custom": "เพลิดเพลินกับประสบการณ์ออนไลน์ที่เป็นส่วนตัวผ่านเซสชันและแพลตฟอร์มที่หลากหลาย พร้อมการจัดการความยินยอมที่ปลอดภัย", "txt_tier_2_term": "คุณยินยอมให้ใช้ข้อมูลในหลายเซสชัน", + "txt_tier_2_term_custom": "ประสบการณ์ดิจิทัลที่ได้รับการปรับปรุงพร้อมการปกป้องความเป็นส่วนตัว", "txt_tier_2_upgrade": "อัปเกรดเป็นระดับ 3 ยินยอม - สูง", "txt_tier_2_upgradetext": " & เพิ่มความยินยอมแบบกระจายศูนย์บน Wallet เพื่อให้ความยินยอมอย่างชัดแจ้งสำหรับการเก็บรวบรวมและประมวลผลข้อมูลเพื่อประสบการณ์ที่ปลอดภัย เป็นส่วนตัว และเป็นส่วนตัวมากที่สุด", "txt_tier_3_tier": "ระดับ 3", "txt_tier_3_name": "กระเป๋าสตางค์กระจายอำนาจ", "txt_tier_3_levelname": "สูง", "txt_tier_3_content": "ใช้ Web3 Wallet เพื่อควบคุมข้อมูลของคุณได้ดียิ่งขึ้น", + "txt_tier_3_content_custom": "เพลิดเพลินไปกับความเป็นส่วนตัวที่มากขึ้นและการควบคุมข้อมูลของคุณมากขึ้นด้วยตัวเลือกในการเพิกถอนความยินยอมได้ตลอดเวลา", "txt_tier_3_term": "คุณยินยอมให้ใช้ข้อมูลของคุณ ซึ่งสามารถเพิกถอนได้ตลอดเวลาที่คุณเลือก", + "txt_tier_3_term_custom": "บูรณาการ Web3 Wallet", "txt_tier_3_upgrade": "อัปเกรดเป็นความยินยอมระดับ 4 - ขั้นสูงขั้นสูง (ระดับสูงสุดของเรา!)", "txt_tier_3_upgradetext": " & เพิ่ม AesirX Shield of Privacy เพื่อให้ความยินยอมอย่างชัดแจ้งสำหรับการเก็บรวบรวมและประมวลผลข้อมูลเพื่อประสบการณ์ที่ปลอดภัย เป็นส่วนตัว และเป็นส่วนตัวมากที่สุด", "txt_tier_4_tier": "ระดับ 4", "txt_tier_4_name": "รวม Wallet + AesirX Shield of Privacy", "txt_tier_4_levelname": "ขั้นสูง", "txt_tier_4_content": "ใช้ Web3 Wallet ของคุณ + AesirX Shield of Privacy และรับการควบคุมการใช้ข้อมูลของคุณแบบหลายไซต์ ยินยอมหรือเพิกถอนการอนุญาตเมื่อใดก็ได้สำหรับการเป็นเจ้าของข้อมูลแบบกระจายศูนย์อย่างแท้จริง", + "txt_tier_4_content_custom": "รวม Web3 Wallet ของคุณเข้ากับ AesirX SoP เพื่อการควบคุมหลายไซต์เต็มรูปแบบ & ความเป็นเจ้าของข้อมูลแบบกระจายอำนาจอย่างแท้จริง", "txt_tier_4_term": "คุณยินยอมให้ใช้ข้อมูลของคุณ ซึ่งสามารถเพิกถอนได้ตลอดเวลาที่คุณเลือก", + "txt_tier_4_term_custom": "การควบคุมข้อมูลเต็มรูปแบบพร้อมโล่ความเป็นส่วนตัว", "txt_tier_4_upgradetext": "ประสบการณ์ที่เป็นส่วนตัวและรักษาความเป็นส่วนตัวมากที่สุด!", "txt_show_details": "แสดงรายละเอียด", "txt_hide_details": "ซ่อนรายละเอียด", @@ -44,5 +52,25 @@ "txt_Please_connect_your_wallet": "โปรดเชื่อมต่อกับกระเป๋าเงินของคุณ", "txt_connecting": "กำลังเชื่อมต่อ", "txt_here": "ที่นี่", - "txt_visit": "เยี่ยม" -} \ No newline at end of file + "txt_visit": "เยี่ยม", + "txt_take_full_control": "ควบคุมข้อมูลส่วนบุคคลของคุณอย่างเต็มที่", + "txt_consent": "ยินยอม", + "txt_about": "เกี่ยวกับ", + "txt_detail": "รายละเอียด", + "txt_consent_to_data": "ยินยอมให้ใช้ข้อมูลผ่าน Shield of Privacy (SoP) เพื่อการควบคุมข้อมูลส่วนบุคคลของคุณอย่างเต็มที่ สัมผัสประสบการณ์การท่องเว็บที่เคารพความเป็นส่วนตัว ปลอดภัย และเป็นส่วนตัวโดยไม่ต้องใช้คุกกี้", + "txt_ethical_Compliant": "มีจริยธรรมและเป็นไปตามข้อกำหนด :", + "txt_detail_1": "การควบคุมข้อมูลแบบปฏิวัติ: เพิ่มศักยภาพให้ตัวเองด้วยการควบคุมข้อมูลของคุณอย่างเต็มที่", + "txt_detail_2": "ข้อมูลของคุณยังคงเป็นของคุณ: เรารับประกันว่าข้อมูลของคุณจะไม่ถูกขายหรือแบ่งปัน", + "txt_detail_3": "เราไม่เคยใช้คุกกี้: เนื้อหาของคุณได้รับการปรับเปลี่ยนในแบบของคุณโดยไม่ต้องใช้คุกกี้", + "txt_understand_your_consent": "ทำความเข้าใจระดับความยินยอมของคุณ", + "txt_this_website_uses": "เว็บไซต์นี้ใช้รูปแบบการยินยอมแบบกระจายอำนาจ 4 ระดับที่ปฏิวัติวงการ แต่ละระดับแสดงถึงระดับการอนุญาตหรือการเข้าถึงที่แตกต่างกันซึ่งผู้ใช้สามารถมอบให้กับข้อมูลของตนได้", + "txt_about_1": "มั่นใจในการปฏิบัติตามข้อกำหนด: การใช้ SoP ช่วยให้มั่นใจได้ถึงการปฏิบัติตาม GDPR, CCPA และกฎหมายความเป็นส่วนตัวอื่นๆ", + "txt_about_2": "การยินยอมแบบยืดหยุ่น: คุณสามารถเปลี่ยนแปลงหรือเพิกถอนความยินยอมของคุณได้ตลอดเวลาผ่านทาง dApp", + "txt_about_3": "เรียนรู้เพิ่มเติม: ค้นพบแนวทางของเราในการประมวลผลข้อมูลใน นโยบายความเป็นส่วนตัว", + "txt_about_4": "สำหรับธุรกิจ: เพิ่มความไว้วางใจ รักษาความปลอดภัยตัวตนของผู้ใช้ และป้องกันการละเมิด ข้อมูลเพิ่มเติมที่ https://shield.aesirx.io", + "txt_your_current_level": "ระดับความยินยอมปัจจุบันของคุณคือ:", + "txt_upgrade_consent_to": "อัปเกรดความยินยอมเป็น:", + "txt_upgrade_consent": "ความยินยอมในการอัพเกรด", + "txt_upgrade_consent_text": "อัปเกรดระดับความยินยอมของคุณและปลดล็อกสิทธิประโยชน์ทั้งหมดของ Shield of Privacy เพื่อประสบการณ์ดิจิทัลที่ได้รับการปรับแต่ง ปลอดภัย และรับรองความถูกต้องด้วย ID", + "txt_cancel": "ยกเลิก" +} diff --git a/src/translations/ua/common.json b/src/translations/ua/common.json index 7f8aaf9..c05f1ce 100644 --- a/src/translations/ua/common.json +++ b/src/translations/ua/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "На основі сеансу", "txt_tier_1_levelname": "Основний", "txt_tier_1_content": "Ідеально підходить для нових відвідувачів сайту або якщо ви не хочете, щоб ваші дані зберігалися після поточного відвідування.", + "txt_tier_1_content_custom": "Протягом 30-хвилинного сеансу ми використовуємо лише поведінкові дані (а не особисті дані), щоб покращити ваші враження від перегляду.", "txt_tier_1_term": "Ви даєте згоду на збір даних лише протягом 30-хвилинного сеансу.", + "txt_tier_1_term_custom": "Конфіденційність на основі 30-хвилинної сесії", "txt_tier_1_upgrade": "Оновлення до згоди рівня 2 - середній", "txt_tier_1_upgradetext": "І додайте Web3 Wallet для кращого контролю даних і згоди або відкликання в будь-який час", "txt_tier_2_tier": "Рівень 2", "txt_tier_2_name": "Щит конфіденційності AesirX", "txt_tier_2_levelname": "Середній", "txt_tier_2_content": "Ідеально підходить для персоналізованого онлайн-досвіду та безпечного керування згодою на сеансах і платформах.", + "txt_tier_2_content_custom": "Насолоджуйтесь персоналізованими онлайн-інтерфейсами на кількох сеансах і платформах із безпечним керуванням згодою.", "txt_tier_2_term": "Ви даєте згоду на використання даних протягом кількох сеансів.", + "txt_tier_2_term_custom": "Покращений цифровий досвід із щитом конфіденційності", "txt_tier_2_upgrade": "Оновлення до рівня згоди 3 - високий", "txt_tier_2_upgradetext": "І додайте децентралізовану згоду на основі Wallet, щоб дати чітку згоду на збір і обробку даних для найбільш безпечного, приватного та персоналізованого досвіду.", "txt_tier_3_tier": "Рівень 3", "txt_tier_3_name": "Децентралізований гаманець", "txt_tier_3_levelname": "Високий", "txt_tier_3_content": "Використовуйте свій Web3 Wallet для більшого контролю над своїми даними.", + "txt_tier_3_content_custom": "Насолоджуйтесь більшою конфіденційністю та більшим контролем над своїми даними з можливістю відкликати згоду в будь-який час", "txt_tier_3_term": "Ви даєте згоду на використання ваших даних, яку можна відкликати в будь-який час.", + "txt_tier_3_term_custom": "Інтеграція гаманця Web3", "txt_tier_3_upgrade": "Оновлення до Tier 4 Consent - Super Advanced (наш найвищий рівень!)", "txt_tier_3_upgradetext": "І додайте AesirX Shield of Privacy, щоб дати чітку згоду на збір і обробку даних для найбільш безпечного, конфіденційного та персоналізованого досвіду.", "txt_tier_4_tier": "Рівень 4", "txt_tier_4_name": "Комбінований гаманець + AesirX Shield of Privacy", "txt_tier_4_levelname": "Супер просунутий", "txt_tier_4_content": "Використовуйте свій Web3 Wallet + AesirX Shield of Privacy та отримайте повний багатосайтовий контроль над використанням ваших даних. Дайте згоду або відкликайте дозволи в будь-який час для справжнього децентралізованого володіння даними.", + "txt_tier_4_content_custom": "Поєднайте свій гаманець Web3 із SoP AesirX для повного контролю кількох сайтів і справжнього децентралізованого володіння даними.", "txt_tier_4_term": "Ви даєте згоду на використання ваших даних, яку можна відкликати в будь-який час.", + "txt_tier_4_term_custom": "Повний контроль даних із захистом конфіденційності", "txt_tier_4_upgradetext": "Найбільш персоналізований досвід із збереженням конфіденційності!", "txt_show_details": "Показати деталі", "txt_hide_details": "Приховати деталі", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Підключіться до свого гаманця", "txt_connecting": "Підключення", "txt_here": "ТУТ", - "txt_visit": "Відвідайте" -} \ No newline at end of file + "txt_visit": "Відвідайте", + "txt_take_full_control": "Повний контроль над своїми особистими даними", + "txt_consent": "Згода", + "txt_about": "Про програму", + "txt_detail": "Деталі", + "txt_consent_to_data": "Згода на використання даних через Shield of Privacy (SoP) для повного контролю над вашими особистими даними. Насолоджуйтесь конфіденційним, безпечним і персоналізованим переглядом без файлів cookie.", + "txt_ethical_compliant": "Етичний і сумісний:", + "txt_detail_1": "Революційний контроль даних: надайте собі повний контроль над своїми даними.", + "txt_detail_2": "Ваші дані залишаються вашими: ми гарантуємо, що ваші дані ніколи не продаються та не надаються.", + "txt_detail_3": "Ми ніколи не використовуємо файли cookie: ваш вміст персоналізується без використання файлів cookie.", + "txt_understanding_your_consent": "Розуміння ваших рівнів згоди", + "txt_this_website_uses": "Цей веб-сайт використовує революційну 4-рівневу децентралізовану модель згоди. Кожен рівень представляє різний рівень дозволу або доступу, який користувачі можуть надати до своїх даних.", + "txt_about_1": "Відповідність гарантовано: використання SoP забезпечує дотримання GDPR, CCPA та інших законів про конфіденційність.", + "txt_about_2": "Гнучка згода: ви можете будь-коли змінити або відкликати свою згоду за допомогою нашого dApp.", + "txt_about_3": "Дізнайтеся більше: дізнайтеся про наш підхід до обробки даних у Політика конфіденційності.", + "txt_about_4": "Для компаній: підвищуйте довіру, захищайте ідентифікаційні дані користувачів і запобігайте зламам. Більше інформації на https://shield.aesirx.io.", + "txt_your_current_level": "Ваш поточний рівень згоди:", + "txt_upgrade_consent_to": "Оновити згоду до:", + "txt_upgrade_consent": "Згода на оновлення", + "txt_upgrade_consent_text": "Підвищте свій рівень згоди та розблокуйте всі переваги Shield of Privacy для налаштованого безпечного цифрового досвіду з автентифікацією ідентифікатора", + "txt_cancel": "Скасувати" +} diff --git a/src/translations/vi/common.json b/src/translations/vi/common.json index 69adb7a..0d3592f 100644 --- a/src/translations/vi/common.json +++ b/src/translations/vi/common.json @@ -3,28 +3,36 @@ "txt_tier_1_name": "Dựa trên phiên", "txt_tier_1_levelname": "Cơ bản", "txt_tier_1_content": "Lý tưởng cho khách truy cập trang web mới hoặc nếu bạn không muốn dữ liệu của mình được lưu trữ sau lần truy cập hiện tại.", + "txt_tier_1_content_custom": "Trong phiên 30 phút, chúng tôi chỉ sử dụng dữ liệu hành vi (không phải dữ liệu cá nhân) để nâng cao trải nghiệm duyệt web của bạn.", "txt_tier_1_term": "Bạn đồng ý với việc thu thập dữ liệu chỉ trong phiên 30 phút.", + "txt_tier_1_term_custom": "Quyền riêng tư dựa trên phiên 30 phút", "txt_tier_1_upgrade": "Nâng cấp lên Đồng ý Cấp 2 - Trung bình", "txt_tier_1_upgradetext": " & thêm vào Ví Web3 để có sự đồng ý và kiểm soát dữ liệu tốt hơn hoặc thu hồi bất kỳ lúc nào bạn chọn.", "txt_tier_2_tier": "Cấp 2", "txt_tier_2_name": "AesirX Shield of Privacy", "txt_tier_2_levelname": "Trung bình", "txt_tier_2_content": "Lý tưởng cho trải nghiệm trực tuyến được cá nhân hóa và quản lý sự đồng ý an toàn trên các phiên và nền tảng.", + "txt_tier_2_content_custom": "Tận hưởng trải nghiệm trực tuyến được cá nhân hóa trên nhiều phiên và nền tảng với tính năng quản lý sự đồng ý an toàn.", "txt_tier_2_term": "Bạn đồng ý cho phép sử dụng dữ liệu trong nhiều phiên.", + "txt_tier_2_term_custom": "Trải nghiệm kỹ thuật số nâng cao với Lá chắn bảo mật", "txt_tier_2_upgrade": "Nâng cấp lên Đồng ý Bậc 3 - Cao", "txt_tier_2_upgradetext": " & thêm vào Đồng ý phi tập trung dựa trên ví để đưa ra sự đồng ý rõ ràng đối với việc thu thập và xử lý dữ liệu để có trải nghiệm an toàn, riêng tư và được cá nhân hóa nhất.", "txt_tier_3_tier": "Cấp 3", "txt_tier_3_name": "Ví phi tập trung", "txt_tier_3_levelname": "Cao", "txt_tier_3_content": "Sử dụng Ví Web3 để kiểm soát tốt hơn dữ liệu của bạn.", + "txt_tier_3_content_custom": "Tận hưởng quyền riêng tư cao hơn và kiểm soát dữ liệu của bạn nhiều hơn với tùy chọn thu hồi sự đồng ý bất cứ lúc nào.", "txt_tier_3_term": "Bạn đồng ý cho dữ liệu của mình được sử dụng, có thể thu hồi bất kỳ lúc nào bạn chọn.", + "txt_tier_3_term_custom": "Tích hợp Ví Web3", "txt_tier_3_upgrade": "Nâng cấp lên Đồng ý Bậc 4 - Siêu Cao cấp (bậc cao nhất của chúng tôi!)", "txt_tier_3_upgradetext": " & thêm AesirX Shield of Privacy để đưa ra sự đồng ý rõ ràng đối với việc thu thập và xử lý dữ liệu để có trải nghiệm an toàn, riêng tư và được cá nhân hóa nhất.", "txt_tier_4_tier": "Cấp 4", "txt_tier_4_name": "Ví kết hợp + AesirX Shield of Privacy", "txt_tier_4_levelname": "Siêu Nâng Cao", "txt_tier_4_content": "Sử dụng Ví Web3 + AesirX Shield of Privacy của bạn và có toàn quyền kiểm soát trên nhiều trang web đối với việc sử dụng dữ liệu của bạn. Đồng ý hoặc thu hồi quyền bất cứ lúc nào đối với quyền sở hữu dữ liệu phi tập trung thực sự.", + "txt_tier_4_content_custom": "Kết hợp Ví Web3 của bạn với AesirX SoP để có toàn quyền kiểm soát nhiều trang web và quyền sở hữu dữ liệu phi tập trung thực sự.", "txt_tier_4_term": "Bạn đồng ý cho dữ liệu của mình được sử dụng, có thể thu hồi bất kỳ lúc nào bạn chọn.", + "txt_tier_4_term_custom": "Kiểm soát toàn bộ dữ liệu với lá chắn bảo mật", "txt_tier_4_upgradetext": "Trải nghiệm cá nhân hóa và bảo vệ quyền riêng tư cao nhất!", "txt_show_details": "Hiển thị chi tiết", "txt_hide_details": "Ẩn chi tiết", @@ -44,5 +52,25 @@ "txt_please_connect_your_wallet": "Vui lòng kết nối với ví của bạn", "txt_connecting": "Đang kết nối", "txt_here": "ĐÂY", - "txt_visit": "Đến" -} \ No newline at end of file + "txt_visit": "Đến", + "txt_take_full_control": "Kiểm soát hoàn toàn dữ liệu cá nhân của bạn", + "txt_consent": "Đồng ý", + "txt_about": "Giới thiệu", + "txt_detail": "Chi tiết", + "txt_consent_to_data": "Đồng ý sử dụng dữ liệu thông qua Lá chắn bảo mật (SoP) để có toàn quyền kiểm soát dữ liệu cá nhân của bạn. Trải nghiệm duyệt web tôn trọng quyền riêng tư, an toàn và cá nhân hóa mà không cần cookie.", + "txt_ethical_Compliance": "Có đạo đức & tuân thủ :", + "txt_detail_1": "Kiểm soát dữ liệu mang tính cách mạng: Trao quyền cho bản thân với toàn quyền kiểm soát dữ liệu của bạn.", + "txt_detail_2": "Dữ liệu của bạn vẫn là của bạn: Chúng tôi đảm bảo rằng dữ liệu của bạn không bao giờ được bán hoặc chia sẻ.", + "txt_detail_3": "Chúng tôi không bao giờ sử dụng cookie: Nội dung của bạn được cá nhân hóa mà không sử dụng cookie.", + "txt_under Hiểu_your_consent": "Hiểu mức độ đồng ý của bạn", + "txt_this_website_uses": "Trang web này sử dụng Mô hình đồng ý phân cấp 4 cấp mang tính cách mạng. Mỗi cấp thể hiện một cấp độ quyền hoặc quyền truy cập khác nhau mà người dùng có thể cấp cho dữ liệu của họ.", + "txt_about_1": "Đảm bảo tuân thủ: Sử dụng SoP đảm bảo tuân thủ GDPR, CCPA và các luật về quyền riêng tư khác.", + "txt_about_2": "Sự đồng ý linh hoạt: Bạn có thể thay đổi hoặc rút lại sự đồng ý của mình bất cứ lúc nào thông qua dApp.", + "txt_about_3": "Tìm hiểu thêm: Khám phá phương pháp xử lý dữ liệu của chúng tôi trong Chính sách quyền riêng tư.", + "txt_about_4": "Dành cho doanh nghiệp: Nâng cao lòng tin, bảo mật danh tính người dùng và ngăn chặn vi phạm. Thông tin thêm tại https://shield.aesirx.io.", + "txt_your_current_level": "Mức độ đồng ý hiện tại của bạn là:", + "txt_upgrade_consent_to": "Đồng ý nâng cấp lên:", + "txt_upgrade_consent": "Đồng ý nâng cấp", + "txt_upgrade_consent_text": "Nâng cấp mức độ đồng ý của bạn và tận hưởng toàn bộ lợi ích của Lá chắn bảo mật để có được trải nghiệm kỹ thuật số được xác thực bằng ID, tùy chỉnh, an toàn.", + "txt_cancel": "Hủy" +} From a6d061426a15ae261ac6ac741478fad2225898a8 Mon Sep 17 00:00:00 2001 From: Viet Date: Thu, 25 Jan 2024 14:13:07 +0700 Subject: [PATCH 04/12] Update text --- src/Components/ConsentCustom.tsx | 4 ++-- src/translations/dk/common.json | 1 + src/translations/en/common.json | 1 + src/translations/es/common.json | 1 + src/translations/fr/common.json | 1 + src/translations/hr/common.json | 1 + src/translations/th/common.json | 1 + src/translations/ua/common.json | 1 + src/translations/vi/common.json | 1 + 9 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Components/ConsentCustom.tsx b/src/Components/ConsentCustom.tsx index 096a630..cdabf2a 100644 --- a/src/Components/ConsentCustom.tsx +++ b/src/Components/ConsentCustom.tsx @@ -846,7 +846,7 @@ const ConsentComponentCustomApp = (props: WalletConnectionPropsExtends) => { }} className="d-flex align-items-center justify-content-center fs-14 w-100 w-lg-30 me-3 rounded-pill py-3 text-white" > - {t('txt_upgrade_consent')} + {t('txt_change_consent')}
@@ -885,7 +885,7 @@ const ConsentComponentCustomApp = (props: WalletConnectionPropsExtends) => { }} className="d-flex align-items-center justify-content-center fs-14 w-100 me-3 mb-2 mb-lg-0 rounded-pill py-3 text-dark" > - {t('txt_upgrade_consent')} + {t('txt_change_consent')} {' '}