diff --git a/.github/workflows/deploy-to-github-actions.yml b/.github/workflows/deploy-to-github-actions.yml index cc67555..10e23dd 100644 --- a/.github/workflows/deploy-to-github-actions.yml +++ b/.github/workflows/deploy-to-github-actions.yml @@ -4,8 +4,6 @@ on: push: branches: - deployment - # Review gh actions docs if you want to further define triggers, paths, etc - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on jobs: build: @@ -20,8 +18,16 @@ jobs: node-version: 18 cache: npm + - name: Set up environment variables + run: | + echo "FIREBASE_API_KEY=${{ secrets.FIREBASE_API_KEY }}" >> $GITHUB_ENV + echo "FIREBASE_AUTH_DOMAIN=${{ secrets.FIREBASE_AUTH_DOMAIN }}" >> $GITHUB_ENV + echo "FIREBASE_PROJECT_ID=${{ secrets.FIREBASE_PROJECT_ID }}" >> $GITHUB_ENV + echo "FIREBASE_STORAGE_BUCKET=${{ secrets.FIREBASE_STORAGE_BUCKET }}" >> $GITHUB_ENV + - name: Install dependencies run: npm ci + - name: Build website run: npm run build @@ -33,13 +39,9 @@ jobs: deploy: name: Deploy to GitHub Pages needs: build - - # Grant GITHUB_TOKEN the permissions required to make a Pages deployment permissions: - pages: write # to deploy to Pages - id-token: write # to verify the deployment originates from an appropriate source - - # Deploy to the github-pages environment + pages: write + id-token: write environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} @@ -48,4 +50,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 \ No newline at end of file + uses: actions/deploy-pages@v4 diff --git a/README.md b/README.md index 71cad00..5b35cbd 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ The plan is to architecture a modern modern and better to the exisitin Library s - ***📦Project***: A list of all projects in progress and completed ## Short term goals 🚩: +- ***content collection*** : add more material to the existing strcuture - ***stable*** :have a stable foundation and build - ***🌥animations*** : introduction of dynamic elements to add life to the static feel of the webpage - ***📗documantation***: a beginner friendly documentation to the community on how to contribute/ videos for writes and jounals diff --git a/blog/about-biust/why-biust.md b/blog/about-biust/why-biust.md new file mode 100644 index 0000000..243b54a --- /dev/null +++ b/blog/about-biust/why-biust.md @@ -0,0 +1 @@ +{/* truncate */} \ No newline at end of file diff --git a/docs/about-me.md b/blog/about-me.md similarity index 85% rename from docs/about-me.md rename to blog/about-me.md index b084349..9f4c228 100644 --- a/docs/about-me.md +++ b/blog/about-me.md @@ -6,7 +6,7 @@ a second-year student majoring in Computer Science and Software Engineering. I am the creator, maintainer, and founder of the Biust Insight Project, an initiative designed to revolutionize document management within our school. ::: ### My Journey: - +{/* truncate */} As a passionate technology enthusiast, I embarked on the Biust Insight Project to address the challenges of managing and accessing a vast array of documents at our institution. The project began with a vision to create a centralized digital archive that would streamline the organization and retrieval of important documents, making information more accessible and reducing inefficiencies. ### Current Role: @@ -21,4 +21,8 @@ Currently, I am in my second year of studying Computer Science and Software Engi Outside of my academic and project work, I enjoy solving puzzles, sodoku grids, rubix , chess anything which looks like a puzzle i like it . I am committed to continuous learning and am always on the lookout for new opportunities to expand my skills and knowledge. -I’m excited to connect with fellow tech enthusiasts and professionals, and I look forward to future collaborations and innovations. Feel free to reach out to me at [email](mailto:chingwaru.desiree@gmail.com) or connect with me on [linkedin](https://www.linkedin.com/in/desiree-chingwaru-294747248/). \ No newline at end of file +<<<<<<< HEAD:docs/about-me.md +I’m excited to connect with fellow tech enthusiasts and professionals, and I look forward to future collaborations and innovations. Feel free to reach out to me at [email](mailto:chingwaru.desiree@gmail.com) or connect with me on [linkedin](https://www.linkedin.com/in/desiree-chingwaru-294747248/). +======= +I’m excited to connect with fellow tech enthusiasts and professionals, and I look forward to future collaborations and innovations. Feel free to reach out to me at or connect with me on +>>>>>>> ac8d2fff317f5d32afa56ba0905167b963573efd:blog/about-me.md diff --git a/docs/cookie-policy.md b/blog/cookie-policy.md similarity index 99% rename from docs/cookie-policy.md rename to blog/cookie-policy.md index 0d83ba7..cee2d28 100644 --- a/docs/cookie-policy.md +++ b/blog/cookie-policy.md @@ -7,7 +7,7 @@ Effective Date: [13/07/2024] Welcome to [Your Website Name] ("we", "our", "us"). This Cookie Policy explains how we use cookies and similar tracking technologies on our website [insert website URL] (the "Site"). By using our Site, you consent to the use of cookies in accordance with this policy. 2. What Are Cookies? - +{/* truncate */} Cookies are small text files that are placed on your device (computer, smartphone, tablet) when you visit a website. They help websites remember your actions and preferences (such as login details, language, and other display preferences) over a period of time, so you don’t have to re-enter them whenever you come back to the site or browse from one page to another. 3. Types of Cookies We Use diff --git a/docs/privacy.md b/blog/privacy.md similarity index 99% rename from docs/privacy.md rename to blog/privacy.md index b09d8ec..c65f897 100644 --- a/docs/privacy.md +++ b/blog/privacy.md @@ -5,7 +5,7 @@ Effective Date: [Insert Date] 1. Introduction Welcome to [Your Company Name] (“we”, “our”, “us”). We are committed to protecting your privacy and ensuring a safe online experience. This Privacy Policy explains how we collect, use, disclose, and safeguard your information when you visit our website [insert website URL] (the “Site”), use our services, or interact with us in other ways. - +{/* truncate */} 2. Information We Collect We may collect the following types of information: diff --git a/blog/project-stats.md b/blog/project-stats.md new file mode 100644 index 0000000..c297767 --- /dev/null +++ b/blog/project-stats.md @@ -0,0 +1,2 @@ + +{/* truncate */} \ No newline at end of file diff --git a/docs/single-page.md b/blog/single-page.md similarity index 62% rename from docs/single-page.md rename to blog/single-page.md index b4a668c..2e9cf29 100644 --- a/docs/single-page.md +++ b/blog/single-page.md @@ -4,4 +4,6 @@ sidebar_position : 1 --- # Main Page -this is the main page \ No newline at end of file +this is the main page + +{/* truncate */} \ No newline at end of file diff --git a/blog/terms.md b/blog/terms.md new file mode 100644 index 0000000..243b54a --- /dev/null +++ b/blog/terms.md @@ -0,0 +1 @@ +{/* truncate */} \ No newline at end of file diff --git a/docs/why-biust.md b/blog/why-biust.md similarity index 99% rename from docs/why-biust.md rename to blog/why-biust.md index c63c113..f834d9e 100644 --- a/docs/why-biust.md +++ b/blog/why-biust.md @@ -6,7 +6,7 @@ BIUST offers qualifications which are designed to help you launch your career, w BIUST prides itself as the first specialised tert:iary institution and a research-intensive University in Botswana, aimed at being a catalyst for innovation and our country’s economic transformation drive. Its graduates are equipped with world-class education enriched with research-based solutions which will impact communities locally, regionally and in the international arena. ### Career Guidance The University has adopted a strong academic support model where students are paired with their Academic Advisors right from the registration period to guide them through their studies in readiness for graduation. Students are also supported by a tutor who provides them with practical guidance and extra lessons on a range of academic issues to help them excel in their studies. As a BIUST Student, you will also have a peer mentor – a trained student volunteer from your course, to help you with assignments and other course materials and percolate to boost excellence in your respective modules. - +{/* truncate */} ### Enriched Learning and Experience The University has carefully selected qualified local and international experts who are tasked with delivering quality education to our students and in the process sharing their global experiences. diff --git a/docs/why-project.md b/blog/why-project.md similarity index 99% rename from docs/why-project.md rename to blog/why-project.md index b4f6c8e..c802daf 100644 --- a/docs/why-project.md +++ b/blog/why-project.md @@ -1,7 +1,7 @@ About the Biust Insight Project As a dedicated Computer Science graduate, I embarked on the Biust Insight Project to address a significant need within our educational institution: the organization and accessibility of critical documents. Our school, like many academic institutions, faced challenges in managing a growing volume of documents, including research papers, administrative records, course materials, and more. - +{/* truncate */} The Challenge: Before the Biust Insight Project, document management at our school was largely manual and fragmented. Documents were scattered across various physical and digital locations, making it difficult for students, faculty, and staff to find and access the information they needed efficiently. This lack of centralized access led to inefficiencies, wasted time, and frustration among users. diff --git a/docs/about-biust/why-biust.md b/docs/about-biust/why-biust.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/challanges/main.md b/docs/challanges/main.md deleted file mode 100644 index 1802a82..0000000 --- a/docs/challanges/main.md +++ /dev/null @@ -1 +0,0 @@ -# Section in development \ No newline at end of file diff --git a/docs/clubs/join.md b/docs/clubs/join.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/clubs/list-of-clubs.md b/docs/clubs/list-of-clubs.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/drives/Alss modules/Alss-101.md b/docs/drives/Alss modules/Alss-101.md index 295c715..8577c2b 100644 --- a/docs/drives/Alss modules/Alss-101.md +++ b/docs/drives/Alss modules/Alss-101.md @@ -1,9 +1,21 @@ --- -title: Alss 101 -sidebar_position: 2 ---- +hide_title: false +hide_table_of_contents: true + +sidebar_position: 3 + +description: ALSS 101 content +keywords: + - ALSS 101 + - ALSS +tags: [ALSS ,101] + +last_update: + date: 03/01/2021 + author: Desiree C +---
Exam papers diff --git a/docs/drives/Alss modules/_category_.json b/docs/drives/Alss modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Alss modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Biology modules/_category_.json b/docs/drives/Biology modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Biology modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/CETG modules/_category_.json b/docs/drives/CETG modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/CETG modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Chemistry modules/_category_.json b/docs/drives/Chemistry modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Chemistry modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Computer modules/_category_.json b/docs/drives/Computer modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Computer modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Mathematics module/_category_.json b/docs/drives/Mathematics module/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Mathematics module/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Physics modules/_category_.json b/docs/drives/Physics modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Physics modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/Statistics modules/_category_.json b/docs/drives/Statistics modules/_category_.json new file mode 100644 index 0000000..8e33209 --- /dev/null +++ b/docs/drives/Statistics modules/_category_.json @@ -0,0 +1,13 @@ +{ + "position": 2.5, + + "collapsible": true, + "collapsed": true, + "className": "customButton", + "link": { + "type": "generated-index" + }, + "customProps": { + "description": "This description can be used in the swizzled DocCard" + } +} \ No newline at end of file diff --git a/docs/drives/_category_.json b/docs/drives/_category_.json index ddee537..9ee6c22 100644 --- a/docs/drives/_category_.json +++ b/docs/drives/_category_.json @@ -1,12 +1,13 @@ { "position": 2.5, - "label": "drives", + "label": "modules", "collapsible": true, "collapsed": true, - "className": "red", + + "className": "customButtons", "link": { "type": "generated-index", - "title": "Tutorial overview" + "title": "Modules" }, "customProps": { "description": "This description can be used in the swizzled DocCard" diff --git a/docs/getting-started/a.pdf b/docs/getting-started/a.pdf deleted file mode 100644 index f2cf9b9..0000000 Binary files a/docs/getting-started/a.pdf and /dev/null differ diff --git a/docs/getting-started/as.jpg b/docs/getting-started/as.jpg deleted file mode 100644 index e9693ab..0000000 Binary files a/docs/getting-started/as.jpg and /dev/null differ diff --git a/docs/getting-started/bio101-2023.md b/docs/getting-started/bio101-2023.md deleted file mode 100644 index df3fa42..0000000 --- a/docs/getting-started/bio101-2023.md +++ /dev/null @@ -1,31 +0,0 @@ - -# Biol 101 - -:::tip Introduction to biology -module guide : [-download-](https://google.com) -::: - -## Content - -> #### Week 1 ->>[Tutorial](https://google.com) ->> [Lecture](https://google.com) -> #### week 2 ->> [tutorial](https://google.com) ->> [lecture](https://google.com) -> #### week 3 -> [tutorial](https://google.com) -> [lecture](https://google.com) -> #### Week 4 ->> [Tutorial](https://google.com) ->> [Lecture](https://google.com) -> #### week 5 ->> [tutorial](https://google.com) ->> [lecture](https://google.com) -> #### week 6 -> [tutorial](https://google.com) -> [lecture](https://google.com) - - - - diff --git a/docs/getting-started/page-1.md b/docs/getting-started/page-1.md deleted file mode 100644 index 051102a..0000000 --- a/docs/getting-started/page-1.md +++ /dev/null @@ -1,4 +0,0 @@ -# Page 1 - -this is page 1 - diff --git a/docs/getting-started/phys101-2023.md b/docs/getting-started/phys101-2023.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/news/01.md b/docs/news/01.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/photo-gallery/daily.md b/docs/photo-gallery/daily.md deleted file mode 100644 index d7d5508..0000000 --- a/docs/photo-gallery/daily.md +++ /dev/null @@ -1 +0,0 @@ -# Section in development \ No newline at end of file diff --git a/docs/terms.md b/docs/terms.md deleted file mode 100644 index e69de29..0000000 diff --git a/docusaurus.config.js b/docusaurus.config.js index b1b8a86..6ab7a77 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -33,13 +33,40 @@ const config = { defaultLocale: 'en', locales: ['en'], }, +plugins: +[ + // Other plugins + [ + 'docusaurus-plugin-dotenv', + { + path: "./.env.local", + systemvars: true, + } + ], + [ + require.resolve("@easyops-cn/docusaurus-search-local"), + + ({ + // ... Your options. + // `hashed` is recommended as long-term-cache of index file is possible. + hashed: true, + // For Docs using Chinese, The `language` is recommended to set to: + // ``` + // language: ["en", "zh"], + // ``` + }), + ], + // ... Your other themes. + +], presets: [ [ 'classic', /** @type {import('@docusaurus/preset-classic').Options} */ ({ + pages :{showLastUpdateAuthor:true,showLastUpdateTime:true}, gtag: { trackingID: 'GTM-5VCFWTM5', anonymizeIP: false, @@ -49,7 +76,7 @@ const config = { }, docs: { - sidebarPath: './sidebars.js', + sidebarPath: './sidebars.js', // Please change this to your repo. // Remove this to remove the "edit this page" links. @@ -83,6 +110,11 @@ const config = { themeConfig: /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ ({ + docs: { + sidebar: { + hideable: true, + }, + }, metadata: [ { name: 'keywords', content: 'BIUST, test papers, labs, exams, archive, students, university,insight,project' }, { name: 'description', content: 'The BIUST Insight Project is an archive of past test papers, labs, and exams for students at BIUST, providing resources to aid study and academic performance.' }, @@ -105,106 +137,92 @@ const config = { image: 'img/logo.svg', navbar: { hideOnScroll: true, - title: 'BIP', + logo: { alt: 'site logo', src: 'img/logo.svg', }, items: [ - - { - type: 'docSidebar', - sidebarId: 'tutorialSidebar', - position: 'right', - label: 'The Archive', - }, - {label:"About",position:'right',type:"dropdown",items:[ - {label:"Me",to:"/docs/about-me"}, - {label:"The Project",to:"/docs/why-project"}, - - - - ]}, - {label:"Portals",position:'left',type:"dropdown",items:[ - {label:"Blackboard",href:"https://biust.blackboard.com/"}, - {label:"Basis",href:"https://portal.biust.ac.bw/"}, - - - - ]}, - - - - - - {to: '/docs/photo-gallery/daily', label: 'Photo Gallery', position: 'right'}, - {to: '/docs/challanges/main', label: 'Contritbue ', position: 'right'}, - + { + to: '/docs/category/modules', + // Only one of "to" or "href" should be used + // href: 'https://www.facebook.com', + label: 'Files', + // Only one of "label" or "html" should be used + // html: 'Introduction' + position: 'left', + activeBaseRegex: 'docs/(next|v8)', + // Open link in a new tab + rel: 'noopener noreferrer', // Recommended for security when using target="_blank" + className: 'custom-navbar-item', // Custom class for styling + }, - ], +], }, - footer: { - style: 'dark', - links: [ - { - title: 'Info', - items: [ - - { - label: 'Project stats', - to: '/docs/project-stats', - }, - - { - label: 'About the Project', - to: '/docs/why-project', - }, - { - label: 'developer ', - to: '/docs/about-me', - }, - ], - }, +footer: { + style: 'dark', + links: [ + { + title: 'Info', + items: [ + { + label: 'Project Stats', + to: '/blog/project-stats', + }, + { + label: 'About the Project', + to: '/blog/why-project', + }, + { + label: 'Developer', + to: '/blog/about-me', + }, + ], + }, + { + title: 'Contribute / Join', + items: [ + { + label: 'GitHub', + to: 'https://github.com/the-dezeray/biust-insight-project', + }, + { + label: 'Contributors', + href: 'https://github.com/the-dezeray/biust-insight-project/tree/main', + }, + { + label: 'Documentation', + href: 'https://github.com/the-dezeray/biust-insight-project/tree/main', + }, + ], + }, + { + title: 'Legal', + items: [ + { + label: 'Terms', + href: '/blog/terms', + }, + { + label: 'Cookie Policy', + href: '/blog/cookie-policy', + }, + ], + }, + ], + copyright: ` +
+

The content provided in this archive is for educational use only. + While I encourage collaboration and resource sharing, I will not be responsible for + any instances of plagiarism, loss of marks, or other academic consequences that may arise + from the use of this material. Users are advised to adhere to their institution’s academic + integrity policies when utilizing these resources. Thank you for your understanding.

+

Copyright © ${new Date().getFullYear()} Desiree

+
+ `, +}, - { - title: 'Contribute / Join', - items: [ - { - label: 'Github', - to: 'https://github.com/the-dezeray/biust-insight-project', - }, - { - label: 'Contributers', - href: 'https://github.com/the-dezeray/biust-insight-project/tree/main', - }, -{ - label: 'Documentaion', - href: 'https://github.com/the-dezeray/biust-insight-project/tree/main', - }, - - ], - }, - { - title: 'Legal', - items: [ - - { - label: 'Terms', - href: '/docs/terms', - }, -{ - label: 'Cookie Policy', - href: '/docs/cookie-policy', - }, - - ], - }, - - ], - - copyright: "


The content provided in this archive is for educational use only. While I encourage collaboration and resource sharing, I will not beresponsible for any instances of plagiarism, loss of marks, or other academic consequences that may arise from the use of this material. Users are advised to adhere to their institution’s academic integrity policies when utilizing these resources. Thank you for your understanding.
Desiree", - }, prism: { theme: prismThemes.github, darkTheme: prismThemes.dracula, @@ -234,6 +252,12 @@ const config = { }), }, ], - }; + stylesheets: [ + { + href: '/css/custom.css', + type: 'text/css', + }, + ], +}; export default config; diff --git a/package-lock.json b/package-lock.json index 87d0bc7..ec3fc94 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,11 @@ "@docusaurus/core": "3.5.2", "@docusaurus/plugin-google-gtag": "^3.5.2", "@docusaurus/preset-classic": "3.5.2", + "@easyops-cn/docusaurus-search-local": "^0.44.5", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "docusaurus-plugin-dotenv": "^1.0.1", + "firebase": "^10.13.2", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" @@ -2984,6 +2987,724 @@ "node": ">=18.0" } }, + "node_modules/@easyops-cn/autocomplete.js": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/@easyops-cn/autocomplete.js/-/autocomplete.js-0.38.1.tgz", + "integrity": "sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "immediate": "^3.2.3" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local": { + "version": "0.44.5", + "resolved": "https://registry.npmjs.org/@easyops-cn/docusaurus-search-local/-/docusaurus-search-local-0.44.5.tgz", + "integrity": "sha512-jT3wuYVzRoeB1gea+2iDtOMme0fD2h3M8HDVgs3garITO6vRxvEraFRVlYkfjLN9BkmzjMlz9nn7MI4qIx8utw==", + "license": "MIT", + "dependencies": { + "@docusaurus/plugin-content-docs": "^2 || ^3", + "@docusaurus/theme-translations": "^2 || ^3", + "@docusaurus/utils": "^2 || ^3", + "@docusaurus/utils-common": "^2 || ^3", + "@docusaurus/utils-validation": "^2 || ^3", + "@easyops-cn/autocomplete.js": "^0.38.1", + "@node-rs/jieba": "^1.6.0", + "cheerio": "^1.0.0", + "clsx": "^1.1.1", + "debug": "^4.2.0", + "fs-extra": "^10.0.0", + "klaw-sync": "^6.0.0", + "lunr": "^2.3.9", + "lunr-languages": "^1.4.0", + "mark.js": "^8.11.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "@docusaurus/theme-common": "^2 || ^3", + "react": "^16.14.0 || ^17 || ^18", + "react-dom": "^16.14.0 || 17 || ^18" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/cheerio": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", + "license": "MIT", + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" + }, + "engines": { + "node": ">=18.17" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@easyops-cn/docusaurus-search-local/node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "MIT", + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" + } + }, + "node_modules/@emnapi/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.2.0.tgz", + "integrity": "sha512-E7Vgw78I93we4ZWdYCb4DGAwRROGkMIXk7/y87UmANR+J6qsWusmC3gLt0H+O0KOt5e6O38U8oJamgbudrES/w==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.2.0.tgz", + "integrity": "sha512-bV21/9LQmcQeCPEg3BDFtvwL6cwiTMksYNWQQ4KOxCZikEGalWtenoZ0wCiukJINlGCIi2KXx01g4FoH/LxpzQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@firebase/analytics": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.8.tgz", + "integrity": "sha512-CVnHcS4iRJPqtIDc411+UmFldk0ShSK3OB+D0bKD8Ck5Vro6dbK5+APZpkuWpbfdL359DIQUnAaMLE+zs/PVyA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/analytics-compat": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.14.tgz", + "integrity": "sha512-unRVY6SvRqfNFIAA/kwl4vK+lvQAL2HVcgu9zTrUtTyYDmtIt/lOuHJynBMYEgLnKm39YKBDhtqdapP2e++ASw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/analytics": "0.10.8", + "@firebase/analytics-types": "0.8.2", + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/analytics-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", + "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app": { + "version": "0.10.11", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.11.tgz", + "integrity": "sha512-DuI8c+p/ndPmV6V0i+mcSuaU9mK9Pi9h76WOYFkPNsbmkblEy8bpTOazjG7tnfar6Of1Wn5ohvyOHSRqnN6flQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-check": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.8.tgz", + "integrity": "sha512-O49RGF1xj7k6BuhxGpHmqOW5hqBIAEbt2q6POW0lIywx7emYtzPDeQI+ryQpC4zbKX646SoVZ711TN1DBLNSOQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/app-check-compat": { + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.15.tgz", + "integrity": "sha512-zFIvIFFNqDXpOT2huorz9cwf56VT3oJYRFjSFYdSbGYEJYEaXjLJbfC79lx/zjx4Fh+yuN8pry3TtvwaevrGbg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check": "0.8.8", + "@firebase/app-check-types": "0.5.2", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/app-check-interop-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-check-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", + "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/app-compat": { + "version": "0.2.41", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.41.tgz", + "integrity": "sha512-ktJcObWKjlIWq31kXu6sHoqWlhQD5rx0a2F2ZC2JVuEE5A5f7F43VO1Z6lfeRZXMFZbGG/aqIfXqgsP3zD2JYg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app": "0.10.11", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/app-types": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.9.tgz", + "integrity": "sha512-yLD5095kVgDw965jepMyUrIgDklD6qH/BZNHeKOgvu7pchOKNjVM+zQoOVYJIKWMWOWBq8IRNVU6NXzBbozaJg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, + "node_modules/@firebase/auth-compat": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.14.tgz", + "integrity": "sha512-2eczCSqBl1KUPJacZlFpQayvpilg3dxXLy9cSMTKtQMTQSmondUtPI47P3ikH3bQAXhzKLOE+qVxJ3/IRtu9pw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/auth": "1.7.9", + "@firebase/auth-types": "0.12.2", + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-interop-types": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/auth-types": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", + "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/component": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.9.tgz", + "integrity": "sha512-gm8EUEJE/fEac86AvHn8Z/QW8BvR56TBw3hMW0O838J/1mThYQXAIQBgUv75EqlCZfdawpWLrKt1uXvp9ciK3Q==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.8.tgz", + "integrity": "sha512-dzXALZeBI1U5TXt6619cv0+tgEhJiwlUtQ55WNZY7vGAjv7Q1QioV969iYwt1AQQ0ovHnEW0YW9TiBfefLvErg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "faye-websocket": "0.11.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-compat": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.8.tgz", + "integrity": "sha512-OpeWZoPE3sGIRPBKYnW9wLad25RaWbGyk7fFQe4xnJQKRzlynWeFBSRRAoLE2Old01WXwskUiucNqUUVlFsceg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/database": "1.0.8", + "@firebase/database-types": "1.0.5", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/database-types": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.5.tgz", + "integrity": "sha512-fTlqCNwFYyq/C6W7AJ5OCuq5CeZuBEsEwptnVxlNPkWCo5cTTyukzAHRSO/jaQcItz33FfYrrFk1SJofcu2AaQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.10.0" + } + }, + "node_modules/@firebase/firestore": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.7.2.tgz", + "integrity": "sha512-WPkL/DEHuJg1PZPyHn81pNUhitG+7WkpLVdXmoYB23Za3eoM8VzuIn7zcD4Cji6wDCGA6eI1rvGYLtsXmE1OaQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "@firebase/webchannel-wrapper": "1.0.1", + "@grpc/grpc-js": "~1.9.0", + "@grpc/proto-loader": "^0.7.8", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "engines": { + "node": ">=10.10.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/firestore-compat": { + "version": "0.3.37", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.37.tgz", + "integrity": "sha512-YwjJePx+m2OGnpKTGFTkcRXQZ+z0+8t7/zuwyOsTmKERobn0kekOv8VAQQmITcC+3du8Ul98O2a0vMH3xwt7jQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/firestore": "4.7.2", + "@firebase/firestore-types": "3.0.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/firestore-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", + "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/functions": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.8.tgz", + "integrity": "sha512-Lo2rTPDn96naFIlSZKVd1yvRRqqqwiJk7cf9TZhUerwnPKgBzXy+aHE22ry+6EjCaQusUoNai6mU6p+G8QZT1g==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.9", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/functions-compat": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.14.tgz", + "integrity": "sha512-dZ0PKOKQFnOlMfcim39XzaXonSuPPAVuzpqA4ONTIdyaJK/OnBaIEVs/+BH4faa1a2tLeR+Jy15PKqDRQoNIJw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/functions": "0.11.8", + "@firebase/functions-types": "0.6.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/functions-types": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", + "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/installations": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.9.tgz", + "integrity": "sha512-hlT7AwCiKghOX3XizLxXOsTFiFCQnp/oj86zp1UxwDGmyzsyoxtX+UIZyVyH/oBF5+XtblFG9KZzZQ/h+dpy+Q==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/installations-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.9.tgz", + "integrity": "sha512-2lfdc6kPXR7WaL4FCQSQUhXcPbI7ol3wF+vkgtU25r77OxPf8F/VmswQ7sgIkBBWtymn5ZF20TIKtnOj9rjb6w==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/installations-types": "0.5.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/installations-types": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", + "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/logger": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/messaging": { + "version": "0.12.11", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.11.tgz", + "integrity": "sha512-zn5zGhF46BmiZ7W9yAUoHlqzJGakmWn1FNp//roXHN62dgdEFIKfXY7IODA2iQiXpmUO3sBdI/Tf+Hsft1mVkw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.10.0", + "idb": "7.1.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/messaging-compat": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.11.tgz", + "integrity": "sha512-2NCkfE1L9jSn5OC+2n5rGAz5BEAQreK2lQGdPYQEJlAbKB2efoF+2FdiQ+LD8SlioSXz66REfeaEdesoLPFQcw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/messaging": "0.12.11", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/messaging-interop-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", + "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/performance": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.9.tgz", + "integrity": "sha512-PnVaak5sqfz5ivhua+HserxTJHtCar/7zM0flCX6NkzBNzJzyzlH4Hs94h2Il0LQB99roBqoE5QT1JqWqcLJHQ==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/performance-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.9.tgz", + "integrity": "sha512-dNl95IUnpsu3fAfYBZDCVhXNkASE0uo4HYaEPd2/PKscfTvsgqFAOxfAXzBEDOnynDWiaGUnb5M1O00JQ+3FXA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/performance": "0.6.9", + "@firebase/performance-types": "0.2.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/performance-types": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", + "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/remote-config": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.9.tgz", + "integrity": "sha512-EO1NLCWSPMHdDSRGwZ73kxEEcTopAxX1naqLJFNApp4hO8WfKfmEpmjxmP5TrrnypjIf2tUkYaKsfbEA7+AMmA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/installations": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/remote-config-compat": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.9.tgz", + "integrity": "sha512-AxzGpWfWFYejH2twxfdOJt5Cfh/ATHONegTd/a0p5flEzsD5JsxXgfkFToop+mypEL3gNwawxrxlZddmDoNxyA==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/remote-config": "0.4.9", + "@firebase/remote-config-types": "0.3.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/remote-config-types": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", + "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==", + "license": "Apache-2.0" + }, + "node_modules/@firebase/storage": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.13.2.tgz", + "integrity": "sha512-fxuJnHshbhVwuJ4FuISLu+/76Aby2sh+44ztjF2ppoe0TELIDxPW6/r1KGlWYt//AD0IodDYYA8ZTN89q8YqUw==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0", + "undici": "6.19.7" + }, + "peerDependencies": { + "@firebase/app": "0.x" + } + }, + "node_modules/@firebase/storage-compat": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.12.tgz", + "integrity": "sha512-hA4VWKyGU5bWOll+uwzzhEMMYGu9PlKQc1w4DWxB3aIErWYzonrZjF0icqNQZbwKNIdh8SHjZlFeB2w6OSsjfg==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/component": "0.6.9", + "@firebase/storage": "0.13.2", + "@firebase/storage-types": "0.8.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/storage-types": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", + "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", + "license": "Apache-2.0", + "peerDependencies": { + "@firebase/app-types": "0.x", + "@firebase/util": "1.x" + } + }, + "node_modules/@firebase/util": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.10.0.tgz", + "integrity": "sha512-xKtx4A668icQqoANRxyDLBLz51TAbDP9KRfpbKGxiCAW346d0BeJe5vN6/hKxxmWwnZ0mautyv39JxviwwQMOQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@firebase/vertexai-preview": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.4.tgz", + "integrity": "sha512-EBSqyu9eg8frQlVU9/HjKtHN7odqbh9MtAcVz3WwHj4gLCLOoN9F/o+oxlq3CxvFrd3CNTZwu6d2mZtVlEInng==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/component": "0.6.9", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.10.0", + "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" + } + }, + "node_modules/@firebase/webchannel-wrapper": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.1.tgz", + "integrity": "sha512-jmEnr/pk0yVkA7mIlHNnxCi+wWzOFUg0WyIotgkKAb2u1J7fAeDBcVNSTjTihbAYNusCLQdW5s9IJ5qwnEufcQ==", + "license": "Apache-2.0" + }, + "node_modules/@grpc/grpc-js": { + "version": "1.9.15", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", + "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.7.8", + "@types/node": ">=12.12.47" + }, + "engines": { + "node": "^8.13.0 || >=10.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/@hapi/hoek": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", @@ -3127,21 +3848,286 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/@mdx-js/react": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", - "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "node_modules/@mdx-js/react": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@mdx-js/react/-/react-3.0.1.tgz", + "integrity": "sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==", + "license": "MIT", + "dependencies": { + "@types/mdx": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "@types/react": ">=16", + "react": ">=16" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@node-rs/jieba": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba/-/jieba-1.10.3.tgz", + "integrity": "sha512-SG0CWHmhIveH6upJURgymDKLertEPYbOc5NSFIpbZWW1W2MpqgumVteQO+5YBlkmpR6jMNDPWNQyQwkB6HoeNg==", + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/jieba-android-arm-eabi": "1.10.3", + "@node-rs/jieba-android-arm64": "1.10.3", + "@node-rs/jieba-darwin-arm64": "1.10.3", + "@node-rs/jieba-darwin-x64": "1.10.3", + "@node-rs/jieba-freebsd-x64": "1.10.3", + "@node-rs/jieba-linux-arm-gnueabihf": "1.10.3", + "@node-rs/jieba-linux-arm64-gnu": "1.10.3", + "@node-rs/jieba-linux-arm64-musl": "1.10.3", + "@node-rs/jieba-linux-x64-gnu": "1.10.3", + "@node-rs/jieba-linux-x64-musl": "1.10.3", + "@node-rs/jieba-wasm32-wasi": "1.10.3", + "@node-rs/jieba-win32-arm64-msvc": "1.10.3", + "@node-rs/jieba-win32-ia32-msvc": "1.10.3", + "@node-rs/jieba-win32-x64-msvc": "1.10.3" + } + }, + "node_modules/@node-rs/jieba-android-arm-eabi": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm-eabi/-/jieba-android-arm-eabi-1.10.3.tgz", + "integrity": "sha512-fuqVtaYlUKZg3cqagYFxj1DSa7ZHKXLle4iGH2kbQWg7Kw6cf7aCYBHIUZuH5sliK10M/CWccZ+SGRUwcSGfbg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-android-arm64": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-android-arm64/-/jieba-android-arm64-1.10.3.tgz", + "integrity": "sha512-iuZZZq5yD9lT+AgaXpFe19gtAsIecUODRLLaBFbavjgjLk5cumv38ytWjS36s/eqptwI15MQfysSYOlWtMEG5g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-arm64": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-arm64/-/jieba-darwin-arm64-1.10.3.tgz", + "integrity": "sha512-dwPhkav1tEARskwPz91UUXL2NXy4h0lJYTuJzpGgwXxm552zBM2JJ41kjah1364j+EOq5At3NQvf5r5rH89phQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-darwin-x64": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-darwin-x64/-/jieba-darwin-x64-1.10.3.tgz", + "integrity": "sha512-kjxvV6G1baQo/2I3mELv5qGv4Q0rhd5srwXhypSxMWZFtSpNwCDsLcIOR5bvMBci6QVFfZOs6WD6DKiWVz0SlA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-freebsd-x64": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-freebsd-x64/-/jieba-freebsd-x64-1.10.3.tgz", + "integrity": "sha512-QYTsn+zlWRil+MuBeLfTK5Md4GluOf2lHnFqjrOZW2oMgNOvxB3qoLV4TUf70S/E2XHeP6PUdjCKItX8C7GQPg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm-gnueabihf": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm-gnueabihf/-/jieba-linux-arm-gnueabihf-1.10.3.tgz", + "integrity": "sha512-UFB43kDOvqmbRl99e3GPwaTuwJZaAvgLaMTvBkmxww4MpQH6G1k31RLzMW/S21uSQso2lj6W/Mm59gaJk2FiyA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-gnu": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-gnu/-/jieba-linux-arm64-gnu-1.10.3.tgz", + "integrity": "sha512-bu++yWi10wZtnS5uLcwxzxKmHVT77NgQMK8JiQr1TWCl3Y1Th7CnEHQtxfVB489edDK8l644h1/4zSTe5fRnOQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-arm64-musl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-arm64-musl/-/jieba-linux-arm64-musl-1.10.3.tgz", + "integrity": "sha512-pJh+SzrK1HaKakhdFM+ew9vXwpZqMxy9u0U7J4GT+3GvOwnAZ+KjeaHebIfgOz7ZHvp/T4YBNf8oWW4zwj3AJw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-gnu": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-gnu/-/jieba-linux-x64-gnu-1.10.3.tgz", + "integrity": "sha512-GF5cfvu/0wXO2fVX/XV3WYH/xEGWzMBvfqLhGiA1OA1xHIufnA1T7uU3ZXkyoNi5Bzf6dmxnwtE4CJL0nvhwjQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-linux-x64-musl": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-linux-x64-musl/-/jieba-linux-x64-musl-1.10.3.tgz", + "integrity": "sha512-h45HMVU/hgzQ0saXNsK9fKlGdah1i1cXZULpB5vQRlRL2ZIaGp+ULtWTogS7vkoo2K8s2l4tqakWMg9eUjIJ2A==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-wasm32-wasi": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-wasm32-wasi/-/jieba-wasm32-wasi-1.10.3.tgz", + "integrity": "sha512-vuoQ62vVoedNGcBmIi4UWdtNBOZG8B+vDYfjx3FD6rNg6g/RgwbVjYXbOVMOQwX06Ob9CfrutICXdUGHgoxzEQ==", + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.3" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@node-rs/jieba-win32-arm64-msvc": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-arm64-msvc/-/jieba-win32-arm64-msvc-1.10.3.tgz", + "integrity": "sha512-B8t4dh56TZnMLBoYWDkopf1ed37Ru/iU1qiIeBkbZWXGmNBChNZUOd//eaPOFjx8m9Sfc8bkj3FBRWt/kTAhmw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-ia32-msvc": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-ia32-msvc/-/jieba-win32-ia32-msvc-1.10.3.tgz", + "integrity": "sha512-SKuPGZJ5T+X4jOn1S8LklOSZ6HC7UBiw0hwi2z9uqX6WgElquLjGi/xfZ2gPqffeR/5K/PUu7aqYUUPL1XonVQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@node-rs/jieba-win32-x64-msvc": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/@node-rs/jieba-win32-x64-msvc/-/jieba-win32-x64-msvc-1.10.3.tgz", + "integrity": "sha512-j9I4+a/tf2hsLu8Sr0NhcLBVNBBQctO2mzcjemMpRa1SlEeODyic9RIyP8Ljz3YTN6MYqKh1KA9iR1xvxjxYFg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@types/mdx": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - }, - "peerDependencies": { - "@types/react": ">=16", - "react": ">=16" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" } }, "node_modules/@nodelib/fs.scandir": { @@ -3226,6 +4212,70 @@ "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "license": "MIT" }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -3554,6 +4604,16 @@ "node": ">=10.13.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/acorn": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", @@ -5108,6 +6168,57 @@ "node": ">=8" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -6108,6 +7219,15 @@ "node": ">=6" } }, + "node_modules/docusaurus-plugin-dotenv": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-dotenv/-/docusaurus-plugin-dotenv-1.0.1.tgz", + "integrity": "sha512-qKlWuBd6UoyB0d5ExH9waYGPoy1SnWgV8s8VLg12ydcfxquazXJngV0N5VAX/HuFiZmsPD3L4TYUKxdHWJTeEw==", + "license": "MIT", + "dependencies": { + "dotenv-webpack": "7.0.2" + } + }, "node_modules/dom-converter": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", @@ -6206,6 +7326,39 @@ "node": ">=8" } }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-defaults": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dotenv-defaults/-/dotenv-defaults-2.0.2.tgz", + "integrity": "sha512-iOIzovWfsUHU91L5i8bJce3NYK5JXeAwH50Jh6+ARUdLiiGlYWfGw6UkzsYqaXZH/hjE/eCd/PlfM/qqyK0AMg==", + "license": "MIT", + "dependencies": { + "dotenv": "^8.2.0" + } + }, + "node_modules/dotenv-webpack": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/dotenv-webpack/-/dotenv-webpack-7.0.2.tgz", + "integrity": "sha512-RY+/5uM/XY4bGtih9f9ic8hlrUDxVcZZBPWlnX/aHhaKxcVVX9SH/5VH7CSmvVo9GL6PKvQOA0X1bc552rnatQ==", + "license": "MIT", + "dependencies": { + "dotenv-defaults": "^2.0.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "webpack": "^4 || ^5" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -6270,6 +7423,31 @@ "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, + "node_modules/encoding-sniffer/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", @@ -6941,6 +8119,41 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/firebase": { + "version": "10.13.2", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.13.2.tgz", + "integrity": "sha512-YeI+TO5rJsoyZsVFx9WiN5ibdVCIigYTWwldRTMfCzrSPrJFVGao4acYj3x0EYGKDIgSgEyVBayD5BffD4Eyow==", + "license": "Apache-2.0", + "dependencies": { + "@firebase/analytics": "0.10.8", + "@firebase/analytics-compat": "0.2.14", + "@firebase/app": "0.10.11", + "@firebase/app-check": "0.8.8", + "@firebase/app-check-compat": "0.3.15", + "@firebase/app-compat": "0.2.41", + "@firebase/app-types": "0.9.2", + "@firebase/auth": "1.7.9", + "@firebase/auth-compat": "0.5.14", + "@firebase/database": "1.0.8", + "@firebase/database-compat": "1.0.8", + "@firebase/firestore": "4.7.2", + "@firebase/firestore-compat": "0.3.37", + "@firebase/functions": "0.11.8", + "@firebase/functions-compat": "0.3.14", + "@firebase/installations": "0.6.9", + "@firebase/installations-compat": "0.2.9", + "@firebase/messaging": "0.12.11", + "@firebase/messaging-compat": "0.2.11", + "@firebase/performance": "0.6.9", + "@firebase/performance-compat": "0.2.9", + "@firebase/remote-config": "0.4.9", + "@firebase/remote-config-compat": "0.2.9", + "@firebase/storage": "0.13.2", + "@firebase/storage-compat": "0.3.12", + "@firebase/util": "1.10.0", + "@firebase/vertexai-preview": "0.0.4" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -7204,6 +8417,15 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", @@ -8101,6 +9323,12 @@ "postcss": "^8.1.0" } }, + "node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", + "license": "ISC" + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -8125,6 +9353,12 @@ "node": ">=16.x" } }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "license": "MIT" + }, "node_modules/immer": { "version": "9.0.21", "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", @@ -8720,6 +9954,15 @@ "node": ">=0.10.0" } }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -8825,6 +10068,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "license": "MIT" + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", @@ -8843,6 +10092,12 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "license": "MIT" }, + "node_modules/long": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "license": "Apache-2.0" + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -8895,6 +10150,24 @@ "yallist": "^3.0.2" } }, + "node_modules/lunr": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", + "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", + "license": "MIT" + }, + "node_modules/lunr-languages": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.14.0.tgz", + "integrity": "sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==", + "license": "MPL-1.1" + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "license": "MIT" + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -11730,6 +13003,18 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", + "license": "MIT", + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -12618,6 +13903,30 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "license": "ISC" }, + "node_modules/protobufjs": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -13465,6 +14774,15 @@ "entities": "^2.0.0" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -14760,6 +16078,15 @@ "node": ">=14.17" } }, + "node_modules/undici": { + "version": "6.19.7", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.7.tgz", + "integrity": "sha512-HR3W/bMGPSr90i8AAp2C4DM3wChFdJPLrWYpIS++LxS8K+W535qftjt+4MyjNYHeWabMj1nvtmLIi7l++iq91A==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, "node_modules/undici-types": { "version": "6.18.2", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.18.2.tgz", @@ -15659,6 +16986,39 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -15814,6 +17174,15 @@ "xml-js": "bin/cli.js" } }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -15829,6 +17198,53 @@ "node": ">= 6" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", diff --git a/package.json b/package.json index d2f33f4..00c1dba 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,11 @@ "@docusaurus/core": "3.5.2", "@docusaurus/plugin-google-gtag": "^3.5.2", "@docusaurus/preset-classic": "3.5.2", + "@easyops-cn/docusaurus-search-local": "^0.44.5", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", + "docusaurus-plugin-dotenv": "^1.0.1", + "firebase": "^10.13.2", "prism-react-renderer": "^2.3.0", "react": "^18.0.0", "react-dom": "^18.0.0" diff --git a/sidebars.js b/sidebars.js index 8246c4e..fb5f32f 100644 --- a/sidebars.js +++ b/sidebars.js @@ -14,7 +14,7 @@ /** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ const sidebars= { // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: 'drives'}], + tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], // But you can create a sidebar manually /* diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js index f7b8e9b..ba10e86 100644 --- a/src/components/HomepageFeatures/index.js +++ b/src/components/HomepageFeatures/index.js @@ -8,16 +8,16 @@ const FeatureList = [ Svg: require("@site/static/img/design-sprint.svg").default, description: ( <> - Built to allow users to easily navigate a vast array of documents, and material irrespective of their computer literacy. + Built to allow users to easily navigate a vast array of documents and materials irrespective of their computer literacy. ), }, { - title: "Maintained by fellows", + title: "Maintained by Fellows", Svg: require("@site/static/img/pair-programming.svg").default, description: ( <> - Your contributions aid and assits your fellow collegues and others who are to come in a distant future. + Your contributions aid and assist your fellow colleagues and others who are to come in the distant future. ), }, @@ -26,7 +26,7 @@ const FeatureList = [ Svg: require("@site/static/img/multilingual.svg").default, description: ( <> - The archive is constantly growing in size and as contribtuions are made a blank section today a maze another day. + The archive is constantly growing in size, and as contributions are made, a blank section today may become a maze another day. ), }, @@ -34,12 +34,12 @@ const FeatureList = [ function Feature({ Svg, title, description }) { return ( -
+
- {title} + {title}

{description}

@@ -50,7 +50,7 @@ export default function HomepageFeatures() { return (
-
+
{FeatureList.map((props, idx) => ( ))} @@ -58,4 +58,4 @@ export default function HomepageFeatures() {
); -} \ No newline at end of file +} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css index 609ca15..5113678 100644 --- a/src/components/HomepageFeatures/styles.module.css +++ b/src/components/HomepageFeatures/styles.module.css @@ -1,13 +1,45 @@ -/* Add keyframes for animation */ -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } +/* General Features Styling */ +.features { + padding: 4rem 0; + display: flex; + justify-content: center; +} + +.featureList { + display: flex; + flex-direction: column; /* Align features vertically */ + gap: 2rem; /* Add spacing between each feature */ +} + +.feature { + padding: 2rem; + border: 1px solid #e0e0e0; /* Light border to distinguish each feature */ + border-radius: 10px; + box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.1); /* Subtle shadow */ + background-color: white; /* Ensure it blends with the page */ + transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out; + text-align: center; +} + +.feature:hover { + transform: translateY(-5px); /* Slight lift on hover */ + box-shadow: 0px 10px 20px rgba(0, 0, 0, 0.15); /* Slightly stronger shadow on hover */ } +.featureSvg { + height: 150px; + width: 150px; + animation: scaleUp 0.6s ease-out; /* Smooth scaling animation */ +} + +.featureTitle { + color: #6a0dad; /* Use the purple accent */ + margin-bottom: 1rem; + font-size: 1.5rem; + font-weight: bold; +} + +/* Keyframes for Animation */ @keyframes scaleUp { from { transform: scale(0.8); @@ -17,18 +49,21 @@ } } -/* Apply fade-in animation to the features container */ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; - animation: fadeIn 1s ease-in-out; /* Animation for fading in */ +/* Responsive Design */ +@media (max-width: 768px) { + .featureSvg { + height: 130px; + width: 130px; + } } -/* Apply scale-up animation to the featureSvg */ -.featureSvg { - height: 200px; - width: 200px; - animation: scaleUp 0.6s ease-out; /* Animation for scaling up */ +@media (max-width: 480px) { + .featureTitle { + font-size: 1.3rem; + } + + .featureSvg { + height: 110px; + width: 110px; + } } diff --git a/src/css/custom.css b/src/css/custom.css index 76fe767..de86317 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1,3 +1,141 @@ +/* custom.css */ +.customButtons:hover { + background-color: #e0e0e0; /* Slightly darker gray on hover */ + transform: scale(1.01); /* Slight zoom on hover */ +} + +/* Base button style */ +.customButton { + background-color: #f0f0f0; /* Light gray background */ + color: #333; /* Dark gray text */ + padding: 12px 24px; /* Padding for the button */ + border: none; /* No border */ + border-radius: 5px; /* Rounded corners */ + cursor: pointer; /* Pointer cursor on hover */ + transition: background-color 0.3s ease, transform 0.2s ease; /* Smooth transition */ + position: relative; /* Relative positioning for dropdown */ +} + +/* Hover effect for button */ +.customButton:hover { + background-color: #e0e0e0; /* Slightly darker gray on hover */ + transform: scale(1.05); /* Slight zoom on hover */ +} + +/* Active/Pressed state */ +.customButton:active { + background-color: #d0d0d0; /* Darker gray on press */ + box-shadow: 0 5px #aaa; /* Shadow on press */ + transform: translateY(4px); /* Button moves slightly down */ +} + +/* Dropdown content (hidden by default) */ +.customButton .dropdown-content { + display: none; /* Hidden initially */ + position: absolute; /* Positioned relative to button */ + background-color: #ffffff; /* White background for dropdown */ + box-shadow: 0px 8px 16px 0px rgba(0, 0, 0, 0.2); /* Dropdown shadow */ + padding: 12px 16px; /* Padding inside dropdown */ + z-index: 1; /* Ensure dropdown is on top */ + top: 100%; /* Position below the button */ + left: 0; + width: 100%; /* Full width of the button */ +} + +/* Show dropdown content when button is selected */ +.customButton.selected .dropdown-content { + display: block; /* Make visible */ + animation: fadeIn 0.3s ease; /* Smooth fade-in effect */ +} + +/* Dropdown item styling */ +.customButton .dropdown-content a { + color: #666; /* Darker gray for dropdown item text */ + padding: 8px 12px; /* Padding for dropdown items */ + text-decoration: none; /* No underline */ + display: block; /* Block-level item */ + transition: background-color 0.3s ease; /* Smooth background transition */ +} + +/* Hover effect for dropdown items */ +.customButton .dropdown-content a:hover { + background-color: #f5f5f5; /* Light gray on hover */ + color: #333; /* Keep text color consistent */ +} + +/* Style for selected child (dropdown item) */ +.customButton .dropdown-content a.selected { + background-color: var(--ifm-color-primary-light); /* Highlight the selected item */ + color: #ffffff; /* White text for the selected item */ +} + +/* Animation for fade-in effect */ +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +/**/ +/* Apply the Poppins font and make the text bigger for footer links */ +footer { + font-family: 'Poppins', sans-serif; /* Custom font */ + + + padding: 50px 0; +} + +footer h4 { + text-align: center; + font-size: 1.5rem; /* Bigger title text */ + font-weight: 600; + margin-bottom: 15px; +} + +footer a { + + font-size: 1.2rem; /* Bigger link text */ + text-decoration: none; + font-weight: 500; /* Medium weight for links */ + transition: color 0.3s ease, transform 0.3s ease; + display: inline-block; + padding: 5px 0; +} + +footer a:hover { + + transform: scale(1.05); /* Subtle zoom effect on hover */ +} + +footer p { + text-align: center; + font-size: 0.95rem; + margin-top: 15px; + font-weight: 400; +} + +.footer__links { + display: flex; + justify-content: center; + gap: 60px; + text-align: left; +} + +.footer__links div { + text-align: center; +} + +footer .footer__bottom { + margin-top: 30px; + text-align: center; +} + +/* Add unique styling for the footer copyright notice */ +footer .footer__bottom p { + font-size: 1rem; + color: #b0b0b0; + margin-top: 20px; +} + /** * Any CSS included here will be global. The classic template * bundles Infima by default. Infima is a CSS framework designed to @@ -7,6 +145,51 @@ /* You can override the default Infima variables here. */ +/* src/css/custom.css */ + +/* Center the navbar items */ +.navbar { + display: flex; + justify-content: center; /* Centering items */ + padding: 0 50px; /* Add padding to the sides */ +} + +/* Style for navbar items */ +.navbar__item { + padding: 0 15px; /* Optional: Add padding to individual items */ +} + +/* Add shadow to the navbar */ +.navbar { + box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* Customize shadow */ +} + +/* Optional: Adjust navbar height */ +.navbar__inner { + min-height: 60px; /* Adjust height as needed */ +} +.custom-navbar-item { + color: #4248d6; /* Primary color for text */ + background-color: transparent; /* Transparent background */ + padding: 8px 18px; /* Slightly reduced padding to account for border */ + border-radius: 5px; /* Rounded corners */ + border: 2px solid #4248d6; /* Border matching text color */ + transition: background-color 0.3s, color 0.3s; /* Smooth transition for hover */ +} + +/* Change background color on hover */ +.custom-navbar-item:hover { + background-color: rgba(66, 72, 214, 0.1); /* Slight background color on hover */ + color: #2d33cf; /* Slightly darker text color on hover */ +} + +/* Customize active item styles */ +.custom-navbar-item-active { + font-weight: bold; /* Make active item bold */ + border-bottom: 2px solid #f00c0c; /* Red underline for active item */ + background-color: rgba(66, 72, 214, 0.2); /* Slightly more noticeable background for active item */ + color: #2a31c4; /* Slightly darker text color for the active item */ +} /* :root { --ifm-color-primary: #2e8555; --ifm-color-primary-dark: #29784c; @@ -19,6 +202,7 @@ --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); } */ :root { + /* Existing color palette */ --ifm-color-primary: #4248d6; --ifm-color-primary-dark: #2d33cf; --ifm-color-primary-darker: #2a31c4; @@ -26,9 +210,37 @@ --ifm-color-primary-light: #595edb; --ifm-color-primary-lighter: #6569dd; --ifm-color-primary-lightest: #878be5; - --ifm-footer-background-color: #132521; + --ifm-footer-background-color: #d1d2e4; + + /* Search modal customizations */ + --search-local-modal-background: #f5f6f7; /* Keeping the light background */ + --search-local-modal-background-dark: var(--ifm-color-primary-dark); /* Dark background based on primary color */ + --search-local-modal-shadow: inset 1px 1px 0 0 hsla(0, 0%, 100%, 0.5), + 0 3px 8px 0 #555a64; /* Shadow using a neutral tone */ + --search-local-modal-shadow-dark: inset 1px 1px 0 0 #2a31c4, + 0 3px 8px 0 #2328a1; /* Dark shadow based on primary darker and darkest colors */ + --search-local-modal-width: 560px; + --search-local-modal-width-sm: 340px; + --search-local-spacing: 12px; + --search-local-hit-background: #fff; /* Keeping the hit background light */ + --search-local-hit-background-dark: var(--ifm-color-primary-lightest); /* Dark mode hit background using primary lightest */ + --search-local-hit-shadow: 0 1px 3px 0 #d4d9e1; /* Light shadow */ + --search-local-hit-shadow-dark: none; /* No shadow for dark mode */ + --search-local-hit-color: #444950; /* Keeping the default dark color */ + --search-local-hit-color-dark: var(--ifm-color-primary-light); /* Using primary light color for dark mode hit text */ + --search-local-hit-height: 56px; + --search-local-highlight-color: var(--ifm-color-primary); /* Matching the highlight color to the primary color */ + --search-local-muted-color: #969faf; /* Keeping the muted color */ + --search-local-muted-color-dark: var(--ifm-color-primary-darker); /* Darker muted color */ + --search-local-icon-stroke-width: 1.4; + --search-local-hit-active-color: var(--ifm-color-white); /* Keeping active hit color white for contrast */ + + /* Example of overriding */ + --search-local-modal-width: 480px; + --search-local-highlight-color: #5468ff; /* Custom override for highlight color */ } + /* For readability concerns, you should choose a lighter palette in dark mode. */ /* [data-theme='dark'] { --ifm-color-primary: #25c2a0; @@ -42,13 +254,14 @@ } */ [data-theme='dark'] { - --ifm-color-primary: #8a8fe6; - --ifm-color-primary-dark: #6c72e0; - --ifm-color-primary-darker: #5d63dc; - --ifm-color-primary-darkest: #2f38d3; - --ifm-color-primary-light: #a8acec; - --ifm-color-primary-lighter: #b7bbf0; - --ifm-color-primary-lightest: #e5e6f9; + --ifm-color-primary: #4248d6; + --ifm-color-primary-dark: #2d33cf; + --ifm-color-primary-darker: #2a31c4; + --ifm-color-primary-darkest: #2328a1; + --ifm-color-primary-light: #595edb; + --ifm-color-primary-lighter: #6569dd; + --ifm-color-primary-lightest: #878be5; + --ifm-footer-background-color: #d1d2e4; } diff --git a/src/css/login.module.css b/src/css/login.module.css new file mode 100644 index 0000000..bae8773 --- /dev/null +++ b/src/css/login.module.css @@ -0,0 +1,637 @@ +/* Global Styles */ +.login { + font-family: 'Roboto', sans-serif; + background-color: #f5f5f7; /* Light background */ + color: #222; /* Darker text for better contrast */ + min-height: 100vh; + padding: 2rem 0; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100vh; + padding: 1rem; + position: relative; +} + +/* Container */ +.loginContainer { + background-color: rgba(255, 255, 255, 0.95); + padding: 3rem; + border-radius: 10px; + box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.15); + text-align: center; + max-width: 600px; + width: 100%; + transition: all 0.5s ease-in-out; + opacity: 0; + transform: translateY(30px); + position: relative; + z-index: 1; +} + +.login.animate .loginContainer { + opacity: 1; + transform: translateY(0); +} + +/* Heading */ +.loginHeading { + font-size: 2.5rem; + color: #8040ff; /* Slightly darker purple accent */ + margin-bottom: 1rem; + font-weight: 700; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +/* Subheading */ +.loginSubheading { + font-size: 1.2rem; + color: #444; + margin-bottom: 2rem; +} + +/* Features */ +.loginFeatures { + margin-bottom: 2rem; + text-align: center; /* Center-aligned features */ +} + +.loginFeatures h2 { + color: #8040ff; + margin-bottom: 1rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +.loginFeatures ul { + list-style-type: none; + padding-left: 0; /* Remove left padding for center alignment */ +} + +.loginFeatures li { + margin-bottom: 0.75rem; + color: #222; +} + +/* Trial */ +.loginTrial { + background-color: #f0e6ff; + padding: 1rem; + border-radius: 10px; + margin-bottom: 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.loginTrial h3 { + color: #8040ff; + margin-bottom: 0.5rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +/* Pricing */ +.loginPricing { + margin-bottom: 2rem; +} + +.loginPricing h3 { + color: #8040ff; + margin-bottom: 0.5rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +.loginPricing small { + display: block; + margin-top: 0.5rem; + color: #444; +} + +/* Google Button */ +.loginBtn { + font-size: 1.1rem; + background-color: #8040ff; + color: white; + padding: 0.9rem 2rem; + border: none; + border-radius: 50px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.4s ease; + display: flex; + align-items: center; + justify-content: center; + gap: 0.75rem; + margin: 0 auto; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +.loginBtn:hover { + background-color: #9560ff; + transform: scale(1.08); +} + +.loginGoogle i { + font-size: 1.3rem; +} + +/* Links */ +.loginLink { + color: #8040ff; + text-decoration: none; + font-weight: 500; + transition: color 0.3s ease; +} + +.loginLink:hover { + color: #9560ff; + text-decoration: underline; +} + +/* Info Text */ +.loginInfo { + margin-top: 2rem; + font-size: 0.9rem; + color: #444; +} + +/* Small Text */ +.loginSmallText { + margin-top: 1rem; + font-size: 0.85rem; + color: #444; +} + +/* Background Animation */ +.backgroundAnimation { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 0; +} + +.floatingItem { + position: absolute; + width: 40px; + height: 40px; + background-color: rgba(128, 64, 255, 0.2); + border-radius: 50%; + animation: float 10s infinite ease-in-out; +} + +.floatingItem:nth-child(2n) { + width: 30px; + height: 30px; + animation-duration: 12s; +} + +.floatingItem:nth-child(3n) { + width: 50px; + height: 50px; + animation-duration: 14s; +} + +@keyframes float { + 0% { + transform: translate(0, 0) rotate(0deg); + opacity: 0; + } + 20% { + opacity: 1; + } + 50% { + transform: translate(100px, -50px) rotate(360deg); + } + 100% { + transform: translate(100vw, -100vh) rotate(720deg); + opacity: 0; + } +} + +/* Rain Animation */ +.rain { + position: fixed; + top: -100px; + left: 0; + width: 100%; + height: 100%; + z-index: 0; + pointer-events: none; +} + +.raindrop { + position: absolute; + width: 2px; + height: 15px; + background-color: rgba(128, 64, 255, 0.5); /* Darker rain */ + animation: rain-fall linear infinite; +} + +@keyframes rain-fall { + 0% { + transform: translateY(-100px); + } + 100% { + transform: translateY(calc(100vh + 100px)); + } +} + +/* Pulse Animation for Login Button */ +@keyframes pulse { + 0% { + box-shadow: 0 0 0 0 rgba(128, 64, 255, 0.4); + } + 70% { + box-shadow: 0 0 0 10px rgba(128, 64, 255, 0); + } + 100% { + box-shadow: 0 0 0 0 rgba(128, 64, 255, 0); + } +} + +.loginBtn { + animation: pulse 2s infinite; +} + +/* Fade-in Animation for Features */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.loginFeatures li { + animation: fadeIn 0.5s ease-out forwards; + opacity: 0; +} + +.loginFeatures li:nth-child(1) { animation-delay: 0.2s; } +.loginFeatures li:nth-child(2) { animation-delay: 0.4s; } +.loginFeatures li:nth-child(3) { animation-delay: 0.6s; } +.loginFeatures li:nth-child(4) { animation-delay: 0.8s; } + +/* Responsive Design */ +@media (max-width: 768px) { + .loginContainer { + padding: 2rem; + max-width: 90%; + } + .loginHeading { + font-size: 2rem; + } + .loginSubheading { + font-size: 1rem; + } + .loginBtn { + padding: 0.8rem 1.5rem; + font-size: 1rem; + } + .loginInfo, + .loginSmallText { + font-size: 0.8rem; + } +} + +@media (max-width: 480px) { + .loginHeading { + font-size: 1.8rem; + } + .loginSubheading { + font-size: 0.95rem; + } + .loginBtn { + padding: 0.7rem 1.2rem; + font-size: 0.95rem; + } + .loginInfo, + .loginSmallText { + font-size: 0.75rem; + } +} + +.authenticatedView { + /* Add styles for the authenticated view if needed */ +}/* Global Styles */ +.login { + font-family: 'Roboto', sans-serif; + background-color: #f5f5f7; /* Light background */ + color: #222; /* Darker text for better contrast */ + min-height: 100vh; + padding: 2rem 0; + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100vh; + padding: 1rem; + position: relative; +} + +/* Container */ +.loginContainer { + background-color: rgba(255, 255, 255, 0.95); + padding: 3rem; + border-radius: 10px; + box-shadow: 0px 15px 30px rgba(0, 0, 0, 0.15); + text-align: center; + max-width: 600px; + width: 100%; + transition: all 0.5s ease-in-out; + opacity: 0; + transform: translateY(30px); + position: relative; + z-index: 1; +} + +.login.animate .loginContainer { + opacity: 1; + transform: translateY(0); +} + +/* Heading */ +.loginHeading { + font-size: 2.5rem; + color: #8040ff; /* Slightly darker purple accent */ + margin-bottom: 1rem; + font-weight: 700; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +/* Subheading */ +.loginSubheading { + font-size: 1.2rem; + color: #444; + margin-bottom: 2rem; +} + +/* Features */ +.loginFeatures { + margin-bottom: 2rem; + text-align: center; /* Center-aligned features */ +} + +.loginFeatures h2 { + color: #8040ff; + margin-bottom: 1rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +.loginFeatures ul { + list-style-type: none; + padding-left: 0; /* Remove left padding for center alignment */ +} + +.loginFeatures li { + margin-bottom: 0.75rem; + color: #222; +} + +/* Trial */ +.loginTrial { + background-color: #f0e6ff; + padding: 1rem; + border-radius: 10px; + margin-bottom: 2rem; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.loginTrial h3 { + color: #8040ff; + margin-bottom: 0.5rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +/* Pricing */ +.loginPricing { + margin-bottom: 2rem; +} + +.loginPricing h3 { + color: #8040ff; + margin-bottom: 0.5rem; + text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); +} + +.loginPricing small { + display: block; + margin-top: 0.5rem; + color: #444; +} + +/* Google Button */ +.loginBtn { + font-size: 1.1rem; + background-color: #8040ff; + color: white; + padding: 0.9rem 2rem; + border: none; + border-radius: 50px; + cursor: pointer; + transition: background-color 0.3s ease, transform 0.4s ease; + display: flex; + align-items: center; + justify-content: center; + gap: 0.75rem; + margin: 0 auto; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); +} + +.loginBtn:hover { + background-color: #9560ff; + transform: scale(1.08); +} + +.loginGoogle i { + font-size: 1.3rem; +} + +/* Links */ +.loginLink { + color: #8040ff; + text-decoration: none; + font-weight: 500; + transition: color 0.3s ease; +} + +.loginLink:hover { + color: #9560ff; + text-decoration: underline; +} + +/* Info Text */ +.loginInfo { + margin-top: 2rem; + font-size: 0.9rem; + color: #444; +} + +/* Small Text */ +.loginSmallText { + margin-top: 1rem; + font-size: 0.85rem; + color: #444; +} + +/* Background Animation */ +.backgroundAnimation { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + z-index: 0; +} + +.floatingItem { + position: absolute; + width: 40px; + height: 40px; + background-color: rgba(128, 64, 255, 0.2); + border-radius: 50%; + animation: float 10s infinite ease-in-out; +} + +.floatingItem:nth-child(2n) { + width: 30px; + height: 30px; + animation-duration: 12s; +} + +.floatingItem:nth-child(3n) { + width: 50px; + height: 50px; + animation-duration: 14s; +} + +@keyframes float { + 0% { + transform: translate(0, 0) rotate(0deg); + opacity: 0; + } + 20% { + opacity: 1; + } + 50% { + transform: translate(100px, -50px) rotate(360deg); + } + 100% { + transform: translate(100vw, -100vh) rotate(720deg); + opacity: 0; + } +} + +/* Rain Animation */ +.rain { + position: fixed; + top: -100px; + left: 0; + width: 100%; + height: 100%; + z-index: 0; + pointer-events: none; +} + +.raindrop { + position: absolute; + width: 2px; + height: 15px; + background-color: rgba(128, 64, 255, 0.5); /* Darker rain */ + animation: rain-fall linear infinite; +} + +@keyframes rain-fall { + 0% { + transform: translateY(-100px); + } + 100% { + transform: translateY(calc(100vh + 100px)); + } +} + +/* Pulse Animation for Login Button */ +@keyframes pulse { + 0% { + box-shadow: 0 0 0 0 rgba(128, 64, 255, 0.4); + } + 70% { + box-shadow: 0 0 0 10px rgba(128, 64, 255, 0); + } + 100% { + box-shadow: 0 0 0 0 rgba(128, 64, 255, 0); + } +} + +.loginBtn { + animation: pulse 2s infinite; +} + +/* Fade-in Animation for Features */ +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.loginFeatures li { + animation: fadeIn 0.5s ease-out forwards; + opacity: 0; +} + +.loginFeatures li:nth-child(1) { animation-delay: 0.2s; } +.loginFeatures li:nth-child(2) { animation-delay: 0.4s; } +.loginFeatures li:nth-child(3) { animation-delay: 0.6s; } +.loginFeatures li:nth-child(4) { animation-delay: 0.8s; } + +/* Responsive Design */ +@media (max-width: 768px) { + .loginContainer { + padding: 2rem; + max-width: 90%; + } + .loginHeading { + font-size: 2rem; + } + .loginSubheading { + font-size: 1rem; + } + .loginBtn { + padding: 0.8rem 1.5rem; + font-size: 1rem; + } + .loginInfo, + .loginSmallText { + font-size: 0.8rem; + } +} + +@media (max-width: 480px) { + .loginHeading { + font-size: 1.8rem; + } + .loginSubheading { + font-size: 0.95rem; + } + .loginBtn { + padding: 0.7rem 1.2rem; + font-size: 0.95rem; + } + .loginInfo, + .loginSmallText { + font-size: 0.75rem; + } +} + +.authenticatedView { + /* Add styles for the authenticated view if needed */ +} \ No newline at end of file diff --git a/src/pages/index.js b/src/pages/index.js index 1f7666f..3617f43 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -1,82 +1,98 @@ - import clsx from "clsx"; import Link from "@docusaurus/Link"; import useDocusaurusContext from "@docusaurus/useDocusaurusContext"; import Layout from "@theme/Layout"; import HomepageFeatures from "@site/src/components/HomepageFeatures"; - import Heading from "@theme/Heading"; import styles from "./index.module.css"; -import "../css/custom.css"; import heroImage from "../../static/img/header-img.png"; function HomepageHeader() { return (
-
-
- -
- - Biust Insight Project +
+ + Biust Insight Project -

- The project is based on developing an a vast sustainable archive of documents and data. A comprehensive collection of matter ranging from student notes ,tests , lab reports and exams. -

- - Motives Behind The Project -

-

    -
  • A proof that the current libary system is overcomplicated
  • -
  • To flex on my fellow collegues 🙃🙃
  • -
  • To learn and dicover techonologies and challanges related to web development
  • -
- -

- About Me -

- -

- -
-
Desiree CH
- Always Thinking About Code -
-
+

+ The project is based on developing a vast sustainable archive of documents and data. A comprehensive collection of matter ranging from student notes, tests, lab reports, and exams.

+ Motives Behind The Project +
    +
  • A proof that the current library system is overcomplicated
  • +
  • To flex on my fellow colleagues 🙃🙃
  • +
  • To learn and discover technologies and challenges related to web development
  • +
+
+ Avatar +
+ +
Maintained by
Desiree C
+ Always Thinking About Code | Comp Sci Major | Year 2 +
+
- - - Explore + Explore
-
- at something -
+
); } +function AdditionalContent() { + return ( +
+
+

Document Archive

+

Access a wide collection of past tests, exams, and lecture notes to support your studies.

+ Archive +
+ +
+

School Events

+

Stay updated with the latest events happening on campus, from academic forums to social gatherings.

+ Events +
+ +
+

Lecture of the Month

+

Highlighting a lecture that made an impact—revisit key concepts and discussions.

+ Lecture +
+ +
+

Ongoing Projects

+

Discover student and faculty projects that are shaping the future of technology and research.

+ Projects +
+
+ ); +} + export default function Home() { const { siteConfig } = useDocusaurusContext(); return ( -
+
+ +
); -} \ No newline at end of file +} diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 6eb342b..ddc35af 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -1,85 +1,228 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ +/* Overall styles for the hero section */ +.heroBanner { + padding: 4rem 2rem; + text-align: center; + background-color: #f4f4fc; /* Light purple background */ + color: #333; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + position: relative; +} + +.heroContent { + max-width: 20000px; /* Increased from 800px */ + width: 90%; + text-align: left; + margin: 0 auto; + background-color: white; + border-radius: 20px; + padding: 3rem; /* Increased padding */ + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1); +} + +.heroTitle { + font-size: 3rem; /* Increased from 2.5rem */ + margin-bottom: 1.5rem; + color: #6a0dad; /* Dark purple color */ +} +.heroSubtitle { + font-size: 1.2rem; /* Slightly increased */ + margin: 1.5rem 0; + line-height: 1.6; + color: #5a5a8a; /* Light purple color */ +} -/* .heroBanner { - padding: 1rem 0; +.heroList { + list-style-type: none; + padding: 0; + margin: 2rem 0; text-align: left; - position: relative; - overflow: hidden; - display: flex; - justify-content: space-between; - -} */ +} +.heroList li { + margin-bottom: 0.75rem; + padding-left: 1.5rem; + position: relative; +} -/* @media screen and (max-width: 996px) { - .heroBanner { - padding: 2rem; - } -} */ +.heroList li::before { + content: '•'; + position: absolute; + left: 0; + color: #3498db; /* Accent color */ +} -.buttons { - +.avatarContainer { + display: flex; + align-items: center; + margin-top: 2.5rem; + background-color: #ecf0f1; + border-radius: 15px; + padding: 1.5rem; + width: 100%; +} + +.avatarPhoto { + width: 100px; /* Increased from 80px */ + height: 100px; /* Increased from 80px */ + border-radius: 50%; + margin-right: 1.5rem; + border: 3px solid #4248d6; +} + +.avatarIntro { display: flex; - align-items: left; - justify-content: left; + flex-direction: column; +} + +.avatarSubtitle { + font-size: 1rem; + color: #7f8c8d; } -@media screen and (max-width: 996px) { - + .buttons { + margin-top: 2.5rem; display: flex; - align-items: center; - justify-content: center; - padding-top: 20px; + justify-content: flex-start; } + +.exploreButton { + background-color: #c7c7c7ce; + color: white; + padding: 1rem 2rem; /* Increased padding */ + border-radius: 10px; + transition: background-color 0.3s ease, transform 0.2s ease; + font-weight: bold; + text-decoration: none; + font-size: 1.1rem; /* Slightly larger font */ } -/* Define keyframes for animation */ -@keyframes fadeInUp { - from { - opacity: 0; - transform: translateY(20px); /* Start 20px below */ - } - to { - opacity: 1; - transform: translateY(0); /* End at the original position */ - } +.exploreButton:hover { + background-color: #4248d6; + transform: translateY(-2px); +} + +/* Hero image section */ +.heroImage { + margin-top: 4rem; + background-color: white; + border-radius: 20px; + padding: 2rem; + box-shadow: 0 8px 30px rgba(0, 0, 0, 0.1); + width: 90%; + max-width: 1000px; +} + +.heroImage img { + max-width: 100%; + height: auto; + border-radius: 10px; +} + +/* Main content area */ +.mainContent { + padding: 5rem 2rem; + background-color: #f8f9fa; +} + +/* Additional content boxes */ +.additionalContent { + display: flex; + flex-wrap: wrap; + justify-content: space-around; + margin-top: 4rem; } -/* Apply styles to the unordered list */ -.hero__subtitle ul { - list-style-type: disc; /* You can choose different list styles */ - padding-left: 20px; /* Adjust as needed */ +.contentBox { + background-color: white; + border-radius: 10px; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); + margin: 1.5rem; + padding: 2rem; + text-align: center; + width: 300px; + transition: transform 0.3s ease, opacity 0.5s ease; + opacity: 0; + transform: translateY(20px); } -/* Apply styles to the list items */ -.hero__subtitle li { - padding-left: 20px; - margin-bottom: 10px; /* Space between items */ - opacity: 0; /* Start invisible */ - animation: fadeInUp 0.6s ease-out forwards; /* Apply animation */ +.contentBox img { + max-width: 100%; + height: auto; + border-radius: 8px; + margin-top: 1rem; } -/* Add delay for each list item to make them animate sequentially */ -.hero__subtitle li:nth-child(1) { - animation-delay: 0s; +.fadeIn { + opacity: 1; + transform: translateY(0); } -.hero__subtitle li:nth-child(2) { - animation-delay: 0.2s; +.contentTitle { + font-size: 1.5rem; + color: #6a0dad; /* Purple for titles */ } -.hero__subtitle li:nth-child(3) { - animation-delay: 0.4s; +/* Fade effect when scrolling */ +@keyframes fadeIn { + 0% { + opacity: 0; + transform: translateY(20px); + } + 100% { + opacity: 1; + transform: translateY(0); + } } -.heading-padding { - padding-top: 200px; /* Adds 15px padding to the top */ - padding-right: 100px; /* Adds 10px padding to the right */ - padding-bottom: 5px; /* Adds 15px padding to the bottom */ - padding-left: 10px; /* Adds 10px padding to the left */ +.contentBox.fadeIn { + animation: fadeIn 0.8s ease-in-out forwards; } +/* Responsive adjustments */ +@media screen and (max-width: 768px) { + .heroContent { + padding: 2rem; + width: 95%; + } + + .heroTitle { + font-size: 2.5rem; + } + + .heroSubtitle { + font-size: 1.1rem; + } + + .avatarContainer { + flex-direction: column; + text-align: center; + padding: 1rem; + } + + .avatarPhoto { + margin-bottom: 1rem; + margin-right: 0; + } + + .buttons { + justify-content: center; + } + + .exploreButton { + width: 100%; + padding: 0.75rem 1.5rem; + } + + .additionalContent { + flex-direction: column; + align-items: center; + } + + .contentBox { + width: 100%; + } +} \ No newline at end of file diff --git a/src/theme/ColorModeToggle/index.js b/src/theme/ColorModeToggle/index.js new file mode 100644 index 0000000..f89fd8e --- /dev/null +++ b/src/theme/ColorModeToggle/index.js @@ -0,0 +1,36 @@ +import React from 'react'; +import ColorModeToggle from '@theme-original/ColorModeToggle'; +import { logout } from '../firebase'; + +export default function ColorModeToggleWrapper(props) { + const logoutStyle = { + color: '#4248d6', + backgroundColor: 'transparent', + padding: '8px 18px', + borderRadius: '5px', + cursor: 'pointer', + transition: 'background-color 0.3s, color 0.3s', + textDecoration: 'none', + border: '2px solid #4248d6', + }; + + const logoutHoverStyle = { + backgroundColor: 'rgba(66, 72, 214, 0.1)', + }; + + const [hover, setHover] = React.useState(false); + + return ( + <> + setHover(true)} + onMouseLeave={() => setHover(false)} + onClick={() => logout(() => window.location.reload())} + > + Logout + + + + ); +} \ No newline at end of file diff --git a/src/theme/Loading.js b/src/theme/Loading.js new file mode 100644 index 0000000..5b8e979 --- /dev/null +++ b/src/theme/Loading.js @@ -0,0 +1,19 @@ +import React from 'react'; +import PropTypes from 'prop-types'; + +const Loading = props => { + return ( +
+
+
+
+
+
+
+
+ ); +}; + +Loading.propTypes = {}; + +export default Loading; \ No newline at end of file diff --git a/src/theme/Root.js b/src/theme/Root.js new file mode 100644 index 0000000..e2e117b --- /dev/null +++ b/src/theme/Root.js @@ -0,0 +1,122 @@ +import React, { useState, useEffect } from 'react'; +import { signInWithGoogle, auth } from './firebase'; +import styles from '../css/login.module.css'; +import Loading from './Loading'; + +export default function Root({ children }) { + const [userAuth, setUserAuth] = useState(null); + const [authLoading, setAuthLoading] = useState(true); + const [animate, setAnimate] = useState(false); + + useEffect(() => { + const unsubscribe = auth.onAuthStateChanged(async function (user) { + if (user !== null) { + setUserAuth(user); + } + setAuthLoading(false); + }); + + const animationTimer = setTimeout(() => setAnimate(true), 100); + + // Only create raindrops if not authenticated + const createRaindrops = () => { + if (!userAuth) { + const rain = document.createElement('div'); + rain.className = styles.rain; + for (let i = 0; i < 100; i++) { + const raindrop = document.createElement('div'); + raindrop.className = styles.raindrop; + raindrop.style.left = `${Math.random() * 100}%`; + raindrop.style.animationDuration = `${Math.random() * 2 + 1}s`; + raindrop.style.animationDelay = `${Math.random() * 2}s`; + rain.appendChild(raindrop); + } + document.body.appendChild(rain); + } + }; + + createRaindrops(); + + return () => { + unsubscribe(); + clearTimeout(animationTimer); + const rain = document.querySelector(`.${styles.rain}`); + if (rain) { + rain.remove(); + } + }; + }, [userAuth]); + + const isAllow = () => userAuth?.email; + + if (authLoading) { + return ( + <> + +
{children}
+ + ); + } + + // Remove login-specific classes when authenticated + const containerClass = isAllow() ? '' : `${styles.login} ${animate ? styles.animate : ''}`; + + return ( + + {isAllow() ? ( +
+ {children} +
+ ) : ( +
+
+

Biust Insight Project

+

+ An Archive Of Material +

+
+

Contains:

+
    +
  • 📝 Past exam papers
  • +
  • 🧪 Laboratory reports
  • +
  • 📘 Assignment samples
  • +
  • 📚 Study resources
  • +
+
+
+

Free Access 🎉

+

Still in development mode therefore free access 🆓

+
+
+

Pricing (Coming Soon) 💰

+

After your trial:

+
    +
  • $4 USD per month 💵
  • +
  • or $10 for the whole semester 🏫
  • +
+ Note: Pricing not yet in effect ⏳ +
+ +

+ By logging in, you agree to our{' '} + Terms of Service and{' '} + Privacy Policy. +

+ + Don't have an account? Sign up + +
+ {!isAllow() && ( +
+ {[...Array(10)].map((_, index) => ( +
+ ))} +
+ )} +
+ )} +
+ ); +} \ No newline at end of file diff --git a/src/theme/firebase.js b/src/theme/firebase.js new file mode 100644 index 0000000..ac54b5a --- /dev/null +++ b/src/theme/firebase.js @@ -0,0 +1,27 @@ +import * as firebase from 'firebase/app'; +import 'firebase/storage'; +import 'firebase/auth'; +import {GoogleAuthProvider, getAuth, signInWithPopup, signOut} from 'firebase/auth'; + +const app = firebase.initializeApp({ + apiKey: process.env.FIREBASE_API_KEY, + authDomain: process.env.FIREBASE_AUTH_DOMAIN, + projectId: process.env.FIREBASE_PROJECT_ID, + storageBucket: process.env.FIREBASE_STORAGE_BUCKET +}); + +export const auth = getAuth(app); +export const googleProvider = new GoogleAuthProvider(); + +export const logout = (afterAction = () => {}) => { + signOut(auth).then(r => afterAction(null)); +}; + +export const signInWithGoogle = async () => { + try { + const res = await signInWithPopup(auth, googleProvider); + } catch (err) { + console.error(err); + alert(err.message); + } +}; \ No newline at end of file diff --git a/static/img/styles.module.css b/static/img/styles.module.css new file mode 100644 index 0000000..a1df0e5 --- /dev/null +++ b/static/img/styles.module.css @@ -0,0 +1,83 @@ +/* stylelint-disable docusaurus/copyright-header + +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 0 0 var(--ifm-navbar-height); + text-align: center; + position: relative; + overflow: hidden; + background: #0f2027; /* fallback for old browsers */ + background: -webkit-linear-gradient( + to right, + #2c5364, + #203a43, + #0f2027 + ); /* Chrome 10-25, Safari 5.1-6 */ + background: linear-gradient( + to right, + #2c5364, + #203a43, + #0f2027 + ); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ + + height: calc(100vh - calc(2 * var(--ifm-navbar-height))); +} + +.heroFooter { + padding: 1.8rem 0; + text-align: center; + position: relative; + overflow: hidden; + background: #0f2027; /* fallback for old browsers */ + background: -webkit-linear-gradient( + to right, + #2c5364, + #203a43, + #0f2027 + ); /* Chrome 10-25, Safari 5.1-6 */ + background: linear-gradient( + to right, + #2c5364, + #203a43, + #0f2027 + ); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */ + + height: var(--ifm-navbar-height); +} + +.hero__title { + font-size: 2.5rem; +} + +.hero__subtitle { + text-align: center; + font-weight: 300; +} + +.customHero__subtitle { + text-align: center; + font-weight: 200; + font-size: 0.8rem; + letter-spacing: 0.1em; + margin: 0; +} + +@media screen and (max-width: 966px) { + .hero__title { + font-size: 2rem; + } + + .customHero__subtitle { + font-size: 0.5rem; + } +} + +.getStarted:hover, +.getStarted:active { + background: var(--ifm-color-secondary-darkest); + border-color: var(--ifm-color-secondary-darkest); +} \ No newline at end of file