From ee8000cde977df54eac481075d2fb138171a275c Mon Sep 17 00:00:00 2001 From: Dan Cunningham Date: Wed, 11 Feb 2026 05:43:09 -0500 Subject: [PATCH 1/3] Website Refresh Main Bulk This commit contains the code changes on the site. --- .gitignore | 2 + docusaurus.config.js | 91 +- package.json | 14 +- pnpm-lock.yaml | 1701 +++++------------ sidebars.js | 18 +- .../DocsVersionSelector.module.css | 107 ++ src/components/DocsVersionSelector/index.tsx | 146 ++ src/components/EventsSidebar.module.css | 577 ------ src/components/EventsSidebar.tsx | 150 -- src/components/HomepageFeatures.module.css | 371 ---- src/components/HomepageFeatures.tsx | 210 -- src/components/Newsletter.module.css | 6 +- src/components/Newsletter.tsx | 36 +- src/css/custom.css | 1032 +++++----- src/data/devteam.tsx | 44 + src/data/ecosystem.tsx | 167 ++ src/data/features.ts | 162 ++ src/data/instructors.tsx | 31 + src/data/testimonials.tsx | 12 + src/pages/about.module.css | 313 ++- src/pages/about.tsx | 294 +-- src/pages/ecosystem.module.css | 462 +++++ src/pages/ecosystem.tsx | 244 +++ src/pages/features.module.css | 249 ++- src/pages/features.tsx | 342 +--- src/pages/index.module.css | 375 +++- src/pages/index.tsx | 342 +++- src/pages/privacy-policy.mdx | 63 +- src/pages/training.module.css | 383 ++++ src/pages/training.tsx | 171 ++ src/theme/DocCard/index.js | 106 + src/theme/DocCard/styles.module.css | 50 + .../DocCategoryGeneratedIndexPage/index.js | 67 + .../styles.module.css | 30 + src/theme/DocItem/Layout/index.js | 87 + src/theme/DocItem/Layout/styles.module.css | 35 + src/theme/DocSidebar/index.js | 10 - src/theme/Root/index.js | 17 +- static/images/about/johan.png | Bin 0 -> 212319 bytes static/images/about/jordanb.jpg | Bin 0 -> 19311 bytes static/images/features/application_window.png | Bin 0 -> 3412 bytes .../automation.svg} | 0 .../checkmark.svg} | 0 static/images/features/code.png | Bin 0 -> 3486 bytes .../{features-code.svg => features/code.svg} | 0 .../construction_worker__beard_short.svg} | 0 .../construction_worker_beard_long.svg | 7 + .../construction_worker_man.svg} | 0 .../construction_worker_woman.svg} | 0 .../construction_workers_classroom.png | Bin 0 -> 919481 bytes .../construction_workers_men.svg} | 0 .../construction_workers_women.svg} | 0 static/images/features/devices_laptop.svg | 7 + .../devices_mobile.svg} | 0 .../devices_processor.svg} | 0 .../devices_server.svg} | 0 .../dumbbell.svg} | 0 .../ghost.svg} | 0 static/images/features/globe.png | Bin 0 -> 8708 bytes .../learning_classroom.svg} | 0 .../learning_whiteboard.svg} | 0 static/images/features/module.svg | 7 + .../moosebear.svg} | 0 .../padlock_closed.svg} | 0 .../padlock_open.svg} | 0 static/images/features/people_working.png | Bin 0 -> 8590 bytes .../powershell.svg} | 0 static/images/features/puzzle.png | Bin 0 -> 1846 bytes .../q_and_a.svg} | 0 .../recycle_bin.svg} | 0 .../satellites.svg} | 0 .../script.svg} | 0 .../shield_checkmark.svg} | 0 .../sign_stop.svg} | 0 .../space_invader.svg} | 0 .../switch_blue.svg} | 0 .../switch_red.svg} | 0 static/images/features/tasklist.svg | 7 + static/images/features/trophy.png | Bin 0 -> 3289 bytes .../worker_package.svg} | 0 static/images/features/worker_student.svg | 1 + .../worker_studentbackup.svg} | 0 .../screenshots/app_screenshot_darkmode.png | Bin 0 -> 116447 bytes .../screenshots/app_screenshot_lightmode.png | Bin 0 -> 80925 bytes static/images/solutions/apptimized.png | Bin 0 -> 35340 bytes static/images/solutions/deployment_editor.png | Bin 0 -> 3953 bytes static/images/solutions/devicie.png | Bin 0 -> 237 bytes static/images/solutions/devicie_dark.png | Bin 0 -> 2838 bytes static/images/solutions/devicie_light.png | Bin 0 -> 2826 bytes static/images/solutions/flexera_dark.png | Bin 0 -> 49831 bytes static/images/solutions/flexera_light.png | Bin 0 -> 47829 bytes static/images/solutions/juriba_dark.png | Bin 0 -> 35824 bytes static/images/solutions/juriba_light.png | Bin 0 -> 35815 bytes static/images/solutions/masterpackager.png | Bin 0 -> 53108 bytes static/images/solutions/neo42.png | Bin 0 -> 978 bytes static/images/solutions/packit.png | Bin 0 -> 11279 bytes static/images/solutions/pckgr.png | Bin 0 -> 4734 bytes static/images/solutions/pmpc_dark.png | Bin 0 -> 69069 bytes static/images/solutions/pmpc_light.png | Bin 0 -> 67284 bytes static/images/solutions/raynet_dark.png | Bin 0 -> 20460 bytes static/images/solutions/raynet_light.png | Bin 0 -> 21038 bytes static/images/solutions/robopack.png | Bin 0 -> 870 bytes static/images/solutions/xoap.png | Bin 0 -> 40463 bytes static/images/training/essentials.png | Bin 0 -> 300532 bytes static/images/training/johan.png | Bin 0 -> 212319 bytes 105 files changed, 4703 insertions(+), 3843 deletions(-) create mode 100644 src/components/DocsVersionSelector/DocsVersionSelector.module.css create mode 100644 src/components/DocsVersionSelector/index.tsx delete mode 100644 src/components/EventsSidebar.module.css delete mode 100644 src/components/EventsSidebar.tsx delete mode 100644 src/components/HomepageFeatures.module.css delete mode 100644 src/components/HomepageFeatures.tsx create mode 100644 src/data/devteam.tsx create mode 100644 src/data/ecosystem.tsx create mode 100644 src/data/features.ts create mode 100644 src/data/instructors.tsx create mode 100644 src/data/testimonials.tsx create mode 100644 src/pages/ecosystem.module.css create mode 100644 src/pages/ecosystem.tsx create mode 100644 src/pages/training.module.css create mode 100644 src/pages/training.tsx create mode 100644 src/theme/DocCard/index.js create mode 100644 src/theme/DocCard/styles.module.css create mode 100644 src/theme/DocCategoryGeneratedIndexPage/index.js create mode 100644 src/theme/DocCategoryGeneratedIndexPage/styles.module.css create mode 100644 src/theme/DocItem/Layout/index.js create mode 100644 src/theme/DocItem/Layout/styles.module.css delete mode 100644 src/theme/DocSidebar/index.js create mode 100644 static/images/about/johan.png create mode 100644 static/images/about/jordanb.jpg create mode 100644 static/images/features/application_window.png rename static/images/{features-automation.svg => features/automation.svg} (100%) rename static/images/{features-checkmark.svg => features/checkmark.svg} (100%) create mode 100644 static/images/features/code.png rename static/images/{features-code.svg => features/code.svg} (100%) rename static/images/{features-worker-male-shortbeard.svg => features/construction_worker__beard_short.svg} (100%) create mode 100644 static/images/features/construction_worker_beard_long.svg rename static/images/{features-worker-male.svg => features/construction_worker_man.svg} (100%) rename static/images/{features-worker-female.svg => features/construction_worker_woman.svg} (100%) create mode 100644 static/images/features/construction_workers_classroom.png rename static/images/{features-workers.svg => features/construction_workers_men.svg} (100%) rename static/images/{features-workers2.svg => features/construction_workers_women.svg} (100%) create mode 100644 static/images/features/devices_laptop.svg rename static/images/{features-smartdevices.svg => features/devices_mobile.svg} (100%) rename static/images/{features-processor.svg => features/devices_processor.svg} (100%) rename static/images/{features-nas.svg => features/devices_server.svg} (100%) rename static/images/{features-dumbbell.svg => features/dumbbell.svg} (100%) rename static/images/{features-ghost.svg => features/ghost.svg} (100%) create mode 100644 static/images/features/globe.png rename static/images/{features-classroom.svg => features/learning_classroom.svg} (100%) rename static/images/{features-training.svg => features/learning_whiteboard.svg} (100%) create mode 100644 static/images/features/module.svg rename static/images/{features-moosebear.svg => features/moosebear.svg} (100%) rename static/images/{features-padlockclosed.svg => features/padlock_closed.svg} (100%) rename static/images/{features-padlockopen.svg => features/padlock_open.svg} (100%) create mode 100644 static/images/features/people_working.png rename static/images/{features-chevron.svg => features/powershell.svg} (100%) create mode 100644 static/images/features/puzzle.png rename static/images/{features-faq.svg => features/q_and_a.svg} (100%) rename static/images/{features-wastebin.svg => features/recycle_bin.svg} (100%) rename static/images/{features-satellites.svg => features/satellites.svg} (100%) rename static/images/{features-powershell.svg => features/script.svg} (100%) rename static/images/{features-protect.svg => features/shield_checkmark.svg} (100%) rename static/images/{features-stopsign.svg => features/sign_stop.svg} (100%) rename static/images/{features-spaceinvader.svg => features/space_invader.svg} (100%) rename static/images/{features-blueswitch.svg => features/switch_blue.svg} (100%) rename static/images/{features-redswitch.svg => features/switch_red.svg} (100%) create mode 100644 static/images/features/tasklist.svg create mode 100644 static/images/features/trophy.png rename static/images/{feature-supplier.svg => features/worker_package.svg} (100%) create mode 100644 static/images/features/worker_student.svg rename static/images/{features-clerk.svg => features/worker_studentbackup.svg} (100%) create mode 100644 static/images/screenshots/app_screenshot_darkmode.png create mode 100644 static/images/screenshots/app_screenshot_lightmode.png create mode 100644 static/images/solutions/apptimized.png create mode 100644 static/images/solutions/deployment_editor.png create mode 100644 static/images/solutions/devicie.png create mode 100644 static/images/solutions/devicie_dark.png create mode 100644 static/images/solutions/devicie_light.png create mode 100644 static/images/solutions/flexera_dark.png create mode 100644 static/images/solutions/flexera_light.png create mode 100644 static/images/solutions/juriba_dark.png create mode 100644 static/images/solutions/juriba_light.png create mode 100644 static/images/solutions/masterpackager.png create mode 100644 static/images/solutions/neo42.png create mode 100644 static/images/solutions/packit.png create mode 100644 static/images/solutions/pckgr.png create mode 100644 static/images/solutions/pmpc_dark.png create mode 100644 static/images/solutions/pmpc_light.png create mode 100644 static/images/solutions/raynet_dark.png create mode 100644 static/images/solutions/raynet_light.png create mode 100644 static/images/solutions/robopack.png create mode 100644 static/images/solutions/xoap.png create mode 100644 static/images/training/essentials.png create mode 100644 static/images/training/johan.png diff --git a/.gitignore b/.gitignore index ff6725f..6673bff 100644 --- a/.gitignore +++ b/.gitignore @@ -112,3 +112,5 @@ dist # VSCode History .history/ + +.worktrees/ diff --git a/docusaurus.config.js b/docusaurus.config.js index 77a653a..5313782 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -9,7 +9,7 @@ import { themes as prismThemes } from 'prism-react-renderer'; /** @type {import('@docusaurus/types').Config} */ const config = { future: { - v4: true + v4: true, // experimental_router: 'hash', }, title: 'PSAppDeployToolkit', @@ -22,15 +22,19 @@ const config = { projectName: 'website', // Usually your repo name. titleDelimiter: '·', onBrokenLinks: 'throw', + markdown: { + hooks: { onBrokenMarkdownLinks: 'warn', + }, + }, i18n: { defaultLocale: 'en', locales: ['en'], }, stylesheets: [ - 'https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap', - ], + 'https://fonts.googleapis.com/css2?family=Cabin:ital,wght@0,400..700;1,400..700&family=Expletus+Sans:ital,wght@0,400..700;1,400..700&family=Funnel+Display:wght@300..800&family=Fustat:wght@200..800&family=Gantari:ital,wght@0,100..900;1,100..900&family=Geologica:wght,CRSV@100..900,0&family=Golos+Text:wght@400..900&family=Google+Sans+Code:ital,wght@0,300..800;1,300..800&family=Inclusive+Sans:ital,wght@0,300..700;1,300..700&family=League+Spartan:wght@100..900&family=Liter&family=Manrope:wght@200..800&family=Onest:wght@100..900&family=Outfit:wght@100..900&family=Oxygen:wght@300;400;700&family=PT+Sans+Caption:wght@400;700&family=Parkinsans:wght@300..800&family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Reddit+Sans:ital,wght@0,200..900;1,200..900&family=Rethink+Sans:ital,wght@0,400..800;1,400..800&family=Rubik:ital,wght@0,300..900;1,300..900&family=Sen:wght@400..800&family=Sometype+Mono:ital,wght@0,400..700;1,400..700&family=Zain:ital,wght@0,200;0,300;0,400;0,700;0,800;0,900;1,300;1,400&display=swap', + ], customFields: { meta: { @@ -49,27 +53,38 @@ const config = { customCss: require.resolve('./src/css/custom.css'), }, docs: { + exclude: ['**/docs/plans/**'], sidebarPath: require.resolve('./sidebars.js'), - lastVersion: 'current', + lastVersion: '4.1.x', versions: { current: { - label: '4.1.x', + label: '4.2.x (In Development)', + path: '/', + banner: 'unreleased', // editUrl: 'https://github.com/psappdeploytoolkit/website/edit/main', }, - '4.0.0': { + '4.1.x': { + label: '4.1.x (Stable)', + path: '4.1.x', + }, + '4.0.x': { label: '4.0.x', - path: '4.0.0', - banner: 'unmaintained' + path: '4.0.x', + banner: 'unmaintained', }, '3.10.2': { label: '3.10.x', path: '3.10.2', - banner: 'unmaintained' + banner: 'unmaintained', }, }, }, blog: { - showReadingTime: false, + showReadingTime: true, + blogSidebarTitle: 'Recent Posts', + blogSidebarCount: 'ALL', + authorsMapPath: 'authors.yml', + onInlineAuthors: 'ignore', }, sitemap: { ignorePatterns: ['/blog/tags/**', '/docs/tags/**', '/error/'], @@ -113,14 +128,6 @@ const config = { minHeadingLevel: 2, maxHeadingLevel: 2, }, - // announcementBar: { - // id: 'support_us', - // content: - // 'Watch the PSADT v4 launch webinar to see the new features and changes, then find out how to download the new version in our Getting Started guide.', - // backgroundColor: '#0081c6', - // textColor: '#fff', - // isCloseable: true, - // }, navbar: { title: 'PSAppDeployToolkit', logo: { @@ -130,21 +137,7 @@ const config = { }, items: [ { to: 'features', label: 'Features', position: 'left' }, - // { - // label: "Docs", - // to: "/docs", - // items: [ - // { - // label: "Getting Started", - // to: "/docs/getting-started/requirements", - // }, - // { - // label: "Reference", - // to: "/docs/reference", - // }, - // ], - // position: "left" - // }, + { to: 'ecosystem', label: 'Ecosystem', position: 'left' }, { type: 'doc', position: 'left', @@ -157,19 +150,10 @@ const config = { docId: 'reference', label: 'Reference', }, - // { - // href: 'https://github.com/psappdeploytoolkit/psappdeploytoolkit/releases', - // label: 'Download', - // position: 'left', - // }, + { to: 'training', label: 'Training', position: 'left' }, { to: 'blog', label: 'News', position: 'left' }, { to: 'about', label: 'About', position: 'left' }, - { - type: 'docsVersionDropdown', - position: 'right', - dropdownActiveClassDisabled: true, - }, { type: 'search', position: 'right', @@ -178,6 +162,7 @@ const config = { { href: 'https://github.com/psappdeploytoolkit/psappdeploytoolkit', className: 'header-github-link', + 'aria-label': 'GitHub repository', position: 'right', }, ], @@ -190,19 +175,31 @@ const config = { items: [ { label: 'Features', - to: 'https://psappdeploytoolkit.com/features', + to: '/features', + }, + { + label: 'Ecosystem', + to: '/ecosystem', }, { label: 'Documentation', - to: 'https://psappdeploytoolkit.com/docs/introduction', + to: '/docs/introduction', }, { label: 'Reference', - to: 'https://psappdeploytoolkit.com/docs/reference', + to: '/docs/reference', + }, + { + label: 'Training', + to: '/training', }, { label: 'News', - to: 'https://psappdeploytoolkit.com/blog', + to: '/blog', + }, + { + label: 'About', + to: '/about', }, ], }, diff --git a/package.json b/package.json index 4c68449..e767408 100644 --- a/package.json +++ b/package.json @@ -22,31 +22,29 @@ "dependencies": { "@docusaurus/core": "^3.9.2", "@docusaurus/faster": "^3.9.2", + "@docusaurus/plugin-content-docs": "3.9.2", "@docusaurus/preset-classic": "3.9.2", "@docusaurus/theme-common": "^3.9.2", "@docusaurus/types": "^3.9.2", - "@easyops-cn/docusaurus-search-local": "^0.54.0", - "@eslint/markdown": "^7.5.1", + "@easyops-cn/docusaurus-search-local": "^0.52.3", "@fec/remark-a11y-emoji": "^4.0.2", "@mdx-js/react": "^3.1.1", "clsx": "^2.1.1", + "framer-motion": "^12.34.0", "prism-react-renderer": "^2.4.1", "react": "^19.2.4", "react-dom": "^19.2.4", - "react-icons": "^5.5.0", - "search-insights": "^2.17.3" + "react-icons": "^5.5.0" }, "devDependencies": { "@docusaurus/eslint-plugin": "^3.9.2", "@docusaurus/module-type-aliases": "3.9.2", - "@docusaurus/preset-classic": "^3.9.2", "@docusaurus/theme-classic": "^3.9.2", "@docusaurus/tsconfig": "^3.9.2", - "@docusaurus/types": "3.9.2", - "@fec/remark-a11y-emoji": "^4.0.2", + "@eslint/markdown": "^7.5.1", "@types/node": "^25.2.2", "@types/react": "^19.2.13", - "@typescript-eslint/eslint-plugin": "^8.54.0", + "@typescript-eslint/eslint-plugin": "^8.55.0", "@typescript-eslint/parser": "^8.55.0", "eslint": "^9.39.2", "eslint-config-prettier": "^10.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 29e2712..106beb9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,25 +10,25 @@ importers: dependencies: '@docusaurus/core': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/faster': specifier: ^3.9.2 version: 3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) + '@docusaurus/plugin-content-docs': + specifier: 3.9.2 + version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/preset-classic': specifier: 3.9.2 - version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) + version: 3.9.2(@algolia/client-search@5.48.0)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/theme-common': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': specifier: ^3.9.2 version: 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@easyops-cn/docusaurus-search-local': - specifier: ^0.54.0 - version: 0.54.0(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@eslint/markdown': - specifier: ^7.5.1 - version: 7.5.1 + specifier: ^0.52.3 + version: 0.52.3(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@fec/remark-a11y-emoji': specifier: ^4.0.2 version: 4.0.2 @@ -38,6 +38,9 @@ importers: clsx: specifier: ^2.1.1 version: 2.1.1 + framer-motion: + specifier: ^12.34.0 + version: 12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) prism-react-renderer: specifier: ^2.4.1 version: 2.4.1(react@19.2.4) @@ -50,9 +53,6 @@ importers: react-icons: specifier: ^5.5.0 version: 5.5.0(react@19.2.4) - search-insights: - specifier: ^2.17.3 - version: 2.17.3 devDependencies: '@docusaurus/eslint-plugin': specifier: ^3.9.2 @@ -62,10 +62,13 @@ importers: version: 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-classic': specifier: ^3.9.2 - version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/tsconfig': specifier: ^3.9.2 version: 3.9.2 + '@eslint/markdown': + specifier: ^7.5.1 + version: 7.5.1 '@types/node': specifier: ^25.2.2 version: 25.2.2 @@ -73,8 +76,8 @@ importers: specifier: ^19.2.13 version: 19.2.13 '@typescript-eslint/eslint-plugin': - specifier: ^8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + specifier: ^8.55.0 + version: 8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.55.0 version: 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) @@ -99,63 +102,77 @@ importers: packages: - '@algolia/abtesting@1.13.0': - resolution: {integrity: sha512-Zrqam12iorp3FjiKMXSTpedGYznZ3hTEOAr2oCxI8tbF8bS1kQHClyDYNq/eV0ewMNLyFkgZVWjaS+8spsOYiQ==} + '@algolia/abtesting@1.14.0': + resolution: {integrity: sha512-cZfj+1Z1dgrk3YPtNQNt0H9Rr67P8b4M79JjUKGS0d7/EbFbGxGgSu6zby5f22KXo3LT0LZa4O2c6VVbupJuDg==} engines: {node: '>= 14.0.0'} - '@algolia/client-abtesting@5.47.0': - resolution: {integrity: sha512-aOpsdlgS9xTEvz47+nXmw8m0NtUiQbvGWNuSEb7fA46iPL5FxOmOUZkh8PREBJpZ0/H8fclSc7BMJCVr+Dn72w==} + '@algolia/autocomplete-core@1.19.2': + resolution: {integrity: sha512-mKv7RyuAzXvwmq+0XRK8HqZXt9iZ5Kkm2huLjgn5JoCPtDy+oh9yxUMfDDaVCw0oyzZ1isdJBc7l9nuCyyR7Nw==} + + '@algolia/autocomplete-plugin-algolia-insights@1.19.2': + resolution: {integrity: sha512-TjxbcC/r4vwmnZaPwrHtkXNeqvlpdyR+oR9Wi2XyfORkiGkLTVhX2j+O9SaCCINbKoDfc+c2PB8NjfOnz7+oKg==} + peerDependencies: + search-insights: '>= 1 < 3' + + '@algolia/autocomplete-shared@1.19.2': + resolution: {integrity: sha512-jEazxZTVD2nLrC+wYlVHQgpBoBB5KPStrJxLzsIFl6Kqd1AlG9sIAGl39V5tECLpIQzB3Qa2T6ZPJ1ChkwMK/w==} + peerDependencies: + '@algolia/client-search': '>= 4.9.1 < 6' + algoliasearch: '>= 4.9.1 < 6' + + '@algolia/client-abtesting@5.48.0': + resolution: {integrity: sha512-n17WSJ7vazmM6yDkWBAjY12J8ERkW9toOqNgQ1GEZu/Kc4dJDJod1iy+QP5T/UlR3WICgZDi/7a/VX5TY5LAPQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-analytics@5.47.0': - resolution: {integrity: sha512-EcF4w7IvIk1sowrO7Pdy4Ako7x/S8+nuCgdk6En+u5jsaNQM4rTT09zjBPA+WQphXkA2mLrsMwge96rf6i7Mow==} + '@algolia/client-analytics@5.48.0': + resolution: {integrity: sha512-v5bMZMEqW9U2l40/tTAaRyn4AKrYLio7KcRuHmLaJtxuJAhvZiE7Y62XIsF070juz4MN3eyvfQmI+y5+OVbZuA==} engines: {node: '>= 14.0.0'} - '@algolia/client-common@5.47.0': - resolution: {integrity: sha512-Wzg5Me2FqgRDj0lFuPWFK05UOWccSMsIBL2YqmTmaOzxVlLZ+oUqvKbsUSOE5ud8Fo1JU7JyiLmEXBtgDKzTwg==} + '@algolia/client-common@5.48.0': + resolution: {integrity: sha512-7H3DgRyi7UByScc0wz7EMrhgNl7fKPDjKX9OcWixLwCj7yrRXDSIzwunykuYUUO7V7HD4s319e15FlJ9CQIIFQ==} engines: {node: '>= 14.0.0'} - '@algolia/client-insights@5.47.0': - resolution: {integrity: sha512-Ci+cn/FDIsDxSKMRBEiyKrqybblbk8xugo6ujDN1GSTv9RIZxwxqZYuHfdLnLEwLlX7GB8pqVyqrUSlRnR+sJA==} + '@algolia/client-insights@5.48.0': + resolution: {integrity: sha512-tXmkB6qrIGAXrtRYHQNpfW0ekru/qymV02bjT0w5QGaGw0W91yT+53WB6dTtRRsIrgS30Al6efBvyaEosjZ5uw==} engines: {node: '>= 14.0.0'} - '@algolia/client-personalization@5.47.0': - resolution: {integrity: sha512-gsLnHPZmWcX0T3IigkDL2imCNtsQ7dR5xfnwiFsb+uTHCuYQt+IwSNjsd8tok6HLGLzZrliSaXtB5mfGBtYZvQ==} + '@algolia/client-personalization@5.48.0': + resolution: {integrity: sha512-4tXEsrdtcBZbDF73u14Kb3otN+xUdTVGop1tBjict+Rc/FhsJQVIwJIcTrOJqmvhtBfc56Bu65FiVOnpAZCxcw==} engines: {node: '>= 14.0.0'} - '@algolia/client-query-suggestions@5.47.0': - resolution: {integrity: sha512-PDOw0s8WSlR2fWFjPQldEpmm/gAoUgLigvC3k/jCSi/DzigdGX6RdC0Gh1RR1P8Cbk5KOWYDuL3TNzdYwkfDyA==} + '@algolia/client-query-suggestions@5.48.0': + resolution: {integrity: sha512-unzSUwWFpsDrO8935RhMAlyK0Ttua/5XveVIwzfjs5w+GVBsHgIkbOe8VbBJccMU/z1LCwvu1AY3kffuSLAR5Q==} engines: {node: '>= 14.0.0'} - '@algolia/client-search@5.47.0': - resolution: {integrity: sha512-b5hlU69CuhnS2Rqgsz7uSW0t4VqrLMLTPbUpEl0QVz56rsSwr1Sugyogrjb493sWDA+XU1FU5m9eB8uH7MoI0g==} + '@algolia/client-search@5.48.0': + resolution: {integrity: sha512-RB9bKgYTVUiOcEb5bOcZ169jiiVW811dCsJoLT19DcbbFmU4QaK0ghSTssij35QBQ3SCOitXOUrHcGgNVwS7sQ==} engines: {node: '>= 14.0.0'} '@algolia/events@4.0.1': resolution: {integrity: sha512-FQzvOCgoFXAbf5Y6mYozw2aj5KCJoA3m4heImceldzPSMbdyS4atVjJzXKMsfX3wnZTFYwkkt8/z8UesLHlSBQ==} - '@algolia/ingestion@1.47.0': - resolution: {integrity: sha512-WvwwXp5+LqIGISK3zHRApLT1xkuEk320/EGeD7uYy+K8WwDd5OjXnhjuXRhYr1685KnkvWkq1rQ/ihCJjOfHpQ==} + '@algolia/ingestion@1.48.0': + resolution: {integrity: sha512-rhoSoPu+TDzDpvpk3cY/pYgbeWXr23DxnAIH/AkN0dUC+GCnVIeNSQkLaJ+CL4NZ51cjLIjksrzb4KC5Xu+ktw==} engines: {node: '>= 14.0.0'} - '@algolia/monitoring@1.47.0': - resolution: {integrity: sha512-j2EUFKAlzM0TE4GRfkDE3IDfkVeJdcbBANWzK16Tb3RHz87WuDfQ9oeEW6XiRE1/bEkq2xf4MvZesvSeQrZRDA==} + '@algolia/monitoring@1.48.0': + resolution: {integrity: sha512-aSe6jKvWt+8VdjOaq2ERtsXp9+qMXNJ3mTyTc1VMhNfgPl7ArOhRMRSQ8QBnY8ZL4yV5Xpezb7lAg8pdGrrulg==} engines: {node: '>= 14.0.0'} - '@algolia/recommend@5.47.0': - resolution: {integrity: sha512-+kTSE4aQ1ARj2feXyN+DMq0CIDHJwZw1kpxIunedkmpWUg8k3TzFwWsMCzJVkF2nu1UcFbl7xsIURz3Q3XwOXA==} + '@algolia/recommend@5.48.0': + resolution: {integrity: sha512-p9tfI1bimAaZrdiVExL/dDyGUZ8gyiSHsktP1ZWGzt5hXpM3nhv4tSjyHtXjEKtA0UvsaHKwSfFE8aAAm1eIQA==} engines: {node: '>= 14.0.0'} - '@algolia/requester-browser-xhr@5.47.0': - resolution: {integrity: sha512-Ja+zPoeSA2SDowPwCNRbm5Q2mzDvVV8oqxCQ4m6SNmbKmPlCfe30zPfrt9ho3kBHnsg37pGucwOedRIOIklCHw==} + '@algolia/requester-browser-xhr@5.48.0': + resolution: {integrity: sha512-XshyfpsQB7BLnHseMinp3fVHOGlTv6uEHOzNK/3XrEF9mjxoZAcdVfY1OCXObfwRWX5qXZOq8FnrndFd44iVsQ==} engines: {node: '>= 14.0.0'} - '@algolia/requester-fetch@5.47.0': - resolution: {integrity: sha512-N6nOvLbaR4Ge+oVm7T4W/ea1PqcSbsHR4O58FJ31XtZjFPtOyxmnhgCmGCzP9hsJI6+x0yxJjkW5BMK/XI8OvA==} + '@algolia/requester-fetch@5.48.0': + resolution: {integrity: sha512-Q4XNSVQU89bKNAPuvzSYqTH9AcbOOiIo6AeYMQTxgSJ2+uvT78CLPMG89RIIloYuAtSfE07s40OLV50++l1Bbw==} engines: {node: '>= 14.0.0'} - '@algolia/requester-node-http@5.47.0': - resolution: {integrity: sha512-z1oyLq5/UVkohVXNDEY70mJbT/sv/t6HYtCvCwNrOri6pxBJDomP9R83KOlwcat+xqBQEdJHjbrPh36f1avmZA==} + '@algolia/requester-node-http@5.48.0': + resolution: {integrity: sha512-ZgxV2+5qt3NLeUYBTsi6PLyHcENQWC0iFppFZekHSEDA2wcLdTUjnaJzimTEULHIvJuLRCkUs4JABdhuJktEag==} engines: {node: '>= 14.0.0'} '@babel/code-frame@7.29.0': @@ -170,8 +187,8 @@ packages: resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} - '@babel/generator@7.29.0': - resolution: {integrity: sha512-vSH118/wwM/pLR38g/Sgk05sNtro6TlTJKuiMXDaZqPUfjTFcudpCOt00IhOfj+1BFAX+UFAlzCU+6WXr3GLFQ==} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -1036,8 +1053,8 @@ packages: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} - '@docsearch/core@4.5.3': - resolution: {integrity: sha512-x/P5+HVzv9ALtbuJIfpkF8Eyc5RE8YCsFcOgLrrtWa9Ui+53ggZA5seIAanCRORbS4+m982lu7rZmebSiuMIcw==} + '@docsearch/core@4.5.4': + resolution: {integrity: sha512-DbkfZbJyYAPFJtF71eAFOTQSy5z5c/hdSN0UrErORKDwXKLTJBR0c+5WxE5l+IKZx4xIaEa8RkrL7T28DTCOYw==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' react: '>= 16.8.0 < 20.0.0' @@ -1050,11 +1067,11 @@ packages: react-dom: optional: true - '@docsearch/css@4.5.3': - resolution: {integrity: sha512-kUpHaxn0AgI3LQfyzTYkNUuaFY4uEz/Ym9/N/FvyDE+PzSgZsCyDH9jE49B6N6f1eLCm9Yp64J9wENd6vypdxA==} + '@docsearch/css@4.5.4': + resolution: {integrity: sha512-gzO4DJwyM9c4YEPHwaLV1nUCDC2N6yoh0QJj44dce2rcfN71mB+jpu3+F+Y/KMDF1EKV0C3m54leSWsraE94xg==} - '@docsearch/react@4.5.3': - resolution: {integrity: sha512-Hm3Lg/FD9HXV57WshhWOHOprbcObF5ptLzcjA5zdgJDzYOMwEN+AvY8heQ5YMTWyC6kW2d+Qk25AVlHnDWMSvA==} + '@docsearch/react@4.5.4': + resolution: {integrity: sha512-iBNFfvWoUFRUJmGQ/r+0AEp2OJgJMoYIKRiRcTDON0hObBRSLlrv2ktb7w3nc1MeNm1JIpbPA99i59TiIR49fA==} peerDependencies: '@types/react': '>= 16.8.0 < 20.0.0' react: '>= 16.8.0 < 20.0.0' @@ -1255,8 +1272,8 @@ packages: '@easyops-cn/autocomplete.js@0.38.1': resolution: {integrity: sha512-drg76jS6syilOUmVNkyo1c7ZEBPcPuK+aJA7AksM5ZIIbV57DMHCywiCr+uHyv8BE5jUTU98j/H7gVrkHrWW3Q==} - '@easyops-cn/docusaurus-search-local@0.54.0': - resolution: {integrity: sha512-CHLJ+zEDz+pc+RMAbkQkw3vC0bYUj9n+D3Vvspn7G23S/R9WXdvxXRRutUsdBs2rXwQTWuUdE4wYpv5m36FgMw==} + '@easyops-cn/docusaurus-search-local@0.52.3': + resolution: {integrity: sha512-bkKHD+FoAY+sBvd9vcHudx8X5JQXkyGBcpstpJwOUTTpKwT0rOtUtnfmizpMu113LqdHxOxvlekYkGeTNGYYvw==} engines: {node: '>=12'} peerDependencies: '@docusaurus/theme-common': ^2 || ^3 @@ -1373,8 +1390,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/base64@17.65.0': - resolution: {integrity: sha512-Xrh7Fm/M0QAYpekSgmskdZYnFdSGnsxJ/tHaolA4bNwWdG9i65S8m83Meh7FOxyJyQAdo4d4J97NOomBLEfkDQ==} + '@jsonjoy.com/base64@17.67.0': + resolution: {integrity: sha512-5SEsJGsm15aP8TQGkDfJvz9axgPwAEm98S5DxOuYe8e1EbfajcDmgeXXzccEjh+mLnjqEKrkBdjHWS5vFNwDdw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1385,8 +1402,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/buffers@17.65.0': - resolution: {integrity: sha512-eBrIXd0/Ld3p9lpDDlMaMn6IEfWqtHMD+z61u0JrIiPzsV1r7m6xDZFRxJyvIFTEO+SWdYF9EiQbXZGd8BzPfA==} + '@jsonjoy.com/buffers@17.67.0': + resolution: {integrity: sha512-tfExRpYxBvi32vPs9ZHaTjSP4fHAfzSmcahOfNxtvGHcyJel+aibkPlGeBB+7AoC6hL7lXIE++8okecBxx7lcw==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1397,8 +1414,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/codegen@17.65.0': - resolution: {integrity: sha512-7MXcRYe7n3BG+fo3jicvjB0+6ypl2Y/bQp79Sp7KeSiiCgLqw4Oled6chVv07/xLVTdo3qa1CD0VCCnPaw+RGA==} + '@jsonjoy.com/codegen@17.67.0': + resolution: {integrity: sha512-idnkUplROpdBOV0HMcwhsCUS5TRUi9poagdGs70A6S4ux9+/aPuKbh8+UYRTLYQHtXvAdNfQWXDqZEx5k4Dj2Q==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1457,8 +1474,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pack@17.65.0': - resolution: {integrity: sha512-e0SG/6qUCnVhHa0rjDJHgnXnbsacooHVqQHxspjvlYQSkHm+66wkHw6Gql+3u/WxI/b1VsOdUi0M+fOtkgKGdQ==} + '@jsonjoy.com/json-pack@17.67.0': + resolution: {integrity: sha512-t0ejURcGaZsn1ClbJ/3kFqSOjlryd92eQY465IYrezsXmPcfHPE/av4twRSxf6WE+TkZgLY+71vCZbiIiFKA/w==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1469,8 +1486,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/json-pointer@17.65.0': - resolution: {integrity: sha512-uhTe+XhlIZpWOxgPcnO+iSCDgKKBpwkDVTyYiXX9VayGV8HSFVJM67M6pUE71zdnXF1W0Da21AvnhlmdwYPpow==} + '@jsonjoy.com/json-pointer@17.67.0': + resolution: {integrity: sha512-+iqOFInH+QZGmSuaybBUNdh7yvNrXvqR+h3wjXm0N/3JK1EyyFAeGJvqnmQL61d1ARLlk/wJdFKSL+LHJ1eaUA==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1481,8 +1498,8 @@ packages: peerDependencies: tslib: '2' - '@jsonjoy.com/util@17.65.0': - resolution: {integrity: sha512-cWiEHZccQORf96q2y6zU3wDeIVPeidmGqd9cNKJRYoVHTV0S1eHPy5JTbHpMnGfDvtvujQwQozOqgO9ABu6h0w==} + '@jsonjoy.com/util@17.67.0': + resolution: {integrity: sha512-6+8xBaz1rLSohlGh68D1pdw3AwDi9xydm8QNlAFkvnavCJYSze+pxoW2VKP8p308jtlMRLs5NTHfPlZLd4w7ew==} engines: {node: '>=10.0'} peerDependencies: tslib: '2' @@ -1568,24 +1585,28 @@ packages: engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [glibc] '@node-rs/jieba-linux-arm64-musl@1.10.4': resolution: {integrity: sha512-Y/tiJ1+HeS5nnmLbZOE+66LbsPOHZ/PUckAYVeLlQfpygLEpLYdlh0aPpS5uiaWMjAXYZYdFkpZHhxDmSLpwpw==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] + libc: [musl] '@node-rs/jieba-linux-x64-gnu@1.10.4': resolution: {integrity: sha512-WZO8ykRJpWGE9MHuZpy1lu3nJluPoeB+fIJJn5CWZ9YTVhNDWoCF4i/7nxz1ntulINYGQ8VVuCU9LD86Mek97g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [glibc] '@node-rs/jieba-linux-x64-musl@1.10.4': resolution: {integrity: sha512-uBBD4S1rGKcgCyAk6VCKatEVQb6EDD5I40v/DxODi5CuZVCANi9m5oee/MQbAoaX7RydA2f0OSCE9/tcwXEwUg==} engines: {node: '>= 10'} cpu: [x64] os: [linux] + libc: [musl] '@node-rs/jieba-wasm32-wasi@1.10.4': resolution: {integrity: sha512-Y2umiKHjuIJy0uulNDz9SDYHdfq5Hmy7jY5nORO99B4pySKkcrMjpeVrmWXJLIsEKLJwcCXHxz8tjwU5/uhz0A==} @@ -1675,265 +1696,64 @@ packages: '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} - '@radix-ui/number@1.1.1': - resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} - - '@radix-ui/primitive@1.1.3': - resolution: {integrity: sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==} - - '@radix-ui/react-compose-refs@1.1.2': - resolution: {integrity: sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context@1.1.2': - resolution: {integrity: sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.15': - resolution: {integrity: sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-direction@1.1.1': - resolution: {integrity: sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dismissable-layer@1.1.11': - resolution: {integrity: sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-focus-guards@1.1.3': - resolution: {integrity: sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-focus-scope@1.1.7': - resolution: {integrity: sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-id@1.1.1': - resolution: {integrity: sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-portal@1.1.9': - resolution: {integrity: sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-presence@1.1.5': - resolution: {integrity: sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-primitive@2.1.3': - resolution: {integrity: sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-scroll-area@1.2.10': - resolution: {integrity: sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.2.3': - resolution: {integrity: sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-slot@1.2.4': - resolution: {integrity: sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.1': - resolution: {integrity: sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.2.2': - resolution: {integrity: sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-effect-event@0.0.2': - resolution: {integrity: sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.1': - resolution: {integrity: sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.1': - resolution: {integrity: sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@rspack/binding-darwin-arm64@1.7.4': - resolution: {integrity: sha512-d4FTW/TkqvU9R1PsaK2tbLG1uY0gAlxy3rEiQYrFRAOVTMOFkPasypmvhwD5iWrPIhkjIi79IkgrSzRJaP2ZwA==} + '@rspack/binding-darwin-arm64@1.7.5': + resolution: {integrity: sha512-dg2/IrF+g498NUt654N8LFWfIiUsHlTankWieE1S3GWEQM6jweeRbNuu1Py1nWIUsjR2yQtv7ziia7c9Q8UTaQ==} cpu: [arm64] os: [darwin] - '@rspack/binding-darwin-x64@1.7.4': - resolution: {integrity: sha512-Oq65S5szs3+In9hVWfPksdL6EUu1+SFZK3oQINP3kMJ5zPzrdyiue+L5ClpTU/VMKVxfQTdCBsI6OVJNnaLBiA==} + '@rspack/binding-darwin-x64@1.7.5': + resolution: {integrity: sha512-RQJX4boQJUu3lo1yiN344+y8W6iSO08ARXIZqFPg66coOgfX1lhsXQSRJGQEQG4PAcYuC0GmrYFzErliifbc1Q==} cpu: [x64] os: [darwin] - '@rspack/binding-linux-arm64-gnu@1.7.4': - resolution: {integrity: sha512-sTpfCraAtYZBhdw9Xx5a19OgJ/mBELTi61utZzrO3bV6BFEulvOdmnNjpgb0xv1KATtNI8YxECohUzekk1WsOA==} + '@rspack/binding-linux-arm64-gnu@1.7.5': + resolution: {integrity: sha512-R7CO1crkJQLIQpJQzf+6DMHjvcvH/VxsatS5CG897IIT2aAfBeQuQAO+ERJko/UwSZam2K8Rxjuopcu5A2jsTQ==} cpu: [arm64] os: [linux] + libc: [glibc] - '@rspack/binding-linux-arm64-musl@1.7.4': - resolution: {integrity: sha512-sw8jZbUe13Ry0/tnUt1pSdwkaPtSzKuveq+b6/CUT26I3DKfJQoG0uJbjj2quMe4ks3jDmoGlxuRe4D/fWUoSg==} + '@rspack/binding-linux-arm64-musl@1.7.5': + resolution: {integrity: sha512-moDVFD06ISZi+wCIjJLzQSr8WO8paViacSHk+rOKQxwKI96cPoC4JFkz0+ibT2uks4i2ecs4Op48orsoguiXxw==} cpu: [arm64] os: [linux] + libc: [musl] - '@rspack/binding-linux-x64-gnu@1.7.4': - resolution: {integrity: sha512-1W6LU0wR/TxB+8pogt0pn0WRwbQmKfu9839p/VBuSkNdWR4aljAhYO6RxsLQLCLrDAqEyrpeYWsWJBvAJ4T/pA==} + '@rspack/binding-linux-x64-gnu@1.7.5': + resolution: {integrity: sha512-LGtdsdhtA5IxdMptj2NDVEbuZF4aqM99BVn3saHp92A4Fn20mW9UtQ+19PtaOFdbQBUN1GcP+cosrJ1wY56hOg==} cpu: [x64] os: [linux] + libc: [glibc] - '@rspack/binding-linux-x64-musl@1.7.4': - resolution: {integrity: sha512-rkmu8qLnm/q8J14ZQZ04SnPNzdRNgzAoKJCTbnhCzcuL5k5e20LUFfGuS6j7Io1/UdVMOjz/u7R6b9h/qA1Scw==} + '@rspack/binding-linux-x64-musl@1.7.5': + resolution: {integrity: sha512-V1HTvuj0XF/e4Xnixqf7FrxdCtTkYqn26EKwH7ExUFuVBh4SsLGr29EK5SOXBG0xdy5TSEUokMup7cuONPb3Hw==} cpu: [x64] os: [linux] + libc: [musl] - '@rspack/binding-wasm32-wasi@1.7.4': - resolution: {integrity: sha512-6BQvLbDtUVkTN5o1QYLYKAYuXavC4ER5Vn/amJEoecbM9F25MNAv28inrXs7BQ4cHSU4WW/F4yZPGnA+jUZLyw==} + '@rspack/binding-wasm32-wasi@1.7.5': + resolution: {integrity: sha512-rGNHrk2QuLFfwOTib91skuLh2aMYeTP4lgM4zanDhtt95DLDlwioETFY7FzY1WmS+Z3qnEyrgQIRp8osy0NKTw==} cpu: [wasm32] - '@rspack/binding-win32-arm64-msvc@1.7.4': - resolution: {integrity: sha512-kipggu7xVPhnAkAV7koSDVbBuuMDMA4hX60DNJKTS6fId3XNHcZqWKIsWGOt0yQ6KV7I3JRRBDotKLx6uYaRWw==} + '@rspack/binding-win32-arm64-msvc@1.7.5': + resolution: {integrity: sha512-eLyD9URS9M2pYa7sPICu9S0OuDAMnnGfuqrZYlrtgnEOEgimaG39gX6ENLwHvlNulaVMMFTNbDnS/2MELZ7r7g==} cpu: [arm64] os: [win32] - '@rspack/binding-win32-ia32-msvc@1.7.4': - resolution: {integrity: sha512-9Zdozc13AUQHqagDDHxHml1FnZZWuSj/uP+SxtlTlQaiIE9GDH3n0cUio1GUq+cBKbcXeiE3dJMGJxhiFaUsxA==} + '@rspack/binding-win32-ia32-msvc@1.7.5': + resolution: {integrity: sha512-ZT4eC8hHWzweA6S4Tl2c/z/fvhbU7Wnh+l76z+qmDy8wuA8uNrHgIb1mHLPli/wsqcjmIy8rDO9gkIBitg5I+w==} cpu: [ia32] os: [win32] - '@rspack/binding-win32-x64-msvc@1.7.4': - resolution: {integrity: sha512-3a/jZTUrvU340IuRcxul+ccsDtdrMaGq/vi4HNcWalL0H2xeOeuieBAV8AZqaRjmxMu8OyRcpcSrkHtN1ol/eA==} + '@rspack/binding-win32-x64-msvc@1.7.5': + resolution: {integrity: sha512-a2j10QS3dZvW+gdu+FXteAkChxsK2g9BRUOmpt13w22LkiGrdmOkMQyDWRgJNxUGJTlqIUqtXxs72nTTlzo2Sw==} cpu: [x64] os: [win32] - '@rspack/binding@1.7.4': - resolution: {integrity: sha512-BOACDXd9aTrdJgqa88KGxnTGdUdVLAClTCLhSvdNvQZIcaVLOB1qtW0TvqjZ19MxuQB/Cba5u/ILc5DNXxuDhg==} + '@rspack/binding@1.7.5': + resolution: {integrity: sha512-tlZfDHfGu765FBL3hIyjrr8slJZztv7rCM+KIczZS7UlJQDl1+WsDKUe/+E1Fw9SlmorLWK40+y3rLTHmMrN2A==} - '@rspack/core@1.7.4': - resolution: {integrity: sha512-6QNqcsRSy1WbAGvjA2DAEx4yyAzwrvT6vd24Kv4xdZHdvF6FmcUbr5J+mLJ1jSOXvpNhZ+RzN37JQ8fSmytEtw==} + '@rspack/core@1.7.5': + resolution: {integrity: sha512-W1ChLhjBxGg6y4AHjEVjhcww/FZJ2O9obR0EOlYcfrfQGojCAUMeQjbmaF2sse5g5m0vSCaPtNYkycZ0qVRk1A==} engines: {node: '>=18.12.0'} peerDependencies: '@swc/helpers': '>=0.5.1' @@ -1953,8 +1773,8 @@ packages: '@sideway/pinpoint@2.0.0': resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + '@sinclair/typebox@0.27.10': + resolution: {integrity: sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==} '@sindresorhus/is@4.6.0': resolution: {integrity: sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==} @@ -2074,24 +1894,28 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] '@swc/core-linux-arm64-musl@1.15.11': resolution: {integrity: sha512-PYftgsTaGnfDK4m6/dty9ryK1FbLk+LosDJ/RJR2nkXGc8rd+WenXIlvHjWULiBVnS1RsjHHOXmTS4nDhe0v0w==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] '@swc/core-linux-x64-gnu@1.15.11': resolution: {integrity: sha512-DKtnJKIHiZdARyTKiX7zdRjiDS1KihkQWatQiCHMv+zc2sfwb4Glrodx2VLOX4rsa92NLR0Sw8WLcPEMFY1szQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] '@swc/core-linux-x64-musl@1.15.11': resolution: {integrity: sha512-mUjjntHj4+8WBaiDe5UwRNHuEzLjIWBTSGTw0JT9+C9/Yyuh4KQqlcEQ3ro6GkHmBGXBFpGIj/o5VMyRWfVfWw==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] '@swc/core-win32-arm64-msvc@1.15.11': resolution: {integrity: sha512-ZkNNG5zL49YpaFzfl6fskNOSxtcZ5uOYmWBkY4wVAvgbSAQzLRVBp+xArGWh2oXlY/WgL99zQSGTv7RI5E6nzA==} @@ -2146,24 +1970,28 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] '@swc/html-linux-arm64-musl@1.15.11': resolution: {integrity: sha512-aNACh2/HPy52VbKPqHieVRDeKzkO66DQdlhiVUi+fggdn8khvllni6Xr52INeAMjYFASrTTth/3vKXMv215t3A==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] '@swc/html-linux-x64-gnu@1.15.11': resolution: {integrity: sha512-8YOar0XeRLBzA+UMMW5smGpsQamoZLtaQ5RKGfap21FxOUUXqkPhkDTRr+kBVCYb47yz3NokjTPaDGTWOYNyww==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] '@swc/html-linux-x64-musl@1.15.11': resolution: {integrity: sha512-em2Ur0uGFA/nw2JbMclXu9mLuUC7q/1J06i8FZTRHqZzNGt9Q0UMdgH9T8HkGLT5e7dZ6ROJoq1H4st6B8N3uw==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] '@swc/html-win32-arm64-msvc@1.15.11': resolution: {integrity: sha512-Xf9Vd4UsYTs4ejBwS+j9zShkyp3KQ+qfn/ZKVMKDygWjuOjU6FFXWYm93/PdTmS5qD0c58FhmoqTv+uFEZ4nxQ==} @@ -2345,11 +2173,11 @@ packages: '@types/yargs@17.0.35': resolution: {integrity: sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==} - '@typescript-eslint/eslint-plugin@8.54.0': - resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} + '@typescript-eslint/eslint-plugin@8.55.0': + resolution: {integrity: sha512-1y/MVSz0NglV1ijHC8OT49mPJ4qhPYjiK08YUQVbIOyu+5k862LKUHFkpKHWu//zmr7hDR2rhwUm6gnCGNmGBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.54.0 + '@typescript-eslint/parser': ^8.55.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -2360,12 +2188,6 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.54.0': - resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.55.0': resolution: {integrity: sha512-zRcVVPFUYWa3kNnjaZGXSu3xkKV1zXy8M4nO/pElzQhFweb7PPtluDLQtKArEOGmjXoRjnUZ29NjOiF0eCDkcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2376,28 +2198,18 @@ packages: resolution: {integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/scope-manager@8.54.0': - resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.55.0': resolution: {integrity: sha512-fVu5Omrd3jeqeQLiB9f1YsuK/iHFOwb04bCtY4BSCLgjNbOD33ZdV6KyEqplHr+IlpgT0QTZ/iJ+wT7hvTx49Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.54.0': - resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.55.0': resolution: {integrity: sha512-1R9cXqY7RQd7WuqSN47PK9EDpgFUK3VqdmbYrvWJZYDd0cavROGn+74ktWBlmJ13NXUQKlZ/iAEQHI/V0kKe0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.54.0': - resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} + '@typescript-eslint/type-utils@8.55.0': + resolution: {integrity: sha512-x1iH2unH4qAt6I37I2CGlsNs+B9WGxurP2uyZLRz6UJoZWDBx9cJL1xVN/FiOmHEONEg6RIufdvyT0TEYIgC5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2407,10 +2219,6 @@ packages: resolution: {integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/types@8.54.0': - resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.55.0': resolution: {integrity: sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2424,12 +2232,6 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.54.0': - resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.55.0': resolution: {integrity: sha512-EwrH67bSWdx/3aRQhCoxDaHM+CrZjotc2UCCpEDVqfCE+7OjKAGWNY2HsCSTEVvWH2clYQK8pdeLp42EVs+xQw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2442,8 +2244,8 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - '@typescript-eslint/utils@8.54.0': - resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} + '@typescript-eslint/utils@8.55.0': + resolution: {integrity: sha512-BqZEsnPGdYpgyEIkDC1BadNY8oMwckftxBT+C8W0g1iKPdeqKZBtTfnvcq0nf60u7MkjFO8RBvpRGZBPw4L2ow==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -2453,10 +2255,6 @@ packages: resolution: {integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@typescript-eslint/visitor-keys@8.54.0': - resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.55.0': resolution: {integrity: sha512-AxNRwEie8Nn4eFS1FzDMJWIISMGoXMb037sgCBJ3UR6o0fQTzr2tqN9WT+DkWJPhIdQCfV7T6D387566VtnCJA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2571,8 +2369,8 @@ packages: peerDependencies: algoliasearch: '>= 3.1 < 6' - algoliasearch@5.47.0: - resolution: {integrity: sha512-AGtz2U7zOV4DlsuYV84tLp2tBbA7RPtLA44jbVH4TTpDcc1dIWmULjHSsunlhscbzDydnjuFlNhflR3nV4VJaQ==} + algoliasearch@5.48.0: + resolution: {integrity: sha512-aD8EQC6KEman6/S79FtPdQmB7D4af/etcRL/KwiKFKgAE62iU8c5PeEQvpvIcBPurC3O/4Lj78nOl7ZcoazqSw==} engines: {node: '>= 14.0.0'} ansi-align@3.0.1: @@ -2616,10 +2414,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.6: - resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==} - engines: {node: '>=10'} - array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} engines: {node: '>= 0.4'} @@ -2818,8 +2612,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001766: - resolution: {integrity: sha512-4C0lfJ0/YPjJQHagaE9x2Elb69CIqEPZeG0anQt9SIvIoOH4a4uaRl73IavyO+0qZh6MDLH//DrXThEYKHkmYA==} + caniuse-lite@1.0.30001769: + resolution: {integrity: sha512-BCfFL1sHijQlBGWBMuJyhZUhzo7wer5sVj9hqekB/7xn0Ypy+pER/edCYQm4exbXj4WiySGp40P8UuTh6w1srg==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3198,8 +2992,8 @@ packages: resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} engines: {node: '>=18'} - default-browser@5.4.0: - resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} engines: {node: '>=18'} defer-to-connect@2.0.1: @@ -3242,9 +3036,6 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - detect-node@2.1.0: resolution: {integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==} @@ -3314,8 +3105,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.283: - resolution: {integrity: sha512-3vifjt1HgrGW/h76UEeny+adYApveS9dH2h3p57JYzBSXJIKUJAvtmIytDKjcSCt9xHfrNCFJ7gts6vkhuq++w==} + electron-to-chromium@1.5.286: + resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -3343,10 +3134,6 @@ packages: encoding-sniffer@0.2.1: resolution: {integrity: sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==} - enhanced-resolve@5.18.4: - resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} - engines: {node: '>=10.13.0'} - enhanced-resolve@5.19.0: resolution: {integrity: sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==} engines: {node: '>=10.13.0'} @@ -3676,6 +3463,20 @@ packages: fraction.js@5.3.4: resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + framer-motion@12.34.0: + resolution: {integrity: sha512-+/H49owhzkzQyxtn7nZeF4kdH++I2FWrESQ184Zbcw5cEqNHYkE5yxWxcTLSj5lNx3NWdbIRy5FHqUvetD8FWg==} + peerDependencies: + '@emotion/is-prop-valid': '*' + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + peerDependenciesMeta: + '@emotion/is-prop-valid': + optional: true + react: + optional: true + react-dom: + optional: true + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -3718,10 +3519,6 @@ packages: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - get-own-enumerable-property-symbols@3.0.2: resolution: {integrity: sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==} @@ -3839,9 +3636,6 @@ packages: hast-util-from-parse5@8.0.3: resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==} - hast-util-is-element@3.0.0: - resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==} - hast-util-parse-selector@4.0.0: resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==} @@ -3857,9 +3651,6 @@ packages: hast-util-to-parse5@8.0.1: resolution: {integrity: sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==} - hast-util-to-text@4.0.2: - resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==} - hast-util-whitespace@3.0.0: resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} @@ -3876,10 +3667,6 @@ packages: hermes-parser@0.25.1: resolution: {integrity: sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==} - highlight.js@11.11.1: - resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} - engines: {node: '>=12.0.0'} - history@4.10.1: resolution: {integrity: sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==} @@ -3906,9 +3693,6 @@ packages: resolution: {integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==} engines: {node: '>=8'} - html-url-attributes@3.0.1: - resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} - html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} @@ -4404,24 +4188,28 @@ packages: engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] lightningcss-linux-arm64-musl@1.31.1: resolution: {integrity: sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==} engines: {node: '>= 12.0.0'} cpu: [arm64] os: [linux] + libc: [musl] lightningcss-linux-x64-gnu@1.31.1: resolution: {integrity: sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [glibc] lightningcss-linux-x64-musl@1.31.1: resolution: {integrity: sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==} engines: {node: '>= 12.0.0'} cpu: [x64] os: [linux] + libc: [musl] lightningcss-win32-arm64-msvc@1.31.1: resolution: {integrity: sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==} @@ -4491,17 +4279,9 @@ packages: resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lowlight@3.3.0: - resolution: {integrity: sha512-0JNhgFoPvP6U6lE/UdVsSq99tn6DhjjpAj5MxG49ewd2mOBVtwWYIT8ClyABhq198aXXODMU6Ox8DrGy/CpTZQ==} - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lucide-react@0.563.0: - resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==} - peerDependencies: - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0 - lunr-languages@1.14.0: resolution: {integrity: sha512-hWUAb2KqM3L7J5bcrngszzISY4BxrXn/Xhbb9TTCJYEGqlR1nG67/M14sp09+PTIRklobrn57IAxcdcO/ZFyNA==} @@ -4798,6 +4578,12 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + motion-dom@12.34.0: + resolution: {integrity: sha512-Lql3NuEcScRDxTAO6GgUsRHBZOWI/3fnMlkMcH5NftzcN37zJta+bpbMAV9px4Nj057TuvRooMK7QrzMCgtz6Q==} + + motion-utils@12.29.2: + resolution: {integrity: sha512-G3kc34H2cX2gI63RqU+cZq+zWRRPSsNIOjpdl9TN4AQwC4sgwYPl/Q/Obf/d53nOm569T0fYK+tcoSV50BWx8A==} + mrmime@2.0.1: resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} engines: {node: '>=10'} @@ -4908,12 +4694,6 @@ packages: resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} engines: {node: '>=6'} - open-ask-ai@0.7.3: - resolution: {integrity: sha512-UxV0HGds4TEUTKQ4B2Ip2uI0sE4UnKhE8Rj1rjfheOXKKWflpgAMsB+jBbiT648zzUfkuS6MHrMrrF5Ee8RiIA==} - peerDependencies: - react: ^18.0.0 || ^19.0.0 - react-dom: ^18.0.0 || ^19.0.0 - open@10.2.0: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} @@ -5575,32 +5355,6 @@ packages: react-loadable: '*' webpack: '>=4.41.1 || 5.x' - react-markdown@10.1.0: - resolution: {integrity: sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ==} - peerDependencies: - '@types/react': '>=18' - react: '>=18' - - react-remove-scroll-bar@2.3.8: - resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.7.2: - resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - react-router-config@5.1.1: resolution: {integrity: sha512-DuanZjaD8mQp1ppHjgnnUnyOlqYXZVjnov/JzFhjLEwd3Z4dYjMSnqrEzzGThH47vpCOqPPwJM2FtthLeJ8Pbg==} peerDependencies: @@ -5617,16 +5371,6 @@ packages: peerDependencies: react: '>=15' - react-style-singleton@2.2.3: - resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - react@19.2.4: resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} engines: {node: '>=0.10.0'} @@ -5693,9 +5437,6 @@ packages: resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true - rehype-highlight@7.0.2: - resolution: {integrity: sha512-k158pK7wdC2qL3M5NcZROZ2tR/l7zOzjxXd5VGdcfIyoijjQqpHd3JKtYSBDpDZ38UI2WJWuFAtkMDxmx5kstA==} - rehype-raw@7.0.0: resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==} @@ -5830,9 +5571,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - search-insights@2.17.3: - resolution: {integrity: sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==} - section-matter@1.0.0: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} @@ -5852,11 +5590,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -6292,9 +6025,6 @@ packages: resolution: {integrity: sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==} engines: {node: '>=12'} - unist-util-find-after@5.0.0: - resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==} - unist-util-is@4.1.0: resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==} @@ -6353,26 +6083,6 @@ packages: file-loader: optional: true - use-callback-ref@1.3.3: - resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.3: - resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -6456,16 +6166,6 @@ packages: resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} - webpack@5.104.1: - resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} - engines: {node: '>=10.13.0'} - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack@5.105.0: resolution: {integrity: sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw==} engines: {node: '>=10.13.0'} @@ -6603,91 +6303,112 @@ packages: snapshots: - '@algolia/abtesting@1.13.0': + '@algolia/abtesting@1.14.0': + dependencies: + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 + + '@algolia/autocomplete-core@1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0)': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/autocomplete-plugin-algolia-insights': 1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0) + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0)': + dependencies: + '@algolia/autocomplete-shared': 1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-shared@1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0)': + dependencies: + '@algolia/client-search': 5.48.0 + algoliasearch: 5.48.0 - '@algolia/client-abtesting@5.47.0': + '@algolia/client-abtesting@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/client-analytics@5.47.0': + '@algolia/client-analytics@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/client-common@5.47.0': {} + '@algolia/client-common@5.48.0': {} - '@algolia/client-insights@5.47.0': + '@algolia/client-insights@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/client-personalization@5.47.0': + '@algolia/client-personalization@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/client-query-suggestions@5.47.0': + '@algolia/client-query-suggestions@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/client-search@5.47.0': + '@algolia/client-search@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 '@algolia/events@4.0.1': {} - '@algolia/ingestion@1.47.0': + '@algolia/ingestion@1.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/monitoring@1.47.0': + '@algolia/monitoring@1.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/recommend@5.47.0': + '@algolia/recommend@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + '@algolia/client-common': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 - '@algolia/requester-browser-xhr@5.47.0': + '@algolia/requester-browser-xhr@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 + '@algolia/client-common': 5.48.0 - '@algolia/requester-fetch@5.47.0': + '@algolia/requester-fetch@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 + '@algolia/client-common': 5.48.0 - '@algolia/requester-node-http@5.47.0': + '@algolia/requester-node-http@5.48.0': dependencies: - '@algolia/client-common': 5.47.0 + '@algolia/client-common': 5.48.0 '@babel/code-frame@7.29.0': dependencies: @@ -6700,7 +6421,7 @@ snapshots: '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) '@babel/helpers': 7.28.6 @@ -6717,7 +6438,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.29.0': + '@babel/generator@7.29.1': dependencies: '@babel/parser': 7.29.0 '@babel/types': 7.29.0 @@ -7428,7 +7149,7 @@ snapshots: '@babel/traverse@7.29.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 '@babel/parser': 7.29.0 '@babel/template': 7.28.6 @@ -7756,28 +7477,31 @@ snapshots: '@discoveryjs/json-ext@0.5.7': {} - '@docsearch/core@4.5.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docsearch/core@4.5.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': optionalDependencies: '@types/react': 19.2.13 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - '@docsearch/css@4.5.3': {} + '@docsearch/css@4.5.4': {} - '@docsearch/react@4.5.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)': + '@docsearch/react@4.5.4(@algolia/client-search@5.48.0)(@types/react@19.2.13)(algoliasearch@5.48.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@docsearch/core': 4.5.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docsearch/css': 4.5.3 + '@algolia/autocomplete-core': 1.19.2(@algolia/client-search@5.48.0)(algoliasearch@5.48.0) + '@docsearch/core': 4.5.4(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docsearch/css': 4.5.4 optionalDependencies: '@types/react': 19.2.13 react: 19.2.4 react-dom: 19.2.4(react@19.2.4) - search-insights: 2.17.3 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch '@docusaurus/babel@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@babel/core': 7.29.0 - '@babel/generator': 7.29.0 + '@babel/generator': 7.29.1 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.29.0) '@babel/plugin-transform-runtime': 7.29.0(@babel/core@7.29.0) '@babel/preset-env': 7.29.0(@babel/core@7.29.0) @@ -7800,7 +7524,7 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/bundler@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/bundler@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: '@babel/core': 7.29.0 '@docusaurus/babel': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -7808,24 +7532,24 @@ snapshots: '@docusaurus/logger': 3.9.2 '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.104.1) + babel-loader: 9.2.1(@babel/core@7.29.0)(webpack@5.105.0) clean-css: 5.3.3 - copy-webpack-plugin: 11.0.0(webpack@5.104.1) - css-loader: 6.11.0(@rspack/core@1.7.4)(webpack@5.104.1) - css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.104.1) + copy-webpack-plugin: 11.0.0(webpack@5.105.0) + css-loader: 6.11.0(@rspack/core@1.7.5)(webpack@5.105.0) + css-minimizer-webpack-plugin: 5.0.1(clean-css@5.3.3)(webpack@5.105.0) cssnano: 6.1.2(postcss@8.5.6) - file-loader: 6.2.0(webpack@5.104.1) + file-loader: 6.2.0(webpack@5.105.0) html-minifier-terser: 7.2.0 - mini-css-extract-plugin: 2.10.0(webpack@5.104.1) - null-loader: 4.0.1(webpack@5.104.1) + mini-css-extract-plugin: 2.10.0(webpack@5.105.0) + null-loader: 4.0.1(webpack@5.105.0) postcss: 8.5.6 - postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1) + postcss-loader: 7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.105.0) postcss-preset-env: 10.6.1(postcss@8.5.6) - terser-webpack-plugin: 5.3.16(webpack@5.104.1) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.11)(webpack@5.105.0) tslib: 2.8.1 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) - webpack: 5.104.1 - webpackbar: 6.0.1(webpack@5.104.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.0))(webpack@5.105.0) + webpack: 5.105.0(@swc/core@1.15.11) + webpackbar: 6.0.1(webpack@5.105.0) optionalDependencies: '@docusaurus/faster': 3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)) transitivePeerDependencies: @@ -7843,10 +7567,10 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/core@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: '@docusaurus/babel': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/bundler': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/bundler': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -7867,7 +7591,7 @@ snapshots: execa: 5.1.1 fs-extra: 11.3.3 html-tags: 3.3.1 - html-webpack-plugin: 5.6.6(@rspack/core@1.7.4)(webpack@5.104.1) + html-webpack-plugin: 5.6.6(@rspack/core@1.7.5)(webpack@5.105.0) leven: 3.1.0 lodash: 4.17.23 open: 8.4.2 @@ -7877,18 +7601,18 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.104.1) + react-loadable-ssr-addon-v5-slorber: 1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.0) react-router: 5.3.4(react@19.2.4) react-router-config: 5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4) react-router-dom: 5.3.4(react@19.2.4) - semver: 7.7.3 + semver: 7.7.4 serve-handler: 6.1.6 tinypool: 1.1.1 tslib: 2.8.1 update-notifier: 6.0.2 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) webpack-bundle-analyzer: 4.10.2 - webpack-dev-server: 5.2.3(debug@4.4.3)(tslib@2.8.1)(webpack@5.104.1) + webpack-dev-server: 5.2.3(debug@4.4.3)(tslib@2.8.1)(webpack@5.105.0) webpack-merge: 6.0.1 transitivePeerDependencies: - '@docusaurus/faster' @@ -7926,14 +7650,14 @@ snapshots: '@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4))': dependencies: '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@rspack/core': 1.7.4 + '@rspack/core': 1.7.5 '@swc/core': 1.15.11 '@swc/html': 1.15.11 browserslist: 4.28.1 lightningcss: 1.31.1 - swc-loader: 0.2.7(@swc/core@1.15.11)(webpack@5.104.1(@swc/core@1.15.11)) + swc-loader: 0.2.7(@swc/core@1.15.11)(webpack@5.105.0) tslib: 2.8.1 - webpack: 5.104.1(@swc/core@1.15.11) + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@swc/helpers' - esbuild @@ -7954,7 +7678,7 @@ snapshots: '@slorber/remark-comment': 1.0.0 escape-html: 1.0.3 estree-util-value-to-estree: 3.5.0 - file-loader: 6.2.0(webpack@5.104.1) + file-loader: 6.2.0(webpack@5.105.0) fs-extra: 11.3.3 image-size: 2.0.2 mdast-util-mdx: 3.0.0 @@ -7970,9 +7694,9 @@ snapshots: tslib: 2.8.1 unified: 11.0.5 unist-util-visit: 5.1.0 - url-loader: 4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1) + url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.0))(webpack@5.105.0) vfile: 6.0.3 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@swc/core' - esbuild @@ -7998,13 +7722,13 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-blog@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8020,7 +7744,7 @@ snapshots: tslib: 2.8.1 unist-util-visit: 5.1.0 utility-types: 3.11.0 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -8039,13 +7763,13 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8060,7 +7784,7 @@ snapshots: schema-dts: 1.1.5 tslib: 2.8.1 utility-types: 3.11.0 - webpack: 5.105.0 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -8079,9 +7803,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-content-pages@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-content-pages@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8090,7 +7814,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -8109,9 +7833,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-css-cascade-layers@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-css-cascade-layers@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8136,9 +7860,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-debug@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-debug@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) fs-extra: 11.3.3 @@ -8164,9 +7888,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-analytics@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-analytics@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -8190,9 +7914,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-gtag@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-gtag@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/gtag.js': 0.0.12 @@ -8217,9 +7941,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-google-tag-manager@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-google-tag-manager@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -8243,9 +7967,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-sitemap@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-sitemap@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8274,9 +7998,9 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/plugin-svgr@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/plugin-svgr@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8285,7 +8009,7 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -8304,26 +8028,27 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/preset-classic@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': - dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-css-cascade-layers': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-debug': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-analytics': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-gtag': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-google-tag-manager': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-sitemap': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-svgr': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-classic': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/theme-search-algolia': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3) + '@docusaurus/preset-classic@3.9.2(@algolia/client-search@5.48.0)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + dependencies: + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-css-cascade-layers': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-debug': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-analytics': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-gtag': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-google-tag-manager': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-sitemap': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-svgr': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-classic': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/theme-search-algolia': 3.9.2(@algolia/client-search@5.48.0)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) transitivePeerDependencies: + - '@algolia/client-search' - '@docusaurus/faster' - '@mdx-js/react' - '@parcel/css' @@ -8348,16 +8073,16 @@ snapshots: '@types/react': 19.2.13 react: 19.2.4 - '@docusaurus/theme-classic@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@docusaurus/theme-classic@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-blog': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-pages': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 '@docusaurus/types': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8395,11 +8120,11 @@ snapshots: - utf-8-validate - webpack-cli - '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: '@docusaurus/mdx-loader': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/module-type-aliases': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/history': 4.7.11 @@ -8419,18 +8144,18 @@ snapshots: - uglify-js - webpack-cli - '@docusaurus/theme-search-algolia@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3)(typescript@5.9.3)': + '@docusaurus/theme-search-algolia@3.9.2(@algolia/client-search@5.48.0)(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docsearch/react': 4.5.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(search-insights@2.17.3) - '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docsearch/react': 4.5.4(@algolia/client-search@5.48.0)(@types/react@19.2.13)(algoliasearch@5.48.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/core': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) '@docusaurus/logger': 3.9.2 - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-validation': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - algoliasearch: 5.47.0 - algoliasearch-helper: 3.27.0(algoliasearch@5.47.0) + algoliasearch: 5.48.0 + algoliasearch-helper: 3.27.0(algoliasearch@5.48.0) clsx: 2.1.1 eta: 2.2.0 fs-extra: 11.3.3 @@ -8440,6 +8165,7 @@ snapshots: tslib: 2.8.1 utility-types: 3.11.0 transitivePeerDependencies: + - '@algolia/client-search' - '@docusaurus/faster' - '@mdx-js/react' - '@parcel/css' @@ -8478,7 +8204,7 @@ snapshots: react-dom: 19.2.4(react@19.2.4) react-helmet-async: '@slorber/react-helmet-async@1.3.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)' utility-types: 3.11.0 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) webpack-merge: 5.10.0 transitivePeerDependencies: - '@swc/core' @@ -8541,7 +8267,7 @@ snapshots: tslib: 2.8.1 url-loader: 4.1.1(file-loader@6.2.0(webpack@5.105.0))(webpack@5.105.0) utility-types: 3.11.0 - webpack: 5.105.0 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - '@swc/core' - esbuild @@ -8556,10 +8282,10 @@ snapshots: cssesc: 3.0.0 immediate: 3.3.0 - '@easyops-cn/docusaurus-search-local@0.54.0(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': + '@easyops-cn/docusaurus-search-local@0.52.3(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@docusaurus/theme-common@3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)': dependencies: - '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) - '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.4)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@docusaurus/plugin-content-docs': 3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(debug@4.4.3)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + '@docusaurus/theme-common': 3.9.2(@docusaurus/plugin-content-docs@3.9.2(@docusaurus/faster@3.9.2(@docusaurus/types@3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)))(@mdx-js/react@3.1.1(@types/react@19.2.13)(react@19.2.4))(@rspack/core@1.7.5)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/theme-translations': 3.9.2 '@docusaurus/utils': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@docusaurus/utils-common': 3.9.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -8578,8 +8304,6 @@ snapshots: react: 19.2.4 react-dom: 19.2.4(react@19.2.4) tslib: 2.8.1 - optionalDependencies: - open-ask-ai: 0.7.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) transitivePeerDependencies: - '@docusaurus/faster' - '@mdx-js/react' @@ -8587,8 +8311,6 @@ snapshots: - '@rspack/core' - '@swc/core' - '@swc/css' - - '@types/react' - - '@types/react-dom' - bufferutil - csso - esbuild @@ -8701,7 +8423,7 @@ snapshots: '@jest/schemas@29.6.3': dependencies: - '@sinclair/typebox': 0.27.8 + '@sinclair/typebox': 0.27.10 '@jest/types@29.6.3': dependencies: @@ -8740,7 +8462,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/base64@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/base64@17.67.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -8748,7 +8470,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/buffers@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/buffers@17.67.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -8756,7 +8478,7 @@ snapshots: dependencies: tslib: 2.8.1 - '@jsonjoy.com/codegen@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/codegen@17.67.0(tslib@2.8.1)': dependencies: tslib: 2.8.1 @@ -8810,10 +8532,10 @@ snapshots: '@jsonjoy.com/fs-snapshot@4.56.10(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) '@jsonjoy.com/fs-node-utils': 4.56.10(tslib@2.8.1) - '@jsonjoy.com/json-pack': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/json-pack': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) tslib: 2.8.1 '@jsonjoy.com/json-pack@1.21.0(tslib@2.8.1)': @@ -8828,13 +8550,13 @@ snapshots: tree-dump: 1.1.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/json-pack@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/json-pack@17.67.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/base64': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/json-pointer': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/base64': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/json-pointer': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) hyperdyperid: 1.2.0 thingies: 2.5.0(tslib@2.8.1) tree-dump: 1.1.0(tslib@2.8.1) @@ -8846,9 +8568,9 @@ snapshots: '@jsonjoy.com/util': 1.9.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/json-pointer@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/json-pointer@17.67.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/util': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/util': 17.67.0(tslib@2.8.1) tslib: 2.8.1 '@jsonjoy.com/util@1.9.0(tslib@2.8.1)': @@ -8857,10 +8579,10 @@ snapshots: '@jsonjoy.com/codegen': 1.0.0(tslib@2.8.1) tslib: 2.8.1 - '@jsonjoy.com/util@17.65.0(tslib@2.8.1)': + '@jsonjoy.com/util@17.67.0(tslib@2.8.1)': dependencies: - '@jsonjoy.com/buffers': 17.65.0(tslib@2.8.1) - '@jsonjoy.com/codegen': 17.65.0(tslib@2.8.1) + '@jsonjoy.com/buffers': 17.67.0(tslib@2.8.1) + '@jsonjoy.com/codegen': 17.67.0(tslib@2.8.1) tslib: 2.8.1 '@leichtgewicht/ip-codec@2.0.5': {} @@ -9119,244 +8841,55 @@ snapshots: '@polka/url@1.0.0-next.29': {} - '@radix-ui/number@1.1.1': + '@rspack/binding-darwin-arm64@1.7.5': optional: true - '@radix-ui/primitive@1.1.3': + '@rspack/binding-darwin-x64@1.7.5': optional: true - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-linux-arm64-gnu@1.7.5': optional: true - '@radix-ui/react-context@1.1.2(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-linux-arm64-musl@1.7.5': optional: true - '@radix-ui/react-dialog@1.1.15(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.13)(react@19.2.4) - aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.13)(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-linux-x64-gnu@1.7.5': optional: true - '@radix-ui/react-direction@1.1.1(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-linux-x64-musl@1.7.5': optional: true - '@radix-ui/react-dismissable-layer@1.1.11(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@rspack/binding-wasm32-wasi@1.7.5': dependencies: - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 + '@napi-rs/wasm-runtime': 1.0.7 optional: true - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-win32-arm64-msvc@1.7.5': optional: true - '@radix-ui/react-focus-scope@1.1.7(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-id@1.1.1(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-win32-ia32-msvc@1.7.5': optional: true - '@radix-ui/react-portal@1.1.9(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 + '@rspack/binding-win32-x64-msvc@1.7.5': optional: true - '@radix-ui/react-presence@1.1.5(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@rspack/binding@1.7.5': optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-primitive@2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-scroll-area@1.2.10(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@radix-ui/number': 1.1.1 - '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-slot@1.2.3(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-slot@1.2.4(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.13)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.13)(react@19.2.4)': - dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.13)(react@19.2.4) - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.13)(react@19.2.4)': - dependencies: - react: 19.2.4 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - '@rspack/binding-darwin-arm64@1.7.4': - optional: true - - '@rspack/binding-darwin-x64@1.7.4': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.7.4': - optional: true - - '@rspack/binding-linux-arm64-musl@1.7.4': - optional: true - - '@rspack/binding-linux-x64-gnu@1.7.4': - optional: true - - '@rspack/binding-linux-x64-musl@1.7.4': - optional: true - - '@rspack/binding-wasm32-wasi@1.7.4': - dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - - '@rspack/binding-win32-arm64-msvc@1.7.4': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.7.4': - optional: true - - '@rspack/binding-win32-x64-msvc@1.7.4': - optional: true - - '@rspack/binding@1.7.4': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.7.4 - '@rspack/binding-darwin-x64': 1.7.4 - '@rspack/binding-linux-arm64-gnu': 1.7.4 - '@rspack/binding-linux-arm64-musl': 1.7.4 - '@rspack/binding-linux-x64-gnu': 1.7.4 - '@rspack/binding-linux-x64-musl': 1.7.4 - '@rspack/binding-wasm32-wasi': 1.7.4 - '@rspack/binding-win32-arm64-msvc': 1.7.4 - '@rspack/binding-win32-ia32-msvc': 1.7.4 - '@rspack/binding-win32-x64-msvc': 1.7.4 - - '@rspack/core@1.7.4': + '@rspack/binding-darwin-arm64': 1.7.5 + '@rspack/binding-darwin-x64': 1.7.5 + '@rspack/binding-linux-arm64-gnu': 1.7.5 + '@rspack/binding-linux-arm64-musl': 1.7.5 + '@rspack/binding-linux-x64-gnu': 1.7.5 + '@rspack/binding-linux-x64-musl': 1.7.5 + '@rspack/binding-wasm32-wasi': 1.7.5 + '@rspack/binding-win32-arm64-msvc': 1.7.5 + '@rspack/binding-win32-ia32-msvc': 1.7.5 + '@rspack/binding-win32-x64-msvc': 1.7.5 + + '@rspack/core@1.7.5': dependencies: '@module-federation/runtime-tools': 0.22.0 - '@rspack/binding': 1.7.4 + '@rspack/binding': 1.7.5 '@rspack/lite-tapable': 1.1.0 '@rspack/lite-tapable@1.1.0': {} @@ -9369,7 +8902,7 @@ snapshots: '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.27.8': {} + '@sinclair/typebox@0.27.10': {} '@sindresorhus/is@4.6.0': {} @@ -9762,14 +9295,14 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.55.0(@typescript-eslint/parser@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3))(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 '@typescript-eslint/parser': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.54.0 + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/type-utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.55.0 eslint: 9.39.2(jiti@1.21.7) ignore: 7.0.5 natural-compare: 1.4.0 @@ -9790,15 +9323,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.54.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) - '@typescript-eslint/types': 8.55.0 - debug: 4.4.3 - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/project-service@8.55.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.55.0(typescript@5.9.3) @@ -9813,29 +9337,20 @@ snapshots: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@8.54.0': - dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/scope-manager@8.55.0': dependencies: '@typescript-eslint/types': 8.55.0 '@typescript-eslint/visitor-keys': 8.55.0 - '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.55.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.54.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.54.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.2(jiti@1.21.7) ts-api-utils: 2.4.0(typescript@5.9.3) @@ -9845,8 +9360,6 @@ snapshots: '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@8.54.0': {} - '@typescript-eslint/types@8.55.0': {} '@typescript-eslint/typescript-estree@5.62.0(typescript@5.9.3)': @@ -9856,28 +9369,13 @@ snapshots: debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.7.3 + semver: 7.7.4 tsutils: 3.21.0(typescript@5.9.3) optionalDependencies: typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.54.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.54.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.9.3) - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/visitor-keys': 8.54.0 - debug: 4.4.3 - minimatch: 9.0.5 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/typescript-estree@8.55.0(typescript@5.9.3)': dependencies: '@typescript-eslint/project-service': 8.55.0(typescript@5.9.3) @@ -9903,17 +9401,17 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.9.3) eslint: 9.39.2(jiti@1.21.7) eslint-scope: 5.1.1 - semver: 7.7.3 + semver: 7.7.4 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.54.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': + '@typescript-eslint/utils@8.55.0(eslint@9.39.2(jiti@1.21.7))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.2(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/types': 8.54.0 - '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.55.0 + '@typescript-eslint/types': 8.55.0 + '@typescript-eslint/typescript-estree': 8.55.0(typescript@5.9.3) eslint: 9.39.2(jiti@1.21.7) typescript: 5.9.3 transitivePeerDependencies: @@ -9924,11 +9422,6 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.54.0': - dependencies: - '@typescript-eslint/types': 8.54.0 - eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.55.0': dependencies: '@typescript-eslint/types': 8.55.0 @@ -10069,27 +9562,27 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - algoliasearch-helper@3.27.0(algoliasearch@5.47.0): + algoliasearch-helper@3.27.0(algoliasearch@5.48.0): dependencies: '@algolia/events': 4.0.1 - algoliasearch: 5.47.0 - - algoliasearch@5.47.0: - dependencies: - '@algolia/abtesting': 1.13.0 - '@algolia/client-abtesting': 5.47.0 - '@algolia/client-analytics': 5.47.0 - '@algolia/client-common': 5.47.0 - '@algolia/client-insights': 5.47.0 - '@algolia/client-personalization': 5.47.0 - '@algolia/client-query-suggestions': 5.47.0 - '@algolia/client-search': 5.47.0 - '@algolia/ingestion': 1.47.0 - '@algolia/monitoring': 1.47.0 - '@algolia/recommend': 5.47.0 - '@algolia/requester-browser-xhr': 5.47.0 - '@algolia/requester-fetch': 5.47.0 - '@algolia/requester-node-http': 5.47.0 + algoliasearch: 5.48.0 + + algoliasearch@5.48.0: + dependencies: + '@algolia/abtesting': 1.14.0 + '@algolia/client-abtesting': 5.48.0 + '@algolia/client-analytics': 5.48.0 + '@algolia/client-common': 5.48.0 + '@algolia/client-insights': 5.48.0 + '@algolia/client-personalization': 5.48.0 + '@algolia/client-query-suggestions': 5.48.0 + '@algolia/client-search': 5.48.0 + '@algolia/ingestion': 1.48.0 + '@algolia/monitoring': 1.48.0 + '@algolia/recommend': 5.48.0 + '@algolia/requester-browser-xhr': 5.48.0 + '@algolia/requester-fetch': 5.48.0 + '@algolia/requester-node-http': 5.48.0 ansi-align@3.0.1: dependencies: @@ -10124,11 +9617,6 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.6: - dependencies: - tslib: 2.8.1 - optional: true - array-buffer-byte-length@1.0.2: dependencies: call-bound: 1.0.4 @@ -10203,7 +9691,7 @@ snapshots: autoprefixer@10.4.24(postcss@8.5.6): dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001766 + caniuse-lite: 1.0.30001769 fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.6 @@ -10213,12 +9701,12 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.104.1): + babel-loader@9.2.1(@babel/core@7.29.0)(webpack@5.105.0): dependencies: '@babel/core': 7.29.0 find-cache-dir: 4.0.0 schema-utils: 4.3.3 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) babel-plugin-dynamic-import-node@2.3.3: dependencies: @@ -10330,8 +9818,8 @@ snapshots: browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 - caniuse-lite: 1.0.30001766 - electron-to-chromium: 1.5.283 + caniuse-lite: 1.0.30001769 + electron-to-chromium: 1.5.286 node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -10390,11 +9878,11 @@ snapshots: caniuse-api@3.0.0: dependencies: browserslist: 4.28.1 - caniuse-lite: 1.0.30001766 + caniuse-lite: 1.0.30001769 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001766: {} + caniuse-lite@1.0.30001769: {} ccount@2.0.1: {} @@ -10565,7 +10053,7 @@ snapshots: cookie@0.7.2: {} - copy-webpack-plugin@11.0.0(webpack@5.104.1): + copy-webpack-plugin@11.0.0(webpack@5.105.0): dependencies: fast-glob: 3.3.3 glob-parent: 6.0.2 @@ -10573,7 +10061,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) core-js-compat@3.48.0: dependencies: @@ -10620,7 +10108,7 @@ snapshots: postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 - css-loader@6.11.0(@rspack/core@1.7.4)(webpack@5.104.1): + css-loader@6.11.0(@rspack/core@1.7.5)(webpack@5.105.0): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -10631,10 +10119,10 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - '@rspack/core': 1.7.4 - webpack: 5.104.1 + '@rspack/core': 1.7.5 + webpack: 5.105.0(@swc/core@1.15.11) - css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.104.1): + css-minimizer-webpack-plugin@5.0.1(clean-css@5.3.3)(webpack@5.105.0): dependencies: '@jridgewell/trace-mapping': 0.3.31 cssnano: 6.1.2(postcss@8.5.6) @@ -10642,7 +10130,7 @@ snapshots: postcss: 8.5.6 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) optionalDependencies: clean-css: 5.3.3 @@ -10787,7 +10275,7 @@ snapshots: default-browser-id@5.0.1: {} - default-browser@5.4.0: + default-browser@5.5.0: dependencies: bundle-name: 4.1.0 default-browser-id: 5.0.1 @@ -10820,9 +10308,6 @@ snapshots: detect-libc@2.1.2: {} - detect-node-es@1.1.0: - optional: true - detect-node@2.1.0: {} detect-port@1.6.1: @@ -10907,7 +10392,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.283: {} + electron-to-chromium@1.5.286: {} emoji-regex@10.6.0: {} @@ -10928,11 +10413,6 @@ snapshots: iconv-lite: 0.6.3 whatwg-encoding: 3.1.1 - enhanced-resolve@5.18.4: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.3.0 - enhanced-resolve@5.19.0: dependencies: graceful-fs: 4.2.11 @@ -11341,17 +10821,11 @@ snapshots: dependencies: flat-cache: 4.0.1 - file-loader@6.2.0(webpack@5.104.1): - dependencies: - loader-utils: 2.0.4 - schema-utils: 3.3.0 - webpack: 5.104.1 - file-loader@6.2.0(webpack@5.105.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.105.0 + webpack: 5.105.0(@swc/core@1.15.11) fill-range@7.1.1: dependencies: @@ -11409,6 +10883,15 @@ snapshots: fraction.js@5.3.4: {} + framer-motion@12.34.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + dependencies: + motion-dom: 12.34.0 + motion-utils: 12.29.2 + tslib: 2.8.1 + optionalDependencies: + react: 19.2.4 + react-dom: 19.2.4(react@19.2.4) + fresh@0.5.2: {} fs-extra@10.1.0: @@ -11458,9 +10941,6 @@ snapshots: hasown: 2.0.2 math-intrinsics: 1.1.0 - get-nonce@1.0.1: - optional: true - get-own-enumerable-property-symbols@3.0.2: {} get-proto@1.0.1: @@ -11590,11 +11070,6 @@ snapshots: vfile-location: 5.0.3 web-namespaces: 2.0.1 - hast-util-is-element@3.0.0: - dependencies: - '@types/hast': 3.0.4 - optional: true - hast-util-parse-selector@4.0.0: dependencies: '@types/hast': 3.0.4 @@ -11666,14 +11141,6 @@ snapshots: web-namespaces: 2.0.1 zwitch: 2.0.4 - hast-util-to-text@4.0.2: - dependencies: - '@types/hast': 3.0.4 - '@types/unist': 3.0.3 - hast-util-is-element: 3.0.0 - unist-util-find-after: 5.0.0 - optional: true - hast-util-whitespace@3.0.0: dependencies: '@types/hast': 3.0.4 @@ -11694,9 +11161,6 @@ snapshots: dependencies: hermes-estree: 0.25.1 - highlight.js@11.11.1: - optional: true - history@4.10.1: dependencies: '@babel/runtime': 7.28.6 @@ -11741,12 +11205,9 @@ snapshots: html-tags@3.3.1: {} - html-url-attributes@3.0.1: - optional: true - html-void-elements@3.0.0: {} - html-webpack-plugin@5.6.6(@rspack/core@1.7.4)(webpack@5.104.1): + html-webpack-plugin@5.6.6(@rspack/core@1.7.5)(webpack@5.105.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 @@ -11754,8 +11215,8 @@ snapshots: pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: - '@rspack/core': 1.7.4 - webpack: 5.104.1 + '@rspack/core': 1.7.5 + webpack: 5.105.0(@swc/core@1.15.11) htmlparser2@10.1.0: dependencies: @@ -12272,22 +11733,10 @@ snapshots: lowercase-keys@3.0.0: {} - lowlight@3.3.0: - dependencies: - '@types/hast': 3.0.4 - devlop: 1.1.0 - highlight.js: 11.11.1 - optional: true - lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lucide-react@0.563.0(react@19.2.4): - dependencies: - react: 19.2.4 - optional: true - lunr-languages@1.14.0: {} lunr@2.3.9: {} @@ -12855,11 +12304,11 @@ snapshots: mimic-response@4.0.0: {} - mini-css-extract-plugin@2.10.0(webpack@5.104.1): + mini-css-extract-plugin@2.10.0(webpack@5.105.0): dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) minimalistic-assert@1.0.1: {} @@ -12873,6 +12322,12 @@ snapshots: minimist@1.2.8: {} + motion-dom@12.34.0: + dependencies: + motion-utils: 12.29.2 + + motion-utils@12.29.2: {} + mrmime@2.0.1: {} ms@2.0.0: {} @@ -12922,11 +12377,11 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@4.0.1(webpack@5.104.1): + null-loader@4.0.1(webpack@5.105.0): dependencies: loader-utils: 2.0.4 schema-utils: 3.3.0 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) object-assign@4.1.1: {} @@ -12976,27 +12431,9 @@ snapshots: dependencies: mimic-fn: 2.1.0 - open-ask-ai@0.7.3(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): - dependencies: - '@radix-ui/react-dialog': 1.1.15(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-scroll-area': 1.2.10(@types/react@19.2.13)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.13)(react@19.2.4) - lowlight: 3.3.0 - lucide-react: 0.563.0(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-markdown: 10.1.0(@types/react@19.2.13)(react@19.2.4) - rehype-highlight: 7.0.2 - remark-gfm: 4.0.1 - transitivePeerDependencies: - - '@types/react' - - '@types/react-dom' - - supports-color - optional: true - open@10.2.0: dependencies: - default-browser: 5.4.0 + default-browser: 5.5.0 define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 wsl-utils: 0.1.0 @@ -13301,13 +12738,13 @@ snapshots: '@csstools/utilities': 2.0.0(postcss@8.5.6) postcss: 8.5.6 - postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.104.1): + postcss-loader@7.3.4(postcss@8.5.6)(typescript@5.9.3)(webpack@5.105.0): dependencies: cosmiconfig: 8.3.6(typescript@5.9.3) jiti: 1.21.7 postcss: 8.5.6 semver: 7.7.4 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - typescript @@ -13700,51 +13137,11 @@ snapshots: dependencies: react: 19.2.4 - react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.104.1): + react-loadable-ssr-addon-v5-slorber@1.0.1(@docusaurus/react-loadable@6.0.0(react@19.2.4))(webpack@5.105.0): dependencies: '@babel/runtime': 7.28.6 react-loadable: '@docusaurus/react-loadable@6.0.0(react@19.2.4)' - webpack: 5.104.1 - - react-markdown@10.1.0(@types/react@19.2.13)(react@19.2.4): - dependencies: - '@types/hast': 3.0.4 - '@types/mdast': 4.0.4 - '@types/react': 19.2.13 - devlop: 1.1.0 - hast-util-to-jsx-runtime: 2.3.6 - html-url-attributes: 3.0.1 - mdast-util-to-hast: 13.2.1 - react: 19.2.4 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - unified: 11.0.5 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - optional: true - - react-remove-scroll-bar@2.3.8(@types/react@19.2.13)(react@19.2.4): - dependencies: - react: 19.2.4 - react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.2.4) - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - react-remove-scroll@2.7.2(@types/react@19.2.13)(react@19.2.4): - dependencies: - react: 19.2.4 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.13)(react@19.2.4) - react-style-singleton: 2.2.3(@types/react@19.2.13)(react@19.2.4) - tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.13)(react@19.2.4) - use-sidecar: 1.1.3(@types/react@19.2.13)(react@19.2.4) - optionalDependencies: - '@types/react': 19.2.13 - optional: true + webpack: 5.105.0(@swc/core@1.15.11) react-router-config@5.1.1(react-router@5.3.4(react@19.2.4))(react@19.2.4): dependencies: @@ -13776,15 +13173,6 @@ snapshots: tiny-invariant: 1.3.3 tiny-warning: 1.0.3 - react-style-singleton@2.2.3(@types/react@19.2.13)(react@19.2.4): - dependencies: - get-nonce: 1.0.1 - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - react@19.2.4: {} readable-stream@2.3.8: @@ -13887,15 +13275,6 @@ snapshots: dependencies: jsesc: 3.1.0 - rehype-highlight@7.0.2: - dependencies: - '@types/hast': 3.0.4 - hast-util-to-text: 4.0.2 - lowlight: 3.3.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - optional: true - rehype-raw@7.0.0: dependencies: '@types/hast': 3.0.4 @@ -14078,8 +13457,6 @@ snapshots: ajv-formats: 2.1.1 ajv-keywords: 5.1.0(ajv@8.17.1) - search-insights@2.17.3: {} - section-matter@1.0.0: dependencies: extend-shallow: 2.0.1 @@ -14098,8 +13475,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} - semver@7.7.4: {} send@0.19.2: @@ -14435,43 +13810,25 @@ snapshots: csso: 5.0.5 picocolors: 1.1.1 - swc-loader@0.2.7(@swc/core@1.15.11)(webpack@5.104.1(@swc/core@1.15.11)): + swc-loader@0.2.7(@swc/core@1.15.11)(webpack@5.105.0): dependencies: '@swc/core': 1.15.11 '@swc/counter': 0.1.3 - webpack: 5.104.1(@swc/core@1.15.11) + webpack: 5.105.0(@swc/core@1.15.11) tapable@2.3.0: {} - terser-webpack-plugin@5.3.16(@swc/core@1.15.11)(webpack@5.104.1(@swc/core@1.15.11)): + terser-webpack-plugin@5.3.16(@swc/core@1.15.11)(webpack@5.105.0): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.46.0 - webpack: 5.104.1(@swc/core@1.15.11) + webpack: 5.105.0(@swc/core@1.15.11) optionalDependencies: '@swc/core': 1.15.11 - terser-webpack-plugin@5.3.16(webpack@5.104.1): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.46.0 - webpack: 5.104.1 - - terser-webpack-plugin@5.3.16(webpack@5.105.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.3 - serialize-javascript: 6.0.2 - terser: 5.46.0 - webpack: 5.105.0 - terser@5.46.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -14621,12 +13978,6 @@ snapshots: dependencies: crypto-random-string: 4.0.0 - unist-util-find-after@5.0.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - optional: true - unist-util-is@4.1.0: {} unist-util-is@6.0.1: @@ -14690,7 +14041,7 @@ snapshots: is-yarn-global: 0.4.1 latest-version: 7.0.0 pupa: 3.3.0 - semver: 7.7.3 + semver: 7.7.4 semver-diff: 4.0.0 xdg-basedir: 5.1.0 @@ -14698,41 +14049,15 @@ snapshots: dependencies: punycode: 2.3.1 - url-loader@4.1.1(file-loader@6.2.0(webpack@5.104.1))(webpack@5.104.1): - dependencies: - loader-utils: 2.0.4 - mime-types: 2.1.35 - schema-utils: 3.3.0 - webpack: 5.104.1 - optionalDependencies: - file-loader: 6.2.0(webpack@5.104.1) - url-loader@4.1.1(file-loader@6.2.0(webpack@5.105.0))(webpack@5.105.0): dependencies: loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 3.3.0 - webpack: 5.105.0 + webpack: 5.105.0(@swc/core@1.15.11) optionalDependencies: file-loader: 6.2.0(webpack@5.105.0) - use-callback-ref@1.3.3(@types/react@19.2.13)(react@19.2.4): - dependencies: - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - - use-sidecar@1.1.3(@types/react@19.2.13)(react@19.2.4): - dependencies: - detect-node-es: 1.1.0 - react: 19.2.4 - tslib: 2.8.1 - optionalDependencies: - '@types/react': 19.2.13 - optional: true - util-deprecate@1.0.2: {} utila@0.4.0: {} @@ -14791,7 +14116,7 @@ snapshots: - bufferutil - utf-8-validate - webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.104.1): + webpack-dev-middleware@7.4.5(tslib@2.8.1)(webpack@5.105.0): dependencies: colorette: 2.0.20 memfs: 4.56.10(tslib@2.8.1) @@ -14800,11 +14125,11 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.3 optionalDependencies: - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - tslib - webpack-dev-server@5.2.3(debug@4.4.3)(tslib@2.8.1)(webpack@5.104.1): + webpack-dev-server@5.2.3(debug@4.4.3)(tslib@2.8.1)(webpack@5.105.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -14832,10 +14157,10 @@ snapshots: serve-index: 1.9.2 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.104.1) + webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.105.0) ws: 8.19.0 optionalDependencies: - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) transitivePeerDependencies: - bufferutil - debug @@ -14857,71 +14182,7 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.104.1: - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.4 - es-module-lexer: 2.0.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(webpack@5.104.1) - watchpack: 2.5.1 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.104.1(@swc/core@1.15.11): - dependencies: - '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - '@webassemblyjs/ast': 1.14.1 - '@webassemblyjs/wasm-edit': 1.14.1 - '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.15.0 - acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.28.1 - chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.4 - es-module-lexer: 2.0.0 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(@swc/core@1.15.11)(webpack@5.104.1(@swc/core@1.15.11)) - watchpack: 2.5.1 - webpack-sources: 3.3.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.105.0: + webpack@5.105.0(@swc/core@1.15.11): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -14945,7 +14206,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(webpack@5.105.0) + terser-webpack-plugin: 5.3.16(@swc/core@1.15.11)(webpack@5.105.0) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: @@ -14953,7 +14214,7 @@ snapshots: - esbuild - uglify-js - webpackbar@6.0.1(webpack@5.104.1): + webpackbar@6.0.1(webpack@5.105.0): dependencies: ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -14962,7 +14223,7 @@ snapshots: markdown-table: 2.0.0 pretty-time: 1.1.0 std-env: 3.10.0 - webpack: 5.104.1 + webpack: 5.105.0(@swc/core@1.15.11) wrap-ansi: 7.0.0 websocket-driver@0.7.4: diff --git a/sidebars.js b/sidebars.js index b1d28ca..159cd6c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1,4 +1,4 @@ -/** +/** * Creating a sidebar enables you to: - create an ordered group of docs - render a sidebar for each doc of that group @@ -31,8 +31,8 @@ const sidebars = { 'getting-started/release-notes', 'getting-started/upgrade-guidance-4x-to-v41', 'getting-started/upgrade-guidance-v3x-to-v41', - 'getting-started/faq' - ] + 'getting-started/faq', + ], }, { type: 'category', @@ -44,8 +44,8 @@ const sidebars = { items: [ 'deployment-concepts/deployment-structure', 'deployment-concepts/invoke-appdeploytoolkit', - 'deployment-concepts/zero-config-deployment' - ] + 'deployment-concepts/zero-config-deployment', + ], }, { type: 'category', @@ -59,8 +59,8 @@ const sidebars = { 'usage/adding-ui-elements', 'usage/customizing-deployments', 'usage/installing-applications', - 'usage/admx-templates' - ] + 'usage/admx-templates', + ], }, { type: 'category', @@ -70,8 +70,8 @@ const sidebars = { }, collapsed: false, items: [ - 'examples/admxtemplate-LogPath'/*, - 'examples/googlechrome-configmgr'*/ + 'examples/admxtemplate-LogPath' /*, + 'examples/googlechrome-configmgr'*/, ], }, ], diff --git a/src/components/DocsVersionSelector/DocsVersionSelector.module.css b/src/components/DocsVersionSelector/DocsVersionSelector.module.css new file mode 100644 index 0000000..e522a66 --- /dev/null +++ b/src/components/DocsVersionSelector/DocsVersionSelector.module.css @@ -0,0 +1,107 @@ +.container { + position: relative; + flex-shrink: 0; + display: inline-flex; + align-items: center; + gap: var(--psadt-space-md); +} + +.label { + font-size: var(--ifm-font-size-base); + font-weight: var(--ifm-font-weight-semibold); + color: var(--ifm-color-content-secondary); + white-space: nowrap; +} + +.trigger { + display: inline-flex; + align-items: center; + gap: var(--psadt-space-sm); + padding: 0.5rem 0.75rem; + background-color: var(--ifm-color-primary); + color: var(--ifm-color-content); + border: 1px solid var(--ifm-color-primary-dark); + border-radius: var(--psadt-radius-sm); + box-shadow: var(--psadt-shadow-sm); + font-size: var(--ifm-font-size-sm); + font-weight: var(--ifm-font-weight-semibold); + font-family: var(--ifm-font-family-base); + cursor: pointer; + transition: background-color var(--psadt-transition-fast), border-color var(--psadt-transition-fast), box-shadow var(--psadt-transition-fast); + line-height: 1.25; +} + +.trigger:hover { + background-color: var(--ifm-color-primary-light); + box-shadow: var(--psadt-shadow-md); +} + + +.chevron { + transition: transform var(--psadt-transition-fast); +} + +.chevronOpen { + transform: rotate(180deg); +} + +.dropdown { + position: absolute; + right: 0; + top: calc(100%); + min-width: 140px; + margin: 0; + padding: var(--psadt-space-xs) 0; + list-style: none; + background-color: var(--ifm-color-white); + border: 1px solid var(--ifm-color-content); + border-radius: var(--psadt-radius-sm); + box-shadow: var(--psadt-shadow-lg); + z-index: 100; + opacity: 1; + -webkit-backdrop-filter: none; + backdrop-filter: none; +} + +[data-theme='dark'] .dropdown { + background-color: var(--ifm-color-emphasis-200); + border-color: var(--ifm-color-emphasis-300); +} + +.item { + display: block; + padding: 0.4rem 0.75rem; + font-size: var(--ifm-font-size-sm); + font-weight: var(--ifm-font-weight-normal); + color: var(--ifm-color-content-inverse); + cursor: pointer; + transition: background-color var(--psadt-transition-normal); +} + +.item:hover { + background-color: var(--ifm-color-primary-dark); +} + +.itemActive { + color: var(--ifm-color-content-inverse); + font-weight: var(--ifm-font-weight-bold); + background-color: var(--ifm-color-primary); +} + +.itemActive:hover { + background-color: var(--ifm-color-primary-dark); + color: var(--ifm-color-content-inverse); +} + + + +.trigger:focus-visible, +.item:focus-visible { + outline: 2px solid var(--ifm-color-primary-lightest); + outline-offset: 2px; + box-shadow: 0 0 0 4px rgba(25, 25, 25, 0.3); +} + +[data-theme='dark'] .itemActive:hover { + background-color: var(--ifm-color-primary-dark); +} diff --git a/src/components/DocsVersionSelector/index.tsx b/src/components/DocsVersionSelector/index.tsx new file mode 100644 index 0000000..23410ca --- /dev/null +++ b/src/components/DocsVersionSelector/index.tsx @@ -0,0 +1,146 @@ +import React, {useState, useRef, useEffect, useCallback} from 'react'; +import {useHistory} from '@docusaurus/router'; +import { + useVersions, + useActiveDocContext, + useDocsVersionCandidates, + useDocsPreferredVersion, +} from '@docusaurus/plugin-content-docs/client'; +import {useHistorySelector} from '@docusaurus/theme-common'; +import styles from './DocsVersionSelector.module.css'; + +function getVersionMainDoc(version) { + return version.docs.find((doc) => doc.id === version.mainDocId); +} + +function getVersionTargetDoc(version, activeDocContext) { + return ( + activeDocContext.alternateDocVersions[version.name] ?? + getVersionMainDoc(version) + ); +} + +export default function DocsVersionSelector(): React.JSX.Element | null { + const [open, setOpen] = useState(false); + const containerRef = useRef(null); + const history = useHistory(); + + const docsPluginId = undefined; // default plugin + const versions = useVersions(docsPluginId); + const activeDocContext = useActiveDocContext(docsPluginId); + const candidates = useDocsVersionCandidates(docsPluginId); + const {savePreferredVersionName} = useDocsPreferredVersion(docsPluginId); + const search = useHistorySelector((h) => h.location.search); + const hash = useHistorySelector((h) => h.location.hash); + + // Determine displayed version from candidates + const displayedVersion = + candidates.find((c) => versions.includes(c)) ?? versions[0]; + + // Close on click outside + const handleClickOutside = useCallback( + (e: MouseEvent) => { + if ( + containerRef.current && + !containerRef.current.contains(e.target as Node) + ) { + setOpen(false); + } + }, + [], + ); + + useEffect(() => { + if (open) { + document.addEventListener('mousedown', handleClickOutside); + } + return () => document.removeEventListener('mousedown', handleClickOutside); + }, [open, handleClickOutside]); + + // Close on Escape + useEffect(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key === 'Escape') { + setOpen(false); + } + }; + if (open) { + document.addEventListener('keydown', handleKeyDown); + } + return () => document.removeEventListener('keydown', handleKeyDown); + }, [open]); + + // Single version: render static label + if (versions.length <= 1) { + return ( +
+ Docs Version: + {displayedVersion?.label} +
+ ); + } + + const handleVersionClick = (version) => { + const targetDoc = getVersionTargetDoc(version, activeDocContext); + savePreferredVersionName(version.name); + setOpen(false); + history.push(`${targetDoc.path}${search}${hash}`); + }; + + return ( +
+ Docs Version: + + + {open && ( +
    + {versions.map((version) => { + const isActive = version === activeDocContext.activeVersion; + return ( +
  • handleVersionClick(version)} + onKeyDown={(e) => { + if (e.key === 'Enter' || e.key === ' ') { + e.preventDefault(); + handleVersionClick(version); + } + }} + tabIndex={0} + > + {version.label} +
  • + ); + })} +
+ )} +
+ ); +} diff --git a/src/components/EventsSidebar.module.css b/src/components/EventsSidebar.module.css deleted file mode 100644 index 91c18cd..0000000 --- a/src/components/EventsSidebar.module.css +++ /dev/null @@ -1,577 +0,0 @@ -.floatingSidebar { - position: fixed; - top: 82%; - left: 50%; - transform: translateX(-50%) translateY(-50%); - width: 85%; - height: auto; - z-index: 1000; - background: linear-gradient(135deg, rgba(255, 255, 255, 0.75), rgba(255, 255, 255, 0.65)); - border-radius: var(--radius-lg); - box-shadow: - var(--shadow-xl), - 0 4px 20px rgba(0, 0, 0, 0.15); - -webkit-backdrop-filter: blur(20px); - backdrop-filter: blur(20px); - border: 1px solid rgba(0, 0, 0, 0.2); - overflow: hidden; - animation: slideInFromBottom 0.4s var(--transition-bezier); - transition: all var(--transition-normal) var(--transition-bezier); -} - -html[data-theme='dark'] .floatingSidebar { - background: linear-gradient(135deg, rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0.65)); - border: 1px solid rgba(255, 255, 255, 0.2); - box-shadow: - var(--shadow-xl), - 0 4px 20px rgba(0, 0, 0, 0.4); -} - -.floatingSidebar.closing { - animation: slideOutToBottom 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards; -} - -.sidebarContent { - padding: 1rem 1.5rem; - position: relative; - text-align: center; - font-weight: 500; - animation: fadeIn 0.5s ease-out 0.2s both; -} - -.closeButton { - position: absolute; - top: 1rem; - right: 1rem; - background: none; - border: none; - font-size: 1.5rem; - color: var(--ifm-color-emphasis-600); - cursor: pointer; - width: 2rem; - height: 2rem; - display: flex; - align-items: center; - justify-content: center; - border-radius: 50%; - transition: all 0.2s ease; -} - -.closeButton:hover { - background: rgba(0, 0, 0, 0.1); - color: var(--ifm-color-emphasis-900); -} - -html[data-theme='dark'] .closeButton:hover { - background: rgba(255, 255, 255, 0.1); - color: var(--ifm-color-emphasis-100); -} - -.sidebarTitle { - padding-top: 0.5rem; - font-size: 0.9rem; - font-family: 'Roboto'; - font-weight: 700; - color: var(--ifm-color-emphasis-800); -} - -.sidebarText { - font-size: 1rem; - margin-bottom: 1rem; - color: var(--palette-blue); -} - -/* Events Container */ -.eventsContainer { - display: flex; - gap: 1rem; - align-items: center; - width: 100%; -} - -/* Side Events */ -.sideEvents { - flex: 1; - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; -} - -/* Up Next Section */ -.upNextSection { - flex: 1.2; - padding: 1rem; - background: linear-gradient(135deg, rgba(0, 123, 255, 0.1), rgba(0, 123, 255, 0.05)); - border-radius: var(--radius-md); - border: 2px solid var(--palette-blue); - position: relative; - display: flex; - flex-direction: column; - align-items: center; -} - -html[data-theme='dark'] .upNextSection { - background: linear-gradient(135deg, rgba(0, 123, 255, 0.15), rgba(0, 123, 255, 0.08)); - border-color: var(--palette-blue-light); -} - -.upNextTitle { - font-size: 1.2rem; - font-weight: 700; - color: var(--palette-blue); - text-align: center; - margin-bottom: 0.75rem; - text-transform: uppercase; - letter-spacing: 1px; -} - -html[data-theme='dark'] .upNextTitle { - color: var(--palette-blue-light); -} - -.upNextEvent { - display: flex; - flex-direction: column; - align-items: center; - gap: 0.75rem; - text-align: center; - width: 100%; -} - -.upNextImage { - max-width: 100%; - border-top: 6px solid var(--palette-blue); - box-shadow: 0 8px 25px rgba(0, 123, 255, 0.2); - transform: scale(1.02); -} - -html[data-theme='dark'] .upNextImage { - box-shadow: 0 8px 25px rgba(0, 123, 255, 0.3); -} - -.upNextEvent .eventText a { - font-size: 1.2rem; - font-weight: 700; - color: var(--palette-blue); -} - -html[data-theme='dark'] .upNextEvent .eventText a { - font-size: 1.3rem; - font-weight: 800; - color: var(--palette-blue-light); -} - -.upNextEvent .eventDate { - font-size: 0.9rem; - font-weight: 600; - color: var(--ifm-color-emphasis-800); -} - -html[data-theme='dark'] .upNextEvent .eventDate { - color: var(--ifm-color-emphasis-200); -} - -.sidebarEvent { - flex: 1; - min-width: 0; - margin-bottom: 0; - padding-bottom: 0; - text-align: center; - display: flex; - flex-direction: column; - align-items: center; - gap: 0.5rem; - width: 100%; -} - -.sidebarEvent:last-child { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} - -.eventImage { - margin-bottom: 0; - display: flex; - justify-content: center; -} - -.eventInfo { - display: flex; - flex-direction: column; - gap: 0.25rem; - text-align: center; -} - -.eventImage a { - display: block; - transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); - animation: fadeIn 0.6s ease-out 0.4s both; -} - -.eventImage a:hover { - transform: scale(1.05); -} - -.eventImage a:hover .sidebarImage { - transform: scale(1.05); - border-color: var(--palette-blue); -} - -.eventText { - margin-bottom: 0; -} - -.eventText a { - font-size: 1rem; - color: var(--palette-blue); - text-decoration: none; -} - -html[data-theme='dark'] .eventText a { - font-size: 1.1rem; - font-weight: 800; - color: var(--palette-blue-light); -} - -.eventDate { - font-size: 0.8rem; - color: var(--ifm-color-emphasis-700); - line-height: 1.3; -} - -.sidebarImage { - width: 50%; - max-width: 100%; - height: auto; - border: 1px solid rgba(255, 255, 255, 0.1); - border-top: 4px solid var(--palette-blue-dark); - border-radius: 8px; - background-color: rgba(255, 255, 255, 0.75); - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); - transition: all 0.3s ease; - object-fit: cover; -} - -html[data-theme='dark'] .sidebarImage { - background-color: rgba(0, 0, 0, 0.75); - border: 1px solid rgba(255, 255, 255, 0.1); - border-top: 4px solid var(--palette-blue-dark); - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); -} - -a:hover .sidebarImage { - border-color: var(--palette-blue); -} - -html[data-theme='dark'] .eventImage a:hover .sidebarImage { - border-color: var(--palette-blue); -} - -/* Theme-specific image visibility */ -.lightImage { - display: block; -} - -.darkImage { - display: none; -} - -html[data-theme='dark'] .lightImage { - display: none; -} - -html[data-theme='dark'] .darkImage { - display: block; -} - -.logoThickText { - color: var(--palette-blue-dark); - font-size: 1rem; - font-weight: 600 !important; -} - -/* Minimized button styles */ -.minimizedButton { - position: fixed; - bottom: 2rem; - right: 2rem; - background: var(--palette-blue); - color: white; - border: none; - padding: 1rem; - border-radius: 50px; - cursor: pointer; - z-index: 1000; - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2); - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); - display: flex; - align-items: center; - gap: 0.5rem; - font-weight: 600; - min-width: 60px; - height: 60px; - animation: bounceIn 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55); -} - -.minimizedButton:hover { - background: var(--palette-blue-dark); - transform: scale(1.05); - box-shadow: - 0 6px 20px rgba(0, 0, 0, 0.3), - 0 2px 8px rgba(0, 0, 0, 0.4); -} - -.eventsIcon { - display: flex; - align-items: center; - justify-content: center; -} - -.eventsLabel { - font-size: 0.9rem; - white-space: nowrap; -} - -/* Mobile responsive adjustments */ -@media screen and (max-width: 996px) { - .floatingSidebar { - width: 95vw; - top: 75%; - left: 50%; - transform: translateX(-50%) translateY(-50%); - max-height: 50vh; - } - - .eventsContainer { - flex-direction: column; - gap: 1rem; - } - - .sideEvents { - flex: 1; - } - - .upNextSection { - flex: 1; - padding: 0.75rem; - margin-bottom: 0; - } - - .upNextTitle { - font-size: 1rem; - } - - .upNextEvent .eventText a { - font-size: 1rem; - } - - html[data-theme='dark'] .upNextEvent .eventText a { - font-size: 1.1rem; - } - - .sidebarEvent { - min-width: 0; - width: 100%; - gap: 0.4rem; - } - - .sidebarContent { - padding: 0.75rem; - } - - .minimizedButton { - bottom: 1rem; - right: 1rem; - padding: 0.8rem; - min-width: 50px; - height: 50px; - } - - .eventsLabel { - font-size: 0.8rem; - } -} - -@media screen and (max-width: 1000px) { - .floatingSidebar { - width: 99%; - max-width: none; - top: 75%; - } - - .eventsContainer { - gap: 0.25rem; - flex-wrap: nowrap; - } - - .sideEvents { - flex: 0.6; - min-width: 0; - } - - .upNextSection { - flex: 1; - padding: 0.5rem; - margin-bottom: 0; - } - - .sidebarContent { - padding: 0.5rem 0.75rem; - } - - .sidebarTitle { - font-size: 0.8rem; - margin-bottom: 0.25rem; - } - - .upNextTitle { - font-size: 0.9rem; - margin-bottom: 0.25rem; - } - - .upNextEvent { - gap: 0.5rem; - } - - .upNextEvent .eventText a { - font-size: 0.9rem; - } - - html[data-theme='dark'] .upNextEvent .eventText a { - font-size: 1rem; - } - - .upNextEvent .eventDate { - font-size: 0.7rem; - } - - .sidebarEvent { - min-width: 0; - flex: 1; - gap: 0.25rem; - } - - .eventText a { - font-size: 0.75rem; - } - - html[data-theme='dark'] .eventText a { - font-size: 0.8rem; - } - - .eventDate { - font-size: 0.6rem; - line-height: 1.2; - } - - .sidebarImage { - width: 30%; - } -} - -@media screen and (max-width: 1200px) { - .floatingSidebar { - width: 95%; - max-width: 1000px; - } - - .eventsContainer { - gap: 0.75rem; - } - - .sidebarContent { - padding: 1.25rem 1.5rem; - } - - .sidebarTitle { - font-size: 1.1rem; - } - - .sidebarText { - font-size: 0.9rem; - } - - .upNextSection { - padding: 1.25rem; - margin-bottom: 0; - } - - .upNextTitle { - font-size: 1.3rem; - } - - .upNextEvent .eventText a { - font-size: 1.3rem; - } - - html[data-theme='dark'] .upNextEvent .eventText a { - font-size: 1.4rem; - } - - .sidebarEvent { - min-width: 0; - flex: 1; - } -} - -/* Animation keyframes */ -@keyframes slideInFromBottom { - 0% { - transform: translateX(-50%) translateY(-50%) translateY(100%); - opacity: 0; - } - 100% { - transform: translateX(-50%) translateY(-50%) translateY(0); - opacity: 1; - } -} - -@keyframes slideOutToBottom { - 0% { - transform: translateX(-50%) translateY(-50%) translateY(0); - opacity: 1; - } - 100% { - transform: translateX(-50%) translateY(-50%) translateY(100%); - opacity: 0; - } -} - -@keyframes bounceIn { - 0% { - transform: scale(0); - opacity: 0; - } - 50% { - transform: scale(1.1); - opacity: 0.8; - } - 100% { - transform: scale(1); - opacity: 1; - } -} - -@keyframes fadeOut { - 0% { - opacity: 1; - transform: scale(1); - } - 100% { - opacity: 0; - transform: scale(0.8); - } -} - -@keyframes fadeIn { - 0% { - opacity: 0; - transform: scale(0.8); - } - 100% { - opacity: 1; - transform: scale(1); - } -} diff --git a/src/components/EventsSidebar.tsx b/src/components/EventsSidebar.tsx deleted file mode 100644 index 3c2eb1e..0000000 --- a/src/components/EventsSidebar.tsx +++ /dev/null @@ -1,150 +0,0 @@ -import React, { useState, useEffect } from 'react'; -// @ts-ignore -import Link from '@docusaurus/Link'; -// @ts-ignore -import styles from './EventsSidebar.module.css'; - -export default function EventsSidebar() { - const [isOpen, setIsOpen] = useState(true); - const [isMinimized, setIsMinimized] = useState(false); - const [isAnimating, setIsAnimating] = useState(false); - - // Load state from localStorage on mount - useEffect(() => { - try { - const savedState = localStorage.getItem('eventsSidebarState'); - if (savedState) { - const { isOpen: savedIsOpen, isMinimized: savedIsMinimized } = JSON.parse(savedState); - setIsOpen(savedIsOpen); - setIsMinimized(savedIsMinimized); - } - } catch (error) { - console.log('Error loading sidebar state:', error); - } - }, []); - - // Save state to localStorage whenever it changes - useEffect(() => { - try { - localStorage.setItem('eventsSidebarState', JSON.stringify({ isOpen, isMinimized })); - } catch (error) { - console.log('Error saving sidebar state:', error); - } - }, [isOpen, isMinimized]); - - const handleClose = () => { - setIsAnimating(true); - setTimeout(() => { - setIsOpen(false); - setIsMinimized(true); - setIsAnimating(false); - }, 300); // Match animation duration - }; - - const handleOpen = () => { - setIsOpen(true); - setIsMinimized(false); - }; - - if (isMinimized) { - return ( - - ); - } - - if (!isOpen) return null; - - return ( -
-
- - -

