From 1225f99306c5c312197775768680b239a0ddd77b Mon Sep 17 00:00:00 2001 From: rustdesk Date: Wed, 18 Sep 2024 15:09:16 +0800 Subject: [PATCH] add vanilla-cookieconsent --- v3/package-lock.json | 9 +- v3/package.json | 3 +- v3/src/assets/styles/ccElegantBlack.css | 52 ++++++++++++ v3/src/components/CookieConsent.astro | 16 ++++ v3/src/components/CookieConsentConfig.ts | 102 +++++++++++++++++++++++ v3/src/layouts/Layout.astro | 2 + 6 files changed, 182 insertions(+), 2 deletions(-) create mode 100644 v3/src/assets/styles/ccElegantBlack.css create mode 100644 v3/src/components/CookieConsent.astro create mode 100644 v3/src/components/CookieConsentConfig.ts diff --git a/v3/package-lock.json b/v3/package-lock.json index 8ea5315..63b9876 100644 --- a/v3/package-lock.json +++ b/v3/package-lock.json @@ -18,7 +18,8 @@ "astro-icon": "^1.1.1", "limax": "4.1.0", "lodash.merge": "^4.6.2", - "unpic": "^3.18.0" + "unpic": "^3.18.0", + "vanilla-cookieconsent": "^3.0.1" }, "devDependencies": { "@astrojs/check": "^0.9.3", @@ -10031,6 +10032,12 @@ "dev": true, "license": "MIT" }, + "node_modules/vanilla-cookieconsent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vanilla-cookieconsent/-/vanilla-cookieconsent-3.0.1.tgz", + "integrity": "sha512-gqc4x7O9t1I4xWr7x6/jtQWPr4PZK26SmeA0iyTv1WyoECfAGnu5JEOExmMEP+5Fz66AT9OiCBO3GII4wDQHLw==", + "license": "MIT" + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", diff --git a/v3/package.json b/v3/package.json index ea6cb8d..ec436f5 100644 --- a/v3/package.json +++ b/v3/package.json @@ -32,7 +32,8 @@ "astro-icon": "^1.1.1", "limax": "4.1.0", "lodash.merge": "^4.6.2", - "unpic": "^3.18.0" + "unpic": "^3.18.0", + "vanilla-cookieconsent": "^3.0.1" }, "devDependencies": { "@astrojs/check": "^0.9.3", diff --git a/v3/src/assets/styles/ccElegantBlack.css b/v3/src/assets/styles/ccElegantBlack.css new file mode 100644 index 0000000..f8523d8 --- /dev/null +++ b/v3/src/assets/styles/ccElegantBlack.css @@ -0,0 +1,52 @@ +.cc--elegant-black { + --cc-bg: #000; + --cc-primary-color: rgb(239, 244, 246); + --cc-secondary-color: #b1bdc3 !important; + + --cc-btn-primary-bg: #ffffff; + --cc-btn-primary-color: #000; + --cc-btn-primary-hover-bg: #ccd4d8; + --cc-btn-primary-hover-color: #000; + --cc-btn-primary-border-color: var(--cc-btn-primary-bg); + + --cc-btn-secondary-bg: rgba(255, 255, 255, 0.039); + --cc-btn-secondary-color: var(--cc-primary-color); + --cc-btn-secondary-border-color: #252729; + --cc-btn-secondary-hover-bg: #252729; + --cc-btn-secondary-hover-color: #fff; + --cc-btn-secondary-hover-border-color: #252729; + + --cc-cookie-category-block-bg: #101111; + --cc-cookie-category-block-border: #1d1e1f; + --cc-cookie-category-block-hover-bg: #151516; + --cc-cookie-category-block-hover-border: #1d1e1f; + --cc-cookie-category-expanded-block-hover-bg: #1d1e1f; + --cc-cookie-category-expanded-block-bg: #101111; + --cc-toggle-readonly-bg: #2f3132; + --cc-overlay-bg: rgba(0, 0, 0, 0.9) !important; + + --cc-toggle-on-bg: var(--cc-btn-primary-bg); + --cc-toggle-off-bg: #525f6b; + --cc-toggle-on-knob-bg: var(--cc-bg); + --cc-toggle-off-knob-bg: var(--cc-btn-primary-color); + --cc-toggle-readonly-knob-bg: var(--cc-cookie-category-block-bg); + --cc-toggle-enabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-disabled-icon-color: var(--cc-btn-primary-color); + --cc-toggle-readonly-knob-icon-color: var(--cc-toggle-readonly-bg); + --cc-section-category-border: #1e2428; + + --cc-webkit-scrollbar-bg: var(--cc-section-category-border); + --cc-webkit-scrollbar-hover-bg: var(--cc-btn-primary-hover-bg); + + --cc-separator-border-color: #252729; + + --cc-footer-bg: #000; + --cc-footer-color: var(--cc-secondary-color); + --cc-footer-border-color: #212529; +} + +.cc--elegant-black #cc-main .cm, +.cc--elegant-black #cc-main .pm { + color-scheme: dark; + border: 1px solid var(--cc-separator-border-color); +} diff --git a/v3/src/components/CookieConsent.astro b/v3/src/components/CookieConsent.astro new file mode 100644 index 0000000..92e11f3 --- /dev/null +++ b/v3/src/components/CookieConsent.astro @@ -0,0 +1,16 @@ +--- +import 'vanilla-cookieconsent/dist/cookieconsent.css'; +import '../assets/styles/ccElegantBlack.css'; +--- + + + + diff --git a/v3/src/components/CookieConsentConfig.ts b/v3/src/components/CookieConsentConfig.ts new file mode 100644 index 0000000..926cc80 --- /dev/null +++ b/v3/src/components/CookieConsentConfig.ts @@ -0,0 +1,102 @@ +import type { CookieConsentConfig } from 'vanilla-cookieconsent'; + +export const config: CookieConsentConfig = { + guiOptions: { + consentModal: { + layout: 'box inline', + position: 'bottom left', + }, + preferencesModal: { + layout: 'box', + position: 'right', + equalWeightButtons: true, + flipButtons: false, + }, + }, + categories: { + necessary: { + readOnly: true, + }, + functionality: {}, + analytics: { + services: { + ga4: { + label: + 'Google Analytics 4 (dummy)', + onAccept: () => { + console.log('ga4 accepted'); + // TODO: load ga4 + }, + onReject: () => { + console.log('ga4 rejected'); + }, + cookies: [ + { + name: /^_ga/, + }, + ], + }, + another: { + label: 'Another one (dummy)', + }, + }, + }, + }, + language: { + default: 'en', + autoDetect: 'browser', + translations: { + en: { + consentModal: { + title: "Hello traveller, it's cookie time!", + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip.', + acceptAllBtn: 'Accept all', + acceptNecessaryBtn: 'Reject all', + showPreferencesBtn: 'Manage preferences', + footer: + 'Privacy Policy\nTerms and conditions', + }, + preferencesModal: { + title: 'Consent Preferences Center', + acceptAllBtn: 'Accept all', + acceptNecessaryBtn: 'Reject all', + savePreferencesBtn: 'Save preferences', + closeIconLabel: 'Close modal', + serviceCounterLabel: 'Service|Services', + sections: [ + { + title: 'Cookie Usage', + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', + }, + { + title: + 'Strictly Necessary Cookies Always Enabled', + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', + linkedCategory: 'necessary', + }, + { + title: 'Functionality Cookies', + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', + linkedCategory: 'functionality', + }, + { + title: 'Analytics Cookies', + description: + 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.', + linkedCategory: 'analytics', + }, + { + title: 'More information', + description: + 'For any query in relation to my policy on cookies and your choices, please contact me.', + }, + ], + }, + }, + }, + }, +}; diff --git a/v3/src/layouts/Layout.astro b/v3/src/layouts/Layout.astro index 0d07806..3a864fe 100644 --- a/v3/src/layouts/Layout.astro +++ b/v3/src/layouts/Layout.astro @@ -11,6 +11,7 @@ import Metadata from '~/components/common/Metadata.astro'; import SiteVerification from '~/components/common/SiteVerification.astro'; import Analytics from '~/components/common/Analytics.astro'; import BasicScripts from '~/components/common/BasicScripts.astro'; +import CookieConsent from '../components/CookieConsent.astro'; // Comment the line below to disable View Transitions import { ViewTransitions } from 'astro:transitions'; @@ -44,5 +45,6 @@ const { language, textDirection } = I18N; +