1
0
Fork 0
freesewing/sites/org/docusaurus.config.mjs

234 lines
8.1 KiB
JavaScript
Raw Normal View History

2024-09-29 18:09:44 +02:00
import { themes as prismThemes } from 'prism-react-renderer'
2025-04-21 18:20:52 +02:00
import { docusaurusPlugins } from './plugins/index.mjs'
import smartypants from 'remark-smartypants'
2024-09-29 18:09:44 +02:00
/*
* We customize the sidebar somewhat:
* - We bundle the options as one page, so keep them out the sidebar
* - We hide certain dynamic pages (like for measurements sets, patterns, and so on)
*/
function customizeSidebar(items) {
// Filter out design options
const docs = items.filter((entry) => entry.label === 'Docs').pop().items
for (const item in docs) {
if (docs[item].label === 'FreeSewing Designs') {
for (const design in docs[item].items) {
for (const subpage in docs[item].items[design].items) {
if (docs[item].items[design].items[subpage].label === 'Design Options') {
docs[item].items[design].items[subpage].items = []
}
}
}
}
if (docs[item].label === 'hidden') {
console.log(docs[item])
}
}
// Filter out submenus in Your Measurements Sets and Your Patterns
for (const item in items) {
if (items[item].label === 'Account') {
for (const design in items[item].items) {
for (const subpage in items[item].items[design].items) {
if (
items[item].items[design].items[subpage].label === 'Your Measurements Sets' ||
items[item].items[design].items[subpage].label === 'Your Patterns'
) {
items[item].items[design].items[subpage].items = []
}
}
}
}
}
return items
}
2024-09-29 18:09:44 +02:00
const config = {
title: 'FreeSewing',
tagline: 'FreeSewing documentation for makers',
favicon: 'img/favicon.ico',
2025-04-21 18:20:52 +02:00
url: 'https://freesewing.eu',
2024-09-29 18:09:44 +02:00
baseUrl: '/',
// Not time to look into this now
onBrokenLinks: 'warn',
2024-09-29 18:09:44 +02:00
onBrokenMarkdownLinks: 'warn',
future: {
experimental_faster: false, // Too many bugs for now
},
2024-09-29 18:09:44 +02:00
plugins: [
2025-04-21 18:20:52 +02:00
...docusaurusPlugins,
[
'@docusaurus/plugin-content-blog',
{
id: 'showcase',
routeBasePath: 'showcase',
path: './showcase',
authorsMapPath: '../authors.json',
postsPerPage: 50,
blogSidebarCount: 10,
blogSidebarTitle: 'Recent Showcases',
},
],
[
'@docusaurus/plugin-content-blog',
{
id: 'newsletter',
routeBasePath: 'newsletter',
path: './newsletter',
authorsMapPath: '../authors.json',
blogTitle: 'FreeSewing Newsletter',
blogDescription: 'Four times per year, honest wholesome content, no ads, no nonsense',
blogSidebarCount: 50,
blogSidebarTitle: 'Newsletter Editions',
postsPerPage: 10,
feedOptions: {
type: 'rss',
title: 'FreeSewing Newsletter Editions',
description: 'A feed for the FreeSewing newsletter',
copyright: 'FreeSewing',
language: 'en',
createFeedItems: async (params) => {
const { blogPosts, defaultCreateFeedItems, ...rest } = params
return defaultCreateFeedItems({
blogPosts: blogPosts.filter((item, index) => index < 10),
...rest,
})
},
},
},
],
2024-09-29 18:09:44 +02:00
],
i18n: { defaultLocale: 'en', locales: ['en'] },
presets: [
[
'classic',
{
docs: {
2025-04-21 18:20:52 +02:00
routeBasePath: '/',
2024-09-29 18:09:44 +02:00
sidebarPath: './sidebars.js',
editUrl: 'https://codeberg.org/freesewing/freesewing/src/branch/develop/sites/org/',
async sidebarItemsGenerator({ defaultSidebarItemsGenerator, ...args }) {
const sidebarItems = await defaultSidebarItemsGenerator(args)
return customizeSidebar(sidebarItems)
},
remarkPlugins: [[smartypants, { dashes: 'oldschool' }]],
2024-09-29 18:09:44 +02:00
},
theme: {
customCss: './src/css/custom.css',
},
blog: {
path: 'blog',
// Simple use-case: string editUrl
editUrl: 'https://codeberg.org/freesewing/freesewing/src/branch/develop/sites/org/',
editLocalizedFiles: false,
blogTitle: 'FreeSewing Blog',
blogDescription: 'News and updates from the people behind FreeSewing',
blogSidebarCount: 5,
blogSidebarTitle: 'Recent blog posts',
routeBasePath: 'blog',
authorsMapPath: '../authors.json',
include: ['*/index.mdx'],
exclude: [
'**/_*.{js,jsx,ts,tsx,md,mdx}',
'**/_*/**',
'**/*.test.{js,jsx,ts,tsx}',
'**/__tests__/**',
],
postsPerPage: 10,
blogListComponent: '@theme/BlogListPage',
blogTagsListComponent: '@theme/BlogTagsListPage',
blogTagsPostsComponent: '@theme/BlogTagsPostsPage',
remarkPlugins: [[smartypants, { dashes: 'oldschool' }]],
truncateMarker: /<!--\s*(truncate)\s*-->/,
showReadingTime: true,
feedOptions: {
type: 'rss',
title: 'FreeSewing Blog Posts',
description: 'News and updates from the people behind FreeSewing',
copyright: 'FreeSewing',
language: 'en',
createFeedItems: async (params) => {
const { blogPosts, defaultCreateFeedItems, ...rest } = params
return defaultCreateFeedItems({
// keep only the 10 most recent blog posts in the feed
blogPosts: blogPosts.filter((item, index) => index < 10),
...rest,
})
},
},
},
2024-09-29 18:09:44 +02:00
},
],
],
themeConfig: {
colorMode: {
// Do not be tempted to change these
disableSwitch: true,
respectPrefersColorScheme: true,
},
2024-09-29 18:09:44 +02:00
image: 'img/freesewing-social-card.png',
navbar: {
title: 'FreeSewing',
logo: {
alt: 'FreeSewing Logo',
src: 'img/logo.svg',
2024-09-29 18:09:44 +02:00
},
items: [
{ type: 'custom-FreeSewingNavbarItem', position: 'left', id: 'designs' },
{ type: 'custom-FreeSewingNavbarItem', position: 'left', id: 'docs' },
{ type: 'custom-FreeSewingNavbarItem', position: 'left', id: 'showcase' },
{ type: 'custom-FreeSewingNavbarItem', position: 'left', id: 'blog' },
{ type: 'custom-FreeSewingNavbarItem', position: 'left', id: 'forum' },
{ type: 'custom-FreeSewingNavbarItem', position: 'right', id: 'account' },
2025-05-31 18:38:32 +02:00
{ type: 'custom-FreeSewingNavbarItem', position: 'right', id: 'support' },
2024-09-29 18:09:44 +02:00
],
},
footer: {
style: 'light',
links: [
{
title: 'Sections',
2024-09-29 18:09:44 +02:00
items: [
{ label: 'FreeSewing Designs', to: '/designs/' },
{ label: 'FreeSewing Showcase', to: '/showcase/' },
{ label: 'FreeSewing Blog', to: '/blog/' },
{ label: 'FreeSewing Editor', to: '/editor/' },
{ label: 'Curated Measurements Sets', to: '/curated-sets/' },
2024-09-29 18:09:44 +02:00
],
},
{
title: 'Help & Support',
items: [
{ label: 'About FreeSewing', to: '/docs/about/' },
{ label: 'Getting Started', to: '/docs/about/guide/' },
{ label: 'Frequently Asked Questions', href: '/docs/about/faq/' },
{ label: 'Documentation', href: '/docs/' },
{ label: 'Need Help?', href: '/support' },
2024-09-29 18:09:44 +02:00
],
},
{
title: 'More',
items: [
{ label: 'FreeSewing.eu', to: 'https://freesewing.eu/' },
{ label: 'FreeSewing.dev', to: 'https://freesewing.dev/' },
{ label: 'FreeSewing.social', to: 'https://freesewing.social/' },
{ label: 'Code on Codeberg', to: 'https://codeberg.org/freesewing/freesewing' },
{ label: 'FreeSewing Revenue Pledge 💜', href: '/docs/about/pledge/' },
2024-09-29 18:09:44 +02:00
],
},
],
copyright: `<a href="https://freesewing.org/">FreeSewing</a> is brought to you by <a href="https://codeberg.org/joostdecock">Joost De Cock</a> and <a href="https://codeberg.org/freesewing/freesewing/src/branch/develop/CONTRIBUTORS.md">contributors</a> with the financial support of <a href="/patrons/join">our patrons</a>`,
2024-09-29 18:09:44 +02:00
},
prism: {
theme: prismThemes.dracula,
darkTheme: prismThemes.dracula,
},
},
}
export default config