- Look for us at these events... -

- -
-
-
-
- - MMS: Music City Edition 2025 - -
-
-
- MMS Music City Edition 2025 -
-
October 12th to 15th • Nashville, Tennessee, USA
-
-
-
- -
-
Up Next
-
-
- - AppManage2025 - AppManage2025 - -
-
-
- AppManagEvent 2025 -
-
October 10th • Utrecht, The Netherlands
-
-
-
- -
-
-
- - MAEDS Fall Conference 2025 - MAEDS Fall Conference 2025 - -
-
-
- MAEDS Fall Conference 2025 -
-
October 29th to 31st • Michigan, USA
-
-
-
-
-
-
- ); -} diff --git a/src/components/HomepageFeatures.module.css b/src/components/HomepageFeatures.module.css deleted file mode 100644 index 8992c3b..0000000 --- a/src/components/HomepageFeatures.module.css +++ /dev/null @@ -1,371 +0,0 @@ -/* Feature Columns */ -.featureColumns { - border: 1px solid var(--ifm-color-emphasis-200); - background-color: var(--ifm-background-color); - border-radius: var(--radius-md); - box-shadow: var(--shadow-sm); - transition: all var(--transition-normal); -} - -html[data-theme='dark'] .featureColumns { - background-color: var(--ifm-background-surface-color); - border-color: var(--ifm-color-emphasis-300); - box-shadow: var(--shadow-md); -} - -/* Desktop Layout */ -@media (min-width: 997px) { - .featureColumns { - max-width: calc(4 / 12 * 96%); - margin: var(--space-md) calc(4 / 12 * 2%) var(--space-xl); - padding: var(--space-3xl) var(--space-2xl) var(--space-2xl); - } - - .capabilityColumns { - padding: var(--space-2xl) var(--space-lg) var(--space-lg); - } - - .featureImage { - background-color: var(--ifm-color-emphasis-100); - } - - html[data-theme='dark'] .featureImage { - background-color: var(--ifm-color-emphasis-200); - } -} - -.horizAlign { - text-align: right; -} - -/* Mobile & Tablet Layout */ -@media (max-width: 996px) { - .featureColumns { - padding: var(--space-xl) var(--space-xl) var(--space-lg); - margin: var(--space-sm) auto; - } - - .capabilityColumns { - padding: var(--space-2xl) var(--space-xl) var(--space-xl); - margin: var(--space-md) auto; - } - - .featureImage { - width: 50%; - max-width: 120px; - } - - .introText { - width: 90% !important; - font-size: var(--text-sm); - margin: var(--space-xl) auto var(--space-2xl); - } - - .blockImage { - display: none; - } - - .buttonLink { - float: none !important; - text-align: center; - margin-top: var(--space-md); - } - - .capabilitiesTitle { - text-align: left !important; - } - - .webinarHeader { - text-align: left !important; - padding-left: 0 !important; - } - - .leftAlign { - text-align: left !important; - width: 100% !important; - } - - .blockStyling { - margin: var(--space-2xl) 0 !important; - } -} - -.buttonLink { - float: right; -} - -.col--2 .button.button--secondary { - margin: 0; -} - -.buttonLink a { - text-decoration: none; - color: var(--ifm-heading-color); -} - -.featureImage { - width: 75px; - padding: 1rem; - border-radius: var(--ifm-global-radius); - margin-bottom: 1.5rem; - background-color: rgba(16, 36, 69, 0.05); -} - -.featureHeader { - font-size: 1.2rem; - font-weight: 500; -} - -.capabilityHeader { - font-size: 1.5rem; - font-weight: 700; - padding-bottom: 1rem; -} - -.webinarHeader { - text-align: center; - font-size: 1.5rem; - font-weight: 700; - padding: 1rem; -} - -.contrastContainer { - background-color: var(--ifm-pre-background); - padding: 2rem var(--ifm-spacing-horizontal) 3rem; -} - -.containerPadding { - padding: 2rem var(--ifm-spacing-horizontal) 3rem; -} - -.featureText { - font-size: 0.9rem; -} - -.introHeader { - text-align: center; - font-weight: 300; - font-size: 1.5rem; -} - -.introText { - text-align: center; - width: 80%; - font-size: 1rem; - display: block; - margin: 2rem auto 2.5rem; -} - -.blockStyling { - margin: 7rem 0 7rem; -} - -.blockTitle { - text-align: left; - font-weight: 500; - font-size: 2.2em; - padding: 0rem 0 0.5rem; - line-height: 1.3em; - margin: 0 0 0.8rem; -} - -.capabilitiesTitle { - text-align: center; - font-weight: 500; - font-size: 2.2em; - padding: 2rem 0 0.5rem; - line-height: 1.3em; - margin: 0 0 0.8rem; -} - -.logoThickText { - color: var(--palette-blue); - font-weight: 700 !important; -} - -.blockText { - text-align: left; - font-size: 1.1rem; -} - -.blockImage { - max-height: 400px; -} - -.upcomingConferences { - margin: 2rem 0; - display: flex; - align-items: center; - min-height: 100%; -} - -.imageContainer { - display: flex; - flex-direction: column; - gap: 2rem; - align-items: center; - justify-content: center; - height: 100%; - padding: 2rem 0; - position: relative; - top: 50%; - transform: translateY(-25%); -} - -.conferencesImage { - max-width: 100%; - width: 100%; - height: auto; - display: block; - margin: 0 auto; -} - -main.features { - align-items: center; - width: 100%; - background-color: rgba(0, 0, 0, 0.05) !important; -} - -.blockText ul { - list-style: none; - padding: 0; - margin: 0; - display: flex; - flex-direction: column; - gap: 1.5rem; -} - -.blockText li { - margin: 0; - padding: 0 0 0 2rem; - position: relative; - white-space: normal; - display: flex; - flex-direction: column; - text-align: left; - text-indent: 0; -} - -.blockText li > div { - text-align: left; - width: 100%; -} - -.blockText li a { - display: inline-block; - width: 100%; -} - -.blockText li::before { - content: ''; - position: absolute; - left: 0.5rem; - top: 0.4em; - width: 1em; - height: 1em; - background-image: url('@site/static/images/checkmark.svg'); - background-size: contain; - background-repeat: no-repeat; -} - -.blockText li > div:first-child { - margin-bottom: 0.25rem; -} - -.nextUpText { - color: var(--palette-blue); - font-weight: 700; - font-size: 0.9rem; - text-transform: uppercase; - letter-spacing: 0.5px; - margin-right: 0.5rem; -} - -.conferencesSidebar { - background-color: var(--ifm-pre-background); - padding: 2rem; - border-radius: var(--ifm-global-radius); - border: 1px solid rgba(0, 0, 0, 0.1); - margin-top: 2rem; - position: sticky; - top: 2rem; -} - -html[data-theme='dark'] .conferencesSidebar { - border: 1px solid rgba(255, 255, 255, 0.1); -} - -.sidebarTitle { - font-size: 1.5rem; - font-weight: 500; - margin-bottom: 1rem; - line-height: 1.3; -} - -.sidebarText { - font-size: 0.9rem; - margin-bottom: 1.5rem; - color: var(--ifm-color-emphasis-700); -} - -.sidebarEvents { - margin-bottom: 2rem; -} - -.sidebarEvent { - margin-bottom: 1rem; - padding-bottom: 1rem; - border-bottom: 1px solid rgba(0, 0, 0, 0.1); -} - -html[data-theme='dark'] .sidebarEvent { - border-bottom: 1px solid rgba(255, 255, 255, 0.1); -} - -.sidebarEvent:last-child { - border-bottom: none; - margin-bottom: 0; - padding-bottom: 0; -} - -.sidebarEvent > div:first-child { - margin-bottom: 0.25rem; -} - -.sidebarEvent > div:first-child a { - font-size: 0.9rem; -} - -.sidebarEvent > div:last-child { - font-size: 0.8rem; - color: var(--ifm-color-emphasis-600); -} - -.sidebarImages { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.sidebarImage { - width: 100%; - height: auto; - border-radius: var(--ifm-global-radius); -} - -/* Mobile responsive adjustments */ -@media (max-width: 996px) { - .conferencesSidebar { - position: static; - margin-top: 0; - margin-bottom: 2rem; - } - - .sidebarTitle { - font-size: 1.3rem; - } - - .sidebarText { - font-size: 0.85rem; - } -} diff --git a/src/components/HomepageFeatures.tsx b/src/components/HomepageFeatures.tsx deleted file mode 100644 index 58a0e4f..0000000 --- a/src/components/HomepageFeatures.tsx +++ /dev/null @@ -1,210 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -// @ts-ignore -import Link from '@docusaurus/Link'; -// @ts-ignore -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -// @ts-ignore -import { useColorMode } from '@docusaurus/theme-common'; -// @ts-ignore -import styles from './HomepageFeatures.module.css'; -// @ts-ignore -import Newsletter from './Newsletter'; - -const FeatureList = [ - { - title: 'PSAppDeployToolkit', - image: require('@site/static/images/powershell.png').default, - description: ('PSADT is a framework for deploying applications in a business / corporate environment.'), - }, - { - title: 'Best Practices', - image: require('@site/static/images/deployment.png').default, - description: ('Our standardized deployment template ensures app deployments adhere to best practices and follow a standard workflow.'), - }, - { - title: 'Community Driven', - image: require('@site/static/images/global.png').default, - description: ('PSAppDeployToolkit is a community-oriented project with an emphasis on transparency.'), - }, -]; - -const CapabilityList = [ - { - title: 'Pre-Built PowerShell Functions', - description: ( - <> - Pre-built functions come with automated logging - so you can quickly find problems in your scripts if they occur. -
-
- Supports installation of applications on Citrix / Remote Desktop Session Host Servers -

-

- Perform MCM actions such as Machine and User Policy Refresh, Inventory Update and Software Update - - ), - }, - { - title: '3rd-Party Integration', - description: ( - <> - Handles MCM exit codes, including time sensitive dialogs supporting *MCM Fast Retry* - providing more accurate - Reporting (no more Failed due to timeout errors). -

-

- Supports the MCM application model by providing an install and uninstall deployment type for every deployment - script. - - ), - }, - { - title: 'User Experience', - description: ( - <> - An indeterminate progress dialog with customizable message text that can be updated throughout the deployment. -

-

- Branding of the above UI components using a custom logo icon and banner for your own Organization. -

-

- The UI is localized into several languages and more can be easily added using the XML configuration file. - - ), - }, -]; - -// Not used. remove? -function Feature({ image, title, description }: { image: string; title: string; description: React.ReactNode }) { - return ( -
-
-

