From 24f5e73bbe6b294457eb95704f933d6a44ffabd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Samy=20Pess=C3=A9?= Date: Tue, 26 Dec 2023 18:36:44 +0100 Subject: [PATCH] PDF export (#72) * Start * Improve generation * Improve style * Lint * Use tilde instead of dot in the url * Improve style * Fix page group * Format * Add visual tests for PDF --- .../{[[...pathname]] => }/ClientContexts.tsx | 0 src/app/[spaceId]/[[...pathname]]/layout.tsx | 172 ------------------ src/app/[spaceId]/[[...pathname]]/page.tsx | 16 +- .../[spaceId]/{[[...pathname]] => }/error.tsx | 0 src/app/[spaceId]/global-error.tsx | 11 ++ src/app/[spaceId]/layout.tsx | 165 ++++++++++++++++- src/app/[spaceId]/robots.txt/route.ts | 2 +- .../{.gitbook => ~gitbook}/icon/route.tsx | 18 +- .../ogimage/[pageId]/route.tsx | 5 +- .../~gitbook/pdf/OpenPrintDialog.tsx | 13 ++ .../{.gitbook => ~gitbook}/pdf/page.tsx | 101 +++++++--- src/app/[spaceId]/~gitbook/pdf/pdf.css | 8 + src/app/{.gitbook => ~gitbook}/image/route.ts | 2 +- .../revalidate/route.ts | 1 + src/components/DocumentView/DocumentView.tsx | 9 +- src/components/Header/HeaderLogo.tsx | 4 +- src/components/PageBody/PageBody.tsx | 2 - src/lib/images.ts | 2 +- src/middleware.ts | 2 +- tests/visual-testing.ts | 8 + tsconfig.json | 9 +- 21 files changed, 316 insertions(+), 234 deletions(-) rename src/app/[spaceId]/{[[...pathname]] => }/ClientContexts.tsx (100%) delete mode 100644 src/app/[spaceId]/[[...pathname]]/layout.tsx rename src/app/[spaceId]/{[[...pathname]] => }/error.tsx (100%) create mode 100644 src/app/[spaceId]/global-error.tsx rename src/app/[spaceId]/{.gitbook => ~gitbook}/icon/route.tsx (99%) rename src/app/[spaceId]/{.gitbook => ~gitbook}/ogimage/[pageId]/route.tsx (99%) create mode 100644 src/app/[spaceId]/~gitbook/pdf/OpenPrintDialog.tsx rename src/app/[spaceId]/{.gitbook => ~gitbook}/pdf/page.tsx (62%) create mode 100644 src/app/[spaceId]/~gitbook/pdf/pdf.css rename src/app/{.gitbook => ~gitbook}/image/route.ts (97%) rename src/app/{.gitbook => ~gitbook}/revalidate/route.ts (99%) diff --git a/src/app/[spaceId]/[[...pathname]]/ClientContexts.tsx b/src/app/[spaceId]/ClientContexts.tsx similarity index 100% rename from src/app/[spaceId]/[[...pathname]]/ClientContexts.tsx rename to src/app/[spaceId]/ClientContexts.tsx diff --git a/src/app/[spaceId]/[[...pathname]]/layout.tsx b/src/app/[spaceId]/[[...pathname]]/layout.tsx deleted file mode 100644 index 3f79a2f69..000000000 --- a/src/app/[spaceId]/[[...pathname]]/layout.tsx +++ /dev/null @@ -1,172 +0,0 @@ -import { CustomizationHeaderPreset, CustomizationSettings } from '@gitbook/api'; -import assertNever from 'assert-never'; -import Script from 'next/script'; -import colors from 'tailwindcss/colors'; - -import { fonts, ibmPlexMono } from '@/fonts'; -import { getSpaceLanguage } from '@/intl/server'; -import { getSpaceContent } from '@/lib/api'; -import { hexToRgb, shadesOfColor } from '@/lib/colors'; -import { getContentSecurityPolicyNonce } from '@/lib/csp'; -import { tcls } from '@/lib/tailwind'; - -import { ClientContexts } from './ClientContexts'; -import { PagePathParams } from '../fetch'; - -export default async function SpaceRootLayout(props: { - children: React.ReactNode; - params: PagePathParams; -}) { - const { params, children } = props; - - const { customization, scripts } = await getSpaceContent({ - spaceId: params.spaceId, - }); - const headerTheme = generateHeaderTheme(customization); - const nonce = getContentSecurityPolicyNonce(); - const language = getSpaceLanguage(customization); - - return ( - - - {customization.privacyPolicy.url ? ( - - ) : null} - - - - {children} - - {scripts.map(({ script }) => ( -