From 8c2e2e396d11db29fb56f5c672fa91e963e3c9a7 Mon Sep 17 00:00:00 2001 From: Piotr Monwid-Olechnowicz Date: Fri, 13 Dec 2024 20:21:11 +0100 Subject: [PATCH] Add ecosystem page (Components v7) (#6124) Co-authored-by: Dimitri POSTOLOV --- packages/web/docs/next.config.js | 1 + packages/web/docs/package.json | 2 +- .../components/ecosystem-page/components.tsx | 96 +++++++++++++ .../src/components/ecosystem-page/content.mdx | 52 +++++++ .../ecosystem-page/ecosystem-page-nav-h2.tsx | 23 ++++ .../src/components/ecosystem-page/index.mdx | 6 + .../src/components/ecosystem-page/page.tsx | 13 ++ .../src/components/got-an-idea-section.tsx | 128 ++++++++++++++++++ .../src/components/navigation-menu/index.tsx | 2 +- .../docs/src/components/product-updates.tsx | 11 +- packages/web/docs/src/env.d.ts | 5 + packages/web/docs/src/pages/_meta.ts | 8 ++ packages/web/docs/src/pages/ecosystem.mdx | 6 + packages/web/docs/src/theme.config.tsx | 27 ++-- pnpm-lock.yaml | 78 +++++------ 15 files changed, 399 insertions(+), 59 deletions(-) create mode 100644 packages/web/docs/src/components/ecosystem-page/components.tsx create mode 100644 packages/web/docs/src/components/ecosystem-page/content.mdx create mode 100644 packages/web/docs/src/components/ecosystem-page/ecosystem-page-nav-h2.tsx create mode 100644 packages/web/docs/src/components/ecosystem-page/index.mdx create mode 100644 packages/web/docs/src/components/ecosystem-page/page.tsx create mode 100644 packages/web/docs/src/components/got-an-idea-section.tsx create mode 100644 packages/web/docs/src/env.d.ts create mode 100644 packages/web/docs/src/pages/ecosystem.mdx diff --git a/packages/web/docs/next.config.js b/packages/web/docs/next.config.js index 5f55164a9b..136a041f1f 100644 --- a/packages/web/docs/next.config.js +++ b/packages/web/docs/next.config.js @@ -10,6 +10,7 @@ export default withGuildDocs({ eslint: { ignoreDuringBuilds: true, }, + redirects: async () => [ { source: '/docs/get-started/organizations', diff --git a/packages/web/docs/package.json b/packages/web/docs/package.json index 0555af9d91..f127d63da1 100644 --- a/packages/web/docs/package.json +++ b/packages/web/docs/package.json @@ -12,7 +12,7 @@ "@radix-ui/react-tabs": "1.1.1", "@radix-ui/react-tooltip": "1.1.3", "@tailwindcss/typography": "0.5.15", - "@theguild/components": "7.3.0", + "@theguild/components": "7.4.0", "clsx": "2.1.1", "date-fns": "4.1.0", "next": "14.2.18", diff --git a/packages/web/docs/src/components/ecosystem-page/components.tsx b/packages/web/docs/src/components/ecosystem-page/components.tsx new file mode 100644 index 0000000000..361185fd4e --- /dev/null +++ b/packages/web/docs/src/components/ecosystem-page/components.tsx @@ -0,0 +1,96 @@ +import { DecorationIsolation, Heading, ProductCard, PRODUCTS } from '@theguild/components'; +import EcosystemPageContent from './content.mdx'; +import { EcosystemPageNavH2 } from './ecosystem-page-nav-h2'; + +export const components = { + EcosystemHeader: (props: React.HTMLAttributes) => ( +
+ The Ecosystem + {props.children} + + +
+ ), + h1: (props: React.HTMLAttributes) => , + h2: (props: React.HTMLAttributes) => ( + + ), + p: (props: React.HTMLAttributes) => ( +

+ ), + ul: (props: React.HTMLAttributes) => { + return ( +

    + ); + }, + li: (props: React.LiHTMLAttributes) => { + const productName = String(props.children) + .toUpperCase() + .replace(' ', '_') as keyof typeof PRODUCTS; + + const product = PRODUCTS[productName]; + if (!product) { + throw new Error(`Product ${productName} is missing`); + } + + return ; + }, +}; + +/** + * Take all sections headings and render them as navigation links + */ +const ecosystemPageNav = { + ...Object.fromEntries(Object.keys(components).map(key => [key, () => null])), + h2: EcosystemPageNavH2, +}; + +function CrossDecoration() { + return ( + + + + + + + ); +} + +function ArchDecoration({ className }: { className?: string }) { + return ( + + + + + + + + + + ); +} diff --git a/packages/web/docs/src/components/ecosystem-page/content.mdx b/packages/web/docs/src/components/ecosystem-page/content.mdx new file mode 100644 index 0000000000..b3ab14e45d --- /dev/null +++ b/packages/web/docs/src/components/ecosystem-page/content.mdx @@ -0,0 +1,52 @@ + + +# Everything you need to scale your API infrastructure + +Enhance your GraphQL experience with advanced, modular solutions that can be adopted gradually as +individual open source libraries or as a complete unified API platform. + + + +## Schema Evolution + +Our tools help you track changes, prevent breaking changes, and ensure backward compatibility as +your schema evolves. Through continuous monitoring and validation, you can confidently make schema +changes while maintaining API stability for your consumers. + +- Hive +- Inspector +- Tools + +## Gateway + +Hive Gateway is a fully open-source, MIT-licensed GraphQL router that can act as a GraphQL +Federation gateway, a subgraph or a proxy gateway for any GraphQL API service. + +- Hive Gateway + +## Subgraph / Schema + +Our schema tools empower you to build and manage GraphQL schemas with confidence and flexibility. +Whether you're building a new schema from scratch or integrating existing ones, our suite of +libraries provides the foundation for robust and maintainable GraphQL APIs. + +- Yoga +- Mesh +- Sofa +- Envelop + +## Developer Experience + +Enhance your development workflow with tools that streamline GraphQL development, from code +generation to documentation and linting. + +- Codegen +- ESLint +- Nextra + +## Security + +Reduce Cloud costs, handle traffic spikes, boost performance, get detailed observability, and secure +your API. + +- Stellate diff --git a/packages/web/docs/src/components/ecosystem-page/ecosystem-page-nav-h2.tsx b/packages/web/docs/src/components/ecosystem-page/ecosystem-page-nav-h2.tsx new file mode 100644 index 0000000000..a70e35c538 --- /dev/null +++ b/packages/web/docs/src/components/ecosystem-page/ecosystem-page-nav-h2.tsx @@ -0,0 +1,23 @@ +'use client'; + +export const EcosystemPageNavH2 = (props: React.HTMLAttributes) => ( + { + if (event.key === 'ArrowLeft') { + const previousElement = event.currentTarget.previousElementSibling; + if (previousElement) { + (previousElement as HTMLElement).focus(); + } + } else if (event.key === 'ArrowRight') { + const nextElement = event.currentTarget.nextElementSibling; + if (nextElement) { + (nextElement as HTMLElement).focus(); + } + } + }} + > + {props.children} + +); diff --git a/packages/web/docs/src/components/ecosystem-page/index.mdx b/packages/web/docs/src/components/ecosystem-page/index.mdx new file mode 100644 index 0000000000..2cf9f7de7f --- /dev/null +++ b/packages/web/docs/src/components/ecosystem-page/index.mdx @@ -0,0 +1,6 @@ +--- +title: The Ecosystem +description: Everything you need to scale your API infrastructure +--- + +export { default } from './page' diff --git a/packages/web/docs/src/components/ecosystem-page/page.tsx b/packages/web/docs/src/components/ecosystem-page/page.tsx new file mode 100644 index 0000000000..087d7af16b --- /dev/null +++ b/packages/web/docs/src/components/ecosystem-page/page.tsx @@ -0,0 +1,13 @@ +import { GotAnIdeaSection } from '../got-an-idea-section'; +import { Page as LandingPageContainer } from '../page'; +import { components } from './components'; +import EcosystemPageContent from './content.mdx'; + +export default function EcosystemPage() { + return ( + + + + + ); +} diff --git a/packages/web/docs/src/components/got-an-idea-section.tsx b/packages/web/docs/src/components/got-an-idea-section.tsx new file mode 100644 index 0000000000..13d015ddad --- /dev/null +++ b/packages/web/docs/src/components/got-an-idea-section.tsx @@ -0,0 +1,128 @@ +import { CallToAction, DecorationIsolation, Heading } from '@theguild/components'; + +export function GotAnIdeaSection() { + return ( +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Got an idea for a new library? + +

    + Join our community to chat with us and let's build something together! +

    + { + if (window.$crisp) { + event.preventDefault(); + window.$crisp?.push(['do', 'chat:open']); + } + }} + > + Get in touch + +
    + ); +} diff --git a/packages/web/docs/src/components/navigation-menu/index.tsx b/packages/web/docs/src/components/navigation-menu/index.tsx index 361fef7a20..a7c60ac4be 100644 --- a/packages/web/docs/src/components/navigation-menu/index.tsx +++ b/packages/web/docs/src/components/navigation-menu/index.tsx @@ -16,5 +16,5 @@ export function NavigationMenu(props: ComponentPropsWithoutRef) { ); } -const landingLikePages = ['/', '/pricing', '/federation', '/oss-friends']; +const landingLikePages = ['/', '/pricing', '/federation', '/oss-friends', '/ecosystem']; export const isLandingPage = (route: string) => landingLikePages.includes(route); diff --git a/packages/web/docs/src/components/product-updates.tsx b/packages/web/docs/src/components/product-updates.tsx index 12455a4a7b..bd211d96aa 100644 --- a/packages/web/docs/src/components/product-updates.tsx +++ b/packages/web/docs/src/components/product-updates.tsx @@ -38,21 +38,22 @@ export async function getChangelogs(): Promise { return productUpdatesFolder .slice(1) // cut `_meta.ts` which always comes first .map(item => { - if (!item.children) { + if (!('children' in item)) { if (!('title' in item.frontMatter!)) { throw new Error(`Incorrect Front matter on page ${item.route}`); } // Regular mdx page return { - title: item.frontMatter.title, - date: item.frontMatter.date.toISOString(), - description: item.frontMatter.description, + title: item.frontMatter.title || '', + date: 'date' in item.frontMatter ? item.frontMatter.date.toISOString() : '', + description: item.frontMatter.description || '', route: item.route!, }; } // Folder - const indexPage = item.children.find(item => item.name === 'index'); + const indexPage = 'children' in item && item.children?.find(item => item.name === 'index'); + if (!indexPage) { throw new Error('Changelog folder must have an "index.mdx" page'); } diff --git a/packages/web/docs/src/env.d.ts b/packages/web/docs/src/env.d.ts new file mode 100644 index 0000000000..72f65e28a8 --- /dev/null +++ b/packages/web/docs/src/env.d.ts @@ -0,0 +1,5 @@ +interface Window { + $crisp?: { + push: (args: any[]) => void; + }; +} diff --git a/packages/web/docs/src/pages/_meta.ts b/packages/web/docs/src/pages/_meta.ts index d1595c1164..4410105e93 100644 --- a/packages/web/docs/src/pages/_meta.ts +++ b/packages/web/docs/src/pages/_meta.ts @@ -51,6 +51,14 @@ const meta: Record> = { layout: 'raw', }, }, + ecosystem: { + title: 'Ecosystem', + type: 'page', + display: 'hidden', + theme: { + layout: 'raw', + }, + }, products: { title: 'Products', type: 'menu', diff --git a/packages/web/docs/src/pages/ecosystem.mdx b/packages/web/docs/src/pages/ecosystem.mdx new file mode 100644 index 0000000000..ee54134a84 --- /dev/null +++ b/packages/web/docs/src/pages/ecosystem.mdx @@ -0,0 +1,6 @@ +--- +title: The Ecosystem +description: Everything you need to scale your API infrastructure +--- + +export { default } from '../components/ecosystem-page/page' diff --git a/packages/web/docs/src/theme.config.tsx b/packages/web/docs/src/theme.config.tsx index 50e2580b9f..d3f126f8a3 100644 --- a/packages/web/docs/src/theme.config.tsx +++ b/packages/web/docs/src/theme.config.tsx @@ -124,23 +124,24 @@ export default defineConfig({ return ( :first-child]:mx-0 [&>:first-child]:max-w-[90rem]', 'pt-[72px]', )} - resources={[ - { - children: 'Privacy Policy', - href: 'https://the-guild.dev/graphql/hive/privacy-policy.pdf', - title: 'Privacy Policy', - }, - { - children: 'Terms of Use', - href: 'https://the-guild.dev/graphql/hive/terms-of-use.pdf', - title: 'Terms of Use', - }, - ]} + items={{ + resources: [ + { + children: 'Privacy Policy', + href: 'https://the-guild.dev/graphql/hive/privacy-policy.pdf', + title: 'Privacy Policy', + }, + { + children: 'Terms of Use', + href: 'https://the-guild.dev/graphql/hive/terms-of-use.pdf', + title: 'Terms of Use', + }, + ], + }} /> ); }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 333f39c7fb..3501d23123 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2024,8 +2024,8 @@ importers: specifier: 0.5.15 version: 0.5.15(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))) '@theguild/components': - specifier: 7.3.0 - version: 7.3.0(@theguild/tailwind-config@0.6.0(postcss-import@16.1.0(postcss@8.4.49))(postcss-lightningcss@1.0.1(postcss@8.4.49))(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))))(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.11))(esbuild@0.23.1)) + specifier: 7.4.0 + version: 7.4.0(@theguild/tailwind-config@0.6.0(postcss-import@16.1.0(postcss@8.4.49))(postcss-lightningcss@1.0.1(postcss@8.4.49))(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))))(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.11))(esbuild@0.23.1)) clsx: specifier: 2.1.1 version: 2.1.1 @@ -4887,8 +4887,8 @@ packages: resolution: {integrity: sha512-lH8bYk2kqfbKsht/Gejd8K+y069ZXPHBfrlcj1ptS6xlJbHhncHxpFyy57W+PTuCcN+MPGVjs+3CiufG8EUrCQ==} engines: {node: '>= 10'} - '@next/bundle-analyzer@15.0.3': - resolution: {integrity: sha512-x7ZNvpoQPO0C5ZG//qVp21Qs3v6+C8LBJmdu9DKj4/NmjlnwoQ7dqRZ/nKZcwVhkFT7BHf+Qd5FaeHq9IDJvDQ==} + '@next/bundle-analyzer@15.0.4': + resolution: {integrity: sha512-0If3/mxqUWYC0lAdV5cChGA1Xs1BENjaLyJkdqpI2df86HqprcDZagiB2IU1xc5ph7xZHRdi5mT2cY7VkyibTQ==} '@next/env@13.5.6': resolution: {integrity: sha512-Yac/bV5sBGkkEXmAX5FWPS9Mmo2rthrOPRQQNfycJPkjUAUclomCPH7QFVCDQ4Mp2k2K1SSM6m0zrxYrOwtFQw==} @@ -7480,10 +7480,10 @@ packages: resolution: {integrity: sha512-kUiFyUQDiVdpeeL/qwOZAdDZrYFTwqppwNZDxOXcPSKeqGCZe8ajbbN64OAS7VlGMnXWxEEHcjhyFzB9gtHn5w==} hasBin: true - '@theguild/components@7.3.0': - resolution: {integrity: sha512-g1A2ux536gbbUcZePMtg711iC4oXgoTWEAwQW2mMIAM2I0EtPgXZeX9CYsIzHmQKLGKDEQGyEmLGGzlc9pu2yg==} + '@theguild/components@7.4.0': + resolution: {integrity: sha512-tOh+Otfod9+oyrzUUCwAFVC6Gr1qZyTnGdzfb1us2tTPqCU8BH1w0ak9BCWk9nNnN9VkavZmRKsU1uJhvb7JLA==} peerDependencies: - '@theguild/tailwind-config': 0.6.0 + '@theguild/tailwind-config': 0.6.1 next: ^13 || ^14 || ^15.0.0 react: ^18.2.0 react-dom: ^18.2.0 @@ -12618,16 +12618,16 @@ packages: sass: optional: true - nextra-theme-docs@3.2.4: - resolution: {integrity: sha512-3fg7zMHInuvSDURRJjh6UrbdqkK8uLs8RNriY38kVukWLvaVP2f6mmVJKIYqxVv6qAKWEzDLTr4dlJCY81eXuQ==} + nextra-theme-docs@3.2.5: + resolution: {integrity: sha512-eF0j1VNNS1rFjZOfYqlrXISaCU3+MhZ9hhXY+TUydRlfELrFWpGzrpW6MiL7hq4JvUR7OBtHHs8+A+8AYcETBQ==} peerDependencies: next: '>=13' - nextra: 3.2.4 + nextra: 3.2.5 react: '>=18' react-dom: '>=18' - nextra@3.2.4: - resolution: {integrity: sha512-xvQuPVtRoJTz4ynIbEkxYkEtviIX699lt4coij2IMmafYrBNaD0Ofj93jIz7VngYxyT9f4gWSiwqNgoIlnbsjQ==} + nextra@3.2.5: + resolution: {integrity: sha512-n665DRpI/brjHXM83G5LdlbYA2nOtjaLcWJs7mZS3gkuRDmEXpJj4XJ860xrhkYZW2iYoUMu32zzhPuFByU7VA==} engines: {node: '>=18'} peerDependencies: next: '>=13' @@ -16228,8 +16228,8 @@ snapshots: dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16336,11 +16336,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sso-oidc@3.596.0': + '@aws-sdk/client-sso-oidc@3.596.0(@aws-sdk/client-sts@3.596.0)': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16379,6 +16379,7 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: + - '@aws-sdk/client-sts' - aws-crt '@aws-sdk/client-sso-oidc@3.693.0(@aws-sdk/client-sts@3.693.0)': @@ -16512,11 +16513,11 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/client-sts@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)': + '@aws-sdk/client-sts@3.596.0': dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sso-oidc': 3.596.0 + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) '@aws-sdk/core': 3.592.0 '@aws-sdk/credential-provider-node': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0) '@aws-sdk/middleware-host-header': 3.577.0 @@ -16555,7 +16556,6 @@ snapshots: '@smithy/util-utf8': 3.0.0 tslib: 2.8.1 transitivePeerDependencies: - - '@aws-sdk/client-sso-oidc' - aws-crt '@aws-sdk/client-sts@3.693.0': @@ -16669,7 +16669,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.596.0(@aws-sdk/client-sso-oidc@3.596.0)(@aws-sdk/client-sts@3.596.0)': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/credential-provider-env': 3.587.0 '@aws-sdk/credential-provider-http': 3.596.0 '@aws-sdk/credential-provider-process': 3.587.0 @@ -16788,7 +16788,7 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.587.0(@aws-sdk/client-sts@3.596.0)': dependencies: - '@aws-sdk/client-sts': 3.596.0(@aws-sdk/client-sso-oidc@3.596.0) + '@aws-sdk/client-sts': 3.596.0 '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.1.8 '@smithy/types': 3.6.0 @@ -16963,7 +16963,7 @@ snapshots: '@aws-sdk/token-providers@3.587.0(@aws-sdk/client-sso-oidc@3.596.0)': dependencies: - '@aws-sdk/client-sso-oidc': 3.596.0 + '@aws-sdk/client-sso-oidc': 3.596.0(@aws-sdk/client-sts@3.596.0) '@aws-sdk/types': 3.577.0 '@smithy/property-provider': 3.1.8 '@smithy/shared-ini-file-loader': 3.1.9 @@ -19957,7 +19957,7 @@ snapshots: '@napi-rs/simple-git-win32-arm64-msvc': 0.1.17 '@napi-rs/simple-git-win32-x64-msvc': 0.1.17 - '@next/bundle-analyzer@15.0.3': + '@next/bundle-analyzer@15.0.4': dependencies: webpack-bundle-analyzer: 4.10.1 transitivePeerDependencies: @@ -23341,18 +23341,18 @@ snapshots: typescript: 4.9.5 yargs: 16.2.0 - '@theguild/components@7.3.0(@theguild/tailwind-config@0.6.0(postcss-import@16.1.0(postcss@8.4.49))(postcss-lightningcss@1.0.1(postcss@8.4.49))(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))))(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.11))(esbuild@0.23.1))': + '@theguild/components@7.4.0(@theguild/tailwind-config@0.6.0(postcss-import@16.1.0(postcss@8.4.49))(postcss-lightningcss@1.0.1(postcss@8.4.49))(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))))(@types/react-dom@18.3.1)(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3)(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.11))(esbuild@0.23.1))': dependencies: '@giscus/react': 3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@next/bundle-analyzer': 15.0.3 + '@next/bundle-analyzer': 15.0.4 '@radix-ui/react-navigation-menu': 1.2.0(@types/react-dom@18.3.1)(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@theguild/tailwind-config': 0.6.0(postcss-import@16.1.0(postcss@8.4.49))(postcss-lightningcss@1.0.1(postcss@8.4.49))(tailwindcss@3.4.15(ts-node@10.9.2(@swc/core@1.9.2(@swc/helpers@0.5.11))(@types/node@22.9.3)(typescript@5.6.3))) clsx: 2.1.1 fuzzy: 0.1.3 next: 14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-videos: 1.5.0(webpack@5.94.0(@swc/core@1.9.2(@swc/helpers@0.5.11))(esbuild@0.23.1)) - nextra: 3.2.4(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) - nextra-theme-docs: 3.2.4(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.2.4(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + nextra: 3.2.5(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + nextra-theme-docs: 3.2.5(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.2.5(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-paginate: 8.2.0(react@18.3.1) @@ -23391,8 +23391,8 @@ snapshots: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3) eslint: 8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva) eslint-config-prettier: 9.1.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) eslint-plugin-jsonc: 2.11.1(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) eslint-plugin-mdx: 3.0.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) @@ -26100,13 +26100,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): dependencies: debug: 4.3.7(supports-color@8.1.1) enhanced-resolve: 5.17.1 eslint: 8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva) - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) fast-glob: 3.3.2 get-tsconfig: 4.7.5 is-core-module: 2.13.1 @@ -26137,14 +26137,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): + eslint-module-utils@2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: '@typescript-eslint/parser': 7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3) eslint: 8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) transitivePeerDependencies: - supports-color @@ -26160,7 +26160,7 @@ snapshots: eslint: 8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva) eslint-compat-utils: 0.1.2(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) - eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)): dependencies: array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 @@ -26170,7 +26170,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva))(typescript@5.6.3))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)))(eslint@8.57.1(patch_hash=fjbpfrtrjd6idngyeqxnwopfva)) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -29863,7 +29863,7 @@ snapshots: - '@babel/core' - babel-plugin-macros - nextra-theme-docs@3.2.4(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.2.4(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + nextra-theme-docs@3.2.5(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(nextra@3.2.5(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: '@headlessui/react': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) clsx: 2.1.1 @@ -29871,13 +29871,13 @@ snapshots: flexsearch: 0.7.43 next: 14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: 0.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - nextra: 3.2.4(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) + nextra: 3.2.5(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) scroll-into-view-if-needed: 3.1.0 zod: 3.23.8 - nextra@3.2.4(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): + nextra@3.2.5(@types/react@18.3.12)(next@14.2.18(@babel/core@7.22.9)(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.6.3): dependencies: '@formatjs/intl-localematcher': 0.5.5 '@headlessui/react': 2.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)