{title}

-

{description}

-
-
- ); -} - -type CapabilityProps = { - title: string; - description: React.JSX.Element; -}; - -function Capability({ title, description }: CapabilityProps) { - return ( -
-
-

{title}

-

{description}

-
-
- ); -} - -export default function HomepageFeatures() { - return ( -
- {/*
-
- {FeatureList.map((feature) => ( - - ))} -
-
*/} - -
-
-
- PSAppDeployToolkit -
-
-

- Standardize and enhance every software deployment -

-

- PSAppDeployToolkit allows you to encapsulate a typical Windows Installer MSI or Setup executable to - provide it with enhanced capabilities. -

-
-
-
-
    -
  • -

    Validate prerequisites such as dependencies on minimum software versions

    -
  • -
  • -

    Ensure that in-use applications are closed and prevent reopening during the deployment

    -
  • -
-
-
-
    -
  • -

    Capture any important settings that may be required for an upgrade or migration

    -
  • -
  • -

    Run the installation silently and capture logs in the event of an issue

    -
  • -
-
-
-
- - - -
-
-
- -
-
-
-

- A robust and battle-tested deployment framework -

-

- PSAppDeployToolkit was built with large enterprise environments in mind, where stability is absolutely - crucial to ensure the success of mass deployments. -

-

- That stability is exactly why PSAppDeployToolkit is used by Fortune 500 companies and federal governments, - banks, globally recognized brands, white-label packaging factories, defense contractors and military, - in-house IT teams, consultants and managed service providers to deploy applications on millions of Windows - endpoints all over the world every day. -

- - - -
-
- PSAppDeployToolkit -
-
-
- -
-
-

- Feature capabilities -

-
- {CapabilityList.map((feature) => ( - - ))} -
-
-
- - {/*
-
- -
-
*/} -
- ); -} diff --git a/src/components/Newsletter.module.css b/src/components/Newsletter.module.css index 137a338..a3bf6a4 100644 --- a/src/components/Newsletter.module.css +++ b/src/components/Newsletter.module.css @@ -1,12 +1,12 @@ .blockTitle { - font-size: 2.2em; - font-weight: 500; + font-size: var(--ifm-h2-font-size); + font-weight: var(--ifm-font-weight-semibold); line-height: 1.3em; margin: 0 0 0.8rem; padding: 0 0 0.5rem; } .logoThickText { - color: var(--palette-blue); + color: var(--ifm-color-primary); font-weight: 800 !important; } diff --git a/src/components/Newsletter.tsx b/src/components/Newsletter.tsx index 58413a8..504cfa3 100644 --- a/src/components/Newsletter.tsx +++ b/src/components/Newsletter.tsx @@ -1,15 +1,14 @@ -import React, { useEffect } from 'react'; -// @ts-ignore +import { useEffect } from 'react'; import styles from './Newsletter.module.css'; export default function Newsletter() { return ( <>
-

