diff --git a/package.json b/package.json index dc2d92374..e2b61b78f 100644 --- a/package.json +++ b/package.json @@ -21,7 +21,7 @@ "dev:website": "bun --filter=@blitzkit/website run dev", "dev:api": "bun --filter=@blitzkit/api run dev", "start:bot": "bun dist/bot/index.js", - "start:website": "next start", + "start:website": "bun --filter=@blitzkit/website run start", "host:docs": "vitepress preview docs", "lint": "tsc", "lint:website": "next lint", diff --git a/packages/website/package.json b/packages/website/package.json index ae6c64684..0baaf402a 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -4,7 +4,8 @@ "type": "module", "scripts": { "dev": "next dev", - "build": "next build" + "build": "next build", + "start": "next start" }, "dependencies": { "@radix-ui/themes": "^3.1.3", diff --git a/packages/website/src/app/auth/[provider]/constants.ts b/packages/website/src/app/auth/[provider]/constants.ts new file mode 100644 index 000000000..4b7bc6cbd --- /dev/null +++ b/packages/website/src/app/auth/[provider]/constants.ts @@ -0,0 +1 @@ +export const PROVIDERS = ['wargaming', 'patreon']; diff --git a/packages/website/src/app/auth/[provider]/layout.tsx b/packages/website/src/app/auth/[provider]/layout.tsx index d6761abba..4f3113bc5 100644 --- a/packages/website/src/app/auth/[provider]/layout.tsx +++ b/packages/website/src/app/auth/[provider]/layout.tsx @@ -1,5 +1,9 @@ -import { PROVIDERS } from './page'; +import { PROVIDERS } from './constants'; export async function generateStaticParams() { return PROVIDERS.map((provider) => ({ provider })); } + +export default function Layout({ children }: { children: React.ReactNode }) { + return children; +} diff --git a/packages/website/src/app/auth/[provider]/page.tsx b/packages/website/src/app/auth/[provider]/page.tsx index 68403ede2..b98096fab 100644 --- a/packages/website/src/app/auth/[provider]/page.tsx +++ b/packages/website/src/app/auth/[provider]/page.tsx @@ -6,8 +6,6 @@ import { useEffect } from 'react'; import { PageWrapper } from '../../../components/PageWrapper'; import * as App from '../../../stores/app'; -export const PROVIDERS = ['wargaming', 'patreon']; - export interface PatreonAuthResponse { access_token: string; expires_in: number; diff --git a/packages/website/src/app/docs/[directory]/[document]/layout.tsx b/packages/website/src/app/docs/[directory]/[document]/layout.tsx new file mode 100644 index 000000000..82286e714 --- /dev/null +++ b/packages/website/src/app/docs/[directory]/[document]/layout.tsx @@ -0,0 +1,45 @@ +import { assertSecret } from '@blitzkit/core'; + +export async function generateStaticParams() { + return await fetch( + `https://api.github.com/repos/tresabhi/blitzkit/contents/docs?ref=${assertSecret( + process.env.NEXT_PUBLIC_ASSET_BRANCH, + )}`, + ) + .then((response) => response.json() as Promise<{ name: string }[]>) + .then((directories) => + Promise.all( + directories + .filter( + (directory) => + !['.vitepress', 'public', 'index.md'].includes(directory.name), + ) + .map((directory) => + fetch( + `https://api.github.com/repos/tresabhi/blitzkit/contents/docs/${directory.name}?ref=${assertSecret( + process.env.NEXT_PUBLIC_ASSET_BRANCH, + )}`, + ) + .then( + (response) => response.json() as Promise<{ name: string }[]>, + ) + .then((docs) => + docs + .map((document) => { + console.log(`${directory.name}/${document.name}`); + return document; + }) + .map((document) => ({ + document: document.name.split('.').slice(0, -1).join('.'), + directory: directory.name, + })), + ), + ), + ), + ) + .then((docs) => docs.flat()); +} + +export default function Layout({ children }: { children: React.ReactNode }) { + return children; +} diff --git a/packages/website/src/app/tools/embed/[embed]/layout.tsx b/packages/website/src/app/tools/embed/[embed]/layout.tsx index 35540255d..c66718477 100644 --- a/packages/website/src/app/tools/embed/[embed]/layout.tsx +++ b/packages/website/src/app/tools/embed/[embed]/layout.tsx @@ -3,6 +3,10 @@ import * as EmbedState from '../../../../stores/embedState'; import { configurations } from '../configurations'; import { extractEmbedConfigDefaults } from '../utilities'; +export function generateStaticParams() { + return Object.keys(configurations).map((embed) => ({ embed })); +} + export default function Layout({ params, children, diff --git a/packages/website/src/app/tools/embed/page.tsx b/packages/website/src/app/tools/embed/page.tsx index 86f5ec8c5..a386e73be 100644 --- a/packages/website/src/app/tools/embed/page.tsx +++ b/packages/website/src/app/tools/embed/page.tsx @@ -1,5 +1,5 @@ import { PageWrapper } from '../../../components/PageWrapper'; -export function Page() { +export default function Page() { return ; } diff --git a/packages/website/tsconfig.json b/packages/website/tsconfig.json index 59166b9f0..485b9f36c 100644 --- a/packages/website/tsconfig.json +++ b/packages/website/tsconfig.json @@ -10,6 +10,6 @@ "include": [ "src/**/*", ".next/types/**/*.ts", - "dist/website/types/**/*.ts" + "../../dist/website/types/**/*.ts" ] } diff --git a/tsconfig.json b/tsconfig.json index 0c072721f..f5912f4e8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,5 +20,5 @@ } ] }, - "exclude": ["node_modules/**/*", "dist"] + "exclude": ["node_modules/**/*", "dist", ".next"] }