/* * Copyright (c) Facebook, Inc. and its affiliates. * Copyright (c) 2023 Kristóf Marussy * * SPDX-License-Identifier: MIT */ import type { PluginOptions as ClassicThemeOptions } from '@docusaurus/theme-classic'; import type { UserThemeConfig } from '@docusaurus/theme-common'; import type { Config } from '@docusaurus/types'; import { Config as SwcConfig } from '@swc/core'; import smartypants from 'remark-smartypants'; export default { title: 'Kristóf Marussy', url: 'https://marussy.com', baseUrl: '/', staticDirectories: ['third-party/static', 'static'], plugins: [ [ '@docusaurus/plugin-content-pages', { remarkPlugins: [[smartypants, { dashes: 'oldschool' }]], }, ], '@docusaurus/plugin-sitemap', './src/plugins/swcMinifyPlugin.ts', './src/plugins/thirdPartyContentPlugin.ts', ], themes: [ [ '@docusaurus/theme-classic', { customCss: [require.resolve('./src/css/custom.css')], } satisfies ClassicThemeOptions, ], ], onBrokenLinks: 'warn', themeConfig: { colorMode: { respectPrefersColorScheme: true, }, navbar: { title: 'Kristóf Marussy', hideOnScroll: true, items: [ { type: 'dropdown', label: 'About', to: '/', items: [ { label: 'Research', to: '/#research', }, { label: 'Publications', to: '/#publications', }, { label: 'Software', to: '/#software', }, { label: 'Resume', to: '/#resume', }, { label: 'Contact', to: '/#contact', }, ], }, { label: 'CV', to: 'pathname:///cv.pdf', }, ], }, footer: { links: [ { title: 'Pages', items: [ { label: 'About', to: '/', }, ], }, ], copyright: 'Built with ❤︎ and Docusaurus.', }, } satisfies UserThemeConfig, webpack: { // Speed up builds by using a native Javascript loader. // See: https://github.com/facebook/docusaurus/issues/4765#issuecomment-841135926 // But we follow the Docusaurus upstear from // https://github.com/facebook/docusaurus/blob/791da2e4a1a53aa6309887059e3f112fcb35bec4/website/docusaurus.config.ts#L152-L171 // and use swc instead of esbuild. jsLoader: (isServer) => ({ loader: require.resolve('swc-loader'), options: { jsc: { parser: { syntax: 'typescript', tsx: true, }, transform: { react: { runtime: 'automatic', }, }, target: 'es2017', }, module: { type: isServer ? 'commonjs' : 'es6', }, } satisfies SwcConfig, }), }, } satisfies Config;