+

Stay on top of the latest updates from PSAppDeployToolkit with our newsletter -

+

PSAppDeployToolkit officially has a newsletter to keep you in the loop with all the latest updates, features, @@ -32,20 +31,31 @@ declare global { } const HubSpotForm: React.FC = () => { + const isProduction = process.env.NODE_ENV === 'production'; + useEffect(() => { + // Only load HubSpot form in production mode + if (!isProduction) { + return; + } + const loadHubSpotForm = (): void => { if (window.hbspt) { + try { window.hbspt.forms.create({ region: 'na1', portalId: '43903473', formId: '7a0bb757-0873-4ce5-bcfd-ebc16bec7dde', target: '#hubspotForm', }); + } catch (error) { + console.error('Error creating HubSpot form:', error); + } } }; const script = document.createElement('script'); - script.src = '//js.hsforms.net/forms/v2.js'; + script.src = 'https://js.hsforms.net/forms/v2.js'; script.async = true; script.defer = true; document.body.appendChild(script); @@ -57,9 +67,21 @@ const HubSpotForm: React.FC = () => { }; return () => { - document.body.removeChild(script); + if (script.parentNode) { + script.parentNode.removeChild(script); + } }; - }, []); + }, [isProduction]); + + if (!isProduction) { + return ( +

+

Newsletter Form

+

Only runs in Production Mode.

+
+ + ); + } return
; }; diff --git a/src/css/custom.css b/src/css/custom.css index 07b8b1d..5e43cbe 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1,4 +1,3 @@ -@import url('https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Roboto+Mono:ital,wght@0,100..700;1,100..700&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap'); /** * Any CSS included here will be global. The classic template * bundles Infima by default. Infima is a CSS framework designed to @@ -7,161 +6,187 @@ /* You can override the default Infima variables here. */ :root { - /* Color System - Primary Palette */ - --palette-blue-darkest: #001220; - --palette-blue-darker: #004466; - --palette-blue-dark: #0167a2; - --palette-blue: #0081c6; - --palette-blue-light: #2fbdfa; - --palette-blue-lighter: #76d2fd; - --palette-blue-lightest: #def3fe; + /* Primary Color Mapping */ + --ifm-color-primary-darkest: #021a27; + --ifm-color-primary-darker: #005a8a; + --ifm-color-primary-dark: #06537d; + --ifm-color-primary: #0081c6; + --ifm-color-primary-light: #289fe2; + --ifm-color-primary-lighter: #77cfff; + --ifm-color-primary-lightest: #a8e1ff; + --ifm-color-primary-contrast-background: rgb(235, 242, 252); + --ifm-color-primary-contrast-foreground: rgb(16, 36, 69); /* Semantic Colors */ - --color-success: #10b981; - --color-warning: #f59e0b; - --color-error: #ef4444; - --color-info: var(--palette-blue); + --ifm-color-secondary: #ebedf0; + --ifm-color-success: #10b981; + --ifm-color-warning: #fbbf24; + --ifm-color-danger: #ef4444; + --ifm-color-info: var(--ifm-color-primary); + --ifm-font-weight-semibold: 600; + + /* Colors */ + --ifm-color-content: var(--ifm-color-emphasis-1000); + --ifm-color-content-secondary: var(--ifm-color-emphasis-700); + --ifm-color-content-inverse: var(--ifm-color-emphasis-0); + + + --psadt-badge-license-commercial-bg: var(--ifm-color-warning-contrast-background); + --psadt-badge-license-commercial-text: var(--ifm-color-warning-darkest); + --psadt-badge-license-free-bg: var(--ifm-color-success-contrast-background); + --psadt-badge-license-free-text: var(--ifm-color-success-darkest); + --psadt-badge-workswith-bg: var(--ifm-color-info-lightest); + --psadt-badge-workswith-text: var(--ifm-color-info-darkest); + --psadt-badge-capability-bg: var(--ifm-color-danger-contrast-background); + --psadt-badge-capability-text: var(--ifm-color-danger-darkest); + --psadt-sidebar-glass-surface: linear-gradient(135deg, + rgba(255, 255, 255, 0.6), + rgba(255, 255, 255, 0.3)); /* Spacing Scale */ - --space-xs: 0.25rem; /* 4px */ - --space-sm: 0.5rem; /* 8px */ - --space-md: 1rem; /* 16px */ - --space-lg: 1.5rem; /* 24px */ - --space-xl: 2rem; /* 32px */ - --space-2xl: 3rem; /* 48px */ - --space-3xl: 4rem; /* 64px */ + --psadt-space-xs: 0.25rem; + /* 4px */ + --psadt-space-sm: 0.5rem; + /* 8px */ + --psadt-space-md: 1rem; + /* 16px */ + --psadt-space-lg: 1.5rem; + /* 24px */ + --psadt-space-xl: 2rem; + /* 32px */ + --psadt-space-2xl: 3rem; + /* 48px */ + --psadt-space-3xl: 4rem; + /* 64px */ /* Border Radius Scale */ - --radius-sm: 4px; - --radius-md: 8px; - --radius-lg: 12px; - --radius-xl: 16px; + --psadt-radius-sm: 4px; + --psadt-radius-md: 8px; + --psadt-radius-lg: 12px; - --ifm-global-radius: var(--radius-sm); - - /* Primary Color Mapping */ - --ifm-color-primary-darkest: var(--palette-blue-darkest); - --ifm-color-primary-darker: var(--palette-blue-darker); - --ifm-color-primary-dark: var(--palette-blue-dark); - --ifm-color-primary: var(--palette-blue); - --ifm-color-primary-light: var(--palette-blue-light); - --ifm-color-primary-lighter: var(--palette-blue-lighter); - --ifm-color-primary-lightest: var(--palette-blue-lightest); + --ifm-global-border-width: 1px; + --ifm-global-radius: 8px; /* Shadows */ - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1); - --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1); - --image-shadow: 0 5px 61px 5px rgba(34, 34, 34, 0.94); + --psadt-shadow-sm: 0 1px 2px rgba(20, 102, 159, 0.05); + --psadt-shadow-md: 0 4px 12px rgba(20, 102, 159, 0.1); + --psadt-shadow-lg: 0 10px 15px rgba(20, 102, 159, 0.15); + --psadt-shadow-xl: 0 20px 25px rgba(20, 102, 159, 0.2); /* Transitions */ - --transition-fast: 150ms ease; - --transition-normal: 250ms ease; - --transition-slow: 350ms ease; - --transition-bezier: cubic-bezier(0.4, 0, 0.2, 1); - --transition-fastest: 100ms; - + --psadt-ease-standard: cubic-bezier(0.4, 0, 0.2, 1); + --psadt-transition-fast: 150ms var(--psadt-ease-standard); + --psadt-transition-normal: 250ms var(--psadt-ease-standard); + --psadt-focus-ring-color: rgba(0, 129, 198, 0.35); + --psadt-sidebar-active-indicator-color: var(--ifm-color-primary-lightest); - --ifm-font-family-base: - 'Roboto', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif; - --ifm-font-family-monospace: 'Roboto Mono', monospace; + --ifm-font-family-base: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif; + --ifm-font-family-monospace: 'Google Sans Code', monospace; /* Typography Scale */ --ifm-font-size-base: 16px; --ifm-line-height-base: 1.6; + + /* Typography - Heading */ --ifm-heading-line-height: 1.2; + --ifm-heading-color: var(--ifm-color-emphasis-1000); + --ifm-heading-font-family: 'Poppins', var(--ifm-font-family-base) !important; /* Font Sizes */ - --text-xs: 0.75rem; /* 12px */ - --text-sm: 0.875rem; /* 14px */ - --text-base: 1rem; /* 16px */ - --text-lg: 1.125rem; /* 18px */ - --text-xl: 1.25rem; /* 20px */ - --text-2xl: 1.5rem; /* 24px */ - --text-3xl: 1.875rem; /* 30px */ - --text-4xl: 2.25rem; /* 36px */ - --text-5xl: 3rem; /* 48px */ + --ifm-font-size-xs: 0.75rem; + /* 12px */ + --ifm-font-size-sm: 0.875rem; + /* 14px */ + --ifm-font-size-base: 1rem; + /* 16px */ + --ifm-font-size-lg: 1.125rem; + /* 18px */ + --ifm-font-size-xl: 1.25rem; + /* 20px */ + --ifm-font-size-2xl: 1.5rem; + /* 24px */ + --ifm-font-size-3xl: 1.875rem; + /* 30px */ + --ifm-font-size-4xl: 2.25rem; + /* 36px */ + --ifm-font-size-5xl: 3rem; + /* 48px */ /* Heading Sizes */ - --ifm-h1-font-size: var(--text-5xl); - --ifm-h2-font-size: var(--text-4xl); - --ifm-h3-font-size: var(--text-3xl); - --ifm-h4-font-size: var(--text-2xl); - --ifm-h5-font-size: var(--text-xl); - --ifm-h6-font-size: var(--text-lg); + --ifm-h1-font-size: var(--ifm-font-size-5xl); + --ifm-h2-font-size: var(--ifm-font-size-4xl); + --ifm-h3-font-size: var(--ifm-font-size-3xl); + --ifm-h4-font-size: var(--ifm-font-size-2xl); + --ifm-h5-font-size: var(--ifm-font-size-xl); + --ifm-h6-font-size: var(--ifm-font-size-lg); /* Font Weights */ - --font-normal: 400; - --font-medium: 500; - --font-semibold: 600; - --font-bold: 700; - --font-extrabold: 800; - --font-black: 900; - - --ifm-heading-font-weight: var(--font-semibold); - --ifm-code-font-size: 0.875em; - --ifm-code-padding-vertical: 0.2em 0.4em; - --ifm-code-background: rgba(0, 0, 0, 0.05); + --ifm-font-weight-normal: 400; + --ifm-font-weight-medium: 500; + --ifm-font-weight-semibold: 600; + --ifm-font-weight-bold: 700; + --ifm-font-weight-extrabold: 800; + --ifm-font-weight-black: 900; + + --ifm-heading-font-weight: var(--ifm-font-weight-semibold); + --ifm-body-font-weight: var(--ifm-font-weight-normal); + --ifm-code-font-size: 1em; + --ifm-code-padding-vertical: 0.1em; + --ifm-code-padding-horizontal: 0.3em; + + --ifm-code-background: rgba(116, 208, 255, 0.2); + + + + /* Body/background surfaces should be colors; page gradient is a custom layer. */ + --ifm-background-color: transparent; + --ifm-background-surface-color: transparent; + --psadt-page-gradient: linear-gradient(135deg, rgba(208, 239, 252, 0.8) 0%, rgba(251, 253, 255, 0.9) 100%); + + /* Card Design Tokens */ + --psadt-card-background-color: linear-gradient(135deg, rgba(212, 239, 255, 0.5) 0%, rgba(245, 245, 245, 0.8) 100%); + --psadt-card-border-color: var(--ifm-color-primary-contrast-foreground); + --psadt-card-border-color-hover: var(--ifm-color-primary); + --psadt-card-background: var(--psadt-card-background-color); + --psadt-card-shadow: var(--psadt-shadow-md); + --psadt-card-shadow-hover: var(--psadt-shadow-xl); + --psadt-card-image-background: var(--ifm-background-surface-color); + --psadt-card-image-shadow: var(--psadt-shadow-lg); + --psadt-card-radius: var(--psadt-radius-lg); - /* Colors */ - --ifm-color-content: #2e3440; - --ifm-color-content-secondary: #4c566a; - --ifm-link-color: var(--ifm-color-primary); - --ifm-link-hover-color: var(--palette-blue-dark); - --ifm-link-decoration: none; - --ifm-link-hover-decoration: underline; - --ifm-toc-link-color: var(--ifm-color-content-secondary); - - --ifm-navbar-shadow: 5px 0px rgba(0, 0, 0, 0.05), 0 5px 5px 0 rgba(0, 0, 0, 0.05); --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); - --doc-sidebar-width: 360px !important; + --doc-sidebar-width: 420px !important; - /* Code blocks */ - --prism-background-color: #f8f9fa; - --prism-color: #2e3440; -} -table { - width: 100%; - display: block; - overflow-x: auto; - border-collapse: collapse; - margin: 1.5rem 0; - font-size: 0.9em; - min-width: 100%; - box-shadow: 0 0 20px rgba(0, 0, 0, 0.05); } -table thead tr { - background-color: var(--ifm-color-primary); - font-size: 1rem; - color: white; - text-align: left; -} +table { + align-items: center; + max-width: 100%; + display: inline-block; + margin: 2rem; + border-radius: 8px 8px 0px 0px; + background-color: var(--ifm-code-background); + box-shadow: var(--psadt-shadow-lg); -table th, -table td { - padding: 12px 15px; - border: 1px solid var(--ifm-color-emphasis-200); } -table tbody tr { - border-bottom: 1px solid var(--ifm-color-emphasis-200); +table thead tr { + background-color: var(--ifm-color-primary-darker); + color: var(--ifm-color-content-inverse); + font-size: 1.1rem; + color: var(--ifm-color-white); } -table tbody tr:nth-of-type(even) { - background-color: var(--ifm-color-emphasis-50); -} table tbody tr:last-of-type { - border-bottom: 2px solid var(--ifm-color-primary); + border-bottom: 2px solid var(--ifm-color-primary-darker); } -/* Make all markdown tables full-width */ -.markdown table { - width: 100%; - table-layout: auto; +/* Documentation list markers: primary color */ +.markdown ul li::marker, +.markdown ol li::marker { + color: var(--ifm-color-primary); } /* Responsive tables */ @@ -171,40 +196,27 @@ table tbody tr:last-of-type { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; + min-width: 100%; } table thead { - display: none; + display: table-header-group; } table tbody { - display: block; + display: table-row-group; width: 100%; } table tr { - display: block; - margin-bottom: 1rem; - border: 1px solid var(--ifm-color-emphasis-200); - border-radius: var(--ifm-global-radius); - overflow: hidden; - } - - table td { - display: block; - padding-left: 50%; - position: relative; - text-align: left; + display: table-row; } - table td::before { - content: attr(data-label); - position: absolute; - left: 0; - width: 50%; - padding-left: 15px; - font-weight: 600; - text-align: left; + table td, + table th { + display: table-cell; + width: auto; + white-space: normal; } } @@ -212,75 +224,195 @@ html { -webkit-font-smoothing: auto; } -.button { - border: var(--ifm-button-border-width) solid #1c1e21; +/* Global Page Gradient */ +body { + background: var(--psadt-page-gradient); + background-attachment: fixed; +} + +/* Sidebar */ +.menu { + padding: 0.5rem; + font-size: 0.9rem; +} + +.menu__list { + font-size: 0.9rem; +} + +.menu__list .menu__list { + font-size: 1em; + /* Prevent font size inheritance issues */ +} + +/* Sidebar active states */ +.menu__link--active { + background-color: var(--ifm-color-primary) !important; + color: var(--ifm-color-content-inverse) !important; + font-weight: var(--ifm-font-weight-bold) !important; + border-left: 3px solid var(--psadt-sidebar-active-indicator-color); + padding-left: calc(0.75rem - 3px); +} + +.menu__link--active:hover { + background-color: var(--ifm-color-primary-dark) !important; + color: var(--ifm-color-content-inverse) !important; +} + +.menu__link--sublist.menu__link--active { + background-color: var(--ifm-color-primary) !important; + color: var(--ifm-color-content-inverse) !important; + border-left: 3px solid var(--psadt-sidebar-active-indicator-color); + padding-left: calc(0.75rem - 3px); +} + +.menu__link--sublist.menu__link--active:hover { + background-color: var(--ifm-color-primary-dark) !important; +} + +/* Category row selected (category page OR child page selected) */ +.menu__list-item-collapsible--active, +.menu__list-item-collapsible:has(> .menu__link.menu__link--active) { + background-color: var(--ifm-color-primary) !important; + border-left: 3px solid var(--psadt-sidebar-active-indicator-color); + padding-left: 0; +} + +.menu__list-item-collapsible--active > .menu__link, +.menu__list-item-collapsible:has(> .menu__link.menu__link--active) > .menu__link { + background-color: transparent !important; + color: var(--ifm-color-content-inverse) !important; + font-weight: var(--ifm-font-weight-bold) !important; + border-left: 0; + padding-left: 0.75rem; } -.theme-code-block-highlighted-line { - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); +.menu__list-item-collapsible--active > .menu__caret, +.menu__list-item-collapsible:has(> .menu__link.menu__link--active) > .menu__caret { + background-color: transparent !important; + color: var(--ifm-color-content-inverse) !important; } -.docusaurus-highlight-code-line { - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); +.menu__list-item-collapsible--active:hover, +.menu__list-item-collapsible:has(> .menu__link.menu__link--active):hover { + background-color: var(--ifm-color-primary-dark) !important; } -[data-theme='dark'] { - /* Dark Theme Color Overrides */ - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); - --ifm-color-primary: var(--palette-blue-light); - --ifm-background-color: #0f1419; - --ifm-background-surface-color: #1a1b1e; - --ifm-card-background-color: #242526; - --ifm-toc-border-color: #2d2d2d; - --ifm-color-content: #e5e9f0; - --ifm-color-content-secondary: #d8dee9; - --ifm-menu-color-background-active: rgba(47, 189, 250, 0.15); - --ifm-menu-color-background-hover: rgba(47, 189, 250, 0.08); - --ifm-table-border-color: #2d2d2d; - --ifm-table-stripe-background: rgba(255, 255, 255, 0.02); - --prism-background-color: #1e293b; - --prism-color: #e2e8f0; +.menu__list-item-collapsible--active > .menu__caret::before, +.menu__list-item-collapsible:has(> .menu__link.menu__link--active) > .menu__caret::before { + background: url('data:image/svg+xml;utf8,') 50%/2rem 2rem !important; + filter: none !important; +} + + +.breadcrumbsContainer_dN9t { + --ifm-breadcrumb-size-multiplier: 0.8; + margin-bottom: 0.8rem; +} + + +.label_VEzi { + font-size: var(--ifm-font-size-sm); +} - /* Enhanced Dark Theme Shadows */ - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3); - --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.4); - --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.4); - --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.4); +.trigger_lQy_ { + padding: 0.25rem 0.5rem; } +/* Footer styling with hardcoded gradient background (for both light and dark mode) */ +.footer { + background: linear-gradient(135deg, + #0167a2 0%, + #001220 100%); + border-top: var(--ifm-global-border-width) solid var(--ifm-color-primary-dark); +} + +.footer__title { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); +} + + +html[data-theme='dark'] { + --ifm-color-primary-darkest: #033854; + --ifm-color-primary-darker: #0d5d89; + --ifm-color-primary-dark: #1393d8; + --ifm-color-primary: #44beff; + --ifm-color-primary-light: #77cfff; + --ifm-color-primary-lighter: #9de0ff; + --ifm-color-primary-lightest: #c5f0ff; + --ifm-color-primary-contrast-background: #021a27; + --ifm-color-primary-contrast-foreground: #ddefef; + + --psadt-badge-license-commercial-bg: var(--ifm-color-warning-darkest); + --psadt-badge-license-commercial-text: var(--ifm-color-warning-lightest); + --psadt-badge-license-free-bg: var(--ifm-color-success-darkest); + --psadt-badge-license-free-text: var(--ifm-color-success-lightest); + --psadt-badge-workswith-bg: var(--ifm-color-info-darkest); + --psadt-badge-workswith-text: var(--ifm-color-info-lightest); + --psadt-badge-capability-bg: var(--ifm-color-danger-darkest); + --psadt-badge-capability-text: var(--ifm-color-danger-lightest); + + --ifm-border-color: var(--ifm-color-primary-darker); + --ifm-toc-border-color: var(--ifm-color-primary); + + --psadt-page-gradient: linear-gradient(135deg, rgba(2, 58, 108, 0.2) 25%, rgba(1, 68, 162, 0.3) 100%); + + /* Card Design Tokens - Dark */ + --psadt-card-background-color: linear-gradient(135deg, rgba(2, 28, 53, 0.08), rgba(0, 140, 200, 0.15)); + + /* Colors */ + --ifm-color-content: var(--ifm-color-emphasis-0); + --ifm-color-content-secondary: var(--ifm-color-emphasis-100); + --ifm-color-content-inverse: var(--ifm-color-emphasis-900); + + + --psadt-card-background: var(--psadt-card-background-color); + --psadt-card-image-background: rgba(255, 255, 255, 0.1); + --psadt-card-border-color: rgba(159, 221, 253, 0.45); + --psadt-focus-ring-color: rgba(159, 221, 253, 0.45); + + --psadt-sidebar-glass-surface: linear-gradient(135deg, + rgba(0, 0, 0, 0.3), + rgba(0, 0, 0, 0.15)); +} /* Button System */ .button { - font-weight: var(--font-medium); - border-radius: var(--radius-sm); - transition: all var(--transition-fast); + font-weight: var(--ifm-font-weight-medium); + border-radius: var(--psadt-radius-sm); + transition: background-color var(--psadt-transition-normal), border-color var(--psadt-transition-normal), color var(--psadt-transition-normal), transform var(--psadt-transition-normal), box-shadow var(--psadt-transition-normal); text-transform: none; letter-spacing: 0.025em; - border: 1px solid transparent; - padding: var(--space-sm) var(--space-lg); - font-size: var(--text-sm); + border: var(--ifm-global-border-width) solid transparent; + padding: var(--psadt-space-sm) var(--psadt-space-lg); + font-size: var(--ifm-font-size-sm); line-height: 1.5; display: inline-flex; align-items: center; justify-content: center; - gap: var(--space-xs); + gap: var(--psadt-space-xs); +} + +.button:active { + transform: scale(0.97); } .button--primary { background-color: var(--ifm-color-primary); border-color: var(--ifm-color-primary); - color: white; + color: var(--ifm-color-content-inverse); +} + +.button:hover { + will-change: transform, box-shadow; } .button--primary:hover { - background-color: var(--palette-blue-dark); - border-color: var(--palette-blue-dark); + background-color: var(--ifm-color-primary-dark); + border-color: var(--ifm-color-primary-dark); transform: translateY(-1px); - box-shadow: var(--shadow-md); - color: white; + box-shadow: var(--psadt-shadow-md); + color: var(--ifm-color-content-inverse); } .button--secondary { @@ -291,413 +423,383 @@ html { .button--secondary:hover { background-color: var(--ifm-color-primary); - color: white; + color: var(--ifm-color-content-inverse); transform: translateY(-1px); - box-shadow: var(--shadow-md); + box-shadow: var(--psadt-shadow-md); } [data-theme='dark'] .button--secondary { - border-color: var(--palette-blue-light); - color: var(--palette-blue-light); + border-color: var(--ifm-color-primary-light); + color: var(--ifm-color-primary-light); } [data-theme='dark'] .button--secondary:hover { - background-color: var(--palette-blue-light); - color: var(--palette-blue-darkest); + background-color: var(--ifm-color-primary-light); + color: var(--ifm-color-primary-darkest); } /* Code blocks */ .theme-code-block { - border-radius: 2px; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05); + border-radius: var(--psadt-radius-sm); + border: var(--ifm-global-border-width) solid var(--ifm-color-emphasis-400); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); } -[data-theme='dark'] .theme-code-block { - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); +.theme-code-block pre, +.theme-code-block pre code, +.prism-code { + white-space: pre-wrap !important; + word-break: break-word; + overflow-wrap: anywhere; } -.theme-code-block-highlighted-line, -.docusaurus-highlight-code-line { - display: block; - margin: 0 calc(-1 * var(--ifm-pre-padding)); - padding: 0 var(--ifm-pre-padding); +.theme-code-block pre { + overflow-x: hidden !important; } /* Typography System */ h1 { font-family: 'Poppins', var(--ifm-font-family-base); - font-weight: var(--font-black); - font-size: var(--text-5xl); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h1-font-size); letter-spacing: -0.025em; line-height: 1.1; - margin-bottom: var(--space-lg); } -h2 { - font-family: 'Poppins', var(--ifm-font-family-base); - font-weight: var(--font-extrabold); - font-size: var(--text-4xl); - letter-spacing: -0.025em; - line-height: 1.2; - margin-top: var(--space-2xl); - margin-bottom: var(--space-lg); - padding-bottom: var(--space-sm); - border-bottom: 1px solid var(--ifm-color-emphasis-200); -} - -h3 { - font-family: var(--ifm-font-family-base); - font-weight: var(--font-bold); - font-size: var(--text-3xl); - letter-spacing: -0.02em; - line-height: 1.3; - margin-top: var(--space-xl); - margin-bottom: var(--space-md); -} - -h4 { - font-family: var(--ifm-font-family-base); - font-weight: var(--font-semibold); - font-size: var(--text-2xl); - letter-spacing: -0.015em; - line-height: 1.3; - margin-top: var(--space-lg); - margin-bottom: var(--space-sm); -} - -h5 { - font-family: var(--ifm-font-family-base); - font-weight: var(--font-semibold); - font-size: var(--text-xl); - letter-spacing: -0.01em; - line-height: 1.4; - margin-top: var(--space-md); - margin-bottom: var(--space-sm); -} - -h6 { - font-family: var(--ifm-font-family-base); - font-weight: var(--font-medium); - font-size: var(--text-lg); - letter-spacing: 0; - line-height: 1.4; - margin-top: var(--space-md); - margin-bottom: var(--space-sm); -} - -/* Reset font for non-heading elements */ -p, -li, -a, -.menu__link, -.button, -.navbar__title, -.navbar__item, -.footer__title, -.footer__item, -.table-of-contents { - font-weight: 400; - font-family: var(--ifm-font-family-base); -} - -/* Ensure code blocks use monospace */ -code, -pre, -.prism-code { - font-family: var(--ifm-font-family-monospace); +/* Keep navbar opaque despite transparent --ifm-background-color */ +.navbar { + height: 72px; + background: rgba(250, 250, 250, 0.85); + -webkit-backdrop-filter: saturate(50%) blur(20px); + backdrop-filter: saturate(100%) blur(20px); + + border-bottom: var(--ifm-global-border-width) solid var(--ifm-color-primary-darker); + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2); } -/* Body text */ -p { - margin-bottom: 1.25rem; - line-height: 1.7; +html[data-theme='dark'] .navbar { + background: rgba(25, 25, 25, 0.85); + border-bottom: var(--ifm-global-border-width) solid var(--ifm-color-primary-dark); + box-shadow: 0 2px 6px rgba(47, 189, 250, 0.4); } -/* Tables */ -table { - border-radius: 6px; - overflow: hidden; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05); +/* Navbar dropdown menu */ +.navbar .dropdown__menu { + background-color: var(--ifm-color-white); + opacity: 1; + -webkit-backdrop-filter: none; + backdrop-filter: none; } -table th { - background-color: var(--ifm-color-primary); - color: white; - font-weight: 600; - text-transform: uppercase; - font-size: 0.8em; - letter-spacing: 0.5px; +html[data-theme='dark'] .navbar .dropdown__menu { + background-color: var(--ifm-color-emphasis-200); + opacity: 1; } -/* Sidebar */ -.menu { - padding: 0.5rem; - font-size: 0.9rem; +.navbar .dropdown__link--active, +.navbar .dropdown__link--active:hover { + background-color: var(--ifm-color-primary) !important; + color: var(--ifm-color-primary-lightest) !important; + font-weight: var(--ifm-font-weight-bold); } -.menu__list { - font-size: 0.9rem; +.navbar__link { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); } -.menu__list .menu__list { - font-size: 1em; - /* Prevent font size inheritance issues */ +.navbar__brand { + font-size: 1.0rem; } -/* Move version indicator to top of right sidebar */ -.theme-doc-sidebar-container { - display: flex; - flex-direction: column; +.navbar__title { + display: none !important; + font-weight: var(--ifm-font-weight-bold); + font-style: normal; } -.theme-doc-sidebar-menu { - order: 2; - flex-grow: 1; - overflow-y: auto; +.navbar__logo { + height: 48px; + margin-right: 1em; } -/* Style the version indicator in the right sidebar */ -.theme-doc-version-badge { - float: right; - background-color: var(--ifm-color-primary-lightest); +a.navbar__brand:hover { color: var(--ifm-color-primary); - padding: 0.5rem 1rem; - margin: 0.5rem 0.25rem 1rem 0.25rem; - border-radius: var(--ifm-global-radius); - font-size: 0.85rem; - font-weight: 700; - text-align: center; - border: 1px solid var(--ifm-color-primary-light); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); - transition: all 0.2s ease; } -.theme-doc-version-badge:hover { - transform: translateY(-1px); - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); +.navbar__item { + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-font-size-base); } -[data-theme='dark'] .theme-doc-version-badge { - background-color: var(--ifm-color-primary-darkest); - color: var(--ifm-color-primary-light); - border-color: var(--ifm-color-primary-darker); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3); + +.navbar__item svg { + display: none; } -[data-theme='dark'] .theme-doc-version-badge:hover { - box-shadow: 0 4px 8px rgba(0, 0, 0, 0.4); +.footer__copyright { + padding-top: 20px; } -.menu__link { - border-radius: 4px; - padding: 0.5rem 0.75rem; - margin: 0.15rem 0; - transition: background-color 0.2s ease; - font-size: 0.9rem; - font-weight: 400; +.footer__link-item svg { + display: none; } -.menu__link--active { - background-color: var(--ifm-color-primary-lightest); +header h2 a { + font-weight: var(--ifm-font-weight-semibold); color: var(--ifm-color-primary); - font-weight: 500; } -/* Fix for nested menu items */ -.menu__list-item-collapsible .menu__link { - font-weight: 400; +header h2 a:hover { + color: var(--ifm-color-primary-light); } -.menu__list-item-collapsible .menu__link--sublist { - font-weight: 400; +.button.button--secondary { + margin-right: 25px !important; } -/* Ensure consistent spacing in sidebar */ -.menu__list-item:not(:first-child) { - margin-top: 0.25rem; +header .col--5 { + display: flex; + justify-content: center; } -/* Fix for sidebar category headers */ -.menu__list-item-collapsible .menu__link--sublist { - font-size: 0.9rem; +/* Sidebar nested menu styling - add left border and indentation for nested items */ +.menu>.menu__list .menu__list { + border-left: var(--ifm-global-border-width) solid var(--ifm-color-primary); + margin-left: 15px; } -/* Fix for sidebar item indentation */ -.menu__list-item .menu__list { - padding-left: 0.75rem; -} -.hero__subtitle { - text-align: left; - font-family: Poppins; - font-weight: 900; - font-size: 3rem; - padding: 0 0 1rem; - line-height: 1.3em; +/* Hide icon for external links */ +.docusaurus-theme-classic-lib-theme-Icon-ExternalLink-styles-module { + display: none; } -@media screen and (max-width: 996px) { - :root { - --ifm-font-size-base: 16px; - } - - .hero__subtitle { - font-size: 2rem; - padding: 2em 0 0; - text-align: center; - } - - .flex-col-reverse { - flex-direction: column-reverse; - } - - .navbar--fixed-top { - height: 96px; - } +/* Search bar */ +.navbar__search-input { + border-radius: var(--ifm-global-radius); } -.navbar__link { - font-family: 'Poppins', var(--ifm-font-family-base); - font-weight: 700; +/* GitHub Icon */ +.header-github-link:before { + content: ''; + width: 26px; + height: 26px; + display: flex; + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat; } -.navbar__brand { - font-size: 1.5rem; +html[data-theme='dark'] .header-github-link:before { + background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") no-repeat; } -.navbar__title { - display: none; - font-weight: 700; - font-style: normal; +/* GitHub Icon Hover */ +.header-github-link { + transition: opacity var(--psadt-transition-normal); } -.navbar__logo { - height: 42px; - margin-right: 1em; -} +.header-github-link:hover { -a.navbar__brand:hover { - color: var(--ifm-color-primary); + opacity: 0.6; } -.navbar__item { - font-family: 'Poppins', var(--ifm-font-family-base); - font-weight: 700; - font-size: 16px; +/* Keyboard focus visibility */ +a:focus-visible, +button:focus-visible, +[role='button']:focus-visible, +.menu__link:focus-visible, +.navbar__link:focus-visible, +.dropdown__link:focus-visible, +.header-github-link:focus-visible, +input:focus-visible, +select:focus-visible, +textarea:focus-visible { + outline: 2px solid var(--ifm-color-primary); + outline-offset: 2px; + box-shadow: 0 0 0 3px var(--psadt-focus-ring-color); + border-radius: var(--psadt-radius-sm); } -.DocSearch-Container { - z-index: 110; +a:focus-visible { + text-decoration: underline; + text-decoration-thickness: 2px; } -.navbar__item svg { - display: none; +/* Tighten gap between top tip and first section on this page */ +html[class*='docs-doc-id-getting-started/creating-a-new-deployment'] .theme-admonition+h2 { + margin-top: var(--psadt-space-lg); } -.footer__copyright { - padding-top: 20px; +/* Shared layout/media/motion system for marketing pages */ +.section-shell { + margin-block: clamp(var(--psadt-space-xl), 4vw, var(--psadt-space-3xl)); } -.footer__link-item svg { - display: none; +.page-shell { + padding-top: 4rem; + padding-bottom: 4rem; } -h1 { - font-size: 2.4rem; - font-weight: 600; +.split-row { + align-items: center; + row-gap: var(--psadt-space-xl); } -h2 { - font-size: 1.8rem; - font-weight: 600; +.section-copy { + max-width: 68ch; } -header h2 a { - font-weight: 600; - color: var(--ifm-heading-color); +.media-frame { + width: min(100%, 560px); + aspect-ratio: 4 / 3; + margin-inline: auto; + display: flex; + align-items: center; + justify-content: center; + overflow: hidden; + transition: transform var(--psadt-transition-normal), box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); } -header h2 a:hover { - text-decoration: none; +.media-frame--hero { + width: min(100%, 640px); } -h3 { - font-size: 1.4rem; - font-weight: 500; +.media-frame>img, +.media-frame img { + width: 100%; + height: 100%; + object-fit: contain; } -h4 { - font-size: 1.25rem; - font-weight: 500; +.entity-avatar { + width: 104px; + height: 104px; + border-radius: 50%; + object-fit: cover; + border: 1px solid var(--psadt-card-border-color); + box-shadow: var(--psadt-card-image-shadow); + background: var(--psadt-card-image-background); } -img { - display: block; - margin: auto; +.calm-card { + height: 100%; + display: flex; + flex-direction: column; } +@keyframes calmReveal { + from { + opacity: 0; + transform: translateY(20px); + filter: blur(6px); + } -.logoThickText_jwJb { - text-align: left; - font-weight: 900; - font-family: Poppins; + to { + opacity: 1; + transform: translateY(0); + filter: blur(0); + } } -.blockTitle_JQed { +.reveal-section { + opacity: 0; + animation: calmReveal 900ms var(--psadt-ease-standard) forwards; +} - text-align: left; - font-weight: 900; - font-family: Poppins; +.theme-doc-markdown .alert+h2 { + margin-top: 0.6rem; } -.themedImage--light_node_modules-\@docusaurus-theme-classic-lib-theme-ThemedImage-styles-module { - display: block !important; +.theme-doc-markdown, +.blog-wrapper article { + animation: fadeInUp 500ms var(--psadt-ease-standard) both; } -.button.button--secondary { - margin-right: 25px !important; +.reveal-delay-1 { + animation-delay: 120ms; } -header .col--5 { - display: flex; +.reveal-delay-2 { + animation-delay: 240ms; } -.menu > .menu__list .menu__list { - border-left: 1px solid var(--ifm-color-primary); - margin-left: 15px; +.reveal-delay-3 { + animation-delay: 360ms; } -.docs-doc-id-reference .menu > .menu__list .menu__list { - font-size: 12px; +/* ─── Entrance Animations ─── */ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(8px); + } + + to { + opacity: 1; + transform: translateY(0); + } } -/* Hide icon for external links */ -.docusaurus-theme-classic-lib-theme-Icon-ExternalLink-styles-module { - display: none; +.fadeInUp { + animation: fadeInUp 0.4s var(--psadt-ease-standard) both; } -/* GitHub Icon */ -.header-github-link:before { - content: ''; - width: 26px; - height: 26px; - display: flex; +.fadeInUp-d1 { + animation-delay: 80ms; +} - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; +.fadeInUp-d2 { + animation-delay: 160ms; } -html[data-theme='dark'] .header-github-link:before { - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='white' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E") - no-repeat; +.fadeInUp-d3 { + animation-delay: 240ms; } -/* GitHub Icon Hover */ -.header-github-link:hover { - opacity: 0.6; +/* Accessibility: Respect user preference for reduced motion */ +@media (prefers-reduced-motion: reduce) { + + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + transition-duration: 0.01ms !important; + scroll-behavior: auto !important; + } } -html[data-theme='dark'] .theme-doc-version-badge { - background-color: var(--ifm-color-primary-dark); - color: white; +html[data-theme='dark'] { + --ifm-color-scheme: dark; + + /* Colors */ + --ifm-color-content: var(--ifm-color-emphasis-1000); + --ifm-color-content-secondary: var(--ifm-color-emphasis-700); + --ifm-color-content-inverse: var(--ifm-color-emphasis-0); + --ifm-heading-color: var(--ifm-color-emphasis-1000); + + + --ifm-hover-overlay: rgba(255, 255, 255, 0.05); + --ifm-breadcrumb-separator-filter: invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%); + --ifm-code-background: rgba(255, 255, 255, 0.1); + + --ifm-scrollbar-track-background-color: #444444; + --ifm-scrollbar-thumb-background-color: #686868; + --ifm-scrollbar-thumb-hover-background-color: #7a7a7a; + + --ifm-table-stripe-background: rgba(255, 255, 255, 0.07); + + --ifm-toc-border-color: var(--ifm-color-emphasis-200); + --ifm-color-primary-contrast-background: rgb(16, 36, 69); + --ifm-color-primary-contrast-foreground: rgb(235, 242, 252); + --ifm-color-secondary-contrast-background: rgb(71, 71, 72); + --ifm-color-secondary-contrast-foreground: rgb(253, 253, 254); + --ifm-color-success-contrast-background: rgb(0, 49, 0); + --ifm-color-success-contrast-foreground: rgb(230, 246, 230); + --ifm-color-info-contrast-background: rgb(25, 60, 71); + --ifm-color-info-contrast-foreground: rgb(238, 249, 253); + --ifm-color-warning-contrast-background: rgb(77, 56, 0); + --ifm-color-warning-contrast-foreground: rgb(255, 248, 230); + --ifm-color-danger-contrast-background: rgb(75, 17, 19); + --ifm-color-danger-contrast-foreground: rgb(255, 235, 236) } diff --git a/src/data/devteam.tsx b/src/data/devteam.tsx new file mode 100644 index 0000000..be2c92d --- /dev/null +++ b/src/data/devteam.tsx @@ -0,0 +1,44 @@ +export const devteam = [ + { + name: 'Dan Cunningham', + subtitle: 'Founder / Developer', + image: '/images/about/dan.jpg', + github: 'https://github.com/sintaxasn', + linkedin: 'https://linkedin.com/in/sintaxasn', + }, + { + name: 'Mitch Richters', + subtitle: 'Lead Developer', + image: '/images/about/mitch.jpg', + github: 'https://github.com/mjr4077au', + linkedin: 'https://www.linkedin.com/in/mjrichters', + }, + { + name: 'Dan Gough', + subtitle: 'Developer', + image: '/images/about/dang.jpg', + github: 'https://github.com/DanGough', + linkedin: 'https://www.linkedin.com/in/danielgough', + }, + { + name: 'Jordan Benzing', + subtitle: 'Security', + image: '/images/about/jordanb.jpg', + github: 'https://github.com/JordanTheITGuy', + linkedin: 'https://www.linkedin.com/in/danielgough', + }, + { + name: 'Sean Lillis', + subtitle: 'Founder / Developer', + image: '/images/about/sean.jpg', + github: 'https://github.com/seanlillis', + linkedin: 'https://www.linkedin.com/in/sean-lillis-08a4288', + }, + { + name: 'Mo Mashwani', + subtitle: 'Founder / Developer', + image: '/images/about/mo.jpg', + github: 'https://github.com/mmashwani', + linkedin: 'https://linkedin.com/in/muhammad-mashwani', + }, +]; diff --git a/src/data/ecosystem.tsx b/src/data/ecosystem.tsx new file mode 100644 index 0000000..9bc623b --- /dev/null +++ b/src/data/ecosystem.tsx @@ -0,0 +1,167 @@ +export interface Solution { + name: string; + featured: boolean; + logo?: string; + logoDark?: string; + url: string; + description: string; + type: 'commercial' | 'free'; + worksWith: string[]; + categories: string[]; +} + +export const SOLUTION_WORKS_WITH = [ + 'configMgr', + 'intune', + 'standalone' +] as const; + +export const SOLUTION_CATEGORIES = [ + 'Software Update Catalog', + 'App Repackaging', + 'Package Authoring', + 'Deployment Automation', + 'Readiness & Testing', + 'Packaging Services', +] as const; + +export const solutions: Solution[] = [ + { + name: 'Patch My PC', + featured: true, + logo: '/images/solutions/pmpc_light.png', + logoDark: '/images/solutions/pmpc_dark.png', + url: 'https://patchmypc.com/', + description: 'Automation of 3rd party software updates for ConfigMgr and Intune. Stewards of PSAppDeployToolkit.', + type: 'commercial', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['Software Update Catalog', 'Deployment Automation'], + }, + { + name: 'Master Packager', + featured: false, + logo: '/images/solutions/masterpackager.png', + url: 'https://www.masterpackager.com', + description: 'Everything you need to create professional, modern Windows installer packages.', + type: 'free', + worksWith: ['ConfigMgr', 'Intune', 'Standalone'], + categories: ['App Repackaging', 'Package Authoring'], + }, + { + name: 'Devicie', + featured: false, + logo: '/images/solutions/devicie_light.png', + logoDark: '/images/solutions/devicie_dark.png', + url: 'https://devicie.com', + type: 'commercial', + description: 'Intune Automation, Management & Visibility Platform which leverages PSADT for App Deployment.', + worksWith: ['SCCM', 'Intune'], + categories: ['Software Update Catalog', 'Deployment Automation', 'Packaging Services'], + }, + { + name: 'PacKit', + featured: false, + logo: '/images/solutions/packit.png', + url: 'https://www.getpackit.com', + type: 'commercial', + description: + 'Windows-based tool designed for centralized post-packaging configuration and deployment. Part of Advanced Installer suite.', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['App Repackaging', 'Package Authoring'], + }, + { + featured: false, + name: 'Robopack', + logo: '/images/solutions/robopack.png', + url: 'https://robopack.com', + type: 'commercial', + description: + 'Package conversion and management tool for Intune - converts MSI / WinGet packages to PSADT scripts and manages Intune deployment.', + worksWith: ['Intune'], + categories: ['Software Update Catalog', 'App Repackaging', 'Deployment Automation'], + }, + { + name: 'Flexera AdminStudio', + featured: false, + logo: '/images/solutions/flexera_light.png', + logoDark: '/images/solutions/flexera_dark.png', + url: 'https://www.flexera.com/products/adminstudio', + type: 'commercial', + description: 'Packaging tool with automatic wrapping as PSADT deployment capabilities.', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['App Repackaging', 'Package Authoring'], + }, + { + name: 'Juriba App Readiness', + featured: false, + logo: '/images/solutions/juriba_light.png', + logoDark: '/images/solutions/juriba_dark.png', + url: 'https://juriba.com/', + type: 'commercial', + description: 'Packaging and testing framework which leverages PSADT for app deployment.', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['App Repackaging', 'Readiness & Testing'], + }, + { + name: 'neo42 Package Depot', + featured: false, + logo: '/images/solutions/neo42.png', + url: 'https://www.neo42.de/', + type: 'commercial', + description: + 'Delivers PSADT-based application packages ready for customer import. Uses Neo42 Extensions for PSADT.', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['Software Update Catalog', 'App Repackaging'], + }, + { + name: 'Pckgr for Intune', + featured: false, + logo: '/images/solutions/pckgr.png', + url: 'https://pckgr.com', + type: 'commercial', + description: 'Cloud packaging automation that exports PSADT-powered apps directly into Intune.', + worksWith: ['Intune'], + categories: ['Software Update Catalog', 'App Repackaging'], + }, + { + name: 'Raynet RayPack Studio', + featured: false, + logo: '/images/solutions/raynet_light.png', + logoDark: '/images/solutions/raynet_dark.png', + url: 'https://raynet-inc.com/software-packaging/raypack-studio', + type: 'commercial', + description: 'RayPack Studio accelerates enterprise packaging with PSADT templates and deployment workflows.', + worksWith: ['ConfigMgr', 'Intune'], + categories: ['App Repackaging', 'Deployment Automation'], + }, + { + name: 'Apptimized Workspace', + featured: false, + logo: '/images/solutions/apptimized.png', + url: 'https://apptimized.com/en/product/packaging-tool', + type: 'commercial', + description: 'Cloud-based application packaging tool, exports PSADT deployment scripts.', + worksWith: ['Intune'], + categories: ['Readiness & Testing'], + }, + { + name: 'xoap.io Package Wizard', + featured: false, + logo: '/images/solutions/xoap.png', + url: 'https://xoap.io/psadt-package-wizard', + type: 'commercial', + description: 'IT Automation platform with GUI for creation of PSADT deployment scripts.', + worksWith: ['Standalone'], + categories: ['Deployment Automation'], + }, + { + name: 'Deployment Editor', + featured: false, + logo: '/images/solutions/deployment_editor.png', + url: 'https://blog.tugi.ch/deployment-editor-download', + type: 'free', + description: 'Package Windows applications or create any task for enterprise deployment. No coding needed. 😊', + worksWith: ['Standalone', 'Intune'], + categories: ['Package Authoring', 'Deployment Automation'], + }, +]; diff --git a/src/data/features.ts b/src/data/features.ts new file mode 100644 index 0000000..664f557 --- /dev/null +++ b/src/data/features.ts @@ -0,0 +1,162 @@ +export interface FeatureItem { + readonly text: string; + readonly version?: 'v4' | 'v4.1' | 'v4.2'; +} + +export interface FeatureGroup { + readonly title: string; + readonly icon: string; + readonly description: string; + readonly items: readonly FeatureItem[]; +} + +export const featureGroups: readonly FeatureGroup[] = [ + { + title: 'User Interface & Dialogs', + icon: '/images/features/application_window.png', + description: 'A polished, brandable deployment experience for end users with full dialog control.', + items: [ + { text: 'Modern Fluent UI with automatic light and dark mode', version: 'v4' }, + { text: 'Classic UI option for backward compatibility' }, + { text: 'Welcome dialog with app-close prompts, deferrals, and countdown timers' }, + { + text: 'Custom dialogs with buttons, icons, input boxes, and secure password fields', + version: 'v4.1', + }, + { text: 'Progress bar with real-time percentage tracking', version: 'v4.1' }, + { text: 'Restart prompts with countdown, snooze, and deadline enforcement' }, + { text: 'Custom branding with organization logo, banner, and accent colors' }, + { text: 'Multi-language localization with formattable text and URL hyperlinks' }, + ], + }, + { + title: 'Application Lifecycle', + icon: '/images/features/construction_worker_beard_long.svg', + description: "Manage every stage of an application's deployment from discovery through removal.", + items: [ + { text: 'Install, Uninstall, and Repair deployment types with Pre/Main/Post phases' }, + { text: 'MSI installation with transforms, patches, and custom properties' }, + { text: 'EXE installation with automated exit code handling' }, + { text: 'Application discovery by name, version, publisher, or architecture' }, + { text: 'Bulk uninstallation with flexible matching and wildcards' }, + { text: 'Application blocking via IFEO to prevent launch during deployment' }, + { text: 'Zero-config deployment \u2014 auto-detect MSI or WIM in Files directory' }, + ], + }, + { + title: 'Process Execution & Control', + icon: '/images/features/devices_processor.svg', + description: 'Fine-grained control over how processes are launched, monitored, and terminated.', + items: [ + { text: 'Execute processes with window styles, priority classes, and timeouts' }, + { text: 'Run processes as the logged-in user from SYSTEM context' }, + { + text: 'Unelevated token support for Windows 11 Admin Protection', + version: 'v4.1', + }, + { text: 'Wait for or terminate child processes alongside parent', version: 'v4.1' }, + { text: 'Environment variable expansion in execution paths', version: 'v4.1' }, + { + text: 'Stream encoding control (UTF-8 for Winget and similar tools)', + version: 'v4.1', + }, + { text: 'Network drive and user-context MSI execution support', version: 'v4.1' }, + ], + }, + { + title: 'File, Registry & System Operations', + icon: '/images/features/code.svg', + description: 'Comprehensive primitives for files, folders, registry, INI, shortcuts, and permissions.', + items: [ + { text: 'File copy with Robocopy integration, delete, and folder management' }, + { text: 'Shortcut creation, modification, and icon extraction' }, + { text: 'Deploy or remove files across all local user profiles' }, + { text: 'Archive operations (zip) and WIM mount/unmount' }, + { + text: 'Registry CRUD with 32/64-bit hive support and MultiString values', + version: 'v4.1', + }, + { text: 'INI file section and value management', version: 'v4.1' }, + { text: 'Environment variable and DLL registration management', version: 'v4.1' }, + { text: 'File and folder ACL/permission management', version: 'v4.1' }, + ], + }, + { + title: 'Logging & Diagnostics', + icon: '/images/features/tasklist.svg', + description: 'Automatic, structured logging that makes troubleshooting straightforward.', + items: [ + { text: 'Comprehensive automatic logging for every function call' }, + { text: 'Hierarchical log organization by Vendor, App, and Version' }, + { text: 'MSI installer log capture alongside PSADT logs' }, + { text: 'Log compression and configurable size/history management' }, + { text: 'Structured error handling with detailed error record analysis' }, + { text: 'Debug message logging for development and troubleshooting' }, + ], + }, + { + title: 'Enterprise Platform Integration', + icon: '/images/features/satellites.svg', + description: 'First-class support for Intune, ConfigMgr, and other endpoint management platforms.', + items: [ + { text: 'Microsoft Intune deployment with metadata and standardized flows' }, + { text: 'ConfigMgr (SCCM/MCM) application model support' }, + { text: 'MCM exit code handling with Fast Retry for accurate reporting' }, + { text: 'Reboot code suppression (3010) to prevent unwanted prompts' }, + { text: 'Application bundling beyond the 5-app dependency chain limit' }, + { text: 'Bandwidth-efficient loose file deployment over distribution points' }, + { text: 'SCCM software update and task execution integration' }, + ], + }, + { + title: 'Detection & Intelligence', + icon: '/images/features/devices_laptop.svg', + description: 'Automatically detect system state, user activity, and environmental conditions.', + items: [ + { text: 'Operating system and hardware information gathering' }, + { text: 'Pending reboot detection (CBS, Windows Update, SCCM, file renames)' }, + { text: 'Battery/laptop and microphone-in-use detection' }, + { text: 'PowerPoint full-screen presentation mode detection' }, + { + text: 'OOBE/Autopilot and Enrollment Status Page (ESP) detection', + version: 'v4.1', + }, + { text: 'Active user session and Terminal Server/Citrix detection' }, + { text: 'Network connectivity testing' }, + { text: 'Service management with dependency resolution and startup type control' }, + ], + }, + { + title: 'Security, Modes & Extensibility', + icon: '/images/features/shield_checkmark.svg', + description: 'Secure architecture, flexible deployment modes, and a fully extensible framework.', + items: [ + { text: 'Four deployment modes: Auto, Interactive, NonInteractive, Silent' }, + { + text: 'Client-server architecture for secure UI rendering from SYSTEM context', + version: 'v4', + }, + { + text: 'No ServiceUI dependency \u2014 eliminates privilege escalation risks', + version: 'v4', + }, + { + text: 'Per-app RequireAdmin setting with automatic modal dialog retry', + version: 'v4.1', + }, + { + text: 'ADMX Group Policy templates for centralized enterprise control', + version: 'v4.1', + }, + { + text: 'PowerShell 5.1 and 7 dual support with digitally signed module', + version: 'v4', + }, + { text: 'Config.psd1 with precedence hierarchy and extension module callbacks' }, + { + text: 'Template scaffolding and Invoke-AppDeployToolkit.exe with /Debug switch', + version: 'v4.1', + }, + ], + }, +]; diff --git a/src/data/instructors.tsx b/src/data/instructors.tsx new file mode 100644 index 0000000..10716b4 --- /dev/null +++ b/src/data/instructors.tsx @@ -0,0 +1,31 @@ +export interface Instructor { + name: string; + role: string; + bio: string; + image: string; + linkedin: string; +} + +export const instructors: Instructor[] = [ + { + name: 'Dan Cunningham', + role: 'PSADT Co-Founder & Project Lead', + bio: 'Dan co-created PSADT and served as Project Lead until February 2026. He remains an active contributor, leveraging his deep expertise in endpoint security & management, and enterprise application deployment. His insights in the classroom are backed by real-world packaging experience from Fortune 500 companies.', + image: '/images/about/dan.jpg', + linkedin: 'https://linkedin.com/in/sintaxasn', + }, + { + name: 'Johan Arwidmark', + role: 'Deployment Expert & Trainer', + bio: 'Johan is a renowned expert in operating system and application deployment, recognized for his work with Microsoft Configuration Manager and Intune. As the founder of Viamonstra Academy, he brings decades of training experience to help IT professionals master deployment technologies.', + image: '/images/about/johan.png', + linkedin: 'https://www.linkedin.com/in/jarwidmark/', + }, + { + name: 'Dan Gough', + role: 'PSADT Developer', + bio: 'Dan Gough is also part of the PSADT dev team and is a seasoned application packaging specialist and deployment expert at Patch My PC. With extensive hands-on experience in building and troubleshooting deployment scripts across the enterprise, he offers practical, real-world insights to the course.', + image: '/images/about/dang.jpg', + linkedin: 'https://www.linkedin.com/in/danielgough', + }, +]; diff --git a/src/data/testimonials.tsx b/src/data/testimonials.tsx new file mode 100644 index 0000000..16201c5 --- /dev/null +++ b/src/data/testimonials.tsx @@ -0,0 +1,12 @@ +export const testimonials = [ + { + quote: 'Truly powerful application deployment toolkit written in PowerShell! Solving some classic problems', + name: 'Jörgen Nilsson', + company: 'Microsoft MVP, Enterprise Client Management', + }, + { + quote: 'Another very cool SCCM must-have tool!', + name: 'Kent Agerlund', + company: 'Microsoft MVP, Enterprise Client Management', + }, +]; diff --git a/src/pages/about.module.css b/src/pages/about.module.css index c4dfe10..b4fda8d 100644 --- a/src/pages/about.module.css +++ b/src/pages/about.module.css @@ -1,20 +1,36 @@ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(12px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + .aboutPage { - padding: 2rem 0; + animation: fadeInUp 0.5s var(--psadt-ease-standard) both; } .headerBlock { - text-align: center; + text-align: left; margin-bottom: 2rem; +} - h1 { - font-size: 18px; - } +.headerBlock h1 { + font-size: var(--ifm-h1-font-size); +} + +.accent { + font-family: 'Poppins', var(--ifm-font-family-base); + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-extrabold); } .heroBlock { - text-align: center; + text-align: left; padding: 4rem 0; - background-color: var(--ifm-color-gray-800); h2 { font-size: 2rem; @@ -23,55 +39,94 @@ } .introBlock { - margin: 4rem auto; + margin: 0 auto; + display: flex; + gap: var(--psadt-space-2xl); + align-items: flex-start; +} + +.introBody { + flex: 2.5; + min-width: 0; + + font-size: var(--ifm-font-size-base);} + +.introTestimonials { + flex: 1; + display: flex; + flex-direction: column; + gap: var(--psadt-space-lg); + align-self: stretch; +} + +.testimonialCard { + border-radius: var(--psadt-card-radius); + border: 1px solid var(--psadt-card-border-color); + background: var(--psadt-card-background); + box-shadow: var(--psadt-card-shadow); + overflow: hidden; + padding: var(--psadt-space-lg); + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); + justify-content: center; +} + +.testimonialCard:hover { + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-shadow-hover); +} + +.testimonialQuote { + font-size: var(--ifm-font-size-lg); + font-style: italic; + line-height: 1.6; + margin: 0 0 var(--psadt-space-md); + color: var(--ifm-color-content); +} + +.testimonialAttribution { + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); +} + +.testimonialAttribution strong { + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-bold); } .foundersBlock { - margin: 2rem auto; - text-align: center; - display: flexbox; + margin: 4rem auto; + text-align: left; + display: flex; flex-direction: column; - align-items: center; + align-items: left; + justify-content: left; h2 { - margin-bottom: 2rem; - font-size: 2rem; + font-size: var(--ifm-h2-font-size); + margin-bottom: var(--psadt-space-2xl); + font-weight: var(--ifm-font-weight-bold); + border-bottom: none; + + accent { + color: var(--ifm-color-primary); + } } .founderCard { - background: linear-gradient(135deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0.08)); - -webkit-backdrop-filter: blur(12px); - backdrop-filter: blur(12px); - margin: var(--space-lg) 0; - padding: var(--space-2xl) var(--space-lg); - border-radius: var(--radius-xl); - box-shadow: var(--shadow-lg); - border: 1px solid rgba(255, 255, 255, 0.25); - text-align: center; + border-radius: var(--psadt-card-radius); + border: 1px solid var(--psadt-card-border-color); + background: var(--psadt-card-background); + box-shadow: var(--psadt-card-shadow); + margin: 0; + padding: var(--psadt-space-xl); + text-align: left; display: flex; flex-direction: column; - gap: var(--space-lg); + gap: var(--psadt-space-sm); align-items: center; - transition: all var(--transition-normal) var(--transition-bezier); - position: relative; overflow: hidden; - - &::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 4px; - background: linear-gradient(90deg, var(--palette-blue), var(--palette-blue-dark)); - border-radius: 20px 20px 0 0; - } - - &:hover { - transform: translateY(-8px); - box-shadow: var(--shadow-xl); - border-color: var(--palette-blue); - } + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); p, h2, @@ -79,110 +134,157 @@ margin: 0; } - .founderImage { - width: 120px; - height: 120px; - border-radius: 50%; - margin-bottom: 0.5rem; - background: white; - border: 4px solid rgba(255, 255, 255, 0.3); - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1); - transition: all 0.3s ease; - object-fit: cover; + &:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--ifm-color-primary); } - &:hover .founderImage { - transform: scale(1.05); - border-color: var(--palette-blue); + .founderImage { + width: 128px; + height: 128px; + border-radius: var(--psadt-card-radius); + margin-bottom: var(--psadt-space-sm); + border: 1px solid var(--psadt-card-border-color); + box-shadow: var(--psadt-card-image-shadow); + background: var(--psadt-card-image-background); } .founderTitle { - font-size: 1.4rem; - font-weight: 700; + font-family: 'Poppins', var(--ifm-font-family-base); + font-size: var(--ifm-font-size-xl); + font-weight: var(--ifm-font-weight-bold); color: var(--ifm-color-emphasis-900); - margin-bottom: 0.25rem; + margin: 0; } .founderSubtitle { - font-weight: 600; - color: var(--palette-blue); - font-size: 1rem; - margin-bottom: 1rem; + font-weight: var(--ifm-font-weight-bold); + color: var(--ifm-color-primary); + font-size: var(--ifm-font-size-base); + margin: 0 0 var(--psadt-space-sm); + } + + .founderLinks a { + color: var(--ifm-color-content-secondary); + margin: 0 0.5rem 0 .5rem; + transition: color var(--psadt-transition-normal); + } + + .founderLinks a:hover { + color: var(--ifm-color-primary); } } } + +.founderGrid { + width: 100%; + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: var(--psadt-space-xl); + +} + .contributorsBlock { - margin: 2rem auto; - text-align: center; - display: flexbox; + margin: 0 auto; + text-align: left; + display: flex; flex-direction: column; - align-items: center; + align-items: left; h2 { - margin-bottom: 2rem; - font-size: 2rem; + font-size: var(--ifm-h2-font-size); + margin-bottom: var(--psadt-space-2xl); + border-bottom: none; } } -.founderLinks a { - color: var(--ifm-color-primary-darker); - margin: 0 0.5rem; - transition: color 0.2s; -} +/* ─── Contributor Card Grid ─── */ -.founderLinks a:hover { - color: var(--ifm-color-primary); +.contributorGrid { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: var(--psadt-space-md); + width: 100%; } -/* Dark theme support for founder cards */ -html[data-theme='dark'] .founderCard { - background: linear-gradient(135deg, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.1)); - border: 1px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); +.contributorCard { + border-radius: var(--psadt-card-radius); + border: 1px solid var(--psadt-card-border-color); + background: var(--psadt-card-background); + box-shadow: var(--psadt-card-shadow); + padding: var(--psadt-space-md); + display: flex; + flex-direction: column; + align-items: center; + gap: var(--psadt-space-md); + text-decoration: none; + color: inherit; + overflow: hidden; + transition: border-color var(--psadt-transition-normal), box-shadow var(--psadt-transition-normal); + min-height: 130px; } -html[data-theme='dark'] .founderCard:hover { - box-shadow: 0 16px 48px rgba(0, 0, 0, 0.4); - border-color: var(--palette-blue); +.contributorCard:hover { + text-decoration: none; + color: inherit; + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-shadow-hover); } -html[data-theme='dark'] .founderCard .founderImage { - border: 4px solid rgba(255, 255, 255, 0.1); - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3); +.contributorAvatar { + width: 72px; + height: 72px; + border-radius: 25%; + object-fit: cover; + border: 1px solid var(--psadt-card-border-color); + box-shadow: var(--psadt-card-image-shadow); } -html[data-theme='dark'] .founderCard:hover .founderImage { - border-color: var(--palette-blue); +.contributorName { + font-size: var(--ifm-font-size-md); + font-weight: var(--ifm-font-weight-medium); + color: var(--ifm-color-content-secondary); + margin: 0; + text-align: center; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 100%; + transition: color var(--psadt-transition-normal); } -html[data-theme='dark'] .founderCard .founderTitle { - color: white; +.contributorCard:hover .contributorName { + color: var(--ifm-color-primary); } /* Responsive adjustments */ @media screen and (max-width: 996px) { - .foundersBlock .row { - display: flex; + .introBlock { flex-direction: column; - align-items: center; + gap: var(--psadt-space-xl); } - .foundersBlock .col { - width: 100%; - max-width: 400px; - margin-bottom: 2rem; + .introTestimonials { + align-self: stretch; } - .founderCard { - margin: 1rem 0; - padding: 2rem 1rem; + .founderGrid { + grid-template-columns: repeat(2, minmax(240px, 1fr)); + } + + .contributorGrid { + grid-template-columns: repeat(4, 1fr); } } @media screen and (max-width: 768px) { + .founderGrid { + grid-template-columns: 1fr; + } + .founderCard { - padding: 1.5rem 1rem; + padding: var(--psadt-space-xl) var(--psadt-space-md); } .founderImage { @@ -195,6 +297,11 @@ html[data-theme='dark'] .founderCard .founderTitle { } .founderSubtitle { - font-size: 0.9rem; + font-size: var(--ifm-font-size-sm); + } + + .contributorGrid { + grid-template-columns: repeat(3, 1fr); + gap: var(--psadt-space-sm); } } diff --git a/src/pages/about.tsx b/src/pages/about.tsx index d693eb4..5045843 100644 --- a/src/pages/about.tsx +++ b/src/pages/about.tsx @@ -5,65 +5,68 @@ import Layout from '@theme/Layout'; import styles from './about.module.css'; import Heading from '@theme/Heading'; import Link from '@docusaurus/Link'; +import { devteam } from '../data/devteam'; +import { testimonials } from '../data/testimonials'; -const AboutPage = () => { - const founders = [ - { - name: 'Sean Lillis', - subtitle: 'Founder / Developer', - image: '../../images/about/sean.jpg', - github: 'https://github.com/seanlillis', - linkedin: 'https://www.linkedin.com/in/sean-lillis-08a4288', - }, - { - name: 'Dan Cunningham', - subtitle: 'Founder / Developer / Project Lead', - image: '../../images/about/dan.jpg', - github: 'https://github.com/sintaxasn', - linkedin: 'https://linkedin.com/in/sintaxasn', - }, - { - name: 'Mo Mashwani', - subtitle: 'Founder / Developer', - image: '../../images/about/mo.jpg', - github: 'https://www.linkedin.com/in/mmashwani', - linkedin: 'https://linkedin.com/in/muhammad-mashwani', - }, - { - name: 'Mitch Richters', - subtitle: 'Lead Developer', - image: '../../images/about/mitch.jpg', - github: 'https://github.com/mjr4077au', - linkedin: 'https://www.linkedin.com/in/mjrichters', - }, - { - name: 'Dan Gough', - subtitle: 'Developer', - image: '../../images/about/dang.jpg', - github: 'https://github.com/DanGough', - linkedin: 'https://www.linkedin.com/in/danielgough', - }, - ]; +interface Contributor { + login: string; + avatar_url: string; + html_url: string; +} + +const CACHE_KEY = 'psadt_contributors'; +const CACHE_TTL = 1000 * 60 * 60; // 1 hour - const [contributors, setContributors] = useState([]); +const AboutPage = () => { + const [contributors, setContributors] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(null); useEffect(() => { + const excludedLogins = ['seanlillis', 'sintaxasn', 'mmashwani', 'mjr4077au', 'dangough']; + const fetchContributors = async () => { try { + // Check sessionStorage cache first + const cached = sessionStorage.getItem(CACHE_KEY); + if (cached) { + const { data, timestamp } = JSON.parse(cached); + if (Date.now() - timestamp < CACHE_TTL && Array.isArray(data)) { + setContributors(data); + setIsLoading(false); + return; + } + } + const response = await fetch('https://api.github.com/repos/PSAppDeployToolkit/PSAppDeployToolkit/contributors'); + if (!response.ok) { + throw new Error(`GitHub API returned ${response.status}`); + } const data = await response.json(); - const excludedLogins = ['seanlillis', 'sintaxasn', 'mmashwani', 'mjr4077au', 'dangough']; + if (!Array.isArray(data)) { + throw new Error('Unexpected API response format'); + } const contributorsData = data - .map((contributor: { login: string; html_url: string }) => ({ + .map((contributor: Contributor) => ({ login: contributor.login, + avatar_url: contributor.avatar_url, html_url: contributor.html_url, })) - .filter((contributor: { login: string }) => !excludedLogins.includes(contributor.login.toLowerCase())) - .sort((a: { login: string }, b: { login: string }) => a.login.localeCompare(b.login)); + .filter((contributor: Contributor) => !excludedLogins.includes(contributor.login.toLowerCase())) + .sort((a: Contributor, b: Contributor) => a.login.localeCompare(b.login)); setContributors(contributorsData); - } catch (error) { - console.error('Error fetching contributors:', error); + + // Cache the result + try { + sessionStorage.setItem(CACHE_KEY, JSON.stringify({ data: contributorsData, timestamp: Date.now() })); + } catch { + // sessionStorage may be unavailable + } + } catch (err) { + setError('Unable to load contributors at this time.'); + } finally { + setIsLoading(false); } }; @@ -71,112 +74,137 @@ const AboutPage = () => { }, []); return ( - -
+ +
{/* Header Block */} -
- About PSAppDeployToolkit -
- -
-

- The PowerShell App Deployment Toolkit (PSAppDeployToolkit) is an open-source framework which - simplifies the complex scripting challenges of application repackaging, customization, and deployment of - applications in a managed Windows environment. It compliments and enhances existing deployment and - configuration management solutions (such as Microsoft Intune, SCCM, IBM BigFix, Tanium Deploy and VMware - Workspace ONE) with new capabilities. It provides a consistent, corporate-branded deployment experience for - end users, ensures packaging teams follow best practices, and substantially improves overall deployment - success rates. -

-

- PSAppDeployToolkit was created by Sean Lillis, Dan Cunningham and Mo Mashwani in their - spare time while working for one of the 'Big Five' financial services companies, where it was quickly adopted as the global standard for deploying applications. - It was first released to CodePlex in August 2013. Since then, it has grown from a small project to being - almost universally adopted as the de facto deployment standard by companies all overthe world - largely due - to its reputation for stability and ease of use. From small companies to Fortune 500s and federal - governments, PSAppDeployToolkit is used by in-house IT teams, consultants, and managed service providers to - deploy applications on millions of endpoints all over the world. -

-

- - 'Truly powerful application deployment toolkit written in PowerShell! Solving some classic - problems'- Jörgen Nilsson, Microsoft MVP, Enterprise Client Management - -

-

- - 'Another very cool SCCM 2012 must have tool - PowerShell App Deployment Toolkit' -{' '} - Kent Agerlund, Microsoft MVP, Enterprise Client Management - -

+
+ + About PSAppDeployToolkit{' '} +
- {/* Founders Block */} -
- Development Team - - {/* First Row - 3 cards */} -
- {founders.slice(0, 3).map((founder, index) => ( -
-
- {`Image -

{founder.name}

-

{founder.subtitle}

-

- - - {' '} - - - -

{' '} -
+
+
+

+ The PowerShell App Deployment Toolkit (PSAppDeployToolkit or PSADT) is an open-source + framework which simplifies the complex scripting challenges of application repackaging, customization, and + deployment of applications in a managed Windows environment. It complements and enhances existing + deployment and configuration management solutions (such as Microsoft Intune, SCCM, IBM BigFix, Tanium + Deploy and VMware Workspace ONE) with new capabilities. It provides a consistent, corporate-branded + deployment experience for end users, ensures packaging teams follow best practices, and substantially + improves overall deployment success rates. +

+

+ PSAppDeployToolkit was created by Sean Lillis, Dan Cunningham and Mo Mashwani in + their spare time while working for one of the 'Big Five' financial services companies, where it + was quickly adopted as the global standard for deploying applications. It was first released to CodePlex + in August 2013. Since then, it has grown from a small project to being almost universally adopted as the + de facto deployment standard by companies all over the world - largely due to its reputation for stability + and ease of use. From small companies to Fortune 500s and federal governments, PSAppDeployToolkit is used + by in-house IT teams, consultants, and managed service providers to deploy applications on millions of + endpoints all over the world. +

+

+ In 2023, the PSADT team joined forces with Patch My PC, who now steward the project's ongoing + development and maintenance. PSADT finally saw its long awaited v4 release in December 2024, + followed by v4.1 in July 2025. The core team of developers and contributors continue to actively + maintain and enhance the framework, with regular releases and new features based on community feedback. +

+

+ v4.2 is currently in development and slated for Q2 2026. +

+
+
+ {testimonials.map((testimonial) => ( +
+

“{testimonial.quote}”

+

+ {testimonial.name} +
+ {testimonial.company} +

))}
+
- {/* Second Row - 2 centered cards */} -
-
- {founders.slice(3, 5).map((founder, index) => ( -
-
- {`Image -

{founder.name}

-

{founder.subtitle}

+ {/* Founders Block */} +
+ + Development Team + +

+ This is the ragtag bunch who have been flying the PSADT flag for 14+ years. Some haven't been around as + long, some aren't as active these days - but we've all put in countless hours building this, implementing + requested features, providing support, attended conferences and given talks. We all have a deep passion for + this project and are proud of what we've built together. +

+
+ {devteam.slice(0, 6).map((member) => ( +
+
+ {`${member.name}, +

{member.name}

+

{member.subtitle}

- - + +

{' '} +

))} -
{/* Contributors Block */} -
- Contributors -

- {contributors.map((contributor, index) => ( - - {contributor.html_url ? ( - - {contributor.login} - - ) : ( - `${contributor.login}` - )} - {index < contributors.length - 1 && ' '} - - ))} +

+ + Contributers +

+ We also want to give a shoutout to the many other contributors who have come and gone over the years - you + know who you are, and so do we! (thanks GitHub contributer stats!), and we thank you for your contributions, + whether it was a single bug fix, a feature enhancement or documentation improvement. +

+
+ {isLoading &&

Loading contributors...

} + {error &&

{error}

} + {!isLoading && !error && ( +
+ {contributors.map((contributor) => ( + + {contributor.login} +

{contributor.login}

+ + ))} +
+ )} +
diff --git a/src/pages/ecosystem.module.css b/src/pages/ecosystem.module.css new file mode 100644 index 0000000..f534e86 --- /dev/null +++ b/src/pages/ecosystem.module.css @@ -0,0 +1,462 @@ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(12px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +/* Ecosystem Page */ +.ecosystemPage { + padding: 3rem 0 4rem; + animation: fadeInUp 0.5s var(--psadt-ease-standard) both; +} + +/* Header */ +.headerBlock { + text-align: left; + gap: var(--psadt-space-lg); +} + +.headerBlock h1 { + text-align: left; + font-size: var(--ifm-font-size-4xl); + font-weight: var(--ifm-font-weight-extrabold); + color: var(--ifm-color-primary); + border-bottom: none; +} + +.subtitle { + padding-top: 2rem; + padding-bottom: 1rem; + max-width: 960px; +} + +/* Page Layout: sidebar + grid */ +.pageLayout { + display: grid; + grid-template-columns: 240px 1fr; + gap: var(--psadt-space-xl); + align-items: start; +} + +/* Filter Sidebar */ +.filterSidebar { + position: sticky; + top: calc(var(--ifm-navbar-height) + var(--psadt-space-lg)); + background: var(--psadt-sidebar-glass-surface); + -webkit-backdrop-filter: blur(12px); + backdrop-filter: blur(12px); + border: 1px solid var(--psadt-card-border-color); + border-radius: var(--ifm-global-radius); + padding: var(--psadt-space-lg); + box-shadow: var(--psadt-card-shadow); + max-height: calc(100vh - var(--ifm-navbar-height) - var(--psadt-space-xl)); + overflow-y: auto; +} + +.filterSection { + margin-bottom: var(--psadt-space-lg); +} + +.filterSection:last-of-type { + margin-bottom: 0; +} + +.filterLabel { + font-size: var(--ifm-font-size-xs); + font-weight: var(--ifm-font-weight-bold); + color: var(--ifm-color-content-secondary); + margin-bottom: var(--psadt-space-sm); + text-transform: uppercase; + letter-spacing: 0.06em; +} + +.filterButtons { + display: flex; + flex-direction: column; + gap: 4px; +} + +.filterButton { + padding: 5px 12px; + border-radius: var(--psadt-radius-sm); + border: 1px solid transparent; + background: transparent; + color: var(--ifm-color-content-secondary); + font-size: var(--ifm-font-size-sm); + font-weight: var(--ifm-font-weight-medium); + cursor: pointer; + transition: background-color var(--psadt-transition-normal), color var(--psadt-transition-normal); + line-height: 1.4; + text-align: left; +} + +.filterButton:hover { + background: var(--ifm-menu-color-background-hover); + color: var(--ifm-color-primary); +} + +.filterButtonActive { + background: var(--ifm-color-primary); + color: var(--ifm-color-content-inverse); + font-weight: var(--ifm-font-weight-bold); + border-color: var(--ifm-color-primary-dark); +} + +.filterButtonActive:hover { + background: var(--ifm-color-primary-dark); + color: var(--ifm-color-content-inverse); +} + +/* Filter Footer */ +.filterFooter { + margin-top: var(--psadt-space-lg); + padding-top: var(--psadt-space-md); + border-top: 1px solid var(--psadt-card-border-color); + display: flex; + flex-direction: column; + gap: var(--psadt-space-sm); +} + +.resultCount { + font-size: var(--ifm-font-size-xs); + color: var(--ifm-color-content-secondary); +} + +.clearButton { + padding: 5px 12px; + border-radius: var(--psadt-radius-sm); + border: 1px solid var(--psadt-card-border-color); + background: transparent; + color: var(--ifm-color-content-secondary); + font-size: var(--ifm-font-size-xs); + cursor: pointer; + transition: border-color var(--psadt-transition-normal), color var(--psadt-transition-normal); + text-align: center; +} + +.clearButton:hover { + border-color: var(--ifm-color-danger); + color: var(--ifm-color-danger); +} + +/* Solution Grid */ +.solutionGrid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--psadt-space-xl); +} + +/* Solution Card */ +.solutionCard { + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + border-radius: var(--ifm-global-radius); + padding: var(--psadt-space-xl); + box-shadow: var(--psadt-card-shadow); + display: flex; + flex-direction: column; + position: relative; + overflow: hidden; + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); +} + +.solutionCard:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--ifm-color-primary); +} + +/* Card Logo */ +.logoContainer { + width: 96px; + height: 96px; + border-radius: var(--ifm-global-radius); + background: var(--psadt-card-image-background); + display: flex; + align-items: center; + justify-content: center; + margin-bottom: var(--psadt-space-lg); + overflow: hidden; + object-fit: cover; + border: 1px solid var(--psadt-card-border-color); + box-shadow: var(--psadt-card-image-shadow); +} + +.logoContainer:hover { + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-image-shadow); +} + + +.logoImage { + width: 64px; + height: 64px; + object-fit: contain; +} + +.logoFallback { + width: 64px; + height: 64px; + display: flex; + align-items: center; + justify-content: center; + background: var(--ifm-color-primary); + border-radius: var(--ifm-global-radius); + color: white; + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-font-size-2xl); +} + +/* Card Content */ +.cardName { + font-size: var(--ifm-font-size-xl); + font-weight: var(--ifm-font-weight-bold); + margin-bottom: var(--psadt-space-sm); + line-height: 1.3; +} + +.cardName a { + color: var(--ifm-color-content); + text-decoration: none; + transition: color var(--psadt-transition-normal); +} + +.cardName a:hover { + color: var(--ifm-color-primary); + text-decoration: underline; +} + +.cardDescription { + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-content-secondary); + line-height: 1.6; + margin-bottom: var(--psadt-space-lg); + flex-grow: 1; +} + +/* Badge Groups */ +.badgeGroups { + display: flex; + flex-direction: column; + gap: var(--psadt-space-sm); + margin-top: auto; +} + +.badgeRow { + display: flex; + flex-wrap: wrap; + align-items: center; + gap: 5px; +} + +.badgeRowLabel { + font-size: 10px; + font-weight: var(--ifm-font-weight-bold); + text-transform: uppercase; + letter-spacing: 0.04em; + color: var(--ifm-color-content-secondary); + margin-right: 2px; + white-space: nowrap; +} + +/* License badges */ +.badgeLicense { + padding: 2px 10px; + border-radius: var(--ifm-global-radius); + font-size: 11px; + font-weight: var(--ifm-font-weight-semibold); + white-space: nowrap; +} + +.badgeLicenseCommercial { + background: var(--psadt-badge-license-commercial-bg); + color: var(--psadt-badge-license-commercial-text); +} + +.badgeLicenseFree { + background: var(--psadt-badge-license-free-bg); + color: var(--psadt-badge-license-free-text); +} + +/* Works With badges */ +.badgeWorksWith { + padding: 2px 10px; + border-radius: var(--ifm-global-radius); + font-size: 11px; + font-weight: var(--ifm-font-weight-medium); + white-space: nowrap; + background-color: var(--psadt-badge-workswith-bg); + color: var(--psadt-badge-workswith-text); + } +/* Capabilities badges */ +.badgeCapability { + padding: 2px 10px; + border-radius: var(--ifm-global-radius); + font-size: 11px; + font-weight: var(--ifm-font-weight-medium); + white-space: nowrap; + background: var(--psadt-badge-capability-bg); + color: var(--psadt-badge-capability-text); + } + +/* Empty State */ +.emptyState { + grid-column: 1 / -1; + text-align: center; + padding: var(--psadt-space-3xl) var(--psadt-space-xl); + color: var(--ifm-color-content-secondary); +} + +.emptyState p { + font-size: var(--ifm-font-size-lg); + margin: 0; +} + +.footerBlock { + padding-top: 4rem; + padding-bottom: 0; + text-align: center; + font-size: var(--ifm-font-size-xl); +} + +.footerBlock .gitHubLink { + font-weight: var(--ifm-font-weight-extrabold); +} + +/* ============ Dark Mode ============ */ + +html[data-theme='dark'] .filterSidebar { + background: var(--psadt-sidebar-glass-surface); +} + +html[data-theme='dark'] .filterButton { + color: var(--ifm-color-content-secondary); +} + +html[data-theme='dark'] .filterButton:hover { + color: var(--ifm-color-content); + background: var(--ifm-menu-color-background-hover); +} + +html[data-theme='dark'] .filterButtonActive { + background: var(--ifm-color-primary); + color: var(--ifm-color-content-inverse); +} + +html[data-theme='dark'] .filterFooter { + border-top-color: var(--ifm-color-emphasis-300); +} + +html[data-theme='dark'] .clearButton { + border-color: var(--ifm-color-emphasis-300); + color: var(--ifm-color-content-secondary); +} + +html[data-theme='dark'] .cardName a { + color: var(--ifm-color-content); +} + +html[data-theme='dark'] .cardName a:hover { + color: var(--ifm-color-primary); +} + +html[data-theme='dark'] .badgeLicenseCommercial { + background: var(--psadt-badge-license-commercial-bg); + color: var(--psadt-badge-license-commercial-text); +} + +html[data-theme='dark'] .badgeLicenseFree { + background: var(--psadt-badge-license-free-bg); + color: var(--psadt-badge-license-free-text); +} + +html[data-theme='dark'] .badgeWorksWith { + background-color: var(--psadt-badge-workswith-bg); + color: var(--psadt-badge-workswith-text); +} + +html[data-theme='dark'] .badgeCapability { + background: var(--psadt-badge-capability-bg); + color: var(--psadt-badge-capability-text); +} + +html[data-theme='dark'] .badgeRowLabel { + color: var(--ifm-color-content-secondary); +} + +.filterButton:focus-visible, +.clearButton:focus-visible, +.cardName a:focus-visible { + outline: 2px solid var(--ifm-color-primary); + outline-offset: 2px; + box-shadow: 0 0 0 3px var(--psadt-focus-ring-color); +} + +/* ============ Responsive ============ */ + +/* 2-col grid at 1200px */ +@media (max-width: 1200px) { + .solutionGrid { + grid-template-columns: repeat(2, 1fr); + gap: var(--psadt-space-lg); + } +} + +/* Collapse sidebar at 996px */ +@media (max-width: 996px) { + .pageLayout { + grid-template-columns: 1fr; + } + + .filterSidebar { + position: static; + max-height: none; + } + + .filterButtons { + flex-direction: row; + flex-wrap: wrap; + } + + .filterButton { + padding: 5px 14px; + border: 1px solid var(--psadt-card-border-color); + border-radius: var(--ifm-global-radius); + } + + .solutionGrid { + grid-template-columns: repeat(2, 1fr); + gap: var(--psadt-space-lg); + } +} + +/* 1 column at 768px */ +@media (max-width: 768px) { + .solutionGrid { + grid-template-columns: 1fr; + gap: var(--psadt-space-md); + } + + .cardName { + font-size: var(--ifm-font-size-lg); + } +} + +/* Reduced motion support */ +@media (prefers-reduced-motion: reduce) { + .solutionCard { + transition: none; + } + + .solutionCard:hover { + transform: none; + } + + .filterButton { + transition: none; + } +} diff --git a/src/pages/ecosystem.tsx b/src/pages/ecosystem.tsx new file mode 100644 index 0000000..77f9589 --- /dev/null +++ b/src/pages/ecosystem.tsx @@ -0,0 +1,244 @@ +import { useState, useMemo, useCallback } from 'react'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Heading from '@theme/Heading'; +import { useColorMode } from '@docusaurus/theme-common'; +import styles from './ecosystem.module.css'; +import { solutions, SOLUTION_CATEGORIES } from '../data/ecosystem'; +import type { Solution } from '../data/ecosystem'; + +type TypeFilter = 'all' | 'commercial' | 'free'; + +const EditPage = 'https://github.com/PSAppDeployToolkit/website/blob/main/src/data/ecosystem.tsx' as const; + +const WORKS_WITH_OPTIONS = ['ConfigMgr', 'Intune', 'Standalone'] as const; + +function SolutionCard({ solution }: { solution: Solution }) { + const initial = solution.name.charAt(0).toUpperCase(); + const { colorMode } = useColorMode(); + const logoSrc = + colorMode === 'dark' && solution.logoDark + ? solution.logoDark + : solution.logo; + + return ( +
+
+ {logoSrc ? ( + {`${solution.name} + ) : ( +
{initial}
+ )} +
+

+ + {solution.name} + +

+

{solution.description}

+
+ {/* License row */} +
+ License: + + {solution.type === 'commercial' ? 'Commercial' : 'Free'} + +
+ {/* Works With row */} +
+ Works with: + {solution.worksWith.map((w) => ( + + {w} + + ))} +
+ {/* Capabilities row */} +
+ Capabilities: + {solution.categories.map((cat) => ( + + {cat} + + ))} +
+
+
+ ); +} + +export default function EcosystemPage() { + const [typeFilter, setTypeFilter] = useState('all'); + const [selectedWorksWith, setSelectedWorksWith] = useState>(new Set()); + const [selectedCategories, setSelectedCategories] = useState>(new Set()); + + const toggleWorksWith = useCallback((value: string) => { + setSelectedWorksWith((prev) => { + const next = new Set(prev); + if (next.has(value)) { + next.delete(value); + } else { + next.add(value); + } + return next; + }); + }, []); + + const toggleCategory = useCallback((category: string) => { + setSelectedCategories((prev) => { + const next = new Set(prev); + if (next.has(category)) { + next.delete(category); + } else { + next.add(category); + } + return next; + }); + }, []); + + const clearFilters = useCallback(() => { + setTypeFilter('all'); + setSelectedWorksWith(new Set()); + setSelectedCategories(new Set()); + }, []); + + const filteredSolutions = useMemo(() => { + return solutions.filter((solution) => { + if (typeFilter !== 'all' && solution.type !== typeFilter) { + return false; + } + if (selectedWorksWith.size > 0) { + const hasMatch = solution.worksWith.some((w) => selectedWorksWith.has(w)); + if (!hasMatch) { + return false; + } + } + if (selectedCategories.size > 0) { + const hasMatch = solution.categories.some((cat) => selectedCategories.has(cat)); + if (!hasMatch) { + return false; + } + } + return true; + }); + }, [typeFilter, selectedWorksWith, selectedCategories]); + + const hasActiveFilters = + typeFilter !== 'all' || selectedWorksWith.size > 0 || selectedCategories.size > 0; + + return ( + +
+
+ Ecosystem +

+ Explore the PSADT ecosystem of partner solutions, integrations, and tools for application packaging and + deployment. +

+
+ +
+ {/* Filter Sidebar */} + + + {/* Solution Grid */} +
+ {filteredSolutions.length > 0 ? ( + filteredSolutions.map((solution) => ) + ) : ( +
+

No solutions match your current filters.

+
+ )} +
+
+ +
+

+ Want to see your solution added to this page? + + + {' '} + Add and submit a PR on GitHub. + + +

+
+
+
+ ); +} diff --git a/src/pages/features.module.css b/src/pages/features.module.css index bf43978..edfb823 100644 --- a/src/pages/features.module.css +++ b/src/pages/features.module.css @@ -1,182 +1,161 @@ -/* Desktop styling */ -.featureColumns { - border: 3px solid rgb(0, 0, 0, 0.1); - background-color: #fff; - border-radius: var(--ifm-global-radius); - padding: 2.5rem 2.5rem 1.5rem; - margin: 0 0 2.5rem; +/* ─── Page Header ─── */ +.featuresPage { + padding-bottom: var(--psadt-space-3xl); } -.featureColumns h3 { - font-size: 1.8rem; - padding-bottom: 1rem; - text-align: center; -} - -.featureImage { - width: 75px; - padding: 1rem; - border-radius: var(--ifm-global-radius); - margin-bottom: 1.5rem; - background-color: rgba(16, 36, 69, 0.05); -} - -.featureHeader { - font-size: 1.2rem; - font-weight: 500; -} - -.capabilityHeader { - font-size: 1.5rem; - font-weight: 700; - padding-bottom: 1rem; +.pageHeader { + text-align: left; + margin-bottom: var(--psadt-space-3xl); } -.capabilitiesContainer { - padding: 0 var(--ifm-spacing-horizontal) 7rem; +.pageTitle { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h1-font-size); + letter-spacing: -0.025em; + line-height: 1.1; + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h1-font-size); + color: var(--ifm-color-primary); + margin-bottom: var(--psadt-space-md); } -.featureText ul { - padding: 0 6px 0 0; - list-style-type: none; +.pageSubtitle { + font-size: var(--ifm-font-size-xl); + color: var(--ifm-color-content-secondary); + max-width: 50ch; + line-height: 1.6; } -.featureText li { - padding: 0 0 1rem; +/* ─── Feature Group List ─── */ +.groupList { + display: flex; + flex-direction: column; + gap: var(--psadt-space-2xl); } -.featureText { - font-size: 0.9rem; +/* ─── Feature Group Card ─── */ +.groupCard { + padding: var(--psadt-space-lg) var(--psadt-space-xl); + border-radius: var(--psadt-card-radius); + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + transition: + box-shadow var(--psadt-transition-normal), + border-color var(--psadt-transition-normal); } -.introHeader { - text-align: center; - font-weight: 600; - font-size: 1.5rem; +.groupCard:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--psadt-card-border-color-hover); } -.introText { - text-align: center; - width: 60%; - font-size: 0.9rem; - display: block; - margin: 2rem auto 2.5rem; +.groupHeader { + display: flex; + align-items: flex-start; + gap: var(--psadt-space-lg); + margin-bottom: var(--psadt-space-md); } -.blockStyling { - margin: 4rem 0 8rem; +.groupIcon { + width: 72px; + height: 72px; + flex-shrink: 0; + object-fit: contain; } -.blockTitle { - text-align: left; - font-weight: 500; - font-size: 2.2em; - padding: 0rem 0 1rem; - line-height: 1.3em; - margin: 0 0 0.8rem; +.groupHeaderText { + flex: 1; + min-width: 0; } -.capabilitiesContainer .blockTitle { - text-align: center; +.groupTitle { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h3-font-size); + margin-bottom: var(--psadt-space-xs); } -.capabilitiesTitle { - text-align: center; - font-weight: 500; - font-size: 2.2em; - padding: 2rem 0 0.5rem; - line-height: 1.3em; - margin: 0 0 0.8rem; +.groupDescription { + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-content-secondary); + line-height: 1.6; + margin: 0; } -.logoThickText { - color: var(--palette-blue); - font-weight: 800 !important; +/* ─── Feature Items Grid ─── */ +.itemsGrid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: var(--psadt-space-sm) var(--psadt-space-sm); + list-style: none; + padding: 0; + margin: 0; } -.blockText { - text-align: left; - font-size: 1.1rem; +.featureItem { + display: flex; + align-items: flex-start; + gap: var(--psadt-space-sm); + padding: var(--psadt-space-sm) 0; } -.blockImage { - max-height: 400px; +.checkIcon { + flex-shrink: 1; + color: var(--ifm-color-success); + margin-top: 2px; } -main.features { - align-items: center; - width: 100%; - background-color: rgba(0, 0, 0, 0.05) !important; +.featureText { + font-size: var(--ifm-font-size-md); + line-height: 1.5; + color: var(--ifm-color-content); } -.blockText ul { - list-style-image: url('@site/static/images/checkmark.svg'); - font-size: 1rem; - padding: 0 6pxpx 0 15px; +.versionBadge { + display: inline-block; + margin-left: var(--psadt-space-sm); + padding: 1px 8px; + font-size: 0.7rem; + font-weight: var(--ifm-font-weight-semibold); + border-radius: 999px; + background-color: var(--ifm-color-primary-lighter); + color: var(--ifm-color-primary-darkest); + vertical-align: middle; + line-height: 1.6; } -.blockText li::marker { - font-size: 1.8em; - line-height: 0.1; +html[data-theme='dark'] .versionBadge { + background-color: var(--ifm-color-primary-darkest); + color: var(--ifm-color-primary-lightest); } -/* Forced Desktop styling only */ -@media (min-width: 997px) { - .capabilityColumns { - padding: 3rem 1.5rem 0; - } - - html[data-theme='dark'] .featureImage { - background-color: rgba(255, 255, 255, 0.1); +/* ─── Responsive: Tablet ─── */ +@media screen and (max-width: 996px) { + .groupCard { + padding: var(--psadt-space-xl); } } -/* Tablet and Phone styling */ -@media (max-width: 996px) { - .featureColumns { - padding: 2rem 2rem 1.5rem; - display: block; - } - - .capabilityColumns { - padding: 3rem 2rem 2rem; - margin: 1rem auto; - } - - .blockStyling { - margin: 1.5rem 0 5rem; - } - - .featureImage { - width: 50%; - } - - .introText { - width: 90% !important; - font-size: 0.9rem; - display: block; - margin: 2rem auto 2.5rem; +/* ─── Responsive: Mobile ─── */ +@media screen and (max-width: 768px) { + .groupHeader { + flex-direction: column; + align-items: left; + text-align: left; } - .blockImage { - display: none; + .groupIcon { + width: 48px; + height: 48px; } - .featureText ul { - margin: 0; + .itemsGrid { + grid-template-columns: 1fr; } - .capabilitiesContainer .blockTitle { - text-align: left; + .groupCard { + padding: var(--psadt-space-lg); } - - .featureColumns h3 { - text-align: left; - } -} - -/* Dark Theme Styling */ -html[data-theme='dark'] .featureColumns { - background-color: var(--ifm-navbar-background-color); - border: 1px solid rgba(255, 255, 255, 0.1); } diff --git a/src/pages/features.tsx b/src/pages/features.tsx index bd74bd7..9aa1b81 100644 --- a/src/pages/features.tsx +++ b/src/pages/features.tsx @@ -1,261 +1,107 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; import clsx from 'clsx'; -// @ts-ignore - -import styles from './features.module.css'; -// @ts-ignore import Layout from '@theme/Layout'; +import Heading from '@theme/Heading'; +import { featureGroups } from '../data/features'; +import type { FeatureGroup } from '../data/features'; +import { motion, useReducedMotion } from 'framer-motion'; +import styles from './features.module.css'; + +function PageHeader() { + const prefersReducedMotion = useReducedMotion(); -export default function FeaturesPage() { return ( - -
-
-
-
-

- Standardize and enhance every software deployment -

-

- PSAppDeployToolkit allows you to encapsulate a typical Windows Installer MSI or Setup executable to - provide it with enhanced capabilities. -

-
-
-
-
    -
  • -

    Validate prerequisites such as dependencies on minimum software versions

    -
  • -
  • -

    Ensure that in-use applications are closed and prevent reopening during the deployment

    -
  • -
  • -

    Check with the user if now is a good time to start an install and allow them to defer

    -
  • -
  • -

    Uninstall existing applications and perform clean up operations

    -
  • -
-
-
-
    -
  • -

    Capture any important settings that may be required for an upgrade or migration

    -
  • -
  • -

    Run the installation silently and capture logs in the event of an issue

    -
  • -
  • -

    Run post-installation configuration tasks to customize for your environment

    -
  • -
  • -

    - Prompt the user to restart their computer if required, immediately, on a timer and with a - deadline -

    -
  • -
-
-
-
-
-
- PSAppDeployToolkit -
-
-
+ + + Features + +

Everything you need to deploy applications with confidence.

+
+ ); +} -
-
-
- PSAppDeployToolkit -
-
-

- A robust and battle-tested deployment framework -

-

- PSAppDeployToolkit was built with large enterprise environments in mind, where stability is absolutely - crucial to ensure the success of mass deployments. -

-

- That stability is exactly why PSAppDeployToolkit is used by Fortune 500 companies and federal - governments, banks, globally recognized brands, white-label packaging factories, defence contractors and - military, in-house IT teams, consultants and managed service providers to deploy applications on - millions of Windows endpoints all over the world every day. -

-
-
-
+function FeatureGroupCard({ group, index }: { readonly group: FeatureGroup; readonly index: number }) { + const prefersReducedMotion = useReducedMotion(); -
-

- Capability and Feature Details -

-
-

Pre-Built Powershell Functions

-
-
-
-
-
    -
  • - Pre-built functions come with automated logging - so you can quickly find problems in your - scripts if they occur. -
  • -
  • - Provides the ability to execute any type of setup (Windows Installer or Executable-based) with - automated exit code handling, as well as MSI-based installers having their logs captured and - stored alongside PSAppDeployToolkit logs. -
  • -
  • - Mass remove MSI applications with a partial match (e.g. remove all versions of all MSI - applications which match *Office*) -
  • -
  • - Perform MCM actions such as Machine and User Policy Refresh, Inventory Update and Software - Update -
  • -
  • Supports installation of applications on Citrix / Remote Desktop Session Host Servers
  • -
  • Check whether a PowerPoint slide show is running in full screen presentation mode
  • -
-
-
-
-
-
-
-
    -
  • Update Group Policy
  • -
  • Copy / Delete Files
  • -
  • Get / Set / Remove Registry Keys and Values
  • -
  • Get / Set INI File Keys and Values
  • -
  • Check File versions
  • -
  • Pin or Unpin applications to the Start Menu or Task Bar
  • -
  • Create Start Menu Shortcuts
  • -
  • Register / Unregister DLL files
  • -
  • Refresh desktop icons / environment variables
  • -
  • Test network connectivity
  • -
  • Test power connectivity
  • -
-
-
-
-
-
+ const itemContainer = { + hidden: {}, + show: { transition: { staggerChildren: prefersReducedMotion ? 0 : 0.04 } }, + }; -
-

3rd-Party Integration

-
-
-
-
-
    -
  • - Handles MCM exit codes, including time sensitive dialogs supporting *MCM Fast Retry* - providing - more accurate Reporting (no more Failed due to timeout errors). -
  • -
  • - Ability to prevent reboot codes (3010) from being passed back to MCM, which would cause a reboot - prompt. -
  • -
  • - Supports the MCM application model by providing an install and uninstall deployment type for - every deployment script. -
  • -
-
-
-
-
-
-
-
    -
  • - Bundle multiple application installations to overcome the supported limit of 5 applications in - the MCM application dependency chain. -
  • -
  • - Compared to compiled deployment packages, e.g. WiseScript, PSAppDeployToolkit utilizes the - Microsoft Endpoint Configuration Management cache correctly and MCM Distribution Point bandwidth - more efficiently by using loose files. -
  • -
-
-
-
-
-
+ const itemVariant = { + hidden: { opacity: 0, x: -10 }, + show: { opacity: 1, x: 0, transition: { duration: prefersReducedMotion ? 0 : 0.3 } }, + }; -
-

User Experience

-
-
-
-
-
    -
  • - An interface to prompt the user to close specified applications that are open prior to starting - the application deployment. The user is prompted to save their documents and has the option to - close the programs themselves, have PSAppDeployToolkit close the programs, or optionally defer. - Optionally, a countdown can be displayed until the applications are automatically closed. -
  • -
  • - The ability to allow the user to defer an installation X number of times, X number of days or - until a deadline date is reached. -
  • -
  • - The ability to prevent the user from launching the applications that need to be closed while the - application installation is in progress. -
  • -
  • - An indeterminate progress dialog with customizable message text that can be updated throughout - the deployment. -
  • -
  • - A restart prompt with an option to restart later or restart now and a countdown to automatic - restart. -
  • -
-
-
-
-
-
-
-
    -
  • The ability to notify the user if disk space requirements are not met.
  • -
  • Custom dialog boxes with options to customize title, text, buttons & icon.
  • -
  • - Balloon tip notifications to indicate the beginning and end of an installation and the success - or failure of an installation. -
  • -
  • - Branding of the above UI components using a custom logo icon and banner for your own - Organization. -
  • -
  • - The ability to run in interactive, silent (no dialogs) or non-interactive mode (default for - running MCM task sequence or session 0). -
  • -
  • - The UI is localized into several languages and more can be easily added using the XML - configuration file. -
  • -
-
-
-
-
+ return ( + +
+ +
+ + {group.title} + +

{group.description}

+
+
+ + + {group.items.map((item) => ( + + + + {item.text} + {item.version && {item.version}} + + + ))} + +
+ ); +} + +export default function FeaturesPage() { + return ( + +
+
+ +
+ {featureGroups.map((group, i) => ( + + ))}
-
+
); } diff --git a/src/pages/index.module.css b/src/pages/index.module.css index 2aa5b3d..c497c45 100644 --- a/src/pages/index.module.css +++ b/src/pages/index.module.css @@ -1,88 +1,355 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - +/* ─── Hero ─── */ .heroBanner { - text-align: center; position: relative; - overflow: visible; - color: var(--palette-blue-darkest); - background-image: url('@site/static/images/background-image-light.jpg'); - background-size: cover; - padding: 4.5rem 0 3.5rem; + overflow: hidden; + padding: 6rem 0 4rem; } -html[data-theme='dark'] .heroBanner { - background-image: url('@site/static/images/background-image-dark.jpg'); - color: #f3f3f3; +.heroRow { + align-items: center; + row-gap: var(--psadt-space-2xl); } -.logo { - width: 350px; - pointer-events: none; +.heroTextCol { display: flex; - justify-content: center; + flex-direction: column; + align-items: flex-start; + gap: var(--psadt-space-md); +} + +.heroTitle { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-semibold); + font-size: clamp(2.25rem, 5vw, 3.5rem); + line-height: 1.25; + margin-bottom: 0; } -.subtitle { - margin: 0 auto 2rem; +.heroAccent { + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-extrabold); } -.startedButton { +.heroSubtitle { + font-size: var(--ifm-font-size-xl); + color: var(--ifm-color-content-secondary); + max-width: 52ch; + line-height: 1.6; + margin-bottom: 0; +} + +.heroCtas { + display: flex; + gap: var(--psadt-space-md); + flex-wrap: wrap; + padding-top: var(--psadt-space-sm); +} + +/* ─── Hero Visual / Screenshots ─── */ +.heroVisualCol { display: flex; - align-items: center; justify-content: center; } -.startedButton a { - font-weight: 500; - padding: 0.8rem 1.5rem; - border: 1px solid #f3f3f3; - border-radius: var(--ifm-global-radius); - color: #f3f3f3; +.screenshotContainer { + position: relative; + width: 100%; + max-width: 480px; + min-height: clamp(360px, 44vw, 520px); + perspective: 800px; +} + +.heroWatermark { + position: absolute; + inset: -15% -10%; + width: 120%; + height: 120%; + object-fit: contain; + opacity: 0.045; + pointer-events: none; + z-index: 0; +} + +.screenshot { + position: absolute; + width: 100%; + object-fit: cover; + will-change: transform, opacity, filter; +} + +.screenshotLight { + top: 0%; + left: 0%; + z-index: 1; +} + +.screenshotDark { + top: 15%; + left: 9%; + z-index: 2; +} + +/* ─── What Is PSADT ─── */ +.whatIsSection { + padding-block: var(--psadt-space-3xl); +} + +.whatIsRow { + align-items: flex-start; + row-gap: var(--psadt-space-2xl); +} + +.whatIsText { + padding-right: var(--psadt-space-2xl); +} + +.sectionHeading { + font-family: 'Poppins', var(--ifm-font-family-base); + font-weight: var(--ifm-font-weight-bold); + font-size: var(--ifm-h2-font-size); + margin-bottom: var(--psadt-space-md); +} + +.sectionDescription { + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-content-secondary); + line-height: 1.7; + max-width: 65ch; +} + +.sectionDescriptionCenter { + margin-inline: auto; + text-align: center; + margin-bottom: var(--psadt-space-2xl); +} + +.valuePropGrid { + display: flex; + flex-direction: column; + gap: var(--psadt-space-lg); +} + +.valuePropCard { + display: flex; + align-items: flex-start; + gap: var(--psadt-space-md); + padding: var(--psadt-space-lg); + border-radius: var(--psadt-card-radius); + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + transition: + box-shadow var(--psadt-transition-normal), + border-color var(--psadt-transition-normal); +} + +.valuePropCard:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--psadt-card-border-color-hover); } -html[data-theme='dark'] .startedButton a { - color: #fff; +.valuePropIcon { + width: 40px; + height: 40px; + flex-shrink: 0; + object-fit: contain; } -.introText { - text-align: left; - font-size: 1rem; +.valuePropTitle { display: block; - margin: 1rem auto 2.5rem; + font-weight: var(--ifm-font-weight-semibold); + margin-bottom: var(--psadt-space-xs); +} + +.valuePropDescription { + margin: 0; + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); + line-height: 1.5; +} + +/* ─── Highlights Strip ─── */ +.highlightsSection { + padding-block: var(--psadt-space-2xl); +} + +.highlightsGrid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: var(--psadt-space-lg); + text-align: center; } +.highlightItem { + display: flex; + flex-direction: column; + align-items: center; + gap: var(--psadt-space-xs); + padding: var(--psadt-space-lg) var(--psadt-space-md); +} + +.highlightStat { + font-family: 'Poppins', var(--ifm-font-family-base); + font-size: var(--ifm-font-size-4xl); + font-weight: var(--ifm-font-weight-extrabold); + color: var(--ifm-color-primary); + line-height: 1.1; +} + +.highlightLabel { + font-weight: var(--ifm-font-weight-semibold); + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-content); +} + +.highlightDetail { + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); +} + +/* ─── Feature Preview ─── */ +.featureSection { + padding-block: var(--psadt-space-3xl); +} + +.featureGrid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: var(--psadt-space-lg); +} + +.featureCard { + padding: var(--psadt-space-xl); + border-radius: var(--psadt-card-radius); + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + transition: + box-shadow var(--psadt-transition-normal), + border-color var(--psadt-transition-normal), + transform var(--psadt-transition-normal); +} + +.featureCard:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--psadt-card-border-color-hover); + transform: translateY(-2px); +} + +.featureIcon { + width: 48px; + height: 48px; + object-fit: contain; + margin-bottom: var(--psadt-space-md); +} + +.featureCardTitle { + font-family: 'Poppins', var(--ifm-font-family-base); + font-size: var(--ifm-font-size-lg) !important; + font-weight: var(--ifm-font-weight-semibold); + margin-bottom: var(--psadt-space-sm); +} + +.featureCardDescription { + margin: 0; + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); + line-height: 1.6; +} + +.featureCtaRow { + display: flex; + justify-content: center; + margin-top: var(--psadt-space-2xl); +} + +/* ─── Newsletter ─── */ +.newsletterSection { + padding-block: var(--psadt-space-2xl); +} + +/* ─── Responsive: Tablet ─── */ @media screen and (max-width: 996px) { - .heroBanner .container { - padding: 2rem; + .heroBanner { + padding: 3rem 0 2rem; } - .logo { - max-width: 200px; + .heroRow { + flex-direction: column-reverse; } - .introText { + .heroTextCol { + align-items: center; text-align: center; - font-size: 0.9rem; - margin: 2rem 5vw 1rem; } -} -.logoThinText { - font-size: 1.5rem; - color: #fff; - text-align: left; - font-weight: 300; - letter-spacing: -0.8px; -} + .heroSubtitle { + text-align: center; + } + + .heroCtas { + justify-content: center; + } + + .screenshotContainer { + max-width: 360px; + margin-inline: auto; + min-height: clamp(320px, 58vw, 460px); + } + + .whatIsText { + padding-right: 0; + } -.logoThickText { - color: var(--palette-blue); - font-weight: 800 !important; + .featureGrid { + grid-template-columns: repeat(2, 1fr); + } + + .highlightsGrid { + grid-template-columns: repeat(2, 1fr); + } } -.mainContent { - margin-left: 0; +/* ─── Responsive: Mobile ─── */ +@media screen and (max-width: 768px) { + .heroBanner { + padding: 2rem 0 1.5rem; + } + + .heroTitle { + font-size: 2rem; + } + + .screenshotContainer { + max-width: 300px; + } + + .screenshot { + position: relative; + width: 100%; + top: auto; + left: auto; + } + + .screenshotContainer { + display: flex; + flex-direction: column; + gap: var(--psadt-space-md); + aspect-ratio: auto; + min-height: 0; + } + + .heroWatermark { + display: none; + } + + .featureGrid { + grid-template-columns: 1fr; + } + + .highlightsGrid { + grid-template-columns: repeat(2, 1fr); + } + + .whatIsRow { + flex-direction: column; + } } diff --git a/src/pages/index.tsx b/src/pages/index.tsx index f125aa6..83c843c 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,58 +1,122 @@ -// eslint-disable-next-line @typescript-eslint/no-unused-vars -import React from 'react'; import clsx from 'clsx'; -// @ts-ignore import Layout from '@theme/Layout'; -// @ts-ignore +import Heading from '@theme/Heading'; import Link from '@docusaurus/Link'; -// @ts-ignore -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -// @ts-ignore +import Newsletter from '../components/Newsletter'; +import { featureGroups } from '../data/features'; +import { motion, useReducedMotion } from 'framer-motion'; import styles from './index.module.css'; -import HomepageFeatures from '../components/HomepageFeatures'; -// @ts-ignore -import Heading from '@theme/Heading'; -// @ts-ignore -import ThemedImage from '@theme/ThemedImage'; +const GITHUB_URL = 'https://github.com/psappdeploytoolkit/psappdeploytoolkit'; + +const VALUE_PROPS = [ + { + icon: '/images/features/worker_package.svg', + title: 'Battle-tested Workflow', + description: 'Standardized install, uninstall, and repair deployment types.', + }, + { + icon: '/images/features/application_window.png', + title: 'Customizable UI', + description: 'A consistent, branded deployment experience for end users.', + }, + { + icon: '/images/features/code.svg', + title: '120+ Functions', + description: 'An extensive library for common deployment tasks.', + }, +] as const; + +const HIGHLIGHTS = [ + { stat: '10+', label: 'Years', detail: 'Battle-tested since 2013' }, + { stat: 'Fortune 500', label: 'Trusted', detail: 'Enterprise-grade' }, + { stat: '120+', label: 'Functions', detail: 'Comprehensive toolkit' }, + { stat: '25', label: 'Languages', detail: 'Global localization' }, +] as const; -// @ts-ignore -import useBaseUrl from '@docusaurus/useBaseUrl'; -const heroImageDark = `/images/psadt-logo.svg`; -const heroImageLight = `/images/psadt-logo.svg`; +function HeroBanner() { + const prefersReducedMotion = useReducedMotion(); + const d = prefersReducedMotion ? 0 : undefined; + + const container = { + hidden: {}, + show: { transition: { staggerChildren: prefersReducedMotion ? 0 : 0.1 } }, + }; + + const fadeUp = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0, transition: { duration: d ?? 0.5 } }, + }; -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); return ( -
+
-
-
-

{siteConfig.tagline}

-

- PSAppDeployToolkit uses a standardized workflow for Windows software deployment, a consistent unified User Experience for every software install, and a library of PowerShell functions to simplify common deployment tasks. -

-

- Combined with rich automated logging of every action, PSADT produces consistently high deployment success rates, and is the de facto standard framework used by organizations for deploying Windows software at scale. -

+
+ + + + Enterprise App Deployment. +
+ Simplified. +
+
- {/*
- - Start building - -
*/} -
-
- + + A PowerShell-based framework to simplify and standardize deploying software to Windows, at scale. + + + + + Get Started + + + View on GitHub + + + + +
+
+
@@ -60,12 +124,194 @@ function HomepageHeader() { ); } +function WhatIsSection() { + const prefersReducedMotion = useReducedMotion(); + + const sectionVariants = { + hidden: { opacity: 0, y: 30 }, + show: { opacity: 1, y: 0, transition: { duration: prefersReducedMotion ? 0 : 0.6 } }, + }; + + const cardContainer = { + hidden: {}, + show: { transition: { staggerChildren: prefersReducedMotion ? 0 : 0.12 } }, + }; + + const cardItem = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0, transition: { duration: prefersReducedMotion ? 0 : 0.4 } }, + }; + + return ( + +
+
+
+ + What is PSADT? + +

+ PSAppDeployToolkit is a free, open-source PowerShell framework that gives IT professionals a + battle-tested, enterprise-ready system for deploying applications to Windows endpoints. It handles every + stage of application lifecycle — from discovery and installation through removal — with a rich UI, deep + platform integration, and comprehensive logging. +

+
+ + +
+ {VALUE_PROPS.map((prop) => ( + + +
+ {prop.title} +

{prop.description}

+
+
+ ))} +
+
+
+
+
+ ); +} + +function HighlightsStrip() { + const prefersReducedMotion = useReducedMotion(); + + const container = { + hidden: {}, + show: { transition: { staggerChildren: prefersReducedMotion ? 0 : 0.1 } }, + }; + + const item = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0, transition: { duration: prefersReducedMotion ? 0 : 0.4 } }, + }; + + return ( + +
+
+ {HIGHLIGHTS.map((h) => ( + + {h.stat} + {h.label} + {h.detail} + + ))} +
+
+
+ ); +} + +function FeaturePreview() { + const prefersReducedMotion = useReducedMotion(); + const previewFeatures = featureGroups.slice(0, 6); + + const container = { + hidden: {}, + show: { transition: { staggerChildren: prefersReducedMotion ? 0 : 0.08 } }, + }; + + const item = { + hidden: { opacity: 0, y: 20 }, + show: { opacity: 1, y: 0, transition: { duration: prefersReducedMotion ? 0 : 0.4 } }, + }; + + return ( + +
+ + Built for Enterprise + +

+ Everything you need to deploy, manage, and monitor applications at scale. +

+ + + {previewFeatures.map((feature) => ( + + + + {feature.title} + +

{feature.description}

+
+ ))} +
+ +
+ + Explore All Features + +
+
+
+ ); +} + +function NewsletterSection() { + const prefersReducedMotion = useReducedMotion(); + + return ( + +
+
+ +
+
+
+ ); +} + export default function Home() { return ( - -
- + +
+ + + +
); diff --git a/src/pages/privacy-policy.mdx b/src/pages/privacy-policy.mdx index 206eb95..e41fd47 100644 --- a/src/pages/privacy-policy.mdx +++ b/src/pages/privacy-policy.mdx @@ -1,11 +1,14 @@ --- -sidebar_label: 'Privacy Policy' +title: 'Privacy Policy' +description: Get up and running with PSAppDeployToolkit in minutes. +hide_title: false +id: privacy-policy slug: /privacy-policy -title: Privacy Policy -description: Learn about our privacy policy. +tags: + - Privacy Policy --- -# Privacy Policy +## Privacy Policy Last updated: October 24, 2023 @@ -13,21 +16,21 @@ This Privacy Policy describes Our policies and procedures on the collection, use We use Your Personal data to provide and improve the Service. By using the Service, You agree to the collection and use of information in accordance with this Privacy Policy. -## Interpretation and Definitions +### Interpretation and Definitions -### Interpretation +#### Interpretation The words of which the initial letter is capitalized have meanings defined under the following conditions. The following definitions shall have the same meaning regardless of whether they appear in singular or in plural. -### Definitions +#### Definitions For the purposes of this Privacy Policy: - **Account** means a unique account created for You to access our Service or parts of our Service. - **Affiliate** means an entity that controls, is controlled by or is under common control with a party, where "control" means ownership of 50% or more of the shares, equity interest or other securities entitled to vote for election of directors or other managing authority. -- **Company** (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to PSAppDeployToolkit. +- **Company** (referred to as either "the Company", "We", "Us" or "Our" in this Agreement) refers to Patch My PC. - **Cookies** are small files that are placed on Your computer, mobile device or any other device by a website, containing the details of Your browsing history on that website among its many uses. -- **Country** refers to: Ontario, Canada +- **Country** refers to: Denver, Colorado, United States - **Device** means any device that can access the Service such as a computer, a cellphone or a digital tablet. - **Personal Data** is any information that relates to an identified or identifiable individual. - **Service** refers to the Website. @@ -42,18 +45,18 @@ For the purposes of this Privacy Policy: - **You** means the individual accessing or using the Service, or the company, or other legal entity on behalf of which such individual is accessing or using the Service, as applicable. -# Collecting and Using Your Personal Data +## Collecting and Using Your Personal Data -## Types of Data Collected +### Types of Data Collected -### Personal Data +#### Personal Data While using Our Service, We may ask You to provide Us with certain personally identifiable information that can be used to contact or identify You. Personally identifiable information may include, but is not limited to: - Email address - Usage Data -### Usage Data +#### Usage Data Usage Data is collected automatically when using the Service. @@ -63,7 +66,7 @@ When You access the Service by or through a mobile device, We may collect certai We may also collect information that Your browser sends whenever You visit our Service or when You access the Service by or through a mobile device. -### Information from Third-Party Social Media Services +#### Information from Third-Party Social Media Services The Company allows You to create an account and log in to use the Service through the following Third-party Social Media Services: @@ -77,7 +80,7 @@ If You decide to register through or otherwise grant us access to a Third-Party You may also have the option of sharing additional information with the Company through Your Third-Party Social Media Service's account. If You choose to provide such information and Personal Data, during registration or otherwise, You are giving the Company permission to use, share, and store it in a manner consistent with this Privacy Policy. -### Tracking Technologies and Cookies +#### Tracking Technologies and Cookies We use Cookies and similar tracking technologies to track the activity on Our Service and store certain information. Tracking technologies used are beacons, tags, and scripts to collect and track information and to improve and analyze Our Service. The technologies We use may include: @@ -114,7 +117,7 @@ Purpose: These Cookies allow us to remember choices You make when You use the We For more information about the cookies we use and your choices regarding cookies, please visit our Cookies Policy or the Cookies section of our Privacy Policy. -## Use of Your Personal Data +### Use of Your Personal Data The Company may use Personal Data for the following purposes: @@ -136,13 +139,13 @@ We may share Your personal information in the following situations: - **With other users:** when You share personal information or otherwise interact in the public areas with other users, such information may be viewed by all users and may be publicly distributed outside. If You interact with other users or register through a Third-Party Social Media Service, Your contacts on the Third-Party Social Media Service may see Your name, profile, pictures and description of Your activity. Similarly, other users will be able to view descriptions of Your activity, communicate with You and view Your profile. - **With Your consent**: We may disclose Your personal information for any other purpose with Your consent. -## Retention of Your Personal Data +### Retention of Your Personal Data The Company will retain Your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use Your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies. The Company will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of Our Service, or We are legally obligated to retain this data for longer time periods. -## Transfer of Your Personal Data +### Transfer of Your Personal Data Your information, including Personal Data, is processed at the Company's operating offices and in any other places where the parties involved in the processing are located. It means that this information may be transferred to - and maintained on - computers located outside of Your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from Your jurisdiction. @@ -150,7 +153,7 @@ Your consent to this Privacy Policy followed by Your submission of such informat The Company will take all steps reasonably necessary to ensure that Your data is treated securely and in accordance with this Privacy Policy and no transfer of Your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of Your data and other personal information. -## Delete Your Personal Data +### Delete Your Personal Data You have the right to delete or request that We assist in deleting the Personal Data that We have collected about You. @@ -160,17 +163,17 @@ You may update, amend, or delete Your information at any time by signing in to Y Please note, however, that We may need to retain certain information when we have a legal obligation or lawful basis to do so. -## Disclosure of Your Personal Data +### Disclosure of Your Personal Data -### Business Transactions +#### Business Transactions If the Company is involved in a merger, acquisition or asset sale, Your Personal Data may be transferred. We will provide notice before Your Personal Data is transferred and becomes subject to a different Privacy Policy. -### Law enforcement +#### Law enforcement Under certain circumstances, the Company may be required to disclose Your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency). -### Other legal requirements +#### Other legal requirements The Company may disclose Your Personal Data in the good faith belief that such action is necessary to: @@ -180,23 +183,23 @@ The Company may disclose Your Personal Data in the good faith belief that such a - Protect the personal safety of Users of the Service or the public - Protect against legal liability -## Security of Your Personal Data +### Security of Your Personal Data The security of Your Personal Data is important to Us, but remember that no method of transmission over the Internet, or method of electronic storage is 100% secure. While We strive to use commercially acceptable means to protect Your Personal Data, We cannot guarantee its absolute security. -## Children's Privacy +### Children's Privacy Our Service does not address anyone under the age of 13. We do not knowingly collect personally identifiable information from anyone under the age of 13. If You are a parent or guardian and You are aware that Your child has provided Us with Personal Data, please contact Us. If We become aware that We have collected Personal Data from anyone under the age of 13 without verification of parental consent, We take steps to remove that information from Our servers. If We need to rely on consent as a legal basis for processing Your information and Your country requires consent from a parent, We may require Your parent's consent before We collect and use that information. -## Links to Other Websites +### Links to Other Websites Our Service may contain links to other websites that are not operated by Us. If You click on a third party link, You will be directed to that third party's site. We strongly advise You to review the Privacy Policy of every site You visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services. -## Changes to this Privacy Policy +### Changes to this Privacy Policy We may update Our Privacy Policy from time to time. We will notify You of any changes by posting the new Privacy Policy on this page. @@ -204,8 +207,6 @@ We will let You know via email and/or a prominent notice on Our Service, prior t You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page. -## Contact Us +### Contact Us -If you have any questions about this Privacy Policy, You can contact us: - -- By email: privacy@psappdeploytoolkit.com +If you have any questions about this Privacy Policy, You can contact us by email at [privacy@psappdeploytoolkit.com](mailto:privacy@psappdeploytoolkit.com) diff --git a/src/pages/training.module.css b/src/pages/training.module.css new file mode 100644 index 0000000..41f6547 --- /dev/null +++ b/src/pages/training.module.css @@ -0,0 +1,383 @@ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(12px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +.trainingPage { + animation: fadeInUp 0.5s var(--psadt-ease-standard) both; +} + +/* ─── Hero ─── */ + +.hero { + padding-bottom: var(--psadt-space-xl); +} + +.heroContent { + display: flex; + flex-direction: column; + align-items: flex-start; + justify-content: center; +} + +.heroTitle { + font-size: var(--ifm-h1-font-size); + line-height: 1.1; + margin-bottom: var(--psadt-space-lg); + max-width: 22ch; +} + +.accent { + color: var(--ifm-color-primary); + font-weight: var(--ifm-font-weight-extrabold); +} + +.heroTagline { + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-content-secondary); + line-height: 1.6; + margin-bottom: var(--psadt-space-md); + max-width: 500px;} + +.heroCtas { + display: flex; + gap: var(--psadt-space-md); + margin-bottom: var(--psadt-space-md); + flex-wrap: wrap; + justify-content: flex-start; +} + +.heroBadge { + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-content-secondary); + font-weight: var(--ifm-font-weight-medium); +} + +.heroImageCol { + display: flex; + align-items: center; + justify-content: center; +} + +.heroImage { + max-height: 400px; + width: 100%; + object-fit: contain; +} + +/* ─── Section Titles ─── */ + +.sectionTitle { + text-align: center; + font-size: var(--ifm-font-size-4xl); + margin-bottom: var(--psadt-space-xl); + border-bottom: none; +} + +/* ─── Highlights ─── */ + +.highlightsSection { + padding-top: var(--psadt-space-xl); + padding-bottom: 0; +} + +.highlightsGrid { + display: grid; + grid-template-columns: repeat(5, minmax(0, 1fr)); + gap: var(--psadt-space-md); + align-items: stretch; +} + +.highlightItem { + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + border-radius: var(--psadt-card-radius); + padding: var(--psadt-space-md) var(--psadt-space-lg); + box-shadow: var(--psadt-card-shadow); + overflow: hidden; + display: flex; + flex-direction: column; + gap: var(--psadt-space-xs); + height: 100%; + text-align: center; + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); +} + +.highlightItem:hover { + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-shadow-hover); +} + +.highlightItem strong { + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-primary); +} + +.highlightItem span { + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); + line-height: 1.5; +} + +/* ─── Course Content ─── */ + +.courseSection { + padding-top: var(--psadt-space-3xl); + padding-bottom: 0; +} + +.courseIntro { + text-align: left; + margin: 0 auto var(--psadt-space-xl); + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-content-secondary); + line-height: 1.7; +} + +.moduleCard { + background: var(--psadt-card-background); + border: 1px solid var(--psadt-card-border-color); + border-radius: var(--psadt-card-radius); + padding: var(--psadt-space-xl) var(--psadt-space-lg); + margin-bottom: var(--psadt-space-lg); + box-shadow: var(--psadt-card-shadow); + overflow: hidden; + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); +} + +.moduleCard:hover { + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-shadow-hover); +} + +.moduleTitle { + font-size: var(--ifm-font-size-lg); + font-weight: var(--ifm-font-weight-bold); + margin: 0 0 var(--psadt-space-md); + border-bottom: none; +} + +.moduleTopics { + margin: 0 0 var(--psadt-space-md); + padding-left: var(--psadt-space-lg); + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); + line-height: 1.8; +} + +.moduleLab { + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content); + margin: 0; + padding-top: var(--psadt-space-sm); + border-top: 1px solid var(--ifm-color-emphasis-200); +} + +/* ─── Prerequisites ─── */ + +.prereqSection { + padding-top: 0; + padding-bottom: var(--psadt-space-3xl); +} + +.prereqList { + max-width: 640px; + margin: 0 auto; + padding-left: var(--psadt-space-lg); + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-content-secondary); + line-height: 2; +} + +/* ─── Instructors ─── */ + +.instructorsSection { + padding-top: var(--psadt-space-2xl); + padding-bottom: 0; + text-align: center; +} + +.instructorsTitle { + text-align: center; + font-size: var(--ifm-font-size-4xl); + margin-bottom: var(--psadt-space-2xl); + border-bottom: none; +} + +.instructorCard { + border-radius: var(--psadt-card-radius); + border: 1px solid var(--psadt-card-border-color); + background: var(--psadt-card-background); + text-align: left; + display: flex; + flex-direction: column; + align-items: flex-start; + overflow: hidden; + box-shadow: var(--psadt-card-shadow); + flex-shrink: 0; + padding: var(--psadt-space-lg) var(--psadt-space-lg); + gap: var(--psadt-space-sm); + transition: box-shadow var(--psadt-transition-normal), border-color var(--psadt-transition-normal); +} + +.instructorCard:hover { + box-shadow: var(--psadt-card-shadow-hover); + border-color: var(--ifm-color-primary); +} + +.instructorImage { + width: 96px; + height: 96px; + border-radius: 50%; + margin-bottom: var(--psadt-space-sm); + background: var(--psadt-card-image-background); + border: 1px solid var(--psadt-card-border-color); + box-shadow: var(--psadt-card-image-shadow); + object-fit: cover; +} + +.instructorName { + font-size: var(--ifm-font-size-xl); + font-weight: var(--ifm-font-weight-bold); + color: var(--ifm-color-emphasis-900); + margin: 0; +} + +.instructorRole { + font-weight: var(--ifm-font-weight-semibold); + color: var(--ifm-color-primary); + font-size: var(--ifm-font-size-base); + margin: 0 0 var(--psadt-space-sm); +} + +.instructorBio { + font-size: var(--ifm-font-size-base); + color: var(--ifm-color-content); + margin: 0; +} + +.instructorLinks a { + color: var(--ifm-color-content-secondary); + margin: 1 1rem 0 0; + transition: color var(--psadt-transition-normal); +} + +.instructorLinks a:hover { + color: var(--ifm-color-primary); +} + + +/* ─── Final CTA ─── */ + +.ctaSection { + padding-top: var(--psadt-space-2xl); + padding-bottom: var(--psadt-space-3xl); + text-align: center; + color: var(--ifm-color-primary); +} + +.ctaTitle { + font-size: var(--ifm-h2-font-size); + margin-bottom: var(--psadt-space-lg); + border-bottom: none; +} + +.ctaText { + font-size: var(--ifm-font-size-lg); + color: var(--ifm-color-content-secondary); + max-width: 600px; + margin: 0 auto var(--psadt-space-xl); +} + +/* ─── Responsive: Tablet ─── */ + +@media screen and (max-width: 996px) { + .heroImageCol { + display: none; + } + + .heroTitle { + font-size: var(--ifm-font-size-4xl); + } + + .heroTagline { + max-width: 100%; + } + + .heroCtas { + justify-content: flex-start; + } + + .hero { + text-align: left; + } + + .heroContent { + align-items: flex-start; + } + + .instructorCard { + max-width: 480px; + margin-left: auto; + margin-right: auto; + } + + .highlightsGrid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + +} + +/* ─── Responsive: Mobile ─── */ + +@media screen and (max-width: 768px) { + .heroTitle { + font-size: var(--ifm-font-size-3xl); + } + + .sectionTitle { + font-size: var(--ifm-font-size-3xl); + } + + .ctaTitle { + font-size: var(--ifm-font-size-3xl); + } + + .instructorsTitle { + font-size: var(--ifm-font-size-3xl); + } + + .instructorCard { + padding: var(--psadt-space-xl) var(--psadt-space-md); + margin: var(--psadt-space-sm) auto; + } + + .instructorImage { + width: 100px; + height: 100px; + } + + .instructorName { + font-size: 1.2rem; + } + + .instructorRole { + font-size: var(--ifm-font-size-sm); + } + + .highlightItem { + height: auto; + } + + .highlightsGrid { + grid-template-columns: 1fr; + } +} + + diff --git a/src/pages/training.tsx b/src/pages/training.tsx new file mode 100644 index 0000000..b22205c --- /dev/null +++ b/src/pages/training.tsx @@ -0,0 +1,171 @@ +import { FaLinkedin } from 'react-icons/fa'; +import clsx from 'clsx'; +import Layout from '@theme/Layout'; +import Heading from '@theme/Heading'; +import Link from '@docusaurus/Link'; +import styles from './training.module.css'; +import { instructors } from '../data/instructors'; + +const COURSE_URL = 'https://academy.viamonstra.com/courses/psadt-v4-essentials/'; + +const modules = [ + { + title: 'Module 1: Foundations of PSADT v4', + topics: [ + 'Introduction to PSAppDeployToolkit v4', + 'Features, benefits, and real-world use cases', + 'Understanding Core Deployment Concepts', + 'Installing and Configuring Your Environment', + 'Understanding the File & Folder Structure', + 'Creating Your First Deployment Package', + ], + lab: 'Setting up PSADT and Creating a First Package', + }, + { + title: 'Module 2: Building and Deploying Packages', + topics: [ + 'Anatomy of Deploy-Application.ps1', + 'Adding installers, scripts, and supporting files', + 'Leveraging & Customizing the User Interface', + 'Understanding the deployment lifecycle', + 'Deploying via Microsoft ConfigMgr (SCCM) and Intune', + ], + lab: 'Customizing the User Interface', + }, + { + title: 'Module 3: Working with Functions and Advanced Logic', + topics: [ + 'Working with Core & Advanced Functions', + 'Logging \u2013 Making the Most of it with PSADT', + 'Advanced Deployment Techniques', + ], + lab: 'Using Advanced Deployment Techniques and Logging', + }, + { + title: 'Module 4: Upgrading from v3 to v4', + topics: [ + 'Key differences between v3 and v4.0/v4.1+', + 'Function renames and replacements', + 'New error handling model with standardized switches', + 'Migrating existing deployment scripts to v4', + ], + lab: 'Converting a real v3 deployment to v4.1', + }, + { + title: 'Module 5: Security, Real-World Deployments and Troubleshooting', + topics: [ + 'Security Best Practices', + 'Deployment Tips & Tricks from the Field', + 'Enterprise-scale rollout lessons learned', + 'Maintaining and Updating Your PSADT Packages', + 'Updating packages for new app versions', + 'Community Resources & Future Roadmap', + ], + lab: 'A full-featured deployment with removal of previous versions, prerequisite install, full user experience, and push to Intune', + }, +]; + +const highlights = [ + { label: 'Free', description: 'No cost to enroll \u2013 completely free for the community.' }, + { label: 'Recorded Live', description: 'Instructor-led sessions with extensive Q&A from real users.' }, + { label: 'Hands-On Labs', description: 'Practical lab guides you can follow on any Windows device or VM.' }, + { label: 'On-Demand Access', description: 'Take home sample files, scripts, and full session recordings.' }, + { label: 'PSADT Certification', description: 'Earn an official credential to validate your expertise.' }, +]; + +const TrainingPage = () => ( + +
+ {/* Hero */} +
+
+
+ + PSADT v4 Essentials Training Course + +

+ Free online training built in close collaboration with the PSAppDeployToolkit creators. Master PSADT v4.1 + with hands-on labs, real-world workflows, and official certification. +

+
+ + Enroll Now + +
+
+
+
+ Classroom illustration +
+
+
+
+ + {/* Highlights */} +
+
+ {highlights.map((item) => ( +
+ {item.label} + {item.description} +
+ ))} +
+
+ + {/* Instructors */} +
+ + Meet Your Instructors + +
+ {instructors.map((instructor) => ( +
+
+ {`${instructor.name}, +

{instructor.name}

+

{instructor.role}

+

{instructor.bio}

+

+ +

+
+
+ ))} +
+
+ + {/* Final CTA */} +
+
+ + Ready to Master PSAppDeployToolkit? + +

+ Join the PSADT v4 Essentials course and gain the skills to deploy applications with confidence across your + enterprise. +

+ + Enroll Now — It's Free + +
+
+
+
+); + +export default TrainingPage; diff --git a/src/theme/DocCard/index.js b/src/theme/DocCard/index.js new file mode 100644 index 0000000..5a54104 --- /dev/null +++ b/src/theme/DocCard/index.js @@ -0,0 +1,106 @@ +/** + * Swizzled DocCard — uses project card design tokens to match about page style. + * + * Based on @docusaurus/theme-classic DocCard. + */ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import { + useDocById, + findFirstSidebarItemLink, +} from '@docusaurus/plugin-content-docs/client'; +import {usePluralForm} from '@docusaurus/theme-common'; +import isInternalUrl from '@docusaurus/isInternalUrl'; +import {translate} from '@docusaurus/Translate'; +import Heading from '@theme/Heading'; +import styles from './styles.module.css'; + +function useCategoryItemsPlural() { + const {selectMessage} = usePluralForm(); + return (count) => + selectMessage( + count, + translate( + { + message: '1 item|{count} items', + id: 'theme.docs.DocCard.categoryDescription.plurals', + description: + 'The default description for a category card in the generated index about how many items this category includes', + }, + {count}, + ), + ); +} + +function CardContainer({className, href, children}) { + return ( + + {children} + + ); +} + +function CardLayout({className, href, icon, title, description}) { + return ( + + + {icon} {title} + + {description && ( +

+ {description} +

+ )} +
+ ); +} + +function CardCategory({item}) { + const href = findFirstSidebarItemLink(item); + const categoryItemsPlural = useCategoryItemsPlural(); + if (!href) { + return null; + } + return ( + + ); +} + +function CardLink({item}) { + const icon = isInternalUrl(item.href) ? '📄️' : '🔗'; + const doc = useDocById(item.docId ?? undefined); + return ( + + ); +} + +export default function DocCard({item}) { + switch (item.type) { + case 'link': + return ; + case 'category': + return ; + default: + throw new Error(`unknown item type ${JSON.stringify(item)}`); + } +} diff --git a/src/theme/DocCard/styles.module.css b/src/theme/DocCard/styles.module.css new file mode 100644 index 0000000..fab55b1 --- /dev/null +++ b/src/theme/DocCard/styles.module.css @@ -0,0 +1,50 @@ +/** + * Swizzled DocCard styles — matches the about page card pattern + * using project design tokens from custom.css. + */ + +.cardContainer { + --ifm-link-hover-decoration: none; + + display: block; + padding: var(--psadt-space-lg); + border-radius: var(--psadt-card-radius); + border: 1px solid var(--psadt-card-border-color); + background: var(--psadt-card-background); + box-shadow: var(--psadt-card-shadow); + overflow: hidden; + color: var(--ifm-color-content); + transition: border-color var(--psadt-transition-normal), box-shadow var(--psadt-transition-normal); +} + +.cardContainer:hover { + border-color: var(--ifm-color-primary); + box-shadow: var(--psadt-card-shadow-hover); + color: var(--ifm-color-content); + text-decoration: none; +} + +.cardContainer *:last-child { + margin-bottom: 0; +} + +.cardTitle { + font-size: var(--ifm-font-size-lg); + font-weight: var(--ifm-font-weight-bold); + color: var(--ifm-color-emphasis-900); + border-bottom: none; + margin-top: 0; + margin-bottom: var(--psadt-space-xs); + padding-bottom: 0; +} + +.cardContainer:hover .cardTitle { + color: var(--ifm-color-primary); +} + +.cardDescription { + font-size: var(--ifm-font-size-sm); + color: var(--ifm-color-content-secondary); +} + + diff --git a/src/theme/DocCategoryGeneratedIndexPage/index.js b/src/theme/DocCategoryGeneratedIndexPage/index.js new file mode 100644 index 0000000..4d37a9b --- /dev/null +++ b/src/theme/DocCategoryGeneratedIndexPage/index.js @@ -0,0 +1,67 @@ +/** + * Swizzled DocCategoryGeneratedIndexPage — replaces DocVersionBadge with + * DocsVersionSelector in a breadcrumb row, matching DocItem/Layout. + * + * Based on @docusaurus/theme-classic DocCategoryGeneratedIndexPage. + */ +import React from 'react'; +import {PageMetadata} from '@docusaurus/theme-common'; +import {useCurrentSidebarCategory} from '@docusaurus/plugin-content-docs/client'; +import useBaseUrl from '@docusaurus/useBaseUrl'; +import DocCardList from '@theme/DocCardList'; +import DocPaginator from '@theme/DocPaginator'; +import DocVersionBanner from '@theme/DocVersionBanner'; +import DocBreadcrumbs from '@theme/DocBreadcrumbs'; +import Heading from '@theme/Heading'; +import DocsVersionSelector from '@site/src/components/DocsVersionSelector'; +import styles from './styles.module.css'; + +function DocCategoryGeneratedIndexPageMetadata({categoryGeneratedIndex}) { + return ( + + ); +} + +function DocCategoryGeneratedIndexPageContent({categoryGeneratedIndex}) { + const category = useCurrentSidebarCategory(); + return ( +
+
+ + +
+ +
+ + {categoryGeneratedIndex.title} + + {categoryGeneratedIndex.description && ( +

{categoryGeneratedIndex.description}

+ )} +
+
+ +
+
+ +
+
+ ); +} + +export default function DocCategoryGeneratedIndexPage(props) { + return ( + <> + + + + ); +} diff --git a/src/theme/DocCategoryGeneratedIndexPage/styles.module.css b/src/theme/DocCategoryGeneratedIndexPage/styles.module.css new file mode 100644 index 0000000..f90e721 --- /dev/null +++ b/src/theme/DocCategoryGeneratedIndexPage/styles.module.css @@ -0,0 +1,30 @@ +/** + * Swizzled DocCategoryGeneratedIndexPage styles. + * Original styles preserved + breadcrumbRow for version selector alignment. + */ + +@media (min-width: 997px) { + .generatedIndexPage { + max-width: 75% !important; + } +} + +/* Duplicated from .markdown h1 */ +.title { + --ifm-h1-font-size: 3rem; + margin-bottom: calc(1.25 * var(--ifm-leading)); +} + +.breadcrumbRow { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.8rem; + gap: var(--psadt-space-md); + flex-wrap: wrap; +} + +.breadcrumbRow :global(.theme-doc-breadcrumbs) { + margin-bottom: 0; +} + diff --git a/src/theme/DocItem/Layout/index.js b/src/theme/DocItem/Layout/index.js new file mode 100644 index 0000000..b13bfbd --- /dev/null +++ b/src/theme/DocItem/Layout/index.js @@ -0,0 +1,87 @@ +/** + * Swizzled DocItem/Layout — wraps breadcrumbs + version selector in a flex row + * and removes DocVersionBadge (replaced by DocsVersionSelector). + * + * Based on @docusaurus/theme-classic DocItem/Layout. + */ +import React from 'react'; +import clsx from 'clsx'; +import {useWindowSize} from '@docusaurus/theme-common'; +import {useDoc} from '@docusaurus/plugin-content-docs/client'; +import DocItemPaginator from '@theme/DocItem/Paginator'; +import DocVersionBanner from '@theme/DocVersionBanner'; +import DocItemFooter from '@theme/DocItem/Footer'; +import DocItemTOCMobile from '@theme/DocItem/TOC/Mobile'; +import DocItemTOCDesktop from '@theme/DocItem/TOC/Desktop'; +import DocItemContent from '@theme/DocItem/Content'; +import DocBreadcrumbs from '@theme/DocBreadcrumbs'; +import ContentVisibility from '@theme/ContentVisibility'; +import DocsVersionSelector from '@site/src/components/DocsVersionSelector'; +import styles from './styles.module.css'; + +function useDocTOC() { + const {frontMatter, toc} = useDoc(); + const windowSize = useWindowSize(); + const hidden = frontMatter.hide_table_of_contents; + const canRender = !hidden && toc.length > 0; + const mobile = canRender ? : undefined; + const desktop = + canRender && (windowSize === 'desktop' || windowSize === 'ssr') ? ( + + ) : undefined; + return { + hidden, + mobile, + desktop, + }; +} + +export default function DocItemLayout({children}) { + const docTOC = useDocTOC(); + const {metadata} = useDoc(); + const articleRef = React.useRef(null); + + React.useEffect(() => { + const article = articleRef.current; + if (!article) { + return; + } + + const banner = article.querySelector('[data-doc-version-banner]'); + if (!banner) { + return; + } + + const firstHeading = article.querySelector('.theme-doc-markdown h1, article h1'); + if (firstHeading) { + firstHeading.insertAdjacentElement('afterend', banner); + } + }, []); + + return ( +
+
+ +
+
+
+ + +
+
+ +
+ {docTOC.mobile} + {children} + +
+ +
+
+ {docTOC.desktop &&
{docTOC.desktop}
} +
+ ); +} diff --git a/src/theme/DocItem/Layout/styles.module.css b/src/theme/DocItem/Layout/styles.module.css new file mode 100644 index 0000000..1952d69 --- /dev/null +++ b/src/theme/DocItem/Layout/styles.module.css @@ -0,0 +1,35 @@ +/** + * Swizzled DocItem/Layout styles. + * Original styles preserved + breadcrumbRow for version selector alignment. + */ + +.docItemContainer header + *, +.docItemContainer article > *:first-child { + margin-top: 0; +} + +@media (min-width: 997px) { + .docItemCol { + max-width: 75% !important; + } +} + +.breadcrumbRow { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 0.8rem; + gap: var(--psadt-space-md); + flex-wrap: wrap; +} + +/* Remove default bottom margin from breadcrumbs inside the row */ +.breadcrumbRow :global(.theme-doc-breadcrumbs) { + margin-bottom: 0; +} + +.docVersionBannerOffset { + margin-top: 10px; + margin-bottom: 28px; +} + diff --git a/src/theme/DocSidebar/index.js b/src/theme/DocSidebar/index.js deleted file mode 100644 index 2de0c91..0000000 --- a/src/theme/DocSidebar/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import React from 'react'; -import DocSidebar from '@theme-original/DocSidebar'; - -export default function DocSidebarWrapper(props) { - return ( - <> - - - ); -} diff --git a/src/theme/Root/index.js b/src/theme/Root/index.js index 4096b73..e022edc 100644 --- a/src/theme/Root/index.js +++ b/src/theme/Root/index.js @@ -1,22 +1,11 @@ -import React, { useEffect } from 'react'; -// import EventsSidebar from '../../components/EventsSidebar'; +import { useEffect } from 'react'; export default function Root({ children }) { useEffect(() => { - // Safety check to prevent gtag errors if (typeof window !== 'undefined' && !window.gtag) { - window.gtag = function() { - // No-op function to prevent errors - console.log('gtag not loaded yet, skipping call'); - }; + window.gtag = function() {}; } }, []); - return ( - <> - {children} - {/* Disabling sidebar for now */} - {/* */} - - ); + return <>{children}; } diff --git a/static/images/about/johan.png b/static/images/about/johan.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8a4b312ea20faed3b9e66aae605cfe32e65a33 GIT binary patch literal 212319 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

5#kY@zXNuvKko zV)C-x*R^dZ7i+UQ;cc;_x_{mUz^$6T=CV_OB`;w={pZjbG4X` zhz&)DqN(GTvmWgC`%_bxJpmICIY)$Q0IHIc_hpQ&Xp>Sx5VK6onc(cOzWctX>!=E9 z0wRt|Cs+VsmWU`R#;hr8RIm&UJC}20BEqik&2R@*5<9QC%2FvpO07YmVv-a=MNC{I z0n{}s%C88TV{3rJcA%C;6El$vf-e~<=UQ`eK2a@N~fAIdm?r{A(E?ehLVX;%`93sRpnSu&|W+dMcg30(Ie7YC(&R&ooxA2FMC zRM;|5xu2%4HvnztbAzroN5!E|pkQ?dc5;8ZXjEH= zN;YwFonHlrt2xAhwzUmej{cVt4 zm+Z@*vF)aLhX!_P_gboRHp$i80sY?0i;vFbxX{L7)<&9U)Fj7-AP%{1qX8yWGt9Q8 zjUX~cg5X_9acCxhu_yy#j(M=Mylh6QP%t^LEM}T5Msn(d6(K7|VWJ|SE6h|Sk(pUG zY0VS?k+^gPfk#k<3WETBoXk)c9IyH8Lbqbx(SzcLArq@j$0m@@XTRAL@caGZLSkEF~t}m8Kbvs4A918hG5{) zXGx$?g6|*~Bqal2o(kHf$T?|@pg<~SRwpyt>zZt4rk2eVEaoJpAhl_%OchWiIYdvS z098&+PGB{ltnyT@^g%E%F-62|N(i2~ATWZ&ZGxn&nrYU(rF~eF$t{|ZGMEC5V-g}# z)^@_wvATaEIWu!eHqKp*YsnultV5=?9;YptuwbG#SYskjvQoBoaUJ@M6$D{C6RNeQ zd6ODcq&}PGFK9JH&S7Ss>)ojBP@3}+W3JEVp{Bv2>o_i^5zNwpv`enDAHZ$cg=w2r z1b0@kY=k}+i*1Ggm);R~H7BjoZ*cuD+%U^HhS0h?k86swi7DN|FCBON>|S`UGB&;L zfP!D3@|<+_(v@yT$y;=ue~YH@`IL*c*lRR98`Hn<28AO3in4nvlXK~&Uv14TPsjVbt@~)N02*b9S?#$FN zmQ(#suK*M>18}BHppp??nKdViz+lP1AT^P_njxSk7udx6t}py(H~;_+4uxaWa0q6Q zV+26Y)U=ISh+0!I8jj*r5vJx2OVg|@SHtC%rNQv{frDtxefQlTW@gFf#l;l>EnTQ2 z9WFbAQ|I=DekhcjZ`z?`v&`sNFp!FOhLCa;?>kMsLhRWUv8jRBC~8t-mvfCwfQf^F zwSd`-(f5qWM2MULim7IW3;?DeWCjSaZcv2?0{fIIKqKmF8UPx5OVUbC!F2&!1Oe=t zj*1Y#6vuRMHisI;)X*%Y+#or$sEVE}Srga;Fr%rpj0g;7mUBubUd$0UIeFroa+RWy z19WRSw|52BYf26?8*gRV)RSXi1ab_{Il-JQmkz1~grugsBrxB-AtExh)osj-0Kt$@ zicqqH)MhbDfCywea^P0&N)zfC8b{ATL?9vsKyXOo7RC{Q)MPEF3;}h)5;LnI8meX{ zCIuV=ASA+|mNz1sOAKzC3}2h$@xT@W5CIS(nMF|5_JWCk#@2-Qy{Mc%V3>S=Mw)$T zSfdMh_=M$USAy+7!JX?gEt#}&@nA7?j5;$q_OSyT$6?$A2qp}6TeKHjj@Tr`S+_4; z^i$ss{9Kyxv$epatJj8!#?@h5B<>j6g!|5At(&_PzKmUfkPuhj9=`3`h`nR9Z+lmF zkQZvdzMXQJinZq$E9y1jAaAu;UA=@*9yxR%#$k-LNWz>@bg5}-Q8S97Vq&14NJJO_ z4H$qBrwZTelrbgA0%8DM6kW-Xvw0$yAut8kZIU`>BOxk!okK-;Hl-D_N;Dce6;v_H zImMAk%DDy-k?edhH8e1E1{|BljHOkJCK6rg2(8m$L}jL=iO6Aa!!&9{m^ho=aN|); zb-!eXdi|jTa|dTm+<1f-=l1RY<~L8JCo$7VOB~`s;?nKddSu+44GLR-|DKMac zl4L{XoQ0^!DXyk4R0Z(P135*{rZJ_gW{5<@t_-GPsZov01SBRcBdErvn%A7FW+BI# zEV%$VDC_Vu1A^+-pf5Yzifg7ELUaU(5QqVxlAP6YhNfw% zI;mmOvG(T*@BeW_s;f4&@w+*#ZeG}P&cKUu6_t<-cVWxwrk;;AG=xk5#LT=JNMCFm z_Zt}5F$3B-ji*Uvnj|OCgcuwgKGO3X`r}=jN-dqheD-ycy3^JP}^fM|dvDLQqGdB`B%NNqp-D&t3_lmqq zHQ8c&+Ep%HastOpT66Xipl^4((xxbXWIzV%)~Z!_j%y>@d22+p-98)5TN}^9-alg^ z+vFW^*-D{rlf3YI_@88x>}-5~4rTH_xq66m4f=08$jsbK(N)YNYh%v3I5=C!6)_XD zB#HoO98Qi%2?JBB8o1LM7*bnBFibJ!*m~FX97dyMjTYOOMMbjbh|qRIuXJ-E^nxRm z3INDEfC8PNhn$jTWoE~{9GR(f)B$xiPJe}n#LPi+HmOt7kov-xh)f2m%H#l0B<0)! zf)755UZ|@2{Nkb61N-Opb^B8w(zey|%5raZ=8*>;Ja_s6BOWZvqHwN+Gw07w7ruXl zOmb`xhyYupiU7e3(V_Fi1b}rlQd1*RGf6q6L@d52%@X91jXdsQ#JG*Q$y26 z^JRIJBM1SQi5ldTM8(X^fXtFaRY8P;o#R4GjhGMtbgZ{fXppd$R9hC!t6^`(gqscA zQ{3?QPZ*(WRl}qJe&d8A;<~REudO7yHgy6ZaM4f`%?z|L&7i|HIA_%oSgWbE9FaU2 zAP8us&G|G~DEHs&XI=q-CRKC(nIvVq>c_UtyzQdSSsQ~*#yeisqQC|?vvaVV?cYVW zLKEBgQ6L4<^>@cjr~wfW*9%WVi%U>*j5d6BKfC7-0wN(#(}`_o@b9K-pK?hDf%A;MnBE0cDtNzaH&gP?8aczex0+ID#TYGBG5clx<`3qYjf z#}3cUmfEhMMHE{Z&OftICDAAfV1#5a-c*1M$KA-93~f62PPa>*h@?B!b*_vt# zB_b8b1cs)Loj~c?<)(6u0ZdE_A5u~=Xp*R5l!g(ToDu+l5&-}y`D{5bsflx3YwjQe zfTKVNSwYkhVJ()jtfjNw>m573B^?m~iYXI0gdVeJOo;?UC5u@g7fmPfH(bUI3IK$w zEO-JGGXx+&CRY&5^h!o=` z;jAMT+NjsYF|xU+!r81f*;zTXwd{nDZ9Ivai|_Q=(tBdq7U(=5DwE52l&@*4*9_>a z*Kl<>=lKRYYl>alaA5c1S1X%<&X#Jga4g%Qob`WqYU?T*xy)|vG4P{fzV*bhj^iBX z5pr<6w6MHXRfeWxo(uvbIKqs`Y^qo~QiCbyymN*3s^XmMbjohokI9n6x`~-VGtqxOq`poJ1mE|+@OM_vvxHwoDj8YbdbgW+UfkAdf%qbUc4$us9ZjoIea;7aRm;zA==ur7Ms* zFiEV57#TB?nbk2m$Eu*vh&e<+1Hv*%&O&NXG7(vugb~b;5CO>(do0v45CC%qX+)Z2 zwoT&69c9(Y91v|ay|@@7fpb()L1biLWDX!3#>h77H#>^}UJ`e=>Lhy}$&mZ8+Uqzu#O0LpxFB;r)NDgg(O)Z zo}pV&u4HB?$jl&AC7H}j$yOUUnH@GZR3!4gOHS?$FQU^a0pLRbbgLcNeiWQQ01g() zgdC^n^pA6F2?Wy9uS(gs-~4?&-}~`8Q;*^ z)}HgA-E&Ai^Bi-n=Q~-KcO#CTd2zh5ZWJ*Oi--tjPSi{muv@C&um$W3kwIr=E2XN| z>vb%B8DR-GGu3Jth@Sc)9jzA{hio3aO_X_Mhrb+eRj8y;I^57jTR39ayTh@YCtv1c zjfgFWN)ot9gPWNg?w(E+LsG<5G9y1R>wL@}4oV}!87d(_#=0#bSIgD zU+qGEwHMf*hfV|V`RDy?km)GlfbvD&95^Houn3*3v+;MG=o2P?Ih5|hz zAs$gFJ@5)>6cK8zZ5EFp&EnvFcx0u9`EEW7EmLc|-KLQLv!tOt{Eyf*Darq$i3XloMhUojiiLseJWBX2N?{ zCxAbod2Wx?2Z7m$A02kHXnU=$wx?_Sj*!pZ-H? z=k@?T2Tb4F|B?~(GgyG_%l=7Lzcl-~Nu7uGm2pqz&Cf4vr+mz(|Gz|o z{7ZD6;BVi)^6X>1ax;=6LQ3SF4kVC~MMOkq4ExiqB^v_4o+UX}mvhaX;5-S1Q- zGb8#Mqf3xkgqY@i<^kc3I4w+qG zqqR93nsv!m}!X$R^0O1G~Ae@0fWmwe)Hf8A^06iU4gszTb^lZNRx=MGh zMPvB8T0o#u3iVBUU4V=(=^4VLI|Aw9!pv}_Au!wui^q!tzfZNFl**e#$P{pw;1pf^ZC8~FAQP*ylHWxbIXTR(Z`N|-eI3(r{%-* zPw{mqiM#GuVAH+7fN}lmVa8w2p6vftZXMe=LAfg${ED9|!MvfA3x+J_UTT2mD;PV>f6@^5duY~774e$juESfL~K#DpvuT76i*P0OeHGV zmr-_W);jABl;c$&?n}=AGqR~@ibxg5G&iOTs4NK^>6ww6kEWDz6_)q zSttR|2(siOm8U*v?dHX)WuXYg!Xx91asdZ2GgP(vAf%us)03o|uaVnXZgn$HK8%!> zF~AAA-r0Ox=2JI(whfB!>zQvcR>Ymc=6VM+-HMvG@hnarE@X7!!10fHagDdXL0(!v zl9TTKAjj1+NR57|^SMrM;#eTn){AR-6m@-gAs<4V4{Bm;V`@G!CEfCO6TuzzRVf+B%qoR~c|T>(_3D}uHdeDE#;R=9+ay{6 z6|~CzZVy@AEqt}Hs+2&Ojj?u$_8wZ>e*T7KQkmdIl4eH6ROER1liRfxv*S9}u^x_; zLft2*ReL`~`0!C0*JWtiCsE5RBj22%kY}~Nop!HxbNG-tsZQpHQtIJ&U3C6`zyI$= z@n(Llx+^mGo&`=a0UgCGhpCB^zsw#?A7 z^&i^Kppvpn6r$MBv|@v>7TqW8ivc4_WZH7Q*sj)6gwwnZ4-3%(XvW;ySpkV8YAX|U zU)wI&DefQv&+3_%>sb3h%8K3UnOh_?Cnb+#C}qUZ!bD2ha`(|Zfx3hfcLlu97?z1Z zZqYsjEF(anBt?K=M)oxaN%M6i2K3RAA#G_V4R3{Y

n_Gc^vkmQ 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 literal 0 HcmV?d00001 diff --git a/static/images/features-automation.svg b/static/images/features/automation.svg similarity index 100% rename from static/images/features-automation.svg rename to static/images/features/automation.svg diff --git a/static/images/features-checkmark.svg b/static/images/features/checkmark.svg similarity index 100% rename from static/images/features-checkmark.svg rename to static/images/features/checkmark.svg diff --git a/static/images/features/code.png b/static/images/features/code.png new file mode 100644 index 0000000000000000000000000000000000000000..94e4486c946e78412e1887e962b6f086b4e567d0 GIT binary patch literal 3486 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 + + + + + + \ No newline at end of file diff --git a/static/images/features-worker-male.svg b/static/images/features/construction_worker_man.svg similarity index 100% rename from static/images/features-worker-male.svg rename to static/images/features/construction_worker_man.svg diff --git a/static/images/features-worker-female.svg b/static/images/features/construction_worker_woman.svg similarity index 100% rename from static/images/features-worker-female.svg rename to static/images/features/construction_worker_woman.svg diff --git a/static/images/features/construction_workers_classroom.png b/static/images/features/construction_workers_classroom.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc2d6079e15cb6e71163eb2aa208dbc5e466aaf GIT binary patch literal 919481 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