From 249d51d1a8f687cd84e02ed57dce638e9c750587 Mon Sep 17 00:00:00 2001 From: Henk Verlinde Date: Mon, 23 Mar 2026 16:48:26 +0100 Subject: [PATCH 01/12] Migrate to Doks 1.9 --- .gitignore | 24 +- .npmignore | 2 + .prettierignore | 12 + .prettierrc.yaml | 19 + .vscode/extensions.json | 3 +- .vscode/launch.json | 11 - .vscode/settings.json | 7 + CHANGELOG.md | 9 - LICENSE | 21 + assets/favicon.png | Bin 0 -> 2276 bytes assets/favicon.svg | 4 + assets/images/.gitkeep | 0 assets/js/custom.js | 44 + assets/scss/common/_custom.scss | 233 + assets/scss/common/_fonts.scss | 24 + assets/scss/common/_variables-custom.scss | 29 + assets/svgs/.gitkeep | 0 astro.config.mjs | 146 - bun.lockb | Bin 237947 -> 0 bytes config/_default/hugo.toml | 103 + config/_default/languages.toml | 32 + config/_default/markup.toml | 38 + config/_default/menus/menus.en.toml | 101 + config/_default/menus/menus.nl.toml | 39 + config/_default/module.toml | 108 + config/_default/params.toml | 146 + config/babel.config.js | 17 + config/next/hugo.toml | 2 + config/postcss.config.js | 61 + config/production/hugo.toml | 2 + content/404.md | 16 + content/_index.md | 14 + content/blog/_index.md | 20 + content/blog/example/index.md | 31 + content/categories/_index.md | 12 + content/contributors/_index.md | 12 + content/docs/_index.md | 20 + content/docs/guides/_index.md | 16 + content/docs/guides/example.md | 23 + content/docs/reference/_index.md | 18 + content/docs/reference/example.md | 22 + content/docs/resources.md | 18 + content/privacy.md | 21 + content/tags/_index.md | 12 + hugo_stats.json | 298 + i18n/de.toml | 51 + i18n/en.toml | 54 + i18n/nl.toml | 51 + .../footer/script-footer-custom.html | 17 + layouts/_partials/head/custom-head.html | 1 + layouts/_partials/head/resource-hints.html | 3 + layouts/_partials/head/script-header.html | 7 + layouts/home.html | 98 + netlify.toml | 62 +- package-lock.json | 5468 +++++++++++++++++ package.json | 49 +- public/cover-docs.png | Bin 706012 -> 0 bytes public/favicon.svg | 5 +- public/logos/alpine-js.svg | 1 - public/logos/appwriteio.svg | 4 - public/logos/astro-image.svg | 3 - public/logos/aws.svg | 1 - public/logos/bootstrap.svg | 1 - public/logos/buddy.svg | 12 - public/logos/builderio.svg | 5 - public/logos/buttercms.svg | 3 - public/logos/cabin.svg | 3 - public/logos/caisy.svg | 8 - public/logos/cleavr.svg | 126 - public/logos/cloudcannon.svg | 4 - public/logos/cloudflare-pages.svg | 4 - public/logos/contentful.svg | 7 - public/logos/cosmic.svg | 14 - public/logos/create-react-app.svg | 1 - public/logos/crystallize.svg | 6 - public/logos/datocms.svg | 1 - public/logos/decap-cms.svg | 5 - public/logos/deno.svg | 1 - public/logos/directus.svg | 3 - public/logos/docker.svg | 5 - public/logos/docusaurus.svg | 31 - public/logos/doks.svg | 1 - public/logos/edgio.svg | 55 - public/logos/eleventy.svg | 3 - public/logos/fathom-analytics.svg | 7 - public/logos/firebase.svg | 1 - public/logos/flightcontrol.svg | 3 - public/logos/frontmatter-cms.svg | 1 - public/logos/gatsby.svg | 4 - public/logos/ghost.png | Bin 23378 -> 0 bytes public/logos/gitbook.svg | 1 - public/logos/github.svg | 1 - public/logos/gitlab.svg | 1 - public/logos/google-analytics.svg | 16 - public/logos/google-cloud.svg | 6 - public/logos/gridsome.svg | 11 - public/logos/heroku.svg | 3 - public/logos/hugo.svg | 14 - public/logos/hygraph.svg | 3 - public/logos/jekyll.png | Bin 10017 -> 0 bytes public/logos/keystatic.svg | 1 - public/logos/keystonejs.svg | 3 - public/logos/kinsta.svg | 3 - public/logos/kontent-ai.svg | 13 - public/logos/lit.svg | 6 - public/logos/markdoc.svg | 5 - public/logos/mdx.svg | 3 - public/logos/microcms.svg | 3 - public/logos/microsoft-azure.svg | 23 - public/logos/netlify.svg | 1 - public/logos/nextjs.svg | 5 - public/logos/node.svg | 3 - public/logos/nuxtjs.svg | 4 - public/logos/partytown.svg | 15 - public/logos/payload.svg | 4 - public/logos/pelican.svg | 11 - public/logos/plausible.svg | 29 - public/logos/preact.svg | 6 - public/logos/prefetch.svg | 3 - public/logos/preprcms.svg | 1 - public/logos/prismic.svg | 3 - public/logos/react.svg | 3 - public/logos/render.svg | 3 - public/logos/sanity.svg | 5 - public/logos/sitemap.svg | 3 - public/logos/solid.svg | 30 - public/logos/space.svg | 6 - public/logos/spinal.svg | 1 - public/logos/sst.svg | 8 - public/logos/statamic.svg | 1 - public/logos/storyblok.svg | 3 - public/logos/strapi.svg | 8 - public/logos/supabase.svg | 15 - public/logos/surge.svg | 39 - public/logos/svelte.svg | 4 - public/logos/sveltekit.svg | 4 - public/logos/tailwind.svg | 9 - public/logos/thulite.svg | 1 - public/logos/tigris.svg | 31 - public/logos/tina-cms.svg | 1 - public/logos/vercel.svg | 1 - public/logos/vue.svg | 5 - public/logos/vuepress.png | Bin 8502 -> 0 bytes public/logos/wordpress.svg | 5 - public/logos/xata.svg | 6 - public/robots.txt | 5 +- src/assets/dark-logo.svg | 3 - src/assets/houston.webp | Bin 98506 -> 0 bytes src/assets/light-logo.svg | 3 - src/components/AnalyticsGuidesNav.astro | 45 - src/components/Badge.astro | 32 - src/components/BrandLogo.astro | 62 - src/components/Button.astro | 171 - src/components/CMSGuidesNav.astro | 45 - src/components/DeployGuidesNav.astro | 45 - src/components/EthicalAds.astro | 45 - src/components/FileTree.astro | 151 - src/components/IntegrationsNav.astro | 60 - src/components/List.astro | 35 - src/components/NavGrid/Card.astro | 90 - src/components/NavGrid/CardsNav.astro | 63 - src/components/NavGrid/Grid.astro | 37 - src/components/TableOfContents.astro | 45 - src/components/ThemesGuidesNav.astro | 45 - src/components/internal/file-tree-icons.ts | 756 --- src/components/internal/rehype-file-tree.ts | 116 - .../starlight/MarkdownContent.astro | 145 - src/content.ts | 19 - src/content/config.ts | 154 - src/content/docs/404.md | 13 - src/content/docs/basics/commands.mdx | 212 - src/content/docs/basics/configuration.mdx | 101 - src/content/docs/basics/layouts.mdx | 66 - src/content/docs/basics/menus.mdx | 54 - src/content/docs/basics/pages.mdx | 83 - src/content/docs/basics/project-structure.mdx | 92 - src/content/docs/concepts/dependencies.md | 54 - src/content/docs/concepts/why-thulite.md | 78 - src/content/docs/contribute.mdx | 4 - src/content/docs/editor-setup.mdx | 56 - src/content/docs/getting-started.mdx | 73 - src/content/docs/guides/analytics.mdx | 15 - .../docs/guides/analytics/cabin-analytics.mdx | 29 - .../guides/analytics/fathom-analytics.mdx | 29 - .../guides/analytics/google-analytics.mdx | 44 - .../guides/analytics/plausible-analytics.mdx | 40 - src/content/docs/guides/archetypes.md | 4 - src/content/docs/guides/cms.mdx | 35 - src/content/docs/guides/cms/cloudcannon.mdx | 17 - src/content/docs/guides/cms/decap-cms.mdx | 73 - src/content/docs/guides/cms/tina-cms.mdx | 125 - src/content/docs/guides/data.md | 4 - src/content/docs/guides/deploy.mdx | 129 - src/content/docs/guides/deploy/cloudflare.mdx | 105 - src/content/docs/guides/deploy/github.mdx | 130 - src/content/docs/guides/deploy/gitlab.mdx | 48 - .../docs/guides/deploy/google-firebase.mdx | 63 - .../docs/guides/deploy/microsoft-azure.mdx | 86 - src/content/docs/guides/deploy/netlify.mdx | 95 - src/content/docs/guides/deploy/render.mdx | 20 - src/content/docs/guides/deploy/vercel.mdx | 50 - src/content/docs/guides/email-obfuscation.mdx | 81 - src/content/docs/guides/fonts.md | 11 - src/content/docs/guides/images.md | 11 - src/content/docs/guides/integrations.mdx | 113 - .../docs/guides/integrations/bolt-core.mdx | 12 - .../docs/guides/integrations/bootstrap.mdx | 57 - src/content/docs/guides/integrations/core.mdx | 94 - .../docs/guides/integrations/doks-core.mdx | 12 - .../docs/guides/integrations/images.mdx | 18 - .../docs/guides/integrations/inline-svg.mdx | 18 - src/content/docs/guides/integrations/seo.mdx | 18 - .../docs/guides/integrations/tailwind.mdx | 12 - .../docs/guides/internationalization.md | 4 - src/content/docs/guides/markdown.md | 11 - src/content/docs/guides/scripts.md | 11 - src/content/docs/guides/static.md | 4 - src/content/docs/guides/styles.md | 11 - src/content/docs/guides/themes.mdx | 12 - src/content/docs/guides/themes/bolt.mdx | 7 - src/content/docs/guides/themes/doks.mdx | 7 - src/content/docs/guides/upgrade-to/v2.mdx | 169 - src/content/docs/index.mdx | 36 - src/content/docs/install/auto.mdx | 182 - src/content/docs/install/manual.mdx | 478 -- src/content/docs/reference/configuration.md | 14 - src/content/docs/reference/frontmatter.md | 14 - src/content/docs/reference/markdown.md | 15 - src/content/docs/upgrade-thulite.mdx | 144 - src/data/logos.ts | 103 - src/env.d.ts | 2 - src/i18n/ar/README.md | 71 - src/i18n/ar/docsearch.ts | 47 - src/i18n/ar/nav.ts | 74 - src/i18n/ar/ui.ts | 127 - src/i18n/bcp-normalize.ts | 12 - src/i18n/de/README.md | 99 - src/i18n/de/docsearch.ts | 48 - src/i18n/de/nav.ts | 74 - src/i18n/de/ui.ts | 129 - src/i18n/en/docsearch.ts | 12 - src/i18n/en/nav.ts | 169 - src/i18n/en/ui.ts | 138 - src/i18n/es/docsearch.ts | 12 - src/i18n/es/nav.ts | 76 - src/i18n/es/ui.ts | 129 - src/i18n/fr/README.md | 63 - src/i18n/fr/docsearch.ts | 47 - src/i18n/fr/nav.ts | 173 - src/i18n/fr/ui.ts | 129 - src/i18n/hi/docsearch.ts | 47 - src/i18n/hi/nav.ts | 77 - src/i18n/hi/ui.ts | 58 - src/i18n/it/README.md | 59 - src/i18n/it/docsearch.ts | 12 - src/i18n/it/nav.ts | 67 - src/i18n/it/ui.ts | 126 - src/i18n/ja/README.md | 47 - src/i18n/ja/docsearch.ts | 12 - src/i18n/ja/nav.ts | 76 - src/i18n/ja/ui.ts | 128 - src/i18n/ko/README.md | 96 - src/i18n/ko/docsearch.ts | 12 - src/i18n/ko/nav.ts | 76 - src/i18n/ko/ui.ts | 129 - src/i18n/languages.ts | 30 - src/i18n/pl/docsearch.ts | 12 - src/i18n/pl/nav.ts | 54 - src/i18n/pl/ui.ts | 106 - src/i18n/pt-br/README.md | 146 - src/i18n/pt-br/docsearch.ts | 12 - src/i18n/pt-br/nav.ts | 66 - src/i18n/pt-br/ui.ts | 128 - src/i18n/ru/docsearch.ts | 5 - src/i18n/ru/nav.ts | 60 - src/i18n/ru/ui.ts | 82 - src/i18n/translation-checkers.ts | 53 - src/i18n/util.ts | 70 - src/i18n/zh-cn/README.md | 188 - src/i18n/zh-cn/docsearch.ts | 47 - src/i18n/zh-cn/nav.ts | 76 - src/i18n/zh-cn/ui.ts | 126 - src/i18n/zh-tw/README.md | 154 - src/i18n/zh-tw/docsearch.ts | 47 - src/i18n/zh-tw/nav.ts | 66 - src/i18n/zh-tw/ui.ts | 126 - src/styles/custom.css | 27 - src/util.ts | 23 - src/util/getPageCategory.ts | 29 - src/util/groupPagesByLang.ts | 12 - src/util/isSubPage.ts | 50 - static/apple-touch-icon.png | Bin 0 -> 1525 bytes static/cover.png | Bin 0 -> 4805 bytes static/favicon.ico | Bin 0 -> 15406 bytes static/icon.svg | 4 + tsconfig.json | 13 - 296 files changed, 7415 insertions(+), 11301 deletions(-) create mode 100644 .npmignore create mode 100644 .prettierignore create mode 100644 .prettierrc.yaml delete mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json delete mode 100644 CHANGELOG.md create mode 100644 LICENSE create mode 100644 assets/favicon.png create mode 100644 assets/favicon.svg create mode 100644 assets/images/.gitkeep create mode 100644 assets/js/custom.js create mode 100644 assets/scss/common/_custom.scss create mode 100644 assets/scss/common/_fonts.scss create mode 100644 assets/scss/common/_variables-custom.scss create mode 100644 assets/svgs/.gitkeep delete mode 100644 astro.config.mjs delete mode 100644 bun.lockb create mode 100644 config/_default/hugo.toml create mode 100644 config/_default/languages.toml create mode 100644 config/_default/markup.toml create mode 100644 config/_default/menus/menus.en.toml create mode 100644 config/_default/menus/menus.nl.toml create mode 100644 config/_default/module.toml create mode 100644 config/_default/params.toml create mode 100644 config/babel.config.js create mode 100644 config/next/hugo.toml create mode 100644 config/postcss.config.js create mode 100644 config/production/hugo.toml create mode 100644 content/404.md create mode 100644 content/_index.md create mode 100644 content/blog/_index.md create mode 100644 content/blog/example/index.md create mode 100644 content/categories/_index.md create mode 100644 content/contributors/_index.md create mode 100644 content/docs/_index.md create mode 100644 content/docs/guides/_index.md create mode 100644 content/docs/guides/example.md create mode 100644 content/docs/reference/_index.md create mode 100644 content/docs/reference/example.md create mode 100644 content/docs/resources.md create mode 100644 content/privacy.md create mode 100644 content/tags/_index.md create mode 100644 hugo_stats.json create mode 100644 i18n/de.toml create mode 100644 i18n/en.toml create mode 100644 i18n/nl.toml create mode 100644 layouts/_partials/footer/script-footer-custom.html create mode 100644 layouts/_partials/head/custom-head.html create mode 100644 layouts/_partials/head/resource-hints.html create mode 100644 layouts/_partials/head/script-header.html create mode 100644 layouts/home.html create mode 100644 package-lock.json delete mode 100644 public/cover-docs.png delete mode 100644 public/logos/alpine-js.svg delete mode 100644 public/logos/appwriteio.svg delete mode 100644 public/logos/astro-image.svg delete mode 100644 public/logos/aws.svg delete mode 100644 public/logos/bootstrap.svg delete mode 100644 public/logos/buddy.svg delete mode 100644 public/logos/builderio.svg delete mode 100644 public/logos/buttercms.svg delete mode 100644 public/logos/cabin.svg delete mode 100644 public/logos/caisy.svg delete mode 100644 public/logos/cleavr.svg delete mode 100644 public/logos/cloudcannon.svg delete mode 100644 public/logos/cloudflare-pages.svg delete mode 100644 public/logos/contentful.svg delete mode 100644 public/logos/cosmic.svg delete mode 100644 public/logos/create-react-app.svg delete mode 100644 public/logos/crystallize.svg delete mode 100644 public/logos/datocms.svg delete mode 100644 public/logos/decap-cms.svg delete mode 100644 public/logos/deno.svg delete mode 100644 public/logos/directus.svg delete mode 100644 public/logos/docker.svg delete mode 100644 public/logos/docusaurus.svg delete mode 100644 public/logos/doks.svg delete mode 100644 public/logos/edgio.svg delete mode 100644 public/logos/eleventy.svg delete mode 100644 public/logos/fathom-analytics.svg delete mode 100644 public/logos/firebase.svg delete mode 100644 public/logos/flightcontrol.svg delete mode 100644 public/logos/frontmatter-cms.svg delete mode 100644 public/logos/gatsby.svg delete mode 100644 public/logos/ghost.png delete mode 100644 public/logos/gitbook.svg delete mode 100644 public/logos/github.svg delete mode 100644 public/logos/gitlab.svg delete mode 100644 public/logos/google-analytics.svg delete mode 100644 public/logos/google-cloud.svg delete mode 100644 public/logos/gridsome.svg delete mode 100644 public/logos/heroku.svg delete mode 100644 public/logos/hugo.svg delete mode 100644 public/logos/hygraph.svg delete mode 100644 public/logos/jekyll.png delete mode 100644 public/logos/keystatic.svg delete mode 100644 public/logos/keystonejs.svg delete mode 100644 public/logos/kinsta.svg delete mode 100644 public/logos/kontent-ai.svg delete mode 100644 public/logos/lit.svg delete mode 100644 public/logos/markdoc.svg delete mode 100644 public/logos/mdx.svg delete mode 100644 public/logos/microcms.svg delete mode 100644 public/logos/microsoft-azure.svg delete mode 100644 public/logos/netlify.svg delete mode 100644 public/logos/nextjs.svg delete mode 100644 public/logos/node.svg delete mode 100644 public/logos/nuxtjs.svg delete mode 100644 public/logos/partytown.svg delete mode 100644 public/logos/payload.svg delete mode 100644 public/logos/pelican.svg delete mode 100644 public/logos/plausible.svg delete mode 100644 public/logos/preact.svg delete mode 100644 public/logos/prefetch.svg delete mode 100644 public/logos/preprcms.svg delete mode 100644 public/logos/prismic.svg delete mode 100644 public/logos/react.svg delete mode 100644 public/logos/render.svg delete mode 100644 public/logos/sanity.svg delete mode 100644 public/logos/sitemap.svg delete mode 100644 public/logos/solid.svg delete mode 100644 public/logos/space.svg delete mode 100644 public/logos/spinal.svg delete mode 100644 public/logos/sst.svg delete mode 100644 public/logos/statamic.svg delete mode 100644 public/logos/storyblok.svg delete mode 100644 public/logos/strapi.svg delete mode 100644 public/logos/supabase.svg delete mode 100644 public/logos/surge.svg delete mode 100644 public/logos/svelte.svg delete mode 100644 public/logos/sveltekit.svg delete mode 100644 public/logos/tailwind.svg delete mode 100644 public/logos/thulite.svg delete mode 100644 public/logos/tigris.svg delete mode 100644 public/logos/tina-cms.svg delete mode 100644 public/logos/vercel.svg delete mode 100644 public/logos/vue.svg delete mode 100644 public/logos/vuepress.png delete mode 100644 public/logos/wordpress.svg delete mode 100644 public/logos/xata.svg delete mode 100644 src/assets/dark-logo.svg delete mode 100644 src/assets/houston.webp delete mode 100644 src/assets/light-logo.svg delete mode 100644 src/components/AnalyticsGuidesNav.astro delete mode 100644 src/components/Badge.astro delete mode 100644 src/components/BrandLogo.astro delete mode 100644 src/components/Button.astro delete mode 100644 src/components/CMSGuidesNav.astro delete mode 100644 src/components/DeployGuidesNav.astro delete mode 100644 src/components/EthicalAds.astro delete mode 100644 src/components/FileTree.astro delete mode 100644 src/components/IntegrationsNav.astro delete mode 100644 src/components/List.astro delete mode 100644 src/components/NavGrid/Card.astro delete mode 100644 src/components/NavGrid/CardsNav.astro delete mode 100644 src/components/NavGrid/Grid.astro delete mode 100644 src/components/TableOfContents.astro delete mode 100644 src/components/ThemesGuidesNav.astro delete mode 100644 src/components/internal/file-tree-icons.ts delete mode 100644 src/components/internal/rehype-file-tree.ts delete mode 100644 src/components/starlight/MarkdownContent.astro delete mode 100644 src/content.ts delete mode 100644 src/content/config.ts delete mode 100644 src/content/docs/404.md delete mode 100644 src/content/docs/basics/commands.mdx delete mode 100644 src/content/docs/basics/configuration.mdx delete mode 100644 src/content/docs/basics/layouts.mdx delete mode 100644 src/content/docs/basics/menus.mdx delete mode 100644 src/content/docs/basics/pages.mdx delete mode 100644 src/content/docs/basics/project-structure.mdx delete mode 100644 src/content/docs/concepts/dependencies.md delete mode 100644 src/content/docs/concepts/why-thulite.md delete mode 100644 src/content/docs/contribute.mdx delete mode 100644 src/content/docs/editor-setup.mdx delete mode 100644 src/content/docs/getting-started.mdx delete mode 100644 src/content/docs/guides/analytics.mdx delete mode 100644 src/content/docs/guides/analytics/cabin-analytics.mdx delete mode 100644 src/content/docs/guides/analytics/fathom-analytics.mdx delete mode 100644 src/content/docs/guides/analytics/google-analytics.mdx delete mode 100644 src/content/docs/guides/analytics/plausible-analytics.mdx delete mode 100644 src/content/docs/guides/archetypes.md delete mode 100644 src/content/docs/guides/cms.mdx delete mode 100644 src/content/docs/guides/cms/cloudcannon.mdx delete mode 100644 src/content/docs/guides/cms/decap-cms.mdx delete mode 100644 src/content/docs/guides/cms/tina-cms.mdx delete mode 100644 src/content/docs/guides/data.md delete mode 100644 src/content/docs/guides/deploy.mdx delete mode 100644 src/content/docs/guides/deploy/cloudflare.mdx delete mode 100644 src/content/docs/guides/deploy/github.mdx delete mode 100644 src/content/docs/guides/deploy/gitlab.mdx delete mode 100644 src/content/docs/guides/deploy/google-firebase.mdx delete mode 100644 src/content/docs/guides/deploy/microsoft-azure.mdx delete mode 100644 src/content/docs/guides/deploy/netlify.mdx delete mode 100644 src/content/docs/guides/deploy/render.mdx delete mode 100644 src/content/docs/guides/deploy/vercel.mdx delete mode 100644 src/content/docs/guides/email-obfuscation.mdx delete mode 100644 src/content/docs/guides/fonts.md delete mode 100644 src/content/docs/guides/images.md delete mode 100644 src/content/docs/guides/integrations.mdx delete mode 100644 src/content/docs/guides/integrations/bolt-core.mdx delete mode 100644 src/content/docs/guides/integrations/bootstrap.mdx delete mode 100644 src/content/docs/guides/integrations/core.mdx delete mode 100644 src/content/docs/guides/integrations/doks-core.mdx delete mode 100644 src/content/docs/guides/integrations/images.mdx delete mode 100644 src/content/docs/guides/integrations/inline-svg.mdx delete mode 100644 src/content/docs/guides/integrations/seo.mdx delete mode 100644 src/content/docs/guides/integrations/tailwind.mdx delete mode 100644 src/content/docs/guides/internationalization.md delete mode 100644 src/content/docs/guides/markdown.md delete mode 100644 src/content/docs/guides/scripts.md delete mode 100644 src/content/docs/guides/static.md delete mode 100644 src/content/docs/guides/styles.md delete mode 100644 src/content/docs/guides/themes.mdx delete mode 100644 src/content/docs/guides/themes/bolt.mdx delete mode 100644 src/content/docs/guides/themes/doks.mdx delete mode 100644 src/content/docs/guides/upgrade-to/v2.mdx delete mode 100644 src/content/docs/index.mdx delete mode 100644 src/content/docs/install/auto.mdx delete mode 100644 src/content/docs/install/manual.mdx delete mode 100644 src/content/docs/reference/configuration.md delete mode 100644 src/content/docs/reference/frontmatter.md delete mode 100644 src/content/docs/reference/markdown.md delete mode 100644 src/content/docs/upgrade-thulite.mdx delete mode 100644 src/data/logos.ts delete mode 100644 src/env.d.ts delete mode 100644 src/i18n/ar/README.md delete mode 100644 src/i18n/ar/docsearch.ts delete mode 100644 src/i18n/ar/nav.ts delete mode 100644 src/i18n/ar/ui.ts delete mode 100644 src/i18n/bcp-normalize.ts delete mode 100644 src/i18n/de/README.md delete mode 100644 src/i18n/de/docsearch.ts delete mode 100644 src/i18n/de/nav.ts delete mode 100644 src/i18n/de/ui.ts delete mode 100644 src/i18n/en/docsearch.ts delete mode 100644 src/i18n/en/nav.ts delete mode 100644 src/i18n/en/ui.ts delete mode 100644 src/i18n/es/docsearch.ts delete mode 100644 src/i18n/es/nav.ts delete mode 100644 src/i18n/es/ui.ts delete mode 100644 src/i18n/fr/README.md delete mode 100644 src/i18n/fr/docsearch.ts delete mode 100644 src/i18n/fr/nav.ts delete mode 100644 src/i18n/fr/ui.ts delete mode 100644 src/i18n/hi/docsearch.ts delete mode 100644 src/i18n/hi/nav.ts delete mode 100644 src/i18n/hi/ui.ts delete mode 100644 src/i18n/it/README.md delete mode 100644 src/i18n/it/docsearch.ts delete mode 100644 src/i18n/it/nav.ts delete mode 100644 src/i18n/it/ui.ts delete mode 100644 src/i18n/ja/README.md delete mode 100644 src/i18n/ja/docsearch.ts delete mode 100644 src/i18n/ja/nav.ts delete mode 100644 src/i18n/ja/ui.ts delete mode 100644 src/i18n/ko/README.md delete mode 100644 src/i18n/ko/docsearch.ts delete mode 100644 src/i18n/ko/nav.ts delete mode 100644 src/i18n/ko/ui.ts delete mode 100644 src/i18n/languages.ts delete mode 100644 src/i18n/pl/docsearch.ts delete mode 100644 src/i18n/pl/nav.ts delete mode 100644 src/i18n/pl/ui.ts delete mode 100644 src/i18n/pt-br/README.md delete mode 100644 src/i18n/pt-br/docsearch.ts delete mode 100644 src/i18n/pt-br/nav.ts delete mode 100644 src/i18n/pt-br/ui.ts delete mode 100644 src/i18n/ru/docsearch.ts delete mode 100644 src/i18n/ru/nav.ts delete mode 100644 src/i18n/ru/ui.ts delete mode 100644 src/i18n/translation-checkers.ts delete mode 100644 src/i18n/util.ts delete mode 100644 src/i18n/zh-cn/README.md delete mode 100644 src/i18n/zh-cn/docsearch.ts delete mode 100644 src/i18n/zh-cn/nav.ts delete mode 100644 src/i18n/zh-cn/ui.ts delete mode 100644 src/i18n/zh-tw/README.md delete mode 100644 src/i18n/zh-tw/docsearch.ts delete mode 100644 src/i18n/zh-tw/nav.ts delete mode 100644 src/i18n/zh-tw/ui.ts delete mode 100644 src/styles/custom.css delete mode 100644 src/util.ts delete mode 100644 src/util/getPageCategory.ts delete mode 100644 src/util/groupPagesByLang.ts delete mode 100644 src/util/isSubPage.ts create mode 100644 static/apple-touch-icon.png create mode 100644 static/cover.png create mode 100644 static/favicon.ico create mode 100644 static/icon.svg delete mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index aa210b113..ba354d25a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1,6 @@ -# build output -dist/ -# generated types -.astro/ - -# dependencies -node_modules/ - -# logs -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* - -# environment variables .env -.env.production - -# macOS-specific files -.DS_Store +.netlify +.hugo_build.lock +node_modules +public +resources diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..f9b6220d1 --- /dev/null +++ b/.npmignore @@ -0,0 +1,2 @@ +!.npmrc +!.gitignore \ No newline at end of file diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 000000000..d09288bd9 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,12 @@ +*.html +*.ico +*.png +*.jp*g +*.toml +*.*ignore +*.svg +*.xml +LICENSE +.npmrc +.gitkeep +*.woff* diff --git a/.prettierrc.yaml b/.prettierrc.yaml new file mode 100644 index 000000000..f99840602 --- /dev/null +++ b/.prettierrc.yaml @@ -0,0 +1,19 @@ +# Default config +tabWidth: 4 +endOfLine: crlf +singleQuote: true +printWidth: 100000 +trailingComma: none +bracketSameLine: true +quoteProps: consistent +experimentalTernaries: true + +# Overrided config +overrides: + - files: ["*.md", "*.json", "*.yaml"] + options: + tabWidth: 2 + singleQuote: false + - files: ["*.scss"] + options: + singleQuote: false diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 22a15055d..4c33c0dd9 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,4 +1,3 @@ { - "recommendations": ["astro-build.astro-vscode"], - "unwantedRecommendations": [] + "recommendations": ["budparr.language-hugo-vscode", "yzhang.markdown-all-in-one", "tamasfe.even-better-toml", "dbaeumer.vscode-eslint", "DavidAnson.vscode-markdownlint", "stylelint.vscode-stylelint"] } diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index d64220976..000000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "command": "./node_modules/.bin/astro dev", - "name": "Development server", - "request": "launch", - "type": "node-terminal" - } - ] -} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..b0d1a53d2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "editor.wordWrap": "off", + "files.trimTrailingWhitespace": true, + "files.insertFinalNewline": true, + "editor.tabSize": 2, + "editor.insertSpaces": true +} diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index c56c6988e..000000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,9 +0,0 @@ -# docs - -## 0.2.0 - -### Minor Changes - -- [#10](https://github.com/thuliteio/docs/pull/10) [`09337f8`](https://github.com/thuliteio/docs/commit/09337f84014f2d201d0f73587a3e68aa1a931efc) Thanks [@h-enk](https://github.com/h-enk)! - Update for migration from Hyas to Thulite - -- [#8](https://github.com/thuliteio/docs/pull/8) [`9fd7b7c`](https://github.com/thuliteio/docs/commit/9fd7b7c6dbe29c2da0da3c55e1f29e58a96b4d81) Thanks [@h-enk](https://github.com/h-enk)! - Update for Thulite diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..d8ca175ac --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020-2026 Thulite + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..9227095eb133286db976d8c9b8825ad444f6fb02 GIT binary patch literal 2276 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4Yzkn2Hfk$L90|U1(2s1Lwnj--e zWGoJHcVbv~PUa<$!;&U>cv7h@-A}a#}N2RBWV@L(#+Z%zo&W-{H4)}iMxbyM& z4v`?PzpJKHu(dwDZu#7n!Qs?-1_n!@eN8MtBRGNjgcukER2Uc(JQx@pCNMBGC@?ZG zIF2fybvRrwUh?)GgYWly3r{l+mq1^T{($>VHT%EQ@Azu0*hkaYXjU36QU + + + diff --git a/assets/images/.gitkeep b/assets/images/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/assets/js/custom.js b/assets/js/custom.js new file mode 100644 index 000000000..826d5687d --- /dev/null +++ b/assets/js/custom.js @@ -0,0 +1,44 @@ +// Homepage FAQ accordion: keep only one
open at a time. +document.addEventListener("DOMContentLoaded", () => { + const body = document.body; + + if (!body.classList.contains("home")) { + return; + } + + const faqDetails = document.querySelectorAll(".section-footer details"); + + if (!faqDetails.length) { + return; + } + + let hasOpenDetail = false; + faqDetails.forEach((detail) => { + if (!detail.hasAttribute("open")) { + return; + } + + if (!hasOpenDetail) { + hasOpenDetail = true; + return; + } + + detail.open = false; + detail.removeAttribute("open"); + }); + + faqDetails.forEach((detail) => { + detail.addEventListener("toggle", () => { + if (!detail.open) { + return; + } + + faqDetails.forEach((otherDetail) => { + if (otherDetail !== detail) { + otherDetail.open = false; + otherDetail.removeAttribute("open"); + } + }); + }); + }); +}); diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss new file mode 100644 index 000000000..3a91cc8b1 --- /dev/null +++ b/assets/scss/common/_custom.scss @@ -0,0 +1,233 @@ +// Put your custom SCSS code here +.home .sticky-top { + position: relative; +} + +.home .navbar { + background-color: transparent; + + /* + &::after { + content: ''; + position: absolute; + inset: 0; + backdrop-filter: blur(16px); + z-index: -1; + } + */ +} + +.home .border-top { + border-top: 1px solid $gray-200 !important; +} + +@include color-mode(dark) { + .home .border-top { + border-top: 1px solid $border-dark !important; + } +} + +.page-wash { + pointer-events: none; + z-index: -1; + position: absolute; + inset: 0 0 auto 0; + height: 720px; + max-height: 100vh; + background-image: + url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.15' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.12'/%3E%3C/svg%3E"), + linear-gradient(to bottom, oklch(from var(--bs-primary) l c h / 0.08) 0%, oklch(from var(--bs-primary) l c h / 0.05) 16%, transparent 58%), + radial-gradient(54% 36% at 50% 0%, oklch(from var(--bs-primary) calc(l + 0.02) c h / 0.18) 0%, oklch(from var(--bs-primary) l c h / 0.1) 36%, transparent 78%); + background-size: 280px 280px, 100% auto, #{"min(1100px, 100%)"} 540px; + background-position: left top, center top, center top; + background-repeat: repeat, no-repeat, no-repeat; + -webkit-mask-image: linear-gradient(to bottom, black 0%, black 52%, transparent 100%); + mask-image: linear-gradient(to bottom, black 0%, black 52%, transparent 100%); +} + +.section-header { + padding: 3rem 0; + + .header-content { + padding-top: 2rem; + } +} + +.section-main { + padding: 1rem 0; + + .row { + margin: 1rem 0; + } + + .col-lg-5 { + display: flex; + + .card { + margin: 0; + padding: 0.75rem; + height: 100%; + width: 100%; + + h3 { + margin-top: 0 + } + + p { + margin-bottom: 0; + } + } + } +} + +.section-prefooter { + padding: 3rem 0 5rem; +} + +.section-footer { + padding: 1rem 0 3rem; +} + +.home .btn-lg { + font-size: 1.125rem; +} + +@include media-breakpoint-up(lg) { + .section-header { + padding: 5rem 0; + + .header-content { + padding-top: 3rem; + } + } + + .section-main { + padding: 3rem 0; + } + + .section-prefooter { + padding: 5rem; + } + + .section-footer { + padding: 3rem 0; + } + + .home .btn-lg { + font-size: 1.1875rem; + } +} + +.btn-toggle { + text-transform: none; +} + +.docs-links h3, +.docs-links .h3, +.page-links h3, +.page-links .h3 { + text-transform: none; +} + +.section-cards { + .card { + margin: 0; + padding: 1rem; + height: 100%; + } + + .card-title { + margin-top: 0; + } +} + +@include media-breakpoint-up(lg) { + .section-cards .col-lg-7:nth-child(2n) .card { + margin-top: 3rem; + margin-bottom: -3rem; + } +} + +.content dl dt { + margin-bottom: 0.5rem; + margin-top: 1.5rem; +} + +.content dl dd { + margin-bottom: 1rem; + margin-left: 1rem; +} + +.navbar-brand { + font-family: $font-family-monospace; + font-weight: $headings-font-weight; + margin-right: auto; +} + +@include color-mode(dark) { + .navbar-brand { + color: $white; + } +} + +.link--text { + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.15em; + + &:hover, + &:focus, + &:active { + color: $link-color; + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.15em; + } + +} + +@include color-mode(dark) { + .link--text { + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.15em; + + &:hover, + &:focus, + &:active { + color: $link-color-dark; + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.15em; + } + + } +} + +.home .footer { + border-top: 0; +} + +.footer .text-muted { + &:hover, + &:focus, + &:active { + text-decoration: underline; + text-decoration-thickness: 1px; + text-underline-offset: 0.15em; + } +} + +.expressive-code pre > code { + font-family: $font-family-monospace; +} + +.icon-link { + display: inline-flex; + // gap: 0.375rem; + gap: 0.25rem; + align-items: center; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-underline-offset: 0.25em; + backface-visibility: hidden; +} diff --git a/assets/scss/common/_fonts.scss b/assets/scss/common/_fonts.scss new file mode 100644 index 000000000..4a4cbc360 --- /dev/null +++ b/assets/scss/common/_fonts.scss @@ -0,0 +1,24 @@ +// Font declarations for the project +// This file contains @font-face rules for loading custom fonts + +/* geist-mono-latin-wght-normal */ +@font-face { + font-family: "Geist Mono Variable"; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(fonts/geist-mono/files/geist-mono-latin-wght-normal.woff2) format("woff2-variations"); + unicode-range: + U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, + U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} + +/* geist-latin-wght-normal */ +@font-face { + font-family: "Geist Variable"; + font-style: normal; + font-display: swap; + font-weight: 100 900; + src: url(fonts/geist/files/geist-latin-wght-normal.woff2) format('woff2-variations'); + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; +} diff --git a/assets/scss/common/_variables-custom.scss b/assets/scss/common/_variables-custom.scss new file mode 100644 index 000000000..6920b9793 --- /dev/null +++ b/assets/scss/common/_variables-custom.scss @@ -0,0 +1,29 @@ +// Put your custom (S)CSS variables here + +// Quickly modify global styling by enabling or disabling optional features. + +$enable-responsive-font-sizes: true; + +// Prefix for :root CSS variables +$variable-prefix: bs-; + +// scss-docs-start font-variables +// stylelint-disable +$font-family-sans-serif: "Geist Variable", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +$font-family-monospace:"Geist Mono Variable", SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +// stylelint-enable +$font-family-base: var(--#{$variable-prefix}font-sans-serif); +$font-family-code: var(--#{$variable-prefix}font-monospace); +$font-size-base: 1rem; // Assumes the browser default, typically `16px` +$font-size-md: $font-size-base * 1.125; +$font-size-xl: $font-size-base * 1.375; +$font-size-lg: $font-size-base * 1.25; +$font-size-md: $font-size-base * 1.125; +$font-size-sm: $font-size-base * 0.875; +$font-weight-light: 300; +$font-weight-normal: 400; +$font-weight-base: $font-weight-normal; +$line-height-base: 1.6; +$headings-font-family: $font-family-monospace; +$headings-font-weight: 300; +$headings-line-height: 1.25; diff --git a/assets/svgs/.gitkeep b/assets/svgs/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/astro.config.mjs b/astro.config.mjs deleted file mode 100644 index 1f0d211c1..000000000 --- a/astro.config.mjs +++ /dev/null @@ -1,146 +0,0 @@ -import { defineConfig } from 'astro/config'; -import starlight from '@astrojs/starlight'; -import starlightDocSearch from '@astrojs/starlight-docsearch'; - -// https://astro.build/config -export default defineConfig({ - redirects: { - '/': { - status: 301, - destination: '/getting-started/', - }, - }, - site: 'https://docs.thulite.io/', - integrations: [starlight({ - head: [ - { - tag: 'meta', - attrs: { - property: 'og:image', - content: 'https://docs.thulite.io/cover-docs.png', - }, - }, - { - tag: 'meta', - attrs: { - name: 'twitter:image', - content: 'https://docs.thulite.io/cover-docs.png', - }, - }, - { - tag: 'script', - attrs: { - src: 'https://plausible.io/js/script.js', - 'data-domain': 'docs.thulite.io', - defer: true, - }, - }, - ], - title: 'Thulite Docs', - description: 'Node.js web framework designed for speed and security. Build the website you want with integrations, and deploy everywhere, all powered by Hugo and npm.', - components: { - MarkdownContent: './src/components/starlight/MarkdownContent.astro', - TableOfContents: './src/components/TableOfContents.astro', - }, - plugins: [ - starlightDocSearch({ - appId: '70H5139H21', - apiKey: '401f8b545478ebe52faeeeb6cf77cefc', - indexName: 'thulite', - }), - ], - logo: { - light: './src/assets/light-logo.svg', - dark: './src/assets/dark-logo.svg', - alt: 'Thulite', - replacesTitle: true, - }, - editLink: { - baseUrl: 'https://github.com/thuliteio/docs/edit/main/', - }, - sidebar: [ - { - label: 'Start Here', - items: [ - { label: 'Getting Started', link: '/getting-started/'}, - { label: 'Installation', link: '/install/auto/' }, - { label: 'Editor Setup', link: '/editor-setup/' }, - { label: 'Upgrade Thulite', link: '/upgrade-thulite/' }, - ], - }, - { - label: 'Concepts', - autogenerate: { directory: 'concepts' }, - }, - { - label: 'Basics', - autogenerate: { directory: 'basics' }, - }, - { - label: 'Built-ins', - collapsed: true, - items: [ - { label: 'Archetypes', link: '/guides/archetypes/' }, - { label: 'Data', link: '/guides/data/' }, - { label: 'Internationalization', link: '/guides/internationalization/' }, - { label: 'Static', link: '/guides/static/' }, - ], - }, - { - label: 'Add-ons', - items: [ - { label: 'Add integrations', link: '/guides/integrations/' }, - { label: 'Add a theme', link: '/guides/themes/' }, - { label: 'Email obfuscation', link: '/guides/email-obfuscation/' }, - ], - }, - { - label: 'Recipes', - items: [ - { label: 'Add analytics', link: '/guides/analytics/' }, - { label: 'Connect a CMS', link: '/guides/cms/' }, - { label: 'Deploy your site', link: '/guides/deploy/' }, - ], - }, - { - label: 'Guides', - items: [ - { label: 'Markdown', link: '/guides/markdown/' }, - { label: 'CSS & Styling', link: '/guides/styles/' }, - { label: 'JavaScript', link: '/guides/scripts/' }, - { label: 'Images', link: '/guides/images/' }, - { label: 'Fonts', link: '/guides/fonts/' }, - ], - }, - { - label: 'Reference', - collapsed: true, - items: [ - { label: 'Configuration', link: '/reference/configuration/' }, - { label: 'Frontmatter', link: '/reference/frontmatter/' }, - { label: 'Markdown', link: '/reference/markdown/' }, - ], - }, - ], - social: { - openCollective: 'https://opencollective.com/thulite', - github: 'https://github.com/thuliteio', - 'x.com': 'https://x.com/thuliteio', - mastodon: 'https://fosstodon.org/@thulite', - }, - customCss: [ - // Relative path to your custom CSS file - './src/styles/custom.css', - ], - lastUpdated: true, - favicon: '/favicon.svg', - titleDelimiter: '—', - }) - ], - // Process images with sharp: https://docs.astro.build/en/guides/assets/#using-sharp - image: { - service: { - entrypoint: 'astro/assets/services/sharp' - } - } -}); diff --git a/bun.lockb b/bun.lockb deleted file mode 100644 index 39d83b93cfc500fd655a9b9de93092677850f261..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 237947 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
  • ?e7XnU(WYG^}{ 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 DH^6P! diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml new file mode 100644 index 000000000..e22b9369f --- /dev/null +++ b/config/_default/hugo.toml @@ -0,0 +1,103 @@ +title = "Thulite" +baseurl = "http://localhost/" +disableAliases = true +disableHugoGeneratorInject = true +# disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +rssLimit = 10 +summarylength = 20 # 70 (default) + +# Multilingual +defaultContentLanguage = "en" +disableLanguages = ["de", "nl"] +defaultContentLanguageInSubdir = false + +copyRight = "Copyright (c) 2020-2026 Thulite" + +[build.buildStats] + enable = true + +[outputs] + home = ["html", "rss", "sitemap", "searchIndex", "llms"] + page = ["html", "markdown"] + section = ["html", "rss", "sitemap"] + taxonomy = ["html", "rss", "sitemap"] + term = ["html", "rss", "sitemap"] + +[outputFormats.searchIndex] + mediaType = "application/json" + baseName = "search-index" + isPlainText = true + notAlternative = true + +[outputFormats.markdown] + baseName = "index" + isHTML = false + isPlainText = true + mediaType = "text/markdown" + +[outputFormats.llms] + baseName = "llms" + isHTML = false + isPlainText = true + mediaType = "text/plain" + +# Add output format for section sitemap.xml +[outputFormats.sitemap] + mediaType = "application/xml" + baseName = "sitemap" + isHTML = false + isPlainText = true + noUgly = true + rel = "sitemap" + +[sitemap] + changefreq = "monthly" + filename = "sitemap.xml" + priority = 0.5 + +[caches] + [caches.getresource] + dir = ":cacheDir/:project" + maxAge = -1 # "30m" + +[taxonomies] + contributor = "contributors" + category = "categories" + tag = "tags" + +[permalinks] + blog = "/blog/:slug/" + docs = "/docs/:sections[1:]/:slug/" +# docs = "/docs/1.0/:sections[1:]/:slug/" + +[minify.tdewolff.html] + keepComments = true # If set to false, build signatures are removed + keepWhitespace = false + +[pagination] + pagerSize = 10 + +[related] + threshold = 80 + includeNewer = true + toLower = false + [[related.indices]] + name = "categories" + weight = 100 + [[related.indices]] + name = "tags" + weight = 80 + [[related.indices]] + name = "date" + weight = 10 + +[imaging] + anchor = "Center" + bgColor = "#ffffff" + hint = "photo" + quality = 85 + resampleFilter = "Lanczos" diff --git a/config/_default/languages.toml b/config/_default/languages.toml new file mode 100644 index 000000000..23667cddd --- /dev/null +++ b/config/_default/languages.toml @@ -0,0 +1,32 @@ +[en] + languageName = "English" + contentDir = "content/en" + weight = 10 + [en.params] + languageISO = "EN" + languageTag = "en-US" + footer = 'Brought to you by Thulite' + alertText = 'Doks version 1.0 just shipped!' + +[de] + languageName = "German" + contentDir = "content/de" + weight = 15 + [de.params] + languageISO = "DE" + languageTag = "de-DE" + footer = 'Gebaut mit Thulite' + alertText = 'Neue Version ist da! Doks v0.5' + +[nl] + languageName = "Nederlands" + contentDir = "content/nl" + weight = 20 + [nl.params] + languageISO = "NL" + languageTag = "nl-NL" + titleAddition = "Modern documentatie-thema" + description = "Doks is een Hugo-thema waarmee je moderne documentatie-websites kunt bouwen die veilig, snel en klaar voor SEO zijn — standaard." + titleHome = "Doks thema" + footer = 'Mogelijk gemaakt door Netlify, Hugo, en Doks' + alertText = 'Introductie van het Doks-kinderthema, verschillende DX + UX-updates en meer! Bekijk Doks v0.2' diff --git a/config/_default/markup.toml b/config/_default/markup.toml new file mode 100644 index 000000000..fa2d8a110 --- /dev/null +++ b/config/_default/markup.toml @@ -0,0 +1,38 @@ +defaultMarkdownHandler = "goldmark" + +[goldmark] + [goldmark.extensions] + linkify = false + [goldmark.extensions.passthrough] + enable = true + [goldmark.extensions.passthrough.delimiters] + block = [['\[', '\]'], ['$$', '$$']] + inline = [['\(', '\)']] + [goldmark.parser] + autoHeadingID = true + autoHeadingIDType = "github" + [goldmark.parser.attribute] + block = true + title = true + [goldmark.renderer] + unsafe = true + +[highlight] + anchorLineNos = false + codeFences = true + guessSyntax = false + hl_Lines = '' + hl_inline = false + lineAnchors = '' + lineNoStart = 1 + lineNos = false + lineNumbersInTable = false + noClasses = false + noHl = false + style = 'monokai' + tabWidth = 2 + +[tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 diff --git a/config/_default/menus/menus.en.toml b/config/_default/menus/menus.en.toml new file mode 100644 index 000000000..954a9f531 --- /dev/null +++ b/config/_default/menus/menus.en.toml @@ -0,0 +1,101 @@ +# [[docs]] +# name = "Prologue" +# weight = 10 +# identifier = "prologue" +# url = "/docs/prologue/" + +# [[docs]] +# name = "Help" +# weight = 60 +# identifier = "help" +# url = "/docs/help/" + +# [[docs]] +# name = "Lorem" +# weight = 70 +# identifier = "lorem" +# url = "/docs/lorem/" + +[[guide]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/guide/lorem/" + +[[tutorial]] + name = "Lorem" + weight = 10 + identifier = "lorem" + url = "/tutorial/lorem/" + +[[main]] + name = "Documentation" + url = "/docs/guides/example-guide/" +# url = "/docs/1.0/prologue/introduction/" + weight = 10 + +[[main]] + name = "Blog" + url = "https://thulite.io/blog/" + weight = 15 + +[[main]] + name = "Community" + url = "https://github.com/orgs/thuliteio/discussions" + post = '' + weight = 20 + +# [[social]] +# name = "Twitter" +# pre = '' +# url = "https://twitter.com/getdoks" +# weight = 10 +# +# [[social]] +# name = "Discord" +# pre = '' +# url = "https://getdoks.org/chat" +# weight = 20 + +[[social]] + name = "GitHub" + pre = '' + url = "https://github.com/thuliteio/doks" + post = "v0.1.0" + weight = 30 + +# [[social]] +# name = "LinkedIn" +# pre = '' +# url = "https://www.linkedin.com/" +# weight = 40 + +# [[sidebar_docs]] +# name = "Guides" +# pageRef = "/docs/guides" +# weight = 10 +# +# [[sidebar_docs]] +# name = "Reference" +# pageRef = "/docs/reference" +# weight = 20 +# +# [[sidebar_docs]] +# name = "Resources" +# pageRef = "/docs/resources" +# weight = 30 + +[[footer]] + name = "Privacy Policy" + url = "https://thulite.io/privacy/" + weight = 10 + +[[footer]] + name = "Terms of Service" + url = "https://thulite.io/terms/" + weight = 20 + +# [[footer]] +# name = "Terms of Service" +# url = "/terms/" +# weight = 20 diff --git a/config/_default/menus/menus.nl.toml b/config/_default/menus/menus.nl.toml new file mode 100644 index 000000000..e530352aa --- /dev/null +++ b/config/_default/menus/menus.nl.toml @@ -0,0 +1,39 @@ +[[docs]] + name = "Prologue" + weight = 10 + identifier = "prologue" + url = "/docs/prologue/" + +[[docs]] + name = "Help" + weight = 60 + identifier = "help" + url = "/docs/help/" + +[[main]] + name = "Docs" + url = "/docs/prologue/introduction/" + weight = 10 + +# [[main]] +# name = "Blog" +# url = "/blog/" +# weight = 20 + +[[social]] + name = "GitHub" + pre = "" + url = "https://github.com/h-enk/doks" + post = "v0.1.0" + weight = 10 + +[[social]] + name = "Twitter" + pre = "" + url = "https://twitter.com/getdoks" + weight = 20 + +# [[footer]] +# name = "Privacy" +# url = "/privacy-policy/" +# weight = 10 diff --git a/config/_default/module.toml b/config/_default/module.toml new file mode 100644 index 000000000..e6f6e1f41 --- /dev/null +++ b/config/_default/module.toml @@ -0,0 +1,108 @@ +# Module Configuration File +# +# This file configures Hugo module settings, particularly module mounts which +# define how content is organized within the project. +# +# Mounts specify file paths in your project that Hugo should use when building +# the site. They allow for custom directory structures and integrating content +# from different locations. + +## content +[[mounts]] + source = "content" + target = "content" + +## data +[[mounts]] + source = "node_modules/@thulite/doks-core/data" + target = "data" + +[[mounts]] + source = "data" + target = "data" + +## layouts +[[mounts]] + source = "layouts" + target = "layouts" + +[[mounts]] + files = ['! home.html'] + source = "node_modules/@thulite/doks-core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@thulite/core/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@thulite/seo/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@thulite/images/layouts" + target = "layouts" + +[[mounts]] + source = "node_modules/@thulite/inline-svg/layouts" + target = "layouts" + +## i18n +[[mounts]] + source = "node_modules/@thulite/doks-core/i18n" + target = "i18n" + +[[mounts]] + source = "i18n" + target = "i18n" + +## archetypes +[[mounts]] + source = "node_modules/@thulite/doks-core/archetypes" + target = "archetypes" + +[[mounts]] + source = "archetypes" + target = "archetypes" + +## assets +[[mounts]] + source = "node_modules/@thulite/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@thulite/doks-core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@tabler/icons/icons" + target = "assets/svgs/tabler-icons" + +[[mounts]] + source = "node_modules/@thulite/images/assets" + target = "assets" + +[[mounts]] + source = "hugo_stats.json" + target = "assets/watching/hugo_stats.json" + +[[mounts]] + source = "assets" + target = "assets" + +## static +[[mounts]] + source = "node_modules/@thulite/doks-core/static" + target = "static" + +[[mounts]] + source = "node_modules/@fontsource-variable/geist-mono" + target = "static/fonts/geist-mono" + +[[mounts]] + source = "node_modules/@fontsource-variable/geist" + target = "static/fonts/geist" + +[[mounts]] + source = "static" + target = "static" diff --git a/config/_default/params.toml b/config/_default/params.toml new file mode 100644 index 000000000..3a20d6048 --- /dev/null +++ b/config/_default/params.toml @@ -0,0 +1,146 @@ +# Hugo +title = "My Docs" +description = "Congrats on setting up a new Doks project!" +images = ["cover.png"] + +# mainSections +mainSections = ["docs"] + +# Enable mathematical rendering on every page (unless you set the `math` parameter to `false` in front matter) +math = false # false (default) or true +mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" + +[social] + twitter = "getdoks" + +# Doks (@thulite/doks-core) +[doks] + # Color mode + colorMode = "auto" # auto (default), light or dark + colorModeToggler = true # true (default) or false (this setting is only relevant when colorMode = auto) + + # Navbar + navbarSticky = true # true (default) or false + containerBreakpoint = "fluid" # "", "sm", "md", "lg", "xl", "xxl", or "fluid" (default) + + ## Button + navBarButton = false # false (default) or true + navBarButtonUrl = "/docs/prologue/introduction/" + navBarButtonText = "Get started" + + # FlexSearch + flexSearch = true # true (default) or false + searchExclKinds = [] # list of page kinds to exclude from search indexing (e.g. ["home", "taxonomy", "term"] ) + searchExclTypes = [] # list of content types to exclude from search indexing (e.g. ["blog", "docs", "legal", "contributors", "categories"]) + showSearch = [] # [] (all pages, default) or homepage (optionally) and list of sections (e.g. ["homepage", "blog", "guides"]) + indexSummary = false # true or false (default); whether to index only the `.Summary` instead of the full `.Content`; limits the respective JSON field size and thus increases loading time + + ## Search results + showDate = false # false (default) or true + showSummary = true # true (default) or false + searchLimit = 99 # 0 (no limit, default) or natural number + + # Global alert + alert = false # false (default) or true + alertDismissable = true # true (default) or false + + # Bootstrap + bootstrapJavascript = false # false (default) or true + + # Nav + sectionSwitcher = false # true or false (default) + sectionNav = ["docs"] # ["docs"] (default) or list of sections (e.g. ["docs", "guides"]) + toTopButton = false # false (default) or true + breadcrumbTrail = false # false (default) or true + headlineHash = true # true (default) or false + scrollSpy = true # true (default) or false + + # Multilingual + multilingualMode = false # false (default) or true + showMissingLanguages = true # whether or not to show untranslated languages in the language menu; true (default) or false + + # Versioning + docsVersioning = false # false (default) or true + docsVersion = "1.0" + + # UX + headerBar = false # true (default) or false + backgroundDots = true # true (default) or false + aiButtons = true # true (default) or false + + # Homepage + sectionFooter = false # false (default) or true + + # Blog + relatedPosts = false # false (default) or true + imageList = true # true (default) or false + imageSingle = true # true (default) or false + + # Repository + editPage = false # false (default) or true + lastMod = false # false (default) or true + repoHost = "GitHub" # GitHub (default), Gitea, GitLab, Bitbucket, or BitbucketServer + docsRepo = "https://github.com/h-enk/doks" + docsRepoBranch = "main" # main (default), master, or + docsRepoSubPath = "" # "" (none, default) or + + krokiURL = "https://kroki.io" # "https://kroki.io" (default) or custom URL like http://localhost:8000. + + # SCSS colors + # backGround = "yellowgreen" + ## Dark theme + # textDark = "#dee2e6" # "#dee2e6" (default), "#dee2e6" (orignal), or custom color + # accentDark = "#5d2f86" # "#5d2f86" (default), "#5d2f86" (original), or custom color + ## Light theme + # textLight = "#1d2d35" # "#1d2d35" (default), "#1d2d35" (orignal), or custom color + # accentLight = "#8ed6fb" # "#8ed6fb" (default), "#8ed6fb" (orignal), or custom color + + # [doks.menu] + # [doks.menu.section] + # auto = true # true (default) or false + # collapsibleSidebar = true # true (default) or false + +# Debug +[render_hooks.image] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + +[render_hooks.link] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + highlightBroken = false # true or false (default) + +# Images (@thulite/images) +[thulite_images] + [thulite_images.defaults] + decoding = "async" # sync, async, or auto (default) + fetchpriority = "auto" # high, low, or auto (default) + loading = "lazy" # eager or lazy (default) + widths = [480, 576, 768, 1025, 1200, 1440] # [640, 768, 1024, 1366, 1600, 1920] for example + sizes = "auto" # 100vw (default), 75vw, or auto for example + process = "" # "fill 1600x900" or "fill 2100x900" for example + lqip = "16x webp q20" # "16x webp q20" or "21x webp q20" for example + +# Inline SVG (@thulite/inline-svg) +[inline_svg] + iconSetDir = "tabler-icons" # tabler-icons (default) + iconSetVariant = "outline" # outline (default) or filled + +# SEO (@thulite/seo) +[seo] + [seo.title] + separator = "" # "|" (default) + suffix = "" # title hugo.toml (default) + [seo.description] + summaryFallback = "" # "" (default) + [seo.favicons] + icon = "favicon.png" # favicon.png (default) + svgIcon = "favicon.svg" # favicon.svg (default) + [seo.schemas] + type = "Organization" # Organization (default) or Person + logo = "favicon-512x512.png" # Logo of Organization — favicon-512x512.png (default) + name = "Thulite" # Name of Organization or Person + sameAs = [] # E.g. ["https://github.com/thuliteio/thulite", "https://fosstodon.org/@thulite"] + images = ["cover.png"] # ["cover.png"] (default) + article = [] # Article sections + newsArticle = [] # NewsArticle sections + blogPosting = ["blog"] # BlogPosting sections + product = [] # Product sections diff --git a/config/babel.config.js b/config/babel.config.js new file mode 100644 index 000000000..8482b9c15 --- /dev/null +++ b/config/babel.config.js @@ -0,0 +1,17 @@ +module.exports = { + presets: [ + [ + '@babel/preset-env', + { + targets: { + browsers: [ + // Best practice: https://github.com/babel/babel/issues/7789 + '>=1%', + 'not ie 11', + 'not op_mini all' + ] + } + } + ] + ] +}; diff --git a/config/next/hugo.toml b/config/next/hugo.toml new file mode 100644 index 000000000..8d1b518e7 --- /dev/null +++ b/config/next/hugo.toml @@ -0,0 +1,2 @@ +# Overrides for next environment +baseurl = "/" diff --git a/config/postcss.config.js b/config/postcss.config.js new file mode 100644 index 000000000..4c1099e5a --- /dev/null +++ b/config/postcss.config.js @@ -0,0 +1,61 @@ +import autoprefixer from 'autoprefixer'; +import purgeCSSPlugin from '@fullhuman/postcss-purgecss'; + +const purgecss = purgeCSSPlugin({ + content: ['./hugo_stats.json'], + defaultExtractor: (content) => { + const els = JSON.parse(content).htmlElements; + return [...(els.tags || []), ...(els.classes || []), ...(els.ids || [])]; + }, + dynamicAttributes: [ + 'aria-expanded', + 'data-bs-popper', + 'data-bs-target', + 'data-bs-theme', + 'data-dark-mode', + 'data-global-alert', + 'data-pane', // tabs.js + 'data-popper-placement', + 'data-sizes', + 'data-toggle-tab', // tabs.js + 'id', + 'size', + 'type' + ], + safelist: [ + 'active', + 'btn-clipboard', // clipboards.js + 'clipboard', // clipboards.js + 'disabled', + 'hidden', + 'modal-backdrop', // search-modal.js + 'selected', // search-modal.js + 'show', + 'img-fluid', + 'blur-up', + 'lazyload', + 'lazyloaded', + 'alert-link', + 'container-fw ', + 'container-lg', + 'container-fluid', + 'offcanvas-backdrop', + 'figcaption', + 'dt', + 'dd', + 'showing', + 'hiding', + 'page-item', + 'page-link', + 'not-content', + 'copy', + 'btn-copy', + ] +}); + +export default { + plugins: [ + autoprefixer(), + ...(process.env.HUGO_ENVIRONMENT === "production" ? [purgecss] : []), + ], +}; diff --git a/config/production/hugo.toml b/config/production/hugo.toml new file mode 100644 index 000000000..575f19241 --- /dev/null +++ b/config/production/hugo.toml @@ -0,0 +1,2 @@ +# Overrides for production environment +baseurl = "/" diff --git a/content/404.md b/content/404.md new file mode 100644 index 000000000..bbdf782c6 --- /dev/null +++ b/content/404.md @@ -0,0 +1,16 @@ +--- +title: "Page not found" +date: 2026-02-17T13:06:19+01:00 +description: "The page you're looking for doesn’t exist or has moved. Check the URL, use the navigation to browse sections, or return to the homepage." +draft: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "noindex" # custom robot tags (optional) +--- + +Sorry, we can't find the page you're looking for. + +Use the navigation above or go back to the [homepage](/). diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 000000000..650519231 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,14 @@ +--- +title: "Build production-ready websites" +description: "" +lead: "Thulite websites. Simple setup. Sensible defaults." +date: 2023-09-07T16:33:54+02:00 +lastmod: 2026-03-23T16:15:33+01:00 +draft: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/blog/_index.md b/content/blog/_index.md new file mode 100644 index 000000000..114e12f8f --- /dev/null +++ b/content/blog/_index.md @@ -0,0 +1,20 @@ +--- +title: "Blog" +description: "Read product updates, release highlights, and practical tips that explain what’s new, why it matters, and how to get the most value from this project." +summary: "" +date: 2023-09-07T16:21:44+02:00 +lastmod: 2023-09-07T16:21:44+02:00 +draft: false +weight: 50 +categories: [] +tags: [] +contributors: [] +pinned: false +homepage: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/blog/example/index.md b/content/blog/example/index.md new file mode 100644 index 000000000..48c5bda20 --- /dev/null +++ b/content/blog/example/index.md @@ -0,0 +1,31 @@ +--- +title: "Example Post" +description: "Learn how to write clear, structured product update posts that explain what changed, why it matters, and how users can successfully adopt new features." +summary: "Use blog posts to communicate product updates and new features in a clear and consistent format." +date: 2026-02-16T16:31:32+01:00 +lastmod: 2026-02-16T16:31:38+01:00 +draft: false +weight: 50 +categories: [] +tags: [] +contributors: [] +pinned: false +homepage: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Effective announcements serve different reader needs: + +- **Overview:** What’s new? +- **Context:** Why was this built? +- **Guidance:** How do I use it? +- **Details:** Where can I learn more? + +By separating intent, explanation, and practical steps, you turn release posts into durable product documentation — not just temporary marketing updates. + +Clear, structured announcements increase feature adoption, reinforce your product direction, and signal steady progress to both users and potential customers. diff --git a/content/categories/_index.md b/content/categories/_index.md new file mode 100644 index 000000000..9c38b5c56 --- /dev/null +++ b/content/categories/_index.md @@ -0,0 +1,12 @@ +--- +title: "Categories" +date: 2026-02-17T13:03:14+01:00 +description: "Browse all documentation and blog categories in one place to quickly find related guides, tutorials, and reference pages on every topic we cover." +draft: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/contributors/_index.md b/content/contributors/_index.md new file mode 100644 index 000000000..94c6d6140 --- /dev/null +++ b/content/contributors/_index.md @@ -0,0 +1,12 @@ +--- +title: "Contributors" +date: 2026-02-17T13:05:08+01:00 +description: "Meet the people who contribute content, code, and ideas to this project, and explore their profiles to discover more of their work and expertise." +draft: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/docs/_index.md b/content/docs/_index.md new file mode 100644 index 000000000..3851911ee --- /dev/null +++ b/content/docs/_index.md @@ -0,0 +1,20 @@ +--- +title: "Docs" +description: "Browse guides and reference documentation that explain how to use this site’s features, configure Doks, and publish clear, user-focused content." +summary: "" +date: 2023-09-07T16:12:03+02:00 +lastmod: 2023-09-07T16:12:03+02:00 +draft: false +weight: 999 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) + section: + title: "Documentation" + iconName: "book" + startUrl: "/docs/guides/example-guide/" +--- diff --git a/content/docs/guides/_index.md b/content/docs/guides/_index.md new file mode 100644 index 000000000..1b58e0bef --- /dev/null +++ b/content/docs/guides/_index.md @@ -0,0 +1,16 @@ +--- +title: "Guides" +description: "Explore step-by-step guides that walk you through common tasks, from setup to advanced workflows, helping you learn and use this project with confidence." +summary: "" +date: 2023-09-07T16:06:50+02:00 +lastmod: 2023-09-07T16:06:50+02:00 +draft: false +weight: 800 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/docs/guides/example.md b/content/docs/guides/example.md new file mode 100644 index 000000000..666b2de54 --- /dev/null +++ b/content/docs/guides/example.md @@ -0,0 +1,23 @@ +--- +title: "Example Guide" +description: "Learn how to structure clear, task-focused guides that walk users through real workflows step by step, improving documentation usability and success." +summary: "" +date: 2023-09-07T16:04:48+02:00 +lastmod: 2023-09-07T16:04:48+02:00 +draft: false +weight: 810 +toc: true +params: + math: false # enable mathematical rendering + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/docs/reference/_index.md b/content/docs/reference/_index.md new file mode 100644 index 000000000..01b59786a --- /dev/null +++ b/content/docs/reference/_index.md @@ -0,0 +1,18 @@ +--- +title: "Reference" +description: "Find detailed, structured reference pages that explain concepts, configuration options, and behavior so you can quickly look up precise information as you work." +summary: "" +date: 2023-09-07T16:12:37+02:00 +lastmod: 2023-09-07T16:12:37+02:00 +draft: false +weight: 900 +toc: true +sidebar: + collapsed: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/docs/reference/example.md b/content/docs/reference/example.md new file mode 100644 index 000000000..c40bffa55 --- /dev/null +++ b/content/docs/reference/example.md @@ -0,0 +1,22 @@ +--- +title: "Example Reference" +description: "Learn how to design concise, comprehensive reference pages that document concepts, options, and behavior clearly so users can quickly find exact answers." +summary: "" +date: 2023-09-07T16:13:18+02:00 +lastmod: 2023-09-07T16:13:18+02:00 +draft: false +weight: 910 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Reference pages are ideal for outlining how things work in terse and clear terms. Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. + +## Further reading + +- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/content/docs/resources.md b/content/docs/resources.md new file mode 100644 index 000000000..7abf7eb65 --- /dev/null +++ b/content/docs/resources.md @@ -0,0 +1,18 @@ +--- +title: "Resources" +description: "Discover curated links to official docs, tools, templates, and learning materials that help you deepen your knowledge and get more from this project." +summary: "" +date: 2024-02-27T09:30:56+01:00 +lastmod: 2024-02-27T09:30:56+01:00 +draft: false +weight: 999 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Link to valuable, relevant resources. diff --git a/content/privacy.md b/content/privacy.md new file mode 100644 index 000000000..40bba8b88 --- /dev/null +++ b/content/privacy.md @@ -0,0 +1,21 @@ +--- +title: "Privacy Policy" +description: "Learn how we collect, use, and protect your personal data, what rights you have over your information, and how to contact us with questions." +summary: "" +date: 2023-09-07T17:19:07+02:00 +lastmod: 2026-02-16T15:33:59+01:00 +draft: false +type: "legal" +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +We value your privacy and are committed to protecting your personal data. This Privacy Policy explains what information we collect, how we use it, and the choices you have. + +We only collect the information necessary to provide and improve our services, such as basic usage analytics and any details you choose to share with us (for example, via forms or support requests). We do not sell your personal data. + +If you have any questions about this policy or how we handle your data, please contact us using the details provided on this site. diff --git a/content/tags/_index.md b/content/tags/_index.md new file mode 100644 index 000000000..7300565d5 --- /dev/null +++ b/content/tags/_index.md @@ -0,0 +1,12 @@ +--- +title: "Tags" +date: 2026-02-17T13:04:01+01:00 +description: "Explore all tags used across our docs and blog posts to discover related topics, deep dives, and practical examples grouped by shared themes." +draft: false +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/hugo_stats.json b/hugo_stats.json new file mode 100644 index 000000000..983305e1b --- /dev/null +++ b/hugo_stats.json @@ -0,0 +1,298 @@ +{ + "htmlElements": { + "tags": [ + "a", + "article", + "aside", + "base", + "body", + "button", + "circle", + "details", + "div", + "footer", + "form", + "g", + "h1", + "h2", + "h3", + "h5", + "head", + "header", + "hr", + "html", + "input", + "kbd", + "label", + "li", + "line", + "link", + "main", + "meta", + "nav", + "noscript", + "p", + "path", + "script", + "section", + "small", + "span", + "strong", + "style", + "summary", + "svg", + "template", + "time", + "title", + "ul" + ], + "classes": [ + "404", + "DocSearch-Label", + "active", + "align-items-start", + "anchor", + "blog", + "blog-header", + "btn", + "btn-close", + "btn-cta", + "btn-lg", + "btn-link", + "btn-primary", + "btn-sm", + "card", + "card-body", + "card-list", + "categories", + "col", + "col-lg-10", + "col-lg-12", + "col-lg-16", + "col-lg-5", + "col-lg-7", + "col-lg-8", + "col-lg-9", + "col-md-12", + "col-xl-3", + "col-xl-4", + "col-xl-8", + "col-xl-9", + "container", + "container-fluid", + "container-fw", + "content", + "contributors", + "created-date", + "d-flex", + "d-lg-block", + "d-lg-flex", + "d-lg-none", + "d-md-block", + "d-md-none", + "d-none", + "d-xl-block", + "d-xl-none", + "docs", + "docs-content", + "docs-links", + "docs-sidebar", + "docs-toc", + "doks-sidebar", + "dropdown", + "dropdown-divider", + "dropdown-item", + "dropdown-menu", + "dropdown-menu-end", + "dropdown-toggle", + "flex-column", + "flex-grow-1", + "flex-lg-row", + "flex-md-row", + "flex-row", + "flex-sm-row", + "flex-xl-nowrap", + "footer", + "form-control", + "form-control-lg", + "fs-5", + "fs-6", + "g-4", + "h-auto", + "h3", + "h5", + "header-content", + "home", + "icon", + "icon-link", + "icon-tabler", + "icon-tabler-arrow-left", + "icon-tabler-arrow-right", + "icon-tabler-brand-github", + "icon-tabler-clock", + "icon-tabler-dots", + "icon-tabler-dots-vertical", + "icon-tabler-menu", + "icon-tabler-moon", + "icon-tabler-search", + "icon-tabler-sun", + "icon-tabler-x", + "icons-tabler-outline", + "justify-content-between", + "justify-content-center", + "justify-content-end", + "lead", + "link", + "link--text", + "list", + "list-inline", + "list-inline-item", + "list-nested", + "list-unstyled", + "list-view", + "m-2", + "mb-0", + "mb-1", + "me-1", + "me-2", + "me-auto", + "me-lg-1", + "me-lg-3", + "message", + "modal", + "modal-body", + "modal-content", + "modal-dialog", + "modal-dialog-scrollable", + "modal-footer", + "modal-fullscreen-md-down", + "modal-header", + "modal-title", + "ms-2", + "ms-3", + "ms-auto", + "ms-lg-2", + "mt-1", + "mt-3", + "mt-lg-0", + "mt-n3", + "mx-2", + "mx-auto", + "my-3", + "nav", + "nav-item", + "nav-link", + "navbar", + "navbar-brand", + "navbar-expand-lg", + "navbar-nav", + "offcanvas", + "offcanvas-body", + "offcanvas-end", + "offcanvas-header", + "offcanvas-start", + "offcanvas-title", + "order-3", + "order-lg-4", + "outline/article", + "outline/chevron-right", + "outline/file-text", + "outline/folder-root", + "outline/gauge", + "outline/json", + "outline/seo", + "outline/settings-2", + "outline/sitemap", + "outline/social", + "outline/stack-2", + "p-0", + "p-2", + "page-footer-meta", + "page-header", + "page-links", + "page-nav", + "page-wash", + "pb-5", + "position-relative", + "privacy", + "pt-3", + "px-0", + "query-no-results", + "reading-time", + "rounded-pill", + "row", + "search-form", + "search-input", + "search-loading", + "search-no-recent", + "search-no-results", + "search-result", + "search-results", + "search-text", + "section", + "section-footer", + "section-header", + "section-main", + "section-nav", + "section-prefooter", + "single", + "social-link", + "status", + "sticky-top", + "stretched-link", + "submitted", + "svg-inline", + "tags", + "taxonomy", + "text-body", + "text-body-secondary", + "text-center", + "text-decoration-none", + "text-end", + "text-lg-end", + "text-lg-start", + "text-muted", + "text-nowrap", + "text-reset", + "title", + "title-submitted", + "toc-mobile", + "toc-mobile-sticky", + "visually-hidden", + "w-100", + "wrap" + ], + "ids": [ + "TableOfContents", + "ai-dropdown", + "buttonColorMode", + "copy-markdown", + "doks-docs-nav", + "further-reading", + "offcanvasNavMain", + "offcanvasNavMainLabel", + "offcanvasNavSection", + "offcanvasNavSectionLabel", + "query", + "search-form", + "searchModal", + "searchModalLabel", + "searchResults", + "searchToggleDesktop", + "searchToggleMobile", + "socialMenu", + "svg-article", + "svg-chevron-right", + "svg-file-text", + "svg-folder-root", + "svg-gauge", + "svg-json", + "svg-seo", + "svg-settings-2", + "svg-sitemap", + "svg-social", + "svg-stack-2", + "toc" + ] + } +} diff --git a/i18n/de.toml b/i18n/de.toml new file mode 100644 index 000000000..1cb41f030 --- /dev/null +++ b/i18n/de.toml @@ -0,0 +1,51 @@ +[404_text] +other = "Die aufgerufene Seite existiert nicht oder wurde verschoben." + +[404_title] +other = "Seite nicht gefunden" + +[browse] +other = "Browse" + +[chapter_next] +other = "Danach" + +[chapter_previous] +other = "Davor" + +[edit_page] +other = "Editiere diese Seite auf" + +[get_started] +other = "Loslegen" + +[last_updated] +other = "Zuletzt aktualisiert am" + +[minute] +one = "Minute" +other = "Minuten" + +[on_this_page] +other = "Auf dieser Seite" + +[reading_time] +other = "Geschätzte Lesedauer" + +[search_loading] +other = "Suchindex wird geladen…" + +[search_no_recent] +other = "Keine kürzlich durchgeführten Suchanfragen" + +[search_no_results] +other = "Keine Resultate" + +[search_placeholder] +other = "Suche" + +[search_title] +other = "Suche" + +[video_unsupported] +other = "Ihr Browser unterstützt keine integrierten Videos, aber keine Sorge, Sie können es herunterladen und mit Ihrem Lieblings-Videoplayer ansehen!" diff --git a/i18n/en.toml b/i18n/en.toml new file mode 100644 index 000000000..f7319b494 --- /dev/null +++ b/i18n/en.toml @@ -0,0 +1,54 @@ +[404_text] +other = "The page you are looking for doesn't exist or has been moved." + +[404_title] +other = "Page not found :(" + +[browse] +other = "Browse" + +[chapter_next] +other = "Next" + +[chapter_previous] +other = "Prev" + +[edit_page] +other = "Edit this page on" + +[get_started] +other = "Get Started" + +[view_demo] +other = "View on GitHub" + +[last_updated] +other = "Last updated on" + +[minute] +one = "minute" +other = "minutes" + +[on_this_page] +other = "On this page" + +[reading_time] +other = "Estimated reading time" + +[search_loading] +other = "Loading search index…" + +[search_no_recent] +other = "No recent searches" + +[search_no_results] +other = "No results" + +[search_placeholder] +other = "Search" + +[search_title] +other = "Search" + +[video_unsupported] +other = "Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player!" diff --git a/i18n/nl.toml b/i18n/nl.toml new file mode 100644 index 000000000..bdbf2d3ca --- /dev/null +++ b/i18n/nl.toml @@ -0,0 +1,51 @@ +[404_text] +other = "De gezochte pagina bestaat niet of deze is verplaatst." + +[404_title] +other = "Pagina niet gevonden :(" + +[browse] +other = "Browse" + +[chapter_next] +other = "Volgende" + +[chapter_previous] +other = "Voorheen" + +[edit_page] +other = "Bewerk deze pagina op" + +[get_started] +other = "Aan de slag" + +[last_updated] +other = "Laatst bijgewerkt op" + +[minute] +one = "minuut" +other = "minuten" + +[on_this_page] +other = "Op deze pagina" + +[reading_time] +other = "Geschatte leestijd" + +[search_loading] +other = "Zoekindex wordt geladen…" + +[search_no_recent] +other = "Geen recente zoekopdrachten" + +[search_no_results] +other = "Geen resultaten" + +[search_placeholder] +other = "Zoeken" + +[search_title] +other = "Zoeken" + +[video_unsupported] +other = "Je browser ondersteunt geen ingesloten video's, maar maak je geen zorgen, je kunt het downloaden en bekijken met je favoriete videospeler!" diff --git a/layouts/_partials/footer/script-footer-custom.html b/layouts/_partials/footer/script-footer-custom.html new file mode 100644 index 000000000..9027bb615 --- /dev/null +++ b/layouts/_partials/footer/script-footer-custom.html @@ -0,0 +1,17 @@ +{{/* Put your custom tags here */}} + +{{ if .IsHome -}} + {{ partial "footer/esbuild" (dict "src" "js/custom.js" "load" "defer" "transpile" false) -}} +{{ end -}} + +{{/* EXAMPLE - only load script for production +{{ if eq (hugo.Environment) "production" -}} + {{ partial "footer/esbuild" (dict "src" "js/instantpage.js" "load" "async" "transpile" false) -}} +{{ end -}} +*/}} + +{{/* EXAMPLE - only load script for a page type e.g. contact or gallery +{{ if eq .Type "gallery" -}} + {{ partial "footer/esbuild" (dict "src" "js/gallery.js" "load" "async" "transpile" false) -}} +{{ end -}} +*/}} diff --git a/layouts/_partials/head/custom-head.html b/layouts/_partials/head/custom-head.html new file mode 100644 index 000000000..0c59d7ffb --- /dev/null +++ b/layouts/_partials/head/custom-head.html @@ -0,0 +1 @@ + diff --git a/layouts/_partials/head/resource-hints.html b/layouts/_partials/head/resource-hints.html new file mode 100644 index 000000000..55565253b --- /dev/null +++ b/layouts/_partials/head/resource-hints.html @@ -0,0 +1,3 @@ + + + diff --git a/layouts/_partials/head/script-header.html b/layouts/_partials/head/script-header.html new file mode 100644 index 000000000..28b50f355 --- /dev/null +++ b/layouts/_partials/head/script-header.html @@ -0,0 +1,7 @@ + + + + diff --git a/layouts/home.html b/layouts/home.html new file mode 100644 index 000000000..314a270d8 --- /dev/null +++ b/layouts/home.html @@ -0,0 +1,98 @@ +{{ define "sidebar-prefooter" }} + + +
    +
    +
    +
    +

    {{ .Title }}

    +

    {{ .Params.lead | safeHTML }}

    + {{ i18n "get_started" }} +
    +
    +
    + {{ .Content }} +
    +
    +
    +
    +
    + +
    +
    +

    What's included

    +
    +
    +
    +
    +

    {{ partial "inline-svg" (dict "src" "outline/file-text" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Structured content

    +

    Write and manage content in Markdown with clear workflows.

    +
    +
    +
    +
    +
    +
    +

    {{ partial "inline-svg" (dict "src" "outline/folder-root" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Simple project setup

    +

    A clean, predictable structure that scales with your site.

    +
    +
    +
    +
    +
    +
    +

    {{ partial "inline-svg" (dict "src" "outline/stack-2" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Modern web stack

    +

    Built on a fast, maintainable, and standards-compliant stack.

    +
    +
    +
    +
    +
    +
    +

    {{ partial "inline-svg" (dict "src" "outline/gauge" "stroke-width" "1.5" "class" "text-muted me-2" ) }}SEO & Performance

    +

    Optimized defaults for fast, search-friendly websites.

    +
    +
    +
    +
    +
    +
    +

    {{ partial "inline-svg" (dict "src" "outline/article" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Content sites

    +

    Ideal for documentation, blogs, and other content-heavy sites.

    +
    +
    +
    +
    +
    +
    +{{ end }} + +{{ define "sidebar-footer" }} +
    +
    +

    Open source

    +
    +
    +

    Help keep Thulite sustainable by supporting maintenance, documentation, and long-term development.

    + Sponsor Thulite{{ partial "inline-svg" (dict "src" "outline/chevron-right" "stroke-width" "1.5" ) }} +
    +
    +
    +
    + + +{{ end }} diff --git a/netlify.toml b/netlify.toml index 2ebecfb71..8bac7fb4b 100644 --- a/netlify.toml +++ b/netlify.toml @@ -1,41 +1,32 @@ -[build] - publish = "dist" - functions = "functions" - [build.environment] - NODE_VERSION = "20.18.0" - NPM_VERSION = "10.8.2" - -[context.production] - command = "bun run build" - -[context.deploy-preview] - command = "bun run build" - -[context.branch-deploy] - command = "bun run build" + DART_SASS_VERSION = "1.97.3" + GO_VERSION = "1.26.0" + HUGO_VERSION = "0.156.0" + NODE_VERSION = "24.13.1" + NPM_VERSION = "11.8.0" + TZ = "Europe/Amsterdam" -[context.next] - command = "bun run build" +[build] + publish = "public" + command = """\ + git config core.quotepath false && \ + npm install && \ + hugo build --gc --minify --baseURL "${URL}" + """ + +[dev] + framework = "#custom" + command = "bun run dev" + targetPort = 1313 + port = 8888 + publish = "public" + autoLaunch = false # Redirects and rewrites — https://docs.netlify.com/routing/redirects/#syntax-for-the-netlify-configuration-file [[redirects]] - from = "/" - to = "/getting-started/" - status = 301 - force = true - -[[redirects]] - from = "/install/" - to = "/install/auto/" - status = 301 - force = true - -[[redirects]] - from = "https://docs.gethyas.com/*" - to = "https://docs.thulite.io/:splat" - status = 301 - force = true + from = "/*" + to = "/404/" + status = 404 # Custom headers — https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file [[headers]] @@ -44,12 +35,11 @@ Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" X-Content-Type-Options = "nosniff" X-XSS-Protection = "1; mode=block" - # Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'" + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' https://avatars.githubusercontent.com data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" X-Frame-Options = "SAMEORIGIN" Referrer-Policy = "strict-origin" Permissions-Policy = "geolocation=(self), microphone=(), camera=()" Cache-Control= ''' public, - max-age=604800, - immutable''' + max-age=31536000''' Access-Control-Allow-Origin = "*" diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..eaa3a2c8b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5468 @@ +{ + "name": "docs", + "version": "0.2.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "docs", + "version": "0.2.0", + "license": "MIT", + "dependencies": { + "@fontsource-variable/geist": "^5.2.8", + "@fontsource-variable/geist-mono": "^5.2.7", + "@tabler/icons": "^3.36.1", + "@thulite/doks-core": "^1.9.3", + "@thulite/images": "^3.3.4", + "@thulite/inline-svg": "^1.2.2", + "@thulite/seo": "^2.4.3", + "thulite": "^2.6.5" + }, + "devDependencies": { + "@changesets/changelog-github": "^0.6.0", + "@changesets/cli": "^2.29.8", + "prettier": "^3.8.1", + "vite": "^7.3.1" + }, + "engines": { + "node": ">=24.13.0" + } + }, + "node_modules/@babel/cli": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.28.6.tgz", + "integrity": "sha512-6EUNcuBbNkj08Oj4gAZ+BUU8yLCgKzgVX4gaTh09Ya2C8ICM4P+G30g4m3akRxSYAp3A/gnWchrNst7px4/nUQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.28", + "commander": "^6.2.0", + "convert-source-map": "^2.0.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + }, + "bin": { + "babel": "bin/babel.js", + "babel-external-helpers": "bin/babel-external-helpers.js" + }, + "engines": { + "node": ">=6.9.0" + }, + "optionalDependencies": { + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.6.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/cli/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", + "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "regexpu-core": "^6.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", + "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "debug": "^4.4.3", + "lodash.debounce": "^4.0.8", + "resolve": "^1.22.11" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz", + "integrity": "sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-wrap-function": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", + "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.28.5.tgz", + "integrity": "sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz", + "integrity": "sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz", + "integrity": "sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", + "integrity": "sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-transform-optional-chaining": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", + "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", + "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", + "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz", + "integrity": "sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", + "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", + "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-remap-async-to-generator": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz", + "integrity": "sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", + "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", + "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", + "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", + "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-globals": "^7.28.0", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", + "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/template": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.5.tgz", + "integrity": "sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", + "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz", + "integrity": "sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz", + "integrity": "sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-explicit-resource-management": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", + "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", + "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz", + "integrity": "sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz", + "integrity": "sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz", + "integrity": "sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", + "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz", + "integrity": "sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", + "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz", + "integrity": "sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz", + "integrity": "sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", + "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.29.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz", + "integrity": "sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", + "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz", + "integrity": "sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", + "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", + "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", + "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz", + "integrity": "sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", + "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", + "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", + "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", + "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz", + "integrity": "sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", + "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", + "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz", + "integrity": "sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz", + "integrity": "sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", + "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz", + "integrity": "sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz", + "integrity": "sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz", + "integrity": "sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz", + "integrity": "sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", + "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz", + "integrity": "sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", + "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.28.5", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", + "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.28.6", + "@babel/plugin-syntax-import-attributes": "^7.28.6", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.27.1", + "@babel/plugin-transform-async-generator-functions": "^7.29.0", + "@babel/plugin-transform-async-to-generator": "^7.28.6", + "@babel/plugin-transform-block-scoped-functions": "^7.27.1", + "@babel/plugin-transform-block-scoping": "^7.28.6", + "@babel/plugin-transform-class-properties": "^7.28.6", + "@babel/plugin-transform-class-static-block": "^7.28.6", + "@babel/plugin-transform-classes": "^7.28.6", + "@babel/plugin-transform-computed-properties": "^7.28.6", + "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/plugin-transform-dotall-regex": "^7.28.6", + "@babel/plugin-transform-duplicate-keys": "^7.27.1", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-dynamic-import": "^7.27.1", + "@babel/plugin-transform-explicit-resource-management": "^7.28.6", + "@babel/plugin-transform-exponentiation-operator": "^7.28.6", + "@babel/plugin-transform-export-namespace-from": "^7.27.1", + "@babel/plugin-transform-for-of": "^7.27.1", + "@babel/plugin-transform-function-name": "^7.27.1", + "@babel/plugin-transform-json-strings": "^7.28.6", + "@babel/plugin-transform-literals": "^7.27.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", + "@babel/plugin-transform-member-expression-literals": "^7.27.1", + "@babel/plugin-transform-modules-amd": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.28.6", + "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-umd": "^7.27.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", + "@babel/plugin-transform-new-target": "^7.27.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", + "@babel/plugin-transform-numeric-separator": "^7.28.6", + "@babel/plugin-transform-object-rest-spread": "^7.28.6", + "@babel/plugin-transform-object-super": "^7.27.1", + "@babel/plugin-transform-optional-catch-binding": "^7.28.6", + "@babel/plugin-transform-optional-chaining": "^7.28.6", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/plugin-transform-private-methods": "^7.28.6", + "@babel/plugin-transform-private-property-in-object": "^7.28.6", + "@babel/plugin-transform-property-literals": "^7.27.1", + "@babel/plugin-transform-regenerator": "^7.29.0", + "@babel/plugin-transform-regexp-modifiers": "^7.28.6", + "@babel/plugin-transform-reserved-words": "^7.27.1", + "@babel/plugin-transform-shorthand-properties": "^7.27.1", + "@babel/plugin-transform-spread": "^7.28.6", + "@babel/plugin-transform-sticky-regex": "^7.27.1", + "@babel/plugin-transform-template-literals": "^7.27.1", + "@babel/plugin-transform-typeof-symbol": "^7.27.1", + "@babel/plugin-transform-unicode-escapes": "^7.27.1", + "@babel/plugin-transform-unicode-property-regex": "^7.28.6", + "@babel/plugin-transform-unicode-regex": "^7.27.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.15", + "babel-plugin-polyfill-corejs3": "^0.14.0", + "babel-plugin-polyfill-regenerator": "^0.6.6", + "core-js-compat": "^3.48.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", + "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@changesets/apply-release-plan": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.1.0.tgz", + "integrity": "sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/config": "^3.1.3", + "@changesets/get-version-range-type": "^0.4.0", + "@changesets/git": "^3.0.4", + "@changesets/should-skip-package": "^0.1.2", + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/apply-release-plan/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "6.0.9", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz", + "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.3", + "@changesets/should-skip-package": "^0.1.2", + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/changelog-git": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.2.1.tgz", + "integrity": "sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.1.0" + } + }, + "node_modules/@changesets/changelog-github": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@changesets/changelog-github/-/changelog-github-0.6.0.tgz", + "integrity": "sha512-wA2/y4hR/A1K411cCT75rz0d46Iezxp1WYRFoFJDIUpkQ6oDBAIUiU7BZkDCmYgz0NBl94X1lgcZO+mHoiHnFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/get-github-info": "^0.8.0", + "@changesets/types": "^6.1.0", + "dotenv": "^8.1.0" + } + }, + "node_modules/@changesets/cli": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.30.0.tgz", + "integrity": "sha512-5D3Nk2JPqMI1wK25pEymeWRSlSMdo5QOGlyfrKg0AOufrUcjEE3RQgaCpHoBiM31CSNrtSgdJ0U6zL1rLDDfBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/apply-release-plan": "^7.1.0", + "@changesets/assemble-release-plan": "^6.0.9", + "@changesets/changelog-git": "^0.2.1", + "@changesets/config": "^3.1.3", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.3", + "@changesets/get-release-plan": "^4.0.15", + "@changesets/git": "^3.0.4", + "@changesets/logger": "^0.1.1", + "@changesets/pre": "^2.0.2", + "@changesets/read": "^0.6.7", + "@changesets/should-skip-package": "^0.1.2", + "@changesets/types": "^6.1.0", + "@changesets/write": "^0.4.0", + "@inquirer/external-editor": "^1.0.2", + "@manypkg/get-packages": "^1.1.3", + "ansi-colors": "^4.1.3", + "enquirer": "^2.4.1", + "fs-extra": "^7.0.1", + "mri": "^1.2.0", + "package-manager-detector": "^0.2.0", + "picocolors": "^1.1.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^3.0.1", + "term-size": "^2.1.0" + }, + "bin": { + "changeset": "bin.js" + } + }, + "node_modules/@changesets/config": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.3.tgz", + "integrity": "sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.1.3", + "@changesets/logger": "^0.1.1", + "@changesets/should-skip-package": "^0.1.2", + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.8" + } + }, + "node_modules/@changesets/errors": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.2.0.tgz", + "integrity": "sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==", + "dev": true, + "license": "MIT", + "dependencies": { + "extendable-error": "^0.1.5" + } + }, + "node_modules/@changesets/get-dependents-graph": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz", + "integrity": "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3", + "picocolors": "^1.1.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/get-github-info": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@changesets/get-github-info/-/get-github-info-0.8.0.tgz", + "integrity": "sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dataloader": "^1.4.0", + "node-fetch": "^2.5.0" + } + }, + "node_modules/@changesets/get-release-plan": { + "version": "4.0.15", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.15.tgz", + "integrity": "sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/assemble-release-plan": "^6.0.9", + "@changesets/config": "^3.1.3", + "@changesets/pre": "^2.0.2", + "@changesets/read": "^0.6.7", + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/get-version-range-type": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.4.0.tgz", + "integrity": "sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/git": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-3.0.4.tgz", + "integrity": "sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.8", + "spawndamnit": "^3.0.1" + } + }, + "node_modules/@changesets/logger": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.1.1.tgz", + "integrity": "sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "picocolors": "^1.1.0" + } + }, + "node_modules/@changesets/parse": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.4.3.tgz", + "integrity": "sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.1.0", + "js-yaml": "^4.1.1" + } + }, + "node_modules/@changesets/pre": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-2.0.2.tgz", + "integrity": "sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" + } + }, + "node_modules/@changesets/read": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.6.7.tgz", + "integrity": "sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/git": "^3.0.4", + "@changesets/logger": "^0.1.1", + "@changesets/parse": "^0.4.3", + "@changesets/types": "^6.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0", + "picocolors": "^1.1.0" + } + }, + "node_modules/@changesets/should-skip-package": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@changesets/should-skip-package/-/should-skip-package-0.1.2.tgz", + "integrity": "sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.1.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/types": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-6.1.0.tgz", + "integrity": "sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/write": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.4.0.tgz", + "integrity": "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.1.0", + "fs-extra": "^7.0.1", + "human-id": "^4.1.1", + "prettier": "^2.7.1" + } + }, + "node_modules/@changesets/write/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", + "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", + "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", + "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", + "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", + "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", + "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", + "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", + "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", + "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", + "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", + "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", + "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", + "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", + "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", + "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", + "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", + "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", + "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", + "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", + "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", + "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", + "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", + "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", + "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", + "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", + "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@fontsource-variable/geist": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@fontsource-variable/geist/-/geist-5.2.8.tgz", + "integrity": "sha512-cJ6m9e+8MQ5dCYJsLylfZrgBh6KkG4bOLckB35Tr9J/EqdkEM6QllH5PxqP1dhTvFup+HtMRPuz9xOjxXJggxw==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fontsource-variable/geist-mono": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@fontsource-variable/geist-mono/-/geist-mono-5.2.7.tgz", + "integrity": "sha512-ZKlZ5sjtalb2TwXKs400mAGDlt/+2ENLNySPx0wTz3bP3mWARCsUW+rpxzZc7e05d2qGch70pItt3K4qttbIYA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@fullhuman/postcss-purgecss": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-8.0.0.tgz", + "integrity": "sha512-fSRaBGf6+DYdfQMxedWfnIW8FSYE1LBpgy16jpK1L2vNb1HgeBRRZ+UX4UokNmW7YEAwPdvwkKdYtlkYpH+Aqg==", + "license": "MIT", + "dependencies": { + "purgecss": "^8.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "license": "MIT", + "optional": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", + "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", + "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", + "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", + "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", + "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", + "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", + "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", + "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", + "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", + "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", + "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", + "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", + "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", + "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", + "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", + "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", + "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", + "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", + "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", + "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", + "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", + "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", + "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", + "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", + "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tabler/icons": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.40.0.tgz", + "integrity": "sha512-V/Q4VgNPKubRTiLdmWjV/zscYcj5IIk+euicUtaVVqF6luSC9rDngYWgST5/yh3Mrg/mYUwRv1YVTk71Jp0twQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + } + }, + "node_modules/@thulite/bootstrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@thulite/bootstrap/-/bootstrap-1.2.3.tgz", + "integrity": "sha512-230kXC1QwBESDP2ye7hlfVs6OHvLFKxlb9NJxjTLzMnE5cDGTjR3Tf+2PQftVERBmItpgXTL559ZE3zo6CKZSw==", + "license": "MIT", + "dependencies": { + "@popperjs/core": "^2.11.8", + "bootstrap": "^5.3.8" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@thulite/core": { + "version": "1.5.9", + "resolved": "https://registry.npmjs.org/@thulite/core/-/core-1.5.9.tgz", + "integrity": "sha512-8L1/GALG1wL+GPm4H4JnMhp+XXyPslnClM9uNQz/hYU2R9kKSPm3ED46jU8r2yboc/DzL+1vTg9M3BPtGNEixg==", + "license": "MIT", + "dependencies": { + "@babel/cli": "^7.28.6", + "@babel/core": "^7.29.0", + "@babel/preset-env": "^7.29.0", + "@fullhuman/postcss-purgecss": "^8.0.0", + "autoprefixer": "^10.4.24", + "lazysizes": "^5.3.2", + "modern-css-reset": "^1.4.0", + "postcss": "^8.5.6", + "postcss-cli": "^11.0.1", + "quicklink": "^3.0.1" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@thulite/doks-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@thulite/doks-core/-/doks-core-1.9.3.tgz", + "integrity": "sha512-K4BssyW7LwA19fz628kkdWb9p+DMq1LawmkegNEHkXnz7kecO3lVldk/Yn5mm9Ib6tv32ECA61BQxefDD9XokQ==", + "license": "MIT", + "dependencies": { + "@thulite/bootstrap": "^1.2.3", + "basiclightbox": "^5.0.4", + "clipboard": "^2.0.11", + "flexsearch": "^0.8.212" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@thulite/images": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@thulite/images/-/images-3.3.4.tgz", + "integrity": "sha512-l7fYyBFiiZWgFkaBLkINDrzDZ+KXTxWnvhTVPPEysL+TexzEubTY7b5s00iQoFZsUg4m+6flbYxZSupydFrEHg==", + "license": "MIT", + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@thulite/inline-svg": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@thulite/inline-svg/-/inline-svg-1.2.2.tgz", + "integrity": "sha512-jbxeXQjJT5HFuRufckEbEAoZjHJZCHwLY/rjJS6Lhc9ZZuMMp6QaOVk4pJa0Ey1UBsTJLcACyfm/K47oGJBluQ==", + "license": "MIT", + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@thulite/seo": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@thulite/seo/-/seo-2.4.3.tgz", + "integrity": "sha512-1Y8PJXjGQBoB+VgcC3+RiPxGyI0VshBgufloOtPGlolB+K+qSMY9SPla1mL2HzkLbteb2W9+9CktS7CA/f90Rg==", + "license": "MIT", + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", + "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", + "extraneous": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.27", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", + "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1", + "caniuse-lite": "^1.0.30001774", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", + "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-define-polyfill-provider": "^0.6.8", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.2.tgz", + "integrity": "sha512-coWpDLJ410R781Npmn/SIBZEsAetR4xVi0SxLMXPaMO4lSf1MwnkGYMtkFxew0Dn8B3/CpbpYxN0JCgg8mn67g==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8", + "core-js-compat": "^3.48.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", + "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.8" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.10", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", + "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/basiclightbox": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/basiclightbox/-/basiclightbox-5.0.4.tgz", + "integrity": "sha512-EsuNWmfcFXWZOe0txKXsllYOC7bDpoaVLc4HHHlYKB/roymlZs+FBdLUU6rx2yPpnJZhulwheKdPjqr2k0+NGQ==", + "license": "MIT" + }, + "node_modules/better-path-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bootstrap": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.8.tgz", + "integrity": "sha512-HP1SZDqaLDPwsNiqRqi5NcP0SSXciX2s9E+RyqJIIqGo+vJeN5AJVM98CXmW/Wux0nQ5L7jeWUdplCEf0Ee+tg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "license": "MIT", + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", + "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001781", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", + "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/clipboard": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.11.tgz", + "integrity": "sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==", + "license": "MIT", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", + "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/dataloader": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-1.4.0.tgz", + "integrity": "sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==", + "license": "MIT" + }, + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=10" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.321", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", + "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "license": "ISC" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/esbuild": { + "version": "0.27.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", + "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.27.4", + "@esbuild/android-arm": "0.27.4", + "@esbuild/android-arm64": "0.27.4", + "@esbuild/android-x64": "0.27.4", + "@esbuild/darwin-arm64": "0.27.4", + "@esbuild/darwin-x64": "0.27.4", + "@esbuild/freebsd-arm64": "0.27.4", + "@esbuild/freebsd-x64": "0.27.4", + "@esbuild/linux-arm": "0.27.4", + "@esbuild/linux-arm64": "0.27.4", + "@esbuild/linux-ia32": "0.27.4", + "@esbuild/linux-loong64": "0.27.4", + "@esbuild/linux-mips64el": "0.27.4", + "@esbuild/linux-ppc64": "0.27.4", + "@esbuild/linux-riscv64": "0.27.4", + "@esbuild/linux-s390x": "0.27.4", + "@esbuild/linux-x64": "0.27.4", + "@esbuild/netbsd-arm64": "0.27.4", + "@esbuild/netbsd-x64": "0.27.4", + "@esbuild/openbsd-arm64": "0.27.4", + "@esbuild/openbsd-x64": "0.27.4", + "@esbuild/openharmony-arm64": "0.27.4", + "@esbuild/sunos-x64": "0.27.4", + "@esbuild/win32-arm64": "0.27.4", + "@esbuild/win32-ia32": "0.27.4", + "@esbuild/win32-x64": "0.27.4" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flexsearch": { + "version": "0.8.212", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.8.212.tgz", + "integrity": "sha512-wSyJr1GUWoOOIISRu+X2IXiOcVfg9qqBRyCPRUdLMIGJqPzMo+jMRlvE83t14v1j0dRMEaBbER/adQjp6Du2pw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/ts-thomas" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=GEVR88FC9BWRW" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/flexsearch" + }, + { + "type": "patreon", + "url": "https://patreon.com/user?u=96245532" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/ts-thomas" + } + ], + "license": "Apache-2.0" + }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==", + "license": "MIT", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/human-id": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-4.1.3.tgz", + "integrity": "sha512-tsYlhAYpjCKa//8rXZ9DqKEawhPoSytweBC2eNvcaDK+57RZLHGqNs3PZTQO6yekLFSuvA6AlnAfrw1uBvtb+Q==", + "dev": true, + "license": "MIT", + "bin": { + "human-id": "dist/cli.js" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "better-path-resolve": "1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lazysizes": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/lazysizes/-/lazysizes-5.3.2.tgz", + "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==", + "license": "MIT" + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "license": "MIT" + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/modern-css-reset": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/modern-css-reset/-/modern-css-reset-1.4.0.tgz", + "integrity": "sha512-0crZmSFmrxkI7159rvQWjpDhy0u4+Awg/iOycJdlVn0RSeft/a+6BrQHR3IqvmdK25sqt0o6Z5Ap7cWgUee2rw==", + "license": "MIT" + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-releases": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", + "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/outdent": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.5.0.tgz", + "integrity": "sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-filter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", + "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-manager-detector": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "quansync": "^0.2.7" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss": { + "version": "8.5.8", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", + "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-cli": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-11.0.1.tgz", + "integrity": "sha512-0UnkNPSayHKRe/tc2YGW6XnSqqOA9eqpiRMgRlV1S6HdGi16vwJBx7lviARzbV1HpQHqLLRH3o8vTcB0cLc+5g==", + "license": "MIT", + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^1.0.0", + "fs-extra": "^11.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^5.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "tinyglobby": "^0.2.12", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-cli/node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/postcss-cli/node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/postcss-cli/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss-cli/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", + "integrity": "sha512-G5AJ+IX0aD0dygOE0yFZQ/huFFMSNneyfp0e3/bT05a8OfPC5FUoZRPfGijUdGOJNMewJiwzcHJXFafFzeKFVA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "lilconfig": "^3.1.1", + "yaml": "^2.4.2" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "jiti": ">=1.21.0", + "postcss": ">=8.0.9", + "tsx": "^4.8.1" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + }, + "postcss": { + "optional": true + }, + "tsx": { + "optional": true + } + } + }, + "node_modules/postcss-reporter": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.1.0.tgz", + "integrity": "sha512-/eoEylGWyy6/DOiMP5lmFRdmDKThqgn7D6hP2dXKJI/0rJSO1ADFNngZfDzxL0YAxFvws+Rtpuji1YIHj4mySA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/purgecss": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-8.0.0.tgz", + "integrity": "sha512-QFJyps9y5oHeXnNA3Ql1EaAqWBivNwQn19Pw1lt9RxfB+4e+bIyqCyuombk79D6Fxe+lPXggVfI1WtRGEBwgbQ==", + "license": "MIT", + "dependencies": { + "commander": "^12.1.0", + "fast-glob": "^3.3.2", + "postcss": "^8.4.47", + "postcss-selector-parser": "^7.0.0" + }, + "bin": { + "purgecss": "bin/purgecss.js" + } + }, + "node_modules/purgecss/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/quansync": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/antfu" + }, + { + "type": "individual", + "url": "https://github.com/sponsors/sxzz" + } + ], + "license": "MIT" + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quicklink": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/quicklink/-/quicklink-3.0.1.tgz", + "integrity": "sha512-sAMEpcCUCzjet214qVCm1hzxeF0YLo4wyphkIifeemmofk1vMrc5Sg/iNH32SKAIXqYvO6SPZgEP8obi9Ait9g==", + "license": "Apache-2.0", + "dependencies": { + "route-manifest": "^1.0.0", + "throttles": "^1.0.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19", + "react-dom": "^16.8.0 || ^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "license": "MIT", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-yaml-file/-/read-yaml-file-1.1.0.tgz", + "integrity": "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/read-yaml-file/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/read-yaml-file/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "license": "MIT" + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", + "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regexparam": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz", + "integrity": "sha512-6IQpFBv6e5vz1QAqI+V4k8P2e/3gRrqfCJ9FI+O1FLQTO+Uz6RXZEZOPmTJ6hlGj7gkERzY5BRCv09whKP96/g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/regexpu-core": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", + "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "license": "MIT", + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.2.2", + "regjsgen": "^0.8.0", + "regjsparser": "^0.13.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.2.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "license": "MIT" + }, + "node_modules/regjsparser": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", + "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "license": "BSD-2-Clause", + "dependencies": { + "jsesc": "~3.1.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "4.60.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", + "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.60.0", + "@rollup/rollup-android-arm64": "4.60.0", + "@rollup/rollup-darwin-arm64": "4.60.0", + "@rollup/rollup-darwin-x64": "4.60.0", + "@rollup/rollup-freebsd-arm64": "4.60.0", + "@rollup/rollup-freebsd-x64": "4.60.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", + "@rollup/rollup-linux-arm-musleabihf": "4.60.0", + "@rollup/rollup-linux-arm64-gnu": "4.60.0", + "@rollup/rollup-linux-arm64-musl": "4.60.0", + "@rollup/rollup-linux-loong64-gnu": "4.60.0", + "@rollup/rollup-linux-loong64-musl": "4.60.0", + "@rollup/rollup-linux-ppc64-gnu": "4.60.0", + "@rollup/rollup-linux-ppc64-musl": "4.60.0", + "@rollup/rollup-linux-riscv64-gnu": "4.60.0", + "@rollup/rollup-linux-riscv64-musl": "4.60.0", + "@rollup/rollup-linux-s390x-gnu": "4.60.0", + "@rollup/rollup-linux-x64-gnu": "4.60.0", + "@rollup/rollup-linux-x64-musl": "4.60.0", + "@rollup/rollup-openbsd-x64": "4.60.0", + "@rollup/rollup-openharmony-arm64": "4.60.0", + "@rollup/rollup-win32-arm64-msvc": "4.60.0", + "@rollup/rollup-win32-ia32-msvc": "4.60.0", + "@rollup/rollup-win32-x64-gnu": "4.60.0", + "@rollup/rollup-win32-x64-msvc": "4.60.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/route-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/route-manifest/-/route-manifest-1.0.0.tgz", + "integrity": "sha512-qn0xJr4nnF4caj0erOLLAHYiNyzqhzpUbgDQcEHrmBoG4sWCDLnIXLH7VccNSxe9cWgbP2Kw/OjME+eH3CeRSA==", + "license": "MIT", + "dependencies": { + "regexparam": "^1.3.0" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-3.0.1.tgz", + "integrity": "sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "cross-spawn": "^7.0.5", + "signal-exit": "^4.0.1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz", + "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "license": "Apache-2.0" + }, + "node_modules/throttles": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttles/-/throttles-1.0.1.tgz", + "integrity": "sha512-fab7Xg+zELr9KOv4fkaBoe/b3L0GMGLd0IBSCn16GoE/Qx6/OfCr1eGNyEcDU2pUA79qQfZ8kPQWlRuok4YwTw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/thulite": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/thulite/-/thulite-2.6.5.tgz", + "integrity": "sha512-TmKAwxv7lWVBau7EE6aJhh1swdm+d1Qo50ZkFcNo+WQfXAEoXsvPc2M7f+DxgTErYg3SN1Qy9Ael8dgsX/npiQ==", + "license": "MIT", + "dependencies": { + "@thulite/core": "^1.5.9" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "extraneous": true, + "license": "MIT" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "license": "MIT", + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", + "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", + "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vite": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yaml": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + } + } +} diff --git a/package.json b/package.json index ba0b8d05b..721b8b545 100644 --- a/package.json +++ b/package.json @@ -1,38 +1,41 @@ { "name": "docs", "version": "0.2.0", - "description": "Thulite documentation", + "description": "Doks theme", "author": "Thulite", - "license": "UNLICENSED", - "type": "module", + "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/thuliteio/docs.git" + "url": "https://github.com/thuliteio/doks.git" }, "scripts": { - "dev": "astro dev", - "start": "astro dev", - "build": "astro build", - "preview": "astro preview", - "astro": "astro" + "create": "hugo new", + "dev": "hugo server --disableFastRender --noHTTPCache", + "format": "prettier **/** -w -c", + "build": "hugo --minify --gc", + "preview": "vite preview --outDir public" }, "dependencies": { - "@astrojs/sitemap": "3.2.1", - "@astrojs/starlight": "^0.29.2", - "@astrojs/starlight-docsearch": "^0.3.0", - "astro": "^4.16.16", - "sharp": "^0.33.5" + "@fontsource-variable/geist": "^5.2.8", + "@fontsource-variable/geist-mono": "^5.2.7", + "@tabler/icons": "^3.36.1", + "@thulite/doks-core": "^1.9.3", + "@thulite/images": "^3.3.4", + "@thulite/inline-svg": "^1.2.2", + "@thulite/seo": "^2.4.3", + "thulite": "^2.6.5" + }, + "overrides": { + "minimatch": "^10.2.4", + "glob": "^13.0.6" }, "devDependencies": { - "@changesets/changelog-github": "^0.5.0", - "@changesets/cli": "^2.27.10", - "hast-util-from-html": "^2.0.2", - "hast-util-to-string": "^3.0.0", - "hastscript": "^9.0.0", - "rehype": "^13.0.1", - "unist-util-visit": "^5.0.0" + "@changesets/changelog-github": "^0.6.0", + "@changesets/cli": "^2.29.8", + "prettier": "^3.8.1", + "vite": "^7.3.1" }, "engines": { - "node": ">=20.11.0" + "node": ">=24.13.0" } -} \ No newline at end of file +} diff --git a/public/cover-docs.png b/public/cover-docs.png deleted file mode 100644 index 676bc944c774d25f8a6bf72653e42bf1a8f2efd0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 706012 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

    Nd4@A=o@i`LUQ7pz*9TeN~gL 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:HA!AMZY5%jB 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

      Yuq^>wUPR!}Uy)$=U<)@O$>+qP}e! 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 \ No newline at end of file + + + + diff --git a/public/logos/alpine-js.svg b/public/logos/alpine-js.svg deleted file mode 100644 index 5a2fbb613..000000000 --- a/public/logos/alpine-js.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/appwriteio.svg b/public/logos/appwriteio.svg deleted file mode 100644 index 5d962aeca..000000000 --- a/public/logos/appwriteio.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/astro-image.svg b/public/logos/astro-image.svg deleted file mode 100644 index 2442be90b..000000000 --- a/public/logos/astro-image.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/aws.svg b/public/logos/aws.svg deleted file mode 100644 index a216432a5..000000000 --- a/public/logos/aws.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/logos/bootstrap.svg b/public/logos/bootstrap.svg deleted file mode 100644 index a9fb5c7c3..000000000 --- a/public/logos/bootstrap.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/buddy.svg b/public/logos/buddy.svg deleted file mode 100644 index c9275f7d0..000000000 --- a/public/logos/buddy.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/public/logos/builderio.svg b/public/logos/builderio.svg deleted file mode 100644 index 457d4a818..000000000 --- a/public/logos/builderio.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/logos/buttercms.svg b/public/logos/buttercms.svg deleted file mode 100644 index 2262ffff0..000000000 --- a/public/logos/buttercms.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/cabin.svg b/public/logos/cabin.svg deleted file mode 100644 index 13ef5c44e..000000000 --- a/public/logos/cabin.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/caisy.svg b/public/logos/caisy.svg deleted file mode 100644 index ca053fd51..000000000 --- a/public/logos/caisy.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/public/logos/cleavr.svg b/public/logos/cleavr.svg deleted file mode 100644 index e5b456a49..000000000 --- a/public/logos/cleavr.svg +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/logos/cloudcannon.svg b/public/logos/cloudcannon.svg deleted file mode 100644 index 2fbd1d2e1..000000000 --- a/public/logos/cloudcannon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/cloudflare-pages.svg b/public/logos/cloudflare-pages.svg deleted file mode 100644 index f22c4afd6..000000000 --- a/public/logos/cloudflare-pages.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/contentful.svg b/public/logos/contentful.svg deleted file mode 100644 index de40d9a3b..000000000 --- a/public/logos/contentful.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/public/logos/cosmic.svg b/public/logos/cosmic.svg deleted file mode 100644 index f59d0ceb3..000000000 --- a/public/logos/cosmic.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/logos/create-react-app.svg b/public/logos/create-react-app.svg deleted file mode 100644 index 7bd159976..000000000 --- a/public/logos/create-react-app.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/crystallize.svg b/public/logos/crystallize.svg deleted file mode 100644 index 940599ad2..000000000 --- a/public/logos/crystallize.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/logos/datocms.svg b/public/logos/datocms.svg deleted file mode 100644 index 593bd9996..000000000 --- a/public/logos/datocms.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/logos/decap-cms.svg b/public/logos/decap-cms.svg deleted file mode 100644 index 7977d8f5e..000000000 --- a/public/logos/decap-cms.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/public/logos/deno.svg b/public/logos/deno.svg deleted file mode 100644 index ebc717ea9..000000000 --- a/public/logos/deno.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/directus.svg b/public/logos/directus.svg deleted file mode 100644 index c65619c6a..000000000 --- a/public/logos/directus.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/docker.svg b/public/logos/docker.svg deleted file mode 100644 index 297bb83f5..000000000 --- a/public/logos/docker.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/public/logos/docusaurus.svg b/public/logos/docusaurus.svg deleted file mode 100644 index 54d8acd4a..000000000 --- a/public/logos/docusaurus.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/logos/doks.svg b/public/logos/doks.svg deleted file mode 100644 index 4631bc535..000000000 --- a/public/logos/doks.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/edgio.svg b/public/logos/edgio.svg deleted file mode 100644 index 439d0f9c3..000000000 --- a/public/logos/edgio.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/logos/eleventy.svg b/public/logos/eleventy.svg deleted file mode 100644 index dedd9e1e2..000000000 --- a/public/logos/eleventy.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/fathom-analytics.svg b/public/logos/fathom-analytics.svg deleted file mode 100644 index e0c71012b..000000000 --- a/public/logos/fathom-analytics.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/public/logos/firebase.svg b/public/logos/firebase.svg deleted file mode 100644 index 1c08f1399..000000000 --- a/public/logos/firebase.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/flightcontrol.svg b/public/logos/flightcontrol.svg deleted file mode 100644 index e7b443058..000000000 --- a/public/logos/flightcontrol.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/frontmatter-cms.svg b/public/logos/frontmatter-cms.svg deleted file mode 100644 index ecb3d48f1..000000000 --- a/public/logos/frontmatter-cms.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/logos/gatsby.svg b/public/logos/gatsby.svg deleted file mode 100644 index ef0654e7b..000000000 --- a/public/logos/gatsby.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/ghost.png b/public/logos/ghost.png deleted file mode 100644 index 8d3419e022eac81a88d991ea26c368af4f654b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23378 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 \ No newline at end of file diff --git a/public/logos/github.svg b/public/logos/github.svg deleted file mode 100644 index 6e69c1532..000000000 --- a/public/logos/github.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/gitlab.svg b/public/logos/gitlab.svg deleted file mode 100644 index aa24cc6f0..000000000 --- a/public/logos/gitlab.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/google-analytics.svg b/public/logos/google-analytics.svg deleted file mode 100644 index 0bf4631b2..000000000 --- a/public/logos/google-analytics.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/logos/google-cloud.svg b/public/logos/google-cloud.svg deleted file mode 100644 index 39dc76aae..000000000 --- a/public/logos/google-cloud.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/logos/gridsome.svg b/public/logos/gridsome.svg deleted file mode 100644 index 3af8a5383..000000000 --- a/public/logos/gridsome.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/logos/heroku.svg b/public/logos/heroku.svg deleted file mode 100644 index 85f4dbf70..000000000 --- a/public/logos/heroku.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/hugo.svg b/public/logos/hugo.svg deleted file mode 100644 index 64dc0c379..000000000 --- a/public/logos/hugo.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/public/logos/hygraph.svg b/public/logos/hygraph.svg deleted file mode 100644 index 0f4cda1fd..000000000 --- a/public/logos/hygraph.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/jekyll.png b/public/logos/jekyll.png deleted file mode 100644 index c9a060813196cab58721b9cdb96e80a676dd93d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10017 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 UI+xH1|9@%05(?tAq6UHg2R#-H8~^|S diff --git a/public/logos/keystatic.svg b/public/logos/keystatic.svg deleted file mode 100644 index 86c76559b..000000000 --- a/public/logos/keystatic.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/keystonejs.svg b/public/logos/keystonejs.svg deleted file mode 100644 index 738241741..000000000 --- a/public/logos/keystonejs.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/kinsta.svg b/public/logos/kinsta.svg deleted file mode 100644 index 1c1124d5e..000000000 --- a/public/logos/kinsta.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/kontent-ai.svg b/public/logos/kontent-ai.svg deleted file mode 100644 index 1f7c91085..000000000 --- a/public/logos/kontent-ai.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/public/logos/lit.svg b/public/logos/lit.svg deleted file mode 100644 index 378e8065f..000000000 --- a/public/logos/lit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/logos/markdoc.svg b/public/logos/markdoc.svg deleted file mode 100644 index 68c9a182e..000000000 --- a/public/logos/markdoc.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/logos/mdx.svg b/public/logos/mdx.svg deleted file mode 100644 index 5b873e98c..000000000 --- a/public/logos/mdx.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/microcms.svg b/public/logos/microcms.svg deleted file mode 100644 index a86b86b7f..000000000 --- a/public/logos/microcms.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/microsoft-azure.svg b/public/logos/microsoft-azure.svg deleted file mode 100644 index 67f0b21be..000000000 --- a/public/logos/microsoft-azure.svg +++ /dev/null @@ -1,23 +0,0 @@ - diff --git a/public/logos/netlify.svg b/public/logos/netlify.svg deleted file mode 100644 index 24f693112..000000000 --- a/public/logos/netlify.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/nextjs.svg b/public/logos/nextjs.svg deleted file mode 100644 index e660c6057..000000000 --- a/public/logos/nextjs.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/logos/node.svg b/public/logos/node.svg deleted file mode 100644 index 819679b5f..000000000 --- a/public/logos/node.svg +++ /dev/null @@ -1,3 +0,0 @@ - diff --git a/public/logos/nuxtjs.svg b/public/logos/nuxtjs.svg deleted file mode 100644 index ebedd27fe..000000000 --- a/public/logos/nuxtjs.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/partytown.svg b/public/logos/partytown.svg deleted file mode 100644 index 5abb4b567..000000000 --- a/public/logos/partytown.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/logos/payload.svg b/public/logos/payload.svg deleted file mode 100644 index caa1c4617..000000000 --- a/public/logos/payload.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/pelican.svg b/public/logos/pelican.svg deleted file mode 100644 index 16deb4a68..000000000 --- a/public/logos/pelican.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/public/logos/plausible.svg b/public/logos/plausible.svg deleted file mode 100644 index a0ee8f920..000000000 --- a/public/logos/plausible.svg +++ /dev/null @@ -1,29 +0,0 @@ - - - - Artboard - Created with Sketch. - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/logos/preact.svg b/public/logos/preact.svg deleted file mode 100644 index 28d319471..000000000 --- a/public/logos/preact.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/logos/prefetch.svg b/public/logos/prefetch.svg deleted file mode 100644 index 781f68141..000000000 --- a/public/logos/prefetch.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/preprcms.svg b/public/logos/preprcms.svg deleted file mode 100644 index 22f36e604..000000000 --- a/public/logos/preprcms.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/prismic.svg b/public/logos/prismic.svg deleted file mode 100644 index 7d664a1e6..000000000 --- a/public/logos/prismic.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/react.svg b/public/logos/react.svg deleted file mode 100644 index 0f021af4d..000000000 --- a/public/logos/react.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/render.svg b/public/logos/render.svg deleted file mode 100644 index 99d456bb4..000000000 --- a/public/logos/render.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/sanity.svg b/public/logos/sanity.svg deleted file mode 100644 index 74c2244ad..000000000 --- a/public/logos/sanity.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/public/logos/sitemap.svg b/public/logos/sitemap.svg deleted file mode 100644 index db118e358..000000000 --- a/public/logos/sitemap.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/solid.svg b/public/logos/solid.svg deleted file mode 100644 index e26c05118..000000000 --- a/public/logos/solid.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/logos/space.svg b/public/logos/space.svg deleted file mode 100644 index 54c25f71a..000000000 --- a/public/logos/space.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/logos/spinal.svg b/public/logos/spinal.svg deleted file mode 100644 index 7e186a083..000000000 --- a/public/logos/spinal.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/sst.svg b/public/logos/sst.svg deleted file mode 100644 index db353e58f..000000000 --- a/public/logos/sst.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/public/logos/statamic.svg b/public/logos/statamic.svg deleted file mode 100644 index 77439b505..000000000 --- a/public/logos/statamic.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/logos/storyblok.svg b/public/logos/storyblok.svg deleted file mode 100644 index ce16a6489..000000000 --- a/public/logos/storyblok.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/public/logos/strapi.svg b/public/logos/strapi.svg deleted file mode 100644 index 58b47d87d..000000000 --- a/public/logos/strapi.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/public/logos/supabase.svg b/public/logos/supabase.svg deleted file mode 100644 index 623cc0de8..000000000 --- a/public/logos/supabase.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/public/logos/surge.svg b/public/logos/surge.svg deleted file mode 100644 index 50c2e2822..000000000 --- a/public/logos/surge.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/logos/svelte.svg b/public/logos/svelte.svg deleted file mode 100644 index 8e14c260a..000000000 --- a/public/logos/svelte.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/sveltekit.svg b/public/logos/sveltekit.svg deleted file mode 100644 index 8e14c260a..000000000 --- a/public/logos/sveltekit.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/public/logos/tailwind.svg b/public/logos/tailwind.svg deleted file mode 100644 index de1f1dee5..000000000 --- a/public/logos/tailwind.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/public/logos/thulite.svg b/public/logos/thulite.svg deleted file mode 100644 index 9d9ae7d92..000000000 --- a/public/logos/thulite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/tigris.svg b/public/logos/tigris.svg deleted file mode 100644 index 89d1344b1..000000000 --- a/public/logos/tigris.svg +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/logos/tina-cms.svg b/public/logos/tina-cms.svg deleted file mode 100644 index bb3aa1931..000000000 --- a/public/logos/tina-cms.svg +++ /dev/null @@ -1 +0,0 @@ - diff --git a/public/logos/vercel.svg b/public/logos/vercel.svg deleted file mode 100644 index 5f54fdea9..000000000 --- a/public/logos/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/logos/vue.svg b/public/logos/vue.svg deleted file mode 100644 index decb78adc..000000000 --- a/public/logos/vue.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/logos/vuepress.png b/public/logos/vuepress.png deleted file mode 100644 index eb767808c78cee984a3c7da40b6aca4db2f0e7e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8502 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 diff --git a/public/logos/wordpress.svg b/public/logos/wordpress.svg deleted file mode 100644 index ddc886068..000000000 --- a/public/logos/wordpress.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/public/logos/xata.svg b/public/logos/xata.svg deleted file mode 100644 index 4cea10ed6..000000000 --- a/public/logos/xata.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/public/robots.txt b/public/robots.txt index 9cadc4568..27216e5e6 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,4 +1,3 @@ User-agent: * -Allow: / - -Sitemap: https://docs.thulite.io/sitemap-index.xml +Disallow: /admin/ +Sitemap: http://localhost:1313/sitemap.xml diff --git a/src/assets/dark-logo.svg b/src/assets/dark-logo.svg deleted file mode 100644 index d5d6741f7..000000000 --- a/src/assets/dark-logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/assets/houston.webp b/src/assets/houston.webp deleted file mode 100644 index 930c164974ad8eb528878f15a98016249b8cf546..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98506 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 b6~t;_wBcJ3AWgga7~Sz~izoKbpAY~5r|m$8 diff --git a/src/assets/light-logo.svg b/src/assets/light-logo.svg deleted file mode 100644 index e245d4941..000000000 --- a/src/assets/light-logo.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/components/AnalyticsGuidesNav.astro b/src/components/AnalyticsGuidesNav.astro deleted file mode 100644 index 2f75bb631..000000000 --- a/src/components/AnalyticsGuidesNav.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -// import { englishPages } from '~/content'; -import { analyticsPages } from '~/content'; -// import { isCmsEntry } from '~/content/config'; -import { isLogoKey } from '~/data/logos'; -import { getLanguageFromURL } from '~/util'; -import CardsNav from './NavGrid/CardsNav.astro'; - -const lang = getLanguageFromURL(Astro.url.pathname); -// const enPages = englishPages.filter(isCmsEntry); - -/** Array of services we have good content for and want to show first in the list. */ -const showFirst = ['Plausible', 'Fathom']; -// Reverse the array to make our logic simpler later. -showFirst.reverse(); - -const links = analyticsPages - .sort((a, b) => { - // Sort services in the `showFirst` array first. - const aPriority = showFirst.indexOf(a.data.service); - const bPriority = showFirst.indexOf(b.data.service); - if (aPriority !== -1 || bPriority !== -1) return aPriority > bPriority ? -1 : 1; - // Sort full guides before stubs. - if (a.data.stub && !b.data.stub) return 1; - if (!a.data.stub && b.data.stub) return -1; - // If they’re both stubs, or neither stubs, sort alphabetically. - return a.data.service.toLowerCase() > b.data.service.toLowerCase() ? 1 : -1; - }) - .map((page) => { - const { service } = page.data; - const pageUrl = '/' + page.slug.replace('en/', `${lang}/`) + '/'; - const logo = isLogoKey(page.slug.split('/').pop()); - return { title: service, href: pageUrl, logo }; - }); ---- - -

      - -
      - - diff --git a/src/components/Badge.astro b/src/components/Badge.astro deleted file mode 100644 index 5f9817e4f..000000000 --- a/src/components/Badge.astro +++ /dev/null @@ -1,32 +0,0 @@ ---- -export interface Props { - variant?: 'neutral' | 'accent'; -} -const { variant = 'neutral' } = Astro.props as Props; ---- - - - - diff --git a/src/components/BrandLogo.astro b/src/components/BrandLogo.astro deleted file mode 100644 index 2c063a99c..000000000 --- a/src/components/BrandLogo.astro +++ /dev/null @@ -1,62 +0,0 @@ ---- -import { type LogoKey, logos } from '~/data/logos'; - -export interface Props { - size?: `${number}rem` | `${number}px`; - shape?: 'circle' | 'rounded'; - brand: LogoKey; -} - -const { brand, size = '4rem', shape = 'circle' } = Astro.props as Props; -const { file, padding } = logos[brand] || {}; - -// Make a rough guess at the pixel size to use as width/height attributes -const [, value, unit] = /^(\d*(?:\.\d+)?)(\w+)$/.exec(size) || ['4', 'rem']; -const valueAsNumber = parseFloat(value); -const pixelSize = unit === 'px' ? valueAsNumber : valueAsNumber * 16; ---- - -{ - file && ( -
      - -
      - ) -} - - diff --git a/src/components/Button.astro b/src/components/Button.astro deleted file mode 100644 index 22ffd5890..000000000 --- a/src/components/Button.astro +++ /dev/null @@ -1,171 +0,0 @@ ---- -// Source: https://github.com/withastro/docs/blob/main/src/components/Button.astro - -const { class: className = '', style, href } = Astro.props; -// Wrap in because Houdini is disabled for a[href] for security - -const { variant = 'primary' } = Astro.props; ---- - - -
      - - - - - diff --git a/src/components/CMSGuidesNav.astro b/src/components/CMSGuidesNav.astro deleted file mode 100644 index 7e8c39be2..000000000 --- a/src/components/CMSGuidesNav.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -// import { englishPages } from '~/content'; -import { cmsPages } from '~/content'; -// import { isCmsEntry } from '~/content/config'; -import { isLogoKey } from '~/data/logos'; -import { getLanguageFromURL } from '~/util'; -import CardsNav from './NavGrid/CardsNav.astro'; - -const lang = getLanguageFromURL(Astro.url.pathname); -// const enPages = englishPages.filter(isCmsEntry); - -/** Array of services we have good content for and want to show first in the list. */ -const showFirst = ['Tina CMS', 'Decap CMS']; -// Reverse the array to make our logic simpler later. -showFirst.reverse(); - -const links = cmsPages - .sort((a, b) => { - // Sort services in the `showFirst` array first. - const aPriority = showFirst.indexOf(a.data.service); - const bPriority = showFirst.indexOf(b.data.service); - if (aPriority !== -1 || bPriority !== -1) return aPriority > bPriority ? -1 : 1; - // Sort full guides before stubs. - if (a.data.stub && !b.data.stub) return 1; - if (!a.data.stub && b.data.stub) return -1; - // If they’re both stubs, or neither stubs, sort alphabetically. - return a.data.service.toLowerCase() > b.data.service.toLowerCase() ? 1 : -1; - }) - .map((page) => { - const { service } = page.data; - const pageUrl = '/' + page.slug.replace('en/', `${lang}/`) + '/'; - const logo = isLogoKey(page.slug.split('/').pop()); - return { title: service, href: pageUrl, logo }; - }); ---- - -
      - -
      - - diff --git a/src/components/DeployGuidesNav.astro b/src/components/DeployGuidesNav.astro deleted file mode 100644 index f2cf1a88f..000000000 --- a/src/components/DeployGuidesNav.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -// import { englishPages } from '~/content'; -import { deployPages } from '~/content'; -// import { isCmsEntry } from '~/content/config'; -import { isLogoKey } from '~/data/logos'; -import { getLanguageFromURL } from '~/util'; -import CardsNav from './NavGrid/CardsNav.astro'; - -const lang = getLanguageFromURL(Astro.url.pathname); -// const enPages = englishPages.filter(isCmsEntry); - -/** Array of services we have good content for and want to show first in the list. */ -const showFirst = ['Netlify', 'Vercel', 'GitHub Pages', "GitLab Pages"]; -// Reverse the array to make our logic simpler later. -showFirst.reverse(); - -const links = deployPages - .sort((a, b) => { - // Sort services in the `showFirst` array first. - const aPriority = showFirst.indexOf(a.data.service); - const bPriority = showFirst.indexOf(b.data.service); - if (aPriority !== -1 || bPriority !== -1) return aPriority > bPriority ? -1 : 1; - // Sort full guides before stubs. - if (a.data.stub && !b.data.stub) return 1; - if (!a.data.stub && b.data.stub) return -1; - // If they’re both stubs, or neither stubs, sort alphabetically. - return a.data.service.toLowerCase() > b.data.service.toLowerCase() ? 1 : -1; - }) - .map((page) => { - const { service } = page.data; - const pageUrl = '/' + page.slug.replace('en/', `${lang}/`) + '/'; - const logo = isLogoKey(page.slug.split('/').pop()); - return { title: service, href: pageUrl, logo }; - }); ---- - -
      - -
      - - diff --git a/src/components/EthicalAds.astro b/src/components/EthicalAds.astro deleted file mode 100644 index 491745dd7..000000000 --- a/src/components/EthicalAds.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- ---- - - -
      - - diff --git a/src/components/FileTree.astro b/src/components/FileTree.astro deleted file mode 100644 index 005a946c9..000000000 --- a/src/components/FileTree.astro +++ /dev/null @@ -1,151 +0,0 @@ ---- -import { useTranslations } from '~/i18n/util'; -import { fileTreeProcessor } from './internal/rehype-file-tree'; - -const content = await Astro.slots.render('default'); -if (!/^\s*
        /.test(content)) { - throw new Error( - ` component expects its content to be an unordered list but found HTML starting with “${content.slice( - 0, - 20 - )}...”` - ); -} - -const t = useTranslations(Astro); - -const processedContent = await fileTreeProcessor.process({ - value: content, - data: { directoryLabel: t('fileTree.directoryLabel') }, -}); ---- - - - - diff --git a/src/components/IntegrationsNav.astro b/src/components/IntegrationsNav.astro deleted file mode 100644 index a02c70aa6..000000000 --- a/src/components/IntegrationsNav.astro +++ /dev/null @@ -1,60 +0,0 @@ ---- -import { integrationPages } from '~/content'; -import { - type IntegrationCategory, - type IntegrationEntry, -} from '~/content/config'; -import { isLogoKey } from '~/data/logos'; -import { useTranslations } from '~/i18n/util'; -import { getLanguageFromURL } from '~/util'; -import CardsNav from './NavGrid/CardsNav.astro'; - -interface Props { - category?: IntegrationCategory; -} - -const lang = getLanguageFromURL(Astro.url.pathname); - -function categoryLinksFromPages(pages: IntegrationEntry[], category: IntegrationCategory) { - return pages - .filter((page) => page.data.category === category) - .map((page) => { - const { service } = page.data; - const pageUrl = '/' + page.slug.replace('en/', `${lang}/`) + '/'; - return { - title: service, - href: pageUrl, - logo: isLogoKey(page.slug.split('/').pop()), - }; - }); -} - -const t = useTranslations(Astro); - -const allCategories = { - renderer: { - title: t('integrations.renderers'), - links: categoryLinksFromPages(integrationPages, 'renderer'), - }, - theme: { title: t('integrations.themes'), links: categoryLinksFromPages(integrationPages, 'theme') }, - other: { title: t('integrations.others'), links: categoryLinksFromPages(integrationPages, 'other') }, -}; -const category = allCategories[Astro.props.category!]; - -const categories = category ? [category] : allCategories; ---- - -{ - Object.values(categories).map((category) => ( - <> -

        {category.title}

        - - - )) -} - - diff --git a/src/components/List.astro b/src/components/List.astro deleted file mode 100644 index c2a969f73..000000000 --- a/src/components/List.astro +++ /dev/null @@ -1,35 +0,0 @@ ---- -const { emoji } = Astro.props ---- - -
        - -
        - - diff --git a/src/components/NavGrid/Card.astro b/src/components/NavGrid/Card.astro deleted file mode 100644 index 37920564d..000000000 --- a/src/components/NavGrid/Card.astro +++ /dev/null @@ -1,90 +0,0 @@ ---- -import type { LogoKey } from '~/data/logos'; -import BrandLogo from '../BrandLogo.astro'; - -export interface Props { - href: string; - logo?: LogoKey; - current?: boolean; - minimal?: boolean; - [key: string]: any; -} - -const { href, logo, current, minimal, class: classes, ...attrs } = Astro.props as Props; ---- - -
      • - {logo && } -
        -

        - - - -

        - {!minimal && } -
        -
      • - - diff --git a/src/components/NavGrid/CardsNav.astro b/src/components/NavGrid/CardsNav.astro deleted file mode 100644 index 87bce7827..000000000 --- a/src/components/NavGrid/CardsNav.astro +++ /dev/null @@ -1,63 +0,0 @@ ---- -import type { LogoKey } from '~/data/logos'; -import Badge from '../Badge.astro'; -import Card from './Card.astro'; -import Grid from './Grid.astro'; - -export interface Props { - minimal?: boolean; - links: { - title: string; - description?: string; - href: string; - logo?: LogoKey; - /** Map of tag IDs to translated tag display text, e.g. `{ static: 'Statisch' }`. */ - tags?: Record; - /** The language of the content if it differs from the main page language. */ - lang?: string; - }[]; - class?: string; -} - -const { links, minimal = false, class: classes } = Astro.props as Props; - -const currentPage = new URL(Astro.request.url).pathname; ---- - -
        - - - { - links.map(({ description, href, logo, title, tags, lang }) => ( - - - - {description &&

        {description}

        } - {tags && ( -
        - {Object.values(tags).map((tag) => ( - {tag} - ))} -
        - )} -
        -
        - )) - } -
        -
        - - diff --git a/src/components/NavGrid/Grid.astro b/src/components/NavGrid/Grid.astro deleted file mode 100644 index 83e4eff1c..000000000 --- a/src/components/NavGrid/Grid.astro +++ /dev/null @@ -1,37 +0,0 @@ ---- -export interface Props { - minimal?: boolean; -} - -const { minimal } = Astro.props as Props; ---- - -
          - -
        - - diff --git a/src/components/TableOfContents.astro b/src/components/TableOfContents.astro deleted file mode 100644 index 3bf6308b9..000000000 --- a/src/components/TableOfContents.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -import type { Props } from '@astrojs/starlight/props'; -import Default from '@astrojs/starlight/components/TableOfContents.astro' -import EthicalAds from './EthicalAds.astro'; ---- - - -

        Contribute

        - - - - - diff --git a/src/components/ThemesGuidesNav.astro b/src/components/ThemesGuidesNav.astro deleted file mode 100644 index 4913f7f3c..000000000 --- a/src/components/ThemesGuidesNav.astro +++ /dev/null @@ -1,45 +0,0 @@ ---- -// import { englishPages } from '~/content'; -import { themesPages } from '~/content'; -// import { isCmsEntry } from '~/content/config'; -import { isLogoKey } from '~/data/logos'; -import { getLanguageFromURL } from '~/util'; -import CardsNav from './NavGrid/CardsNav.astro'; - -const lang = getLanguageFromURL(Astro.url.pathname); -// const enPages = englishPages.filter(isCmsEntry); - -/** Array of services we have good content for and want to show first in the list. */ -const showFirst = ['Doks']; -// Reverse the array to make our logic simpler later. -showFirst.reverse(); - -const links = themesPages - .sort((a, b) => { - // Sort services in the `showFirst` array first. - const aPriority = showFirst.indexOf(a.data.service); - const bPriority = showFirst.indexOf(b.data.service); - if (aPriority !== -1 || bPriority !== -1) return aPriority > bPriority ? -1 : 1; - // Sort full guides before stubs. - if (a.data.stub && !b.data.stub) return 1; - if (!a.data.stub && b.data.stub) return -1; - // If they’re both stubs, or neither stubs, sort alphabetically. - return a.data.service.toLowerCase() > b.data.service.toLowerCase() ? 1 : -1; - }) - .map((page) => { - const { service } = page.data; - const pageUrl = '/' + page.slug.replace('en/', `${lang}/`) + '/'; - const logo = isLogoKey(page.slug.split('/').pop()); - return { title: service, href: pageUrl, logo }; - }); ---- - -
        - -
        - - diff --git a/src/components/internal/file-tree-icons.ts b/src/components/internal/file-tree-icons.ts deleted file mode 100644 index d4da0197b..000000000 --- a/src/components/internal/file-tree-icons.ts +++ /dev/null @@ -1,756 +0,0 @@ -/** - * Based on https://github.com/elviswolcott/seti-icons which - * is derived from https://github.com/jesseweed/seti-ui/ - * - * Copyright (c) 2014 Jesse Weed - * - * Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sublicense, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -const rawDefinitions = { - files: { - COMMIT_EDITMSG: ['git', 'ignore'], - MERGE_MSG: ['git', 'ignore'], - 'karma.conf.js': ['karma', 'green'], - 'karma.conf.coffee': ['karma', 'green'], - 'README.md': ['info', 'blue'], - 'README.txt': ['info', 'blue'], - README: ['info', 'blue'], - 'CHANGELOG.md': ['clock', 'blue'], - 'CHANGELOG.txt': ['clock', 'blue'], - CHANGELOG: ['clock', 'blue'], - 'CHANGES.md': ['clock', 'blue'], - 'CHANGES.txt': ['clock', 'blue'], - CHANGES: ['clock', 'blue'], - 'VERSION.md': ['clock', 'blue'], - 'VERSION.txt': ['clock', 'blue'], - VERSION: ['clock', 'blue'], - mvnw: ['maven', 'red'], - 'tsconfig.json': ['tsconfig', 'blue'], - 'swagger.json': ['json', 'green'], - 'swagger.yml': ['json', 'green'], - 'swagger.yaml': ['json', 'green'], - 'mime.types': ['config', 'grey-light'], - Jenkinsfile: ['jenkins', 'red'], - 'babel.config.js': ['babel', 'yellow'], - 'babel.config.json': ['babel', 'yellow'], - 'babel.config.cjs': ['babel', 'yellow'], - BUILD: ['bazel', 'green'], - 'BUILD.bazel': ['bazel', 'green'], - WORKSPACE: ['bazel', 'green'], - 'WORKSPACE.bazel': ['bazel', 'green'], - 'bower.json': ['bower', 'orange'], - 'Bower.json': ['bower', 'orange'], - 'firebase.json': ['firebase', 'orange'], - geckodriver: ['firefox', 'orange'], - 'Gruntfile.js': ['grunt', 'orange'], - 'gruntfile.babel.js': ['grunt', 'orange'], - 'Gruntfile.babel.js': ['grunt', 'orange'], - 'gruntfile.js': ['grunt', 'orange'], - 'Gruntfile.coffee': ['grunt', 'orange'], - 'gruntfile.coffee': ['grunt', 'orange'], - 'ionic.config.json': ['ionic', 'blue'], - 'Ionic.config.json': ['ionic', 'blue'], - 'ionic.project': ['ionic', 'blue'], - 'Ionic.project': ['ionic', 'blue'], - 'platformio.ini': ['platformio', 'orange'], - 'rollup.config.js': ['rollup', 'red'], - 'sass-lint.yml': ['sass', 'pink'], - 'stylelint.config.js': ['stylelint', 'white'], - 'stylelint.config.cjs': ['stylelint', 'white'], - 'yarn.clean': ['yarn', 'blue'], - 'yarn.lock': ['yarn', 'blue'], - 'webpack.config.js': ['webpack', 'blue'], - 'webpack.config.cjs': ['webpack', 'blue'], - 'webpack.config.ts': ['webpack', 'blue'], - 'webpack.config.build.js': ['webpack', 'blue'], - 'webpack.config.build.cjs': ['webpack', 'blue'], - 'webpack.config.build.ts': ['webpack', 'blue'], - 'webpack.common.js': ['webpack', 'blue'], - 'webpack.common.cjs': ['webpack', 'blue'], - 'webpack.common.ts': ['webpack', 'blue'], - 'webpack.dev.js': ['webpack', 'blue'], - 'webpack.dev.cjs': ['webpack', 'blue'], - 'webpack.dev.ts': ['webpack', 'blue'], - 'webpack.prod.js': ['webpack', 'blue'], - 'webpack.prod.cjs': ['webpack', 'blue'], - 'webpack.prod.ts': ['webpack', 'blue'], - 'npm-debug.log': ['npm_ignored', 'ignore'], - }, - extensions: { - '.astro': ['astro', 'red'], - '.bsl': ['bsl', 'red'], - '.mdo': ['mdo', 'red'], - '.cls': ['salesforce', 'blue'], - '.apex': ['salesforce', 'blue'], - '.asm': ['asm', 'red'], - '.s': ['asm', 'red'], - '.bicep': ['bicep', 'blue'], - '.bzl': ['bazel', 'green'], - '.bazel': ['bazel', 'green'], - '.BUILD': ['bazel', 'green'], - '.WORKSPACE': ['bazel', 'green'], - '.bazelignore': ['bazel', 'green'], - '.bazelversion': ['bazel', 'green'], - '.c': ['c', 'blue'], - '.h': ['c', 'purple'], - '.m': ['c', 'yellow'], - '.cs': ['c-sharp', 'blue'], - '.cshtml': ['html', 'blue'], - '.aspx': ['html', 'blue'], - '.ascx': ['html', 'green'], - '.asax': ['html', 'yellow'], - '.master': ['html', 'yellow'], - '.cc': ['cpp', 'blue'], - '.cpp': ['cpp', 'blue'], - '.cxx': ['cpp', 'blue'], - '.c++': ['cpp', 'blue'], - '.hh': ['cpp', 'purple'], - '.hpp': ['cpp', 'purple'], - '.hxx': ['cpp', 'purple'], - '.h++': ['cpp', 'purple'], - '.mm': ['cpp', 'yellow'], - '.clj': ['clojure', 'green'], - '.cljs': ['clojure', 'green'], - '.cljc': ['clojure', 'green'], - '.edn': ['clojure', 'blue'], - '.cfc': ['coldfusion', 'blue'], - '.cfm': ['coldfusion', 'blue'], - '.coffee': ['coffee', 'yellow'], - '.litcoffee': ['coffee', 'yellow'], - '.config': ['config', 'grey-light'], - '.cfg': ['config', 'grey-light'], - '.conf': ['config', 'grey-light'], - '.cr': ['crystal', 'white'], - '.ecr': ['crystal_embedded', 'white'], - '.slang': ['crystal_embedded', 'white'], - '.cson': ['json', 'yellow'], - '.css': ['css', 'blue'], - '.css.map': ['css', 'blue'], - '.sss': ['css', 'blue'], - '.csv': ['csv', 'green'], - '.xls': ['xls', 'green'], - '.xlsx': ['xls', 'green'], - '.cu': ['cu', 'green'], - '.cuh': ['cu', 'purple'], - '.hu': ['cu', 'purple'], - '.cake': ['cake', 'red'], - '.ctp': ['cake_php', 'red'], - '.d': ['d', 'red'], - '.doc': ['word', 'blue'], - '.docx': ['word', 'blue'], - '.ejs': ['ejs', 'yellow'], - '.ex': ['elixir', 'purple'], - '.exs': ['elixir_script', 'purple'], - '.elm': ['elm', 'blue'], - '.ico': ['favicon', 'yellow'], - '.fs': ['f-sharp', 'blue'], - '.fsx': ['f-sharp', 'blue'], - '.gitignore': ['git', 'ignore'], - '.gitconfig': ['git', 'ignore'], - '.gitkeep': ['git', 'ignore'], - '.gitattributes': ['git', 'ignore'], - '.gitmodules': ['git', 'ignore'], - '.go': ['go2', 'blue'], - '.slide': ['go', 'blue'], - '.article': ['go', 'blue'], - '.gd': ['godot', 'blue'], - '.godot': ['godot', 'red'], - '.tres': ['godot', 'yellow'], - '.tscn': ['godot', 'purple'], - '.gradle': ['gradle', 'blue'], - '.groovy': ['grails', 'green'], - '.gsp': ['grails', 'green'], - '.gql': ['graphql', 'pink'], - '.graphql': ['graphql', 'pink'], - '.graphqls': ['graphql', 'pink'], - '.hack': ['hacklang', 'orange'], - '.haml': ['haml', 'red'], - '.handlebars': ['mustache', 'orange'], - '.hbs': ['mustache', 'orange'], - '.hjs': ['mustache', 'orange'], - '.hs': ['haskell', 'purple'], - '.lhs': ['haskell', 'purple'], - '.hx': ['haxe', 'orange'], - '.hxs': ['haxe', 'yellow'], - '.hxp': ['haxe', 'blue'], - '.hxml': ['haxe', 'purple'], - '.html': ['html', 'orange'], - '.jade': ['jade', 'red'], - '.java': ['java', 'red'], - '.class': ['java', 'blue'], - '.classpath': ['java', 'red'], - '.properties': ['java', 'red'], - '.js': ['javascript', 'yellow'], - '.js.map': ['javascript', 'yellow'], - '.spec.js': ['javascript', 'orange'], - '.test.js': ['javascript', 'orange'], - '.es': ['javascript', 'yellow'], - '.es5': ['javascript', 'yellow'], - '.es6': ['javascript', 'yellow'], - '.es7': ['javascript', 'yellow'], - '.cjs': ['javascript', 'yellow'], - '.mjs': ['javascript', 'yellow'], - '.jinja': ['jinja', 'red'], - '.jinja2': ['jinja', 'red'], - '.json': ['json', 'yellow'], - '.jl': ['julia', 'purple'], - '.kt': ['kotlin', 'orange'], - '.kts': ['kotlin', 'orange'], - '.dart': ['dart', 'blue'], - '.less': ['less', 'blue'], - '.liquid': ['liquid', 'green'], - '.ls': ['livescript', 'blue'], - '.lua': ['lua', 'blue'], - '.markdown': ['markdown', 'blue'], - '.md': ['markdown', 'blue'], - '.mdx': ['markdown', 'blue'], - '.argdown': ['argdown', 'blue'], - '.ad': ['argdown', 'blue'], - '.mustache': ['mustache', 'orange'], - '.stache': ['mustache', 'orange'], - '.nim': ['nim', 'yellow'], - '.nims': ['nim', 'yellow'], - '.github-issues': ['github', 'white'], - '.ipynb': ['notebook', 'blue'], - '.njk': ['nunjucks', 'green'], - '.nunjucks': ['nunjucks', 'green'], - '.nunjs': ['nunjucks', 'green'], - '.nunj': ['nunjucks', 'green'], - '.njs': ['nunjucks', 'green'], - '.nj': ['nunjucks', 'green'], - '.npm-debug.log': ['npm', 'ignore'], - '.npmignore': ['npm', 'red'], - '.npmrc': ['npm', 'red'], - '.ml': ['ocaml', 'orange'], - '.mli': ['ocaml', 'orange'], - '.cmx': ['ocaml', 'orange'], - '.cmxa': ['ocaml', 'orange'], - '.odata': ['odata', 'orange'], - '.pl': ['perl', 'blue'], - '.php': ['php', 'purple'], - '.php.inc': ['php', 'purple'], - '.pipeline': ['pipeline', 'orange'], - '.pddl': ['pddl', 'purple'], - '.plan': ['plan', 'green'], - '.happenings': ['happenings', 'blue'], - '.ps1': ['powershell', 'blue'], - '.psd1': ['powershell', 'blue'], - '.psm1': ['powershell', 'blue'], - '.prisma': ['prisma', 'blue'], - '.pug': ['pug', 'red'], - '.pp': ['puppet', 'yellow'], - '.epp': ['puppet', 'yellow'], - '.purs': ['purescript', 'white'], - '.py': ['python', 'blue'], - '.jsx': ['react', 'blue'], - '.spec.jsx': ['react', 'orange'], - '.test.jsx': ['react', 'orange'], - '.cjsx': ['react', 'blue'], - '.spec.tsx': ['react', 'orange'], - '.test.tsx': ['react', 'orange'], - '.re': ['reasonml', 'red'], - '.res': ['rescript', 'red'], - '.resi': ['rescript', 'pink'], - '.R': ['R', 'blue'], - '.rmd': ['R', 'blue'], - '.rb': ['ruby', 'red'], - '.erb': ['html_erb', 'red'], - '.erb.html': ['html_erb', 'red'], - '.html.erb': ['html_erb', 'red'], - '.rs': ['rust', 'grey-light'], - '.sass': ['sass', 'pink'], - '.scss': ['sass', 'pink'], - '.springBeans': ['spring', 'green'], - '.slim': ['slim', 'orange'], - '.smarty.tpl': ['smarty', 'yellow'], - '.tpl': ['smarty', 'yellow'], - '.sbt': ['sbt', 'blue'], - '.scala': ['scala', 'red'], - '.sol': ['ethereum', 'blue'], - '.styl': ['stylus', 'green'], - '.svelte': ['svelte', 'red'], - '.swift': ['swift', 'orange'], - '.sql': ['db', 'pink'], - '.soql': ['db', 'blue'], - '.tf': ['terraform', 'purple'], - '.tf.json': ['terraform', 'purple'], - '.tfvars': ['terraform', 'purple'], - '.tfvars.json': ['terraform', 'purple'], - '.tex': ['tex', 'blue'], - '.sty': ['tex', 'yellow'], - '.dtx': ['tex', 'orange'], - '.ins': ['tex', 'white'], - '.txt': ['default', 'white'], - '.toml': ['config', 'grey-light'], - '.twig': ['twig', 'green'], - '.ts': ['typescript', 'blue'], - '.tsx': ['typescript', 'blue'], - '.spec.ts': ['typescript', 'orange'], - '.test.ts': ['typescript', 'orange'], - '.vala': ['vala', 'grey-light'], - '.vapi': ['vala', 'grey-light'], - '.component': ['html', 'orange'], - '.vue': ['vue', 'green'], - '.wasm': ['wasm', 'purple'], - '.wat': ['wat', 'purple'], - '.xml': ['xml', 'orange'], - '.yml': ['yml', 'purple'], - '.yaml': ['yml', 'purple'], - '.pro': ['prolog', 'orange'], - '.zig': ['zig', 'orange'], - '.jar': ['zip', 'red'], - '.zip': ['zip', 'grey-light'], - '.wgt': ['wgt', 'blue'], - '.ai': ['illustrator', 'yellow'], - '.psd': ['photoshop', 'blue'], - '.pdf': ['pdf', 'red'], - '.eot': ['font', 'red'], - '.ttf': ['font', 'red'], - '.woff': ['font', 'red'], - '.woff2': ['font', 'red'], - '.avif': ['image', 'purple'], - '.gif': ['image', 'purple'], - '.jpg': ['image', 'purple'], - '.jpeg': ['image', 'purple'], - '.png': ['image', 'purple'], - '.pxm': ['image', 'purple'], - '.svg': ['svg', 'purple'], - '.svgx': ['image', 'purple'], - '.tiff': ['image', 'purple'], - '.webp': ['image', 'purple'], - '.sublime-project': ['sublime', 'orange'], - '.sublime-workspace': ['sublime', 'orange'], - '.code-search': ['code-search', 'purple'], - '.sh': ['shell', 'green'], - '.zsh': ['shell', 'green'], - '.fish': ['shell', 'green'], - '.zshrc': ['shell', 'green'], - '.bashrc': ['shell', 'green'], - '.mov': ['video', 'pink'], - '.ogv': ['video', 'pink'], - '.webm': ['video', 'pink'], - '.avi': ['video', 'pink'], - '.mpg': ['video', 'pink'], - '.mp4': ['video', 'pink'], - '.mp3': ['audio', 'purple'], - '.ogg': ['audio', 'purple'], - '.wav': ['audio', 'purple'], - '.flac': ['audio', 'purple'], - '.3ds': ['svg', 'blue'], - '.3dm': ['svg', 'blue'], - '.stl': ['svg', 'blue'], - '.obj': ['svg', 'blue'], - '.dae': ['svg', 'blue'], - '.bat': ['windows', 'blue'], - '.cmd': ['windows', 'blue'], - '.babelrc': ['babel', 'yellow'], - '.babelrc.js': ['babel', 'yellow'], - '.babelrc.cjs': ['babel', 'yellow'], - '.bazelrc': ['bazel', 'grey'], - '.bowerrc': ['bower', 'orange'], - '.codeclimate.yml': ['code-climate', 'green'], - '.eslintrc': ['eslint', 'purple'], - '.eslintrc.js': ['eslint', 'purple'], - '.eslintrc.cjs': ['eslint', 'purple'], - '.eslintrc.yaml': ['eslint', 'purple'], - '.eslintrc.yml': ['eslint', 'purple'], - '.eslintrc.json': ['eslint', 'purple'], - '.eslintignore': ['eslint', 'grey'], - '.firebaserc': ['firebase', 'orange'], - '.gitlab-ci.yml': ['gitlab', 'orange'], - '.jshintrc': ['javascript', 'blue'], - '.jscsrc': ['javascript', 'blue'], - '.stylelintrc': ['stylelint', 'white'], - '.stylelintrc.json': ['stylelint', 'white'], - '.stylelintrc.yaml': ['stylelint', 'white'], - '.stylelintrc.yml': ['stylelint', 'white'], - '.stylelintrc.js': ['stylelint', 'white'], - '.stylelintignore': ['stylelint', 'grey'], - '.direnv': ['config', 'grey-light'], - '.env': ['config', 'grey-light'], - '.static': ['config', 'grey-light'], - '.editorconfig': ['config', 'grey-light'], - '.slugignore': ['config', 'grey-light'], - '.tmp': ['clock', 'grey-light'], - '.htaccess': ['config', 'grey-light'], - '.key': ['lock', 'green'], - '.cert': ['lock', 'green'], - '.cer': ['lock', 'green'], - '.crt': ['lock', 'green'], - '.pem': ['lock', 'green'], - '.DS_Store': ['ignored', 'ignore'], - }, - partials: [ - ['TODO.md', ['todo', 'blue']], - ['TODO.txt', ['todo', 'blue']], - ['TODO', ['todo', 'blue']], - ['Procfile', ['heroku', 'purple']], - ['cmakelists.txt', ['makefile', 'blue']], - ['CMakeLists.txt', ['makefile', 'blue']], - ['CMAKELISTS.txt', ['makefile', 'blue']], - ['CMAKELISTS.TXT', ['makefile', 'blue']], - ['omakefile', ['makefile', 'grey-light']], - ['OMakefile', ['makefile', 'grey-light']], - ['OMAKEFILE', ['makefile', 'grey-light']], - ['qmakefile', ['makefile', 'purple']], - ['QMakefile', ['makefile', 'purple']], - ['QMAKEFILE', ['makefile', 'purple']], - ['makefile', ['makefile', 'orange']], - ['Makefile', ['makefile', 'orange']], - ['MAKEFILE', ['makefile', 'orange']], - ['CONTRIBUTING.md', ['license', 'red']], - ['CONTRIBUTING.txt', ['license', 'red']], - ['CONTRIBUTING', ['license', 'red']], - ['COMPILING.md', ['license', 'orange']], - ['COMPILING.txt', ['license', 'orange']], - ['COMPILING', ['license', 'orange']], - ['COPYING.md', ['license', 'yellow']], - ['COPYING.txt', ['license', 'yellow']], - ['COPYING', ['license', 'yellow']], - ['LICENCE.md', ['license', 'yellow']], - ['LICENSE.md', ['license', 'yellow']], - ['LICENCE.txt', ['license', 'yellow']], - ['LICENSE.txt', ['license', 'yellow']], - ['LICENCE', ['license', 'yellow']], - ['LICENSE', ['license', 'yellow']], - ['gulpfile.js', ['gulp', 'red']], - ['gulpfile', ['gulp', 'red']], - ['Gulpfile', ['gulp', 'red']], - ['GULPFILE', ['gulp', 'red']], - ['docker-compose.override.yaml', ['docker', 'pink']], - ['docker-compose.override.yml', ['docker', 'pink']], - ['docker-compose.yaml', ['docker', 'pink']], - ['docker-compose.yml', ['docker', 'pink']], - ['docker-healthcheck', ['docker', 'green']], - ['.dockerignore', ['docker', 'grey']], - ['DOCKERFILE', ['docker', 'blue']], - ['Dockerfile', ['docker', 'blue']], - ['dockerfile', ['docker', 'blue']], - ['gemfile', ['ruby', 'red']], - ['Gemfile', ['ruby', 'red']], - ['mix', ['hex', 'red']], - ], - default: ['default', 'white'], -}; - -const rawIcons = { - astro: - '', - bsl: '', - mdo: '', - salesforce: - '', - asm: '', - bicep: - '', - bazel: - '', - c: '', - 'c-sharp': - '', - html: '', - cpp: '', - clojure: - '', - coldfusion: - '', - coffee: - '', - config: - '', - crystal: - '', - crystal_embedded: - '', - json: '', - css: '', - csv: '', - xls: '', - cu: '', - cake: '', - cake_php: - '', - d: '', - word: '', - ejs: '', - elixir: - '', - elixir_script: - '', - hex: '', - elm: '', - favicon: - '', - 'f-sharp': - '', - git: '', - go2: '', - go: '', - godot: - '', - gradle: - '', - grails: - '', - graphql: - '', - hacklang: - '', - haml: '', - mustache: - '', - haskell: - '', - haxe: '', - jade: '', - java: '', - javascript: - '', - jinja: - '', - julia: - '', - karma: - '', - kotlin: - '', - dart: '', - less: '', - liquid: - '', - livescript: - '', - lua: '', - markdown: - '', - argdown: - '', - info: '', - clock: - '', - maven: - '', - nim: '', - github: - '', - notebook: - '', - nunjucks: - '', - npm: '', - ocaml: - '', - odata: - '', - perl: '', - php: '', - pipeline: - '', - pddl: '', - plan: '', - happenings: - '', - powershell: - '', - prisma: - '', - pug: '', - puppet: - '', - purescript: - '', - python: - '', - react: - '', - reasonml: - '', - rescript: - '', - R: '', - ruby: '', - html_erb: - '', - rust: '', - sass: '', - spring: - '', - slim: '', - smarty: - '', - sbt: '', - scala: - '', - ethereum: - '', - stylus: - '', - svelte: - '', - swift: - '', - db: '', - terraform: - '', - tex: '', - default: - '', - twig: '', - typescript: - '', - tsconfig: - '', - vala: '', - vue: '', - wasm: '', - wat: '', - xml: '', - yml: '', - prolog: - '', - zig: '', - zip: '', - wgt: '', - illustrator: - '', - photoshop: - '', - pdf: '', - font: '', - image: - '', - svg: '', - sublime: - '', - 'code-search': - '', - shell: - '', - video: - '', - audio: - '', - windows: - '', - jenkins: - '', - babel: - '', - bower: - '', - docker: - '', - 'code-climate': - '', - eslint: - '', - firebase: - '', - firefox: - '', - gitlab: - '', - grunt: - '', - gulp: '', - ionic: - '', - platformio: - '', - rollup: - '', - stylelint: - '', - yarn: '', - webpack: - '', - lock: '', - license: - '', - makefile: - '', - heroku: - '', - todo: '', - npm_ignored: - '', - ignored: - '', -}; - -type IconDetails = [string, string]; - -interface SetiTheme { - blue: string; - grey: string; - 'grey-light': string; - green: string; - orange: string; - pink: string; - purple: string; - red: string; - white: string; - yellow: string; - ignore: string; -} - -type Color = keyof SetiTheme; - -interface Icon { - svg: string; - color: Color; -} - -const definitions = rawDefinitions as unknown as { - default: IconDetails; - extensions: { [extension: string]: IconDetails }; - files: { [file: string]: IconDetails }; - partials: [string, IconDetails][]; -}; -const icons = rawIcons as unknown as { - [icon: string]: string; -}; - -const getDetails = (fileName: string): IconDetails => { - if (definitions.files[fileName]) { - return definitions.files[fileName]; - } - let extension = fileName.slice(fileName.indexOf('.')); - while (extension !== '') { - if (definitions.extensions[extension]) { - return definitions.extensions[extension]; - } - // look for next "." - extension = extension.slice(1); - extension = extension.slice(extension.indexOf('.')); - } - for (const partial of definitions.partials) { - if (fileName.indexOf(partial[0]) > -1) { - return partial[1]; - } - } - return definitions.default; -}; - -export const getIcon = (fileName: string): Icon => { - const [icon, color] = getDetails(fileName); - return { svg: icons[icon], color } as Icon; -}; diff --git a/src/components/internal/rehype-file-tree.ts b/src/components/internal/rehype-file-tree.ts deleted file mode 100644 index b61dde3ca..000000000 --- a/src/components/internal/rehype-file-tree.ts +++ /dev/null @@ -1,116 +0,0 @@ -import { fromHtml } from 'hast-util-from-html'; -import { toString } from 'hast-util-to-string'; -import { h } from 'hastscript'; -import type { Element, HChild } from 'hastscript/lib/core'; -import { rehype } from 'rehype'; -import { CONTINUE, SKIP, visit } from 'unist-util-visit'; -import { getIcon } from './file-tree-icons'; - -/** Make a text node with the pass string as its contents. */ -const Text = (value = ''): { type: 'text'; value: string } => ({ - type: 'text', - value, -}); - -/** Convert an HTML string containing an SVG into a HAST element node. */ -const makeSVGIcon = (svgString: string) => { - const root = fromHtml(svgString, { fragment: true }); - const svg = root.children[0] as Element; - svg.properties = { - ...svg.properties, - width: 16, - height: 16, - class: 'tree-icon', - 'aria-hidden': 'true', - }; - return svg; -}; - -const FileIcon = (filename: string) => { - const { svg } = getIcon(filename); - return makeSVGIcon(svg); -}; - -const FolderIcon = makeSVGIcon( - '' -); - -export const fileTreeProcessor = rehype().use(() => (tree, file) => { - const { directoryLabel } = file.data as { directoryLabel: string }; - visit(tree, 'element', (node) => { - // Strip nodes that only contain newlines - node.children = node.children.filter( - (child) => child.type === 'comment' || child.type !== 'text' || !/^\n+$/.test(child.value) - ); - - if (node.tagName !== 'li') return CONTINUE; - - // Ensure node has properties so we can assign classes later. - if (!node.properties) node.properties = {}; - - const [firstChild, ...otherChildren] = node.children; - - const comment: HChild[] = []; - if (firstChild?.type === 'text') { - const [filename, ...fragments] = firstChild.value.split(' '); - firstChild.value = filename || ''; - comment.push(fragments.join(' ')); - } - const subTreeIndex = otherChildren.findIndex( - (child) => child.type === 'element' && child.tagName === 'ul' - ); - const commentNodes = - subTreeIndex > -1 ? otherChildren.slice(0, subTreeIndex) : [...otherChildren]; - otherChildren.splice(0, subTreeIndex > -1 ? subTreeIndex : otherChildren.length); - comment.push(...commentNodes); - - const firstChildTextContent = toString(firstChild); - - // Decide a node is a directory if it ends in a `/` or contains another list. - const isDirectory = - /\/\s*$/.test(firstChildTextContent) || - otherChildren.some((child) => child.type === 'element' && child.tagName === 'ul'); - const isPlaceholder = /^\s*(\.{3}|…)\s*$/.test(firstChildTextContent); - const isHighlighted = firstChild.type === 'element' && firstChild.tagName === 'strong'; - const hasContents = otherChildren.length > 0; - - const fileExtension = isDirectory ? 'dir' : firstChildTextContent.trim().split('.').pop() || ''; - - const icon = h('span', isDirectory ? FolderIcon : FileIcon(firstChildTextContent)); - if (!icon.properties) icon.properties = {}; - if (isDirectory) { - icon.children.unshift(h('span', { class: 'sr-only' }, directoryLabel)); - } - - node.properties.class = isDirectory ? 'directory' : 'file'; - if (isPlaceholder) node.properties.class += ' empty'; - node.properties['data-filetype'] = fileExtension; - - const treeEntry = h( - 'span', - { class: 'tree-entry' }, - h('span', { class: isHighlighted ? 'highlight' : '' }, [ - isPlaceholder ? null : icon, - firstChild, - ]), - Text(comment.length > 0 ? ' ' : ''), - comment.length > 0 ? h('span', { class: 'comment' }, ...comment) : Text() - ); - - if (isDirectory) { - node.children = [ - h('details', { open: hasContents }, [ - h('summary', treeEntry), - ...(hasContents ? otherChildren : [h('ul', h('li', '…'))]), - ]), - ]; - // Continue down the tree. - return CONTINUE; - } - - node.children = [treeEntry, ...otherChildren]; - - // Files can’t contain further files or directories, so skip iterating children. - return SKIP; - }); -}); diff --git a/src/components/starlight/MarkdownContent.astro b/src/components/starlight/MarkdownContent.astro deleted file mode 100644 index 8f3b7a4fa..000000000 --- a/src/components/starlight/MarkdownContent.astro +++ /dev/null @@ -1,145 +0,0 @@ ---- -import type { Props } from '@astrojs/starlight/props'; -import '@astrojs/starlight/style/markdown.css'; -// import BackendGuidesNav from '../BackendGuidesNav.astro'; -import CMSGuidesNav from '../CMSGuidesNav.astro'; -import AnalyticsGuidesNav from '../AnalyticsGuidesNav.astro'; -import ThemesGuidesNav from '../ThemesGuidesNav.astro'; -import DeployGuidesNav from '../DeployGuidesNav.astro'; -import IntegrationsNav from '../IntegrationsNav.astro'; -// import MigrationGuidesNav from '../MigrationGuidesNav.astro'; -import { getPageCategory } from '~/util/getPageCategory'; -import { useTranslations } from '~/i18n/util'; - -const t = useTranslations(Astro); - -const { entry } = Astro.props; ---- - -
        - - - - { - entry.data.type === 'cms' && ( - <> -

        {t('cms.navTitle')}

        - - - ) - } - { - entry.data.type === 'analytics' && ( - <> -

        {t('analytics.navTitle')}

        - - - ) - } - { - entry.data.type === 'themes' && ( - <> -

        {t('themes.navTitle')}

        - - - ) - } - { - entry.data.type === 'deploy' && ( - <> -

        {t('deploy.altSectionTitle')}

        - - - ) - } - { - entry.data.type === 'integration' && ( - <> -

        {t('integrations.navTitle')}

        - - - ) - } - - -
        - - diff --git a/src/content.ts b/src/content.ts deleted file mode 100644 index 80f6f2871..000000000 --- a/src/content.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { getCollection } from 'astro:content'; -import { isEnglishEntry, isKoreanEntry, isRecipeEntry, isTutorialEntry, isCmsEntry, isAnalyticsEntry, isDeployEntry, isThemeEntry, isIntegrationEntry } from './content/config'; - -export const allPages = await getCollection('docs', (entry) => { - if (import.meta.env.PUBLIC_TWO_LANG) { - // Build for two languages only to speed up Astro's smoke tests - return isEnglishEntry(entry) || isKoreanEntry(entry); - } else { - return true; - } -}); -export const tutorialPages = allPages.filter(isTutorialEntry); -export const recipePages = allPages.filter(isRecipeEntry); -export const englishPages = allPages.filter(isEnglishEntry); -export const cmsPages = allPages.filter(isCmsEntry); -export const analyticsPages = allPages.filter(isAnalyticsEntry); -export const deployPages = allPages.filter(isDeployEntry); -export const themesPages = allPages.filter(isThemeEntry); -export const integrationPages = allPages.filter(isIntegrationEntry); diff --git a/src/content/config.ts b/src/content/config.ts deleted file mode 100644 index a23309b74..000000000 --- a/src/content/config.ts +++ /dev/null @@ -1,154 +0,0 @@ -import { docsSchema } from '@astrojs/starlight/schema'; -import { defineCollection, z, type CollectionEntry } from 'astro:content'; - -export const baseSchema = z.object({ - type: z.literal('base').optional().default('base'), - i18nReady: z.boolean().default(false), - githubURL: z.string().url().optional(), - hasREADME: z.boolean().optional(), - // Extends Starlight’s default `hero` schema with custom fields. - /* - hero: z - .object({ - facepile: z.object({ - tagline: z.string(), - linkText: z.string(), - link: z.string(), - }), - }) - .optional(), - */ -}); - -export const deploySchema = baseSchema.extend({ - type: z.literal('deploy'), - stub: z.boolean().default(false), - service: z.string(), -}); - -export const backendSchema = baseSchema.extend({ - type: z.literal('backend'), - stub: z.boolean().default(false), - service: z.string(), -}); - -export const cmsSchema = baseSchema.extend({ - type: z.literal('cms'), - stub: z.boolean().default(false), - service: z.string(), -}); - -export const analyticsSchema = baseSchema.extend({ - type: z.literal('analytics'), - stub: z.boolean().default(false), - service: z.string(), -}); - -export const themeSchema = baseSchema.extend({ - type: z.literal('themes'), - stub: z.boolean().default(false), - service: z.string(), -}); - -export const integrationSchema = baseSchema.extend({ - type: z.literal('integration'), - title: z - .string() - .refine( - (title) => title.startsWith('@thulite/'), - '"title" must start with "@thulite/" for integration docs.' - ), - stub: z.boolean().default(false), - service: z.string(), - category: z.enum(['renderer', 'theme', 'other']), -}); - -export const migrationSchema = baseSchema.extend({ - type: z.literal('migration'), - framework: z.string(), - stub: z.boolean().default(false), -}); - -export const tutorialSchema = baseSchema.extend({ - type: z.literal('tutorial'), - unitTitle: z.string().optional(), -}); - -export const recipeSchema = baseSchema.extend({ - type: z.literal('recipe'), - description: z.string(), -}); - -export const docsCollectionSchema = z.union([ - baseSchema, - backendSchema, - cmsSchema, - analyticsSchema, - themeSchema, - integrationSchema, - migrationSchema, - tutorialSchema, - deploySchema, - recipeSchema, -]); - -export type DocsEntryData = z.infer; - -export type DocsEntryType = DocsEntryData['type']; - -export type DocsEntry = CollectionEntry<'docs'> & { - data: Extract; -}; - -export function createIsDocsEntry(type: T) { - return (entry: CollectionEntry<'docs'>): entry is DocsEntry => entry.data.type === type; -} - -export type DeployEntry = DocsEntry<'deploy'>; - -export type BackendEntry = DocsEntry<'backend'>; - -export type CmsEntry = DocsEntry<'cms'>; - -export type AnalyticsEntry = DocsEntry<'analytics'>; - -export type ThemeEntry = DocsEntry<'themes'>; - -export type IntegrationEntry = DocsEntry<'integration'>; - -export type MigrationEntry = DocsEntry<'migration'>; - -export type TutorialEntry = DocsEntry<'tutorial'>; - -export type RecipeEntry = DocsEntry<'recipe'>; - -export type IntegrationCategory = z.infer['category']; - -export const isBackendEntry = createIsDocsEntry('backend'); - -export const isCmsEntry = createIsDocsEntry('cms'); - -export const isAnalyticsEntry = createIsDocsEntry('analytics'); - -export const isThemeEntry = createIsDocsEntry('themes'); - -export const isDeployEntry = createIsDocsEntry('deploy'); - -export const isIntegrationEntry = createIsDocsEntry('integration'); - -export const isTutorialEntry = createIsDocsEntry('tutorial'); - -export const isMigrationEntry = createIsDocsEntry('migration'); - -export const isRecipeEntry = createIsDocsEntry('recipe'); - -export function createIsLangEntry(lang: string) { - return (entry: CollectionEntry<'docs'>): boolean => entry.slug.startsWith(lang + '/'); -} - -export const isEnglishEntry = createIsLangEntry('en'); -export const isKoreanEntry = createIsLangEntry('ko'); - -export const collections = { - docs: defineCollection({ schema: docsSchema({ extend: docsCollectionSchema }) }), -}; diff --git a/src/content/docs/404.md b/src/content/docs/404.md deleted file mode 100644 index 17ab03cce..000000000 --- a/src/content/docs/404.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Not found -template: splash -editUrl: false -hero: - title: '404' - tagline: Houston, we have a problem. We couldn’t find that page.
        Check the URL or try using the search bar. - actions: - - text: Go home - icon: right-arrow - link: / - variant: primary ---- \ No newline at end of file diff --git a/src/content/docs/basics/commands.mdx b/src/content/docs/basics/commands.mdx deleted file mode 100644 index 510189c5b..000000000 --- a/src/content/docs/basics/commands.mdx +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: Commands -description: A reference page in my new Starlight docs site. -sidebar: - order: 5 ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -You can use the `scripts` in `package.json` to create new content and develop, format, build, and preview your project from a terminal window. - -## `package.json` scripts - -The following scripts for the most common commands (`create`, `dev`, `format`, `build`, and `preview`) are added for you automatically when you create a project using [the `create thulite` wizard](/install/auto/#1-run-the-setup-wizard). - -When you follow the instructions to [install Thulite manually](/install/manual/#2-install-thulite-prettier-and-vite), you are instructed to add these scripts yourself. You can also add more scripts to this list manually for any commands you use frequently. - -```json title="package.json" -{ - "scripts": { - "create": "hugo new", - "dev": "hugo server --disableFastRender --noHTTPCache", - "format": "prettier **/** -w -c", - "build": "hugo --minify --gc", - "preview": "vite preview --outDir public" - } -} -``` - -You will often use these commands, or the scripts that run them, without any flags. Add flags to the command when you want to customize the command’s behavior. For example, you may wish to start the development server on a different port, or build your site with verbose logs for debugging. - - - -```bash -# Run the dev server on port 3000 using the `dev` script in `package.json` -npm run dev -- --port 3000 - -# Build your site with verbose logs using the `build` script in `package.json` -npm run build -- --verbose -``` - - -```bash -# run the dev server on port 3000 using the `dev` script in `package.json` -pnpm dev --port 3000 - -# build your site with verbose logs using the `build` script in `package.json` -pnpm build --verbose -``` - - -```bash -# run the dev server on port 3000 using the `dev` script in `package.json` -yarn dev --port 3000 - -# build your site with verbose logs using the `build` script in `package.json` -yarn build --verbose -``` - - - -:::note -The extra `--` before any flag is necessary for `npm` to pass your flags to the script. -::: - -:::note -You can find the available flags for a command on the command's linked script page below. -::: - -### `create` - -Run the following command in your terminal to [create new content](https://gohugo.io/commands/hugo_new/): - - - -```bash -# npm run create [path] [flags] -npm run create -``` - - -```bash -# pnpm run create [path] [flags] -pnpm run create -``` - - -```bash -# yarn run create [path] [flags] -yarn run create -``` - - - -For example, create an about page in the `content` directory of your project: - - - -```bash -npm run create about.md -``` - - -```bash -pnpm run create about.md -``` - - -```bash -yarn run create about.md -``` - - - -### `dev` - -Run the following command in your terminal to start the [Hugo development server](https://gohugo.io/commands/hugo_server/): - - - -```bash -# npm run dev [flags] -npm run dev -``` - - -```bash -# pnpm dev [flags] -pnpm dev -``` - - -```bash -# yarn dev [flags] -yarn dev -``` - - - -### `format` - -Run the following command in your terminal to run the [Prettier code formatter](https://prettier.io/docs/en/cli): - - - -```bash -# npm run format [flags] -npm run format -``` - - -```bash -# pnpm format [flags] -pnpm format -``` - - -```bash -# yarn format [flags] -yarn format -``` - - - -### `build` - -Run the following command in your terminal to [create a production build](https://gohugo.io/commands/hugo/): - - - -```bash -# npm run build [flags] -npm run build -``` - - -```bash -# pnpm build [flags] -pnpm build -``` - - -```bash -# yarn build [flags] -yarn build -``` - - - -### `preview` - -Run the following command in your terminal to [locally preview the production build](https://vitejs.dev/guide/cli.html#vite-preview): - - - -```bash -# npm run preview [flags] -npm run preview -``` - - -```bash -# pnpm preview [flags] -pnpm preview -``` - - -```bash -# yarn preview [flags] -yarn preview -``` - - diff --git a/src/content/docs/basics/configuration.mdx b/src/content/docs/basics/configuration.mdx deleted file mode 100644 index b35874dc7..000000000 --- a/src/content/docs/basics/configuration.mdx +++ /dev/null @@ -1,101 +0,0 @@ ---- -title: Configuration -description: A reference page in my new Starlight docs site. -sidebar: - order: 4 ---- -import FileTree from '~/components/FileTree.astro'; -import { LinkCard, CardGrid } from '@astrojs/starlight/components'; - -Here's how a Thulite project configuration is organized, and the configuration files you will find in your new project. - -## Example Project Configuration Tree - -A common Thulite project configuration directory might look like this: - - - -- config - - _default - - hugo.toml - - markup.toml - - menus.toml - - module.toml - - params.toml - - next - - hugo.toml - - params.toml - - production - - hugo.toml - - params.toml -- babel.config.js -- postcss.config.js - - - -### `config/_default/hugo.toml` - -The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. - -### `config/_default/markup.toml` - -The `markup.toml` file is where you [configure rendering](https://gohugo.io/getting-started/configuration-markup/) of markup to HTML. - -### `config/_default/menus.toml` - -The `menus.toml` file is where you [define menu entries](https://gohugo.io/content-management/menus/). - -### `config/_default/module.toml` - -The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. - -### `config/_default/params.toml` - -The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. - -### `config/next/` - -Overrides for your next environment. - -### `config/production/` - -Overrides for your production environment. - -:::tip -Set `baseurl` in `hugo.toml` to the absolute URL (protocol, host, path, and trailing slash) of your published site (e.g., https://www.example.org/docs/). -::: - -### `babel.config.js` - -The `babel.config.js` file is where you configure [Babel](https://babeljs.io/). Thulite supports processing JavaScript files with Babel. - -### `postcss.config.js` - -The `postcss.config.js` file is where you configure [PostCSS](https://postcss.org/). Thulite uses PostCSS to add vendor prefixes to CSS rules using [Autoprefixer](https://github.com/postcss/autoprefixer) and to remove unused CSS from your project using [PurgeCSS](https://purgecss.com/). - -## Hugo documentation - -Thulite leverages Hugo's [configuration](https://gohugo.io/getting-started/configuration/). Here are some relevant topics: - - - - - - - diff --git a/src/content/docs/basics/layouts.mdx b/src/content/docs/basics/layouts.mdx deleted file mode 100644 index 05cbb8e57..000000000 --- a/src/content/docs/basics/layouts.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Layouts -description: A reference page in my new Starlight docs site. -sidebar: - order: 2 ---- -import { LinkCard, CardGrid } from '@astrojs/starlight/components'; - -__Layouts__ are files that live in the `layouts` directory of your Thulite project. They are used to provide a reusable UI structure, such as a page template. - -## Examples - -For example, the default Thulite [base template](https://gohugo.io/templates/base/#define-the-base-template) looks like this: - -```html title="baseof.html" - - - {{ partial "head/head.html" . }} - {{ partial "head/body-class.html" . }} - - {{ block "main" . }}{{ end }} - {{ if templates.Exists "partials/footer/script-footer.html" -}} - {{ partial "footer/script-footer.html" . }} - {{ else -}} - {{ partial "footer/script-footer-core.html" . }} - {{ end -}} - - -``` - -## Hugo documentation - -Thulite leverages Hugo's [templates](https://gohugo.io/templates/). Here are some relevant topics: - - - - - - - - - diff --git a/src/content/docs/basics/menus.mdx b/src/content/docs/basics/menus.mdx deleted file mode 100644 index c4f26d3c9..000000000 --- a/src/content/docs/basics/menus.mdx +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Menus -description: A reference page in my new Starlight docs site. -sidebar: - order: 3 ---- -import { LinkCard, CardGrid } from '@astrojs/starlight/components'; - -Create __menus__ by defining entries, localizing each entry, and rendering the resulting data structure. - - -## Examples - -For example, to define entries for the main menu: - -```toml title="config/_default/menus.toml" -[[main]] - name = 'Home' - pageRef = '/' - weight = 10 - -[[main]] - name = 'Products' - pageRef = '/products' - weight = 20 - -[[main]] - name = 'Services' - pageRef = '/services' - weight = 30 - -``` - -## Hugo documentation - -Thulite leverages Hugo's [menus](https://gohugo.io/content-management/menus/). Here are some relevant topics: - - - - - - diff --git a/src/content/docs/basics/pages.mdx b/src/content/docs/basics/pages.mdx deleted file mode 100644 index 702cc3b3f..000000000 --- a/src/content/docs/basics/pages.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Pages -description: A reference page in my new Starlight docs site. -sidebar: - order: 1 ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; -import { LinkCard, CardGrid } from '@astrojs/starlight/components'; - -__Pages__ are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for every page in your website. - -## Create new content - -You can create new content by running the [`create` command](/basics/commands/#create) in your terminal. - -### Examples - -For example, create an about page using a [leaf bundle](https://gohugo.io/content-management/page-bundles/#leaf-bundles): - - - -```bash -npm run create about/index.md -``` - - -```bash -pnpm run create about/index.md -``` - - -```bash -yarn run create about/index.md -``` - - - -Or, create a home page using a [branch bundle](https://gohugo.io/content-management/page-bundles/#branch-bundles): - - - -```bash -npm run create _index.md -``` - - -```bash -pnpm run create _index.md -``` - - -```bash -yarn run create _index.md -``` - - - -## Hugo documentation - -Thulite leverages Hugo's [content management](https://gohugo.io/content-management/). Here are some relevant topics: - - - - - - - \ No newline at end of file diff --git a/src/content/docs/basics/project-structure.mdx b/src/content/docs/basics/project-structure.mdx deleted file mode 100644 index 820018960..000000000 --- a/src/content/docs/basics/project-structure.mdx +++ /dev/null @@ -1,92 +0,0 @@ ---- -title: Project Structure -description: A reference page in my new Starlight docs site. -sidebar: - order: 0 ---- -import FileTree from '~/components/FileTree.astro'; - -Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' existing file structure. - -Here's how a Thulite project is organized, and some files you will find in your new project. - -## Directories and Files - -Thulite leverages the Hugo [directory structure](https://gohugo.io/getting-started/directory-structure/) for your project. Every Thulite project root should include the following directories and files: - -- `assets` - Your project assets (scripts, styles, images, etc.) -- `config` - Your project's configuration files (Thulite, Hugo, PostCSS, etc.) -- `content` - Your project content (pages, posts, etc.) -- `layouts` - Your project layouts (partials, shortcodes, etc.) -- `static` - Your non-code, unprocessed assets (fonts, icons, etc.) -- `package.json` - A project manifest. - -## Example Project Tree - -A common Thulite project directory might look like this: - - - -- assets/scss - - common - - _custom.scss - - _variables-custom.scss - - app.scss -- config - - _default - - hugo.toml - - module.toml - - params.toml -- content - - _index.md -- layouts - - index.html -- static - - favicon.svg -- package.json - - - - -### `assets/scss` - -It is a common convention to store your CSS or Sass files in a `assets/scss` directory, but this is not required. As long as your styles live somewhere in the `assets/` directory and are imported correctly, Thulite will handle and optimize them. - -The `app.scss` file is used to specify the CSS or Sass files to import (or use). Put your custom (S)CSS variables in `common/variables-custom` and custom (S)CSS code in `common/_custom.scss`. - -### `config/_default/` - -The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. - -The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. - -The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. - -### `content/` - -The `content/` directory is where you store [pages](/basics/pages/), organized in sections or page bundles (leaf bundles or branch bundles) and can contain page resources. - -### `layouts/` - -[Layouts](/basics/layouts/) are Thulite templates that define the UI structure shared by one or more pages. - -### `static/` - -The `static/` directory is for files and assets that do not need to be processed during Thulite' build process. These files will be copied into the build folder untouched. - -This behavior makes `static/` ideal for common assets like images and fonts, or special files such as `robots.txt` and `manifest.webmanifest`. - -You can place CSS and JavaScript in your `static/` directory, but be aware that those files will not be bundled or optimized in your final build. - -:::tip -As a general rule, any CSS or JavaScript that you write yourself should live in your `assets/` directory. -::: - - -### `package.json` - -This is a file used by JavaScript package managers to manage your dependencies. It also defines the scripts that are commonly used to run Thulite (ex: `npm run dev`, `npm run build`). - -There are [two kinds of dependencies](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) you can specify in a `package.json`: `dependencies` and `devDependencies`. In most cases, these work the same: Thulite needs all dependencies at build time, and your package manager will install both. We recommend putting all of your dependencies in `dependencies` to start, and only use `devDependencies` if you find a specific need to do so. - -For help creating a new `package.json` file for your project, check out the [manual setup](/install/manual/) instructions. \ No newline at end of file diff --git a/src/content/docs/concepts/dependencies.md b/src/content/docs/concepts/dependencies.md deleted file mode 100644 index 9808aa8b9..000000000 --- a/src/content/docs/concepts/dependencies.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Dependencies -description: A guide in my new Starlight docs site. -sidebar: - order: 1 ---- - -Thulite helps you [build scalable and maintainable websites](/concepts/why-thulite/#solid-architecture) and __leverages npm to [explicitly declare and isolate dependencies](https://12factor.net/dependencies)__. - -## Explicit declaration and isolation - -The ["Dependencies"](https://12factor.net/dependencies) section of the Twelve-Factor App methodology emphasizes the importance of explicitly declaring and isolating dependencies in an application. This involves using a dependency declaration manifest and an isolation tool to ensure that no implicit dependencies from the system environment affect the app. This practice ensures consistency across different environments and simplifies setup for new developers. Additionally, twelve-factor apps avoid relying on the implicit existence of system tools, instead bundling necessary tools within the app itself to ensure compatibility and reliability. - -## JavaScript - -For a JavaScript project following the Twelve-Factor App methodology, dependencies should be explicitly declared in a `package.json` file. This file acts as the dependency declaration manifest, listing all necessary packages. Isolation is achieved by using a tool like [npm](https://www.npmjs.com/), which installs dependencies in a `node_modules` directory within the project. This ensures that the app does not rely on system-wide packages, maintaining consistency across different environments. Additionally, any required scripts or tools should be included as npm scripts to avoid system tool dependencies. - -### Thulite - -Thulite' [integrations](/guides/integrations/) and [themes](/guides/themes/) are npm packages explicitly declared in your project's `package.json` and installed in the `node_modules` directory of your project. Thulite uses Hugo's [module configuration](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts) to mount the Thulite dependencies' `node_modules` directories to one of Hugo's corresponding [component folders](https://gohugo.io/getting-started/directory-structure/#directories), making them available to Hugo for processing. - -### Pros - -- Centralizes all dependencies (JavaScript and other assets) in one place (`package.json`). -- Common for JavaScript developers, leveraging npm's ecosystem and tools. - - -### Cons - -- Not following the preferred, familiar Hugo way. - -## Hugo - -To follow the Twelve-Factor App methodology with Hugo, use [Hugo Modules](https://gohugo.io/hugo-modules/use-modules/) to manage dependencies. Here's how it works: - -1. __Declare Dependencies__: Use a `go.mod` file to specify the modules your Hugo project requires. -2. __Isolation__: Use Hugo's module system to isolate dependencies, ensuring the same versions are used in all environments. - -Additionally, Hugo provides the [`hugo mod npm pack`](https://gohugo.io/commands/hugo_mod_npm_pack/) command, which creates a composite `package.json` file from `package.hugo.json` files found in your project and its dependencies. This helps manage JavaScript dependencies consistently. - -### Pros - -- Following the preferred, familiar Hugo way. - -### Cons - -- Using Hugo Modules requires you to have [Go](https://go.dev/dl/) installed. -- Using npm next to Hugo Modules introduces _two_ sets of dependencies. -- Hugo's integrated JavaScript support is _experimental_. -- Hugo's integrated JavaScript support is _limited_. For example, the `scripts` section of a `package.json` is not supported. - -:::note[Still want to use Hugo Modules?] - Thats okay! Thulite works in combination with [Hugo Modules](https://gohugo.io/hugo-modules/) (but without it's npm support). -::: diff --git a/src/content/docs/concepts/why-thulite.md b/src/content/docs/concepts/why-thulite.md deleted file mode 100644 index 94b10bee5..000000000 --- a/src/content/docs/concepts/why-thulite.md +++ /dev/null @@ -1,78 +0,0 @@ ---- -title: Why Thulite? -description: A guide in my new Starlight docs site. -sidebar: - order: 0 ---- - -__Thulite__ is a web framework designed for __speed__, __security__, and __SEO__ — all powered by Hugo and npm. With Thulite, it’s super easy to build content-driven websites — like blogs, marketing, and e-commerce — that are production-ready out of the box. If you need a website that loads fast, is max secure, and has great SEO, then Thulite is for you. - -## Features - -__Thulite is an all-in-one web framework__. It includes everything you need to create a website, built-in. There is also a growing number of different [integrations](https://thulite.io/integrations/) and [themes](https://thulite.io/themes/) available to customize a project to your exact use case and needs. - -Some highlights include: - -- [Site generator](https://gohugo.io/): Leverage the speed and flexibility of Hugo. -- [Dependencies](/concepts/dependencies/): Explicitly declare and isolate dependencies with npm. -- [Customizable](/guides/integrations/): Tailwind, Images, and a growing number of integrations to choose from. -- [Themable](/guides/themes/): Themes for blogs, portfolios, documentation, landing pages, and more. - -## Design Principles - -Here are five core design principles to help explain why we built Thulite, the problems that it exists to solve, and why Thulite may be the best choice for your project or team. - -Thulite is... - -- [Solid architecture](#solid-architecture): Thulite helps you build scalable and maintainable websites. -- [Fast by default](#fast-by-default): It should be impossible to build a slow website with Thulite. -- [Maximum secure](#max-secure): Your website should keep up with the latest in web security standards. -- [Easy to use](#easy-to-use): You don't need to be an expert to build something with Thulite. -- [Developer-focused](#developer-focused): You should have the resources you need to be successful. - -### Solid architecture - -__Thulite leverages [The Twelve-Factor App](https://12factor.net/) methodology to help you build scalable and maintainable websites__. The Twelve-Factor App describes many well-tested architectural patterns and best practices for software-as-a-service (SaaS) applications. When apps are deployed to the web, they can be created with portability and resilience thanks to these best practices. - -It was created by engineers at Heroku, a cloud platform-as-a-service company, around 2011. Adam Wiggins, a co-founder of Heroku, played a significant role in articulating and promoting these principles. This framework continues to be influential, aiding in designing and deploying scalable and maintainable software applications. - -### Fast by default - -Good performance is always important, but it is *especially* critical for content-focused websites. It has been well-proven that poor performance loses you engagement, conversions, and money. For example: - -- Every 100ms faster → 1% more conversions ([Mobify](https://web.dev/why-speed-matters/), earning +$380,000/yr) -- 50% faster → 12% more sales ([AutoAnything](https://www.digitalcommerce360.com/2010/08/19/web-accelerator-revs-conversion-and-sales-autoanything/)) -- 20% faster → 10% more conversions ([Furniture Village](https://www.thinkwithgoogle.com/intl/en-gb/marketing-strategies/app-and-mobile/furniture-village-and-greenlight-slash-page-load-times-boosting-user-experience/)) -- 40% faster → 15% more sign-ups ([Pinterest](https://medium.com/pinterest-engineering/driving-user-growth-with-performance-improvements-cfc50dafadd7)) -- 850ms faster → 7% more conversions ([COOK](https://web.dev/why-speed-matters/)) -- Every 1 second slower → 10% fewer users ([BBC](https://www.creativebloq.com/features/how-the-bbc-builds-websites-that-scale)) - -In many web frameworks, it is easy to build a website that looks great during development only to load painfully slow once deployed. JavaScript is often the culprit, since users' phones and lower-powered devices rarely match the speed of a developer's laptop. - -Thulite’ magic is in how it combines the solid architecture described above with optimizations for production builds and tools like [Quicklink](https://getquick.link/). The result is amazing web performance for every website, out of the box. Our goal: __It should be nearly impossible to build a slow website with Thulite__. - -### Maximum secure - -With great regularity, we hear about websites becoming unavailable due to denial of service attacks, or displaying modified (and often damaging) information on their homepages. In other high-profile cases, millions of passwords, email addresses, and credit card details have been leaked into the public domain, exposing website users to both personal embarrassment and financial risk. - -The purpose of website security is to prevent these (or any) sorts of attacks. The more formal definition of website security is *the act/practice of protecting websites from unauthorized access, use, modification, destruction, or disruption*. - -Effective website security requires design effort across the whole of the website: in your web application, the configuration of the web server, your policies for creating and renewing passwords, and the client-side code. - -Thulite helps you build a maximum secure website by combining [MDN's web security guidelines](https://infosec.mozilla.org/guidelines/web_security) with sensible defaults that you can use out of the box. Our goal: __Your website should keep up with the latest in web security standards.__. - -### Easy to use - -__Thulites goal is to be accessible to every web developer__. Thulite was designed to feel familiar and approachable regardless of skill level or past experience with web development. - -We designed Thulite to remove as much "required complexity" as possible from the developer experience, especially as you onboard for the first time. You can build a "Hello World" example website in Thulite with just HTML and CSS. Then, when you need to build something more powerful, you can incrementally reach for new features as you go. - -### Developer-focused - -We strongly believe that Thulite is only a successful project if people love using it. Thulite has everything you need to support you as you build with Thulite. - -Thulite invests in developer tools like a great CLI experience from the moment you open your terminal and documentation actively maintained by community contributors. - -Our welcoming, respectful, inclusive community on Discussions is ready to provide support, motivation, and encouragement. Open a [Support](https://github.com/orgs/thuliteio/discussions/categories/support) thread to get help with your project. Visit our dedicated [Showcase](https://github.com/orgs/thuliteio/discussions/categories/showcase) category for sharing your Thulite sites, blog posts, videos, and even work-in-progress for safe feedback and constructive criticism. - -As an open-source project, we welcome contributions of all types and sizes from community members of all experience levels. You are invited to join in roadmap discussions to shape the future of Thulite, and we hope you’ll contribute fixes and features to the core codebase, docs, and other projects. diff --git a/src/content/docs/contribute.mdx b/src/content/docs/contribute.mdx deleted file mode 100644 index 379d8be41..000000000 --- a/src/content/docs/contribute.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: Contribute -description: A reference page in my new Starlight docs site. ---- diff --git a/src/content/docs/editor-setup.mdx b/src/content/docs/editor-setup.mdx deleted file mode 100644 index 31043de65..000000000 --- a/src/content/docs/editor-setup.mdx +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: Editor Setup -description: A reference page in my new Starlight docs site. ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -Customize your code editor to improve the Thulite developer experience and unlock new features. - -## VS Code - -[VS Code](https://code.visualstudio.com/) is a popular code editor for web developers, built by Microsoft. The VS Code engine also powers popular in-browser code editors like [GitHub Codespaces](https://github.com/features/codespaces) and [Gitpod](https://gitpod.io/). - -Thulite works with any code editor. However, VS Code is our recommended editor for Thulite projects together with the following extensions: - -- [Hugo Language and Syntax Support](https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode) -- [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) -- [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) -- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) -- [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) -- [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) - -## In-Browser Editors - -In addition to local editors, Thulite also runs well on in-browser hosted editors, including: - -- [GitHub.dev](https://github.dev/) — available to everyone for free on GitHub.com. -- [Gitpod](https://gitpod.io/) — isolated cloud development environments with your favorite editor. -- [CodeSandbox](https://codesandbox.io/) — 24/7 collaborative cloud development environments (CDEs) that resume in 2 seconds. - -### Not yet supported - -- [StackBlitz](https://stackblitz.com/) — write, run, and debug frontend code directly in your browser. - -## Other tools - -### Prettier - -[Prettier](https://prettier.io/) is a popular formatter for JavaScript, HTML, CSS, and more. Thulite includes Prettier and a `format` command that runs `prettier **/** -w -c`. You can customize the Thulite defaults for Prettier by updating the `.prettierrc.yaml` and `.prettierignore` files in your project root. - - - -```bash -npm run format -``` - - -```bash -pnpm run format -``` - - -```bash -yarn run format -``` - - diff --git a/src/content/docs/getting-started.mdx b/src/content/docs/getting-started.mdx deleted file mode 100644 index 84b8356e2..000000000 --- a/src/content/docs/getting-started.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Getting Started -description: This guide will help you get started with a new Thulite project. -tableOfContents: true -prev: false ---- -import Button from '~/components/Button.astro' -import { Tabs, TabItem } from '@astrojs/starlight/components'; -import { Card, CardGrid } from '@astrojs/starlight/components'; - -[Thulite](https://thulite.io/) is a web framework designed for speed, security, and SEO — all powered by Hugo and npm. Here you'll find guides, resources, and references to help you build with Thulite. - -## Quick Start - -Get a new Thulite project up and running locally with our helpful `create-thulite` CLI wizard! - - - -```bash -npm create thulite@latest -``` - - -```bash -pnpm create thulite@latest -``` - - -```bash -yarn create thulite -``` - - - -Our [Installation Guide](/install/auto/) has step-by-step instructions for installing Thulite using our CLI wizard, creating a new project from an existing Thulite GitHub repository, and for installing Thulite manually. - -{/* -## Quick Try - -Visit [new.thulite.io](https://new.thulite.io/) and choose from a variety of templates to get started. Play around with a full, working version of Thulite right in your browser! - -
        - - -
        -*/} - -## Quick Links - - - - - [Main features](/concepts/why-thulite/) - - [Project structure](/basics/project-structure/) - - [Configuration](/basics/configuration/) - - [Commands](/basics/commands/) - - - - [Themes](/guides/themes/) - - [Integrations](/guides/integrations/) - - [Analytics](/guides/analytics/) - - [CMS](/guides/cms/) - - - - [Roadmap 2024](https://github.com/orgs/thuliteio/discussions/462) - - [Discussions](https://github.com/orgs/thuliteio/discussions) - - [Blog](https://thulite.io/blog/) - - - - [Doks](https://getdoks.org/) - - [Images](https://images.thulite.io/) - - [SEO](https://seo.thulite.io/) - - diff --git a/src/content/docs/guides/analytics.mdx b/src/content/docs/guides/analytics.mdx deleted file mode 100644 index 7f146cbe7..000000000 --- a/src/content/docs/guides/analytics.mdx +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Add Analytics to Thulite -description: A guide in my new Starlight docs site. ---- -import AnalyticsGuidesNav from '~/components/AnalyticsGuidesNav.astro'; - -**Ready to add Analytics to your Thulite project?** Follow one of our guides to different analytics services or scroll down for general guidance about adding analytics to a Thulite site. - -## Analytics Guides - - - -## General Setup - -Add a tracking script to `layouts/partials/head/script-header.html`. diff --git a/src/content/docs/guides/analytics/cabin-analytics.mdx b/src/content/docs/guides/analytics/cabin-analytics.mdx deleted file mode 100644 index 2306e4bdb..000000000 --- a/src/content/docs/guides/analytics/cabin-analytics.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Add Cabin Analytics to your Thulite Site" -description: How to add ananlytics to your Thulite site using Cabin Analytics. -type: analytics -stub: false -service: Cabin ---- -import List from '~/components/List.astro'; - -[Cabin Analytics](https://withcabin.com/) is a privacy-first, carbon conscious web analytics service. - -## Set up Cabin - -To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Cabin](https://withcabin.com/settings/domains) project. - -### Add script - -Add to `layouts/partials/head/script-header.html`: - -```html - -``` - -## Official Resources - - -- [Using Cabin](https://docs.withcabin.com/using.html) -- [Privacy law compliance](https://docs.withcabin.com/privacy.html) - diff --git a/src/content/docs/guides/analytics/fathom-analytics.mdx b/src/content/docs/guides/analytics/fathom-analytics.mdx deleted file mode 100644 index 31b606b9d..000000000 --- a/src/content/docs/guides/analytics/fathom-analytics.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "Add Fathom Analytics to your Thulite Site" -description: How to add ananlytics to your Thulite site using Fathom Analytics. -type: analytics -stub: false -service: Fathom ---- -import List from '~/components/List.astro'; - -[Fathom Analytics](https://usefathom.com/) is a Google Analytics alternative that doesn't compromise visitor privacy for data. - -## Set up Fathom - -To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Fathom](https://usefathom.com/docs/start/create) project. - -### Add script - -Add to `layouts/partials/head/script-header.html`: - -```html - -``` - -## Official Resources - - -- [Advanced embed script settings](https://usefathom.com/docs/script/script-advanced) -- [If Fathom isn't working on your site](https://usefathom.com/docs/troubleshooting/not-working) - diff --git a/src/content/docs/guides/analytics/google-analytics.mdx b/src/content/docs/guides/analytics/google-analytics.mdx deleted file mode 100644 index f8e82cf60..000000000 --- a/src/content/docs/guides/analytics/google-analytics.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "Add Google Analytics to your Thulite Site" -description: How to add ananlytics to your Thulite site using Google Analytics. -type: analytics -stub: false -service: Google Analytics ---- -import List from '~/components/List.astro'; - -[Google Analytics](https://marketingplatform.google.com/about/analytics/) is an analytics service that enables you to measure traffic and engagement across your websites and apps. - -:::note[Using Google Analytics GA4 with CSP] -Don't forget to update your `Content-Security-Policy` HTTP response header when using Google Analytics. [See an example](https://content-security-policy.com/examples/google-analytics/) -::: - -## Set up Google Analytics - -To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Google Analytics 4](https://support.google.com/analytics/answer/10089681) property. - -### Add script - -Add to `layouts/partials/head/script-header.html`: - -```html -{{ template "_internal/google_analytics.html" . }} -``` - -### Add tracking ID - -Add your tracking ID to `config/_default/hugo.toml`: - -```toml -[services] - [services.googleAnalytics] - ID = 'G-MEASUREMENT_ID' -``` - -## Official Resources - - -- [Set up Analytics for a website and/or app](https://support.google.com/analytics/answer/9304153?sjid=14124496534625981645-EU) -- [The Google tag and Tag Manager](https://developers.google.com/analytics/devguides/collection/ga4/tag-options) -- [Introduction to Google Analytics 4](https://developers.google.com/analytics/devguides/collection/ga4) - diff --git a/src/content/docs/guides/analytics/plausible-analytics.mdx b/src/content/docs/guides/analytics/plausible-analytics.mdx deleted file mode 100644 index 54928ed18..000000000 --- a/src/content/docs/guides/analytics/plausible-analytics.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Add Plausible Analytics to your Thulite Site" -description: How to add ananlytics to your Thulite site using Plausible Analytics. -type: analytics -stub: false -service: Plausible ---- -import List from '~/components/List.astro'; - -[Plausible Analytics](https://plausible.io/) ia an easy to use and privacy-friendly Google Analytics alternative. - -## Set up Plausible - -To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Plausible](https://plausible.io/) project. - -### Add parameters - -Add the following parameters to `config/_default/params.toml` and update with your `plausibleDomain`: - -```toml -# Add-ons -[add_ons] - plausibleDomain = "example.com" # "example.com" (default) -``` - -### Add script - -Add to `layouts/partials/head/script-header.html`: - -```html -{{ $plausibleDomain := site.Params.add_ons.plausibleDomain -}} - -``` - -## Official Resources - - -- [Content Security Policy](https://github.com/plausible/docs/issues/20) -- [Plausible Analytics Docs](https://plausible.io/docs/) - diff --git a/src/content/docs/guides/archetypes.md b/src/content/docs/guides/archetypes.md deleted file mode 100644 index d9016e9e9..000000000 --- a/src/content/docs/guides/archetypes.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Archetypes" -description: A reference page in my new Starlight docs site. ---- diff --git a/src/content/docs/guides/cms.mdx b/src/content/docs/guides/cms.mdx deleted file mode 100644 index a0e29e89c..000000000 --- a/src/content/docs/guides/cms.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: Use a CMS with Thulite -description: How to use a CMS to add content to Thulite ---- -import CMSGuidesNav from '~/components/CMSGuidesNav.astro'; -import List from '~/components/List.astro'; - -**Ready to connect a Headless CMS to your Thulite project?** Follow one of our guides to integrate a CMS. - -## CMS Guides - - - -## Why use a CMS? - -A Content Management System lets you write content and manage assets outside of your Thulite project. - -This unlocks new features for working with content. Most CMSes give you a visual content editor, the ability to specify standard types of content, and a way to collaborate with others. - -A CMS can be useful for content that follows a particular structure, often giving you a dashboard-like experience and WYSIWYG editing tools. You might use a CMS to write blog posts using a CMS's rich text editor instead of Markdown files. Or you might use a CMS to maintain product listings for an eCommerce shop, making certain fields required to avoid incomplete listings. - -Your Thulite project can then fetch your content from your CMS and display it, wherever and however you want on your site. - -## Which CMSes work well with Thulite? - -Because Thulite takes care of the *presentation* of your content, you'll want to choose a *headless* CMS, like those in the list above. This means that the CMS helps you write your content, but doesn't generate a site that displays it. Instead, you fetch the content data and use in your Thulite project. - - -- [Headless CMS](https://jamstack.org/headless-cms/) -- [Front-end interfaces](https://gohugo.io/tools/front-ends/) - - -## Can I use Thulite without a CMS? - -Yes! Thulite provides built-in ways to [author content](/basics/pages/), including support for Markdown pages. diff --git a/src/content/docs/guides/cms/cloudcannon.mdx b/src/content/docs/guides/cms/cloudcannon.mdx deleted file mode 100644 index a2b585148..000000000 --- a/src/content/docs/guides/cms/cloudcannon.mdx +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: CloudCannon & Thulite -description: Add content to your Thulite project using CloudCannon as a CMS -type: cms -stub: false -service: CloudCannon ---- -import List from '~/components/List.astro'; - -[CloudCannon](https://cloudcannon.com) is a Git-based content management system that provides a visual editor for your content. - -## Official Resources - - -- [The Hugo CMS for visual page building](https://cloudcannon.com/hugo-cms/) -- [Hugo Support in CloudCannon](https://cloudcannon.com/blog/hugo-support-in-cloudcannon/) - diff --git a/src/content/docs/guides/cms/decap-cms.mdx b/src/content/docs/guides/cms/decap-cms.mdx deleted file mode 100644 index 159e837cf..000000000 --- a/src/content/docs/guides/cms/decap-cms.mdx +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Decap CMS & Thulite -description: Add content to your Thulite project using Decap as a CMS -type: cms -stub: true -service: Decap CMS ---- -import List from '~/components/List.astro'; - -[Decap CMS](https://www.decapcms.org/) (formerly Netlify CMS) is an open-source, Git-based content management system. - -## Official Resources - - -- [How to integrate Decap CMS with Hugo](https://decapcms.org/docs/hugo/). -- [Hugo template with Decap CMS](https://github.com/decaporg/one-click-hugo-cms) - - -## Example - -Here is an example of a simple configuration `config.yml` : -``` -locale: 'fr' -backend: - name: gitea - repo: *********/******** # Path to your Gitea repository - app_id: ********-****-****-****-************ - api_root: https://*****.*****.***/api/v1 # API URL of your Gitea instance - base_url: https://*****.*****.*** # Root URL of your Gitea instance - branch: main -media_folder: static/img -public_folder: /img -collections: - - name: 'docs' - label: 'Docs' - folder: 'content/docs' - nested: { depth: 5 } - create: true - slug: '{{slug}}' - editor: - preview: false - fields: - - { label: 'Titre', name: 'title', widget: 'string' } - - { label: 'Description', name: 'description', widget: 'string' } - - { label: 'Résumé', name: 'summary', widget: 'string' } - - { label: 'Date de publication', name: 'date', widget: 'datetime' } - - { label: 'Date de mise à jour', name: 'lastmod', widget: 'datetime' } - - { label: 'Brouillon', name: 'draft', widget: 'boolean', default: true } - - { - label: 'Menu', name: 'menu', widget: 'object', required: false, collapsed: true, - fields: [ - { - label: 'docs', name: 'docs', widget: 'object', required: false, collapsed: true, - fields: [ - { label: 'Parent', name: 'parent', widget: 'string' }, - { label: 'Identifiant', name: 'identifier', widget: 'string' } - ] - } - ] - } - - { label: 'Poid', name: 'weight', widget: 'number', value_type: 'integer' } - - { label: 'toc', name: 'toc', widget: 'boolean', default: true } - - { - label: 'SEO', name: 'seo', widget: 'object', required: false, collapsed: true, - fields: [ - { label: 'Titre', name: 'title', widget: 'string' }, - { label: 'Description', name: 'description', widget: 'string' }, - { label: 'Canonical', name: 'canonical', widget: 'string' }, - { label: 'noindex', name: 'noindex', widget: 'boolean', default: false } - ] - } - - { label: 'Body', name: 'body', widget: 'markdown' } -``` diff --git a/src/content/docs/guides/cms/tina-cms.mdx b/src/content/docs/guides/cms/tina-cms.mdx deleted file mode 100644 index 3fb210042..000000000 --- a/src/content/docs/guides/cms/tina-cms.mdx +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Tina CMS & Thulite -description: Add content to your Thulite project using Tina as a CMS -type: cms -stub: false -service: Tina CMS ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; -import List from '~/components/List.astro'; - -[Tina CMS](https://tina.io/) is a Git-backed headless content management system. - -## Integrating with Thulite - -To get started, you'll need an existing Thulite project. - -1. Run the following command to install Tina into your Thulite project. - - - - ```bash - npx @tinacms/cli@latest init - ``` - - - ```bash - pnpm dlx @tinacms/cli@latest init - ``` - - - ```bash - yarn dlx @tinacms/cli@latest init - ``` - - - - - When prompted for a Cloud ID, press Enter to skip. You'll generate one later if you want to use Tina Cloud. - - When prompted "What framework are you using", choose **Other**. - - When asked where public assets are stored, press Enter. - - After this has finished, you should now have a `.tina` folder in the root of your project and a generated `hello-world.md` file at `content/posts`. - -2. Change the `dev` script in `package.json`: - - ```json del={4} ins={5} - // package.json - { - "scripts": { - "dev": "hugo server --disableFastRender --noHTTPCache" - "dev": "tinacms dev -c \"hugo server --disableFastRender --noHTTPCache\"" - } - } - ``` - -3. TinaCMS is now set up in local mode. Test this by running the `dev` script, then navigating to `/admin/index.html#/collections/post`. - - Editing the “Hello, World!” post will update the `content/posts/hello-world.md` file in your project directory. - -4. Set up your Tina collections by editing the `schema.collections` property in `.tina/config.ts`. - - For example, you can add a required "date posted" frontmatter property to our posts: - - ```js title=".tina/config.ts" ins={35-40} - import { defineConfig } from "tinacms"; - - // Your hosting provider likely exposes this as an environment variable - const branch = process.env.HEAD || process.env.VERCEL_GIT_COMMIT_REF || "main"; - - export default defineConfig({ - branch, - clientId: null, // Get this from tina.io - token: null, // Get this from tina.io - build: { - outputFolder: "admin", - publicFolder: "public", - }, - media: { - tina: { - mediaRoot: "images", - publicFolder: "public", - }, - }, - schema: { - collections: [ - { - name: "posts", - label: "Posts", - path: "src/content/posts", - format: 'mdx', - fields: [ - { - type: "string", - name: "title", - label: "Title", - isTitle: true, - required: true, - }, - { - type: "datetime", - name: "posted", - label: "Date Posted", - required: true, - }, - { - type: "rich-text", - name: "body", - label: "Body", - isBody: true, - }, - ], - }, - ], - }, - }); - ``` - - Learn more about Tina collections [in the Tina docs](https://tina.io/docs/reference/collections/). - -5. In production, TinaCMS can commit changes directly to your GitHub repository. To set up TinaCMS for production, you can choose to use [Tina Cloud](https://tina.io/docs/tina-cloud/) or self-host the [Tina Data Layer](https://tina.io/docs/self-hosted/overview/). You can [read more about registering for Tina Cloud](https://app.tina.io/register) in the Tina Docs. - -## Official Resources - - -- [Hugo + TinaCMS Setup Guide](https://tina.io/docs/frameworks/hugo/). - diff --git a/src/content/docs/guides/data.md b/src/content/docs/guides/data.md deleted file mode 100644 index 8eb9faa64..000000000 --- a/src/content/docs/guides/data.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Data" -description: A reference page in my new Starlight docs site. ---- diff --git a/src/content/docs/guides/deploy.mdx b/src/content/docs/guides/deploy.mdx deleted file mode 100644 index eef0a97b9..000000000 --- a/src/content/docs/guides/deploy.mdx +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Deploy your Thulite site -description: A guide in my new Starlight docs site. ---- -import DeployGuidesNav from '~/components/DeployGuidesNav.astro'; -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulite site. - -## Deployment Guides - - - -## Quick Deploy Options - -You can build and deploy a Thulite site to a number of hosts quickly using either their website's dashboard UI or a CLI. - -### Website UI - -A quick way to deploy your website is to connect your Thulite project's online Git repository (e.g. GitHub, GitLab, Bitbucket) to a host provider and take advantage of continuous deployment using Git. - -These host platforms automatically detect pushes to your Thulite project's source repository, build your site and deploy it to the web at a custom URL or your personal domain. Often, setting up a deployment on these platforms will follow steps something like the following: - -1. Add your repository to an online Git provider (e.g. in GitHub, GitLab, Bitbucket) - -2. Choose a host that supports **continuous deployment** (e.g. [Netlify](/guides/deploy/netlify/) or [Vercel](/guides/deploy/vercel/)) and import your Git repository as a new site/project. - - Many common hosts will recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy your site as shown below. (If not, these settings can be changed.) - - :::note[Deploy settings] - - **Build Command:** `npm run build` - - **Publish directory:** `public` - ::: - -3. Click "Deploy" and your new website will be created at a unique URL for that host (e.g. `new-thulite-site.netlify.app`). - -The host will be automatically configured to watch your Git provider's main branch for changes, and to rebuild and republish your site at each new commit. These settings can typically be configured in your host provider's dashboard UI. - -### CLI Deployment - -Some hosts will have their own command line interface (CLI) you can install globally to your machine using npm. Often, using a CLI to deploy looks something like the following: - -1. Install your host's CLI globally, for example: - - - - ```bash - npm install --global netlify-cli - ``` - - - ```bash - pnpm add --global netlify-cli - ``` - - - ```bash - yarn global add netlify-cli - ``` - - - -2. Run the CLI and follow any instructions for authorization, setup etc. - -3. Build your site and deploy to your host - - Many common hosts will build and deploy your site for you. They will usually recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy as shown below. (If not, these settings can be changed.) - - :::note[Deploy settings] - - **Build Command:** `npm run build` - - **Publish directory:** `public` - ::: - - - Other hosts will require you to [build your site locally](#building-your-site-locally) and deploy using the command line. - -## Building Your Site Locally - -Many hosts like Netlify and Vercel will build your site for you and then publish that build output to the web. But, some sites will require you to build locally and then run a deploy command or upload your build output. - -You may also wish to build locally to [preview your site](#previewing-your-site-locally), or to catch any potential errors and warnings in your own environment. - -Run the command `npm run build` to build your Thulite site. - - - -```bash -npm run build -``` - - -```bash -pnpm run build -``` - - -```bash -yarn run build -``` - - - -By default, the build output will be placed at `public/`. This location can be changed using the [`publishDir` configuration option](https://gohugo.io/getting-started/configuration/#publishdir). - -## Previewing Your Site Locally - -Next to Hugo's built-in development server, Thulite ships with [http-server](https://github.com/http-party/http-server), a simple, zero-configuration command-line static HTTP server. - -Run the command `npm run preview` to preview your Thulite site. - - - -```bash -npm run preview -``` - - -```bash -pnpm run preview -``` - - -```bash -yarn run preview -``` - - - -The `http-server` script is configured to run with [gzip](https://developer.mozilla.org/en-US/docs/Glossary/GZip_compression), [brotli](https://developer.mozilla.org/en-US/docs/Glossary/Brotli_compression), and [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) enabled. These settings can be changed using the [available options](https://github.com/http-party/http-server#available-options). \ No newline at end of file diff --git a/src/content/docs/guides/deploy/cloudflare.mdx b/src/content/docs/guides/deploy/cloudflare.mdx deleted file mode 100644 index d14233703..000000000 --- a/src/content/docs/guides/deploy/cloudflare.mdx +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Deploy your Thulite Site to Cloudflare Pages -description: How to deploy your Thulite site to the web using Cloudflare Pages. -type: deploy -stub: false -service: Cloudflare Pages ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -You can deploy your Thulite project on [Cloudflare Pages](https://pages.cloudflare.com/), a JAMstack platform for frontend developers to collaborate and deploy websites. - -This guide includes: - -- [How to deploy through the Cloudflare Pages Dashboard](#how-to-deploy-a-site-with-git) -- [How to deploy using Wrangler, the Cloudflare CLI](#how-to-deploy-a-site-using-wrangler) - -## Prerequisites - -To get started, you will need: - -- A Cloudflare account. If you don't already have one, you can create a free Cloudflare account during the process. -- Your app code pushed to a [GitHub](https://github.com/) or a [GitLab](https://about.gitlab.com/) repository. - -## How to deploy a site with Git - -1. Set up a new project on Cloudflare Pages. -2. Push your code to your git repository (GitHub, GitLab). -3. Log in to the Cloudflare dashboard and select your account in **Account Home** > **Pages**. -4. Select **Create a new Project** and the **Connect Git** option. -5. Select the git project you want to deploy and click **Begin setup** -6. Use the following build settings: - - - **Framework preset**: `exit 0` - - **Build command:** `npm run build` - - **Build output directory:** `public` - -7. Click the **Save and Deploy** button. - -## How to deploy a site using Wrangler - -1. Install the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/get-started/) in your project: - - - - ```bash - npm install wrangler --save-dev - ``` - - - ```bash - pnpm add wrangler --save-dev - ``` - - - ```bash - yarn add --dev wrangler - ``` - - - -2. Authorize Wrangler with your Cloudflare account using OAuth: - - ```bash - wrangler login - ``` - -3. Run your build command: - - - - ```bash - npm run build - ``` - - - ```bash - pnpm run build - ``` - - - ```bash - yarn run build - ``` - - - -4. Deploy the build output directory as a Pages deployment: - - ```bash - wrangler pages deploy public - ``` - -After your assets are uploaded, Wrangler will give you a preview URL to inspect your site. When you log into the Cloudflare Pages dashboard, you will see your new project. - -### Enabling Preview locally with Wrangler - -Update the preview script to run `wrangler` instead of Thulite' built-in preview command: - -```json title="package.json" -"preview": "wrangler pages dev ./public" -``` - -## Troubleshooting - -If you're encountering errors, check whether the `node` version you're using locally (`node -v`) matches the `NODE_VERSION` environment variable under **Settings**. diff --git a/src/content/docs/guides/deploy/github.mdx b/src/content/docs/guides/deploy/github.mdx deleted file mode 100644 index e7cb82491..000000000 --- a/src/content/docs/guides/deploy/github.mdx +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Deploy your Thulite Site to GitHub Pages -description: How to deploy your Thulite site to the web using GitHub Pages. -type: deploy -stub: false -service: GitHub Pages ---- - -You can use [GitHub Pages](https://pages.github.com/) to host a Thulite website directly from a repository on [GitHub.com](https://github.com/). - -:::tip[Looking for an example?] -Check out the [official GitHub Pages Doks example project](https://github.com/thuliteio/doks-gh-pages)! -::: - -## How to deploy - -You can deploy a Thulite site to GitHub Pages by using [GitHub Actions](https://github.com/features/actions) to automatically build and deploy your site. To do this, your source code must be hosted on GitHub. - -Follow the instructions below to deploy your Thulite site to GitHub pages. - -1. Create a new file in your project at `.github/workflows/deploy.yml` and paste in the YAML below. - - ```yaml title="deploy.yml" - # Sample workflow for building and deploying a Thulite site to GitHub Pages - name: Deploy Thulite site to Pages - - on: - # Runs on pushes targeting the default branch - push: - branches: - - main - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - - # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages - permissions: - contents: read - pages: write - id-token: write - - # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. - # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. - concurrency: - group: "pages" - cancel-in-progress: false - - # Default to bash - defaults: - run: - shell: bash - - jobs: - # Build job - build: - runs-on: ubuntu-latest - env: - HUGO_VERSION: 0.126.0 - steps: - - name: Install Hugo CLI - run: | - wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ - && sudo dpkg -i ${{ runner.temp }}/hugo.deb - - name: Install Dart Sass - run: sudo snap install dart-sass - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - name: Setup Pages - id: pages - uses: actions/configure-pages@v4 - - name: Install dependencies - run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" - - name: Build production website - env: - # For maximum backward compatibility with Hugo modules - HUGO_ENVIRONMENT: production - HUGO_ENV: production - TZ: America/Los_Angeles - run: | - npm run build \ - -- \ - --baseURL "${{ steps.pages.outputs.base_url }}/" - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./public - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 - - ``` - -2. On GitHub, go to your repository's **Settings** tab and find the **Pages** section of the settings. - -3. Choose **GitHub Actions** as the **Source** of your site. - -4. Commit the new workflow file and push it to GitHub. - -5. Copy the **Your site is published at** URL and paste it as `baseurl` in `./config/production/hugo.toml`. - -7. Push the changes to GitHub and wait for the action to finish succesfully (after approximately 30 seconds). - -That's it. After a minute or so, you site is avaliable at the **Your site is published at** URL. When you push changes to your Thulite project's repository, the GitHub Action will automatically deploy them for you. - -:::tip[Set up a custom domain] -You can optionally set up a custom domain by adding the following `./public/CNAME` file to your project: - -```js title="public/CNAME" -sub.mydomain.com -``` - -This will deploy your site at your custom domain instead of `user.github.io`. Don't forget to also [configure DNS for your domain provider](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain). -::: diff --git a/src/content/docs/guides/deploy/gitlab.mdx b/src/content/docs/guides/deploy/gitlab.mdx deleted file mode 100644 index f01c4e002..000000000 --- a/src/content/docs/guides/deploy/gitlab.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Deploy your Thulite Site to GitLab Pages -description: How to deploy your Thulite site to the web using GitLab Pages. -type: deploy -stub: false -service: GitLab Pages ---- - -You can use [GitLab Pages](https://pages.gitlab.io/) to host a Thulite site for your [GitLab](https://about.gitlab.com/) projects, groups, or user account. - -:::tip[Looking for an example?] -Check out the [GitLab Pages Doks example project](https://gitlab.com/h-enk/doks-gitlab-pages)! -::: - -## How to deploy - -Follow the instructions below to deploy your Thulite site to GitLab pages. - -1. Create a file called `.gitlab-ci.yml` in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content: - - ```yaml title=".gitlab-ci.yml" - # The Docker image that will be used to build your app - image: node:lts - # Functions that should be executed before the build script is run - before_script: - - npm ci - pages: - script: - - npm run build - artifacts: - paths: - # The folder that contains the files to be exposed at the Page URL - - public - rules: - # This ensures that only pushes to the default branch will trigger - # a pages deploy - - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH - ``` - -2. On GitLab, go to your repository's Deploy tab and find the Pages section. - -3. Copy the **Access pages** URL and paste it as `baseurl` in `./config/production/hugo.toml`. - -4. Set `canonifyURLs = true` in `./config/production/hugo.toml`. - -5. Push the changes to GitLab. - -That's it. After a minute or so, you site is avaliable at the **Access pages** URL. diff --git a/src/content/docs/guides/deploy/google-firebase.mdx b/src/content/docs/guides/deploy/google-firebase.mdx deleted file mode 100644 index dd55b7f98..000000000 --- a/src/content/docs/guides/deploy/google-firebase.mdx +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Deploy your Thulite Site to Google's Firebase Hosting -description: How to deploy your Thulite site to the web using Google's Firebase Hosting. -type: deploy -stub: false -service: Firebase Hosting ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -[Firebase Hosting](https://firebase.google.com/products/hosting) is a service provided by Google's [Firebase](https://firebase.google.com/) app development platform, which can be used to deploy a Thulite site. - -## Prerequisites - -To follow this guide, you will need to have [firebase-tools](https://github.com/firebase/firebase-tools) installed. - -## How to deploy - -1. Create `firebase.json` at the root of your project with the following content: - - ```json title="firebase.json" - { - "hosting": { - "public": "public", - "ignore": [] - } - } - ``` - -2. Create `.firebaserc` at the root of your project with the following content: - - ```json title= ".firebaserc" - { - "projects": { - "default": "" - } - } - ``` - -3. Run your build command: - - - - ```bash - npm run build - ``` - - - ```bash - pnpm run build - ``` - - - ```bash - yarn run build - ``` - - - -4. Deploy using the command: - - ```bash - firebase deploy - ``` diff --git a/src/content/docs/guides/deploy/microsoft-azure.mdx b/src/content/docs/guides/deploy/microsoft-azure.mdx deleted file mode 100644 index 8d81c7753..000000000 --- a/src/content/docs/guides/deploy/microsoft-azure.mdx +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Deploy your Thulite Site to Microsoft Azure -description: How to deploy your Thulite site to the web using Microsoft Azure. -type: deploy -stub: false -service: Microsoft Azure ---- - -[Azure](https://azure.microsoft.com/) is a cloud platform from Microsoft. You can deploy your Thulite site with Microsoft Azure's [Static Web Apps](https://aka.ms/staticwebapps) service. - -:::tip[Looking for an example?] -Check out the [official Microsoft Azure Doks example project](https://github.com/thuliteio/doks-microsoft-azure)! -::: - -This guide takes you through deploying your Thulite site stored in GitHub using Visual Studio Code. Please see Microsoft guides for using an [Azure Pipelines Task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/azure-static-web-app-v0?view=azure-pipelines) for other setups. - -## Prerequisites - -To follow this guide, you will need: - -- An Azure account and a subscription key. You can create a [free Azure account here](https://azure.microsoft.com/free). -- Your app code pushed to [GitHub](https://github.com/). -- The [SWA Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps) in [Visual Studio Code](https://code.visualstudio.com/). - -## How to deploy - -1. Open your project in VS Code. - -2. Open the Static Web Apps extension, sign in to Azure, and click the **+** button to create a new Static Web App. You will be prompted to designate which subscription key to use. - -3. Follow the wizard started by the extension to give your app a name, choose a framework preset, and designate the app root (usually `/`) and built file location (use `/public`). Thulite is not listed in the built-in templates in Azure so you will need to select `custom`. The wizard will run and will create a [GitHub Action](https://github.com/features/actions) in the `.github` folder of your repo. (This folder will be automatically created if it does not already exist.) - -The GitHub Action will deploy your app (you can see its progress in your repo's Actions tab on GitHub). When successfully completed, you can view your app at the address shown in the SWA Extension's progress window by clicking the **Browse Website** button (this will appear after the GitHub Action has run). - -## Known Issues - -The build fails because an old (no longer supported) Node version and/or Hugo version is used. - -### Node version - -To resolve this, update your projects `package.json` file with this snippet: - -```json - "engines": { - "node": ">=20.11.0" - }, -``` - -### Hugo version - -To resolve this, update your workflow file by providing a value for `HUGO_VERSION` in the `env` section: - -```yaml -jobs: - build_and_deploy_job: - if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') - runs-on: ubuntu-latest - name: Build and Deploy Job - steps: - - uses: actions/checkout@v3 - with: - submodules: true - lfs: false - - name: Build And Deploy - id: builddeploy - uses: Azure/static-web-apps-deploy@v1 - with: - azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_BUSH_0D736421E }} - repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) - action: "upload" - ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### - # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig - app_location: "/" # App source code path - api_location: "api" # Api source code path - optional - output_location: "public" # Built app content directory - optional - ###### End of Repository/Build Configurations ###### - env: - HUGO_VERSION: 0.131.0 - -``` - -## Official Resources - -- [Deploy a Hugo site to Azure Static Web Apps](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo) -- [Custom Hugo version](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo#custom-hugo-version) -- [Microsoft Azure Static Web Apps documentation](https://learn.microsoft.com/en-us/azure/static-web-apps/) diff --git a/src/content/docs/guides/deploy/netlify.mdx b/src/content/docs/guides/deploy/netlify.mdx deleted file mode 100644 index 3296b807c..000000000 --- a/src/content/docs/guides/deploy/netlify.mdx +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: Deploy your Thulite Site to Netlify -description: How to deploy your Thulite site to the web on Netlify. -type: deploy -stub: false -service: Netlify ---- -import List from '~/components/List.astro'; - -[Netlify](https://netlify.com) offers hosting and serverless backend services for web applications and static websites. Any Thulite site can be hosted on Netlify! - -This guide includes instructions for deploying to Netlify through the website UI or Netlify's CLI. - -## How to deploy - -You can deploy to Netlify through the website UI or using Netlify's CLI (command line interface). - -### Website UI Deployment - -If your project is stored in GitHub, GitLab, BitBucket, or Azure DevOps, you can use the Netlify website UI to deploy your Thulite site. - -1. Click Add a new site in your [Netlify dashboard](https://app.netlify.com/) - -2. Choose Import an existing project - - When you import your Thulite repository from your Git provider, Netlify should automatically detect and pre-fill the correct configuration settings for you. - -3. Make sure that the following settings are entered, then press the Deploy button: - - - **Build Command:** `npm run build` - - **Publish directory:** `public` - - After deploying, you will be redirected to the site overview page. There, you can edit the details of your site. - -Any future changes to your source repository will trigger preview and production deploys based on your deployment configuration. - -#### `netlify.toml` file - -You can optionally create a new `netlify.toml` file at the top level of your project repository to configure your build command and publish directory, as well as other project settings including environment variables and redirects. Netlify will read this file and automatically configure your deployment. - -To configure the default settings, create a `netlify.toml` file with the following contents: - -```toml -[build] - command = "npm run build" - publish = "public" -``` - - -- More info at ["Deploy with git"](https://docs.netlify.com/site-deploys/create-deploys/#deploy-with-git) on Netlify's docs - - -### CLI Deployment - -You can also create a new site on Netlify and link up your Git repository by installing and using the [Netlify CLI](https://cli.netlify.com/). - - -1. Install Netlify's CLI globally - - ```bash - npm install --global netlify-cli - ``` - -2. Run `netlify login` and follow the instructions to log in and authorize Netlify -3. Run `netlify init` and follow the instructions -4. Confirm your build command (`npm run build`) - - The CLI will automatically detect the build settings (`npm run build`) and deploy directory (`public`), and will offer to automatically generate a [`netlify.toml` file](#netlifytoml-file) with those settings. - -5. Build and deploy by pushing to Git - - The CLI will add a deploy key to the repository, which means your site will be automatically rebuilt on Netlify every time you `git push`. - - -- More details from Netlify on [Netlify CLI](https://docs.netlify.com/site-deploys/create-deploys/#netlify-cli) - - -### Set a Node.js Version - -If you are using a legacy [build image](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) (Xenial) on Netlify, make sure that your Node.js version is set. Thulite requires `v18.14.1` or higher. - -You can [specify your Node.js version in Netlify](https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript) using: -- a [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) file in your base directory. -- a `NODE_VERSION` environment variable in your site's settings using the Netlify project dashboard. -- a `NODE_VERSION` environment variable in your site's `netlify.toml`, for example: - - ```toml - [build.environment] - NODE_VERSION = "20.10.0" - NPM_VERSION = "10.2.3" - ``` - -## Using Netlify Functions - -No special configuration is required to use Netlify Functions with Thulite. Add a `netlify/functions` directory to your project root and follow [the Netlify Functions documentation](https://docs.netlify.com/functions/overview/) to get started! diff --git a/src/content/docs/guides/deploy/render.mdx b/src/content/docs/guides/deploy/render.mdx deleted file mode 100644 index e690d9c54..000000000 --- a/src/content/docs/guides/deploy/render.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Deploy your Thulite Site to Render -description: How to deploy your Thulite site to the web using Render. -type: deploy -stub: false -service: Render ---- - -You can deploy your Thulite project to [Render](https://render.com/), a service to build websites with free TLS certificates, a global CDN, DDoS protection, private networks, and auto deploys from Git. - -## How to deploy - -1. Create a [render.com account](https://dashboard.render.com/) and sign in -2. Click the **New +** button from your dashboard and select **Static Site** -3. Connect your [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/) repository or alternatively enter the public URL of a public repository -4. Give your website a name, select the branch and specify the build command and publish directory - - **build command:** `npm run build` - - **publish directory:** `public` - - **Environment variables (advanced)**: By default, Render uses Node.js 14.17.0, but Thulite [requires a higher version](/install/auto/#prerequisites). Add an environment variable with a **Variable key** of `NODE_VERSION` and a **Value** of `18.14.1` or higher to tell Render to use a compatible Node.js version. Alternatively, add a [`.node-version`](https://render.com/docs/node-version) or [`.nvmrc`](https://render.com/docs/node-version) file to your project to specify a Node.js version. -5. Click the **Create Static Site** button \ No newline at end of file diff --git a/src/content/docs/guides/deploy/vercel.mdx b/src/content/docs/guides/deploy/vercel.mdx deleted file mode 100644 index 773483e17..000000000 --- a/src/content/docs/guides/deploy/vercel.mdx +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Deploy your Thulite Site to Vercel -description: How to deploy your Thulite site to the web on Vercel. -type: deploy -stub: false -service: Vercel ---- -import List from '~/components/List.astro'; - -You can use [Vercel](http://vercel.com/) to deploy a Thulite site to their global edge network with zero configuration. - -This guide includes instructions for deploying to Vercel through the website UI or Vercel's CLI. - -## How to deploy - -You can deploy to Vercel through the website UI or using Vercel’s CLI (command line interface). - -### Website UI Deployment - -1. Push your code to your online Git repository (GitHub, GitLab, BitBucket). -2. [Import your project](https://vercel.com/new) into Vercel. -3. Vercel will automatically detect Thulite and configure the right settings. -4. Your application is deployed! - -After your project has been imported and deployed, all subsequent pushes to branches will generate [Preview Deployments](https://vercel.com/docs/concepts/deployments/preview-deployments), and all changes made to the Production Branch (commonly “main”) will result in a [Production Deployment](https://vercel.com/docs/concepts/deployments/environments#production). - - -- Learn more about Vercel's [Git Integration](https://vercel.com/docs/concepts/git). - - -### CLI Deployment - -1. Install the [Vercel CLI](https://vercel.com/cli) and run `vercel` to deploy. - - ```bash - npm install -g vercel && vercel - ``` - -2. Vercel will automatically detect Thulite and configure the right settings. -3. When asked `Want to override the settings? [y/N]`, choose `N`. -4. Your application is deployed! - - -### Project config with vercel.json - -You can use `vercel.json` to override the default behavior of Vercel and to configure additional settings. For example, you may wish to attach headers to HTTP responses from your Deployments. - - -- Learn more about [Vercel's project configuration](https://vercel.com/docs/project-configuration). - diff --git a/src/content/docs/guides/email-obfuscation.mdx b/src/content/docs/guides/email-obfuscation.mdx deleted file mode 100644 index 69047d252..000000000 --- a/src/content/docs/guides/email-obfuscation.mdx +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: Email obfuscation -description: This guide helps you to obfuscate email addresses with a simple, effective CSS technique. ---- -import { Steps } from '@astrojs/starlight/components'; - -This guide helps you to obfuscate email addresses with a simple, effective CSS technique. - -## Background - -The article [Email Obfuscation: What Works in 2024](https://spencermortensen.com/articles/email-obfuscation/) by Spencer Mortensen discusses various techniques to hide email addresses from spam bots while keeping them accessible to users. It evaluates methods like plain text, HTML entities, CSS display properties, JavaScript techniques, and others, testing their effectiveness in blocking spam. - -Some methods, such as CSS `display: none` and certain JavaScript techniques, are found to be highly effective, while others like HTML comments and symbol substitution offer little protection. - -## Setup - - - -1. Add a default (fallback) email address to `config/_default/params.toml`: - - ```toml title="params.toml" - # defaultEmail - defaultEmail = "email@example.com" - ``` - -2. Add the following CSS to `assets/scss/common/_custom.scss`: - - ```scss title="_custom.scss" - span.email b { - display: none; - } - ``` - -3. Create shortcode file `layouts/shortcodes/email.html` with the following content: - - ```html title="email.html" - {{- /* Set defaults and get args. */}} - {{- $address := index .Params 0 | default site.Params.defaultEmail }} - - {{- /* Get parts. */}} - {{- $addressParts := split $address "@" }} - {{- $userName := (index $addressParts 0) }} - {{- $rootDomain := (index $addressParts 1) }} - {{- $rootDomainParts := split $rootDomain "." }} - {{- $domainName := (index $rootDomainParts 0) }} - {{- $topLevelDomain := (index $rootDomainParts 1) }} - - {{- /* Render. */}} - - ``` - - The shortcode gets the email address you provided — using the default email address if you didn’t specify one. Next, it splits the email address in parts — `userName`, `domainName`, and `topLevelDomain` — and renders the HTML. - - - -## Usage - -Now, you can use the shortcode in Markdown — using `defaultEmail`: - -```md -{{< email >}} -``` - -Rendering: - -```html - -``` - -Or, by specifying an email address: - -```md -{{< email "team@example.com" >}} -``` -Rendering: - -```html - -``` diff --git a/src/content/docs/guides/fonts.md b/src/content/docs/guides/fonts.md deleted file mode 100644 index 3859f7073..000000000 --- a/src/content/docs/guides/fonts.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Using custom fonts -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/guides/images.md b/src/content/docs/guides/images.md deleted file mode 100644 index ea5d29d0e..000000000 --- a/src/content/docs/guides/images.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Using images -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/guides/integrations.mdx b/src/content/docs/guides/integrations.mdx deleted file mode 100644 index e49cbbae0..000000000 --- a/src/content/docs/guides/integrations.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: Add Integrations -description: A guide in my new Starlight docs site.s ---- -import IntegrationsNav from '~/components/IntegrationsNav.astro'; -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integrations built by the community. - -Integrations can… - -- Unlock Tailwind CSS, Bootstrap, and other popular CSS frameworks. -- Add new features to your project, like Images and SEO. -- Integrate themes like Doks or Bolt. - -## Official Integrations - -The following integrations are maintained by Thulite. - - - -## Setting up an Integration - -### Adding an Integration - -Add an integration to your site by running the following command in your project's root directory: - - - -```bash - # Example: add Images - npm install @thulite/images@latest -``` - - -```bash - # Example: add Images - pnpm add @thulite/images@latest -``` - - -```bash - # Example: add Images - yarn add @thulite/images@latest -``` - - - -### Configuring an Integration - -You'll most likely have to update the mounts configuration, add parameters, add some CSS/JavaScript, and update the PostCSS settings. - -## Upgrading an Integration - -To upgrade an integration, use the appropriate command for your package manager. - - - -```bash - # Example: upgrade Images - npm install @thulite/images@latest -``` - - -```bash - # Example: upgrade Images - pnpm add @thulite/images@latest -``` - - -```bash - # Example: upgrade Images - yarn add @thulite/images@latest -``` - - - -## Removing an Integration - -To remove an integration, uninstall the integration from your project. - - - -```bash - # Example: remove Images - npm uninstall @thulite/images -``` - - -```bash - # Example: remove Images - pnpm uninstall @thulite/images -``` - - -```bash - # Example: remove Images - yarn remove @thulite/images -``` - - - -Optionally, remove the configuration settings. - -## Finding More Integrations - -You can find integrations developed by the community in the [Thulite Integrations Directory](https://thulite.io/integrations/). Follow links there for detailed usage and configuration instructions. - -## Building Your Own Integration - -Thulite' Integrations are inspired by npm and Hugo, and designed to feel familiar to anyone who has written an npm package or Hugo Module before. - -Check out the [Build a Thulite Integration](/guides/integrations/) guide to learn what integrations can do and how to write one yourself. diff --git a/src/content/docs/guides/integrations/bolt-core.mdx b/src/content/docs/guides/integrations/bolt-core.mdx deleted file mode 100644 index dfe793525..000000000 --- a/src/content/docs/guides/integrations/bolt-core.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "@thulite/bolt-core" -description: Core integration for the Bolt theme -type: integration -stub: false -service: "Bolt Core" -category: theme ---- - -Core integration for the Bolt theme. - -[..] diff --git a/src/content/docs/guides/integrations/bootstrap.mdx b/src/content/docs/guides/integrations/bootstrap.mdx deleted file mode 100644 index bb36ab272..000000000 --- a/src/content/docs/guides/integrations/bootstrap.mdx +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "@thulite/bootstrap" -description: Bootstrap integration for Thulite -editUrl: https://github.com/thuliteio/bootstrap/blob/main/README.md -type: integration -stub: false -service: "Bootstrap" -category: renderer ---- -import { LinkCard } from '@astrojs/starlight/components'; - -Bootstrap integration for Thulite. - -## Status - -[![npm (scoped)](https://img.shields.io/npm/v/@thulite/bootstrap?style=flat-square)](https://www.npmjs.com/package/@thulite/bootstrap) - -## Installation - -```bash -npm i -D @thulite/bootstrap -``` - -## Setup - -Add mounts to `./config/_default/module.toml`: - -```toml -[[mounts]] - source = "node_modules/@thulite/bootstrap/assets" - target = "assets" - -[[mounts]] - source = "node_modules/@thulite/bootstrap/layouts" - target = "layouts" - -[[mounts]] - source = "assets" - target = "assets" - -[[mounts]] - source = "layouts" - target = "layouts" -``` - -## How to use - -[..] - -## Credits - -This npm package is based on the Bootstrap examples: - -- [Bootstrap Color Modes](https://github.com/twbs/examples/tree/main/color-modes) -- [Bootstrap w/ Vite](https://github.com/twbs/examples/tree/main/vite) - - diff --git a/src/content/docs/guides/integrations/core.mdx b/src/content/docs/guides/integrations/core.mdx deleted file mode 100644 index a79eaed84..000000000 --- a/src/content/docs/guides/integrations/core.mdx +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: "@thulite/core" -description: Core integration for Thulite -type: integration -stub: false -service: "Core" -category: other ---- - -# Thulite core - -Official core integration for Thulite. - -## Official Resources - -- [GitHub Repository](https://github.com/thuliteio/core) - -## Installation - -```bash -npm i @thulite/core -``` - -## Setup - -Add mounts to `./config/_default/module.toml`: - -```toml -[[mounts]] - source = "node_modules/@thulite/core/assets" - target = "assets" - -[[mounts]] - source = "node_modules/@thulite/core/layouts" - target = "layouts" - -[[mounts]] - source = "assets" - target = "assets" - -[[mounts]] - source = "layouts" - target = "layouts" -``` - -Add to `./config/_default/hugo.toml`: - -```toml -baseurl = "http://localhost/" -canonifyURLs = false -disableAliases = true -disableHugoGeneratorInject = true -disableKinds = ["taxonomy", "term"] -enableEmoji = true -enableGitInfo = false -enableRobotsTXT = true -languageCode = "en-US" -paginate = 7 -rssLimit = 10 - -[outputs] - home = ["HTML"] - -[caches] - [caches.getjson] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.getcsv] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.images] - dir = ":cacheDir/images" - maxAge = "1440h" - [caches.assets] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.getresource] - dir = ":cacheDir/:project" - maxage = '1h' - -[sitemap] - changefreq = "monthly" - filename = "sitemap.xml" - priority = 0.5 - -[minify.tdewolff.html] - keepWhitespace = false -``` - -## Credits - -This npm package is based on: - -- [Really getting started with Hugo](https://www.brycewray.com/posts/2022/07/really-getting-started-hugo/) \ No newline at end of file diff --git a/src/content/docs/guides/integrations/doks-core.mdx b/src/content/docs/guides/integrations/doks-core.mdx deleted file mode 100644 index f9f56c1fd..000000000 --- a/src/content/docs/guides/integrations/doks-core.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "@thulite/doks-core" -description: Core integration for the Doks theme -type: integration -stub: false -service: "Doks Core" -category: theme ---- - -Core integration for the Doks theme. - -[..] diff --git a/src/content/docs/guides/integrations/images.mdx b/src/content/docs/guides/integrations/images.mdx deleted file mode 100644 index 34fd8d5df..000000000 --- a/src/content/docs/guides/integrations/images.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "@thulite/images" -description: Official Images integration for Thulite -type: integration -stub: false -service: "Images" -category: other ---- -import List from '~/components/List.astro'; - -[Images](https://images.thulite.io/) is the official Images integration for the Thulite framework. - -## Official Resources - - -- [Getting Started](https://images.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/images) - diff --git a/src/content/docs/guides/integrations/inline-svg.mdx b/src/content/docs/guides/integrations/inline-svg.mdx deleted file mode 100644 index 7307d1a8e..000000000 --- a/src/content/docs/guides/integrations/inline-svg.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "@thulite/inline-svg" -description: Official Inline SVG integration for Thulite -type: integration -stub: false -service: "Inline SVG" -category: other ---- -import List from '~/components/List.astro'; - -[Inline SVG](https://svg.thulite.io/) is the official Inline SVG integration for the Thulite framework. - -## Official Resources - - -- [Getting Started](https://svg.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/inline-svg) - diff --git a/src/content/docs/guides/integrations/seo.mdx b/src/content/docs/guides/integrations/seo.mdx deleted file mode 100644 index 3d77eb4e9..000000000 --- a/src/content/docs/guides/integrations/seo.mdx +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "@thulite/seo" -description: Official SEO integration for Thulite -type: integration -stub: false -service: "SEO" -category: other ---- -import List from '~/components/List.astro'; - -[SEO](https://seo.thulite.io/) is the official SEO integration for the Thulite framework. - -## Official Resources - - -- [Getting Started](https://seo.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/seo) - diff --git a/src/content/docs/guides/integrations/tailwind.mdx b/src/content/docs/guides/integrations/tailwind.mdx deleted file mode 100644 index 0f5246fdb..000000000 --- a/src/content/docs/guides/integrations/tailwind.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "@thulite/tailwindcss" -description: Tailwind CSS integration for Thulite -type: integration -stub: false -service: "Tailwind CSS" -category: renderer ---- - -Tailwind CSS integration for Thulite. - -[..] diff --git a/src/content/docs/guides/internationalization.md b/src/content/docs/guides/internationalization.md deleted file mode 100644 index ae0ab1e16..000000000 --- a/src/content/docs/guides/internationalization.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Internationalization" -description: A reference page in my new Starlight docs site. ---- diff --git a/src/content/docs/guides/markdown.md b/src/content/docs/guides/markdown.md deleted file mode 100644 index ebd0f3bc7..000000000 --- a/src/content/docs/guides/markdown.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Example Guide -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/guides/scripts.md b/src/content/docs/guides/scripts.md deleted file mode 100644 index cac2ff3f9..000000000 --- a/src/content/docs/guides/scripts.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Scripts -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/guides/static.md b/src/content/docs/guides/static.md deleted file mode 100644 index 718748de7..000000000 --- a/src/content/docs/guides/static.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Static" -description: A reference page in my new Starlight docs site. ---- diff --git a/src/content/docs/guides/styles.md b/src/content/docs/guides/styles.md deleted file mode 100644 index a64b03271..000000000 --- a/src/content/docs/guides/styles.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: Styles -description: A guide in my new Starlight docs site. ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/src/content/docs/guides/themes.mdx b/src/content/docs/guides/themes.mdx deleted file mode 100644 index 38cf55560..000000000 --- a/src/content/docs/guides/themes.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Add a theme to Thulite -description: A guide in my new Starlight docs site. ---- -import ThemesGuidesNav from '~/components/ThemesGuidesNav.astro'; - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. - -## Official Themes - - diff --git a/src/content/docs/guides/themes/bolt.mdx b/src/content/docs/guides/themes/bolt.mdx deleted file mode 100644 index 6ed73674a..000000000 --- a/src/content/docs/guides/themes/bolt.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Bolt" -description: Bolt theme guide for Thulite -type: themes -stub: false -service: Bolt ---- diff --git a/src/content/docs/guides/themes/doks.mdx b/src/content/docs/guides/themes/doks.mdx deleted file mode 100644 index 50edc2e11..000000000 --- a/src/content/docs/guides/themes/doks.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Doks" -description: Doks theme guide for Thulite -type: themes -stub: false -service: Doks ---- diff --git a/src/content/docs/guides/upgrade-to/v2.mdx b/src/content/docs/guides/upgrade-to/v2.mdx deleted file mode 100644 index 9f89ca8f9..000000000 --- a/src/content/docs/guides/upgrade-to/v2.mdx +++ /dev/null @@ -1,169 +0,0 @@ ---- -title: Upgrade to Thulite v2 -description: A guide in my new Starlight docs site. ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -This guide will help you migrate from Thulite v1 to Thulite v2. - -## Prerequisites - -- __Node.js__ - `v20.11.0` or higher — run `node -v` to check. -- __Hugo extended__ - `v0.125.0` or higher — run `hugo version` to check. -- __Text editor__ - We recommend [VS Code](https://code.visualstudio.com/) — see also [Editor Setup](/editor-setup/). -- __Terminal__ - Thulite is accessed through its command-line interface (CLI). - -## Upgrading - -You can upgrade your project by following the steps below. - -### 1. Clean dependencies - -Clean dependencies currently installed to avoid conflicts. - - - -```bash -npm run clean:install -``` - - -```bash -pnpm run clean:install -``` - - -```bash -yarn run clean:install -``` - - - -### 2. Update `package.json` - -Replace the contents of your project's `package.json` with the following: - -```json -// package.json -{ - "name": "thulite-project", - "version": "0.0.0", - "description": "Thulite", - "author": "Thulite", - "license": "MIT", - "scripts": { - "create": "hugo new", - "dev": "hugo server --disableFastRender --noHTTPCache", - "format": "prettier **/** -w -c", - "build": "hugo --minify --gc", - "preview": "vite preview --outDir public" - }, - "engines": { - "node": ">=20.11.0" - } -} -``` - -### 3. Install Thulite - -Install the latest Thulite project dependencies inside your project: - - - -```bash -npm install thulite@latest -``` - - -```bash -pnpm install thulite@latest -``` - - -```bash -yarn add thulite@latest -``` - - - -### 4. Install Prettier and Vite - -Install the latest version of Prettier and Vite — as `devDependencies`: - - - -```bash -npm install -D prettier@latest vite@latest -``` - - -```bash -pnpm install -D prettier@latest vite@latest -``` - - -```bash -yarn add -D prettier@latest vite@latest -``` - - - -### 5. Install integrations - -Optionally, install the the recommended integrations in your project: - - - -```bash -npm install @thulite/images@latest @thulite/seo@latest -``` - - -```bash -pnpm install @thulite/images@latest @thulite/seo@latest -``` - - -```bash -yarn add @thulite/images@latest @thulite/seo@latest -``` - - - -:::note[Need to continue?] -After upgrading Thulite to the latest version, you may not need to make any changes to your project at all! - -But, if you notice errors or unexpected behavior, please check below for what has changed that might need updating in your project. -::: - -## Configuration - -Check your project's configuration for Thulite and the recommended integrations: - -- [Create configuration files](/install/manual/#6-create-configuration-files) -- [Images](https://images.thulite.io/docs/start-here/manual-setup/) -- [SEO](https://seo.thulite.io/docs/start-here/manual-setup/) - -## Known Issues - -### ENOENT - -When you get an `ENOENT` error message, run the following command: - - - -```bash -npm run clean:install && npm install -``` - - -```bash -pnpm run clean:install && pnpm install -``` - - -```bash -yarn run clean:install && yarn install -``` - - diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx deleted file mode 100644 index 8a9b0b523..000000000 --- a/src/content/docs/index.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Learn, troubleshoot, and explore Thulite -description: The all-in-one Hugo-npm framework. Fast, flexible, and easy-to-use. -template: splash -hero: - tagline: The all-in-one Hugo-npm framework. Fast, flexible, and easy-to-use. - image: - file: ~/assets/houston.webp - actions: - - text: Get Started - link: /getting-started/ - icon: right-arrow - variant: primary - - text: View on GitHub - link: https://github.com/thuliteio/thulite - icon: external ---- - -import { Card, CardGrid } from '@astrojs/starlight/components'; - -## Next steps - - - - Edit `src/content/docs/index.mdx` to see this page change. - - - Add Markdown or MDX files to `src/content/docs` to create new pages. - - - Edit your `sidebar` and other config in `astro.config.mjs`. - - - Learn more in [the Starlight Docs](https://starlight.astro.build/). - - diff --git a/src/content/docs/install/auto.mdx b/src/content/docs/install/auto.mdx deleted file mode 100644 index d4acb9154..000000000 --- a/src/content/docs/install/auto.mdx +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: Install Thulite with the Automatic CLI -description: A reference page in my new Starlight docs site. ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; -import { LinkCard, CardGrid } from '@astrojs/starlight/components'; - -Ready to install Thulite? Follow this guide to using the `create thulite` CLI to get started. - -:::note[Prefer to install Thulite manually?] -Read our [step-by-step manual installation guide](/install/manual/) instead. -::: - -## Prerequisites - -- __Node.js__ - `v20.11.0` or higher — run `node -v` to check. -- __Hugo extended__ - `v0.125.0` or higher — run `hugo version` to check. -- __Text editor__ - We recommend [VS Code](https://code.visualstudio.com/) — see also [Editor Setup](/editor-setup/). -- __Terminal__ - Thulite is accessed through its command-line interface (CLI). - -## Installation - -`create-thulite` is the fastest way to start a new Thulite project from scratch. It will walk you through every step of setting up your new Thulite project. It allows you to choose from a few different official starter templates. Or, you can [use any existing project on GitHub with the `degit` command](/install/auto/#community). - -:::tip[Online previews] -Prefer to try Thulite in your browser? Visit [new.thulite.io](https://new.thulite.io/) to browse our starter templates and spin up a new Thulite project without ever leaving your browser. -::: - -### 1. Run the Setup Wizard - -Run the following command in your terminal to start our handy install wizard: - - - -```bash -npm create thulite@latest -``` - - -```bash -pnpm create thulite@latest -``` - - -```bash -yarn create thulite -``` - - - -You can run `create-thulite` anywhere on your machine, so there's no need to create a new empty directory for your project before you begin. If you don’t have an empty directory yet for your new project, the wizard will help create one for you automatically. - -If all goes well, you should see a "Done" message followed by the next steps. - -### 2. Install dependencies - -`cd` into your new project directory and install your projects' dependencies before continuing. - - - -```bash -npm install -``` - - -```bash -pnpm install -``` - - -```bash -yarn install -``` - - - -### 3. Start Thulite ✨ - -Thulite uses the Hugo development server that has everything you need for project development. The `dev` command will start the local development server so that you can see your new website in action for the very first time. - -Use your favorite package manager to run this command and start the Hugo development server. - - - -```bash -npm run dev -``` - - -```bash -pnpm run dev -``` - - -```bash -yarn run dev -``` - - - -If all goes well, Thulite should now be serving your project on [http://localhost:1313](http://localhost:1313/)! - -The Hugo server will listen for live file changes in your project directory, so you will not need to restart the server as you make changes during development. - -If you aren't able to open your project in the browser, go back to the terminal where you ran the `dev` command and look to see if an error occurred, or if your project is being served at a different URL than the one linked to above. - -## Starter Templates - -You can also start a new Thulite project based on an [official example](https://github.com/thuliteio/create-thulite#templates) by passing a `--template` argument to the `create thulite` command. Or, by using a tool like [degit](https://github.com/Rich-Harris/degit) to scaffold your project with the `main` branch of any GitHub repository. - -### Official - -Create a new project with an official example — for example with Doks: - - - -```bash -# Syntax: npm create thulite@latest -- --template -npm create thulite@latest -- --template doks -``` - - -```bash -# Syntax: pnpm create thulite@latest --template -pnpm create thulite@latest --template doks -``` - - -```bash -# Syntax: yarn create thulite --template -yarn create thulite@latest --template doks -``` - - - -### Community - -Create a new project based on a GitHub repository's main branch - - - -```bash -# Syntax: npx degit [project-directory] -npx degit h-enk/simply-cyan my-thulite-project -``` - - -```bash -# Syntax: pnpm dlx degit [project-directory] -pnpm dlx degit h-enk/simply-cyan my-thulite-project -``` - - -```bash -# Syntax: yarn dlx degit [project-directory] -yarn dlx degit h-enk/simply-cyan my-thulite-project -``` - - - -Explore our [themes and starters showcase](https://thulite.io/themes/) where you can browse themes for blogs, portfolios, documentation, landing pages, and more! Or, [search on GitHub](https://github.com/search?o=desc&q=thulite+starter&s=stars&type=repositories) for even more starter projects. - -## Next Steps - -Success! You are now ready to start building with Thulite! 🥳 - -Here are a few topics that we recommend exploring next. You can read them in any order. You can even leave our documentation for a bit and go play in your new Thulite project codebase, coming back here whenever you run into trouble or have a question. - - - - - - diff --git a/src/content/docs/install/manual.mdx b/src/content/docs/install/manual.mdx deleted file mode 100644 index ed3d58989..000000000 --- a/src/content/docs/install/manual.mdx +++ /dev/null @@ -1,478 +0,0 @@ ---- -title: Install Thulite manually -description: A reference page in my new Starlight docs site. ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; -import FileTree from '~/components/FileTree.astro'; - -This guide will walk you through the steps to manually install and configure a new Thulite project. - -:::tip[Prefer a quicker way to get started?] -Follow the [create thulite CLI wizard](/install/auto/) instead. -::: - -## Prerequisites - -- __Node.js__ - `v20.11.0` or higher — run `node -v` to check. -- __Hugo extended__ - `v0.125.0` or higher — run `hugo version` to check. -- __Text editor__ - We recommend [VS Code](https://code.visualstudio.com/) — see also [Editor Setup](/editor-setup/). -- __Terminal__ - Thulite is accessed through its command-line interface (CLI). - -## Installation - -If you prefer _not_ to use our automatic `create thulite` CLI tool, you can set up your project yourself by following the guide below. - -### 1. Create your directory - -Create an empty directory with the name of your project, and then navigate into it. - -```bash -mkdir my-thulite-project && cd my-thulite-project -``` - -Once you are in your new directory, create your project `package.json` file. This is how you will manage your project dependencies, including Thulite. If you aren’t familiar with this file format, run the following command to create one. - - - -```bash -npm init --yes -``` - - -```bash -pnpm init -``` - - -```bash -yarn init --yes -``` - - - -### 2. Install Thulite, Prettier and Vite - -First, install the Thulite project dependencies inside your project. - -:::note[Important] -Thulite must be installed locally, not globally. Make sure you are *not* running `npm install -g thulite`, `pnpm add -g thulite`, or `yarn add global thulite`. -::: - - - -```bash -npm install thulite -``` - - -```bash -pnpm install thulite -``` - - -```bash -yarn add thulite -``` - - - -Then, install Prettier and Vite — as `devDependencies`: - - - -```bash -npm install -D prettier vite -``` - - -```bash -pnpm install -D prettier vite -``` - - -```bash -yarn add -D prettier vite -``` - - - -Next, replace any placeholder “scripts” section of your `package.json` with the following: - -```json title="package.json" del={2} ins={3-7} - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "create": "hugo new", - "dev": "hugo server --disableFastRender --noHTTPCache", - "format": "prettier **/** -w -c", - "build": "hugo --minify --gc", - "preview": "vite preview --outDir public" - }, -``` - -You'll use these scripts later in the guide to start Thulite and run its different commands. - -### 3. Create your first page - -Thulite follows the Hugo content structure. In the root of your project, create an empty `content` directory, and then navigate into it. - -```bash -mkdir content && cd content -``` - -Next, create your new homepage: - - - -```bash -npm run create _index.md -``` - - -```bash -pnpm run create _index.md -``` - - -```bash -yarn run create _index.md -``` - - - -In the frontmatter set `draft: false` and add some content: - -```md ---- -title: "Hello, World" -date: 2024-05-13T11:22:40+02:00 -draft: false ---- - -This line is from `content/_index.md` 🚀 - -``` - -### 4. Create your first static asset - -You will also want to create a `static` directory to store your static assets. Hugo will always include these assets in your final build, so you can safely reference them from inside your layout templates. - -In the root of your project, create an empty `static` directory, and then navigate into it. - -```bash -mkdir static && cd static -``` - -In your text editor, create a new file in your directory at `static/robots.txt`. `robots.txt` is a simple file that most sites will include to tell search bots like Google how to treat your site. - -For this guide, copy-and-paste the following code snippet into your new file: - -```ini -# Example: Allow all bots to scan and index your site. -# Full syntax: https://developers.google.com/search/docs/advanced/robots/create-robots-txt -User-agent: * -Allow: / -``` - -### 5. Create `app.scss` - -In the root of your project, create an empty `assets/scss` directory, and then navigate into it. - -```bash -mkdir -p assets/scss && cd assets/scss -``` - -Add an `app.scss` file with the following: - -```scss -// app.scss -/** Import modern-css-reset */ -@import "modern-css-reset/src/reset"; - -:root { - --main-bg-color: yellowgreen; -} - -body { - background-color: var(--main-bg-color); - text-align: center; -} -``` - -### 6. Create configuration files - -Thulite follows Hugo's configuration setup. - -#### `config/_default` directory - -In the root of your project, create an empty `config/_default` directory, and then navigate into it. - -```bash -mkdir -p config/_default && cd config/_default -``` - -##### `hugo.toml` - -Add a `hugo.toml` file with the following: - -```toml -// hugo.toml -title = "Thulite" -baseurl = "http://localhost/" -canonifyURLs = false -disableAliases = true -disableHugoGeneratorInject = true -disableKinds = ["taxonomy", "term"] -enableEmoji = true -enableGitInfo = false -enableRobotsTXT = true -languageCode = "en-US" -paginate = 7 -rssLimit = 10 -summarylength = 20 # 70 (default) - -copyRight = "Copyright (c) 2020-2024 Thulite" - -[build.buildStats] - enable = true - -[outputs] - home = ["HTML"] - -[minify.tdewolff.html] - keepWhitespace = false - -``` - -##### `module.toml` - -Add a `module.toml` file with the following: - -```toml -//module.toml -# mounts -## archetypes -[[mounts]] - source = "archetypes" - target = "archetypes" - -## assets -[[mounts]] - source = "node_modules/@thulite/core/assets" - target = "assets" - -[[mounts]] - source = "assets" - target = "assets" - -## content -[[mounts]] - source = "content" - target = "content" - -## data -[[mounts]] - source = "data" - target = "data" - -## i18n -[[mounts]] - source = "i18n" - target = "i18n" - -## layouts -[[mounts]] - source = "node_modules/@thulite/core/layouts" - target = "layouts" - -[[mounts]] - source = "layouts" - target = "layouts" - -## static -[[mounts]] - source = "static" - target = "static" -``` - -##### `params.toml` - -Add a `params.toml` file with the following: - -```toml -// params.toml -# Hugo -title = "My Thulite site" -description = "Congrats on setting up a new Thulite project!" -images = ["cover.png"] - -[social] - twitter = "thulite" -``` - -#### `config` directory - -`cd` one level up. - -```bash -cd .. -``` - -##### `babel.config.js` - -Add a `babel.config.js` file with the following: - -```js -// babel.config.js -module.exports = { - presets: [ - [ - '@babel/preset-env', - { - targets: { - browsers: [ - // Best practice: https://github.com/babel/babel/issues/7789 - '>=1%', - 'not ie 11', - 'not op_mini all', - ], - }, - }, - ], - ], -}; -``` - -##### `postcss.config.js` - -Add a `postcss.config.js` file with the following: - -```js -// postcss.config.js -const autoprefixer = require('autoprefixer'); -const purgecss = require('@fullhuman/postcss-purgecss'); -const whitelister = require('purgecss-whitelister'); - -module.exports = { - plugins: [ - autoprefixer(), - purgecss({ - content: [ './hugo_stats.json' ], - extractors: [ - { - extractor: (content) => { - const els = JSON.parse(content).htmlElements; - return els.tags.concat(els.classes, els.ids); - }, - extensions: ['json'], - }, - ], - dynamicAttributes: [ - 'aria-expanded', - 'id', - 'size', - 'type', - ], - safelist: [ - 'active', - 'disabled', - 'hidden', - 'show', - 'img-fluid', - 'blur-up', - 'lazyloaded', - ...whitelister([ - './assets/scss/**/*.scss', - ]), - ], - }), - ], -} -``` - -#### Project directory - -`cd` one level up. - -```bash -cd .. -``` - -##### `.prettierignore` - -Add a `.prettierignore` file with the following: - -```txt -// .prettierignore -*.html -*.ico -*.png -*.jp*g -*.toml -*.*ignore -*.svg -*.xml -LICENSE -.npmrc -.gitkeep -*.woff* -*.txt -*.map -``` - -##### `.prettierrc.yaml` - -Add a `.prettierrc.yaml` file with the following: - -```yaml -// .prettierrc.yaml -# Default config -tabWidth: 4 -endOfLine: crlf -singleQuote: true -printWidth: 100000 -trailingComma: none -bracketSameLine: true -quoteProps: consistent -experimentalTernaries: true - -# Overrided config -overrides: - - files: ["*.md", "*.json", "*.yaml"] - options: - tabWidth: 2 - singleQuote: false - - files: ["*.scss"] - options: - singleQuote: false -``` - -## Next steps - -If you have followed the steps above, your project directory should now look like this: - - - -- assets/scss - - app.scss -- config - - _default - - hugo.toml - - module.toml - - params.toml - - babel.config.js - - postcss.config.js -- content - - _index.md -- node_modules/ -- static - - robots.txt -- .prettierignore -- .prettierrc.yaml -- package-lock.json # or yarn.lock, pnpm-lock.yaml, etc. -- package.json - - - -Congratulations, you're now set up to use Thulite! - -If you followed this guide completely, you can jump directly to [Step 3: Start Thulite](/install/auto/#3-start-thulite) to continue and learn how to run Thulite for the first time. diff --git a/src/content/docs/reference/configuration.md b/src/content/docs/reference/configuration.md deleted file mode 100644 index 56dc29bcf..000000000 --- a/src/content/docs/reference/configuration.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Configuration Reference -description: A reference page in my new Starlight docs site. -sidebar: - label: Configuration - order: 0 ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. -Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/src/content/docs/reference/frontmatter.md b/src/content/docs/reference/frontmatter.md deleted file mode 100644 index b6a3f9651..000000000 --- a/src/content/docs/reference/frontmatter.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Frontmatter Reference -description: A reference page in my new Starlight docs site. -sidebar: - label: Frontmatter - order: 1 ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. -Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/src/content/docs/reference/markdown.md b/src/content/docs/reference/markdown.md deleted file mode 100644 index 14cfd79b5..000000000 --- a/src/content/docs/reference/markdown.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: Markdown Reference -description: A reference page in my new Starlight docs site. -sidebar: - label: Markdown - order: 3 -next: false ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. -Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/src/content/docs/upgrade-thulite.mdx b/src/content/docs/upgrade-thulite.mdx deleted file mode 100644 index 8237e9034..000000000 --- a/src/content/docs/upgrade-thulite.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Upgrade Thulite -description: A guide in my new Starlight docs site. ---- -import { Tabs, TabItem } from '@astrojs/starlight/components'; - -This guide covers how to update your version of Thulite and related dependencies, how to learn what has changed from one version to the next, and how to understand Thulite' versioning system and corresponding documentation updates. - -## What has changed? - -See [all release notes](https://github.com/thuliteio/thulite/releases) or the [latest release notes](https://github.com/thuliteio/thulite/releases/latest). - -You can find an exhaustive list of all changes in [Thulite' changelog](https://github.com/thuliteio/thulite/blob/main/CHANGELOG.md), and important instructions for upgrading to each new [major version](#major-changes) in our [upgrade guides](#upgrade-guides). - -## Upgrade to the latest version - -To update Thulite and integrations to their current versions, use the appropriate command for your package manager. - - - -```bash -# Example: upgrade Thulite with Images and SEO integrations -npm install thulite@latest @thulite/images@latest @thulite/seo@latest -``` - - -```bash -# Example: upgrade Thulite with Images and SEO integrations -pnpm install thulite@latest @thulite/images@latest @thulite/seo@latest -``` - - -```bash -# Example: upgrade Thulite with Images and SEO integrations -yarn add thulite@latest @thulite/images@latest @thulite/seo@latest -``` - - - -### Install a specific version number - -To install a specific [version of Thulite](https://www.npmjs.com/package/thulite?activeTab=versions) or integrations, use the appropriate command for your package manager. - - - -```bash -npm install thulite@2.4.1 @thulite/images@3.1.0 -``` - - -```bash -pnpm install thulite@2.4.1 @thulite/images@3.1.0 -``` - - -```bash -yarn add thulite@2.4.1 @thulite/images@3.1.0 -``` - - - -## Documentation updates - -This documentation is updated for each [minor release](#minor-changes) and [major version](#major-changes) release. When new features are added, or existing usage changes, the docs will update to reflect the __current behavior of Thulite__. If your project is not updated, then you may notice some behaviors do not match the up-to-date documentation. - -New features are added to docs with the specific version number in which they were added. This means that if you have not updated to the latest release of Thulite, some documented features may be unavailable. Always check the `Added in:` version number and make sure your project is updated before attempting to use new features! - -If you have not upgraded to the latest major version of Thulite, you may encounter significant differences between the Thulite documentation and your project's behavior. We strongly recommend upgrading to the current major version of Thulite as soon as you are able. Both the code and the documentation for earlier versions is unsupported. - -### Upgrade Guides - -After every [major version release](#major-changes), you will find an __upgrade guide__ with information about important changes and instructions for upgrading your project code. - -The main Thulite documentation pages are always __accurate for the latest released version of Thulite__. They do not describe or compare to how things worked in previous versions, nor do they highlight updated or changed behavior. - -See the upgrade guides below for an explanation of changes, comparing the new version to the old. The upgrade guides include everything that could require you to change your own code: breaking changes, deprecations, feature removals and replacements as well as updated usage guidance. Each change to Thulite includes a "What should I do?" section to help you successfully update your project code. - -- [Upgrade to v2](/guides/upgrade-to/v2/) - -### Older docs (unmaintained) - -Documentation for older versions of Thulite is not maintained, but is available as a static snapshot. Use these versions of docs if you are unable to upgrade your project, but still wish to consult guides and reference: - -- [unmaintained v1.5.8 snapshot](https://deploy-preview-255--thulite.netlify.app/) - -## Semantic versioning - -Thulite attempts to adhere as much as possible to [semantic versioning](https://semver.org/), which is a set of rules developers use to determine how to assign a version number to a release. Semantic version follows a predictable pattern to inform users of the kind of changes they can expect from one version to the next. - -Semantic versioning enforces a pattern of `X.Y.Z` for software version numbers. These values represent __major (X)__, __minor (Y)__, and __patch (Z)__ updates. - -### Patch changes - -Patch changes are the least disruptive changes. They do not change the way you use Thulite, and no change to your own code is required when you update. - -When Thulite issues a "patch" version, the last number increases. (e.g. `thulite@2.4.1` -> `thulite@2.4.2`) - -Patches may be released for reasons such as: - -- Internal changes that do not change Thulite' functionality: - - refactors - - performance improvements - - increase or change in test coverage - - aligning with stated documentation and expected behavior -- Improvements to logging and error messages. -- Re-releases after a failed release. - -Patch changes also include __most bug fixes__, even in cases where users were taking advantage of existing unintended or undesirable behavior. - -### Minor changes - -Minor releases primarily introduce new features and improvements that you may wish to try, but require no changes to your code. Some existing features may also be `deprecated` (marked for deletion in a future version while continuing to function) in a minor release, giving you the opportunity to prepare for their eventual removal. - -Minor releases include changes such as: - -- __Deprecations__ of existing features/options with a warning that they will be removed in an upcoming major release. -- Introduction of new functionalities. -- Introduction of new options in the integration hooks. - -A minor release may also include smaller, patch changes at the same time. - -### Major changes - -Major releases will include breaking changes to at least some existing code. These breaking changes are always documented in an ["Upgrade to vX"](#upgrade-guides) guide in Thulite. - -Major releases allow Thulite to make significant changes not only to internal logic, but also to intended behavior and usage. Documentation will be updated to reflect the latest version only, and __static, unmaintained snapshots of older docs__ are available as a historical record for older projects that are not yet upgraded. - -Major releases include changes such as: - -- Removal of previously deprecated functionalities. -- Changes of existing functionalities. -- Changes of existing options in the integration hooks. - -A major release may also include some non-breaking changes and improvements that would normally be released separately in a minor or patch release. - -## Node.js support - -- Thulite supports the [latest Maintenance LTS version](https://nodejs.org/en/about/previous-releases#release-schedule) of Node.js. -- Thulite supports the [current Active LTS version](https://nodejs.org/en/about/previous-releases#release-schedule) of Node.js. -- Thulite can support odd versions of Node.js. - -## Hugo support - -- Thulite supports the [latest Hugo extended version](https://github.com/gohugoio/hugo/releases). diff --git a/src/data/logos.ts b/src/data/logos.ts deleted file mode 100644 index a14053b7f..000000000 --- a/src/data/logos.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { z } from 'astro:content'; - -/** Enforce logo types while preserving exact key type. */ -const LogoCheck = >(logos: T) => logos; - -export const logos = LogoCheck({ - alpinejs: { file: 'alpine-js.svg', padding: '.1875em' }, - aws: { file: 'aws.svg', padding: '.1875em' }, - buddy: { file: 'buddy.svg', padding: '.1625em' }, - cleavr: { file: 'cleavr.svg', padding: '0.125em 0.125em 0.1375em' }, - cloudflare: { file: 'cloudflare-pages.svg', padding: '.1875em' }, - crystallize: { file: 'crystallize.svg', padding: '.1875em' }, - 'create-react-app': { file: 'create-react-app.svg', padding: '.1875em' }, - datocms: { file: 'datocms.svg', padding: '0.25em 0.25em 0.25em 0.3em' }, - deno: { file: 'deno.svg', padding: '0' }, - edgio: { file: 'edgio.svg', padding: '.1625em' }, - github: { file: 'github.svg', padding: '0.125em 0.125em 0.1375em' }, - gitlab: { file: 'gitlab.svg', padding: '0' }, - core: { file: 'thulite.svg', padding: '.2125em' }, - images: { file: 'thulite.svg', padding: '.2125em' }, - 'inline-svg': { file: 'thulite.svg', padding: '.2125em' }, - seo: { file: 'thulite.svg', padding: '.2125em' }, - 'bolt-core': { file: 'thulite.svg', padding: '.2125em' }, - 'doks-core': { file: 'doks.svg', padding: '.2125em' }, - bootstrap: { file: 'bootstrap.svg', padding: '.1875em' }, - bolt: { file: 'thulite.svg', padding: '.2125em' }, - doks: { file: 'doks.svg', padding: '.2125em' }, - 'cabin-analytics': { file: 'cabin.svg', padding: '.25em' }, - 'fathom-analytics': { file: 'fathom-analytics.svg', padding: '.2125em' }, - 'google-analytics': { file: 'google-analytics.svg', padding: '.1875em' }, - 'plausible-analytics': { file: 'plausible.svg', padding: '.1875em' }, - 'google-cloud': { file: 'google-cloud.svg', padding: '.1875em' }, - 'google-firebase': { file: 'firebase.svg', padding: '.1875em' }, - heroku: { file: 'heroku.svg', padding: '.25em' }, - 'microsoft-azure': { file: 'microsoft-azure.svg', padding: '.1625em .1625em .2125em' }, - netlify: { file: 'netlify.svg', padding: '.1625em' }, - render: { file: 'render.svg', padding: '.1875em' }, - surge: { file: 'surge.svg', padding: '.125em' }, - vercel: { file: 'vercel.svg', padding: '.3em .3em .35em' }, - image: { file: 'astro-image.svg', padding: '.1875em' }, - lit: { file: 'lit.svg', padding: '.1875em' }, - mdx: { file: 'mdx.svg', padding: '.1em' }, - node: { file: 'node.svg', padding: '.1875em' }, - partytown: { file: 'partytown.svg', padding: '.2em .2em .25em .25em' }, - preact: { file: 'preact.svg', padding: '.1875em' }, - prefetch: { file: 'prefetch.svg', padding: '.25em' }, - react: { file: 'react.svg', padding: '.2em' }, - sitemap: { file: 'sitemap.svg', padding: '.1875em .25em .25em' }, - 'solid-js': { file: 'solid.svg', padding: '.1875em' }, - svelte: { file: 'svelte.svg', padding: '.1875em' }, - tailwind: { file: 'tailwind.svg', padding: '.1875em' }, - vue: { file: 'vue.svg', padding: '.3em .2em .2em' }, - flightcontrol: { file: 'flightcontrol.svg', padding: '0em 0em 0em' }, - sst: { file: 'sst.svg', padding: '0em 0.15em 0em' }, - buttercms: { file: 'buttercms.svg', padding: '.1875em' }, - builderio: { file: 'builderio.svg', padding: '.25em' }, - contentful: { file: 'contentful.svg', padding: '.05em' }, - cosmic: { file: 'cosmic.svg', padding: '.24em' }, - hygraph: { file: 'hygraph.svg', padding: '.1em .125em .1em .1em' }, - directus: { file: 'directus.svg', padding: '0 .1em' }, - ghost: { file: 'ghost.png', padding: '.125em' }, - 'decap-cms': { file: 'decap-cms.svg', padding: '0 .225em 0 .26em' }, - 'tina-cms': { file: 'tina-cms.svg', padding: '.15em' }, - payload: { file: 'payload.svg', padding: '.3em .25em .3em .3em' }, - prismic: { file: 'prismic.svg', padding: '.25em' }, - caisy: { file: 'caisy.svg', padding: '.05em' }, - sanity: { file: 'sanity.svg', padding: '.15em' }, - storyblok: { file: 'storyblok.svg', padding: '.3em .25em .25em' }, - spinal: { file: 'spinal.svg', padding: '.15em .15em' }, - space: { file: 'space.svg', padding: '.10em .10em' }, - wordpress: { file: 'wordpress.svg', padding: '.2em' }, - kinsta: { file: 'kinsta.svg', padding: '0' }, - gatsby: { file: 'gatsby.svg', padding: '0' }, - nextjs: { file: 'nextjs.svg', padding: '.125em' }, - jekyll: { file: 'jekyll.png', padding: '.1em .05em 0' }, - hugo: { file: 'hugo.svg', padding: '.125em' }, - eleventy: { file: 'eleventy.svg', padding: '.075em .05em .05em' }, - gridsome: { file: 'gridsome.svg', padding: '.15em' }, - pelican: { file: 'pelican.svg', padding: '.25em .225em .25em .25em' }, - sveltekit: { file: 'sveltekit.svg', padding: '.1875em' }, - vuepress: { file: 'vuepress.png', padding: '.2em .175em .175em' }, - docusaurus: { file: 'docusaurus.svg', padding: '.225em' }, - nuxtjs: { file: 'nuxtjs.svg', padding: '.25em' }, - keystonejs: { file: 'keystonejs.svg', padding: '.25em' }, - appwriteio: { file: 'appwriteio.svg', padding: '.05em' }, - supabase: { file: 'supabase.svg', padding: '.2em' }, - tigris: { file: 'tigris.svg', padding: '.3em .1em .15em' }, - cloudcannon: { file: 'cloudcannon.svg', padding: '.25em' }, - markdoc: { file: 'markdoc.svg', padding: '.35em 0 .35em .1em' }, - gitbook: { file: 'gitbook.svg', padding: '.25em' }, - 'frontmatter-cms': { file: 'frontmatter-cms.svg', padding: '.25em' }, - statamic: { file: 'statamic.svg', padding: '.2em' }, - xata: { file: 'xata.svg', padding: '0.234em 0.234em 0.1875em' }, - strapi: { file: 'strapi.svg', padding: '.25em' }, - microcms: { file: 'microcms.svg', padding: '.2em' }, - preprcms: { file: 'preprcms.svg', padding: '0' }, - 'kontent-ai': { file: 'kontent-ai.svg', padding: '.15em' }, - keystatic: { file: 'keystatic.svg', padding: '0' }, -}); - -export type LogoKey = keyof typeof logos; -const logoKeys = Object.keys(logos) as [LogoKey, ...LogoKey[]]; -export const isLogoKey = (val: string | undefined) => z.enum(logoKeys).parse(val); diff --git a/src/env.d.ts b/src/env.d.ts deleted file mode 100644 index acef35f17..000000000 --- a/src/env.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -/// -/// diff --git a/src/i18n/ar/README.md b/src/i18n/ar/README.md deleted file mode 100644 index 478e46a9b..000000000 --- a/src/i18n/ar/README.md +++ /dev/null @@ -1,71 +0,0 @@ -# 📖 قائمة المصطلحات - -توجد هذه القائمة لتسهيل عملية الترجمة والتوحيد بين المترجمين. يمكنك استخدامها للتأكد من أنك تستخدم نفس المصطلحات التي تم استخدامها في الترجمات السابقة. - -## 📚 كلمات لا تحتاج إلى ترجمة - -هذه الكلمات لا تحتاج إلى ترجمة ويمكن استخدامها كما هي في اللغة العربية في النصوص المترجمة، لصعوبة ترجمتها بوضوح أو لأنها مصطلحات معروفة لدى المبرمجين والمترجمين. - -| English | Notes | -| --------------------- | ------------------------------------------------------------ | -| API | Application Programming Interface | -| Slot | The tag that astro offers | -| Programming Languages | JavaScript, TypeScript, JSX. No need to write them in Arabic | -| CLI | Please add `(CLI)` after the translated expression | - -## 📚 كلمات تحتاج إلى ترجمة - -تم الاعتماد على [قائمة مصطلحات المعلوماتية](https://archive.org/details/INFO2017ENAR/page/1/mode/2up) في اختيار الألفاظ والكلمات - -| English | Arabic | -| --------------- | --------------------------- | -| Framework | إطار عمل (إطار) | -| Component | مكوّن | -| Astro Islands | جزر أسترو | -| Layout | نسق | -| Template | قالب | -| Version | إصدار | -| Frontend | واجهة أمامية | -| Backend | قفوي | -| Editor | محرر | -| Upgrade | ترقية | -| Migrate | تحويل | -| Integration | تكامل | -| Deploy | نشر | -| Static | ثابت | -| Dynamic | ديناميكي | -| Routing | توجيه | -| Rendering | تصيير | -| Script | إخطاطة | -| Event Handling | تناول الأحداث | -| Import | إضافة / استيراد | -| Export | تصدير | -| Client | زبون | -| Endpoints | نقاط طرفية | -| Test | اختبار | -| Aliases | أسماء مستعارة / أسماء بديلة | -| Runtime | زمن التنفيذ | -| CLI | واجهة أسطر أوامر (CLI) | -| CMS | نظام إدارة المحتوى | -| Scope | مدى / نطاق | -| View Transition | انتقال المشهد | -| Adapter | موائمة | -| Server | خادم / مخدّم | -| Directive | موَجِّه | -| Variable | متغيّر | -| Syntax | تركيب نحوي | -| Fetch | جلب | -| Configuration | إعدادات | -| Reference | مرجع | -| Bundle | رزمة | -| Package | حزمة | -| Repository | خازنة / مستودعة | -| Privacy Policy | سياسة الخصوصية | -| Stub | مسودة | -| Recipe | مثال | - - - -> ⚠️ Recipe تترجم لـ **مثال** وليست ترجمة حرفية للكلمة، وذلك لأنها تعني مثال عملي لتطبيق ما، وليس مثالاً لطبخة ما. - -> ⚠️ هذه القائمة ليست شاملة ويمكنك إضافة المصطلحات التي تراها مناسبة لها. \ No newline at end of file diff --git a/src/i18n/ar/docsearch.ts b/src/i18n/ar/docsearch.ts deleted file mode 100644 index 9474e175b..000000000 --- a/src/i18n/ar/docsearch.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'البحث', - placeholder: 'ابحث في الوثائق', - shortcutLabel: 'اضغط على / للبحث', - resultsFooterLede: 'هل تبحث عن إضافة أو ثيم لأسترو؟ هل تريد المزيد من المساعدة؟', - resultsFooterIntegrations: 'دليل إضافات أسترو', - resultsFooterThemes: 'معرض قوالب أسترو', - resultsFooterDiscord: 'انضم لنا على ديسكورد', - modal: { - searchBox: { - resetButtonTitle: 'إعادة تعيين البحث', - resetButtonAriaLabel: 'زر إعادة تعيين البحث', - cancelButtonText: 'إلغاء', - cancelButtonAriaLabel: 'زر الإلغاء', - }, - startScreen: { - recentSearchesTitle: 'عمليات البحث الأخيرة', - noRecentSearchesText: 'لا توجد عمليات بحث قديمة', - saveRecentSearchButtonTitle: 'تفضيل هذا البحث', - removeRecentSearchButtonTitle: 'إزالة هذا البحث من السجل', - favoriteSearchesTitle: 'المفضلة', - removeFavoriteSearchButtonTitle: 'إزالة هذا البحث من المفضلة', - }, - errorScreen: { - titleText: 'خطأ أثناء استرداد النتائج', - helpText: 'يرجى التحقق من حالة اتصالك بالإنترنت.', - }, - footer: { - selectText: 'للاختيار', - selectKeyAriaLabel: 'اضغط على المفتاح', - navigateText: 'للتنقل', - navigateUpKeyAriaLabel: 'اضغط سهم أعلى للتنقل للأعلى', - navigateDownKeyAriaLabel: 'اضغط سهم أسفل للتنقل للأسفل', - closeText: 'للإغلاق', - closeKeyAriaLabel: 'اضغط esc للإغلاق', - searchByText: 'بحث عبر', - }, - noResultsScreen: { - noResultsText: 'لم يتم العثور على أي نتائج لـ', - suggestedQueryText: 'جرب البحث عن', - reportMissingResultsText: 'هل تعتقد أنك وجدت خطأ؟', - reportMissingResultsLinkText: 'أخبرنا.', - }, - }, -}); diff --git a/src/i18n/ar/nav.ts b/src/i18n/ar/nav.ts deleted file mode 100644 index 75d50ce90..000000000 --- a/src/i18n/ar/nav.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - // Start Here - startHere: 'ابدأ هنا', - 'getting-started': 'دليل البداية', - install: 'التثبيت', - 'editor-setup': 'إعداد المحرر', - 'guides/upgrade-to/v3': 'الترقية إلى الإصدار 3', - - // Core Concepts - coreConcepts: 'المفاهيم الأساسية', - 'concepts/why-astro': 'لماذا أسترو؟', - 'concepts/islands': 'جزر أسترو', - - // Tutorials - tutorials: 'الدروس', - 'blog-tutorial': 'إنشاء مدونة', - - // Basics - basics: 'الأساسيات', - 'core-concepts/project-structure': 'هيكل المشروع', - 'core-concepts/astro-components': 'المكوّنات', - 'core-concepts/astro-pages': 'الصفحات', - 'core-concepts/layouts': 'النسق', - - // Examples - examples: 'الأمثلة', - 'guides/migrate-to-astro': 'التحويل إلى أسترو', - 'guides/cms': 'ربط نظام إدارة المحتوى', - 'guides/backend': 'إضافة خدمات قفويّة', - 'guides/integrations-guide': 'إضافة التكاملات', - 'guides/deploy': 'نشر موقعك', - 'guides/recipes': 'المزيد من الأمثلة', - - // Guides - features: 'الدليل', - 'core-concepts/astro-syntax': 'التركيب النحوي لأسترو', - 'core-concepts/framework-components': 'مكوّنات أطر الويب الأخرى', - 'core-concepts/routing': 'التوجيه', - 'guides/markdown-content': 'ماركداون و MDX', - 'guides/content-collections': 'مجموعات المحتوى', - 'guides/client-side-scripts': 'الإخطاطات وتناول الأحداث', - 'guides/styling': 'الطُرُز و CSS', - 'guides/images': 'الصور', - 'guides/fonts': 'الخطوط', - 'guides/imports': 'الإضافات', - 'guides/server-side-rendering': 'التصيير على الخادم', - 'core-concepts/endpoints': 'النقاط الطرفية', - 'guides/data-fetching': 'جلب البيانات', - 'guides/middleware': 'الوسيط', - 'guides/testing': 'الاختبار', - 'guides/view-transitions': 'انتقال المشهد', - 'guides/troubleshooting': 'حل المشاكل', - - // Configuration - configuration: 'الإعدادات', - 'guides/configuring-astro': 'ملف إعدادات أسترو', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'الأسماء المستعارة للإضافات', - 'guides/environment-variables': 'متغيرات البيئة', - - // Reference - reference: 'المراجع', - 'reference/configuration-reference': 'الإعدادات', - 'reference/api-reference': 'API زمن التنفيذ', - 'reference/integrations-reference': 'API التكاملات', - 'reference/adapter-reference': 'API الموائِم', - 'reference/image-service-reference': 'API خدمة الصور', - 'reference/directives-reference': 'توجيهات القوالب', - 'reference/cli-reference': 'واجهة سطر الأوامر (CLI) لأسترو', - 'reference/error-reference': 'مرجع الأخطاء', - 'guides/publish-to-npm': 'تنسيق حزمة NPM', -}); diff --git a/src/i18n/ar/ui.ts b/src/i18n/ar/ui.ts deleted file mode 100644 index 012d4c00f..000000000 --- a/src/i18n/ar/ui.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'اقفز إلى المحتوى', - 'a11y.sectionLink': 'قسم بعنوان', - 'navbar.a11yTitle': 'القمة', - // Site settings - 'site.title': 'مستندات أسترو', - 'site.description': 'انشئ مواقع ويب أسرع باستخدام ', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'شعار أسترو على فضاء مليئ بالنجوم، مع كوكب أرجواني يشبه زحل يطفو في المقدمة اليمنى', - // Left Sidebar - 'leftSidebar.a11yTitle': 'أساسي', - 'leftSidebar.learnTab': 'تعلّم', - 'leftSidebar.referenceTab': 'مرجع', - 'leftSidebar.viewInEnglish': 'اعرض باللغة الإنجليزية', - 'leftSidebar.sponsoredBy': 'برعاية', - // Right Sidebar - 'rightSidebar.a11yTitle': 'ثانوي', - 'rightSidebar.onThisPage': 'في الصفحة الحالية', - 'rightSidebar.overview': 'نظرة عامة', - 'rightSidebar.community': 'المجتمع', - 'rightSidebar.joinDiscord': 'انضم إلينا على Discord', - 'rightSidebar.readBlog': 'اقرأ منشورات مدونتنا', - 'rightSidebar.openCollective': 'Open Collective', - 'rightSidebar.contribute': 'ساهم', - 'rightSidebar.contributorGuides': 'أدلة المساهمين', - 'rightSidebar.editPage': 'عدل هذه الصفحة', - 'rightSidebar.translatePage': 'ترجم هذه الصفحة', - 'rightSidebar.github': 'مستندات أسترو على GitHub', - // Footer - 'footer.privacyPolicy': 'سياسة الخصوصية', - // `` acessibility labels - 'themeToggle.useLight': 'استخدم الوضع النهاري', - 'themeToggle.useDark': 'استخدم الوضع الليلي', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'الصفحة التالية', - 'articleNav.prevPage': 'عودة', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'أُضيفت في:', - 'since.new': 'جديد', - 'since.beta': 'تجريبي', - // Installation Guide - 'install.autoTab': 'CLI أوتوماتيكي', - 'install.manualTab': 'التثبيت اليدوي', - // `` vocabulary - 'deploy.sectionTitle': 'دليل النشر', - 'deploy.altSectionTitle': 'المزيد من أدلة النشر', - 'deploy.filterLabel': 'تصفية حسب نوع النشر', - 'deploy.ssrTag': 'SSR التصيير على الخادم', - 'deploy.staticTag': 'ثابت', - // CMS Guides vocabulary - 'cms.navTitle': 'المزيد من أدلة أنظمة إدارة المحتوى', - // Migration Guides vocabulary - 'migration.navTitle': 'المزيد من أدلة التحويل', - // Recipes vocabulary - 'recipes.navTitle': 'المزيد من الأمثلة', - // `` vocabulary - 'recipesLink.singular': 'مثال ذو صلة:', - 'recipesLink.plural': 'أمثلة ذات صلة', - // `` fallback text - 'contributors.seeAll': 'اعرض كل المساهمين', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'هذه الصفحة غير متوفرة باللغة العربية، لذا سنعرضها بالإنجليزية. يمكنك المساهمة عن طريق ترجمتها بنفسك!', - 'fallbackContent.linkText': 'تعرف على المزيد حول كيفية المساهمة', - // 404 Page - '404.title': 'صفحة غير موجودة', - '404.content': 'الصفحة التي تبحث عنها غير موجودة في مجموعتنا الشمسية.', - '404.linkText': 'خذني إلى الصفحة الرئيسية', - // Aside component default labels - 'aside.note': 'ملحوظة', - 'aside.tip': 'نصيحة', - 'aside.caution': 'تنبيه', - 'aside.danger': 'تحذير', - // `` vocabulary - 'languageSelect.label': 'اختر لغة', - // Integrations vocabulary - 'integrations.changelog': 'سجل التغييرات', - 'integrations.footerTitle': 'المزيد من الإضافات', - 'integrations.renderers': 'أطر عمل الواجهات', - 'integrations.adapters': 'محولات تصيير على الخادم SSR', - 'integrations.others': 'أخرى', - // Checklist component - 'checklist.or': 'أو', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'صحيح!', - 'multipleChoice.defaultIncorrect': 'حاول مرة أخرى!', - 'multipleChoice.submitLabel': 'إرسال', - // Tutorial Progress - 'progress.todo': 'قيد الإنجاز', - 'progress.done': 'مكتمل', - // Tutorial Navigation - 'tutorial.trackerLabel': 'متتبع البرنامج التعليمي', - 'tutorial.unit': 'وحدة', - // Tutorial - 'tutorial.getReady': 'استعد لـ…', - // Feedback Fish widget - 'feedback.button': 'أرسل لنا ملاحظاتك', - 'feedback.a11yLabel': 'نموذج الملاحظات', - 'feedback.formTitle': 'بماذا تفكّر؟', - 'feedback.categoryGroupLabel': 'اختر فئة الملاحظة المناسبة', - 'feedback.issue': 'مشكلة', - 'feedback.createIssue': 'انشئ مشكلة على GitHub', - 'feedback.idea': 'فكرة', - 'feedback.other': 'أخرى', - 'feedback.messageA11yLabel': 'رسالتك', - 'feedback.placeholder': 'ما الي الذي تريد قوله؟', - 'feedback.submit': 'أرسل', - 'feedback.close': 'أغلق', - 'feedback.success': 'شكرًا! تم إرسال ملاحظاتك بنجاح.', - // `` component - 'fileTree.directoryLabel': 'دليل', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'نافذة طرفيّة', - 'expressiveCode.copyButtonTooltip': 'نسخ إلى الحافظة', - 'expressiveCode.copyButtonCopied': 'تم النسخ!', - // Backend Guides vocabulary - 'backend.navTitle': 'المزيد من أدلة الخدمات القفويّة', - 'stub.title': 'قم بتحرير هذه المسودة', - 'stub.subtitle': 'هذه المسودة تحتاج إلى مساعدتكم!', - 'stub.description.migration': - 'هل تريد المساهمة في هذا الدليل؟ هل لديك منشور في المدونة أو فيديو أو مصدر آخر لمشاركته حول التحويل من هذه التقنية إلى Astro؟', - 'stub.description.cms': 'هل تعلم المزيد عن كيفية استخدام نظام إدارة المحتوى هذا مع Astro؟', - 'stub.description.backend': 'هل تعلم المزيد عن كيفية استخدام هذه الخدمة القفويّة مع Astro؟', -}); diff --git a/src/i18n/bcp-normalize.ts b/src/i18n/bcp-normalize.ts deleted file mode 100644 index 4fc02852f..000000000 --- a/src/i18n/bcp-normalize.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Simplified method for normalizing language tags. - * We use `bcp-47-normalize` elsewhere, but this is a little presumptuous - * and strips region identifiers from `pt-BR` and `zh-CN`. - * @param tag Language tag to normalize, e.g. `pt-br` → `pt-BR` - */ - -export function normalizeLangTag(tag: string) { - if (!tag.includes('-')) return tag.toLowerCase(); - const [lang, region] = tag.split('-'); - return lang.toLowerCase() + '-' + region.toUpperCase(); -} diff --git a/src/i18n/de/README.md b/src/i18n/de/README.md deleted file mode 100644 index c37855724..000000000 --- a/src/i18n/de/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# Anleitung für deutsche Übersetzungen - -Hallo und herzlich willkommen! Wir freuen uns sehr, dass du dich dafür interessierst, bei der deutschen Übersetzung der Astro-Dokumentation mitzuwirken. 😊🚀 - - -## Zielsetzung dieser Anleitung - -Wie bei Open Source-Projekten üblich wird unsere Dokumentation von vielen fleißigen Personen auf freiwilliger Basis übersetzt. Die aktuellen Übersetzungen stammen daher aus vielen unterschiedlichen Federn. Zudem ändert sich auch die Besetzung unseres Teams im Laufe der Zeit. - -Diese Anleitung soll dazu beitragen, dass sich das Ergebnis beim Lesen trotz aller verschiedenen Einflüsse wie ein Gesamtwerk mit gemeinsamem Schreibstil anfühlt. - -  - - -## Übersetzungs-Glossar - -| Originalbegriff | Übersetzung | Anmerkungen -|:----------------------------|:-------------------------------------|:------------ -| asset | Asset | Wird nicht übersetzt (gängiger Domänenbegriff). -| branch | der Branch | Wird nicht übersetzt (gängiger Domänenbegriff). -| build process | Erzeugungs- / Erstellungsvorgang | s.o. -| build time | Erzeugungs- / Erstellungszeitpunkt | s.o. -| to build | erzeugen | Da die Alternativen "bauen" oder gar "builden" merkwürdig klingen, wird diese Übersetzung vermutlich so bleiben. -| command line | die Kommandozeile | -| Commit | Commit | Siehe **Stilrichtlinien** -| CLI | die Kommandozeilen­schnittstelle | Beim ersten Vorkommen in einem Abschnitt kann `(CLI)` dahinter ergänzt werden. Aufgrund der Wortlänge wird die Aufnahme eines weichen Bindestrichs empfohlen: `Kommandozeilen­schnittstelle` -| CLI flag | die Kommandozeilen­option | Aufgrund der Wortlänge wird die Aufnahme eines weichen Bindestrichs empfohlen: `Kommandozeilen­option` -| configuration option | die Konfigurations­option | Wenn klar ist, dass es um die Konfiguration geht, kann auch nur "Option" verwendet werden. Bei der Langversion wird die Aufnahme eines weichen Bindestrichs empfohlen: `Konfigurations­option` -| deployment provider | der Hosting-Anbieter | -| to deploy | veröffentlichen | Wir vermeiden "ausliefern" aufgrund der Zweideutigkeit. -| directory | das Verzeichnis | -| domain | die Domäne | -| frontmatter | das Frontmatter | Wird nicht übersetzt (gängiger Domänenbegriff). -| frontmatter prop(erty) | die Frontmatter-Eigenschaft | -| frontmatter value | der Frontmatter-Wert | -| to hydrate (an element) | hydratisieren | Falsch hingegen wäre "hydrieren". -| island(s) | die Astro-Insel(n) | Der Präfix "Astro-" wird davorgesetzt, sofern wir über Astros Umsetzung der Inselarchitektur sprechen. -| media query | Media Query | Wird nicht übersetzt (gängiger Domänenbegriff). -| page | die Seite | Eine einzelne (HTML-)Seite. Wir vermeiden die längere Form "Webseite", um Verwechslungen mit "Website" zu vermeiden. -| partial hydration | die partielle Hydratation | Falsch hingegen wäre "Hydrierung". -| project root (directory) | das Projektstamm­verzeichnis | Aufgrund der Wortlänge wird die Aufnahme eines weichen Bindestrichs empfohlen: `Projektstamm­verzeichnis` -| repository | das Repository | Wird nicht übersetzt (gängiger Domänenbegriff). -| request | die Anfrage | -| script | das Skript | -| selective hydration | die selektive Hydratation | Falsch hingegen wäre "Hydrierung". -| site, website | die Website | Eine vollständige Webpräsenz unter einer gemeinsamen Domain, bestehend aus beliebig vielen (HTML-)Seiten. -| style, styles | Style, Styles | Wird nicht übersetzt (gängiger Domänenbegriff). -| scoped style | Scoped Style | Beim ersten Vorkommen sollte die deutsche Erklärung `(auf Komponenten begrenzte lokale CSS-Stile)` dahinter ergänzt werden. -| template | die Vorlage | -| ui | die Benutzeroberfläche | -| web | das Internet | - -  - - -## Stilrichtlinien (Style Guide) - -- Wir halten uns hinsichtlich Grammatik und Rechtschreibung an die Empfehlungen des Dudens und verwenden die neue deutsche Rechtschreibung. -- Wir verwenden eine informelle Ansprache mit kleingeschriebenem "du" (statt "Du" oder "Sie"). -- Wir bleiben möglichst nah am englischen Originaltext. - - Falls die Übersetzung sich aber nicht flüssig liest, weil z.B. im Deutschen übliche Überleitungen fehlen oder andere Formulierungen geläufiger sind, kann freier übersetzt werden, so lange die Bedeutung korrekt bleibt. -- Wir übersetzen alle Kommentare in Code-Beispielen. -- Wir übersetzen gerne auch Komponenten-, Klassen- und Variablennamen in Code-Beispielen. So signalisieren wir, dass diese Namen frei definierbar sind und keine "magischen Keywords" von Astro darstellen. -- Wir haben uns gegen das Gendern in unserer Übersetzung entschieden, weil es die Lesbarkeit der Texte verschlechtert und noch keine Duden-Vorgaben dafür existieren. Wir vermeiden lieber geschlechtsspezifische Formulierungen in unseren Übersetzungen und formulieren die Texte so, dass niemand sich ausgeschlossen fühlen muss. -- Wir vermeiden wertende Adjektive wie "einfach", "simpel" usw., da es immer Personen geben wird, denen das beschriebene Thema eben nicht "einfach" oder "simpel" vorkommt. Wir möchten niemandem den Eindruck vermitteln, fachlich "nicht gut genug" zu sein. -- Wir übersetzen nicht zwanghaft Begriffe, die aus einem Ökosystem-spezifischen Kontext stammen. Eine Wort für Wort Übersetzung ist meistens nicht möglich, sodass eine ausführliche Erklärung folgen müsste, was wiederum die Lesbarkeit verschlechtert. Ein gutes Beispiel hierfür wären Begriffe, wie `Commit`, `Pull Request` und `merge`, die teils einen ganzen Prozess im Git-Ökosystem beschreiben. - -  - - -## Häufige Fehler - -> **🚨 Wichtig:** Bitte sieh dir die nachfolgenden Fehler genau an und vermeide sie in deinen Übersetzungen. Insbesondere der erste Fehler (fehlende Bindestriche) tritt besonders häufig auf und verursacht so vermeidbare Arbeit bei Reviews. - -- Fehlende Bindestriche bei zusammengesetzten Wörtern - - Astro Projekt --> Astro-Projekt - - `` Feld --> ``-Feld - - Readme Datei --> Readme-Datei -- Falsche Übersetzung von Infoboxen ("Asides") - - Unsere Dokumentation enthält an manchen Stellen farblich hervorgehobene Boxen mit Hinweisen, Tipps und Warnungen. Diese sind im Markdown-Code mit drei Doppelpunkten abgegrenzt und beginnen mit dem Typnamen der Box (`:::note`, `:::tip`, `:::caution`). Dieser Typname ist **nicht** zu übersetzen, da ansonsten die Infobox nicht mehr funktioniert. - - Falls dem Typnamen eine vom Standard abweichende Überschrift in eckigen Klammern folgt (`:::caution[Here be dragons!]`), darf nur der Teil in eckigen Klammern übersetzt werden. -- Nichtverwendung der vom Duden empfohlenen Schreibweisen - - mit Hilfe --> mithilfe -- Falsch geschriebene Markennamen (wir halten uns an die offizielle Schreibweise auf der Hersteller-Website) - - Github --> GitHub - - Javascript --> JavaScript - - Typescript --> TypeScript - - VSCode --> VS Code - -  - - -## Hast du Ergänzungen oder Anregungen zu dieser Anleitung? - -Das ist super! Die Inhalte dieses Dokuments sind nämlich nicht als in Stein gemeißelte "Regeln von oben" zu verstehen, sondern bilden lediglich den aktuellen Konsens unseres deutschen Übersetzungsteams ab. - -Solltest du Verbesserungsideen oder Änderungswünsche zu diesem Dokument haben, besuch uns gerne auf Discord und sprich mit uns darüber. Wir sind stets offen für neue Anregungen! - -  diff --git a/src/i18n/de/docsearch.ts b/src/i18n/de/docsearch.ts deleted file mode 100644 index 1c8648d39..000000000 --- a/src/i18n/de/docsearch.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Suchen', - placeholder: 'Dokumentation durchsuchen', - shortcutLabel: 'Drücke / zum Suchen', - resultsFooterLede: - 'Auf der Suche nach einer Astro-Integration oder einer Vorlage? Brauchst du mehr Hilfe?', - resultsFooterIntegrations: 'Verzeichnis der Astro-Intergrationen', - resultsFooterThemes: 'Galerie mit Astro-Vorlagen', - resultsFooterDiscord: 'Tritt unserem Discord bei', - modal: { - searchBox: { - resetButtonTitle: 'Suchanfrage löschen', - resetButtonAriaLabel: 'Suchanfrage löschen', - cancelButtonText: 'Abbrechen', - cancelButtonAriaLabel: 'Abbrechen', - }, - startScreen: { - recentSearchesTitle: 'Neuliche Suchanfragen', - noRecentSearchesText: 'Keine neulichen Suchanfragen', - saveRecentSearchButtonTitle: 'Diese Suchanfrage speichern', - removeRecentSearchButtonTitle: 'Diese Suchanfrage aus dem Verlauf entfernen', - favoriteSearchesTitle: 'Favoriten', - removeFavoriteSearchButtonTitle: 'Diese Suchanfrage aus den Favoriten entfernen', - }, - errorScreen: { - titleText: 'Fehler beim Abrufen der Ergebnisse', - helpText: 'Du solltest den Status deiner Internetverbindung überprüfen', - }, - footer: { - selectText: 'zum Auswählen', - selectKeyAriaLabel: 'Eingabetaste', - navigateText: 'zum Navigieren', - navigateUpKeyAriaLabel: 'Pfeiltaste nach oben', - navigateDownKeyAriaLabel: 'Pfeiltaste nach unten', - closeText: 'zum Schließen', - closeKeyAriaLabel: 'Escapetaste', - searchByText: 'Suche von', - }, - noResultsScreen: { - noResultsText: 'Keine Ergebnisse gefunden für', - suggestedQueryText: 'Versuche es mit der Suche nach', - reportMissingResultsText: 'Glaubst du, einen Fehler gefunden zu haben?', - reportMissingResultsLinkText: 'Lass es uns wissen', - }, - }, -}); diff --git a/src/i18n/de/nav.ts b/src/i18n/de/nav.ts deleted file mode 100644 index 2815a7fd7..000000000 --- a/src/i18n/de/nav.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - // Start Here - startHere: 'Beginne hier', - 'getting-started': 'Erste Schritte', - install: 'Installation', - 'editor-setup': 'Editor-Einrichtung', - 'guides/upgrade-to/v3': 'Upgrade auf Astro v3', - - // Core Concepts - coreConcepts: 'Kernkonzepte', - 'concepts/islands': 'Astro-Inseln', - 'concepts/why-astro': 'Warum Astro', - - // Tutorial - tutorials: 'Tutorials', - 'blog-tutorial': 'Baue einen Blog', - - // Basics - basics: 'Grundlagen', - 'core-concepts/project-structure': 'Projektstruktur', - 'core-concepts/astro-components': 'Komponenten', - 'core-concepts/astro-pages': 'Seiten', - 'core-concepts/layouts': 'Layouts', - - // Recipes - examples: 'Anleitungen', - 'guides/migrate-to-astro': 'Zu Astro migrieren', - 'guides/cms': 'Ein CMS verbinden', - 'guides/backend': 'Backend-Dienste hinzufügen', - 'guides/integrations-guide': 'Integrationen hinzufügen', - 'guides/deploy': 'Website veröffentlichen', - 'guides/recipes': 'Mehr Anleitungen', - - // Features - features: 'Themenbereiche', - 'core-concepts/astro-syntax': 'Astro-Syntax', - 'core-concepts/framework-components': 'UI-Frameworks', - 'core-concepts/routing': 'Routing', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/content-collections': 'Content-Sammlungen', - 'guides/client-side-scripts': 'Skripte & Ereignisbehandlung', - 'guides/styling': 'CSS & Styling', - 'guides/images': 'Bilder', - 'guides/fonts': 'Schriftarten', - 'guides/imports': 'Importe', - 'guides/server-side-rendering': 'Serverseitiges Rendern (SSR)', - 'core-concepts/endpoints': 'Endpunkte', - 'guides/data-fetching': 'Abrufen von Daten', - 'guides/middleware': 'Middleware', - 'guides/testing': 'Testen', - 'guides/view-transitions': 'View Transitions', - 'guides/troubleshooting': 'Fehlerbehebung', - // 'guides/rss': 'RSS', - - configuration: 'Konfiguration', - 'guides/configuring-astro': 'Die Astro-Konfigurationsdatei', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'Import-Aliasnamen', - 'guides/environment-variables': 'Umgebungsvariablen', - - // Reference - reference: 'Referenz', - 'reference/configuration-reference': 'Konfiguration', - 'reference/api-reference': 'Laufzeit-API', - 'reference/integrations-reference': 'Integrations-API', - 'reference/adapter-reference': 'Adapter-API', - 'reference/image-service-reference': 'Bilderdienst-API', - 'reference/directives-reference': 'Vorlagen-Direktiven', - 'reference/cli-reference': 'Befehlszeilen­schnittstelle (CLI)', - 'reference/error-reference': 'Fehler-Referenz', - 'guides/publish-to-npm': 'NPM-Paketformat', -}); diff --git a/src/i18n/de/ui.ts b/src/i18n/de/ui.ts deleted file mode 100644 index 576c04b5b..000000000 --- a/src/i18n/de/ui.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'Zum Inhalt springen', - 'a11y.sectionLink': 'Abschnitt betitelt', - 'navbar.a11yTitle': 'Haupt', - // Site settings - 'site.title': 'Astro-Dokumentation', - 'site.description': 'Erstelle schnellere Websites mit weniger ausgeliefertem JavaScript.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'Astro-Logo im Weltraum mit Sternen und einem violetten, Saturn-ähnlichen Planeten rechts im Vordergrund', - // Left Sidebar - 'leftSidebar.a11yTitle': 'Primär', - 'leftSidebar.learnTab': 'Lernen', - 'leftSidebar.referenceTab': 'Referenz', - 'leftSidebar.viewInEnglish': 'Auf Englisch ansehen', - 'leftSidebar.sponsoredBy': 'Gesponsert von', - // Right Sidebar - 'rightSidebar.a11yTitle': 'Sekundär', - 'rightSidebar.onThisPage': 'Auf dieser Seite', - 'rightSidebar.overview': 'Überblick', - 'rightSidebar.community': 'Community', - 'rightSidebar.joinDiscord': 'Tritt unserem Discord bei', - 'rightSidebar.readBlog': 'Lies unsere Blog-Beiträge', - 'rightSidebar.openCollective': 'Unsere Open Collective-Seite', - 'rightSidebar.contribute': 'Wirke mit', - 'rightSidebar.contributorGuides': 'Leitfäden für Mitwirkende', - 'rightSidebar.editPage': 'Bearbeite diese Seite', - 'rightSidebar.translatePage': 'Übersetze diese Seite', - 'rightSidebar.github': 'Astro Docs auf GitHub', - // Footer - 'footer.privacyPolicy': 'Datenschutzerklärung', - // `` acessibility labels - 'themeToggle.useLight': 'Nutze das helle Theme', - 'themeToggle.useDark': 'Nutze das dunkle Theme', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Nächste Seite', - 'articleNav.prevPage': 'Zurück', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Hinzugefügt in:', - 'since.new': 'Neu', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': 'Automatische Installation', - 'install.manualTab': 'Manuelle Installation', - // `` vocabulary - 'deploy.sectionTitle': 'Veröffentlichungs-Anleitungen', - 'deploy.altSectionTitle': 'Weitere Veröffentlichungs-Anleitungen', - 'deploy.filterLabel': 'Nach Art filtern', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Statisch', - // CMS Guides vocabulary - 'cms.navTitle': 'Weitere CMS-Anleitungen', - // Migration Guides vocabulary - 'migration.navTitle': 'Weitere Migrations-Anleitungen', - // Recipes vocabulary - 'recipes.navTitle': 'Weitere Anleitungen', - // `` vocabulary - 'recipesLink.singular': 'Verwandte Anleitung:', - 'recipesLink.plural': 'Verwandte Anleitungen', - // `` fallback text - 'contributors.seeAll': 'Alle Mitwirkenden ansehen', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'Da diese Seite noch nicht auf Deutsch verfügbar ist, siehst du sie auf Englisch. Möchtest du uns helfen?', - 'fallbackContent.linkText': 'Übersetze diese Seite', - // 404 Page - '404.title': 'Nicht gefunden', - '404.content': 'Diese Seite befindet sich nicht in unserem Sonnensystem.', - '404.linkText': 'Bring mich nach Hause.', - // Aside component default labels - 'aside.note': 'Hinweis', - 'aside.tip': 'Tipp', - 'aside.caution': 'Achtung', - 'aside.danger': 'Gefahr', - // `` vocabulary - 'languageSelect.label': 'Sprache auswählen', - // Integrations vocabulary - 'integrations.changelog': 'Changelog', - 'integrations.footerTitle': 'Weitere Integrationen', - 'integrations.renderers': 'UI-Frameworks', - 'integrations.adapters': 'SSR-Adapter', - 'integrations.others': 'Sonstiges', - // Checklist component - 'checklist.or': 'oder', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Korrekt!', - 'multipleChoice.defaultIncorrect': "Versuch's nochmal!", - 'multipleChoice.submitLabel': 'Absenden', - // Tutorial Progress - 'progress.todo': 'To-do', - 'progress.done': 'Erledigt', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Tutorial Tracker', - 'tutorial.unit': 'Teil', - // Tutorial - 'tutorial.getReady': 'Mach dich bereit, …', - // Feedback Fish widget - 'feedback.button': 'Gib uns Feedback', - 'feedback.a11yLabel': 'Feedback-Formular', - 'feedback.formTitle': 'Worum geht es?', - 'feedback.categoryGroupLabel': 'Feedback-Typ wählen', - 'feedback.issue': 'Problem', - 'feedback.createIssue': 'Issue auf GitHub erstellen', - 'feedback.idea': 'Idee', - 'feedback.other': 'Sonstiges', - 'feedback.messageA11yLabel': 'Nachricht', - 'feedback.placeholder': 'Was sollen wir wissen?', - 'feedback.submit': 'Feedback abschicken', - 'feedback.close': 'Feedback-Formular schließen', - 'feedback.success': 'Danke! Wir haben dein Feedback bekommen.', - // `` component - 'fileTree.directoryLabel': 'Verzeichnis', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Terminal-Fenster', - 'expressiveCode.copyButtonTooltip': 'In Zwischenablage kopieren', - 'expressiveCode.copyButtonCopied': 'Kopiert!', - // Backend Guides vocabulary - 'backend.navTitle': 'Weitere Backend-Anleitungen', - // Stubs vocabulary - 'stub.title': 'Erweitere diese Anleitung!', - 'stub.subtitle': 'Diese Anleitung ist ein Entwurf.', - 'stub.description.migration': - 'Möchtest du zu dieser Anleitung beitragen? Hast du einen Blogbeitrag, ein Video oder eine andere Informationsquelle über die Migration von dieser Technologie zu Astro, die du teilen möchtest?', - 'stub.description.cms': 'Weißt du mehr darüber, wie man dieses CMS mit Astro verwenden kann?', - 'stub.description.backend': - 'Weißt du mehr darüber, wie man diesen Backend-Dienst mit Astro verwenden kann?', -}); diff --git a/src/i18n/en/docsearch.ts b/src/i18n/en/docsearch.ts deleted file mode 100644 index 87fc299da..000000000 --- a/src/i18n/en/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Search', - placeholder: 'Search docs', - shortcutLabel: 'Press / to search', - resultsFooterLede: 'Looking for an Astro integration or theme? Need more help?', - resultsFooterIntegrations: 'Astro integrations directory', - resultsFooterThemes: 'Astro themes showcase', - resultsFooterDiscord: 'Join us on Discord', - modal: {}, -}); diff --git a/src/i18n/en/nav.ts b/src/i18n/en/nav.ts deleted file mode 100644 index 3a534bf6a..000000000 --- a/src/i18n/en/nav.ts +++ /dev/null @@ -1,169 +0,0 @@ -/** - * This configures the navigation sidebar. - * All other languages follow this ordering/structure and will fall back to - * English for any entries they haven’t translated. - * - * - All entries MUST include `text` and `key` - * - Heading entries MUST include `header: true` and `type` - * - Link entries MUST include `slug` (which excludes the language code) - */ -export default [ - { text: 'Start Here', header: true, type: 'learn', key: 'startHere' }, - { text: 'Getting Started', slug: 'getting-started', key: 'getting-started' }, - { text: 'Installation', slug: 'install/auto', key: 'install' }, - { text: 'Editor Setup', slug: 'editor-setup', key: 'editor-setup' }, - { text: 'Upgrade to v3', slug: 'guides/upgrade-to/v3', key: 'guides/upgrade-to/v3' }, - - { text: 'Core Concepts', header: true, type: 'learn', key: 'coreConcepts' }, - { text: 'Why Astro', slug: 'concepts/why-astro', key: 'concepts/why-astro' }, - { text: 'Astro Islands', slug: 'concepts/islands', key: 'concepts/islands' }, - - { text: 'Tutorials', header: true, type: 'learn', key: 'tutorials' }, - { text: 'Build a Blog', slug: 'tutorial/0-introduction', key: 'blog-tutorial' }, - { - text: 'Extend with Content Collections', - slug: 'tutorials/add-content-collections', - key: 'add-collections-tutorial', - }, - { - text: 'Extend with View Transitions', - slug: 'tutorials/add-view-transitions', - key: 'add-transitions-tutorial', - }, - // { text: 'Thinking with Islands', slug: 'tutorial/0-introduction', key: 'island-tutorial' }, - - { text: 'Basics', header: true, type: 'learn', key: 'basics' }, - - { - text: 'Project Structure', - slug: 'core-concepts/project-structure', - key: 'core-concepts/project-structure', - }, - { - text: 'Components', - slug: 'core-concepts/astro-components', - key: 'core-concepts/astro-components', - }, - { text: 'Pages', slug: 'core-concepts/astro-pages', key: 'core-concepts/astro-pages' }, - { text: 'Layouts', slug: 'core-concepts/layouts', key: 'core-concepts/layouts' }, - { - text: 'Astro Template Syntax', - slug: 'core-concepts/astro-syntax', - key: 'core-concepts/astro-syntax', - }, - { - text: 'Rendering Modes', - slug: 'core-concepts/rendering-modes', - key: 'core-concepts/rendering-modes', - }, - - { text: 'Built-ins', header: true, type: 'learn', key: 'builtins' }, - { - text: 'Content Collections', - slug: 'guides/content-collections', - key: 'guides/content-collections', - }, - { - text: 'View Transitions', - slug: 'guides/view-transitions', - key: 'guides/view-transitions', - }, - { - text: 'Prefetch', - slug: 'guides/prefetch', - key: 'guides/prefetch', - }, - - { text: 'Add-ons', header: true, type: 'learn', key: 'addons' }, - { text: 'Add integrations', slug: 'guides/integrations-guide', key: 'guides/integrations-guide' }, - { - text: 'UI Frameworks', - slug: 'core-concepts/framework-components', - key: 'core-concepts/framework-components', - }, - { - text: 'SSR Adapters', - slug: 'guides/server-side-rendering', - key: 'guides/server-side-rendering', - }, - - { text: 'Recipes', header: true, type: 'learn', key: 'examples' }, - { text: 'Migrate to Astro', slug: 'guides/migrate-to-astro', key: 'guides/migrate-to-astro' }, - { text: 'Connect a CMS', slug: 'guides/cms', key: 'guides/cms' }, - { text: 'Add backend services', slug: 'guides/backend', key: 'guides/backend' }, - { text: 'Deploy your site', slug: 'guides/deploy', key: 'guides/deploy' }, - { text: 'More recipes', slug: 'recipes', key: 'guides/recipes' }, - - { text: 'Guides', header: true, type: 'learn', key: 'features' }, - { text: 'Routing', slug: 'core-concepts/routing', key: 'core-concepts/routing' }, - { text: 'Markdown', slug: 'guides/markdown-content', key: 'guides/markdown-content' }, - { - text: 'Scripts & Event Handling', - slug: 'guides/client-side-scripts', - key: 'guides/client-side-scripts', - }, - { text: 'CSS & Styling', slug: 'guides/styling', key: 'guides/styling' }, - { text: 'Images', slug: 'guides/images', key: 'guides/images' }, - { text: 'Fonts', slug: 'guides/fonts', key: 'guides/fonts' }, - { text: 'Imports', slug: 'guides/imports', key: 'guides/imports' }, - { text: 'Endpoints', slug: 'core-concepts/endpoints', key: 'core-concepts/endpoints' }, - { text: 'Data Fetching', slug: 'guides/data-fetching', key: 'guides/data-fetching' }, - { - text: 'Internationalization', - slug: 'guides/internationalization', - key: 'guides/internationalization', - }, - { text: 'Middleware', slug: 'guides/middleware', key: 'guides/middleware' }, - { text: 'Testing', slug: 'guides/testing', key: 'guides/testing' }, - { text: 'Troubleshooting', slug: 'guides/troubleshooting', key: 'guides/troubleshooting' }, - - { text: 'Configuration', header: true, type: 'learn', key: 'configuration' }, - { - text: 'The Astro Config File', - slug: 'guides/configuring-astro', - key: 'guides/configuring-astro', - }, - { text: 'TypeScript', slug: 'guides/typescript', key: 'guides/typescript' }, - { text: 'Import Aliases', slug: 'guides/aliases', key: 'guides/aliases' }, - { - text: 'Environment Variables', - slug: 'guides/environment-variables', - key: 'guides/environment-variables', - }, - - { text: 'Reference', header: true, type: 'api', key: 'reference' }, - { - text: 'Configuration', - slug: 'reference/configuration-reference', - key: 'reference/configuration-reference', - }, - { text: 'Runtime API', slug: 'reference/api-reference', key: 'reference/api-reference' }, - { - text: 'Integrations API', - slug: 'reference/integrations-reference', - key: 'reference/integrations-reference', - }, - { text: 'Adapter API', slug: 'reference/adapter-reference', key: 'reference/adapter-reference' }, - { - text: 'Image Service API', - slug: 'reference/image-service-reference', - key: 'reference/image-service-reference', - }, - { - text: 'Dev Overlay Plugin API', - slug: 'reference/dev-overlay-plugin-reference', - key: 'reference/dev-overlay-plugin-reference', - }, - { - text: 'Template Directives', - slug: 'reference/directives-reference', - key: 'reference/directives-reference', - }, - { text: 'The Astro CLI', slug: 'reference/cli-reference', key: 'reference/cli-reference' }, - { - text: 'Error Reference', - slug: 'reference/error-reference', - key: 'reference/error-reference', - }, - { text: 'NPM Package Format', slug: 'reference/publish-to-npm', key: 'guides/publish-to-npm' }, -] as const; diff --git a/src/i18n/en/ui.ts b/src/i18n/en/ui.ts deleted file mode 100644 index 0ea15eb7c..000000000 --- a/src/i18n/en/ui.ts +++ /dev/null @@ -1,138 +0,0 @@ -export default { - 'a11y.skipLink': 'Skip to Content', - 'a11y.sectionLink': 'Section titled', - 'navbar.a11yTitle': 'Top', - // Site settings - 'site.title': 'Astro Documentation', - 'site.description': 'Build faster websites with less client-side JavaScript.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'astro logo on a starry expanse of space, with a purple saturn-like planet floating in the right foreground', - // Left Sidebar - 'leftSidebar.a11yTitle': 'Primary', - 'leftSidebar.learnTab': 'Learn', - 'leftSidebar.referenceTab': 'Reference', - 'leftSidebar.viewInEnglish': 'View in English', - 'leftSidebar.sponsoredBy': 'Sponsored by', - // Right Sidebar - 'rightSidebar.a11yTitle': 'Secondary', - 'rightSidebar.onThisPage': 'On this page', - 'rightSidebar.overview': 'Overview', - 'rightSidebar.community': 'Community', - 'rightSidebar.joinDiscord': 'Join us on Discord', - 'rightSidebar.readBlog': 'Read our blog posts', - 'rightSidebar.openCollective': 'Our Open Collective', - 'rightSidebar.contribute': 'Contribute', - 'rightSidebar.contributorGuides': 'Contributor Guides', - 'rightSidebar.editPage': 'Edit this page', - 'rightSidebar.translatePage': 'Translate this page', - 'rightSidebar.github': 'Astro Docs on GitHub', - // Footer - 'footer.privacyPolicy': 'Privacy Policy', - // `` acessibility labels - 'themeToggle.useLight': 'Use light theme', - 'themeToggle.useDark': 'Use dark theme', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Next Page', - 'articleNav.prevPage': 'Back', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Added in:', - 'since.new': 'New', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': 'Automatic CLI', - 'install.manualTab': 'Manual Setup', - // `` vocabulary - 'deploy.sectionTitle': 'Deployment Guides', - 'deploy.altSectionTitle': 'More Deployment Guides', - 'deploy.filterLabel': 'Filter by deploy type', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Static', - // CMS Guides vocabulary - 'cms.navTitle': 'More CMS Guides', - // Analytics Guides vocabulary - 'analytics.navTitle': 'More Analytics Guides', - // Themes Guides vocabulary - 'themes.navTitle': 'More Official Themes', - // Migration Guides vocabulary - 'migration.navTitle': 'More Migration Guides', - // Recipes vocabulary - 'recipes.navTitle': 'More recipes', - // `` vocabulary - 'recipesLink.singular': 'Related recipe:', - 'recipesLink.plural': 'Related recipes', - // `` fallback text - 'contributors.seeAll': 'See all contributors', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'This page is not yet available in your language, so we’re showing you the English version. You can help by translating it!', - 'fallbackContent.linkText': 'Learn more about how you can contribute', - // 404 Page - '404.title': 'Not Found', - '404.content': 'This page isn’t in our solar system.', - '404.linkText': 'Take me home.', - // Aside component default labels - 'aside.note': 'Note', - 'aside.tip': 'Tip', - 'aside.caution': 'Caution', - 'aside.danger': 'Danger', - // `` vocabulary - 'languageSelect.label': 'Select language', - // Integrations vocabulary - 'integrations.changelog': 'Changelog', - 'integrations.footerTitle': 'More Integrations', - 'integrations.renderers': 'UI Frameworks', - 'integrations.themes': 'Themes', - 'integrations.adapters': 'SSR Adapters', - 'integrations.others': 'Other integrations', - 'integrations.navTitle': 'More integrations', - // Checklist component - 'checklist.or': 'or', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Correct!', - 'multipleChoice.defaultIncorrect': 'Try again!', - 'multipleChoice.submitLabel': 'Submit', - // Tutorial Progress - 'progress.todo': 'To-do', - 'progress.done': 'Complete', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Tutorial Tracker', - 'tutorial.unit': 'Unit', - // Tutorial - 'tutorial.getReady': 'Get ready to…', - // Feedback Fish widget - 'feedback.button': 'Give us feedback', - 'feedback.a11yLabel': 'Feedback form', - 'feedback.formTitle': 'What’s on your mind?', - 'feedback.categoryGroupLabel': 'Choose feedback category', - 'feedback.issue': 'Issue', - 'feedback.createIssue': 'Create GitHub Issue', - 'feedback.createIssue.description': 'Quickest way to alert our team of a problem.', - 'feedback.sendFeedback': 'Send us feedback', - 'feedback.sendFeedback.description': 'Send us a message directly.', - 'feedback.idea': 'Idea', - 'feedback.other': 'Other', - 'feedback.messageA11yLabel': 'Message', - 'feedback.placeholder': 'What do you want us to know?', - 'feedback.submit': 'Submit feedback', - 'feedback.close': 'Close feedback form', - 'feedback.success': 'Thanks! We received your feedback.', - // `` component - 'fileTree.directoryLabel': 'Directory', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Terminal window', - 'expressiveCode.copyButtonTooltip': 'Copy to clipboard', - 'expressiveCode.copyButtonCopied': 'Copied!', - // Backend Guides vocabulary - 'backend.navTitle': 'More backend service guides', - // Stubs vocabulary - 'stub.title': 'Expand this stub!', - 'stub.subtitle': 'This guide is a stub.', - 'stub.description.migration': - 'Want to contribute to this guide? Have a blog post, video, or another resource to share about migrating from this technology to Astro?', - 'stub.description.cms': 'Know more about how to use this CMS with Astro?', - 'stub.description.backend': 'Know more about how to use this backend service with Astro?', - // Starlight banner - 'starlight.title': 'Want to build your own Docs?', - 'starlight.description': 'Grab this template to get started.', -}; diff --git a/src/i18n/es/docsearch.ts b/src/i18n/es/docsearch.ts deleted file mode 100644 index bbce84c45..000000000 --- a/src/i18n/es/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Buscar', - placeholder: 'Buscar en la documentación', - shortcutLabel: 'Presiona / para buscar', - resultsFooterLede: '¿Buscas una integración o tema de Astro? ¿Necesitas más ayuda?', - resultsFooterIntegrations: 'Directorio de integraciones de Astro', - resultsFooterThemes: 'Galeria de temas de Astro', - resultsFooterDiscord: 'Únete a nosotros en Discord', - modal: {}, -}); diff --git a/src/i18n/es/nav.ts b/src/i18n/es/nav.ts deleted file mode 100644 index 7e2351168..000000000 --- a/src/i18n/es/nav.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: 'Empezar Aquí', - 'getting-started': 'Cómo Empezar', - install: 'Instalación', - 'editor-setup': 'Configuración del Editor', - 'guides/upgrade-to/v3': 'Actualizar a v3', - - coreConcepts: 'Conceptos Principales', - 'concepts/why-astro': 'Por qué Astro', - 'concepts/islands': 'Islas de Astro', - - tutorials: 'Tutoriales', - 'blog-tutorial': 'Crear un blog', - 'add-collections-tutorial': 'Ampliar con Colecciones de Contenido', - 'add-transitions-tutorial': 'Ampliar con View Transitions', - - basics: 'Conceptos Básicos', - 'core-concepts/project-structure': 'Estructura del proyecto', - 'core-concepts/astro-components': 'Componentes', - 'core-concepts/astro-pages': 'Páginas', - 'core-concepts/layouts': 'Plantillas', - 'core-concepts/astro-syntax': 'Sintaxis de Astro', - 'core-concepts/rendering-modes': 'Modos de Renderizado', - - builtins: 'Funciones Integradas', - 'guides/content-collections': 'Colecciones de Contenido', - 'guides/view-transitions': 'View Transitions', - - addons: 'Complementos', - 'guides/integrations-guide': 'Agregar integraciones', - 'core-concepts/framework-components': 'Frameworks UI', - 'guides/server-side-rendering': 'Renderizado en el lado del servidor (SSR)', - - examples: 'Recetas', - 'guides/migrate-to-astro': 'Migrar a Astro', - 'guides/cms': 'Conectar un CMS', - 'guides/backend': 'Agregar servicios backend', - 'guides/deploy': 'Desplegar tu sitio', - 'guides/recipes': 'Más recetas', - - features: 'Guías', - 'core-concepts/routing': 'Enrutamiento', - 'guides/markdown-content': 'Markdown y MDX', - 'guides/client-side-scripts': 'Scripts y Manejo de Eventos', - 'guides/styling': 'Estilos y CSS', - 'guides/images': 'Imágenes', - 'guides/fonts': 'Fuentes', - 'guides/imports': 'Importaciones', - 'core-concepts/endpoints': 'Endpoints', - 'guides/data-fetching': 'Fetching de Datos', - 'guides/middleware': 'Middleware', - 'guides/testing': 'Testing', - 'guides/prefetch': 'Precargar', - 'guides/internationalization': 'Internacionalización', - 'guides/troubleshooting': 'Solución de Problemas', - - configuration: 'Configuración', - 'guides/configuring-astro': 'El archivo de configuración de Astro', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'Alias de importación', - 'guides/environment-variables': 'Variables de entorno', - - reference: 'Referencia', - 'reference/configuration-reference': 'Configuración', - 'reference/api-reference': 'API de Tiempo de Ejecución', - 'reference/integrations-reference': 'API de Integraciones', - 'reference/adapter-reference': 'API de Adaptador', - 'reference/image-service-reference': 'API de Servicio de Imágenes', - 'reference/dev-overlay-plugin-reference': 'API de Plugin de Superposición para Desarrolladores', - 'reference/directives-reference': 'Directivas de Plantilla', - 'reference/cli-reference': 'La CLI de Astro', - 'reference/error-reference': 'Referencia de Errores', - 'guides/publish-to-npm': 'Formato de Paquete NPM', -}); diff --git a/src/i18n/es/ui.ts b/src/i18n/es/ui.ts deleted file mode 100644 index d75916c98..000000000 --- a/src/i18n/es/ui.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'Ir al contenido', - 'a11y.sectionLink': 'Sección titulada', - 'navbar.a11yTitle': 'Inicio', - // Configuración del sitio - 'site.title': 'Documentación de Astro', - 'site.description': - 'Construye sitios web más rápidos con menos JavaScript en el lado del cliente.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'Logo de Astro en un espacio estrellado, con un planeta púrpura similar a Saturno flotando en el primer plano derecho', - // Barra lateral izquierda - 'leftSidebar.a11yTitle': 'Primario', - 'leftSidebar.learnTab': 'Aprender', - 'leftSidebar.referenceTab': 'Referencia', - 'leftSidebar.viewInEnglish': 'Ver en inglés', - 'leftSidebar.sponsoredBy': 'Patrocinado por', - // Barra lateral derecha - 'rightSidebar.a11yTitle': 'Secundario', - 'rightSidebar.onThisPage': 'En esta página', - 'rightSidebar.overview': 'Sinopsis', - 'rightSidebar.community': 'Comunidad', - 'rightSidebar.joinDiscord': 'Únete a nuestro Discord', - 'rightSidebar.readBlog': 'Lee nuestras publicaciones en el blog', - 'rightSidebar.openCollective': 'Nuestro Open Collective', - 'rightSidebar.contribute': 'Contribuir', - 'rightSidebar.contributorGuides': 'Guías para colaboradores', - 'rightSidebar.editPage': 'Editar esta página', - 'rightSidebar.translatePage': 'Traducir esta página', - 'rightSidebar.github': 'Documentación de Astro en GitHub', - // Pie de página - 'footer.privacyPolicy': 'Política de privacidad', - // Etiquetas de accesibilidad para - 'themeToggle.useLight': 'Usar tema claro', - 'themeToggle.useDark': 'Usar tema oscuro', - // Se utiliza en los enlaces de página anterior/siguiente en la parte inferior de las páginas - 'articleNav.nextPage': 'Siguiente página', - 'articleNav.prevPage': 'Atrás', - // Se utiliza en : Agregado en: v0.24.0 [NUEVO] - 'since.addedIn': 'Agregado en:', - 'since.new': 'Nuevo', - 'since.beta': 'Beta', - // Guía de instalación - 'install.autoTab': 'CLI automática', - 'install.manualTab': 'Configuración manual', - // Vocabulario de - 'deploy.sectionTitle': 'Guías de implementación', - 'deploy.altSectionTitle': 'Más guías de implementación', - 'deploy.filterLabel': 'Filtrar por tipo de implementación', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Estático', - // Vocabulario de guías de CMS - 'cms.navTitle': 'Más guías de CMS', - // Vocabulario de guías de migración - 'migration.navTitle': 'Más guías de migración', - // Vocabulario de recetas - 'recipes.navTitle': 'Más recetas', - // Vocabulario de - 'recipesLink.singular': 'Receta relacionada:', - 'recipesLink.plural': 'Recetas relacionadas', - // Texto de respaldo para - 'contributors.seeAll': 'Ver todos los colaboradores', - // Aviso de contenido de respaldo que se muestra cuando una página aún no está traducida - 'fallbackContent.notice': - 'Esta página aún no está disponible en tu idioma, así que te mostramos la versión en inglés. ¡Puedes ayudar traduciéndola!', - 'fallbackContent.linkText': 'Obtén más información sobre cómo contribuir', - // Página 404 - '404.title': 'No encontrado', - '404.content': 'Esta página no está en nuestro sistema solar.', - '404.linkText': 'Volver a la página principal.', - // Etiquetas predeterminadas del componente Aside - 'aside.note': 'Nota', - 'aside.tip': 'Consejo', - 'aside.caution': 'Precaución', - 'aside.danger': 'Peligro', - // Vocabulario de - 'languageSelect.label': 'Seleccionar idioma', - // Vocabulario de integraciones - 'integrations.changelog': 'Registro de cambios', - 'integrations.footerTitle': 'Más integraciones', - 'integrations.renderers': 'Frameworks UI', - 'integrations.adapters': 'Adaptadores SSR', - 'integrations.others': 'Otros', - // Componente Checklist - 'checklist.or': 'o', - // Componente Multiple Choice - 'multipleChoice.defaultCorrect': '¡Correcto!', - 'multipleChoice.defaultIncorrect': '¡Inténtalo de nuevo!', - 'multipleChoice.submitLabel': 'Enviar', - // Progreso del tutorial - 'progress.todo': 'Por hacer', - 'progress.done': 'Completado', - // Navegación del tutorial - 'tutorial.trackerLabel': 'Seguimiento del tutorial', - 'tutorial.unit': 'Unidad', - // Tutorial - 'tutorial.getReady': 'Prepárate para...', - // Widget Feedback Fish - 'feedback.button': 'Danos tu opinión', - 'feedback.a11yLabel': 'Formulario de opinión', - 'feedback.formTitle': '¿Qué tienes en mente?', - 'feedback.categoryGroupLabel': 'Elige una categoría de opinión', - 'feedback.issue': 'Problema', - 'feedback.createIssue': 'Crear un problema en GitHub', - 'feedback.idea': 'Idea', - 'feedback.other': 'Otro', - 'feedback.messageA11yLabel': 'Mensaje', - 'feedback.placeholder': '¿Qué nos quieres decir?', - 'feedback.submit': 'Enviar opinión', - 'feedback.close': 'Cerrar formulario de opinión', - 'feedback.success': '¡Gracias! Hemos recibido tu opinión.', - // Componente - 'fileTree.directoryLabel': 'Directorio', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Ventana de terminal', - 'expressiveCode.copyButtonTooltip': 'Copiar al portapapeles', - 'expressiveCode.copyButtonCopied': '¡Copiado!', - // Vocabulario de guías de backend - 'backend.navTitle': 'Más guías de servicios backend', - // Vocabulario de borradores - 'stub.title': '¡Amplía este borrador!', - 'stub.subtitle': 'Esta guía es un borrador.', - 'stub.description.migration': - '¿Quieres contribuir a esta guía? ¿Tienes alguna publicación en un blog, un video u otro recurso para compartir sobre la migración desde esta tecnología a Astro?', - 'stub.description.cms': '¿Quieres saber más sobre cómo usar este CMS con Astro?', - 'stub.description.backend': '¿Quieres saber más sobre cómo usar este servicio backend con Astro?', -}); diff --git a/src/i18n/fr/README.md b/src/i18n/fr/README.md deleted file mode 100644 index 2e3b3e04d..000000000 --- a/src/i18n/fr/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# 📖 Glossaire - -Le glossaire est là pour définir les mots, traductions et orientations concernant la traduction française de la documentation d'Astro. - -Certains mots jugés comme "inhérents" à Astro n'auront pas de traduction, car étant une part conséquente de son environnement. - -## 🔄️ Mots ne nécessitant pas de traductions - -> 💡 Ces mots sont considérés comme des noms propres dû à leurs origines anglaises, prenant toujours une majuscule : - -| Mot concerné | Définition | Utilisation | -|-------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Template | Mise en page / construction d'un composant Astro | Dans le contexte de “Templating” ou “Template” d'un composant | -| Composant Layout | Composant inhérent à la logique d'Astro, servant de modèle pour une page Astro, simplifiant sa syntaxe | Utilisé quand on parle d'un Composant Layout d'Astro, cela peut s'avérer utile de le mettre entre “crochets” | -| Composant Page | Composant Astro situé dans `src/pages` contenant une syntaxe `` complète, sert de fondation pour le routage de base d'Astro | Utilisé dans le contexte d'un "Composant Page Astro" à ne pas confondre avec une “page HTML” qui ne prendra pas de majuscule, car venant du français | -| Slot | `` ou emplacement, ce mot est souvent utilisé dans le code pour spécifier où doit se placer un contenu dans le contexte d'héritage ou dans des Frameworks / environnements orientés composants | Peut être spécifié sous cette forme ou sous sa version HTML ``. Utilisé pour son utilisation par tous les Frameworks supportés par Astro en plus de lui-même | -| Framework | Mot couramment dans le code pour spécifier un logiciel ou un “Package” utilisant une syntaxe spécifique à son utilisation (ex: `React`, `Vue`, `Svelte`, etc...) | Utilisé dans le cadre des intégrations fournies par Astro intégrant de nombreux environnements différents. | -| Node Built-in | Intégrations construites nativement dans le gestionnaire de paquets Node (ex: `node:fs`, `node:path`, etc...) | Les intégrations natives à Astro n'ont pas à utiliser cela, utilisé seulement pour node, étant une syntaxe courante pour cet environnement | -| Frontmatter | Aussi utilisé sous le nom de “Script du Composant”, c'est le code JavaScript placé entre les tirets `---` dans tous les composants Astro | Peut être utilisé sous le nom de “Script du Composant” si spécifié, utilisé seulement dans le contexte d'Astro (et les pages markdown d'Astro) | -| Fragment | Concept lié au code, le plus souvent dans le web ou dans les interfaces, c'est un élément éphémère utilisé pour regrouper plusieurs éléments ensembles | Est souvent écrit sous sa forme HTML (` ` ou `<> `) mais peut être spécifié comme tel dans le texte | -| Package | Peut être traduit par “Module” ou “Librairie” par certains, en parlant d'un packet NPM, n'a pas besoin de traduction, car couramment utilisé dans le code | Utilisé en parlant d'un paquet NPM ou d'une installation à effectuer pour une intégration Astro | -| Build | Dans le contexte d'un langage utilisant une étape de compilation, on parle de compilation / transpilation | Ce mot est à utiliser lorsqu'on parle de l'étape de compilation via la commande `astro build` servant à produire un résultat compatible pour les navigateurs et optimisé par Astro | -| Frontend | | | -| Backend | | | -| Middleware | | | -| Markdown, Astro, JavaScript, TypeScript, React, Vue, Svelte, Lit, Solid | Tous les noms de packages / langages prennent une majuscule, car considérés comme des noms propres à ces environnements | Utilisé partout sur la doc de façon universelle, doit toujours porter une majuscule | - -> Et non je ne parlerai pas du mot “Cadriciel”. - -## 📚 Traductions courantes - -Certains mots dans la traduction ont un équivalent français utilisé uniformément dans les différentes traductions : - -| Anglais | Français | -|------------------------------|-------------------------------------------| -| Server-side-rendering | Rendu Coté Serveur | -| Client-side | Sur le navigateur / Coté client | -| Runtime | Exécution / Code Exécuté | -| CLI / Command line interface | ILC / Interface de ligne de commande | -| Routing | Routage | -| UI components | Composants d'interface / Composants UI | -| Code fences (`---`) | Barres de code / Triples tirets | -| Imports | Imports / Importer / Inclure | -| Exports | Exports / Exporter | -| Render / Rendering | Rendu / Affichage / Sortie | -| Re-render | Rafraîchir / Effectuer à nouveau un rendu | -| Component Script | Script du composant | -| Component Template | Template du composant | -| Bundle / Bundled | Regroupé / Groupé / Compacté | -| Processed | Optimisé / Transpilé | -| Process | Optimise / Processus / Exécute | -| Wrap | Englober / Entourer | -| Slot (verbe *to slot*) | Inclure / Injecter / Insérer | -| Fetch | Importer / Récupérer / Chercher | -| Endpoint | Point de terminaison | -| Island architecture | Architecture Isolée | -| Partial Hydration | Hydratation Partielle | -| Scope / Scoped | Limité / Délimité | -| Astro Islands | Îles Astro | -| Recipes | Méthodes | -| Upgrade | Mise à niveau | - -> ⚠️ Ce glossaire est encore en travaux, merci de contribuer à la traduction française en lui apportant des suggestions ! diff --git a/src/i18n/fr/docsearch.ts b/src/i18n/fr/docsearch.ts deleted file mode 100644 index a63a327f0..000000000 --- a/src/i18n/fr/docsearch.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Rechercher', - placeholder: 'Rechercher dans la documentation', - shortcutLabel: 'Appuyez sur / pour rechercher', - resultsFooterLede: "Vous cherchez un thème ou une intégration Astro ? Besoin d'aide ?", - resultsFooterIntegrations: 'Répertoire des intégrations Astro', - resultsFooterThemes: 'Présentation des thèmes Astro', - resultsFooterDiscord: 'Rejoignez-nous sur Discord', - modal: { - searchBox: { - resetButtonTitle: 'Effacer la recherche', - resetButtonAriaLabel: 'Effacer la recherche', - cancelButtonText: 'Annuler', - cancelButtonAriaLabel: 'Annuler', - }, - startScreen: { - recentSearchesTitle: 'Recherches récentes', - noRecentSearchesText: 'Aucune recherche récente', - saveRecentSearchButtonTitle: 'Sauvegarder cette recherche', - removeRecentSearchButtonTitle: "Enlever cette recherche de l'historique", - favoriteSearchesTitle: 'Favoris', - removeFavoriteSearchButtonTitle: 'Enlever cette recherche des favoris', - }, - errorScreen: { - titleText: 'Erreur lors de la récupération des résultats', - helpText: "Vous devriez vérifier l'état de votre connection internet.", - }, - footer: { - selectText: 'pour sélectionner', - selectKeyAriaLabel: 'Appuyez sur la touche', - navigateText: 'pour naviguer', - navigateUpKeyAriaLabel: 'Flèche du haut', - navigateDownKeyAriaLabel: 'Flèche du bas', - closeText: 'pour fermer', - closeKeyAriaLabel: "Touche d'échappement", - searchByText: 'Recherche via', - }, - noResultsScreen: { - noResultsText: 'Aucun résultat trouvé pour', - suggestedQueryText: 'Essayez de rechercher pour', - reportMissingResultsText: 'Vous pensez avoir trouvé une erreur ?', - reportMissingResultsLinkText: 'Faites-le nous savoir.', - }, - }, -}); diff --git a/src/i18n/fr/nav.ts b/src/i18n/fr/nav.ts deleted file mode 100644 index 0e945c566..000000000 --- a/src/i18n/fr/nav.ts +++ /dev/null @@ -1,173 +0,0 @@ -/** - * This configures the navigation sidebar. - * All other languages follow this ordering/structure and will fall back to - * English for any entries they haven’t translated. - * - * - All entries MUST include `text` and `key` - * - Heading entries MUST include `header: true` and `type` - * - Link entries MUST include `slug` (which excludes the language code) - */ -export default [ - { text: 'Commencer ici', header: true, type: 'learn', key: 'startHere' }, - { text: 'Bien démarrer', slug: 'getting-started', key: 'getting-started' }, - { text: 'Installation', slug: 'install/auto', key: 'install' }, - { text: "Configuration de l'éditeur de code", slug: 'editor-setup', key: 'editor-setup' }, - { text: 'Mise à jour vers la v3', slug: 'guides/upgrade-to/v3', key: 'guides/upgrade-to/v3' }, - - { text: 'Concepts Fondamentaux', header: true, type: 'learn', key: 'coreConcepts' }, - { text: 'Pourquoi Astro ?', slug: 'concepts/why-astro', key: 'concepts/why-astro' }, - { text: 'Les îles Astro', slug: 'concepts/islands', key: 'concepts/islands' }, - - { text: 'Tutoriels', header: true, type: 'learn', key: 'tutorials' }, - { text: 'Construire un Blog', slug: 'tutorial/0-introduction', key: 'blog-tutorial' }, - { - text: 'Extension avec les collections de contenu', - slug: 'tutorials/add-content-collections', - key: 'add-collections-tutorial', - }, - { - text: 'Extension avec les transitions de vue', - slug: 'tutorials/add-view-transitions', - key: 'add-transitions-tutorial', - }, - // { text: 'Penser avec les îles', slug: 'tutorial/0-introduction', key: 'island-tutorial' }, - - { text: 'Les Bases', header: true, type: 'learn', key: 'basics' }, - - { - text: 'Structure du Projet', - slug: 'core-concepts/project-structure', - key: 'core-concepts/project-structure', - }, - { - text: 'Composants', - slug: 'core-concepts/astro-components', - key: 'core-concepts/astro-components', - }, - { text: 'Pages', slug: 'core-concepts/astro-pages', key: 'core-concepts/astro-pages' }, - { text: 'Layouts', slug: 'core-concepts/layouts', key: 'core-concepts/layouts' }, - { - text: 'Syntaxe de Template Astro', - slug: 'core-concepts/astro-syntax', - key: 'core-concepts/astro-syntax', - }, - { - text: 'Les modes de rendu', - slug: 'core-concepts/rendering-modes', - key: 'core-concepts/rendering-modes', - }, - - { text: 'Éléments encastrés', header: true, type: 'learn', key: 'builtins' }, - { - text: 'Collections de Contenu', - slug: 'guides/content-collections', - key: 'guides/content-collections', - }, - { - text: 'Voir les Transitions', - slug: 'guides/view-transitions', - key: 'guides/view-transitions', - }, - { - text: 'Prefetch', - slug: 'guides/prefetch', - key: 'guides/prefetch', - }, - - { text: 'Add-ons', header: true, type: 'learn', key: 'addons' }, - { text: 'Intégrations', slug: 'guides/integrations-guide', key: 'guides/integrations-guide' }, - { - text: "Framework d'interface", - slug: 'core-concepts/framework-components', - key: 'core-concepts/framework-components', - }, - { - text: 'Rendu Côté Serveur (SSR)', - slug: 'guides/server-side-rendering', - key: 'guides/server-side-rendering', - }, - - { text: 'Méthodes', header: true, type: 'learn', key: 'examples' }, - { text: 'Migrer vers Astro', slug: 'guides/migrate-to-astro', key: 'guides/migrate-to-astro' }, - { text: 'Connecter un CMS', slug: 'guides/cms', key: 'guides/cms' }, - { text: 'Ajouter des services Backend', slug: 'guides/backend', key: 'guides/backend' }, - { text: 'Déployez votre site', slug: 'guides/deploy', key: 'guides/deploy' }, - { text: 'Plus de méthodes', slug: 'recipes', key: 'guides/recipes' }, - - { text: 'Guides', header: true, type: 'learn', key: 'features' }, - { text: 'Routage', slug: 'core-concepts/routing', key: 'core-concepts/routing' }, - { text: 'Markdown', slug: 'guides/markdown-content', key: 'guides/markdown-content' }, - { - text: "Scripts & gestion d'évènements", - slug: 'guides/client-side-scripts', - key: 'guides/client-side-scripts', - }, - { text: 'Styles & CSS', slug: 'guides/styling', key: 'guides/styling' }, - { text: 'Images', slug: 'guides/images', key: 'guides/images' }, - { text: "Polices d'écritures", slug: 'guides/fonts', key: 'guides/fonts' }, - { text: 'Imports', slug: 'guides/imports', key: 'guides/imports' }, - { - text: 'Points de terminaison', - slug: 'core-concepts/endpoints', - key: 'core-concepts/endpoints', - }, - { text: 'Récupération de Données', slug: 'guides/data-fetching', key: 'guides/data-fetching' }, - { - text: 'Internationalisation', - slug: 'guides/internationalization', - key: 'guides/internationalization', - }, - { text: 'Middleware', slug: 'guides/middleware', key: 'guides/middleware' }, - { text: 'Test', slug: 'guides/testing', key: 'guides/testing' }, - { text: 'Dépannage', slug: 'guides/troubleshooting', key: 'guides/troubleshooting' }, - - { text: 'Configuration', header: true, type: 'learn', key: 'configuration' }, - { - text: 'Le Fichier de Configuration Astro', - slug: 'guides/configuring-astro', - key: 'guides/configuring-astro', - }, - { text: 'TypeScript', slug: 'guides/typescript', key: 'guides/typescript' }, - { text: "Alias d'Importation", slug: 'guides/aliases', key: 'guides/aliases' }, - { - text: "Variables d'Environnement", - slug: 'guides/environment-variables', - key: 'guides/environment-variables', - }, - - { text: 'Référence', header: true, type: 'api', key: 'reference' }, - { - text: 'Configuration', - slug: 'reference/configuration-reference', - key: 'reference/configuration-reference', - }, - { text: "API d'Exécution", slug: 'reference/api-reference', key: 'reference/api-reference' }, - { - text: "API d'Intégration", - slug: 'reference/integrations-reference', - key: 'reference/integrations-reference', - }, - { text: 'Adapteur API', slug: 'reference/adapter-reference', key: 'reference/adapter-reference' }, - { - text: "API du Service d'Images", - slug: 'reference/image-service-reference', - key: 'reference/image-service-reference', - }, - { - text: 'API du plugin Overlay Dev', - slug: 'reference/dev-overlay-plugin-reference', - key: 'reference/dev-overlay-plugin-reference', - }, - { - text: 'Utilisation des Directives', - slug: 'reference/directives-reference', - key: 'reference/directives-reference', - }, - { text: "CLI d'Astro", slug: 'reference/cli-reference', key: 'reference/cli-reference' }, - { - text: 'Référence des erreurs', - slug: 'reference/error-reference', - key: 'reference/error-reference', - }, - { text: 'Format de Packet NPM', slug: 'reference/publish-to-npm', key: 'guides/publish-to-npm' }, -] as const; diff --git a/src/i18n/fr/ui.ts b/src/i18n/fr/ui.ts deleted file mode 100644 index 7c9c661b3..000000000 --- a/src/i18n/fr/ui.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'Aller au contenu principal', - 'a11y.sectionLink': 'Titre de la section', - 'navbar.a11yTitle': 'Navigation principale', - // Site settings - 'site.title': 'Documentation Astro', - 'site.description': - 'Compilez des sites plus rapidement avec moins de JavaScript pour vos utilisateurs.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - "Logo d'Astro dans l'espace, avec une planète violette dans le style de saturne flottant à droite de l'image.", - // Left Sidebar - 'leftSidebar.a11yTitle': 'Navigation du site', - 'leftSidebar.learnTab': 'Apprendre', - 'leftSidebar.referenceTab': 'Référence', - 'leftSidebar.viewInEnglish': 'Voir en anglais', - 'leftSidebar.sponsoredBy': 'Sponsorisé par', - // Right Sidebar - 'rightSidebar.a11yTitle': 'Table des matières', - 'rightSidebar.onThisPage': 'Sur cette page', - 'rightSidebar.overview': 'Vue générale', - 'rightSidebar.community': 'Communauté', - 'rightSidebar.joinDiscord': 'Rejoindre notre Discord', - 'rightSidebar.readBlog': 'Lire nos articles', - 'rightSidebar.openCollective': 'Notre lien Open Collective', - 'rightSidebar.contribute': 'Contribuer', - 'rightSidebar.contributorGuides': 'Guides des contributeurs', - 'rightSidebar.editPage': 'Modifier cette page', - 'rightSidebar.translatePage': 'Traduire cette page', - 'rightSidebar.github': "La doc d'Astro sur GitHub", - // Footer - 'footer.privacyPolicy': 'Politique de Confidentialité', - // `` acessibility labels - 'themeToggle.useLight': 'Changer vers le thème clair', - 'themeToggle.useDark': 'Changer vers le thème sombre', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Page suivante', - 'articleNav.prevPage': 'Page précédente', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Ajouté à la version :', - 'since.new': 'Nouveau', - 'since.beta': 'Bêta', - // Installation Guide - 'install.autoTab': "Automatiquement via l'ILC", - 'install.manualTab': 'Configuration manuelle', - // `` vocabulary - 'deploy.sectionTitle': 'Guides de déploiement', - 'deploy.altSectionTitle': 'Plus de guides de déploiement', - 'deploy.filterLabel': 'Filtrer par type de déploiement', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Statique', - // CMS Guides vocabulary - 'cms.navTitle': 'Plus de guides sur les CMS', - // Migration Guides vocabulary - 'migration.navTitle': 'Plus de guides sur les migrations', - // Recipes vocabulary - 'recipes.navTitle': 'Plus de méthodes', - // `` vocabulary - 'recipesLink.singular': 'Méthode associée :', - 'recipesLink.plural': 'Méthodes associées', - // `` fallback text - 'contributors.seeAll': 'Voir tous les contributeurs', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - "Cette page est affichée en anglais car elle n'est pas encore disponible dans votre langue. Vous pouvez aider en la traduisant !", - 'fallbackContent.linkText': 'En savoir plus sur la façon de contribuer', - // 404 Page - '404.title': 'Page introuvable', - '404.content': 'Cette page ne fait pas partie de notre système solaire.', - '404.linkText': 'Ramenez moi à la maison', - // Aside component default labels - 'aside.note': 'Note', - 'aside.tip': 'Astuce', - 'aside.caution': 'Attention', - 'aside.danger': 'Danger', - // `` vocabulary - 'languageSelect.label': 'Sélectionner la langue', - // Integrations vocabulary - 'integrations.changelog': 'Journal des modifications', - 'integrations.footerTitle': "Plus d'intégrations", - 'integrations.renderers': "Framework d'interface utilisateur", - 'integrations.adapters': 'Adaptateurs SSR', - 'integrations.others': 'Autres', - // Checklist component - 'checklist.or': 'ou', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Correct !', - 'multipleChoice.defaultIncorrect': 'Réessayer !', - 'multipleChoice.submitLabel': 'Envoyer', - // Tutorial Progress - 'progress.todo': 'À faire', - 'progress.done': 'Terminer', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Suivi du tutoriel', - 'tutorial.unit': 'Unité', - // Tutorial - 'tutorial.getReady': 'Préparez-vous à…', - // Feedback Fish widget - 'feedback.button': 'Laissez un commentaire', - 'feedback.a11yLabel': 'Formulaire de commentaires', - 'feedback.formTitle': 'Comment pouvons-nous vous aider ?', - 'feedback.categoryGroupLabel': 'Choisissez le type de commentaire', - 'feedback.issue': 'Problème', - 'feedback.createIssue': 'Créer une issue GitHub', - 'feedback.idea': 'Idée', - 'feedback.other': 'Autres', - 'feedback.messageA11yLabel': 'Message', - 'feedback.placeholder': 'Que faut-il savoir ?', - 'feedback.submit': 'Envoyez des commentaires', - 'feedback.close': 'Fermer le formulaire de commentaires', - 'feedback.success': 'Merci ! Nous avons reçu vos commentaires.', - // `` component - 'fileTree.directoryLabel': 'Répertoire', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Fenêtre du terminal', - 'expressiveCode.copyButtonTooltip': 'Copier dans le presse-papiers', - 'expressiveCode.copyButtonCopied': 'Copié!', - // Backend Guides vocabulary - 'backend.navTitle': 'Plus de guides sur les services backend', - // Stubs vocabulary - 'stub.title': 'Développez cette ébauche !', - 'stub.subtitle': 'Ce guide est une ébauche.', - 'stub.description.migration': - 'Vous souhaitez contribuer à ce guide ? Vous avez un article de blog, une vidéo ou une autre ressource à partager sur la migration de cette technologie vers Astro ?', - 'stub.description.cms': "En savoir plus sur l'utilisation de ce CMS avec Astro ?", - 'stub.description.backend': "En savoir plus sur l'utilisation de ce service backend avec Astro ?", -}); diff --git a/src/i18n/hi/docsearch.ts b/src/i18n/hi/docsearch.ts deleted file mode 100644 index 8385eaf8d..000000000 --- a/src/i18n/hi/docsearch.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'खोजें', - placeholder: 'दस्तावेज़ खोजें', - shortcutLabel: 'खोजने के लिए / दबाएँ', - resultsFooterLede: 'एक Astro एकीकरण या विषय की तलाश में? अधिक मदद की आवश्यकता है?', - resultsFooterIntegrations: 'Astro एकीकरण निर्देशिका', - resultsFooterThemes: 'Astro थीम का प्रदर्शन', - resultsFooterDiscord: 'डिस्कोर्ड पर हमसे जुड़ें', - modal: { - searchBox: { - resetButtonTitle: 'खोज साफ़ करें', - resetButtonAriaLabel: 'खोज साफ़ करें', - cancelButtonText: 'रद्द करे', - cancelButtonAriaLabel: 'रद्द करे', - }, - startScreen: { - recentSearchesTitle: 'हाल की खोजें', - noRecentSearchesText: 'कोई हालिया खोज नहीं', - saveRecentSearchButtonTitle: 'इस खोज को सहेजें', - removeRecentSearchButtonTitle: 'इस खोज को इतिहास से हटाएँ', - favoriteSearchesTitle: 'पसंदीदा', - removeFavoriteSearchButtonTitle: 'इस खोज को पसंदीदा से निकालें', - }, - errorScreen: { - titleText: 'परिणाम पुनर्प्राप्त करने में त्रुटि', - helpText: 'आपको अपने इंटरनेट कनेक्शन की स्थिति की जांच करनी चाहिए।', - }, - footer: { - selectText: 'चयन के लिए', - selectKeyAriaLabel: 'कुंजी दबाएँ', - navigateText: 'नेविगेट के लिए', - navigateUpKeyAriaLabel: 'शीर्ष तीर', - navigateDownKeyAriaLabel: 'नीचे तीर', - closeText: 'बंद करना', - closeKeyAriaLabel: 'बंद करने की कुंजी', - searchByText: 'के माध्यम से खोजें', - }, - noResultsScreen: { - noResultsText: 'इसका कोई परिणाम नहीं मिला', - suggestedQueryText: 'खोजने का प्रयास करें', - reportMissingResultsText: 'क्या आपको लगता है कि आपको कोई त्रुटि मिली है?', - reportMissingResultsLinkText: 'हमें बताएं।', - }, - }, -}); diff --git a/src/i18n/hi/nav.ts b/src/i18n/hi/nav.ts deleted file mode 100644 index 6e85ff66e..000000000 --- a/src/i18n/hi/nav.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: 'यहाँ से शुरू करे', - 'getting-started': 'पहले कदम', - - install: 'स्थापित करें', - 'editor-setup': 'एडिटर सेटअप', - 'guides/upgrade-to/v3': 'v3 में अपग्रेड करें', - - coreConcepts: 'मूल अवधारणाएँ', - 'concepts/why-astro': 'क्यों Astro', - 'concepts/islands': 'Astro द्वीप', - - tutorials: 'शिक्षण सत्र', - 'blog-tutorial': 'ब्लॉग बनाएं', - 'add-collections-tutorial': 'सामग्री संग्रह बढ़ाएं', - 'add-transitions-tutorial': 'व्यू-ट्रांज़िशन्स बढ़ाएं', - - basics: 'मौलिक अवधारणाएँ', - 'core-concepts/project-structure': 'परियोजना संरचना', - 'core-concepts/astro-components': 'अवयव', - 'core-concepts/astro-pages': 'पृष्ठ', - 'core-concepts/layouts': 'नक़्शे', - 'core-concepts/astro-syntax': 'Astro की सिंटैक्स', - 'core-concepts/rendering-modes': 'अनुवाद मध्यम', - - builtins: 'बिल्ट-इंस ', - 'guides/content-collections': 'सामग्री संग्रह', - 'guides/view-transitions': 'व्यू-ट्रांज़िशन्स ', - 'guides/prefetch': 'प्रीफ़ेच', - - addons: 'एड-ऑन्स', - 'guides/integrations-guide': 'एकीकरण जानकारी', - 'core-concepts/framework-components': 'UI फ़्रेमवर्क्स', - 'guides/server-side-rendering': 'सर्वर-साइड रेंडरिंग (SSR)', - - examples: 'उदाहरण', - 'guides/migrate-to-astro': 'Astro में माइग्रेट करें', - 'guides/cms': 'एक CMS से जुड़े', - 'guides/backend': 'बैकएंड सेवाओं को जोड़ें', - 'guides/deploy': 'अपनी साइट को डिप्लॉय करें', - 'guides/recipes': 'अधिक रेसिपी', - - features: 'गाइड्स', - 'core-concepts/routing': 'रूटिंग', - 'guides/markdown-content': 'Markdown और MDX', - 'guides/client-side-scripts': 'स्क्रिप्ट और घटना संचालन', - 'guides/styling': 'स्टाइल और CSS', - 'guides/images': 'छवियाँ', - 'guides/fonts': 'फ़ॉन्ट्स', - 'guides/imports': 'आयात', - 'core-concepts/endpoints': 'एंडपॉइंट्स', - 'guides/data-fetching': 'डेटा फ़ेचिंग', - 'guides/internationalization': 'अंतर्राष्ट्रीयकरण', - 'guides/middleware': 'मिडलवेयर', - 'guides/testing': 'परिक्षण', - 'guides/troubleshooting': 'समस्या समाधान', - - configuration: 'कॉन्फ़िगरेशन', - 'guides/configuring-astro': 'Astro कॉन्फ़िग फ़ाइल', - 'guides/typescript': 'Typescript', - 'guides/aliases': 'आयात उपनाम', - 'guides/environment-variables': 'पर्यावरण चर', - - reference: 'संदर्भ', - 'reference/configuration-reference': 'कॉन्फ़िगरेशन', - 'reference/api-reference': 'रनटाइम API', - 'reference/integrations-reference': 'एकीकरण API', - 'reference/adapter-reference': 'एडाप्टर API', - 'reference/image-service-reference': 'छवि सेवा API', - 'reference/dev-overlay-plugin-reference': 'डेवलपर ओवरले प्लगइन API', - 'reference/directives-reference': 'टेम्पलेट निर्देशिकाएँ', - 'reference/cli-reference': 'Astro CLI', - 'reference/error-reference': 'त्रुटि संदर्भ', - 'guides/publish-to-npm': 'NPM पैकेज प्रारूप', -}); diff --git a/src/i18n/hi/ui.ts b/src/i18n/hi/ui.ts deleted file mode 100644 index 45c91c324..000000000 --- a/src/i18n/hi/ui.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'इसे छोड़कर कंटेंट पर जाएं', // "Skip to Content" - 'a11y.sectionLink': 'शीर्षक', // "Section titled" - 'navbar.a11yTitle': 'शीर्ष', // "Top" - // Site settings - 'site.title': 'Astro दस्तावेज़ीकरण', // "Astro Documentation" - 'site.description': 'कम Client-side Javascript के साथ तेज़ वेबसाइटें बनाएं।', // "Build faster websites with less client-side JavaScript." - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'एक तारों भरे अंतरिक्ष में Astro लोगो, जिसमें दाएँ से एक जामुनी शनि ग्रह की तरह ग्रह तैरता है', // "astro logo on a starry expanse of space, with a purple saturn-like planet floating in the right foreground" - // Left Sidebar - 'leftSidebar.a11yTitle': 'प्रमुख', // "Primary" - 'leftSidebar.learnTab': 'सीखें', // "Learn" - 'leftSidebar.referenceTab': 'संदर्भ', // "Reference" - 'leftSidebar.viewInEnglish': 'अंग्रेज़ी में देखें', // "View in English" - 'leftSidebar.sponsoredBy': 'समर्थित करने वाला', // "Sponsored by" - // Right Sidebar - 'rightSidebar.a11yTitle': 'माध्यमिक', // "Secondary" - 'rightSidebar.onThisPage': 'इस पृष्ठ पर', // "On this page" - 'rightSidebar.overview': 'अवलोकन', // "Overview" - 'rightSidebar.community': 'समुदाय', // "Community" - 'rightSidebar.joinDiscord': 'हमसे Discord में शामिल हों', // "Join us on Discord" - 'rightSidebar.readBlog': 'हमारे ब्लॉग पोस्ट पढ़ें', // "Read our blog posts" - 'rightSidebar.openCollective': 'हमारा ओपन कलेक्टिव', // "Our Open Collective" - 'rightSidebar.contribute': 'योगदान करें', // "Contribute" - 'rightSidebar.contributorGuides': 'योगदानकर्ता मार्गदर्शिकाएँ', // "Contributor Guides" - 'rightSidebar.editPage': 'इस पृष्ठ को संपादित करें', // "Edit this page" - 'rightSidebar.translatePage': 'इस पृष्ठ को अनुवाद करें', // "Translate this page" - 'rightSidebar.github': 'Astro Docs देखे GitHub पर', // "Astro Docs on GitHub" - // Footer - 'footer.privacyPolicy': 'गोपनीयता नीति', // "Privacy Policy" - // `` accessibility labels - 'themeToggle.useLight': 'Light थीम उपयोग करें', // "Use light theme" - 'themeToggle.useDark': 'Dark थीम उपयोग करें', // "Use dark theme" - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'अगला पृष्ठ', // "Next Page" - 'articleNav.prevPage': 'पिछला पृष्ठ', // "Back" - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'जोड़ा गया:', // "Added in:" - 'since.new': 'नया', // "New" - 'since.beta': 'बीटा', // "Beta" - // Installation Guide - 'install.autoTab': 'स्वचालित CLI', // "Automatic CLI" - 'install.manualTab': 'मैन्युअल सेटअप', // "Manual Setup" - // `` vocabulary - 'deploy.sectionTitle': 'पृष्ठ संचालन मार्गदर्शिकाएँ', // "Deployment Guides" - 'deploy.altSectionTitle': 'अधिक पृष्ठ संचालन मार्गदर्शिकाएँ', // "More Deployment Guides" - 'deploy.filterLabel': 'डिप्लॉय प्रकार से छाँटें', // "Filter by deploy type" - 'deploy.ssrTag': 'SSR', // "SSR" - 'deploy.staticTag': 'Static', // "Static" - // CMS Guides vocabulary - 'cms.navTitle': 'और CMS मार्गदर्शिकाएँ', // "More CMS guides" - // Migration Guides vocabulary - 'migration.navTitle': 'और माइग्रेशन मार्गदर्शिकाएँ', // "More migration guides" - // Recipes -}); diff --git a/src/i18n/it/README.md b/src/i18n/it/README.md deleted file mode 100644 index d7a1ef638..000000000 --- a/src/i18n/it/README.md +++ /dev/null @@ -1,59 +0,0 @@ -# 📖 Glossario - -Il glossario è una raccolta di vocaboli, modi di dire e pratiche comuni per la traduzione italiana della documentazione di Astro. - -Alcune parole legate ad Astro e allo sviluppo web non vanno tradotte in quanto sono parte integrante del suo ambiente e non hanno una traduzione immediata nell'Italiano. - -## 🔄️ Vocaboli che non hanno bisogno di traduzione - -> 💡 Queste parole sono considerate nomi propri data la loro origine Inglese : - -| Vocabolo | Definizione | Uso | -|-------------------|-------------|-------------| -| Runtime | Ambiente d'esecuzione / Tempo di esecuzione | Usato come "runtime di JavaScript" o "runtime edge" | -| Framework | Un "Framework" è un insieme di strumenti, librerie, e convenzioni che forniscono un metodo strutturato per costruire applicazioni. I Framework sono progettati per semplificare e ottimizzare il processo di sviluppo offrendo una base che gli sviluppatori possono usare per costruire un'applicazione senza partire da zero. | Utilizzato in riferimento al framework Astro e ad altri framework che possono essere usati e integrati con esso. | -| Build | Nel contesto di un linguaggio di programmazione che richiede un passaggio di trasformazione (tra due diversi linguaggi) | Questa parola deve essere usata quando si parla della fase di compilazione tramite il comando `astro build` usato per produrre un risultato compatibile con i browser e ottimizzato da Astro -| Frontend | Tutto quell'insieme di librerie e programmi usati per costruire l'interfaccia utente direttamente visibile nel browser | Comunemente usato per distinguere il codice relativo alla logica dell'interfaccia utente dal codice che viene eseguito sul server e che non è visibile all'utente | -| Backend | L'insieme delle librerie e codice che viene usato per definire la struttura e il funzionamento del server | Il termine "Backend" si riferisce al lato server dell'applicazione/sito web. È la parte del codice responsabile della gestione delle richieste da parte del client/browser (Frontend), della manipolazione dei dati, e gestione del server e interazione con il database. | -| Markdown, Astro, JavaScript, TypeScript, React, Vue, Svelte, Lit, Solid | Nomi di pacchetti o linguaggi di programmazione sempre scritti con la maiuscola | Utilizzati ovunque nella documentazione e sempre scritti con la maiuscola | -| API (Application Programming Interface) | Un'insieme di metodi, regole e protocolli esposti allo sviluppatore che permettono a diversi software e applicazioni di comunicare tra di loro. Definisce i metodi e le strutture dati che le applicazioni possono usare per richiedere e scambiarsi informazioni. | Abbreviazione usata in riferimento all'architettura e interfaccia di programmazione di Astro e altri software che potrebbero essere integrati con il framework e che permette allo sviluppatore di controllare il comportamento di Astro e di eventuali software integrati ad esso. | -| Routing | La pratica dell'indirizzamento dell'utente alle varie pagine presenti all'interno di un sit/applicazione web. | Termine usato in riferimento ai processi tramite i quali la tua applicazione gestisce diversi URL e indirizza gli utenti al contenuto o alle pagine richieste. | -| Router | Controller che gestisce la navigazione all'interno del sito/applicazione web. | Termine usato per definire il controller che viene utilizzato per inizializzare e portare a termine le navigazioni che avvengono tra le varie pagine del sit/applicazione web sviluppata. | - -## 📚 Traduzioni comuni - -Alcuni vocaboli hanno una correlazione diretta o quasi con l'Italiano e vanno usate sempre allo stesso modo per mantenere una certa coerenza all'interno della documentazione: - -| Inglese | Italiano | -|------------------------------|----------------------------------------------------| -| SSR / Server-side rendering | SSR / Rendering lato server | -| Client-side | Lato browser / Lato client | -| Template | Template / Modello | -| CLI / Command line interface | CLI / Interfaccia da riga di comando | -| Route | Route / Rotta | -| UI components | Componenti dell'interfaccia utente / Componenti UI | -| Code fences (`---`) | Delimitatori di codice (`---`) / Tripli trattini | -| Imports | Import / Importare / Includere | -| Exports | Export / Esportare | -| Component Script | Script del Componente | -| Component Template | Modello del Componente | -| Bundle / Bundled | Pacchetto | -| Processed | Processato / Trasformato | -| Process | Processo | -| Wrap / To wrap | Racchiuso / Racchiudere | -| To slot | Inserire / Includere | -| To fetch | Richiedere (dati da un'Endpoint) | -| Endpoint | Endpoint / Punto d'accesso | -| Astro Islands | Isole Astro | -| Component Islands | Isole di Componenti | -| Island architecture | Architettura a Isole | -| Scope / Scoped | Scope / Ambito | -| Frontmatter | Avantesto. Blocco di testo iniziale in un file Markdown riservato alla definizione di codice e informazioni da rendere disponibili al client/browser (per es. data creazione, descrizione SEO, ecc.). Viene sempre delimitato da tre trattini (`---`) | - -## 📝 Note per la traduzione - -### Il brand Astro - -Astro deve essere trattato come un brand, pertanto alcune traduzioni devono essere adattate in quest'ottica. Per esempio quando si traduce una frase come "Create your new Astro project..." Astro non va prefissato con alcuna preposizione come ci verrebbe naturale fare ("...nuovo progetto **di** Astro..."), ma va mantenuto invariato e tradotto in questa maniera: "Crea il tuo nuovo progetto Astro...". Questa è una pratica comune anche in Italia e si può osservare in marchi come Barilla ("pasta ~~della~~ Barilla" vs. "pasta Barilla"), RayBan ("occhiali ~~della~~ RayBan" vs. "occhiali RayBan") e molti altri. - -> ⚠️ Il glossario è in continuo sviluppo e non è da considerarsi completo. Suggerimenti e contribuzioni sono ben accetti e incoraggiati! diff --git a/src/i18n/it/docsearch.ts b/src/i18n/it/docsearch.ts deleted file mode 100644 index ebfa57de5..000000000 --- a/src/i18n/it/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Cerca', - placeholder: 'Cerca nella documentazione', - shortcutLabel: 'Premi / per cercare', - resultsFooterLede: 'Cerchi un tema o un’integrazione per Astro? Hai bisogno di aiuto?', - resultsFooterIntegrations: 'Cartella delle integrazioni per Astro', - resultsFooterThemes: 'Vetrina dei temi per Astro', - resultsFooterDiscord: 'Unisciti a noi su Discord', - modal: {}, -}); diff --git a/src/i18n/it/nav.ts b/src/i18n/it/nav.ts deleted file mode 100644 index 5c1c795b0..000000000 --- a/src/i18n/it/nav.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: 'Comincia qua', - 'getting-started': 'Per Iniziare', - install: 'Installazione', - 'editor-setup': 'Setup dell’Editor', - 'guides/upgrade-to/v3': 'Aggiorna a v3', - - coreConcepts: 'Concetti Chiave', - 'concepts/why-astro': 'Perché Astro', - 'concepts/islands': 'Le Isole Astro', - - tutorials: 'Tutorial', - 'blog-tutorial': 'Costruisci un Blog', - - basics: 'Le basi', - - 'core-concepts/project-structure': 'Struttura del Progetto', - 'core-concepts/astro-components': 'Componenti', - 'core-concepts/astro-pages': 'Pagine', - 'core-concepts/layouts': 'Layout', - - examples: 'Soluzioni', - 'guides/migrate-to-astro': 'Passa ad Astro', - 'guides/cms': 'Connetti una CMS', - 'guides/backend': 'Aggiungi un servizio backend', - 'guides/integrations-guide': 'Aggiungi un’integrazione', - 'guides/deploy': 'Pubblica il tuo sito', - 'guides/recipes': 'Altre soluzioni', - - features: 'Guide', - 'core-concepts/astro-syntax': 'Sintassi dei Template di Astro', - 'core-concepts/framework-components': 'Framework UI', - 'core-concepts/routing': 'Navigazione', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/content-collections': 'Collezioni di Contenuti', - 'guides/client-side-scripts': 'Script & Gestione degli Eventi', - 'guides/styling': 'CSS & Stili', - 'guides/images': 'Immagini', - 'guides/fonts': 'Font', - 'guides/imports': 'Import', - 'guides/server-side-rendering': 'Rendering lato server (SSR)', - 'core-concepts/endpoints': 'Punti d’accesso', - 'guides/data-fetching': 'Fetch dei Dati', - 'guides/middleware': 'Middleware', - 'guides/testing': 'Testing', - 'guides/view-transitions': 'Transizioni delle viste', - 'guides/troubleshooting': 'Risoluzione dei problemi', - - configuration: 'Configurazione', - 'guides/configuring-astro': 'Il File di Configurazione di Astro', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'Import Alias', - 'guides/environment-variables': 'Variabili d’Ambiente', - - reference: 'API Reference', - 'reference/configuration-reference': 'Configurazione', - 'reference/api-reference': 'API del Runtime', - 'reference/integrations-reference': 'API delle Integrazioni', - 'reference/adapter-reference': 'API degli Adattatori', - 'reference/image-service-reference': 'API del Servizio Immagini', - 'reference/directives-reference': 'Direttive dei Template', - 'reference/cli-reference': 'La CLI di Astro', - 'reference/error-reference': 'Reference degli Errori', - 'guides/publish-to-npm': 'Formato del Pacchetto NPM', -}); diff --git a/src/i18n/it/ui.ts b/src/i18n/it/ui.ts deleted file mode 100644 index 0ad6b49c0..000000000 --- a/src/i18n/it/ui.ts +++ /dev/null @@ -1,126 +0,0 @@ -export default { - 'a11y.skipLink': 'Vai al Contenuto', - 'a11y.sectionLink': 'Sezione intitolata', - 'navbar.a11yTitle': 'Barra di navigazione', - // Site settings - 'site.title': 'Documentazione di Astro', - 'site.description': 'Costruisci siti web veloci con meno JavaScript sul client.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'Logo di Astro su una distesa di stelle, con un pianeta viola simile a Saturno che fluttua in primo piano a destra', - // Left Sidebar - 'leftSidebar.a11yTitle': 'Principale', - 'leftSidebar.learnTab': 'Impara', - 'leftSidebar.referenceTab': 'Reference', - 'leftSidebar.viewInEnglish': 'Visualizza in Inglese', - 'leftSidebar.sponsoredBy': 'Sponsorizzato da', - // Right Sidebar - 'rightSidebar.a11yTitle': 'Secondaria', - 'rightSidebar.onThisPage': 'In questa Pagina', - 'rightSidebar.overview': 'Panoramica', - 'rightSidebar.community': 'Comunità', - 'rightSidebar.joinDiscord': 'Unisciti a noi su Discord', - 'rightSidebar.readBlog': 'Leggi i post sul nostro blog', - 'rightSidebar.openCollective': 'Il nostro Open Collective', - 'rightSidebar.contribute': 'Contribuisci', - 'rightSidebar.contributorGuides': 'Linee guida per i contributor', - 'rightSidebar.editPage': 'Modifica questa pagina', - 'rightSidebar.translatePage': 'Traduci questa pagina', - 'rightSidebar.github': 'Documentazione di Astro su GitHub', - // Footer - 'footer.privacyPolicy': 'Privacy Policy', - // `` acessibility labels - 'themeToggle.useLight': 'Usa il tema chiaro', - 'themeToggle.useDark': 'Usa il tema scuro', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Avanti', - 'articleNav.prevPage': 'Indietro', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Aggiunto in:', - 'since.new': 'Nuovo', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': 'CLI Automatica', - 'install.manualTab': 'Setup Manuale', - // `` vocabulary - 'deploy.sectionTitle': 'Guide di Pubblicazione', - 'deploy.altSectionTitle': 'Altre Guide di Pubblicazione', - 'deploy.filterLabel': 'Filtra per tipo', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Statica', - // CMS Guides vocabulary - 'cms.navTitle': 'Altre guide per le CMS', - // Migration Guides vocabulary - 'migration.navTitle': 'Altre guide per le migrazioni', - // Recipes vocabulary - 'recipes.navTitle': 'Altre soluzioni', - // `` vocabulary - 'recipesLink.singular': 'Soluzione simile:', - 'recipesLink.plural': 'Soluzioni simili', - // `` fallback text - 'contributors.seeAll': 'Vedi tutti i contributor', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'Questa pagina non è ancora disponibile nella tua lingua, quindi ti mostriamo la versione in Inglese. Puoi aiutarci a tradurla!', - 'fallbackContent.linkText': 'Scopri di più su come puoi contribuire', - // 404 Page - '404.title': 'Non trovata', - '404.content': 'Questa pagina non si trova nel nostro sistema solare.', - '404.linkText': 'Torna alla home.', - // Aside component default labels - 'aside.note': 'Nota', - 'aside.tip': 'Consiglio', - 'aside.caution': 'Attenzione', - 'aside.danger': 'Pericolo', - // `` vocabulary - 'languageSelect.label': 'Seleziona la lingua', - // Integrations vocabulary - 'integrations.changelog': 'Registro delle modifiche', - 'integrations.footerTitle': 'Altre Integrazioni', - 'integrations.renderers': 'Framework UI', - 'integrations.adapters': 'Adattatori SSR', - 'integrations.others': 'Altri', - // Checklist component - 'checklist.or': 'oppure', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Corretto!', - 'multipleChoice.defaultIncorrect': 'Riprova!', - 'multipleChoice.submitLabel': 'Invia', - // Tutorial Progress - 'progress.todo': 'Da fare', - 'progress.done': 'Completato', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Progresso del Tutorial', - 'tutorial.unit': 'Unità', - // Tutorial - 'tutorial.getReady': 'Preparati a…', - // Feedback Fish widget - 'feedback.button': 'Dicci che ne pensi', - 'feedback.a11yLabel': 'Modulo per il feedback', - 'feedback.formTitle': 'A cosa stai pensando?', - 'feedback.categoryGroupLabel': 'Scegli la categoria del feedback', - 'feedback.issue': 'Problema', - 'feedback.createIssue': 'Crea una Issue su GitHub', - 'feedback.idea': 'Idea', - 'feedback.other': 'Altro', - 'feedback.messageA11yLabel': 'Messaggio', - 'feedback.placeholder': 'Cosa vuoi farci sapere?', - 'feedback.submit': 'Invia il feedback', - 'feedback.close': 'Chiudi il modulo per il feedback', - 'feedback.success': 'Grazie! Abbiamo ricevuto il tuo feedback.', - // `` component - 'fileTree.directoryLabel': 'Cartella', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Finestra del terminale', - 'expressiveCode.copyButtonTooltip': 'Copia', - 'expressiveCode.copyButtonCopied': 'Copiato!', - // Backend Guides vocabulary - 'backend.navTitle': 'Altre guide per servizi backend', - // Stubs vocabulary - 'stub.title': 'Espandi questo abbozzo!', - 'stub.subtitle': 'Questa guida è un abbozzo.', - 'stub.description.migration': - 'Vuoi contribuire a questa guida? Hai un articolo, video, o un’altra risorsa da condividere a proposito di questa tecnologia su Astro?', - 'stub.description.cms': 'Ne sai di più su come usare questo CMS con Astro?', - 'stub.description.backend': 'Ne sai di più su come usare questo servizio di back-end con Astro?', -}; diff --git a/src/i18n/ja/README.md b/src/i18n/ja/README.md deleted file mode 100644 index 0e6d18949..000000000 --- a/src/i18n/ja/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# 日本語翻訳ガイド - -Astroドキュメントの日本語翻訳に興味を持っていただき、ありがとうございます! -Astroの日本語翻訳にはAstroユーザーであり、ネイティブレベルの日本語能力があれば誰でも参加できます。 - -参加するには[🌐 i18n Guide](https://github.com/withastro/docs/blob/main/contributor-guides/translating-astro-docs.md)にも目を通しておいてください。 -また、[Discordの#docs-i18n内スレッドi18n-gang-ja](https://discord.com/channels/830184174198718474/972429103821111326)では日本語でチャットできます。翻訳が被ったりすることを避けるためにもぜひご参加ください。 - -## このガイドの目的 - -このガイドは、日本語特有のルールや用語集を定義することで、翻訳者が迷わずに翻訳しやすいように用意されました。 -また、翻訳のルールや用語を日本語ドキュメント全体で統一して、ドキュメントとしてのクオリティを担保するのも目的です。 - -## 日本語ルール - -- 基本的に「です・ます調」にします -- _イタリック_ は本文中でスペースを空ける必要があり、日本語として不自然になるので省略してもかまいません -- 英語単語と日本語の間にはスペースを空けません(Prettier 2系だとスペースが入るので気をつけてください) -- 冗長表現はさけてください - - することができます → できます - - 使うことができます → 使えます -- メニュー項目など表示領域が限られている箇所(たとえばsrc/i18n/ja/ui.tsのRight Sidebar)では、たとえば「このページを編集」などのように、可能であれば文末の「する」を省略します(「このページを編集する」とは訳さないでください) - - ただし、「貢献する」のように目的語などがなく「名詞+する」だけの場合は「する」を省略しません - -## 用語集 - -| 元の用語 | 翻訳 | 備考 -|:----|:----|:---- -| adapter | アダプター | -| build | ビルドする | Astroが生成する工程のことを指す場合は構築などにしません -| content collections | コンテンツコレクション | -| contributor | コントリビューター | ただし、動詞としてのcontributeは「貢献する」などの通常の日本語にします -| dependency | 依存関係 | -| frontmatter | フロントマター | フロントマターの概念を指す場合。プロパティを示す場合はfrontmatterのまま訳しません -| integration | インテグレーション | Astroの機能を指す場合はインテグレーションにします -| island(s) | アイランド | Astroアイランドを指す場合はアイランド。機能ではなく、島のことを言ってる場合は島と訳します -| page | ページ | -| partial hydration | パーシャルハイドレーション | -| render | レンダリング(する) | -| route | ルーティング | routeとrootを区別するため、訳文ではrouteを基本的に「ルーティング」と訳します -| Markdown | Markdown | Markdownはマークダウンとカタカナ表記にしません -| Issue | Issue | GitHubにおけるIssueについてはカタカナ表記にしません - -## このガイドへの追加や変更 - -このドキュメントは現時点での日本語翻訳チームの合意です。常に改善されるべきものです。 -ドキュメントの改善や変更すべき点があれば、Discordのi18n-gang-jaスレッドにて相談してください。 diff --git a/src/i18n/ja/docsearch.ts b/src/i18n/ja/docsearch.ts deleted file mode 100644 index 54b3b7ad1..000000000 --- a/src/i18n/ja/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: '検索', - placeholder: 'ドキュメントを検索する', - shortcutLabel: '/ キーを押して検索する', - resultsFooterLede: 'Astroインテグレーションやテーマをお探しですか?ヘルプが必要でしょうか?', - resultsFooterIntegrations: 'Astroインテグレーション一覧', - resultsFooterThemes: 'Astroテーマのショーケース', - resultsFooterDiscord: 'Discordに参加する', - modal: {}, -}); diff --git a/src/i18n/ja/nav.ts b/src/i18n/ja/nav.ts deleted file mode 100644 index 03eca91ed..000000000 --- a/src/i18n/ja/nav.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - // Start Here - startHere: 'スタートガイド', - 'getting-started': 'はじめに', - install: 'インストール', - 'editor-setup': 'エディタのセットアップ', - 'guides/upgrade-to/v3': 'v3へのアップグレード', - - // Core Concepts - coreConcepts: 'コアコンセプト', - 'concepts/why-astro': 'Astroを選ぶ理由', - 'concepts/islands': 'Astroアイランド', - - // Tutorials - tutorials: 'チュートリアル', - 'blog-tutorial': 'ブログを作る', - 'add-collections-tutorial': 'コンテンツコレクションで拡張する', - 'add-transitions-tutorial': 'ビュートランジションで拡張する', - - // Basics - basics: '基本', - 'core-concepts/project-structure': 'ディレクトリ構成', - 'core-concepts/astro-components': 'コンポーネント', - 'core-concepts/astro-pages': 'ページ', - 'core-concepts/layouts': 'レイアウト', - - // Recipes - examples: 'レシピ', - 'guides/migrate-to-astro': 'Astroへの移行', - 'guides/cms': 'CMSとの接続', - 'guides/backend': 'バックエンドサービスの追加', - 'guides/integrations-guide': 'インテグレーションの追加', - 'guides/deploy': 'サイトのデプロイ', - 'guides/recipes': 'その他のレシピ', - - // Guides - features: 'ガイド', - 'core-concepts/astro-syntax': 'Astroテンプレートの構文', - 'core-concepts/framework-components': 'UIフレームワーク', - 'core-concepts/routing': 'ルーティング', - 'guides/markdown-content': 'MarkdownとMDX', - 'guides/content-collections': 'コンテンツコレクション', - 'guides/client-side-scripts': 'スクリプトとイベントハンドリング', - 'guides/styling': 'CSSとスタイル', - 'guides/images': '画像', - 'guides/fonts': 'フォント', - 'guides/imports': 'インポート', - 'guides/server-side-rendering': 'サーバーサイドレンダリング(SSR)', - 'core-concepts/endpoints': 'エンドポイント', - 'guides/data-fetching': 'データフェッチ', - 'guides/middleware': 'ミドルウェア', - 'guides/testing': 'テスト', - 'guides/view-transitions': 'ビュートランジション', - 'guides/troubleshooting': 'トラブルシューティング', - - // Configuration - configuration: '設定', - 'guides/configuring-astro': 'Astroの設定ファイル', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'importエイリアス', - 'guides/environment-variables': '環境変数', - - // Reference - reference: 'リファレンス', - 'reference/configuration-reference': '設定方法', - 'reference/api-reference': 'ランタイムAPI', - 'reference/integrations-reference': 'インテグレーションAPI', - 'reference/adapter-reference': 'アダプターAPI', - 'reference/image-service-reference': '画像サービスAPI', - 'reference/directives-reference': 'テンプレートディレクティブ', - 'reference/cli-reference': 'Astro CLI', - 'reference/error-reference': 'エラーリファレンス', - 'guides/publish-to-npm': 'NPMパッケージの形式', -}); diff --git a/src/i18n/ja/ui.ts b/src/i18n/ja/ui.ts deleted file mode 100644 index c061f2aef..000000000 --- a/src/i18n/ja/ui.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'コンテンツにスキップ', - 'a11y.sectionLink': 'セクションタイトル:', - 'navbar.a11yTitle': 'トップナビゲーション', - // Site settings - 'site.title': 'Astroドキュメント', - 'site.description': - 'より少ないクライアントサイドJavaScriptで、より高速なWebサイトを構築できます。', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': '星空にAstroロゴ、右手前には紫色の土星のような惑星が見える。', - // Left Sidebar - 'leftSidebar.a11yTitle': 'サイトナビゲーション', - 'leftSidebar.learnTab': '学習', - 'leftSidebar.referenceTab': 'リファレンス', - 'leftSidebar.viewInEnglish': '英語版で見る', - 'leftSidebar.sponsoredBy': 'スポンサー', - // Right Sidebar - 'rightSidebar.a11yTitle': '目次', - 'rightSidebar.onThisPage': '目次', - 'rightSidebar.overview': '概要', - 'rightSidebar.community': 'コミュニティ', - 'rightSidebar.joinDiscord': 'Discordに参加', - 'rightSidebar.readBlog': 'ブログを読む', - 'rightSidebar.openCollective': 'Open Collectiveで支援', - 'rightSidebar.contribute': '貢献する', - 'rightSidebar.contributorGuides': 'コントリビューターガイド', - 'rightSidebar.editPage': 'このページを編集', - 'rightSidebar.translatePage': 'このページを翻訳', - 'rightSidebar.github': 'GitHubリポジトリ', - // Footer - 'footer.privacyPolicy': 'プライバシーポリシー', - // `` acessibility labels - 'themeToggle.useLight': 'ライトモード', - 'themeToggle.useDark': 'ダークモード', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': '次のページ', - 'articleNav.prevPage': '戻る', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': '追加:', - 'since.new': 'New', - 'since.beta': 'ベータ', - // Installation Guide - 'install.autoTab': '自動CLI', - 'install.manualTab': '手動セットアップ', - // `` vocabulary - 'deploy.sectionTitle': 'デプロイガイド', - 'deploy.altSectionTitle': 'その他のデプロイガイド', - 'deploy.filterLabel': 'デプロイ種別でフィルタ', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Static', - // CMS Guides vocabulary - 'cms.navTitle': 'その他のCMSガイド', - // Migration Guides vocabulary - 'migration.navTitle': 'その他のマイグレーションガイド', - // Recipes vocabulary - 'recipes.navTitle': 'その他のレシピ', - // `` vocabulary - 'recipesLink.singular': '関連レシピ:', - 'recipesLink.plural': '関連レシピ', - // `` fallback texta - 'contributors.seeAll': 'すべてのコントリビューターを見る', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'このページはまだ日本語版が用意されていないため、英語版を表示しています。興味があればこのページの翻訳に協力できます!', - 'fallbackContent.linkText': '貢献の方法についてはこちらをご覧ください', - // 404 Page - '404.title': 'ページが見つかりません', - '404.content': 'このページは、太陽系にはありません。', - '404.linkText': '家へ帰る', - // Aside component default labels - 'aside.note': 'ノート', - 'aside.tip': 'ヒント', - 'aside.caution': '注意', - 'aside.danger': '危険', - // `` vocabulary - 'languageSelect.label': '言語の選択', - // Integrations vocabulary - 'integrations.changelog': 'チェンジログ', - 'integrations.footerTitle': '他のインテグレーション', - 'integrations.renderers': 'UIフレームワーク', - 'integrations.adapters': 'SSRアダプター', - 'integrations.others': 'その他', - // Checklist component - 'checklist.or': 'または', - // Multiple Choice component - 'multipleChoice.defaultCorrect': '正解!', - 'multipleChoice.defaultIncorrect': 'もう一度!', - 'multipleChoice.submitLabel': '確認する', - // Tutorial Progress - 'progress.todo': '未完了', - 'progress.done': '完了', - // Tutorial Navigation - 'tutorial.trackerLabel': 'チュートリアルの進捗', - 'tutorial.unit': 'ユニット', - // Tutorial - 'tutorial.getReady': 'ここで学ぶことは…', - // Feedback Fish widget - 'feedback.button': 'フィードバックする', - 'feedback.a11yLabel': 'フィードバックフォーム', - 'feedback.formTitle': 'どんなことを?', - 'feedback.categoryGroupLabel': 'フィードバックカテゴリを選択', - 'feedback.issue': '問題', - 'feedback.createIssue': 'GitHub Issueを作成', - 'feedback.idea': 'アイデア', - 'feedback.other': 'その他', - 'feedback.messageA11yLabel': 'メッセージ', - 'feedback.placeholder': 'なにをお知らせしますか?', - 'feedback.submit': 'フィードバックを送る', - 'feedback.close': 'フィードバックフォームを閉じる', - 'feedback.success': 'ありがとうございます!フィードバックを受け取りました。', - // `` component - 'fileTree.directoryLabel': 'ディレクトリ', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'ターミナルウィンドウ', - 'expressiveCode.copyButtonTooltip': 'クリップボードにコピー', - 'expressiveCode.copyButtonCopied': 'コピーしました!', - // Backend Guides vocabulary - 'backend.navTitle': 'その他のバックエンドサービスガイド', - // Stubs vocabulary - 'stub.title': 'このページに追記する!', - 'stub.subtitle': 'このガイドは未完成です。', - 'stub.description.migration': - 'このガイドに貢献したいですか?この技術からAstroへの移行に関するブログ記事や動画、その他のリソースを共有したいですか?', - 'stub.description.cms': 'このCMSをAstroで使う方法をご存知ですか?', - 'stub.description.backend': 'このバックエンドサービスをAstroで使う方法をご存知ですか?', -}); diff --git a/src/i18n/ko/README.md b/src/i18n/ko/README.md deleted file mode 100644 index 7c191ab52..000000000 --- a/src/i18n/ko/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Astro 문서 한국어 번역 안내서 - -이 안내서는 Astro 공식 문서의 한국어 번역에 기여하려는 분들을 위해 작성되었습니다. - -한국어 번역에 관심있는 분들은 [Astro 공식 Discord 서버](https://astro.build/chat)의 [한국어 번역 채널](https://discord.com/channels/830184174198718474/1073677243290767512)에 참여해주세요! - -## 기본 규칙 - -- **항상 원 저자의 의도를 유지하세요:** 가능한 한 문장의 어조와 방향이 영어 버전에 쓰여진 내용과 일치하도록 번역하세요. -- **쉬운 이해를 우선시하세요:** 간혹 정확한 번역과 쉽게 이해할 수 있는 번역 사이에서 선택해야 하는 경우가 있습니다. 예를 들어 용어를 사용하기보다 풀어서 설명해야 하는 경우가 존재합니다. 이런 경우 항상 최대한 단순하고 간결하며 이해하기 쉽게 번역해야 합니다. - -## 표준 - -간결하고 일관된 번역을 유지하기 위해 다음과 같은 몇 가지 표준이 권장됩니다. - -### 링크 - -- **외부 링크:** 외부 링크의 한국어 버전이 존재하는 경우 URL을 업데이트하여 한국어 버전의 링크로 이동할 수 있어야 합니다. 그렇지 않은 경우 영어 페이지의 기존 URL을 유지합니다. -- **내부 링크:** - - Astro 공식 문서 페이지에 대한 링크는 항상 `/en`을 `/ko`로 업데이트합니다. - - 링크로 이동할 페이지가 아직 번역되지 않은 경우에는 `/en`은 `/ko`로 수정하되, ID는 영어 버전을 그대로 유지합니다. - - 다른 페이지에서 링크된 페이지를 번역하는 경우, 해당 페이지를 링크하는 다른 페이지의 업데이트도 PR에 포함시킵니다. - -### 코드 - -Astro API, JavaScript 또는 기타 라이브러리의 일부가 아닌 경우에는 한국어를 사용하는 독자들의 이해를 돕기 위해 주석, 문자열 데이터를 번역합니다. - -예시: - -```astro ---- -// Example: src/pages/index.astro -import MySiteLayout from '../layouts/MySiteLayout.astro'; ---- - -

        My page content, wrapped in a layout!

        -
        -``` - -번역: - -```astro ---- -// 예시: src/pages/index.astro -import MySiteLayout from '../layouts/MySiteLayout.astro'; ---- - -

        레이아웃에 포함된 페이지 콘텐츠

        -
        -``` - -### 기타 - -- 독자를 지칭해야 하는 경우 `당신`, `귀하`라는 표현 대신 `여러분` 이라는 표현을 사용하는 것을 권장합니다. -- `인라인 코드`가 디렉터리 또는 파일의 경로를 나타내는 경우 디렉터리 또는 파일임을 명시하세요. 예: (`/src/pages` 디렉터리, `/src/pages/index.astro` 파일) - -## 용어집 - -잘못된 번역을 발견했거나 새로운 번역을 추가하고 싶다면 PR을 보내주세요! - -> `Markdown`, `Astro`, `TypeScript`, `React` 등 회사명, 제품명과 같은 고유한 이름은 한글로 번역하지 않습니다. - -| 원문 | 번역 | 출처 | 비고 | -| :------------------ | :------------ | :----------------------------------------------------------- | ---- | -| changelog | 변경 로그 | | | -| client-side | 클라이언트 측 | | | -| component | 컴포넌트 | 외래어 표기법 | | -| configuration | 구성 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=039507-1) | | -| content collections | 콘텐츠 컬렉션 | 외래어 표기법 | | -| dependencies | 종속성 | | | -| directive | 지시어 | | 문장이 연상되는 지시문 대신 키워드 또는 예약어가 연상되는 지시어 사용 | -| directory | 디렉터리 | [우리말샘](https://opendict.korean.go.kr/dictionary/view?sense_no=136968) | | -| element | 요소 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=095809-1) | | -| footer | 바닥글 | Microsoft | | -| fragment | 프래그먼트 | | | -| frontmatter | 프런트매터 | | | -| header | 머리글 | Microsoft | | -| integration | 통합 | | | -| island | 아일랜드 | 외래어 표기법 | | -| production | 프로덕션 | 외래어 표기법 | | -| release | 릴리스 | 마이크로소프트 | | -| rendering | 렌더링 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=054262-2) | | -| script | 스크립트 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=054948-1) | | -| server-side | 서버 측 | | | -| syntax | 구문 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=057320-1) | | -| tag | 태그 | 외래어 표기법 | | -| template | 템플릿 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=057749-1) | | -| troubleshooting | 문제 해결 | Microsoft | | -| variable | 변수 | [정보통신용어사전](https://terms.tta.or.kr/dictionary/dictionaryView.do?word_seq=059344-1) | | - -출처의 일부는 다음에서 찾을 수 있습니다. - -- 외래어 표기법: 국립국어원의 [외래어 표기법](https://kornorms.korean.go.kr/example/exampleList.do)에서 검색할 수 있습니다. - -- Microsoft: [Microsoft Terminology Search](https://msit.powerbi.com/view?r=eyJrIjoiODJmYjU4Y2YtM2M0ZC00YzYxLWE1YTktNzFjYmYxNTAxNjQ0IiwidCI6IjcyZjk4OGJmLTg2ZjEtNDFhZi05MWFiLTJkN2NkMDExZGI0NyIsImMiOjV9)에서 검색할 수 있습니다. - diff --git a/src/i18n/ko/docsearch.ts b/src/i18n/ko/docsearch.ts deleted file mode 100644 index 2d2b28c8a..000000000 --- a/src/i18n/ko/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: '검색', - placeholder: '검색어 입력', - shortcutLabel: '/ 키를 눌러 검색을 시작하세요.', - resultsFooterLede: 'Astro 통합 또는 테마를 찾고 있나요? 도움이 더 필요한가요?', - resultsFooterIntegrations: 'Astro 통합 디렉터리', - resultsFooterThemes: 'Astro 테마 쇼케이스', - resultsFooterDiscord: 'Discord에 참여하기', - modal: {}, -}); diff --git a/src/i18n/ko/nav.ts b/src/i18n/ko/nav.ts deleted file mode 100644 index e00750152..000000000 --- a/src/i18n/ko/nav.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: '시작하기', - 'getting-started': '개요', - install: '설치', - 'editor-setup': '편집기 설정', - 'guides/upgrade-to/v3': 'v3로 업그레이드', - - coreConcepts: '핵심 개념', - 'concepts/why-astro': '왜 Astro인가?', - 'concepts/islands': 'Astro 아일랜드', - - tutorials: '튜토리얼', - 'blog-tutorial': '블로그 만들기', - 'add-collections-tutorial': '콘텐츠 컬렉션 사용하기', - 'add-transitions-tutorial': 'View Transitions 사용하기', - - basics: '기본', - 'core-concepts/project-structure': '프로젝트 구조', - 'core-concepts/astro-components': '컴포넌트', - 'core-concepts/astro-pages': '페이지', - 'core-concepts/layouts': '레이아웃', - 'core-concepts/astro-syntax': 'Astro 템플릿 구문', - 'core-concepts/rendering-modes': '렌더링 모드', - - builtins: '내장 기능', - 'guides/content-collections': '콘텐츠 컬렉션', - 'guides/view-transitions': 'View Transitions', - 'guides/prefetch': '프리페치', - - addons: '애드온', - 'guides/integrations-guide': '통합 추가', - 'core-concepts/framework-components': 'UI 프레임워크', - 'guides/server-side-rendering': '서버 측 렌더링 (SSR)', - - examples: '레시피', - 'guides/migrate-to-astro': 'Astro로 전환', - 'guides/cms': 'CMS 연결', - 'guides/backend': '백엔드 서비스 추가', - 'guides/deploy': '사이트 배포', - 'guides/recipes': '더 많은 레시피', - - features: '안내서', - 'core-concepts/routing': '라우팅', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/client-side-scripts': '스크립트 & 이벤트 처리', - 'guides/styling': 'CSS & 스타일링', - 'guides/images': '이미지', - 'guides/fonts': '글꼴', - 'guides/imports': '가져오기', - 'core-concepts/endpoints': '엔드포인트', - 'guides/data-fetching': '데이터 페칭', - 'guides/internationalization': '국제화', - 'guides/middleware': '미들웨어', - 'guides/testing': '테스팅', - 'guides/troubleshooting': '문제 해결', - - configuration: '구성', - 'guides/configuring-astro': 'Astro 구성 파일', - 'guides/typescript': 'TypeScript', - 'guides/aliases': '가져오기 별칭', - 'guides/environment-variables': '환경 변수', - - reference: '참조', - 'reference/configuration-reference': '구성', - 'reference/api-reference': '런타임 API', - 'reference/integrations-reference': '통합 API', - 'reference/adapter-reference': '어댑터 API', - 'reference/image-service-reference': '이미지 서비스 API', - 'reference/dev-overlay-plugin-reference': '개발 오버레이 플러그인 API', - 'reference/directives-reference': '템플릿 지시어', - 'reference/cli-reference': 'Astro CLI', - 'reference/error-reference': '오류 참조', - 'guides/publish-to-npm': 'NPM 패키지 형식', -}); diff --git a/src/i18n/ko/ui.ts b/src/i18n/ko/ui.ts deleted file mode 100644 index d3e29ba95..000000000 --- a/src/i18n/ko/ui.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': '콘텐츠로 이동', - 'a11y.sectionLink': '섹션 제목: ', - 'navbar.a11yTitle': '탐색 메뉴', - // Site settings - 'site.title': 'Astro 문서', - 'site.description': '더 적은 클라이언트 측 JavaScript로 더 빠른 웹사이트를 구축하세요.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - '오른쪽 전경에 보라색 토성과 같은 행성이 떠 있는 별이 빛나는 넓은 우주에 있는 Astro 로고', - // Left Sidebar - 'leftSidebar.a11yTitle': '왼쪽 사이드바', - 'leftSidebar.learnTab': '배우기', - 'leftSidebar.referenceTab': '참조', - 'leftSidebar.viewInEnglish': '영어로 보기', - 'leftSidebar.sponsoredBy': '후원', - // Right Sidebar - 'rightSidebar.a11yTitle': '오른쪽 사이드바', - 'rightSidebar.onThisPage': '목차', - 'rightSidebar.overview': '개요', - 'rightSidebar.community': '커뮤니티', - 'rightSidebar.joinDiscord': 'Discord', - 'rightSidebar.readBlog': '블로그', - 'rightSidebar.openCollective': 'Open Collective', - 'rightSidebar.contribute': '기여하기', - 'rightSidebar.contributorGuides': '기여자를 위한 안내서', - 'rightSidebar.editPage': '페이지 수정', - 'rightSidebar.translatePage': '이 페이지 번역', - 'rightSidebar.github': 'GitHub에서 Astro 문서 보기', - // Footer - 'footer.privacyPolicy': '개인 정보 정책', - // `` acessibility labels - 'themeToggle.useLight': '밝은 테마', - 'themeToggle.useDark': '어두운 테마', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': '다음 페이지', - 'articleNav.prevPage': '뒤로', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Added in:', - 'since.new': 'New', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': '자동 CLI', - 'install.manualTab': '수동 설치', - // `` vocabulary - 'deploy.sectionTitle': '배포 안내서', - 'deploy.altSectionTitle': '더 많은 배포 안내서', - 'deploy.filterLabel': '배포 타입에 따라 분류', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Static', - // CMS Guides vocabulary - 'cms.navTitle': '더 많은 CMS 안내서', - // Migration Guides vocabulary - 'migration.navTitle': '더 많은 전환 안내서', - // Recipes vocabulary - 'recipes.navTitle': '더 많은 레시피', - // `` vocabulary - 'recipesLink.singular': '관련 레시피:', - 'recipesLink.plural': '관련 레시피', - // `` fallback text - 'contributors.seeAll': '모든 기여자', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - '이 페이지는 아직 한글로 번역되지 않았으므로 영어 버전의 페이지를 보게 됩니다. 번역에 참여해주세요.', - 'fallbackContent.linkText': '번역에 참여하는 방법', - // 404 Page - '404.title': '찾을 수 없음', - '404.content': '이 페이지는 우리 태양계에 존재하지 않습니다.', - '404.linkText': '홈페이지로 이동', - // Aside component default labels - 'aside.note': '참고', - 'aside.tip': '팁', - 'aside.caution': '경고', - 'aside.danger': '주의', - // `` vocabulary - 'languageSelect.label': '언어 선택', - // Integrations vocabulary - 'integrations.changelog': '변경 로그', - 'integrations.footerTitle': '더 많은 통합', - 'integrations.renderers': 'UI 프레임워크', - 'integrations.adapters': 'SSR 어댑터', - 'integrations.others': '기타', - // Checklist component - 'checklist.or': '또는', - // Multiple Choice component - 'multipleChoice.defaultCorrect': '정확해요!', - 'multipleChoice.defaultIncorrect': '다시 선택하세요!', - 'multipleChoice.submitLabel': '제출', - // Tutorial Progress - 'progress.todo': '수행할 작업', - 'progress.done': '완료', - // Tutorial Navigation - 'tutorial.trackerLabel': '튜토리얼 진행도', - 'tutorial.unit': '학습 단위', - // Tutorial - 'tutorial.getReady': '요구 사항', - // Feedback Fish widget - 'feedback.button': '새로운 의견이 있으신가요?', - 'feedback.a11yLabel': '피드백 양식', - 'feedback.formTitle': '여러분의 생각을 들려주세요!', - 'feedback.categoryGroupLabel': '어떤 종류의 의견인가요?', - 'feedback.issue': '문제 보고', - 'feedback.createIssue': 'GitHub Issue 생성', - 'feedback.idea': '새로운 아이디어', - 'feedback.other': '기타', - 'feedback.messageA11yLabel': '전달할 생각', - 'feedback.placeholder': '어떤 생각을 우리에게 전달하고 싶나요?', - 'feedback.submit': '제출', - 'feedback.close': '피드백 양식 닫기', - 'feedback.success': '여러분의 생각을 들려주셔서 감사합니다!', - // `` component - 'fileTree.directoryLabel': '디렉터리', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': '터미널 창', - 'expressiveCode.copyButtonTooltip': '클립보드로 복사', - 'expressiveCode.copyButtonCopied': '복사 완료!', - // Backend Guides vocabulary - 'backend.navTitle': '더 많은 백엔드 서비스 안내서', - // Stubs vocabulary - 'stub.title': '이 게시물을 완성하는데 도움을 주세요!', - 'stub.subtitle': '이 게시물은 아직 작성 중입니다.', - 'stub.description.migration': - '해당 기술에서 Astro로 전환하는 데 도움이 되는 글, 비디오 등 다양한 자료를 공유하고 싶으신가요?', - 'stub.description.cms': 'Astro에서 이 CMS를 사용하는 방법에 대해 잘 알고 계신가요?', - 'stub.description.backend': - 'Astro에서 이 백엔드 서비스를 사용하는 방법에 대해 더 잘 알고 계신가요?', -}); diff --git a/src/i18n/languages.ts b/src/i18n/languages.ts deleted file mode 100644 index 9d9d3805a..000000000 --- a/src/i18n/languages.ts +++ /dev/null @@ -1,30 +0,0 @@ -export const allLanguages = { - en: 'English', - de: 'Deutsch', - 'pt-br': 'Português do Brasil', - es: 'Español', - 'zh-cn': '简体中文', - 'zh-tw': '正體中文', - fr: 'Français', - hi: 'हिन्दी', - ar: 'العربية', - ja: '日本語', - ko: '한국어', - pl: 'Polski', - ru: 'Русский', - it: 'Italiano', -} as const; - -// Build for two languages only to speed up Astro's smoke tests -const twoLanguages = { - en: 'English', - ko: '한국어', -} as const; - -/** - * Map of language codes to a written out language name. - * Used to populate the language switcher in the navbar. - */ -export default import.meta.env?.PUBLIC_TWO_LANG ? twoLanguages : allLanguages; - -export const rtlLanguages = new Set(['ar']); diff --git a/src/i18n/pl/docsearch.ts b/src/i18n/pl/docsearch.ts deleted file mode 100644 index a4d798999..000000000 --- a/src/i18n/pl/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Szukaj', - placeholder: 'Wyszukaj w dokumentacji', - shortcutLabel: 'Naciśnij klawisz / aby wyszukać', - resultsFooterLede: 'Szukasz integracji lub motywu Astro? Potrzebujesz pomocy?', - resultsFooterIntegrations: 'Katalog integracji Astro', - resultsFooterThemes: 'Katalog motywów Astro', - resultsFooterDiscord: 'Dołącz do naszego Discorda', - modal: {}, -}); diff --git a/src/i18n/pl/nav.ts b/src/i18n/pl/nav.ts deleted file mode 100644 index c82675fe5..000000000 --- a/src/i18n/pl/nav.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: 'Zacznij tutaj', - 'getting-started': 'Wprowadzenie', - install: 'Instalacja', - 'editor-setup': 'Konfiguracja edytora', - 'guides/migrate-to-astro': 'Migracja do Astro', - 'guides/upgrade-to/v3': 'Aktualizacja do Astro 3.0', - //migrate: 'Przewodnik migracji', - tutorials: 'Samouczki', - 'blog-tutorial': 'Zbuduj bloga', - coreConcepts: 'Podstawowe pojęcia', - 'concepts/why-astro': 'Dlaczego Astro?', - 'concepts/islands': 'Wyspy Astro', - basics: 'Podstawy', - 'core-concepts/project-structure': 'Struktura projektu', - 'core-concepts/astro-components': 'Komponenty Astro', - 'core-concepts/astro-pages': 'Strony', - 'core-concepts/layouts': 'Układy', - 'guides/markdown-content': 'Markdown i MDX', - 'core-concepts/routing': 'Routowanie', - 'core-concepts/endpoints': 'Endpointy', - 'guides/deploy': 'Wdrażanie', - features: 'Przewodniki', - 'guides/styling': 'Stylowanie i CSS', - 'core-concepts/framework-components': 'Frameworki UI', - 'guides/imports': 'Importowanie', - 'guides/integrations-guide': 'Integracje', - 'guides/server-side-rendering': 'Renderowanie po stronie serwera (SSR)', - 'guides/data-fetching': 'Pobieranie danych', - 'guides/publish-to-npm': 'Publikowanie na NPM', - // 'core-concepts/sharing-state': 'Dzielenie stanu', - // 'guides/rss': 'RSS', - 'guides/troubleshooting': 'Rozwiązywanie problemów', - 'guides/cms': 'Łączenie z CMS', - 'guides/images': 'Obrazy', - // 'guides/fonts': 'Czcionki', - 'guides/testing': 'Testowanie', - 'guides/client-side-scripts': 'Skrypty i zdarzenia', - configuration: 'Konfiguracja', - 'guides/configuring-astro': 'Plik konfiguracyjny Astro', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'Aliasy importowania', - 'guides/environment-variables': 'Zmienne środowiskowe', - reference: 'Referencja', - 'reference/directives-reference': 'Dyrektywy szablonów', - 'reference/adapter-reference': 'API adapterów', - 'reference/integrations-reference': 'API integracji', - 'reference/cli-reference': 'Interfejs linii poleceń', - 'reference/api-reference': 'API runtime', - 'reference/configuration-reference': 'Konfiguracja', - 'reference/error-reference': 'Referencja błędów', -}); diff --git a/src/i18n/pl/ui.ts b/src/i18n/pl/ui.ts deleted file mode 100644 index 58465cd23..000000000 --- a/src/i18n/pl/ui.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'Przejdź do treści', - 'a11y.sectionLink': 'Dział zatytułowany', - 'navbar.a11yTitle': 'Góra', - // Site settings - 'site.title': 'Dokumentacja Astro', - 'site.description': - 'Buduj szybsze strony internetowe z mniejszą ilością JavaScript po stronie klienta.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'logo Astro na rozgwieżdżonej przestrzeni kosmicznej, z purpurową, nasyconą planetą unoszącą się na prawym pierwszym planie', - // Left Sidebar - 'leftSidebar.a11yTitle': 'Główny', - 'leftSidebar.learnTab': 'Dowiedz się', - 'leftSidebar.referenceTab': 'Referencje', - 'leftSidebar.viewInEnglish': 'Zobacz w języku angielskim', - 'leftSidebar.sponsoredBy': 'Sponsorowane przez', - // Right Sidebar - 'rightSidebar.a11yTitle': 'Poboczny', - 'rightSidebar.onThisPage': 'Na tej stronie', - 'rightSidebar.overview': 'Przegląd', - 'rightSidebar.community': 'Społeczność', - 'rightSidebar.joinDiscord': 'Dołącz do naszego Discorda', - 'rightSidebar.readBlog': 'Przeczytaj nasze posty na blogu', - 'rightSidebar.openCollective': 'Wesprzyj nas na Open Collective', - 'rightSidebar.contribute': 'Pomóż nam', - 'rightSidebar.editPage': 'Edytuj tę stronę', - 'rightSidebar.translatePage': 'Przetłumacz tę stronę', - 'rightSidebar.github': 'Dokumentacja Astro na GitHubie', - // Footer - 'footer.privacyPolicy': 'Polityka prywatności', - // `` acessibility labels - 'themeToggle.useLight': 'Użyj jasnego motywu', - 'themeToggle.useDark': 'Użyj ciemnego motywu', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Następna strona', - 'articleNav.prevPage': 'Poprzednia strona', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Dodane w:', - 'since.new': 'Nowe', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': 'Automatyczne CLI', - 'install.manualTab': 'Ręczna instalacja', - // `` vocabulary - 'deploy.sectionTitle': 'Poradnik wdrażania', - 'deploy.altSectionTitle': 'Więcej poradników wdrażania', - 'deploy.filterLabel': 'Filtruj po typie wdrażania', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Statyczne', - // CMS Guides vocabulary - 'cms.navTitle': 'Więcej poradników CMS', - // Migration Guides vocabulary - 'migration.navTitle': 'Więcej poradników migracji', - // `` fallback text - 'contributors.seeAll': 'Zobacz wszystkich współtwórców', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'Ta strona nie jest jeszcze dostępna w Twoim języku, więc pokazujemy Ci wersję angielską. Możesz pomóc tłumacząc ją!', - 'fallbackContent.linkText': 'Zobacz instrukcje tłumaczenia', - // 404 Page - '404.title': 'Nie znaleziono strony', - '404.content': 'Ta strona nie znajduje się w naszym układzie słonecznym.', - '404.linkText': 'Zabierz mnie do domu', - // Aside component default labels - 'aside.note': 'Notatka', - 'aside.tip': 'Wskazówka', - 'aside.caution': 'Uwaga', - 'aside.danger': 'Zagrożenie', - // Integrations vocabulary - 'integrations.changelog': 'Lista zmian', - 'integrations.footerTitle': 'Więcej integracji', - 'integrations.renderers': 'Frameworki UI', - 'integrations.adapters': 'Adaptery SSR', - 'integrations.others': 'Inne', - // Checklist component - 'checklist.or': 'lub', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Poprawnie!', - 'multipleChoice.defaultIncorrect': 'Spróbuj ponownie!', - 'multipleChoice.submitLabel': 'Wyślij', - // Tutorial Progress - 'progress.todo': 'Do zrobienia', - 'progress.done': 'Ukończone', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Postęp w tutorialu', - 'tutorial.unit': 'Jednostka', - // Tutorial - 'tutorial.getReady': 'Przygotuj się na…', - // Feedback Fish widget - 'feedback.button': 'Przekaż nam opinię', - 'feedback.a11yLabel': 'Formularz opinii', - 'feedback.formTitle': 'Czym chcesz się podzielić?', - 'feedback.categoryGroupLabel': 'Wybierz kategorię opinii', - 'feedback.issue': 'Problem', - 'feedback.idea': 'Pomysł', - 'feedback.other': 'Inne', - 'feedback.messageA11yLabel': 'Wiadomość', - 'feedback.placeholder': 'Co chciałbyś żebyśmy wiedzieli?', - 'feedback.submit': 'Wyślij feedback', - 'feedback.close': 'Zamknij formularz opinii', - // `` component - 'fileTree.directoryLabel': 'Folder', -}); diff --git a/src/i18n/pt-br/README.md b/src/i18n/pt-br/README.md deleted file mode 100644 index 1aa8be875..000000000 --- a/src/i18n/pt-br/README.md +++ /dev/null @@ -1,146 +0,0 @@ -# Guia PT-BR de Tradução do Astro - -Este guia foi feito pelo core maintainer [@Yan-Thomas](https://github.com/Yan-Thomas) para auxiliar contribuidores dessa tradução. Sinta-se livre para se juntar a nós nosso [grupo do Discord](https://astro.build/chat) para fazer perguntas, sugestões, etc. - -## Princípios da tradução - -- **Manter a intenção do escritor original:** Ao máximo possível, adaptar frases de forma com que o seu tom e direcionamento se alinhem com o que foi escrito na versão inglesa. Na documentação do Astro temos vários exemplos de frases com uma tonalidade amigável e divertida para tornar a leitura um pouco mais “humana”, e trazer isso à versão brasileira é algo importante. - -- **Priorizar a fácil compreensão:** Em contrapartida ao primeiro princípio, adaptar um texto para outra língua não é fácil, e muitas vezes precisamos negociar entre uma tradução fiel e uma que seja facilmente compreensível. Portanto, às vezes se torna necessário omitir algum termo e substituí-lo por sua explicação, por exemplo. Também há uma preocupação no vocabulário utilizado, que deve manter-se o mais simples e conciso possível, mantendo distância de uma “verborragia não ortodoxa”. Tradução, assim como a produção de filmes baseados em livros, é um processo de adaptação e é nada mais do que esperado que mudanças ocorram ao texto original quando necessário. - -- **Inspirar-se em outras traduções relevantes:** É valioso manter-se atento em outras traduções e se basear nelas. Isso é especialmente importante quando estamos traduzindo termos, pois precisamos tomar uma decisão informada sobre o quão fácil é compreender um termo traduzido, e se ao menos, esse termo já foi traduzido da mesma forma anteriormente. Visitar a documentação técnica traduzida de algumas tecnologias como [TypeScript](https://www.typescriptlang.org/pt/docs/), [Vue.js](https://pt.vuejs.org/guide/introduction.html) e a [MDN](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript) em português são ótimas fontes para tomar esse tipo de decisão. Também é super válido conferir blogs brasileiros no assunto que está sendo traduzido e ver como o escritor lida com os jargões e outros termos. - - -## Padrões - -Para manter uma tradução concisa e consistente, alguns padrões são recomendados: - -### Links - -Links para páginas externas, caso possuam versão em português, como os diversos links da MDN, devem ter sua URL atualizada para ir diretamente na versão em português. Caso contrário, se mantém a URL para a página em inglês. Caso o link se referia a um título da página que não existe na tradução, opte pelo link original. - -Já links a páginas da própria documentação do Astro devem ter “/en” substituído por “/pt-BR” em todos os casos. Inclusive, links que se encaminham a um título específico também precisam ter seus IDs automáticos substituídos pela versão em português. Para obter o ID específico de um cabeçalho da página, clique no link de navegação na barra lateral direita para o título específico e então a URL da página terá o ID que você está procurando por. - -Caso a página que o link leva ainda não tenha sido traduzida, apenas não modifique o ID de cabeçalho (caso possua). Quando esta página for traduzida, o sistema de CI irá notificar que os links em questão estão quebrados, e caso você seja a pessoa traduzindo uma página que foi linkada anteriormente, adicione essas modificações as outras páginas como parte do seu PR. - -Exemplo: -```md -⚙️ Our [Installation Guide](/en/install/auto/) -``` - -Deve ser traduzido como: -```md -⚙️ Nosso [Guia de Instalação](/pt-BR/install/auto/) -``` - - -### Imagens - -Imagens devem ser mantidas em sua URL original com texto em inglês, porém entre os colchetes, que representam o texto alternativo da imagem, uma descrição deve ser adicionada para a imagem ser explicativa a usuários de leitores de tela. - -Exemplo: -```md -![diagram](https://res.cloudinary.com/wedding-website/image/upload/v1596766231/islands-architecture-1.png) -``` - -Deve ser traduzido como: -```md -![Diagrama da estrutura de uma arquitetura em ilha, com seções de conteúdo estático e seções em destaque representando os componentes que serão hidratados, sendo eles o cabeçalho, o carrossel de imagens e uma barra lateral](https://res.cloudinary.com/wedding-website/image/upload/v1596766231/islands-architecture-1.png) -``` - -### Código - -Comentários, componentes de exemplo, variáveis, caminhos de arquivos e outros devem ser traduzidos caso não sejam parte da API do Astro, JavaScript ou outras bibliotecas. Isso tem a intenção de tornar os códigos de exemplo o menos restritivo possível para leitores com menor proficiência em inglês, levando em conta que parte fundamental de entender algumas páginas é ver os códigos de exemplo e os comentários que vem junto. - -Exemplo: -```astro ---- -// Example: src/pages/index.astro -import MySiteLayout from '../layouts/MySiteLayout.astro'; ---- - -

        My page content, wrapped in a layout!

        -
        -``` - -Deve ser traduzido como: -```astro ---- -// Exemplo: src/pages/index.astro -import LayoutDoMeuSite from '../layouts/LayoutDoMeuSite.astro'; ---- - -

        Conteúdo da minha página, envolto em um layout!

        -
        -``` - -## Glossário - -Tabela com a versão original e tradução (se houver) para diversos termos encontrados na documentação: - -| Original | Tradução | -| ----------------------------------- | --------------------------------------- | -| build/build time/build process | build/processo de build/tempo de build | -| client side script | script no lado do cliente | -| server side rendering (SSR) | renderização no lado do servidor (SSR) | -| client side rendering | renderização no lado do cliente | -| template | \- | -| bundle/bundling | \- | -| CSS Modules | Módulos CSS | -| hoisting/hoisted | \- | -| playgrounds | \- | -| runtime | \- | -| run/running | executar/executando | -| Partial Hydration | Hidratação Parcial | -| frontend/backend | \- | -| Islands Architecture | Arquitetura em Ilhas | -| Intellisense | \- | -| UI frameworks | frameworks de UI | -| Integrations | Integrações | -| built-in | Integrado | -| assets | \- | -| static | estático | -| dynamic | dinâmico | -| reference | referência | -| hook | \- | -| deploy | \- | -| NPM packages | pacotes do NPM | -| project structure | estrutura de projetos | -| layout | \- | -| Data Fetching | Busca de Dados | -| third-party | de terceiros | -| directive | diretiva | -| adapter | adaptador | -| CLI | interface de linha de comando | -| helpers | \- | -| API endpoints | endpoints de API | -| RSS feeds | feeds RSS | -| package manager | gerenciador de pacotes | -| stylesheet | folha de estilos | -| deprecated | descontinuado | -| entrypoint | \- | -| demo | demonstração | -| namespace | \- | -| log | \- | -| serverless | \- | -| output | saída/resultado final | -| routing | roteamento | -| absolute url path | URL de caminho absoluto | -| top-level | \- | -| debugging | depuração | -| setup | configuração/instalação | -| sitemap | \- | -| syntax highlight/syntax highlighter | \- | -| query | \- | -| frontmatter | \- | -| string | ? | -| streaming | \- | -| tag/tags | \- | -| middleware | \- | -| flag | \- | -| opt-in | optar em/optar por | -| opt-out | optar em não/optar por sair | -| metadata | metadados | -| cheatsheet | \- | -| callback | \- | -| pipeline | \- | \ No newline at end of file diff --git a/src/i18n/pt-br/docsearch.ts b/src/i18n/pt-br/docsearch.ts deleted file mode 100644 index f52363ea0..000000000 --- a/src/i18n/pt-br/docsearch.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Pesquisar', - placeholder: 'Pesquisar pela documentação', - shortcutLabel: 'Pressione / para pesquisar', - resultsFooterLede: 'Procurando por uma integração ou tema Astro? Precisa de mais ajuda?', - resultsFooterIntegrations: 'Diretório de integrações Astro', - resultsFooterThemes: 'Vitrine de temas Astro', - resultsFooterDiscord: 'Junte-se a nós no Discord', - modal: {}, -}); diff --git a/src/i18n/pt-br/nav.ts b/src/i18n/pt-br/nav.ts deleted file mode 100644 index c3e51b35c..000000000 --- a/src/i18n/pt-br/nav.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: 'Comece Aqui', - 'getting-started': 'Introdução', - install: 'Instalação', - 'editor-setup': 'Configuração do Editor', - 'guides/upgrade-to/v3': 'Atualize para a v3', - coreConcepts: 'Principais Conceitos', - 'concepts/why-astro': 'Por que Astro?', - 'concepts/islands': 'Ilhas Astro', - - tutorials: 'Tutoriais', - 'blog-tutorial': 'Construa um Blog', - - basics: 'Fundamentos', - - 'core-concepts/project-structure': 'Estrutura de Projetos', - 'core-concepts/astro-components': 'Componentes', - 'core-concepts/astro-pages': 'Páginas', - 'core-concepts/layouts': 'Layouts', - - examples: 'Receitas', - 'guides/migrate-to-astro': 'Migre para o Astro', - 'guides/cms': 'Conecte um CMS', - 'guides/backend': 'Adicione serviços de backend', - 'guides/integrations-guide': 'Adicione integrações', - 'guides/deploy': 'Faça deploy do seu site', - 'guides/recipes': 'Mais Receitas', - - features: 'Guias', - 'core-concepts/astro-syntax': 'Sintaxe do Astro', - 'core-concepts/framework-components': 'Frameworks de UI', - 'core-concepts/routing': 'Roteamento', - 'guides/markdown-content': 'Markdown e MDX', - 'guides/content-collections': 'Coleções de Conteúdo', - 'guides/client-side-scripts': 'Scripts & Manipulação de Eventos', - 'guides/styling': 'Estilização e CSS', - 'guides/images': 'Imagens', - 'guides/fonts': 'Fontes', - 'guides/imports': 'Importações', - 'guides/server-side-rendering': 'Renderização no lado do Servidor (SSR)', - 'core-concepts/endpoints': 'Endpoints', - 'guides/data-fetching': 'Busca de Dados', - 'guides/middleware': 'Middleware', - 'guides/testing': 'Testes', - 'guides/view-transitions': 'Transições de Visualização', - 'guides/troubleshooting': 'Solução de Problemas', - - configuration: 'Configuração', - 'guides/configuring-astro': 'O Arquivo de Configuração Astro', - 'guides/typescript': 'TypeScript', - 'guides/aliases': 'Atalhos de Importação', - 'guides/environment-variables': 'Variáveis de Ambiente', - - reference: 'Referência', - 'reference/configuration-reference': 'Configuração', - 'reference/api-reference': 'API de Runtime', - 'reference/integrations-reference': 'API de Integrações', - 'reference/adapter-reference': 'API de Adaptadores', - 'reference/image-service-reference': 'API de Serviço de Imagem', - 'reference/directives-reference': 'Diretivas de Template', - 'reference/cli-reference': 'A CLI do Astro', - 'reference/error-reference': 'Referência de Erros', - 'guides/publish-to-npm': 'Publique no NPM', -}); diff --git a/src/i18n/pt-br/ui.ts b/src/i18n/pt-br/ui.ts deleted file mode 100644 index 43b4c5edc..000000000 --- a/src/i18n/pt-br/ui.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': 'Pular para o Conteúdo', - 'a11y.sectionLink': 'Seção intitulada', - 'navbar.a11yTitle': 'Superior', - // Site settings - 'site.title': 'Documentação do Astro', - 'site.description': 'Construa websites mais rápidos com menos JavaScript no lado do cliente.', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': - 'a logo do astro em um estrelado pedaço do espaço, com um planeta roxo parecido com Saturno flutuando à direita', - // Left Sidebar - 'leftSidebar.a11yTitle': 'Primária', - 'leftSidebar.learnTab': 'Aprenda', - 'leftSidebar.referenceTab': 'Referência', - 'leftSidebar.viewInEnglish': 'Veja em Inglês', - 'leftSidebar.sponsoredBy': 'Patrocinado por', - // Right Sidebar - 'rightSidebar.onThisPage': 'Nesta página', - 'rightSidebar.overview': 'Visão geral', - 'rightSidebar.community': 'Comunidade', - 'rightSidebar.joinDiscord': 'Junte-se a nós no Discord', - 'rightSidebar.readBlog': 'Leia nossas postagens no blog', - 'rightSidebar.openCollective': 'Nossa Open Collective', - 'rightSidebar.contribute': 'Contribua', - 'rightSidebar.contributorGuides': 'Guias de Contribuidor', - 'rightSidebar.editPage': 'Edite esta página', - 'rightSidebar.translatePage': 'Traduza esta página', - 'rightSidebar.a11yTitle': 'Secundária', - 'rightSidebar.github': 'Documentação do Astro no GitHub', - // Footer - 'footer.privacyPolicy': 'Política de Privacidade', - // `` acessibility labels - 'themeToggle.useLight': 'Usar tema claro', - 'themeToggle.useDark': 'Usar tema escuro', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': 'Próxima página', - 'articleNav.prevPage': 'Página anterior', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': 'Adicionado em:', - 'since.new': 'Novo', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': 'Interface de Linha de Comando Automática', - 'install.manualTab': 'Instalação Manual', - // `` vocabulary - 'deploy.sectionTitle': 'Guias de Deploy', - 'deploy.altSectionTitle': 'Mais Guias de Deploy', - 'deploy.filterLabel': 'Filtrar por tipo de deploy', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Estático', - // CMS Guides vocabulary - 'cms.navTitle': 'Mais guias de CMS', - // Migration Guides vocabulary - 'migration.navTitle': 'Mais guias de migração', - // Recipes vocabulary - 'recipes.navTitle': 'Mais receitas', - // `` vocabulary - 'recipesLink.singular': 'Receita relacionada:', - 'recipesLink.plural': 'Receitas relacionadas', - // `` fallback text - 'contributors.seeAll': 'Veja todos os contribuidores', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': - 'Esta página ainda não está disponível em sua língua, portanto estamos te mostrando a versão em Inglês. Você pode nos ajudar a traduzindo!', - 'fallbackContent.linkText': 'Aprenda mais sobre como você pode contribuir', - // 404 Page - '404.title': 'Não encontrado', - '404.content': 'Esta página não está no nosso sistema solar.', - '404.linkText': 'Me leve para casa.', - // Aside component default labels - 'aside.note': 'Nota', - 'aside.tip': 'Dica', - 'aside.caution': 'Cuidado', - 'aside.danger': 'Perigo', - // `` vocabulary - 'languageSelect.label': 'Selecione a língua', - // Integrations vocabulary - 'integrations.changelog': 'Registro de alterações', - 'integrations.footerTitle': 'Mais Integrações', - 'integrations.renderers': 'Frameworks de UI', - 'integrations.adapters': 'Adaptadores de SSR', - 'integrations.others': 'Outras', - // Checklist component - 'checklist.or': 'ou', - // Multiple Choice component - 'multipleChoice.defaultCorrect': 'Correto!', - 'multipleChoice.defaultIncorrect': 'Tente novamente!', - 'multipleChoice.submitLabel': 'Enviar', - // Tutorial Progress - 'progress.todo': 'A fazer', - 'progress.done': 'Completo', - // Tutorial Navigation - 'tutorial.trackerLabel': 'Progresso do Tutorial', - 'tutorial.unit': 'Unidade', - // Tutorial - 'tutorial.getReady': 'Se prepare para...', - // Feedback Fish widget - 'feedback.button': 'Nos dê feedback', - 'feedback.a11yLabel': 'Formulário de feedback', - 'feedback.formTitle': 'O que passa em sua cabeça?', - 'feedback.categoryGroupLabel': 'Escolha a categoria do feedback', - 'feedback.issue': 'Problema', - 'feedback.createIssue': 'Criar um problema no GitHub', - 'feedback.idea': 'Ideia', - 'feedback.other': 'Outro', - 'feedback.messageA11yLabel': 'Mensagem', - 'feedback.placeholder': 'O que você quer que saibamos?', - 'feedback.submit': 'Enviar feedback', - 'feedback.close': 'Fechar formulário de feedback', - 'feedback.success': 'Obrigado! Nós recebemos seu feedback.', - // `` component - 'fileTree.directoryLabel': 'Diretório', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': 'Janela do terminal', - 'expressiveCode.copyButtonTooltip': 'Copiar para área de transferência', - 'expressiveCode.copyButtonCopied': 'Copiado!', - // Backend Guides vocabulary - 'backend.navTitle': 'Mais guias de serviço de back-end', - // Stubs vocabulary - 'stub.title': 'Expanda este esboço!', - 'stub.subtitle': 'Este guia é um esboço.', - 'stub.description.migration': - 'Quer contribuir para este guia? Tem uma postagem de blog, vídeo ou outro recurso para compartilhar sobre a migração desta tecnologia para o Astro?', - 'stub.description.cms': 'Sabe mais sobre como usar este CMS com Astro?', - 'stub.description.backend': 'Sabe mais sobre como usar este serviço de back-end com o Astro?', -}); diff --git a/src/i18n/ru/docsearch.ts b/src/i18n/ru/docsearch.ts deleted file mode 100644 index 90d62dc81..000000000 --- a/src/i18n/ru/docsearch.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: 'Найти', -}); diff --git a/src/i18n/ru/nav.ts b/src/i18n/ru/nav.ts deleted file mode 100644 index c9e306e8a..000000000 --- a/src/i18n/ru/nav.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - 'concepts/islands': 'Острова', - 'concepts/why-astro': 'Почему Astro', - 'core-concepts/astro-components': 'Astro компоненты', - 'core-concepts/astro-pages': 'Astro страницы', - 'core-concepts/endpoints': 'API роуты', - 'core-concepts/framework-components': 'Компоненты фреймворков', - 'core-concepts/layouts': 'Макеты', - 'core-concepts/project-structure': 'Структура проекта', - 'core-concepts/routing': 'Роутинг', - // 'core-concepts/sharing-state': 'Совместное состояние данных', - 'editor-setup': 'Настройка редактора', - 'guides/aliases': 'Алиасы', - 'guides/configuring-astro': 'Настройка Astro', - 'guides/data-fetching': 'Получение данных', - 'guides/deploy': 'Деплой', - 'guides/environment-variables': 'Переменные окружения', - // 'guides/fonts': 'Шрифты', - 'guides/images': 'Картинки', - 'guides/imports': 'Импорт файлов', - 'guides/integrations-guide': 'Интеграции', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/publish-to-npm': 'Формат npm пакета', - // 'guides/rss': 'RSS', - 'guides/server-side-rendering': 'Server-side Rendering (SSR)', - 'guides/styling': 'CSS & Стилизация', - 'guides/troubleshooting': 'Решение проблем', - 'guides/typescript': 'TypeScript', - 'reference/adapter-reference': 'Adapter API', - 'reference/api-reference': 'Runtime API', - 'reference/cli-reference': 'CLI', - 'reference/configuration-reference': 'Настройка', - 'reference/directives-reference': 'Директивы', - 'reference/integrations-reference': 'API интеграций', - basics: 'Основное', - configuration: 'Настройка', - coreConcepts: 'Ключевые концепции', - features: 'Возможности', - reference: 'Справочник', - startHere: 'Введение', - 'getting-started': 'Начало работы', - install: 'Установка', - 'blog-tutorial': 'Создать блог', - 'guides/backend': 'Услуги бэкенда', - 'guides/client-side-scripts': 'Скрипты и обработка событий', - 'guides/cms': 'Подключение CMS', - // 'guides/content': 'Авторский контент', - 'guides/content-collections': 'Коллекции контента', - 'guides/migrate-to-astro': 'Перейти на Astro', - 'guides/testing': 'Тестирование', - 'guides/upgrade-to/v3': 'Обновление до v3', - 'reference/error-reference': 'Справочник по ошибкам', - tutorials: 'Обучение', - examples: 'Рецепты', - 'guides/recipes': 'Больше рецептов', - 'guides/fonts': 'Шрифты', - 'core-concepts/astro-syntax': 'Синтаксис Astro', -}); diff --git a/src/i18n/ru/ui.ts b/src/i18n/ru/ui.ts deleted file mode 100644 index 20cce7a3b..000000000 --- a/src/i18n/ru/ui.ts +++ /dev/null @@ -1,82 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'rightSidebar.onThisPage': 'На этой странице', - 'aside.note': 'Заметка', - 'aside.tip': 'Подсказка', - 'aside.caution': 'Осторожно', - 'aside.danger': 'Предупреждение', - 'rightSidebar.contribute': 'Помочь', - 'rightSidebar.editPage': 'Редактировать эту страницу', - 'rightSidebar.translatePage': 'Перевести эту страницу', - 'rightSidebar.community': 'Сообщество', - 'rightSidebar.joinDiscord': 'Присоединится к нам в Discord', - 'rightSidebar.readBlog': 'Наш блог', - 'rightSidebar.openCollective': 'Наш Open Collective', - 'articleNav.nextPage': 'Следующая страница', - 'articleNav.prevPage': 'Назад', - 'leftSidebar.learnTab': 'Изучить', - 'leftSidebar.referenceTab': 'Ссылки', - '404.content': 'Эта страница не в нашей солнечной системе.', - '404.linkText': 'Доставь меня домой.', - '404.title': 'Не найдено', - 'a11y.sectionLink': 'Раздел, озаглавленный', - 'a11y.skipLink': 'Перейти к контенту', - 'checklist.or': 'или', - 'cms.navTitle': 'Больше гайдов по CMS', - 'contributors.seeAll': 'Посмотреть всех контрибьюторов', - 'deploy.altSectionTitle': 'Больше гайдов по деплою', - 'deploy.filterLabel': 'Отфильтровать по типу деплоя', - 'deploy.sectionTitle': 'Гайды по деплою', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': 'Static', - 'fallbackContent.linkText': 'Узнать больше о том, как вы можете помочь', - 'fallbackContent.notice': - 'Эта страница ещё не доступна на русском, поэтому вы видите английскую версию. Вы можете помочь перевести её!', - 'feedback.button': 'Оставьте отзыв', - 'feedback.a11yLabel': 'Форма обратной связи', - 'feedback.formTitle': 'Хотите поделиться?', - 'feedback.categoryGroupLabel': 'Выберите тип обратной связи', - 'feedback.issue': 'Проблема', - 'feedback.idea': 'Идея', - 'feedback.other': 'Другое', - 'feedback.messageA11yLabel': 'Сообщение', - 'feedback.placeholder': 'О чём ты хочешь нам рассказать?', - 'feedback.submit': 'Отправить отзыв', - 'feedback.close': 'Закрыть форму обратной связи', - 'fileTree.directoryLabel': 'Директория', - 'footer.privacyPolicy': 'Политика конфиденциальности', - 'install.autoTab': 'Автоматический CLI', - 'install.manualTab': 'Ручная настройка', - 'integrations.adapters': 'SSR адаптеры', - 'integrations.changelog': 'Список изменений', - 'integrations.footerTitle': 'Больше интеграций', - 'integrations.others': 'Другое', - 'integrations.renderers': 'UI фреймворки', - 'leftSidebar.a11yTitle': 'Главное', - 'leftSidebar.sponsoredBy': 'Спонсоры', - 'leftSidebar.viewInEnglish': 'Посмотреть на английском языке', - 'migration.navTitle': 'Больше инструкций по миграции', - 'multipleChoice.defaultCorrect': 'Верно!', - 'multipleChoice.defaultIncorrect': 'Попробуйте ещё раз!', - 'multipleChoice.submitLabel': 'Подтвердить', - 'navbar.a11yTitle': 'Верх', - 'progress.done': 'Готово', - 'progress.todo': 'Что нужно сделать', - 'rightSidebar.a11yTitle': 'Вторичное', - 'rightSidebar.github': 'Документация Astro на GitHub', - 'rightSidebar.overview': 'Обзор', - 'since.addedIn': 'Добавлено в:', - 'since.beta': 'Бета', - 'since.new': 'Новое', - 'site.description': 'Создавайте быстрые сайты с меньшим объёмом клиентского JavaScript.', - 'site.og.imageAlt': - 'логотип astro на звездном просторе космоса с фиолетовой планетой, похожей на Сатурн, плавающей на правом переднем плане', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.title': 'Документация Astro', - 'themeToggle.useDark': 'Использовать тёмную тему', - 'themeToggle.useLight': 'Использовать светлую тему', - 'tutorial.getReady': 'Приготовьтесь к...', - 'tutorial.trackerLabel': 'Трекер обучения', - 'tutorial.unit': 'Единица', -}); diff --git a/src/i18n/translation-checkers.ts b/src/i18n/translation-checkers.ts deleted file mode 100644 index 1a33531c7..000000000 --- a/src/i18n/translation-checkers.ts +++ /dev/null @@ -1,53 +0,0 @@ -import type { ModalTranslations } from '@docsearch/react'; -import enNav from './en/nav'; -import type enUI from './en/ui'; -import type { allLanguages } from './languages'; - -export type UIDictionaryKeys = keyof typeof enUI; -export type UIDict = Partial; -export type UILanguageKeys = keyof typeof allLanguages; - -/** Helper to type check a dictionary of UI string translations. */ -export const UIDictionary = (dict: Partial) => dict; - -type NavDictionaryKeys = (typeof enNav)[number]['key']; -export type NavDict = Array< - { - text: string; - key: NavDictionaryKeys; - labelIsTranslated: boolean; - isFallback?: boolean; - } & ({ slug: string } | { header: true; type: 'learn' | 'api' }) ->; - -/** - * Helper to type check and process a dictionary of navigation menu translations. - * Converts it to an array matching the English menu’s sorting with English items used as fallback entries. - */ -export const NavDictionary = (dict: Partial>) => { - const orderedDictionary: NavDict = []; - for (const enEntry of enNav) { - const text = dict[enEntry.key] || enEntry.text; - orderedDictionary.push({ ...enEntry, text, labelIsTranslated: !!dict[enEntry.key] }); - } - return orderedDictionary; -}; - -export interface DocSearchTranslation { - // These two keys are Astro-specific and apply to the search box in the header. - button?: string; - shortcutLabel?: string; - // Astro-specific labels for the custom `resultsFooterComponent`. - resultsFooterLede?: string; - resultsFooterIntegrations?: string; - resultsFooterThemes?: string; - resultsFooterDiscord?: string; - // Search box placeholder text within the DocSearch modal. - placeholder?: string; - // This object follows DocSearch's translation.modal format. - // See: https://docsearch.algolia.com/docs/api/#translations - modal?: ModalTranslations; -} - -/** Helper to type check a dictionary of DocSearch string translations. */ -export const DocSearchDictionary = (dict: DocSearchTranslation) => dict; diff --git a/src/i18n/util.ts b/src/i18n/util.ts deleted file mode 100644 index 07e253c5c..000000000 --- a/src/i18n/util.ts +++ /dev/null @@ -1,70 +0,0 @@ -import type { AstroGlobal } from 'astro'; -import { getLanguageFromURL } from '../util'; -import type { - DocSearchTranslation, - NavDict, - UIDict, - UIDictionaryKeys, - UILanguageKeys, -} from './translation-checkers'; - -/** - * Convert the map of modules returned by `import.meta.globEager` to an object - * mapping the language code from each module’s filepath to the module’s default export. - */ -function mapDefaultExports(modules: Record) { - const exportMap: Record = {}; - for (const [path, module] of Object.entries(modules)) { - const [_dot, lang] = path.split('/'); - exportMap[lang] = module.default; - } - return exportMap; -} - -export const translations = mapDefaultExports( - import.meta.glob('./*/ui.ts', { eager: true }) -); -const docsearchTranslations = mapDefaultExports( - import.meta.glob('./*/docsearch.ts', { eager: true }) -); -export const navTranslations = mapDefaultExports( - import.meta.glob('./*/nav.ts', { eager: true }) -); - -export const fallbackLang = 'en'; - -/** Returns a dictionary of strings for use with DocSearch. */ -export function getDocSearchStrings(Astro: AstroGlobal): DocSearchTranslation { - const lang = getLanguageFromURL(Astro.url.pathname) || fallbackLang; - // A shallow merge is sufficient here as most of the actual fallbacks are provided by DocSearch. - return { ...docsearchTranslations[fallbackLang], ...docsearchTranslations[lang] }; -} - -/** - * Create a helper function for getting translated strings. - * - * Within an Astro component, prefer the `UIString` component, - * which only needs the key as it has access to the global Astro object. - * - * However, you can’t pass an Astro component as a prop to a framework component, - * so this function creates a look-up method to get the string instead: - * - * @example - * --- - * import { useTranslations } from '~/i18n/util'; - * const t = useTranslations(Astro); - * --- - * - */ -export function useTranslations(Astro: Readonly): (key: UIDictionaryKeys) => string { - const lang = getLanguageFromURL(Astro.url.pathname) || 'en'; - return useTranslationsForLang(lang as UILanguageKeys); -} - -export function useTranslationsForLang(lang: UILanguageKeys): (key: UIDictionaryKeys) => string { - return function getTranslation(key: UIDictionaryKeys) { - const str = translations[lang]?.[key] || translations[fallbackLang][key]; - if (str === undefined) throw new Error(`Missing translation for “${key}” in “${lang}”.`); - return str; - }; -} diff --git a/src/i18n/zh-cn/README.md b/src/i18n/zh-cn/README.md deleted file mode 100644 index c48051081..000000000 --- a/src/i18n/zh-cn/README.md +++ /dev/null @@ -1,188 +0,0 @@ -# Astro Docs 中文翻译指南 - -感谢你为 Astro 中文文档做出贡献! -在提交改动之前,请阅读 [i18n 指南](~/../contributor-guides/translating-astro-docs.md),它含有翻译指南、提交流程、审查流程等很多有用的内容。同时也欢迎加入 Astro 的 [Discord 社区](https://astro.build/chat)! -本中文翻译指南是在上述 i18n 指南的基础上针对中文翻译的补充说明,上述指南中已经存在的内容不再赘述。 - -和其他开源项目一样,我们的文档是由很多人自愿参与翻译的,参与翻译的人也会随着时间而变化。这篇翻译指南的目的是保证文档的翻译风格和质量的一致性,使文档读起来更加流畅易懂。 - -本翻译指南部分参照了 [Vue 中文文档指南](https://github.com/vuejs-translations/docs-zh-cn/wiki/%E7%BF%BB%E8%AF%91%E9%A1%BB%E7%9F%A5)。 - -## 用词 - -对于可能不易于理解的翻译,可以在中文翻译后添加英文原文,例如:激活 (hydration)。 - -### 翻译术语表 - -在翻译和审查过程中如果发现了易错译、多处翻译不一致的词,可以讨论并添加到此表中。 - -| 英文原文 | 推荐译法 | 说明 | -| ----------------------- | --------------- | ------------------------------------------------- | -| [access](#access) | 使用 | | -| accessibility | 无障碍 | | -| adapter | 适配器 | | -| announce | 读出 | 描述屏幕阅读器时作为 read out、speak 的近义词翻译 | -| architecture | 架构 | | -| assistive technology | 辅助技术 | | -| component | 组件 | | -| endpoint | 端点 | | -| escape | 转义 | | -| feed | 摘要 | | -| framework | 框架 | | -| frontmatter | *不翻译* | | -| group | 分组 | | -| [hero](#hero) | 主视觉 | 特指页面通常在顶部或首屏的一个区域 | -| [hydration](#hydration) | 激活 | 第一次出现时可以写为 `激活 (hydration)` | -| integration | 集成 | | -| island | 岛屿 / 群岛 | 根据实际情况选择更合适的译法 | -| islands | 群岛 | | -| library | 库 | | -| locale | 区域 / 语言环境 | -| module | 模块 | | -| overrides | 重写 | | -| package | 包 | | -| props | 参数 | Component props | -| server-side rendering | 服务端渲染 | | -| slot | 插槽 | | -| slug | *不翻译* | | - -#### Access - -根据实际情况可以翻译成“使用”而不是“访问”,例: - -> This will give you autocomplete and types when accessing `Astro.props`. - -可以译为:“这样当使用 `Astro.props` 时就会有自动补全和类型提示。” - -#### Hero - -Hero:主视觉、主视觉区 -Hero image:主视觉图 -Hero section:主视觉区、主视觉区域 - -> (web design) An eye-catching, prominent image, used as an over-sized (almost background-like) header. - -—— - -> The term “hero image” in web design refers to a large, attention-grabbing picture with text typically shown in the above-the-fold area of the webpage, directly beneath the website header. - -—— - -> The term “hero” was first used in the world of theater, and it was the prop (it’s usually called the [hero prop](https://en.wikipedia.org/wiki/Theatrical_property)) that is more detailed than usual because it’s meant to be seen or viewed in close range. - -—— - -#### Hydration - -Hydration、hydrate:激活 - -可以根据实际情况酌情在每个页面或每个段落第一次出现的位置写作 `激活 (hydration)`,便于读者理解。 - -Vue 中文文档译为“激活”。 -React 中文文档没有翻译,保持了英文原文。 - -### 中文用词约定 - -| 中文用词 | 说明 | -| -------- | ---------------- | -| 你 | 不建议使用:您 | -| 其他 | 不建议使用:其它 | - -### 前端术语 - -- 原则上,前端专业术语的译法优先参考 MDN 中文译法。 -- 原文中出现的 MDN 文档链接,如果存在对应的中文翻译则转换为 MDN 的中文翻译链接,否则保持 MDN 英文原链接。 - -## 文本格式 - -中文排版格式可以参考[中文文案排版指北](https://github.com/sparanoid/chinese-copywriting-guidelines)、[中文排版需求](https://w3c.github.io/clreq/)等。下述文本格式仅作为参考和建议,并非强制要求。文本格式与此指南完全相符不是审查通过和合并的前提条件。 - -### 标点符号 - -- 逗号、句号、分号、冒号、叹号、问号、顿号,使用全角字符:`,。;:!?、` -- 引号使用全角字符:`“”` 和 `‘’` -- 括号全角字符:`()`。在与英文相邻时可以使用半角字符并在外侧添加空格:` () ` -- 破折号使用:`——` -- 省略号使用:`……` -- 间隔号使用:`·` -- 书名号使用:`《》` 和 `〈〉` - -### 空格的使用 - -- 中文和英文单词之间要有一个空格。如:`中文 English 中文` -- 全角标点符号两边没有空格。如:`中文,中文。“中文”中文。` -- 半角括号内侧没有空格,外侧如果是中文或英文则有一个空格,如果是其他标点符号则没有空格。如:`中文 (中文) 中文,(中文) 中文` -- 中文链接的左右不需要单独添加空格。如:`中文[链接](#foo)中文` -- 结合**加粗**、*斜体*、[链接](#空格的使用)等 Markdown 标记时,空格的用法和上述最终呈现的效果相同,紧挨着 Markdown 标记的空格应该出现在其外部。如: - - ```markdown - 遵守 **JavaScript 编码规范**非常重要 - 遵守 [JavaScript 编码规范](#foo)非常重要 - 更多信息详见*中文 MDN* 的介绍页面。 - 更多信息详见[中文 MDN](#bar) 的介绍页面。 - ``` - -### 加粗和斜体 - -加粗和斜体的左右不需要单独添加空格。如: - -```markdown -Astro 简单**好用**,值得*推荐*。 -``` - -在翻译带有**加粗**和*斜体*的内容时需要注意最终渲染结果是否正确,尤其是在整句加粗或斜体时容易出现渲染错误的情况。 - -出现渲染错误时,可以使用 `` 和 `` 来替代它们对应的 Markdown 标记,保持加粗、斜体的内容与英文原文对应。部分情况下也可以通过移动标点符号的位置来解决渲染错误的问题。添加空格会相对较明显地影响最终页面的显示效果,因此不推荐使用。 - -```markdown -渲染错误:**Astro 简单好用,值得推荐。**它的功能齐全且灵活。 -推荐方法:Astro 简单好用,值得推荐。它的功能齐全且灵活。 -酌情使用:**Astro 简单好用,值得推荐**。它的功能齐全且灵活。 -尽量不用:**Astro 简单好用,值得推荐。** 它的功能齐全且灵活。 - -渲染错误:*Astro 简单好用,值得推荐。*它的功能齐全且灵活。 -推荐方法:Astro 简单好用,值得推荐。它的功能齐全且灵活。 -酌情使用:*Astro 简单好用,值得推荐*。它的功能齐全且灵活。 -尽量不用:*Astro 简单好用,值得推荐。* 它的功能齐全且灵活。 -``` - -> 渲染错误:**Astro 简单好用,值得推荐。**它的功能齐全且灵活。 -> 推荐方法:Astro 简单好用,值得推荐。它的功能齐全且灵活。 -> 酌情使用:**Astro 简单好用,值得推荐**。它的功能齐全且灵活。 -> 尽量不用:**Astro 简单好用,值得推荐。** 它的功能齐全且灵活。 -> -> 渲染错误:*Astro 简单好用,值得推荐。*它的功能齐全且灵活。 -> 推荐方法:Astro 简单好用,值得推荐。它的功能齐全且灵活。 -> 酌情使用:*Astro 简单好用,值得推荐*。它的功能齐全且灵活。 -> 尽量不用:*Astro 简单好用,值得推荐。* 它的功能齐全且灵活。 - -## 代码片段 - -代码片段中的注释通常需要翻译成中文。 -代码片段中的其他部分保持与英文原文一致。 - -## 翻译建议 - -1. 调整语序为中文习惯,例如: - - > So far we've only been binding to simple property keys in our templates. But Vue.js actually supports the full power of JavaScript expressions inside all data bindings. - - 可以译为“目前我们都是只通过模板语法绑定简单的 property 键值,但实际上,Vue.js 完全支持在所有的数据绑定中使用 JavaScript 表达式”。 - -1. 省略部分在外语中仅用于完成句式的词语,例如: - - > When Vue is updating a list of elements rendered with v-for, by default it uses an "in-place patch" strategy. If the order of the data items has changed, instead of moving the DOM elements to match the order of the items, Vue will patch each element in-place and make sure it reflects what should be rendered at that particular index. - - 像 `to match the order of the items` 这样的短语可以在保证语义不变的条件下简化,译为“Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue 不会随之移动 DOM 元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染”。 - -1. 在句子之间补充类似“然而”、“并且”、“即使…也…”这样的关联词,使句子更加连贯,例如: - - > The mustache tag will be replaced with the value of the msg property from the corresponding component instance. It will also be updated whenever the msg property changes. - - 后半句可以译为“只要绑定的组件实例上 msg property 发生改变,插值处的内容就会随之更新”。 - -1. 在尽可能地尊重原版内容的前提下,使读者理解起来更加容易。即,在修缮的同时,要保证译文所传达的内容(而非句式、语法等)是准确可靠的。 - -## 关于本指南 - -本指南并不是一份一成不变的规定,而是一份代表目前中文翻译团队的共识的建议。如果你对本文档中任何地方有意见和建议,可以提出 Discussion 或 Pull request,与其他翻译人员讨论、修改。 diff --git a/src/i18n/zh-cn/docsearch.ts b/src/i18n/zh-cn/docsearch.ts deleted file mode 100644 index f7d389236..000000000 --- a/src/i18n/zh-cn/docsearch.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: '搜索', - placeholder: '搜索文档...', - shortcutLabel: '按下 / 来搜索文档', - resultsFooterLede: '正在寻找 Astro 集成或主题?需要更多帮助吗?', - resultsFooterIntegrations: 'Astro 集成目录', - resultsFooterThemes: 'Astro 主题展示', - resultsFooterDiscord: '在 Discord 上加入我们', - modal: { - searchBox: { - resetButtonTitle: '删除搜索', - resetButtonAriaLabel: '删除搜索', - cancelButtonText: '取消', - cancelButtonAriaLabel: '取消', - }, - startScreen: { - recentSearchesTitle: '最近搜索', - noRecentSearchesText: '无最近搜索内容', - saveRecentSearchButtonTitle: '保存此搜索', - removeRecentSearchButtonTitle: '移除此搜索', - favoriteSearchesTitle: '收藏夹', - removeFavoriteSearchButtonTitle: '从收藏夹移除', - }, - errorScreen: { - titleText: '出现未知错误!', - helpText: '请检查你的互联网连接是否有误', - }, - footer: { - selectText: '进入条目', - selectKeyAriaLabel: '回车键', - navigateText: '导航', - navigateUpKeyAriaLabel: '上方向键', - navigateDownKeyAriaLabel: '下方向键', - closeText: '关闭搜索', - closeKeyAriaLabel: 'Esc 键', - searchByText: '搜索来自', - }, - noResultsScreen: { - noResultsText: '没有合适的结果...', - suggestedQueryText: '请尝试搜索', - reportMissingResultsText: '仍然认为应该有搜索结果?', - reportMissingResultsLinkText: '请通知我们。', - }, - }, -}); diff --git a/src/i18n/zh-cn/nav.ts b/src/i18n/zh-cn/nav.ts deleted file mode 100644 index 439fa0dc7..000000000 --- a/src/i18n/zh-cn/nav.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: '起步', - 'getting-started': '入门指南', - install: '安装', - 'editor-setup': '编辑器设置', - 'guides/upgrade-to/v3': '升级到 v3', - - coreConcepts: '核心理念', - 'concepts/why-astro': '为什么选择 Astro', - 'concepts/islands': 'Astro 群岛', - - tutorials: '教程', - 'blog-tutorial': '搭建博客', - 'add-collections-tutorial': '使用内容集合', - 'add-transitions-tutorial': '使用视图过渡动画', - - basics: '基础内容', - 'core-concepts/project-structure': '项目结构', - 'core-concepts/astro-components': '组件', - 'core-concepts/astro-pages': '页面', - 'core-concepts/layouts': '布局', - 'core-concepts/rendering-modes': '渲染模式', - - builtins: '内置功能', - 'guides/content-collections': '内容集合', - 'guides/view-transitions': '视图过渡动画', - 'guides/prefetch': '预获取', - - addons: '附加功能', - 'guides/integrations-guide': '添加集成', - 'core-concepts/framework-components': 'UI 框架', - 'guides/server-side-rendering': '服务端渲染 (SSR)', - - examples: '操作指南', - 'guides/migrate-to-astro': '迁移到 Astro', - 'guides/cms': '连接到 CMS', - 'guides/backend': '添加后端服务', - 'guides/deploy': '部署你的站点', - 'guides/recipes': '更多操作指南', - - features: '使用指南', - 'core-concepts/astro-syntax': 'Astro 模板语法', - 'core-concepts/routing': '路由', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/client-side-scripts': '处理脚本和事件', - 'guides/styling': 'CSS 样式', - 'guides/fonts': '字体', - 'guides/images': '图像', - 'guides/imports': '导入', - 'core-concepts/endpoints': 'API 端点', - 'guides/data-fetching': '数据获取', - 'guides/middleware': '中间件', - 'guides/testing': '测试', - 'guides/troubleshooting': '故障排除', - 'guides/internationalization': '国际化', - - configuration: '配置', - 'guides/configuring-astro': 'Astro 配置文件', - 'guides/typescript': 'TypeScript', - 'guides/aliases': '路径别名', - 'guides/environment-variables': '环境变量', - - reference: '参考', - 'reference/configuration-reference': '配置', - 'reference/api-reference': '运行时 API', - 'reference/integrations-reference': '集成 API', - 'reference/adapter-reference': '适配器 API', - 'reference/image-service-reference': '图像服务 API', - 'reference/dev-overlay-plugin-reference': 'Dev Overlay 插件 API', - 'reference/directives-reference': '模板指令', - 'reference/cli-reference': '命令行', - 'reference/error-reference': '错误参考', - 'guides/publish-to-npm': 'NPM 包格式', -}); diff --git a/src/i18n/zh-cn/ui.ts b/src/i18n/zh-cn/ui.ts deleted file mode 100644 index 201a37159..000000000 --- a/src/i18n/zh-cn/ui.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': '跳转到内容', - 'a11y.sectionLink': '段落标题', - 'navbar.a11yTitle': '顶部导航', - // Site settings - 'site.title': 'Astro 文档', - 'site.description': '用更少的客户端 JavaScript 构建更快的站点。', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': '星辰浩瀚的太空中的 astro 标志,右侧前景中漂浮着一颗紫色的土星状行星。', - // Left Sidebar - 'leftSidebar.a11yTitle': '站点导航', - 'leftSidebar.learnTab': '学习', - 'leftSidebar.referenceTab': '参考', - 'leftSidebar.viewInEnglish': '查看英文版本', - 'leftSidebar.sponsoredBy': '赞助商', - // Right Sidebar - 'rightSidebar.a11yTitle': '目录', - 'rightSidebar.onThisPage': '本页内容', - 'rightSidebar.overview': '概述', - 'rightSidebar.editPage': '编辑本页内容', - 'rightSidebar.translatePage': '翻译本页内容', - 'rightSidebar.contribute': '贡献', - 'rightSidebar.contributorGuides': '贡献者指南', - 'rightSidebar.community': '社区', - 'rightSidebar.joinDiscord': '加入我们的 Discord', - 'rightSidebar.readBlog': '阅读我们的博客', - 'rightSidebar.openCollective': '我们的 Open Collective', - 'rightSidebar.github': 'GitHub 上的 Astro 文档', - // Footer - 'footer.privacyPolicy': '隐私协议', - // `` acessibility labels - 'themeToggle.useLight': '使用浅色主题', - 'themeToggle.useDark': '使用深色主题', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': '下一页', - 'articleNav.prevPage': '返回', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': '添加于:', - 'since.new': '新', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': '自动化命令行', - 'install.manualTab': '手动设置', - // `` 词汇 - 'deploy.sectionTitle': '部署指南', - 'deploy.altSectionTitle': '更多部署指南', - 'deploy.filterLabel': '根据部署类型筛选', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': '静态', - // CMS Guides vocabulary - 'cms.navTitle': '更多 CMS 指南', - // Migration Guides vocabulary - 'migration.navTitle': '更多迁移指南', - // Recipes vocabulary - 'recipes.navTitle': '更多操作指南', - // `` vocabulary - 'recipesLink.singular': '相关操作指南:', - 'recipesLink.plural': '相关操作指南', - // `` fallback text - 'contributors.seeAll': '查看所有贡献者', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': '此页暂不支持你的语言,我们将为你展示英文页面。你可以帮忙翻译它!', - 'fallbackContent.linkText': '了解更多关于贡献的内容', - // 404 Page - '404.title': '未能找到此页面', - '404.content': '该页面不在我们的星系中。', - '404.linkText': '返回主页', - // Aside component default labels - 'aside.note': '注意', - 'aside.tip': '提示', - 'aside.caution': '警告', - 'aside.danger': '危险', - // `` vocabulary - 'languageSelect.label': '选择语言', - // Integrations vocabulary - 'integrations.changelog': '更新日志', - 'integrations.footerTitle': '更多集成', - 'integrations.renderers': 'UI 框架', - 'integrations.adapters': 'SSR 适配器', - 'integrations.others': '其他', - // Checklist component - 'checklist.or': '或', - // Multiple Choice component - 'multipleChoice.defaultCorrect': '正确!', - 'multipleChoice.defaultIncorrect': '再试一次!', - 'multipleChoice.submitLabel': '提交', - // Tutorial Progress - 'progress.todo': '待办', - 'progress.done': '完成', - // Tutorial Navigation - 'tutorial.trackerLabel': '教程跟踪', - 'tutorial.unit': '单元', - // Tutorial - 'tutorial.getReady': '准备好…', - // Feedback Fish widget - 'feedback.button': '给予我们反馈', - 'feedback.a11yLabel': '反馈表单', - 'feedback.formTitle': '你有什么想法?', - 'feedback.categoryGroupLabel': '选择反馈类型', - 'feedback.issue': '问题', - 'feedback.createIssue': '创建 GitHub Issue', - 'feedback.idea': '想法', - 'feedback.other': '其它', - 'feedback.messageA11yLabel': '留言', - 'feedback.placeholder': '你想让我们知道什么?', - 'feedback.submit': '发送反馈', - 'feedback.close': '关闭反馈表单', - 'feedback.success': '感谢!我们收到了你的反馈。', - // `` component - 'fileTree.directoryLabel': '目录', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': '终端窗口', - 'expressiveCode.copyButtonTooltip': '复制到剪贴板', - 'expressiveCode.copyButtonCopied': '复制成功!', - // Backend Guides vocabulary - 'backend.navTitle': '更多后端服务指南', - // Stubs vocabulary - 'stub.title': '完善本指南!', - 'stub.subtitle': '此指南尚未完成。', - 'stub.description.migration': - '想为这个指南做贡献吗?有关于从这项技术迁移到 Astro 的文章、视频或其他资源?', - 'stub.description.cms': '知道更多在 Astro 使用此 CMS 的信息?', - 'stub.description.backend': '知道更多在 Astro 使用此后端服务的信息?', -}); diff --git a/src/i18n/zh-tw/README.md b/src/i18n/zh-tw/README.md deleted file mode 100644 index f98f31670..000000000 --- a/src/i18n/zh-tw/README.md +++ /dev/null @@ -1,154 +0,0 @@ -# Astro Docs 中文翻譯指南 - -感謝你有興趣對 Astro 文檔翻譯做出貢獻! -提交改動前,別忘了閱讀 [i18n 指南](~/../contributor-guides/translating-astro-docs.md),裡面包含了貢獻過程中需要知道的內容。 -也歡迎加入 Astro 的 [Discord 社群](https://astro.build/chat)與其他貢獻者們交流! - -本指南旨在整理一份統一的格式及風格指南,使文檔讀起來更流暢並易於理解。 - -編撰時參考了 [Vue 中文文档指南](https://github.com/vuejs-translations/docs-zh-cn/wiki/%E7%BF%BB%E8%AF%91%E9%A1%BB%E7%9F%A5)。 - - - -## 1. 術語和用詞 - -### 1.1 術語表 -> 部分參考[《重編國語辭典修訂本》](https://dict.revised.moe.edu.tw/index.jsp) - -|原文 |推薦翻譯 |備註 | -|----------------------|---------------------|-----------------------| -|library |庫 | | -|integration |整合 | | -|import |引入 | | -|package |套件 | | -|routing |路由 | | -|architecture |架構 | | -|framework |框架 | | -|reference |參考 | | -|deploy |部署 | | -|component |組件 | | -|migration |遷移 | | -|asset |資產 | | -|docs |文檔 | | -|project |專案 | | -|configuration |配置 | | -|community |社群 | | -|hydration |水合 | | -|islands |群島 |特指 Astro Islands | -|escape |跳脫 |特指 Escape Character | -|reactive |反應式 | | -|responsive |響應式 | | -|repository |儲存庫 | | -|experimental |實驗性 | | -|middleware |中介層 | | -|adapter |配接器 | | -|CLI |命令列 | | -|terminal |終端機 | | -|codebase |代碼庫 | | -|changelog |變更日誌 | | -|recipe |操作指南 | | -|Server-side Rendering |伺服器端渲染 | | - - -### 1.2 中文用詞 -> 部分參考[《重編國語辭典修訂本》](https://dict.revised.moe.edu.tw/index.jsp)及[《異體字字典》](https://dict.variants.moe.edu.tw/variants/rbt/home.do) - -|中文 |說明 | -|----------------|-------------------| -|你 |而不使用「您」 | -|構建 |而不使用「建構」 | -|開發者 |而不使用「開發人員」 | -|應用程式 |而不使用「應用」 | -|舉例來說 |而不使用「舉個例子」等 | -|甚麼 |「什麼」為異體字 | -|其他 |並無「其它」一詞 | -|注釋 |並無「註釋」一詞 | -|刪除、去除 |並無「移除」一詞 | -|優化 |並無「最佳化」一詞 | - - -### 1.3 特指名詞及品牌名稱 -- 「JavaScript」或「ECMAScript」等詞語應**保留風格化寫法**,而非「Javascript」或「Ecmascript」 -- 「npm」及「webpack」等產品 / 品牌名稱的應**保留風格化寫法**,而非「Npm」或「Webpack」 - - -### 1.4 關於 MDN 中可查詢的前端術語 -- 原則上,前端專業術語的翻譯優先**參考 MDN 中文譯文**,若無中文則**保留原文**。 -- 原文中的 MDN 文檔連結建議轉換為 MDN 的中文譯文連結,但是鑒於 MDN 的中文翻譯也並不完善,所以: - - 當條目有中文譯文時,將其手動**變更為 MDN 中文連結**,其餘則**保留原文連結** - - - -## 2. 譯文格式 - -### 2.1 標點符號 -> 參考[《重訂標點符號手冊》](https://language.moe.gov.tw/001/upload/files/site_content/m0001/hau/c2.htm)及[《W3C 中文排版需求》](https://w3c.github.io/clreq/#line_composition_rules_for_punctuation_marks) -- 除特殊情況外,所有中文標點符號應為**全形字元** -- 考慮到 `/` 在不同字體下渲染差異較大,分隔號應為前後包含空格的 `/`,如:`你好 / 世界` - - -### 2.2 代碼內聯與關鍵字 -請使用**反單引號**(`)標記,例: -```md -調用 `window` 的 `alert()` 函式 -``` - - -### 2.3 中西文混排 -> 部分參考[《W3C 中文排版需求》](https://w3c.github.io/clreq/#chinese_and_western_mixed_text_composition) -- 中文和英文之間**應**插入一個**半形空格**。如:`你好 Hello 世界` -- 全形標點與英文之間**不須**插入空格。如:`你好世界(Hello World)` -- 注意使用 Markdown 標記(如*斜體*、**粗體**或[超連結](#)等)時,應保證空格出現在欲分隔字詞的**外部**。如: -```md -遵守 **JavaScript 代碼規範**非常重要 -遵守 [JavaScript 代碼規範](#foo)非常重要 -詳見*中文 MDN* 的參考頁面 -詳見[中文 MDN](#bar) 的參考頁面 -``` - - -### 2.4 代碼片段 -- 代碼片段中的**注釋應翻譯為中文**,其餘部分應**保留原文** -- 日誌及執行結果等也應**保留原文**,以便和代碼邏輯保持一致 - - - -## 3. 翻譯建議 - -### 3.1 調整語序為中文習慣 -例如: -> So far we've only been binding to simple property keys in our templates. But Vue.js actually supports the full power of JavaScript expressions inside all data bindings. - -以上例句可譯為:「目前我們都只是在模板中綁定簡單的屬性鍵,但事實上 Vue.js 支援在任何資料綁定中使用 JavaScript 表達式」。 - - -### 3.2 省略部分在原文中僅作完成句式的詞語 -例如: -> When Vue is updating a list of elements rendered with v-for, by default it uses an "in-place patch" strategy. If the order of the data items has changed, instead of moving the DOM elements to match the order of the items, Vue will patch each element in-place and make sure it reflects what should be rendered at that particular index. - -像是「to match the order of the items」這樣的短語可以在**保證語意不變**的情況下簡化。 - -以上例句可譯為:「Vue 預設按照『就地更新』的策略來更新透過 `v-for` 渲染的元素列表。當資料的順序改變時,Vue 不會隨之移動 DOM 元素的順序,而是就地更新每個元素,確保它反映應在指定索引位置上渲染的內容」。 - - -### 3.3 補充連接詞使句子更加連貫 -例如: -> The mustache tag will be replaced with the value of the msg property from the corresponding component instance. It will also be updated whenever the msg property changes. - -可在句中加入如「然而」、「並且」或「即使……也……」等連接詞來使句子更加連貫。 - -以上例句的後半句可譯為:「每當 `msg` 屬性發生改變時,綁定處的內容便會隨之更新」。 - - -### 3.4 在尊重原文的前提下使讀者更容易理解 - -> TODO - -### 3.5 譯文及原文行號應相對應 -由於 Astro 文檔以 Markdown 撰寫,每一行形成一個自然段落,因此原則上應保持譯文及原文行號應相對應,以保證後續更新時不造成混淆。 - - - -## 4. 關於本指南 -本指南**並非**硬性規定,而是代表中文文檔翻譯團隊共識的建議。 -如果你對本指南有任何想法或勘誤建議,歡迎透過創建 Issue 或是加入 [Discord 社群](https://astro.build/chat)中的 `#i18n-crew-zh` 頻道參與討論! \ No newline at end of file diff --git a/src/i18n/zh-tw/docsearch.ts b/src/i18n/zh-tw/docsearch.ts deleted file mode 100644 index 717b33430..000000000 --- a/src/i18n/zh-tw/docsearch.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { DocSearchDictionary } from '../translation-checkers'; - -export default DocSearchDictionary({ - button: '搜尋', - placeholder: '搜尋文檔', - shortcutLabel: '按下 / 來搜尋文檔', - resultsFooterLede: '正在尋找 Astro 整合或主題?需要更多幫助嗎?', - resultsFooterIntegrations: 'Astro 整合目錄', - resultsFooterThemes: 'Astro 主題展示', - resultsFooterDiscord: '在 Discord 上加入我們', - modal: { - searchBox: { - resetButtonTitle: '刪除搜尋', - resetButtonAriaLabel: '刪除搜尋', - cancelButtonText: '取消', - cancelButtonAriaLabel: '取消', - }, - startScreen: { - recentSearchesTitle: '最近搜尋', - noRecentSearchesText: '無最近搜尋内容', - saveRecentSearchButtonTitle: '保存此搜尋', - removeRecentSearchButtonTitle: '刪除此搜尋', - favoriteSearchesTitle: '收藏夾', - removeFavoriteSearchButtonTitle: '從收藏夾中刪除', - }, - errorScreen: { - titleText: '出現未知錯誤!', - helpText: '請確認你的網路連線狀況', - }, - footer: { - selectText: '進入條目', - selectKeyAriaLabel: 'Enter 鍵', - navigateText: '導航', - navigateUpKeyAriaLabel: '上方向鍵', - navigateDownKeyAriaLabel: '下方向鍵', - closeText: '關閉搜尋', - closeKeyAriaLabel: 'Esc 鍵', - searchByText: '搜尋來自', - }, - noResultsScreen: { - noResultsText: '未找到相關結果', - suggestedQueryText: '請嘗試搜尋', - reportMissingResultsText: '仍然認為應該有搜尋結果?', - reportMissingResultsLinkText: '請聯絡我們。', - }, - }, -}); diff --git a/src/i18n/zh-tw/nav.ts b/src/i18n/zh-tw/nav.ts deleted file mode 100644 index 5a182cccd..000000000 --- a/src/i18n/zh-tw/nav.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { NavDictionary } from '../translation-checkers'; - -export default NavDictionary({ - startHere: '開始', - 'getting-started': '新手上路', - install: '安裝', - 'editor-setup': '編輯器設定', - 'guides/upgrade-to/v3': '升级到 v3', - - coreConcepts: '核心理念', - 'concepts/why-astro': '為何選擇 Astro', - 'concepts/islands': 'Astro 群島', - - tutorials: '教學', - 'blog-tutorial': '建立部落格', - - basics: '基礎', - 'core-concepts/project-structure': '專案結構', - 'core-concepts/astro-components': '組件', - 'core-concepts/astro-pages': '頁面', - 'core-concepts/layouts': '版面', - - examples: '操作指南', - 'guides/migrate-to-astro': '遷移到 Astro', - 'guides/cms': '連接 CMS', - 'guides/integrations-guide': '添加整合', - 'guides/backend': '添加後端服務', - 'guides/deploy': '部署你的網站', - 'guides/recipes': '更多操作指南', - - features: '學習指南', - 'core-concepts/astro-syntax': 'Astro 模板語法', - 'core-concepts/framework-components': 'UI 框架', - 'core-concepts/routing': '路由', - 'guides/markdown-content': 'Markdown & MDX', - 'guides/content-collections': '内容集', - 'guides/client-side-scripts': '腳本與事件處理', - 'guides/styling': 'CSS 與樣式', - 'guides/images': '圖片', - 'guides/fonts': '字體', - 'guides/imports': '引入', - 'guides/server-side-rendering': '伺服器端渲染(SSR)', - 'core-concepts/endpoints': '端點', - 'guides/data-fetching': '資料獲取', - 'guides/middleware': '中介層', - 'guides/testing': '測試', - 'guides/view-transitions': '轉場過渡動畫', - 'guides/troubleshooting': '疑難排解', - - configuration: '配置', - 'guides/configuring-astro': 'Astro 配置文件', - 'guides/typescript': 'TypeScript', - 'guides/aliases': '引入路徑別名', - 'guides/environment-variables': '環境變數', - - reference: '參考', - 'reference/configuration-reference': '配置', - 'reference/api-reference': '執行階段 API', - 'reference/integrations-reference': '整合 API', - 'reference/adapter-reference': '配接器 API', - 'reference/image-service-reference': '圖片服務 API', - 'reference/directives-reference': '模板指令', - 'reference/cli-reference': '終端機', - 'reference/error-reference': '錯誤參考', - 'guides/publish-to-npm': 'NPM 套件格式', -}); diff --git a/src/i18n/zh-tw/ui.ts b/src/i18n/zh-tw/ui.ts deleted file mode 100644 index 91cd932af..000000000 --- a/src/i18n/zh-tw/ui.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { UIDictionary } from '../translation-checkers'; - -export default UIDictionary({ - 'a11y.skipLink': '跳至內容', - 'a11y.sectionLink': '標題為', - 'navbar.a11yTitle': '頂部導覽', - // Site settings - 'site.title': 'Astro 文檔', - 'site.description': '用更少的用戶端 JavaScript 打造更快速的網站。', - 'site.og.imageSrc': '/default-og-image.png?v=1', - 'site.og.imageAlt': 'Astro 的標誌在充滿星辰的太空中,右邊前景飄浮著土星似的紫色星球', - // Left Sidebar - 'leftSidebar.a11yTitle': '網站導覽', - 'leftSidebar.learnTab': '學習', - 'leftSidebar.referenceTab': '參考', - 'leftSidebar.viewInEnglish': '閱讀英文版', - 'leftSidebar.sponsoredBy': '贊助者', - // Right Sidebar - 'rightSidebar.a11yTitle': '目錄', - 'rightSidebar.onThisPage': '本頁內容', - 'rightSidebar.overview': '概要', - 'rightSidebar.community': 'Community', - 'rightSidebar.joinDiscord': '加入我們的 Discord', - 'rightSidebar.readBlog': '瀏覽我們的部落格', - 'rightSidebar.openCollective': '我們的 Open Collective', - 'rightSidebar.contribute': 'Contribute', - 'rightSidebar.contributorGuides': '貢獻者指南', - 'rightSidebar.editPage': '編輯此頁', - 'rightSidebar.translatePage': '翻譯此頁', - 'rightSidebar.github': 'GitHub 上的 Astro 文檔', - // Footer - 'footer.privacyPolicy': '隱私權政策', - // `` acessibility labels - 'themeToggle.useLight': '使用淺色主題', - 'themeToggle.useDark': '使用深色主題', - // Used in previous/next page links at the bottom of pages - 'articleNav.nextPage': '下一頁', - 'articleNav.prevPage': '返回', - // Used in ``: Added in: v0.24.0 [NEW] - 'since.addedIn': '添加於:', - 'since.new': '新', - 'since.beta': 'Beta', - // Installation Guide - 'install.autoTab': '自動化命令列', - 'install.manualTab': '手動設定', - // `` vocabulary - 'deploy.sectionTitle': '部署指南', - 'deploy.altSectionTitle': '更多部署指南', - 'deploy.filterLabel': '根據部署類型篩選', - 'deploy.ssrTag': 'SSR', - 'deploy.staticTag': '靜態', - // CMS Guides vocabulary - 'cms.navTitle': '更多 CMS 指南', - // Migration Guides vocabulary - 'migration.navTitle': '更多遷移指南', - // Recipes vocabulary - 'recipes.navTitle': '更多操作指南', - // `` vocabulary - 'recipesLink.singular': '相關操作指南:', - 'recipesLink.plural': '相關操作指南', - // `` fallback text - 'contributors.seeAll': '查看所有貢獻者', - // Fallback content notice shown when a page is not yet translated - 'fallbackContent.notice': '此頁面尚未支援你使用的語言,所以會以英文版呈現。你可以幫忙翻譯它!', - 'fallbackContent.linkText': '進一步了解如何貢獻', - // 404 Page - '404.title': '找不到此頁面', - '404.content': '這一頁不在我們的太陽系中。', - '404.linkText': '返回主頁', - // Aside component default labels - 'aside.note': '注意', - 'aside.tip': '提示', - 'aside.caution': '警告', - 'aside.danger': '危險', - // `` vocabulary - 'languageSelect.label': '選擇語言', - // Integrations vocabulary - 'integrations.changelog': '變更日誌', - 'integrations.footerTitle': '更多整合', - 'integrations.renderers': 'UI 框架', - 'integrations.adapters': 'SSR 配接器', - 'integrations.others': '其他', - // Checklist component - 'checklist.or': '或', - // Multiple Choice component - 'multipleChoice.defaultCorrect': '正確!', - 'multipleChoice.defaultIncorrect': '再試一次!', - 'multipleChoice.submitLabel': '提交', - // Tutorial Progress - 'progress.todo': '待辦', - 'progress.done': '完成', - // Tutorial Navigation - 'tutorial.trackerLabel': '教學追蹤', - 'tutorial.unit': '單元', - // Tutorial - 'tutorial.getReady': '準備好……', - // Feedback Fish widget - 'feedback.button': '給予我們反饋', - 'feedback.a11yLabel': '反饋表單', - 'feedback.formTitle': '你有哪些想法?', - 'feedback.categoryGroupLabel': '選擇反饋類型', - 'feedback.issue': '問題', - 'feedback.createIssue': '建立 GitHub Issue', - 'feedback.idea': '想法', - 'feedback.other': '其它', - 'feedback.messageA11yLabel': '留言', - 'feedback.placeholder': '你想讓我們知道甚麼?', - 'feedback.submit': '提交反饋', - 'feedback.close': '關閉反饋表單', - 'feedback.success': '謝謝!我們收到了你的反饋。', - // `` component - 'fileTree.directoryLabel': '目錄', - // Code snippet vocabulary - 'expressiveCode.terminalWindowFallbackTitle': '終端機視窗', - 'expressiveCode.copyButtonTooltip': '複製到剪貼簿', - 'expressiveCode.copyButtonCopied': '複製成功!', - // Backend Guides vocabulary - 'backend.navTitle': '更多後端服務指南', - // Stubs vocabulary - 'stub.title': '完善本頁!', - 'stub.subtitle': '此指南尚未完成。', - 'stub.description.migration': - '想為這個指南貢獻嗎?是否有介紹從這種技術遷移至 Astro 的部落格文章、影片或其他資源可以分享?', - 'stub.description.cms': '知道更多在 Astro 使用此 CMS 的資訊?', - 'stub.description.backend': '知道更多在 Astro 使用此後端服務的資訊?', -}); diff --git a/src/styles/custom.css b/src/styles/custom.css deleted file mode 100644 index 6bf61267e..000000000 --- a/src/styles/custom.css +++ /dev/null @@ -1,27 +0,0 @@ -/** Custom Styles **/ -.site-title img { - width: auto; - height: 20px; - - @media (min-width: 50rem) { - height: 22px; - } -} - -.sidebar-pane { - --sl-z-index-pane: 7; - z-index: var(--sl-z-index-pane); -} - -.right-sidebar nav { - z-index: var(--sl-z-index-menu); -} - -.sl-markdown-content :is(img, picture, video, canvas, svg, iframe):not(:where(.not-content *)).svg-baseline { - display: inline-flex; - align-self: center; - max-width: 100%; - height: auto; - top: .125em; - position: relative; -} diff --git a/src/util.ts b/src/util.ts deleted file mode 100644 index 0b43ae526..000000000 --- a/src/util.ts +++ /dev/null @@ -1,23 +0,0 @@ -import type { CollectionEntry } from 'astro:content'; - -export function getLanguageFromURL(pathname: string) { - const langCodeMatch = pathname.match(/\/([a-z]{2}-?[a-z]{0,2})\//); - return langCodeMatch ? langCodeMatch[1] : 'en'; -} - -/** Remove \ and / from beginning of string */ -export function removeLeadingSlash(path: string) { - return path.replace(/^[/\\]+/, ''); -} - -/** Remove \ and / from end of string */ -export function removeTrailingSlash(path: string) { - return path.replace(/[/\\]+$/, ''); -} - -/** Get a page’s slug, without the language prefix (e.g. `'en/migrate'` => `'migrate'`). */ -export const stripLangFromSlug = (slug: CollectionEntry<'docs'>['slug']) => - slug.split('/').slice(1).join('/'); - -/** Get a page’s lang tag from its slug (e.g. `'en/migrate'` => `'en'`). */ -export const getLangFromSlug = (slug: CollectionEntry<'docs'>['slug']) => slug.split('/')[0]; diff --git a/src/util/getPageCategory.ts b/src/util/getPageCategory.ts deleted file mode 100644 index 9ff0e10c1..000000000 --- a/src/util/getPageCategory.ts +++ /dev/null @@ -1,29 +0,0 @@ -// TODO: Move this data to our i18n system to support localized category labels. -const defaultCategory = 'Learn'; - -// Order is important here. Pages are tested to see if they *start* with one of -// these paths and will return early when one matches. This means more specific -// paths need to be earlier in the array, e.g. `reference/errors/` before `reference/`. -const categories = [ - ['/guides/analytics/', 'Recipes'], - ['/guides/cms/', 'Recipes'], - ['/guides/deploy/', 'Recipes'], - ['/guides/integrations/', 'Add-ons'], - ['/guides/themes/', 'Add-ons'], - ['/guides/upgrade-to/', 'Upgrade Guides'], - ['/recipes/', 'Recipes'], - ['/reference/', 'Reference'], - ['/tutorial/', 'Tutorials'], -] as const; - -/** - * @param url URL for the current page. - * @returns The category for the current page as used by Algolia DocSearch to group search results. - */ -export function getPageCategory(url: { pathname: string }) { - const langAgnosticPath = url.pathname.replace(/\/\w\w(-\w\w)?\//, ''); - for (const [path, label] of categories) { - if (langAgnosticPath.startsWith(path)) return label; - } - return defaultCategory; -} diff --git a/src/util/groupPagesByLang.ts b/src/util/groupPagesByLang.ts deleted file mode 100644 index e31b356fb..000000000 --- a/src/util/groupPagesByLang.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { CollectionEntry } from 'astro:content'; - -export const groupPagesByLang = >(pages: T[]) => - pages.reduce( - (pages, page) => { - const lang = page.slug.split('/')[0]; - if (!pages[lang]) pages[lang] = []; - pages[lang].push(page); - return pages; - }, - {} as { [lang: string]: T[] } - ); diff --git a/src/util/isSubPage.ts b/src/util/isSubPage.ts deleted file mode 100644 index 2a980c49c..000000000 --- a/src/util/isSubPage.ts +++ /dev/null @@ -1,50 +0,0 @@ -import type { CollectionEntry } from 'astro:content'; -import { englishPages } from '~/content'; -import { getPageCategory } from './getPageCategory'; - -/** Remove the sub-page segment of a URL string */ -export function removeSubPageSegment(path: string) { - // Include new pages with sub-pages as part of this regex. - const regex = - /(?:install|deploy|integrations|tutorial|migrate-to-thulite|recipes|cms|analytics|themes|backend)\//; - const matches = regex.exec(path); - - if (matches) { - const matchIndex = matches.index; - // Get the first slash index after the main page path segment. - const slashIndex = path.slice(matchIndex).indexOf('/') + matchIndex; - return path.slice(0, slashIndex); - } - return path; -} - -const typeIndexes: Partial['data']['type'], string>> = { - recipe: 'recipes', -}; - -const categoryIndex: Partial, string>> = { - 'Error Reference': 'reference/error-reference', -}; - -/** - * Test if `currentPage` is considered a sub-page of `parentSlug`. - * @param currentPage The full slug for the current page, e.g. `'en/guides/rss'` - * @param parentSlug The language-less slug for the parent to test against e.g. `'guides/content-collections'` - */ -export function isSubPage(currentPage: string, parentSlug: string): boolean { - // Test 1: do the two pages share a base URL segment? - if (removeSubPageSegment(currentPage).endsWith(removeSubPageSegment(parentSlug))) { - return true; - } - // Test 2: is there a known parent page for this page category? - const category = getPageCategory({ pathname: '/' + currentPage + '/' }); - if (categoryIndex[category] === parentSlug) { - return true; - } - // Test 3: is there a known parent page for this page type? - const type = englishPages.find(({ slug }) => slug === currentPage)?.data.type; - if (type && typeIndexes[type] === parentSlug) { - return true; - } - return false; -} diff --git a/static/apple-touch-icon.png b/static/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..cee9f36fc9c22c512a311646d92eafc46cbdefdc GIT binary patch literal 1525 zcmZ`(dpJ~S7(eIi;Goe&Y+2wi@Kt#UxaA=!{EQ%vN?0 z_LS6?5TYbm*(lLTMD9v89)vY0mD#VJXP^Gq-9Ntbz32VC-}C*x-+M{h?#`hqX(>Sv zM0IgydxE{{(?aFJ*RD-|BLvA^c40ew7Yk2xI=H{^qltdFa+ut7uOv~IS8S5ak@`D>&;E6`L3qZkT)DrhY-5ae7A|1Vo=$>sN&(N2?cuB9u* z_}U`p4Js7$*zoXc1~}p@-lc=m78^!7JcbMbX*Su|PsFLg*bshyn=eYUcH_<0 zr9s5LM!}fwkR#yZ9NF_S3WRGDuo&Q;+A%ltAY#fXlx2Y68J)=iZ;Z-+ClBwd84)fl zER4;~9cmdj?n{EOz)5$-!97Z=p^a2(H2tIr;&L$|r(xUDg*cc5m`jj3G-BaKI)a9Ki>3 z%irBnWk^eJtf}4%WBa&09|9C<@!tI^eYq?TqNY7K!2!X|d=^{8igpKY$yKhX4I0zu z7)e_uS3h);Bwd)I$K6p=yiE@`o@5D08&*tH0tNlw-+BQ))vL-7>?|lgWWlcFHZ~TQX`u+iFK9cr5I)y(&1n+6^*cJpY(0`HOis0_Pc^6)Tn#@Rl&s3yY z^COR&4p^uV+KrZ%x5C)MRD(QKkyfkw?fFGDhCrqgL1sZ;z~K)0`kl@~QaLfs)(Xa& z-!#W4gV*X>WHtjfJs*3bbYaY#@@l4s@|V(@yepH|D;NUf>5PG7h^QF}3o`~JDTCMg zKz&;Ib0^tCGQYuQJ_d0sFp#SH6;M5dT|K+-cbpj;}}_g)o0>h2bzFBn^FR`!t0Sexdjk{8D5=C(xhc$Gj8`=#{9 zx@nn`U7%B%63~sPSkE>Th_aRW2A^#%Q~Kn|lhNJ+hkG)JDOy@w%=KT`bmLwYsj1i# zw+>;-u;pDs3ob|>)BSEdNZ*wF*&(1#-gC>6uVJh(vZ1X6boKQuM+$+0l|KCsU4^7? zUgd%>(Cp-&U%+x7NhPnJ%|KyHf!U}PiPCDR99|OWhAh33#~_z|`z;MWgL=bSOm98G zgI*Imj*yJr)9>LTB$?rrQXLq3BtEd!5XLT+v~@&-S;KkNacoEgE-vr#iJ-z*8SyH= zoPw^Y);f6=G}z|OI<;(wxa+n1+GdKM^6g-SDF&Gi$PU}oXkrghb7(7*O7r?V?XzwM4*15C{Gv1kP61Pw*q+&8;Be@uze+q&_4<1 z#KQ(FDuONHPRKbLh*2~7a;xW?%K literal 0 HcmV?d00001 diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ed827b6edb9943b9055161e8629c6aa8365336e1 GIT binary patch literal 15406 zcmeHNF>b>!3}n$hARanp@n960f=rz|`WYSjB9GlNBJB!{5;PJ5E&Q$Ik22uP-hNK%=fRW%Re` zx<2J>>O8Uj`+85@+I(h~o8HYs@27X74Dg=v*L5A%>vg9qrfq+D|C-wyPcd!t@Lqp= zEaoTwo?fUwK7Z{s!_$k`-yUo3>(76`f7)}=_uQLbufK1e9L^ix>(7nbx7{0`{rrBI zvj%ee0&{8CeUi9EEAP>{Pr|ie&T9eho%*K+r~%c$we8wEWBuI>kpJ%I+_HB#9Kvq5 z3)}4$a*fegYh&}TbyQUqmdhpN8l$n+#;#v^*V@s%8l$n+&~Z?_&ByvvMo>Oce3~sB zH9-BGSwZOce435=w|t;{qIjEc>iVDh_v6&R->sg8UZZ+O@k8tL;?a6gyqAAyKUxopA6lOm fkJdwc_kJV!AwSdrH9!sArUv5QgJ@*n*9?3EaHiER literal 0 HcmV?d00001 diff --git a/static/icon.svg b/static/icon.svg new file mode 100644 index 000000000..7df7427aa --- /dev/null +++ b/static/icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index c23a9211e..000000000 --- a/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "astro/tsconfigs/strict", - "exclude": ["dist"], - "compilerOptions": { - "allowJs": true, - "baseUrl": ".", - "paths": { - "~/*": ["src/*"] - }, - "jsx": "react-jsx", - "jsxImportSource": "preact" - } -} From aaf6ad7c94e1f84dad24d0f26b90c40435484836 Mon Sep 17 00:00:00 2001 From: Henk Verlinde Date: Mon, 23 Mar 2026 16:58:55 +0100 Subject: [PATCH 02/12] Add code block to homepage --- .gitignore | 1 + content/_index.md | 26 ++++++++++++++++++++++++++ hugo_stats.json | 20 ++++++++++---------- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index ba354d25a..16f77abe3 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ node_modules public resources +hugo_stats.json diff --git a/content/_index.md b/content/_index.md index 650519231..2d854b011 100644 --- a/content/_index.md +++ b/content/_index.md @@ -12,3 +12,29 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- + +```bash +npm create thulite@latest + +> npx +> create-thulite + +│ +◇ Project name: +│ thulite-project +│ +◇ Select a template: +│ Doks theme +│ +◇ Select a variant: +│ With recommended integrations (SEO and Images) +│ +◇ Install with npm and start now? +│ Yes +│ +◇ Scaffolding project in /home/h-enk/thulite-project... +│ +◇ Installing dependencies with npm... +│ +◇ Starting dev server... +``` diff --git a/hugo_stats.json b/hugo_stats.json index 983305e1b..5361bace7 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -10,6 +10,8 @@ "circle", "details", "div", + "figcaption", + "figure", "footer", "form", "g", @@ -33,6 +35,7 @@ "noscript", "p", "path", + "pre", "script", "section", "small", @@ -65,6 +68,7 @@ "card-body", "card-list", "categories", + "chroma", "col", "col-lg-10", "col-lg-12", @@ -105,6 +109,7 @@ "dropdown-menu", "dropdown-menu-end", "dropdown-toggle", + "expressive-code", "flex-column", "flex-grow-1", "flex-lg-row", @@ -115,13 +120,16 @@ "footer", "form-control", "form-control-lg", + "frame", "fs-5", "fs-6", "g-4", "h-auto", "h3", "h5", + "header", "header-content", + "highlight", "home", "icon", "icon-link", @@ -138,6 +146,7 @@ "icon-tabler-sun", "icon-tabler-x", "icons-tabler-outline", + "is-terminal", "justify-content-between", "justify-content-center", "justify-content-end", @@ -186,6 +195,7 @@ "navbar-brand", "navbar-expand-lg", "navbar-nav", + "not-content", "offcanvas", "offcanvas-body", "offcanvas-end", @@ -199,11 +209,6 @@ "outline/file-text", "outline/folder-root", "outline/gauge", - "outline/json", - "outline/seo", - "outline/settings-2", - "outline/sitemap", - "outline/social", "outline/stack-2", "p-0", "p-2", @@ -286,11 +291,6 @@ "svg-file-text", "svg-folder-root", "svg-gauge", - "svg-json", - "svg-seo", - "svg-settings-2", - "svg-sitemap", - "svg-social", "svg-stack-2", "toc" ] From 11e873960386969461fa4884f9ff3f1be13e1979 Mon Sep 17 00:00:00 2001 From: Henk Verlinde Date: Tue, 12 May 2026 16:20:56 +0200 Subject: [PATCH 03/12] Initial content migration and restructuring --- ...ncent-van-zalinge-e5VzJJDODbQ-unsplash.jpg | Bin 0 -> 162847 bytes assets/scss/common/_custom.scss | 127 ++ assets/svgs/.gitkeep | 0 assets/svgs/cabin.svg | 1 + assets/svgs/microsoft.svg | 1 + assets/svgs/thulite.svg | 1 + config/_default/hugo.toml | 4 +- config/_default/languages.toml | 3 +- config/_default/menus/menus.en.toml | 51 +- config/_default/module.toml | 6 +- config/_default/params.toml | 8 +- content/advanced/_index.md | 19 + .../{tags => advanced/analytics}/_index.md | 10 +- content/advanced/analytics/cabin-analytics.md | 34 + .../advanced/analytics/fathom-analytics.md | 34 + .../advanced/analytics/google-analytics.md | 51 + content/advanced/analytics/overview.md | 30 + .../advanced/analytics/plausible-analytics.md | 45 + .../{categories => advanced/cms}/_index.md | 10 +- content/advanced/cms/cloudcannon.md | 22 + content/advanced/cms/decap-cms.md | 79 + content/advanced/cms/overview.md | 29 + content/advanced/cms/tina-cms.md | 159 ++ content/advanced/email-obfuscation.md | 103 ++ content/advanced/internationalization.md | 73 + content/{contributors => basics}/_index.md | 13 +- content/basics/archetypes.md | 16 + content/basics/deploy/_index.md | 18 + content/basics/deploy/cloudflare.md | 112 ++ content/basics/deploy/github.md | 138 ++ content/basics/deploy/gitlab.md | 56 + content/basics/deploy/google-firebase.md | 70 + content/basics/deploy/microsoft-azure.md | 94 ++ content/basics/deploy/netlify.md | 102 ++ content/basics/deploy/overview.md | 157 ++ content/basics/deploy/render.md | 28 + content/basics/deploy/vercel.md | 56 + content/basics/fonts.md | 11 + content/basics/images.md | 11 + content/basics/integrations/_index.md | 18 + content/basics/integrations/bolt-core.md | 19 + content/basics/integrations/bootstrap.md | 62 + content/basics/integrations/core.md | 101 ++ content/basics/integrations/doks-core.md | 19 + content/basics/integrations/images.md | 23 + content/basics/integrations/inline-svg.md | 23 + content/basics/integrations/overview.md | 141 ++ content/basics/integrations/seo.md | 23 + content/basics/integrations/tailwind.md | 19 + content/basics/layouts.md | 50 + content/basics/markdown.md | 11 + content/basics/pages.md | 77 + content/basics/project-structure.md | 154 ++ content/basics/scripts.md | 11 + content/basics/styles.md | 11 + content/basics/templates/_index.md | 18 + content/basics/templates/bolt.md | 17 + content/basics/templates/doks.md | 17 + content/basics/templates/use-template.md | 25 + content/blog/_index.md | 20 - content/blog/example/index.md | 31 - content/docs/_index.md | 20 - content/docs/guides/_index.md | 16 - content/docs/guides/example.md | 23 - content/docs/reference/_index.md | 18 - content/docs/reference/example.md | 22 - content/docs/resources.md | 18 - content/privacy.md | 21 - content/reference/_index.md | 19 + content/reference/cli.md | 113 ++ content/reference/commands.md | 330 ++++ content/reference/configuration/_index.md | 18 + content/reference/configuration/menus.md | 50 + content/reference/configuration/overview.md | 97 ++ .../configuration/page-frontmatter.md | 23 + content/reference/configuration/parameters.md | 15 + content/reference/configuration/settings.md | 15 + content/reference/markdown/_index.md | 18 + content/reference/markdown/basic-syntax.md | 159 ++ content/reference/markdown/extended-syntax.md | 203 +++ content/reference/markdown/overview.md | 26 + content/reference/project-structure.md | 154 ++ content/start-here/_index.md | 19 + content/start-here/concepts/_index.md | 19 + content/start-here/concepts/dependencies.md | 76 + content/start-here/concepts/why-thulite.md | 88 + content/start-here/configuration.md | 131 ++ content/start-here/editor-setup.md | 67 + content/start-here/getting-started.md | 74 + content/start-here/installation.md | 132 ++ content/start-here/troubleshooting.md | 28 + content/start-here/updating/_index.md | 18 + content/start-here/updating/overview.md | 168 ++ content/start-here/updating/v2.md | 255 +++ content/start-here/usage.md | 246 +++ content/start-here/verification.md | 147 ++ hugo_stats.json | 448 ++++- .../sidebar/render-section-menu.html | 101 ++ layouts/_shortcodes/email.html | 13 + layouts/_shortcodes/link-card.html | 40 + layouts/_shortcodes/preview.html | 8 + layouts/home.html | 33 +- layouts/list.html | 23 + netlify.toml | 14 + package-lock.json | 1493 +++++++---------- package.json | 9 +- public/robots.txt | 2 +- 107 files changed, 6592 insertions(+), 1110 deletions(-) create mode 100644 assets/images/vincent-van-zalinge-e5VzJJDODbQ-unsplash.jpg delete mode 100644 assets/svgs/.gitkeep create mode 100644 assets/svgs/cabin.svg create mode 100644 assets/svgs/microsoft.svg create mode 100644 assets/svgs/thulite.svg create mode 100644 content/advanced/_index.md rename content/{tags => advanced/analytics}/_index.md (53%) create mode 100644 content/advanced/analytics/cabin-analytics.md create mode 100644 content/advanced/analytics/fathom-analytics.md create mode 100644 content/advanced/analytics/google-analytics.md create mode 100644 content/advanced/analytics/overview.md create mode 100644 content/advanced/analytics/plausible-analytics.md rename content/{categories => advanced/cms}/_index.md (51%) create mode 100644 content/advanced/cms/cloudcannon.md create mode 100644 content/advanced/cms/decap-cms.md create mode 100644 content/advanced/cms/overview.md create mode 100644 content/advanced/cms/tina-cms.md create mode 100644 content/advanced/email-obfuscation.md create mode 100644 content/advanced/internationalization.md rename content/{contributors => basics}/_index.md (51%) create mode 100644 content/basics/archetypes.md create mode 100644 content/basics/deploy/_index.md create mode 100644 content/basics/deploy/cloudflare.md create mode 100644 content/basics/deploy/github.md create mode 100644 content/basics/deploy/gitlab.md create mode 100644 content/basics/deploy/google-firebase.md create mode 100644 content/basics/deploy/microsoft-azure.md create mode 100644 content/basics/deploy/netlify.md create mode 100644 content/basics/deploy/overview.md create mode 100644 content/basics/deploy/render.md create mode 100644 content/basics/deploy/vercel.md create mode 100644 content/basics/fonts.md create mode 100644 content/basics/images.md create mode 100644 content/basics/integrations/_index.md create mode 100644 content/basics/integrations/bolt-core.md create mode 100644 content/basics/integrations/bootstrap.md create mode 100644 content/basics/integrations/core.md create mode 100644 content/basics/integrations/doks-core.md create mode 100644 content/basics/integrations/images.md create mode 100644 content/basics/integrations/inline-svg.md create mode 100644 content/basics/integrations/overview.md create mode 100644 content/basics/integrations/seo.md create mode 100644 content/basics/integrations/tailwind.md create mode 100644 content/basics/layouts.md create mode 100644 content/basics/markdown.md create mode 100644 content/basics/pages.md create mode 100644 content/basics/project-structure.md create mode 100644 content/basics/scripts.md create mode 100644 content/basics/styles.md create mode 100644 content/basics/templates/_index.md create mode 100644 content/basics/templates/bolt.md create mode 100644 content/basics/templates/doks.md create mode 100644 content/basics/templates/use-template.md delete mode 100644 content/blog/_index.md delete mode 100644 content/blog/example/index.md delete mode 100644 content/docs/_index.md delete mode 100644 content/docs/guides/_index.md delete mode 100644 content/docs/guides/example.md delete mode 100644 content/docs/reference/_index.md delete mode 100644 content/docs/reference/example.md delete mode 100644 content/docs/resources.md delete mode 100644 content/privacy.md create mode 100644 content/reference/_index.md create mode 100644 content/reference/cli.md create mode 100644 content/reference/commands.md create mode 100644 content/reference/configuration/_index.md create mode 100644 content/reference/configuration/menus.md create mode 100644 content/reference/configuration/overview.md create mode 100644 content/reference/configuration/page-frontmatter.md create mode 100644 content/reference/configuration/parameters.md create mode 100644 content/reference/configuration/settings.md create mode 100644 content/reference/markdown/_index.md create mode 100644 content/reference/markdown/basic-syntax.md create mode 100644 content/reference/markdown/extended-syntax.md create mode 100644 content/reference/markdown/overview.md create mode 100644 content/reference/project-structure.md create mode 100644 content/start-here/_index.md create mode 100644 content/start-here/concepts/_index.md create mode 100644 content/start-here/concepts/dependencies.md create mode 100644 content/start-here/concepts/why-thulite.md create mode 100644 content/start-here/configuration.md create mode 100644 content/start-here/editor-setup.md create mode 100644 content/start-here/getting-started.md create mode 100644 content/start-here/installation.md create mode 100644 content/start-here/troubleshooting.md create mode 100644 content/start-here/updating/_index.md create mode 100644 content/start-here/updating/overview.md create mode 100644 content/start-here/updating/v2.md create mode 100644 content/start-here/usage.md create mode 100644 content/start-here/verification.md create mode 100644 layouts/_partials/sidebar/render-section-menu.html create mode 100644 layouts/_shortcodes/email.html create mode 100644 layouts/_shortcodes/link-card.html create mode 100644 layouts/_shortcodes/preview.html create mode 100644 layouts/list.html diff --git a/assets/images/vincent-van-zalinge-e5VzJJDODbQ-unsplash.jpg b/assets/images/vincent-van-zalinge-e5VzJJDODbQ-unsplash.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e73d5b5af7fba105c22b9324a1fec04f8ecdbd4 GIT binary patch literal 162847 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 $Yt`La)9gPLB{6E!|||;A>>mmxIWt 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 bCjtoHz; diff --git a/assets/svgs/microsoft.svg b/assets/svgs/microsoft.svg new file mode 100644 index 000000000..7255954d3 --- /dev/null +++ b/assets/svgs/microsoft.svg @@ -0,0 +1 @@ + diff --git a/assets/svgs/thulite.svg b/assets/svgs/thulite.svg new file mode 100644 index 000000000..70c3bb276 --- /dev/null +++ b/assets/svgs/thulite.svg @@ -0,0 +1 @@ + diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index e22b9369f..e616a6521 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -1,8 +1,8 @@ -title = "Thulite" +title = "Thulite Docs" baseurl = "http://localhost/" disableAliases = true disableHugoGeneratorInject = true -# disableKinds = ["taxonomy", "term"] +disableKinds = ["taxonomy", "term"] enableEmoji = true enableGitInfo = false enableRobotsTXT = true diff --git a/config/_default/languages.toml b/config/_default/languages.toml index 23667cddd..4b23c9569 100644 --- a/config/_default/languages.toml +++ b/config/_default/languages.toml @@ -5,7 +5,8 @@ [en.params] languageISO = "EN" languageTag = "en-US" - footer = 'Brought to you by Thulite' + # footer = 'Brought to you by Thulite' + footer = '© 2026 Thulite' alertText = 'Doks version 1.0 just shipped!' [de] diff --git a/config/_default/menus/menus.en.toml b/config/_default/menus/menus.en.toml index 954a9f531..ca07c9757 100644 --- a/config/_default/menus/menus.en.toml +++ b/config/_default/menus/menus.en.toml @@ -28,12 +28,56 @@ identifier = "lorem" url = "/tutorial/lorem/" +# [[main]] +# name = "Documentation" +# url = "/docs/start-here/getting-started/" +# # url = "/docs/1.0/prologue/introduction/" +# weight = 10 + [[main]] name = "Documentation" - url = "/docs/guides/example-guide/" -# url = "/docs/1.0/prologue/introduction/" + url = 'https://docs.thulite.io/' weight = 10 +[[main]] + identifier = "thulite-docs" + name = "Thulite" + url = 'https://docs.thulite.io/' + parent = "Documentation" + weight = 11 + +[[main]] + name = "SEO" + url = 'https://seo.thulite.io/' + parent = "Documentation" + weight = 13 + +[[main]] + name = "Images" + url = 'https://images.thulite.io/' + parent = "Documentation" + weight = 15 + +[[main]] + name = "SVG" + url = 'https://svg.thulite.io/' + parent = "Documentation" + weight = 17 + +[[main]] + name = "Doks" + url = 'https://getdoks.org/' + parent = "Documentation" + weight = 19 + +[[main]] + name = "Thulite" + url = "https://thulite.io/" + weight = 13 +# post = '' +# [[main.params]] +# rel = 'external' + [[main]] name = "Blog" url = "https://thulite.io/blog/" @@ -60,8 +104,7 @@ [[social]] name = "GitHub" pre = '' - url = "https://github.com/thuliteio/doks" - post = "v0.1.0" + url = "https://github.com/thuliteio/thulite" weight = 30 # [[social]] diff --git a/config/_default/module.toml b/config/_default/module.toml index e6f6e1f41..17a1bd378 100644 --- a/config/_default/module.toml +++ b/config/_default/module.toml @@ -75,9 +75,13 @@ target = "assets" [[mounts]] - source = "node_modules/@tabler/icons/icons" + source = "node_modules/@tabler/icons/icons/outline" target = "assets/svgs/tabler-icons" +[[mounts]] + source = "node_modules/simple-icons/icons" + target = "assets/svgs/simple-icons" + [[mounts]] source = "node_modules/@thulite/images/assets" target = "assets" diff --git a/config/_default/params.toml b/config/_default/params.toml index 3a20d6048..f71bb4e81 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -4,7 +4,7 @@ description = "Congrats on setting up a new Doks project!" images = ["cover.png"] # mainSections -mainSections = ["docs"] +mainSections = ["start-here", "basics", "advanced", "reference"] # Enable mathematical rendering on every page (unless you set the `math` parameter to `false` in front matter) math = false # false (default) or true @@ -48,8 +48,8 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" bootstrapJavascript = false # false (default) or true # Nav - sectionSwitcher = false # true or false (default) - sectionNav = ["docs"] # ["docs"] (default) or list of sections (e.g. ["docs", "guides"]) + sectionSwitcher = true # true or false (default) + sectionNav = ["start-here", "basics", "advanced", "reference"] # ["docs"] (default) or list of sections (e.g. ["docs", "guides"]) toTopButton = false # false (default) or true breadcrumbTrail = false # false (default) or true headlineHash = true # true (default) or false @@ -122,7 +122,7 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" # Inline SVG (@thulite/inline-svg) [inline_svg] iconSetDir = "tabler-icons" # tabler-icons (default) - iconSetVariant = "outline" # outline (default) or filled + iconSetVariant = "" # outline (default) or filled # SEO (@thulite/seo) [seo] diff --git a/content/advanced/_index.md b/content/advanced/_index.md new file mode 100644 index 000000000..97283cf16 --- /dev/null +++ b/content/advanced/_index.md @@ -0,0 +1,19 @@ +--- +title: "Advanced" +description: "" +summary: "" +date: 2026-04-27T11:59:45+02:00 +lastmod: 2026-04-27T11:59:45+02:00 +draft: false +weight: 300 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) + section: + title: "Advanced" + iconName: "settings-2" + startUrl: "/advanced/internationalization/" +--- diff --git a/content/tags/_index.md b/content/advanced/analytics/_index.md similarity index 53% rename from content/tags/_index.md rename to content/advanced/analytics/_index.md index 7300565d5..fa11b5adb 100644 --- a/content/tags/_index.md +++ b/content/advanced/analytics/_index.md @@ -1,9 +1,13 @@ --- -title: "Tags" -date: 2026-02-17T13:04:01+01:00 -description: "Explore all tags used across our docs and blog posts to discover related topics, deep dives, and practical examples grouped by shared themes." +title: "Analytics" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 draft: false +weight: 320 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/analytics/cabin-analytics.md b/content/advanced/analytics/cabin-analytics.md new file mode 100644 index 000000000..a59a9aae1 --- /dev/null +++ b/content/advanced/analytics/cabin-analytics.md @@ -0,0 +1,34 @@ +--- +title: "Cabin Analytics" +description: "Cabin Analytics is a privacy-first, carbon conscious web analytics service." +summary: "Cabin Analytics is a privacy-first, carbon conscious web analytics service." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 323 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Cabin Analytics](https://withcabin.com/) is a privacy-first, carbon conscious web analytics service. + +## Prerequisites + +To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Cabin](https://withcabin.com/settings/domains) project. + +## Add script + +Add to `layouts/partials/head/script-header.html`: + +```html + +``` + +## Resources + +- [Cabin Analytics Documentation](https://docs.withcabin.com/) +- [Privacy law compliance](https://docs.withcabin.com/privacy.html) diff --git a/content/advanced/analytics/fathom-analytics.md b/content/advanced/analytics/fathom-analytics.md new file mode 100644 index 000000000..dc7101a60 --- /dev/null +++ b/content/advanced/analytics/fathom-analytics.md @@ -0,0 +1,34 @@ +--- +title: "Fathom Analytics" +description: "Fathom Analytics is a Google Analytics alternative that doesn't compromise visitor privacy for data." +summary: "Fathom Analytics is a Google Analytics alternative that doesn't compromise visitor privacy for data." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 325 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Fathom Analytics](https://usefathom.com/) is a Google Analytics alternative that doesn't compromise visitor privacy for data. + +## Prerequisites + +To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Fathom](https://usefathom.com/docs/start/create) project. + +## Add script + +Add to `layouts/partials/head/script-header.html`: + +```html + +``` + +## Resources + +- [Advanced embed script settings](https://usefathom.com/docs/script/script-advanced) +- [If Fathom isn't working on your site](https://usefathom.com/docs/troubleshooting/not-working) diff --git a/content/advanced/analytics/google-analytics.md b/content/advanced/analytics/google-analytics.md new file mode 100644 index 000000000..5344ad08a --- /dev/null +++ b/content/advanced/analytics/google-analytics.md @@ -0,0 +1,51 @@ +--- +title: "Google Analytics" +description: "Google Analytics is an analytics service that enables you to measure traffic and engagement across your websites and apps." +summary: "Google Analytics is an analytics service that enables you to measure traffic and engagement across your websites and apps." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 327 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Google Analytics](https://marketingplatform.google.com/about/analytics/) is an analytics service that enables you to measure traffic and engagement across your websites and apps. + +{{< callout context="note" title="Using Google Analytics GA4 with CSP" icon="info-circle" >}} + +Don't forget to update your `Content-Security-Policy` HTTP response header when using Google Analytics. [See an example](https://content-security-policy.com/examples/google-analytics/) + +{{< /callout >}} + +## Prerequisites + +To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Google Analytics 4](https://support.google.com/analytics/answer/10089681) property. + +## Add script + +Add to `layouts/partials/head/script-header.html`: + +```html +{{ template "_internal/google_analytics.html" . }} +``` + +## Add tracking ID + +Add your tracking ID to `config/_default/hugo.toml`: + +```toml +[services] + [services.googleAnalytics] + ID = 'G-MEASUREMENT_ID' +``` + +## Resources + +- [Set up Analytics for a website and/or app](https://support.google.com/analytics/answer/9304153?sjid=14124496534625981645-EU) +- [The Google tag and Tag Manager](https://developers.google.com/analytics/devguides/collection/ga4/tag-options) +- [Introduction to Google Analytics 4](https://developers.google.com/analytics/devguides/collection/ga4) diff --git a/content/advanced/analytics/overview.md b/content/advanced/analytics/overview.md new file mode 100644 index 000000000..8f980995a --- /dev/null +++ b/content/advanced/analytics/overview.md @@ -0,0 +1,30 @@ +--- +title: "Analytics Overview" +linkTitle: "Overview" +description: "Choose an analytics guide below to add a service to your Thulite project." +summary: "Choose an analytics guide below to add a service to your Thulite project." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 321 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Choose an analytics guide below to add your preferred service to a Thulite project. + +## Analytics Guides + +{{< card-grid >}} +{{< link-card src="svgs/cabin.svg" title="Cabin Analytics" href="/advanced/analytics/cabin-analytics/" >}} +{{< link-card src="svgs/simple-icons/fathom.svg" title="Fathom Analytics" href="/advanced/analytics/fathom-analytics/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/googleanalytics.svg" title="Google Analytics" href="/advanced/analytics/google-analytics/" >}} +{{< link-card src="svgs/simple-icons/plausibleanalytics.svg" title="Plausible Analytics" href="/advanced/analytics/plausible-analytics/" >}} +{{< /card-grid >}} diff --git a/content/advanced/analytics/plausible-analytics.md b/content/advanced/analytics/plausible-analytics.md new file mode 100644 index 000000000..a9e98aa54 --- /dev/null +++ b/content/advanced/analytics/plausible-analytics.md @@ -0,0 +1,45 @@ +--- +title: "Plausible Analytics" +description: "Plausible Analytics ia an easy to use and privacy-friendly Google Analytics alternative." +summary: "Plausible Analytics ia an easy to use and privacy-friendly Google Analytics alternative." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 329 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Plausible Analytics](https://plausible.io/) ia an easy to use and privacy-friendly Google Analytics alternative. + +## Prerequisites + +To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site and a [Plausible](https://plausible.io/) project. + +## Add parameters + +Add the following parameters to `config/_default/params.toml` and update with your `plausibleDomain`: + +```toml +# Add-ons +[add_ons] + plausibleDomain = "example.com" # "example.com" (default) +``` + +## Add script + +Add to `layouts/partials/head/script-header.html`: + +```html +{{ $plausibleDomain := site.Params.add_ons.plausibleDomain -}} + +``` + +## Resources + +- [Content Security Policy](https://github.com/plausible/docs/issues/20) +- [Plausible Analytics Docs](https://plausible.io/docs/) diff --git a/content/categories/_index.md b/content/advanced/cms/_index.md similarity index 51% rename from content/categories/_index.md rename to content/advanced/cms/_index.md index 9c38b5c56..2f1db4788 100644 --- a/content/categories/_index.md +++ b/content/advanced/cms/_index.md @@ -1,9 +1,13 @@ --- -title: "Categories" -date: 2026-02-17T13:03:14+01:00 -description: "Browse all documentation and blog categories in one place to quickly find related guides, tutorials, and reference pages on every topic we cover." +title: "CMS" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 draft: false +weight: 330 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/cms/cloudcannon.md b/content/advanced/cms/cloudcannon.md new file mode 100644 index 000000000..00d071df6 --- /dev/null +++ b/content/advanced/cms/cloudcannon.md @@ -0,0 +1,22 @@ +--- +title: "CloudCannon" +description: "CloudCannon is a Git-based content management system that provides a visual editor for your content." +summary: "CloudCannon is a Git-based content management system that provides a visual editor for your content." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 333 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[CloudCannon](https://cloudcannon.com) is a Git-based content management system that provides a visual editor for your content. + +## Resources + +- [The Hugo CMS for visual page building](https://cloudcannon.com/hugo-cms/) +- [Hugo Support in CloudCannon](https://cloudcannon.com/blog/hugo-support-in-cloudcannon/) diff --git a/content/advanced/cms/decap-cms.md b/content/advanced/cms/decap-cms.md new file mode 100644 index 000000000..5735d7018 --- /dev/null +++ b/content/advanced/cms/decap-cms.md @@ -0,0 +1,79 @@ +--- +title: "Decap Cms" +description: "Decap CMS (formerly Netlify CMS) is an open-source, Git-based content management system." +summary: "Decap CMS (formerly Netlify CMS) is an open-source, Git-based content management system." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 335 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Decap CMS](https://www.decapcms.org/) (formerly Netlify CMS) is an open-source, Git-based content management system. + +## Example + +Here is a simple `config.yml` configuration example: + +```yml {title="config.yml"} +locale: 'fr' +backend: + name: gitea + repo: *********/******** # Path to your Gitea repository + app_id: ********-****-****-****-************ + api_root: https://*****.*****.***/api/v1 # API URL of your Gitea instance + base_url: https://*****.*****.*** # Root URL of your Gitea instance + branch: main +media_folder: static/img +public_folder: /img +collections: + - name: 'docs' + label: 'Docs' + folder: 'content/docs' + nested: { depth: 5 } + create: true + slug: '{{slug}}' + editor: + preview: false + fields: + - { label: 'Titre', name: 'title', widget: 'string' } + - { label: 'Description', name: 'description', widget: 'string' } + - { label: 'Résumé', name: 'summary', widget: 'string' } + - { label: 'Date de publication', name: 'date', widget: 'datetime' } + - { label: 'Date de mise à jour', name: 'lastmod', widget: 'datetime' } + - { label: 'Brouillon', name: 'draft', widget: 'boolean', default: true } + - { + label: 'Menu', name: 'menu', widget: 'object', required: false, collapsed: true, + fields: [ + { + label: 'docs', name: 'docs', widget: 'object', required: false, collapsed: true, + fields: [ + { label: 'Parent', name: 'parent', widget: 'string' }, + { label: 'Identifiant', name: 'identifier', widget: 'string' } + ] + } + ] + } + - { label: 'Poid', name: 'weight', widget: 'number', value_type: 'integer' } + - { label: 'toc', name: 'toc', widget: 'boolean', default: true } + - { + label: 'SEO', name: 'seo', widget: 'object', required: false, collapsed: true, + fields: [ + { label: 'Titre', name: 'title', widget: 'string' }, + { label: 'Description', name: 'description', widget: 'string' }, + { label: 'Canonical', name: 'canonical', widget: 'string' }, + { label: 'noindex', name: 'noindex', widget: 'boolean', default: false } + ] + } + - { label: 'Body', name: 'body', widget: 'markdown' } +``` + +## Resources + +- [How to integrate Decap CMS with Hugo](https://decapcms.org/docs/hugo/). +- [Hugo template with Decap CMS](https://github.com/decaporg/one-click-hugo-cms) diff --git a/content/advanced/cms/overview.md b/content/advanced/cms/overview.md new file mode 100644 index 000000000..e2e0dc450 --- /dev/null +++ b/content/advanced/cms/overview.md @@ -0,0 +1,29 @@ +--- +title: "CMS Overview" +linkTitle: "Overview" +description: "Choose a CMS guide below to connect a headless CMS to your Thulite project." +summary: "Choose a CMS guide below to connect a headless CMS to your Thulite project." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 331 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Choose a CMS guide below to connect a headless CMS to your Thulite project. + +## CMS Guides + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/cloudcannon.svg" title="CloudCannon" href="/advanced/cms/cloudcannon/" >}} +{{< link-card src="svgs/simple-icons/decapcms.svg" title="Decap CMS" href="/advanced/cms/decap-cms/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/tina.svg" title="Tina CMS" href="/advanced/cms/tina-cms/" class="w-50" >}} +{{< /card-grid >}} diff --git a/content/advanced/cms/tina-cms.md b/content/advanced/cms/tina-cms.md new file mode 100644 index 000000000..74f50741b --- /dev/null +++ b/content/advanced/cms/tina-cms.md @@ -0,0 +1,159 @@ +--- +title: "Tina CMS" +description: "Tina CMS is a Git-backed headless content management system." +summary: "Tina CMS is a Git-backed headless content management system." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 337 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Tina CMS](https://tina.io/) is a Git-backed headless content management system. + +## Prerequisites + +To follow this guide, you'll need an existing [Thulite](https://thulite.io/) site. + +## Setup + +{{< steps >}} +{{< step >}} + +Run one of the following commands to initialize Tina in your Thulite project. + +{{< tabs "initialize-tina-command" >}} +{{< tab "npm" >}} + +```bash +npx @tinacms/cli@latest init +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm dlx @tinacms/cli@latest init +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn dlx @tinacms/cli@latest init +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bunx @tinacms/cli@latest init +``` + +{{< /tab >}} +{{< /tabs >}} + +- When prompted for a Cloud ID, press Enter to skip. You can generate one later if you decide to use Tina Cloud. +- When prompted with "What framework are you using?", choose `Other`. +- When asked where public assets are stored, press Enter. + +After the command finishes, you should have a `.tina` folder in the project root and a generated `hello-world.md` file in `content/posts`. + +{{< /step >}} +{{< step >}} + +Update the `dev` script in `package.json`: + +```json {title="package.json"} +{ + "scripts": { + "dev": "tinacms dev -c \"hugo server --disableFastRender --noHTTPCache\"" + } +} +``` + +{{< /step >}} +{{< step >}} + +Tina CMS is now set up in local mode. Test it by running the `dev` script, then navigating to `/admin/index.html#/collections/post`. + +Editing the “Hello, World!” post will update the `content/posts/hello-world.md` file in your project directory. + +{{< /step >}} +{{< step >}} + +Set up your Tina collections by editing the `schema.collections` property in `.tina/config.ts`. + +For example, you can add a required `posted` front matter field to posts: + +```js {title=".tina/config.ts"} +import { defineConfig } from "tinacms"; + +// Your hosting provider likely exposes this as an environment variable +const branch = process.env.HEAD || process.env.VERCEL_GIT_COMMIT_REF || "main"; + +export default defineConfig({ + branch, + clientId: null, // Get this from tina.io + token: null, // Get this from tina.io + build: { + outputFolder: "admin", + publicFolder: "public", + }, + media: { + tina: { + mediaRoot: "images", + publicFolder: "public", + }, + }, + schema: { + collections: [ + { + name: "posts", + label: "Posts", + path: "src/content/posts", + format: 'mdx', + fields: [ + { + type: "string", + name: "title", + label: "Title", + isTitle: true, + required: true, + }, + { + type: "datetime", + name: "posted", + label: "Date Posted", + required: true, + }, + { + type: "rich-text", + name: "body", + label: "Body", + isBody: true, + }, + ], + }, + ], + }, +}); +``` + +Learn more about collections in the [Tina docs](https://tina.io/docs/reference/collections/). +{{< /step >}} +{{< step >}} + +In production, Tina CMS can commit changes directly to your GitHub repository. For production setup, you can use [TinaCloud](https://tina.io/docs/tinacloud) or self-host the [Tina Data Layer](https://tina.io/docs/self-hosted/overview/). + +{{< /step >}} +{{< /steps >}} + +## Resources + +- [Hugo + TinaCMS Setup Guide](https://tina.io/docs/frameworks/hugo/). diff --git a/content/advanced/email-obfuscation.md b/content/advanced/email-obfuscation.md new file mode 100644 index 000000000..f190b832f --- /dev/null +++ b/content/advanced/email-obfuscation.md @@ -0,0 +1,103 @@ +--- +title: "Email Obfuscation" +description: "Obfuscate email addresses in Thulite with a simple, effective CSS technique." +summary: "Obfuscate email addresses in Thulite with a simple, effective CSS technique." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 310 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This guide shows how to obfuscate email addresses in Thulite using a simple, effective CSS technique. + +## Background + +The article [Email address obfuscation: What works in 2026?](https://spencermortensen.com/articles/email-obfuscation/) by Spencer Mortensen reviews ways to hide email addresses from spam bots while keeping them readable for users. It compares plain text, HTML entities, CSS display properties, JavaScript techniques, and other methods. + +Results suggest that methods like CSS `display: none` and some JavaScript approaches are highly effective, while options like HTML comments and symbol substitution offer limited protection. + +## Setup + +{{< steps >}} +{{< step >}} + +Add a default (fallback) email address to `config/_default/params.toml`: + +```toml {title="params.toml"} +# defaultEmail +defaultEmail = "email@example.com" +``` + +{{< /step >}} +{{< step >}} + +Add the following CSS to `assets/scss/common/_custom.scss`: + +```scss {title="_custom.scss"} +span.email b { + display: none; +} +``` + +{{< /step >}} +{{< step >}} + +Create the shortcode file `layouts/shortcodes/email.html` with the following content: + +```html {title="email.html"} +{{- /* Set defaults and get args. */}} +{{- $address := index .Params 0 | default site.Params.defaultEmail }} + +{{- /* Get parts. */}} +{{- $addressParts := split $address "@" }} +{{- $userName := (index $addressParts 0) }} +{{- $rootDomain := (index $addressParts 1) }} +{{- $rootDomainParts := split $rootDomain "." }} +{{- $domainName := (index $rootDomainParts 0) }} +{{- $topLevelDomain := (index $rootDomainParts 1) }} + +{{- /* Render. */}} + +``` + +This shortcode uses the provided email address or falls back to `defaultEmail`. It then splits the address into `userName`, `domainName`, and `topLevelDomain` and renders the obfuscated HTML. +{{< /step >}} +{{< /steps >}} + +## Usage + +You can now use the shortcode in Markdown with `defaultEmail`: + +```md +{{}} +``` + +Rendering: + +```html + +``` + +Or provide an email address explicitly: + +```md +{{}} +``` + +Rendering: + +```html + +``` + +## Resources + +- [Email address obfuscation: What works in 2026?](https://spencermortensen.com/articles/email-obfuscation/) diff --git a/content/advanced/internationalization.md b/content/advanced/internationalization.md new file mode 100644 index 000000000..214ecd2aa --- /dev/null +++ b/content/advanced/internationalization.md @@ -0,0 +1,73 @@ +--- +title: "Internationalization" +description: "Set up and manage multilingual content in your Thulite project." +summary: "Set up and manage multilingual content in your Thulite project." +date: 2026-03-25T08:23:03+01:00 +lastmod: 2026-03-25T08:23:03+01:00 +draft: false +weight: 305 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Internationalization (i18n) in Thulite is powered by Hugo's multilingual mode. + +## Quick setup + +1. Define your languages in `config/_default/languages.toml`. +2. Create language-specific content directories (for example, `content/en`, `content/de`, `content/nl`). +3. Add translated pages with matching paths in each language directory. +4. Add UI string translations in `i18n/*.toml`. + +## Configure languages + +In `config/_default/languages.toml`, each language has its own settings: + +```toml {title="languages.toml"} +[en] + languageName = "English" + contentDir = "content/en" + weight = 10 + +[de] + languageName = "German" + contentDir = "content/de" + weight = 15 +``` + +`contentDir` tells Hugo where to find content for each language. + +## Add translated content + +Keep the same relative path for each translation. + +- English: `content/en/docs/getting-started.md` +- German: `content/de/docs/getting-started.md` + +This keeps URLs and page structure aligned across languages. + +## Translate interface strings + +Store shared UI translations in `i18n` files, such as: + +- `i18n/en.toml` +- `i18n/de.toml` +- `i18n/nl.toml` + +Example: + +```toml +[read_more] +other = "Read more" +``` + +Use Hugo's `i18n` function in templates to render translated strings. + +## Resources + +- [Multilingual mode](https://gohugo.io/content-management/multilingual/) diff --git a/content/contributors/_index.md b/content/basics/_index.md similarity index 51% rename from content/contributors/_index.md rename to content/basics/_index.md index 94c6d6140..2bd458381 100644 --- a/content/contributors/_index.md +++ b/content/basics/_index.md @@ -1,12 +1,19 @@ --- -title: "Contributors" -date: 2026-02-17T13:05:08+01:00 -description: "Meet the people who contribute content, code, and ideas to this project, and explore their profiles to discover more of their work and expertise." +title: "Basics" +description: "" +summary: "" +date: 2026-04-27T11:59:36+02:00 +lastmod: 2026-04-27T11:59:36+02:00 draft: false +weight: 200 params: seo: title: "" # custom title (optional) description: "" # custom description (recommended) canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) + section: + title: "Basics" + iconName: "box" + startUrl: "/basics/markdown/" --- diff --git a/content/basics/archetypes.md b/content/basics/archetypes.md new file mode 100644 index 000000000..e886adfb2 --- /dev/null +++ b/content/basics/archetypes.md @@ -0,0 +1,16 @@ +--- +title: "Archetypes" +description: "" +summary: "" +date: 2026-03-25T08:23:03+01:00 +lastmod: 2026-03-25T08:23:03+01:00 +draft: false +weight: 420 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/deploy/_index.md b/content/basics/deploy/_index.md new file mode 100644 index 000000000..4e2eac0f3 --- /dev/null +++ b/content/basics/deploy/_index.md @@ -0,0 +1,18 @@ +--- +title: "Deploy" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + sidebar: + collapsed: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/deploy/cloudflare.md b/content/basics/deploy/cloudflare.md new file mode 100644 index 000000000..43aa9b0bd --- /dev/null +++ b/content/basics/deploy/cloudflare.md @@ -0,0 +1,112 @@ +--- +title: "Cloudflare" +description: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." +summary: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can deploy your Thulite project on [Cloudflare Pages](https://pages.cloudflare.com/), a JAMstack platform for frontend developers to collaborate and deploy websites. + +This guide includes: + +- [How to deploy through the Cloudflare Pages Dashboard](#how-to-deploy-a-site-with-git) +- [How to deploy using Wrangler, the Cloudflare CLI](#how-to-deploy-a-site-using-wrangler) + +## Prerequisites + +To get started, you will need: + +- A Cloudflare account. If you don't already have one, you can create a free Cloudflare account during the process. +- Your app code pushed to a [GitHub](https://github.com/) or a [GitLab](https://about.gitlab.com/) repository. + +## How to deploy a site with Git + +1. Set up a new project on Cloudflare Pages. +2. Push your code to your git repository (GitHub, GitLab). +3. Log in to the Cloudflare dashboard and select your account in **Account Home** > **Pages**. +4. Select **Create a new Project** and the **Connect Git** option. +5. Select the git project you want to deploy and click **Begin setup** +6. Use the following build settings: + + - **Framework preset**: `exit 0` + - **Build command:** `npm run build` + - **Build output directory:** `public` + +7. Click the **Save and Deploy** button. + +## How to deploy a site using Wrangler + +1. Install the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/get-started/) in your project: + + {{< tabs "tabs-1" >}} + {{< tab "npm" >}} + ```bash + npm install wrangler --save-dev + ``` + {{< /tab >}} + {{< tab "pnpm" >}} + ```bash + pnpm add wrangler --save-dev + ``` + {{< /tab >}} + {{< tab "Yarn" >}} + ```bash + yarn add --dev wrangler + ``` + {{< /tab >}} + {{< /tabs >}} + +2. Authorize Wrangler with your Cloudflare account using OAuth: + + ```bash + wrangler login + ``` + +3. Run your build command: + + {{< tabs "tabs-1" >}} + {{< tab "npm" >}} + ```bash + npm run build + ``` + {{< /tab >}} + {{< tab "pnpm" >}} + ```bash + pnpm run build + ``` + {{< /tab >}} + {{< tab "Yarn" >}} + ```bash + yarn run build + ``` + {{< /tab >}} + {{< /tabs >}} + +4. Deploy the build output directory as a Pages deployment: + + ```bash + wrangler pages deploy public + ``` + +After your assets are uploaded, Wrangler will give you a preview URL to inspect your site. When you log into the Cloudflare Pages dashboard, you will see your new project. + +### Enabling Preview locally with Wrangler + +Update the preview script to run `wrangler` instead of Thulite' built-in preview command: + +```json title="package.json" +"preview": "wrangler pages dev ./public" +``` + +## Troubleshooting + +If you're encountering errors, check whether the `node` version you're using locally (`node -v`) matches the `NODE_VERSION` environment variable under **Settings**. diff --git a/content/basics/deploy/github.md b/content/basics/deploy/github.md new file mode 100644 index 000000000..4b76d7ea0 --- /dev/null +++ b/content/basics/deploy/github.md @@ -0,0 +1,138 @@ +--- +title: "Github" +description: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." +summary: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can use [GitHub Pages](https://pages.github.com/) to host a Thulite website directly from a repository on [GitHub.com](https://github.com/). + +:::tip[Looking for an example?] +Check out the [official GitHub Pages Doks example project](https://github.com/thuliteio/doks-gh-pages)! +::: + +## How to deploy + +You can deploy a Thulite site to GitHub Pages by using [GitHub Actions](https://github.com/features/actions) to automatically build and deploy your site. To do this, your source code must be hosted on GitHub. + +Follow the instructions below to deploy your Thulite site to GitHub pages. + +1. Create a new file in your project at `.github/workflows/deploy.yml` and paste in the YAML below. + + ```yaml title="deploy.yml" + # Sample workflow for building and deploying a Thulite site to GitHub Pages + name: Deploy Thulite site to Pages + + on: + # Runs on pushes targeting the default branch + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + + # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages + permissions: + contents: read + pages: write + id-token: write + + # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. + # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. + concurrency: + group: "pages" + cancel-in-progress: false + + # Default to bash + defaults: + run: + shell: bash + + jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.126.0 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'npm' + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + - name: Install dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build production website + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: production + HUGO_ENV: production + TZ: America/Los_Angeles + run: | + npm run build \ + -- \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + + ``` + +2. On GitHub, go to your repository's **Settings** tab and find the **Pages** section of the settings. + +3. Choose **GitHub Actions** as the **Source** of your site. + +4. Commit the new workflow file and push it to GitHub. + +5. Copy the **Your site is published at** URL and paste it as `baseurl` in `./config/production/hugo.toml`. + +7. Push the changes to GitHub and wait for the action to finish succesfully (after approximately 30 seconds). + +That's it. After a minute or so, you site is avaliable at the **Your site is published at** URL. When you push changes to your Thulite project's repository, the GitHub Action will automatically deploy them for you. + +:::tip[Set up a custom domain] +You can optionally set up a custom domain by adding the following `./public/CNAME` file to your project: + +```js title="public/CNAME" +sub.mydomain.com +``` + +This will deploy your site at your custom domain instead of `user.github.io`. Don't forget to also [configure DNS for your domain provider](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain). +::: diff --git a/content/basics/deploy/gitlab.md b/content/basics/deploy/gitlab.md new file mode 100644 index 000000000..081695f56 --- /dev/null +++ b/content/basics/deploy/gitlab.md @@ -0,0 +1,56 @@ +--- +title: "Gitlab" +description: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." +summary: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can use [GitLab Pages](https://pages.gitlab.io/) to host a Thulite site for your [GitLab](https://about.gitlab.com/) projects, groups, or user account. + +:::tip[Looking for an example?] +Check out the [GitLab Pages Doks example project](https://gitlab.com/h-enk/doks-gitlab-pages)! +::: + +## How to deploy + +Follow the instructions below to deploy your Thulite site to GitLab pages. + +1. Create a file called `.gitlab-ci.yml` in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content: + + ```yaml title=".gitlab-ci.yml" + # The Docker image that will be used to build your app + image: node:lts + # Functions that should be executed before the build script is run + before_script: + - npm ci + pages: + script: + - npm run build + artifacts: + paths: + # The folder that contains the files to be exposed at the Page URL + - public + rules: + # This ensures that only pushes to the default branch will trigger + # a pages deploy + - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH + ``` + +2. On GitLab, go to your repository's Deploy tab and find the Pages section. + +3. Copy the **Access pages** URL and paste it as `baseurl` in `./config/production/hugo.toml`. + +4. Set `canonifyURLs = true` in `./config/production/hugo.toml`. + +5. Push the changes to GitLab. + +That's it. After a minute or so, you site is avaliable at the **Access pages** URL. diff --git a/content/basics/deploy/google-firebase.md b/content/basics/deploy/google-firebase.md new file mode 100644 index 000000000..43681b868 --- /dev/null +++ b/content/basics/deploy/google-firebase.md @@ -0,0 +1,70 @@ +--- +title: "Google Firebase" +description: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." +summary: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Firebase Hosting](https://firebase.google.com/products/hosting) is a service provided by Google's [Firebase](https://firebase.google.com/) app development platform, which can be used to deploy a Thulite site. + +## Prerequisites + +To follow this guide, you will need to have [firebase-tools](https://github.com/firebase/firebase-tools) installed. + +## How to deploy + +1. Create `firebase.json` at the root of your project with the following content: + + ```json title="firebase.json" + { + "hosting": { + "public": "public", + "ignore": [] + } + } + ``` + +2. Create `.firebaserc` at the root of your project with the following content: + + ```json title= ".firebaserc" + { + "projects": { + "default": "" + } + } + ``` + +3. Run your build command: + + {{< tabs "tabs-1" >}} + {{< tab "npm" >}} + ```bash + npm run build + ``` + {{< /tab >}} + {{< tab "pnpm" >}} + ```bash + pnpm run build + ``` + {{< /tab >}} + {{< tab "Yarn" >}} + ```bash + yarn run build + ``` + {{< /tab >}} + {{< /tabs >}} + +4. Deploy using the command: + + ```bash + firebase deploy + ``` diff --git a/content/basics/deploy/microsoft-azure.md b/content/basics/deploy/microsoft-azure.md new file mode 100644 index 000000000..58b6abc2d --- /dev/null +++ b/content/basics/deploy/microsoft-azure.md @@ -0,0 +1,94 @@ +--- +title: "Microsoft Azure" +description: "Azure is a cloud platform from Microsoft. You can deploy your Thulite site with Microsoft Azure's Static Web Apps service." +summary: "Azure is a cloud platform from Microsoft. You can deploy your Thulite site with Microsoft Azure's Static Web Apps service." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Azure](https://azure.microsoft.com/) is a cloud platform from Microsoft. You can deploy your Thulite site with Microsoft Azure's [Static Web Apps](https://aka.ms/staticwebapps) service. + +:::tip[Looking for an example?] +Check out the [official Microsoft Azure Doks example project](https://github.com/thuliteio/doks-microsoft-azure)! +::: + +This guide takes you through deploying your Thulite site stored in GitHub using Visual Studio Code. Please see Microsoft guides for using an [Azure Pipelines Task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/azure-static-web-app-v0?view=azure-pipelines) for other setups. + +## Prerequisites + +To follow this guide, you will need: + +- An Azure account and a subscription key. You can create a [free Azure account here](https://azure.microsoft.com/free). +- Your app code pushed to [GitHub](https://github.com/). +- The [SWA Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps) in [Visual Studio Code](https://code.visualstudio.com/). + +## How to deploy + +1. Open your project in VS Code. + +2. Open the Static Web Apps extension, sign in to Azure, and click the **+** button to create a new Static Web App. You will be prompted to designate which subscription key to use. + +3. Follow the wizard started by the extension to give your app a name, choose a framework preset, and designate the app root (usually `/`) and built file location (use `/public`). Thulite is not listed in the built-in templates in Azure so you will need to select `custom`. The wizard will run and will create a [GitHub Action](https://github.com/features/actions) in the `.github` folder of your repo. (This folder will be automatically created if it does not already exist.) + +The GitHub Action will deploy your app (you can see its progress in your repo's Actions tab on GitHub). When successfully completed, you can view your app at the address shown in the SWA Extension's progress window by clicking the **Browse Website** button (this will appear after the GitHub Action has run). + +## Known Issues + +The build fails because an old (no longer supported) Node version and/or Hugo version is used. + +### Node version + +To resolve this, update your projects `package.json` file with this snippet: + +```json + "engines": { + "node": ">=20.11.0" + }, +``` + +### Hugo version + +To resolve this, update your workflow file by providing a value for `HUGO_VERSION` in the `env` section: + +```yaml +jobs: + build_and_deploy_job: + if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') + runs-on: ubuntu-latest + name: Build and Deploy Job + steps: + - uses: actions/checkout@v3 + with: + submodules: true + lfs: false + - name: Build And Deploy + id: builddeploy + uses: Azure/static-web-apps-deploy@v1 + with: + azure_static_web_apps_api_token: ${{ secrets.AZURE_STATIC_WEB_APPS_API_TOKEN_NICE_BUSH_0D736421E }} + repo_token: ${{ secrets.GITHUB_TOKEN }} # Used for Github integrations (i.e. PR comments) + action: "upload" + ###### Repository/Build Configurations - These values can be configured to match your app requirements. ###### + # For more information regarding Static Web App workflow configurations, please visit: https://aka.ms/swaworkflowconfig + app_location: "/" # App source code path + api_location: "api" # Api source code path - optional + output_location: "public" # Built app content directory - optional + ###### End of Repository/Build Configurations ###### + env: + HUGO_VERSION: 0.131.0 + +``` + +## Official Resources + +- [Deploy a Hugo site to Azure Static Web Apps](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo) +- [Custom Hugo version](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo#custom-hugo-version) +- [Microsoft Azure Static Web Apps documentation](https://learn.microsoft.com/en-us/azure/static-web-apps/) diff --git a/content/basics/deploy/netlify.md b/content/basics/deploy/netlify.md new file mode 100644 index 000000000..0290b5d68 --- /dev/null +++ b/content/basics/deploy/netlify.md @@ -0,0 +1,102 @@ +--- +title: "Netlify" +description: "Netlify offers hosting and serverless backend services for web applications and static websites. Any Thulite site can be hosted on Netlify!" +summary: "Netlify offers hosting and serverless backend services for web applications and static websites. Any Thulite site can be hosted on Netlify!" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Netlify](https://netlify.com) offers hosting and serverless backend services for web applications and static websites. Any Thulite site can be hosted on Netlify! + +This guide includes instructions for deploying to Netlify through the website UI or Netlify's CLI. + +## How to deploy + +You can deploy to Netlify through the website UI or using Netlify's CLI (command line interface). + +### Website UI Deployment + +If your project is stored in GitHub, GitLab, BitBucket, or Azure DevOps, you can use the Netlify website UI to deploy your Thulite site. + +1. Click Add a new site in your [Netlify dashboard](https://app.netlify.com/) + +2. Choose Import an existing project + + When you import your Thulite repository from your Git provider, Netlify should automatically detect and pre-fill the correct configuration settings for you. + +3. Make sure that the following settings are entered, then press the Deploy button: + + - **Build Command:** `npm run build` + - **Publish directory:** `public` + + After deploying, you will be redirected to the site overview page. There, you can edit the details of your site. + +Any future changes to your source repository will trigger preview and production deploys based on your deployment configuration. + +#### `netlify.toml` file + +You can optionally create a new `netlify.toml` file at the top level of your project repository to configure your build command and publish directory, as well as other project settings including environment variables and redirects. Netlify will read this file and automatically configure your deployment. + +To configure the default settings, create a `netlify.toml` file with the following contents: + +```toml +[build] + command = "npm run build" + publish = "public" +``` + + +- More info at ["Deploy with git"](https://docs.netlify.com/site-deploys/create-deploys/#deploy-with-git) on Netlify's docs + + +### CLI Deployment + +You can also create a new site on Netlify and link up your Git repository by installing and using the [Netlify CLI](https://cli.netlify.com/). + + +1. Install Netlify's CLI globally + + ```bash + npm install --global netlify-cli + ``` + +2. Run `netlify login` and follow the instructions to log in and authorize Netlify +3. Run `netlify init` and follow the instructions +4. Confirm your build command (`npm run build`) + + The CLI will automatically detect the build settings (`npm run build`) and deploy directory (`public`), and will offer to automatically generate a [`netlify.toml` file](#netlifytoml-file) with those settings. + +5. Build and deploy by pushing to Git + + The CLI will add a deploy key to the repository, which means your site will be automatically rebuilt on Netlify every time you `git push`. + + +- More details from Netlify on [Netlify CLI](https://docs.netlify.com/site-deploys/create-deploys/#netlify-cli) + + +### Set a Node.js Version + +If you are using a legacy [build image](https://docs.netlify.com/configure-builds/get-started/#build-image-selection) (Xenial) on Netlify, make sure that your Node.js version is set. Thulite requires `v18.14.1` or higher. + +You can [specify your Node.js version in Netlify](https://docs.netlify.com/configure-builds/manage-dependencies/#node-js-and-javascript) using: +- a [`.nvmrc`](https://github.com/nvm-sh/nvm#nvmrc) file in your base directory. +- a `NODE_VERSION` environment variable in your site's settings using the Netlify project dashboard. +- a `NODE_VERSION` environment variable in your site's `netlify.toml`, for example: + + ```toml + [build.environment] + NODE_VERSION = "20.10.0" + NPM_VERSION = "10.2.3" + ``` + +## Using Netlify Functions + +No special configuration is required to use Netlify Functions with Thulite. Add a `netlify/functions` directory to your project root and follow [the Netlify Functions documentation](https://docs.netlify.com/functions/overview/) to get started! diff --git a/content/basics/deploy/overview.md b/content/basics/deploy/overview.md new file mode 100644 index 000000000..cf16f43cd --- /dev/null +++ b/content/basics/deploy/overview.md @@ -0,0 +1,157 @@ +--- +title: "Deploy Overview" +linkTitle: "Overview" +description: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." +summary: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 100 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulite site. + +## Deployment Guides + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/netlify.svg" title="Netlify" href="/basics/deploy/netlify/" >}} +{{< link-card src="svgs/simple-icons/vercel.svg" title="Vercel" href="/basics/deploy/vercel/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/github.svg" title="GitHub Pages" href="/basics/deploy/github/" >}} +{{< link-card src="svgs/simple-icons/gitlab.svg" title="GitLab Pages" href="/basics/deploy/gitlab/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/cloudflarepages.svg" title="Cloudflare Pages" href="/basics/deploy/cloudflare/" >}} +{{< link-card src="svgs/simple-icons/render.svg" title="Render" href="/basics/deploy/render/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-iconsfirebase.svg" title="Google Firebase" href="/basics/deploy/google-firebase/" >}} +{{< link-card src="svgs/microsoft.svg" title="Microsoft Azure" href="/basics/deploy/microsoft-azure/" >}} +{{< /card-grid >}} + +## Quick Deploy Options + +You can build and deploy a Thulite site to a number of hosts quickly using either their website's dashboard UI or a CLI. + +### Website UI + +A quick way to deploy your website is to connect your Thulite project's online Git repository (e.g. GitHub, GitLab, Bitbucket) to a host provider and take advantage of continuous deployment using Git. + +These host platforms automatically detect pushes to your Thulite project's source repository, build your site and deploy it to the web at a custom URL or your personal domain. Often, setting up a deployment on these platforms will follow steps something like the following: + +1. Add your repository to an online Git provider (e.g. in GitHub, GitLab, Bitbucket) + +2. Choose a host that supports **continuous deployment** (e.g. [Netlify](/guides/deploy/netlify/) or [Vercel](/guides/deploy/vercel/)) and import your Git repository as a new site/project. + + Many common hosts will recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy your site as shown below. (If not, these settings can be changed.) + + :::note[Deploy settings] + - **Build Command:** `npm run build` + - **Publish directory:** `public` + ::: + +3. Click "Deploy" and your new website will be created at a unique URL for that host (e.g. `new-thulite-site.netlify.app`). + +The host will be automatically configured to watch your Git provider's main branch for changes, and to rebuild and republish your site at each new commit. These settings can typically be configured in your host provider's dashboard UI. + +### CLI Deployment + +Some hosts will have their own command line interface (CLI) you can install globally to your machine using npm. Often, using a CLI to deploy looks something like the following: + +1. Install your host's CLI globally, for example: + + {{< tabs "tabs-1" >}} + {{< tab "npm" >}} + ```bash + npm install --global netlify-cli + ``` + {{< /tab >}} + {{< tab "pnpm" >}} + ```bash + pnpm add --global netlify-cli + ``` + {{< /tab >}} + {{< tab "Yarn" >}} + ```bash + yarn global add netlify-cli + ``` + {{< /tab >}} + {{< /tabs >}} + +2. Run the CLI and follow any instructions for authorization, setup etc. + +3. Build your site and deploy to your host + + Many common hosts will build and deploy your site for you. They will usually recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy as shown below. (If not, these settings can be changed.) + + :::note[Deploy settings] + - **Build Command:** `npm run build` + - **Publish directory:** `public` + ::: + + + Other hosts will require you to [build your site locally](#building-your-site-locally) and deploy using the command line. + +## Building Your Site Locally + +Many hosts like Netlify and Vercel will build your site for you and then publish that build output to the web. But, some sites will require you to build locally and then run a deploy command or upload your build output. + +You may also wish to build locally to [preview your site](#previewing-your-site-locally), or to catch any potential errors and warnings in your own environment. + +Run the command `npm run build` to build your Thulite site. + +{{< tabs "tabs-1" >}} + {{< tab "npm" >}} +```bash +npm run build +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash +pnpm run build +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash +yarn run build +``` + {{< /tab >}} +{{< /tabs >}} + +By default, the build output will be placed at `public/`. This location can be changed using the [`publishDir` configuration option](https://gohugo.io/getting-started/configuration/#publishdir). + +## Previewing Your Site Locally + +Next to Hugo's built-in development server, Thulite ships with [http-server](https://github.com/http-party/http-server), a simple, zero-configuration command-line static HTTP server. + +Run the command `npm run preview` to preview your Thulite site. + +{{< tabs "tabs-1" >}} + {{< tab "npm" >}} +```bash +npm run preview +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash +pnpm run preview +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash +yarn run preview +``` + {{< /tab >}} +{{< /tabs >}} + +The `http-server` script is configured to run with [gzip](https://developer.mozilla.org/en-US/docs/Glossary/GZip_compression), [brotli](https://developer.mozilla.org/en-US/docs/Glossary/Brotli_compression), and [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) enabled. These settings can be changed using the [available options](https://github.com/http-party/http-server#available-options). diff --git a/content/basics/deploy/render.md b/content/basics/deploy/render.md new file mode 100644 index 000000000..10cb14284 --- /dev/null +++ b/content/basics/deploy/render.md @@ -0,0 +1,28 @@ +--- +title: "Render" +description: "You can deploy your Thulite project to Render, a service to build websites with free TLS certificates, a global CDN, DDoS protection, private networks, and auto deploy..." +summary: "You can deploy your Thulite project to Render, a service to build websites with free TLS certificates, a global CDN, DDoS protection, private networks, and auto deploy..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can deploy your Thulite project to [Render](https://render.com/), a service to build websites with free TLS certificates, a global CDN, DDoS protection, private networks, and auto deploys from Git. + +## How to deploy + +1. Create a [render.com account](https://dashboard.render.com/) and sign in +2. Click the **New +** button from your dashboard and select **Static Site** +3. Connect your [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/) repository or alternatively enter the public URL of a public repository +4. Give your website a name, select the branch and specify the build command and publish directory + - **build command:** `npm run build` + - **publish directory:** `public` + - **Environment variables (advanced)**: By default, Render uses Node.js 14.17.0, but Thulite [requires a higher version](/install/auto/#prerequisites). Add an environment variable with a **Variable key** of `NODE_VERSION` and a **Value** of `18.14.1` or higher to tell Render to use a compatible Node.js version. Alternatively, add a [`.node-version`](https://render.com/docs/node-version) or [`.nvmrc`](https://render.com/docs/node-version) file to your project to specify a Node.js version. +5. Click the **Create Static Site** button diff --git a/content/basics/deploy/vercel.md b/content/basics/deploy/vercel.md new file mode 100644 index 000000000..4f9733070 --- /dev/null +++ b/content/basics/deploy/vercel.md @@ -0,0 +1,56 @@ +--- +title: "Vercel" +description: "You can use Vercel to deploy a Thulite site to their global edge network with zero configuration." +summary: "You can use Vercel to deploy a Thulite site to their global edge network with zero configuration." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can use [Vercel](http://vercel.com/) to deploy a Thulite site to their global edge network with zero configuration. + +This guide includes instructions for deploying to Vercel through the website UI or Vercel's CLI. + +## How to deploy + +You can deploy to Vercel through the website UI or using Vercel’s CLI (command line interface). + +### Website UI Deployment + +1. Push your code to your online Git repository (GitHub, GitLab, BitBucket). +2. [Import your project](https://vercel.com/new) into Vercel. +3. Vercel will automatically detect Thulite and configure the right settings. +4. Your application is deployed! + +After your project has been imported and deployed, all subsequent pushes to branches will generate [Preview Deployments](https://vercel.com/docs/concepts/deployments/preview-deployments), and all changes made to the Production Branch (commonly “main”) will result in a [Production Deployment](https://vercel.com/docs/concepts/deployments/environments#production). + + +- Learn more about Vercel's [Git Integration](https://vercel.com/docs/concepts/git). + + +### CLI Deployment + +1. Install the [Vercel CLI](https://vercel.com/cli) and run `vercel` to deploy. + + ```bash + npm install -g vercel && vercel + ``` + +2. Vercel will automatically detect Thulite and configure the right settings. +3. When asked `Want to override the settings? [y/N]`, choose `N`. +4. Your application is deployed! + + +### Project config with vercel.json + +You can use `vercel.json` to override the default behavior of Vercel and to configure additional settings. For example, you may wish to attach headers to HTTP responses from your Deployments. + + +- Learn more about [Vercel's project configuration](https://vercel.com/docs/project-configuration). diff --git a/content/basics/fonts.md b/content/basics/fonts.md new file mode 100644 index 000000000..3859f7073 --- /dev/null +++ b/content/basics/fonts.md @@ -0,0 +1,11 @@ +--- +title: Using custom fonts +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/basics/images.md b/content/basics/images.md new file mode 100644 index 000000000..ea5d29d0e --- /dev/null +++ b/content/basics/images.md @@ -0,0 +1,11 @@ +--- +title: Using images +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/basics/integrations/_index.md b/content/basics/integrations/_index.md new file mode 100644 index 000000000..265ac4947 --- /dev/null +++ b/content/basics/integrations/_index.md @@ -0,0 +1,18 @@ +--- +title: "Integrations" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 550 +params: + toc: true + sidebar: + collapsed: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/integrations/bolt-core.md b/content/basics/integrations/bolt-core.md new file mode 100644 index 000000000..d2a8d9b79 --- /dev/null +++ b/content/basics/integrations/bolt-core.md @@ -0,0 +1,19 @@ +--- +title: "Bolt Core" +description: "Core integration for the Bolt theme." +summary: "Core integration for the Bolt theme." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Core integration for the Bolt theme. + +[..] diff --git a/content/basics/integrations/bootstrap.md b/content/basics/integrations/bootstrap.md new file mode 100644 index 000000000..35b5dd1bd --- /dev/null +++ b/content/basics/integrations/bootstrap.md @@ -0,0 +1,62 @@ +--- +title: "Bootstrap" +description: "Bootstrap integration for Thulite." +summary: "Bootstrap integration for Thulite." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Bootstrap integration for Thulite. + +## Status + +[![npm (scoped)](https://img.shields.io/npm/v/@thulite/bootstrap?style=flat-square)](https://www.npmjs.com/package/@thulite/bootstrap) + +## Installation + +```bash +npm i -D @thulite/bootstrap +``` + +## Setup + +Add mounts to `./config/_default/module.toml`: + +```toml +[[mounts]] + source = "node_modules/@thulite/bootstrap/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@thulite/bootstrap/layouts" + target = "layouts" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "layouts" + target = "layouts" +``` + +## How to use + +[..] + +## Credits + +This npm package is based on the Bootstrap examples: + +- [Bootstrap Color Modes](https://github.com/twbs/examples/tree/main/color-modes) +- [Bootstrap w/ Vite](https://github.com/twbs/examples/tree/main/vite) + +{{< link-card title="Add integrations" href="/guides/integrations/" >}} diff --git a/content/basics/integrations/core.md b/content/basics/integrations/core.md new file mode 100644 index 000000000..e6c5f3028 --- /dev/null +++ b/content/basics/integrations/core.md @@ -0,0 +1,101 @@ +--- +title: "Thulite core" +description: "Official core integration for Thulite." +summary: "Official core integration for Thulite." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +# Thulite core + +Official core integration for Thulite. + +## Official Resources + +- [GitHub Repository](https://github.com/thuliteio/core) + +## Installation + +```bash +npm i @thulite/core +``` + +## Setup + +Add mounts to `./config/_default/module.toml`: + +```toml +[[mounts]] + source = "node_modules/@thulite/core/assets" + target = "assets" + +[[mounts]] + source = "node_modules/@thulite/core/layouts" + target = "layouts" + +[[mounts]] + source = "assets" + target = "assets" + +[[mounts]] + source = "layouts" + target = "layouts" +``` + +Add to `./config/_default/hugo.toml`: + +```toml +baseurl = "http://localhost/" +canonifyURLs = false +disableAliases = true +disableHugoGeneratorInject = true +disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +paginate = 7 +rssLimit = 10 + +[outputs] + home = ["HTML"] + +[caches] + [caches.getjson] + dir = ":cacheDir/:project" + maxAge = -1 + [caches.getcsv] + dir = ":cacheDir/:project" + maxAge = -1 + [caches.images] + dir = ":cacheDir/images" + maxAge = "1440h" + [caches.assets] + dir = ":cacheDir/:project" + maxAge = -1 + [caches.getresource] + dir = ":cacheDir/:project" + maxage = '1h' + +[sitemap] + changefreq = "monthly" + filename = "sitemap.xml" + priority = 0.5 + +[minify.tdewolff.html] + keepWhitespace = false +``` + +## Credits + +This npm package is based on: + +- [Really getting started with Hugo](https://www.brycewray.com/posts/2022/07/really-getting-started-hugo/) diff --git a/content/basics/integrations/doks-core.md b/content/basics/integrations/doks-core.md new file mode 100644 index 000000000..0a0b0f2c8 --- /dev/null +++ b/content/basics/integrations/doks-core.md @@ -0,0 +1,19 @@ +--- +title: "Doks Core" +description: "Core integration for the Doks theme." +summary: "Core integration for the Doks theme." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Core integration for the Doks theme. + +[..] diff --git a/content/basics/integrations/images.md b/content/basics/integrations/images.md new file mode 100644 index 000000000..c2636d607 --- /dev/null +++ b/content/basics/integrations/images.md @@ -0,0 +1,23 @@ +--- +title: "Images" +description: "Images is the official Images integration for the Thulite framework." +summary: "Images is the official Images integration for the Thulite framework." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Images](https://images.thulite.io/) is the official Images integration for the Thulite framework. + +## Official Resources + + +- [Getting Started](https://images.thulite.io/docs/start-here/getting-started/) +- [GitHub repository](https://github.com/thuliteio/images) diff --git a/content/basics/integrations/inline-svg.md b/content/basics/integrations/inline-svg.md new file mode 100644 index 000000000..c890d1fad --- /dev/null +++ b/content/basics/integrations/inline-svg.md @@ -0,0 +1,23 @@ +--- +title: "Inline SVG" +description: "Inline SVG is the official Inline SVG integration for the Thulite framework." +summary: "Inline SVG is the official Inline SVG integration for the Thulite framework." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[Inline SVG](https://svg.thulite.io/) is the official Inline SVG integration for the Thulite framework. + +## Official Resources + + +- [Getting Started](https://svg.thulite.io/docs/start-here/getting-started/) +- [GitHub repository](https://github.com/thuliteio/inline-svg) diff --git a/content/basics/integrations/overview.md b/content/basics/integrations/overview.md new file mode 100644 index 000000000..3b7a0e4c5 --- /dev/null +++ b/content/basics/integrations/overview.md @@ -0,0 +1,141 @@ +--- +title: "Integrations Overview" +linkTitle: "Overview" +description: "**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integra..." +summary: "**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integra..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 499 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integrations built by the community. + +Integrations can… + +- Unlock Tailwind CSS, Bootstrap, and other popular CSS frameworks. +- Add new features to your project, like Images and SEO. +- Integrate themes like Doks or Bolt. + +## Official Integrations + +The following integrations are maintained by Thulite. + +{{< card-grid >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/bolt-core" href="/guides/integrations/core/" >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/bootstrap" href="/guides/integrations/doks-core/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/core" href="/guides/integrations/core/" >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/doks-core" href="/guides/integrations/doks-core/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/images" href="/guides/integrations/doks-core/" >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/inline-svg" href="/guides/integrations/doks-core/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/seo" href="/guides/integrations/core/" >}} +{{< link-card src="svgs/thulite.svg" title="@thulite/tailwindcss" href="/guides/integrations/core/" >}} +{{< /card-grid >}} + +## Setting up an Integration + +### Adding an Integration + +Add an integration to your site by running the following command in your project's root directory: + +{{< tabs "tabs-1" >}} + {{< tab "npm" >}} +```bash + # Example: add Images + npm install @thulite/images@latest +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash + # Example: add Images + pnpm add @thulite/images@latest +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash + # Example: add Images + yarn add @thulite/images@latest +``` + {{< /tab >}} +{{< /tabs >}} + +### Configuring an Integration + +You'll most likely have to update the mounts configuration, add parameters, add some CSS/JavaScript, and update the PostCSS settings. + +## Upgrading an Integration + +To upgrade an integration, use the appropriate command for your package manager. + +{{< tabs "tabs-1" >}} + {{< tab "npm" >}} +```bash + # Example: upgrade Images + npm install @thulite/images@latest +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash + # Example: upgrade Images + pnpm add @thulite/images@latest +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash + # Example: upgrade Images + yarn add @thulite/images@latest +``` + {{< /tab >}} +{{< /tabs >}} + +## Removing an Integration + +To remove an integration, uninstall the integration from your project. + +{{< tabs "tabs-1" >}} + {{< tab "npm" >}} +```bash + # Example: remove Images + npm uninstall @thulite/images +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash + # Example: remove Images + pnpm uninstall @thulite/images +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash + # Example: remove Images + yarn remove @thulite/images +``` + {{< /tab >}} +{{< /tabs >}} + +Optionally, remove the configuration settings. + +## Finding More Integrations + +You can find integrations developed by the community in the [Thulite Integrations Directory](https://thulite.io/integrations/). Follow links there for detailed usage and configuration instructions. + +## Building Your Own Integration + +Thulite' Integrations are inspired by npm and Hugo, and designed to feel familiar to anyone who has written an npm package or Hugo Module before. + +Check out the [Build a Thulite Integration](/guides/integrations/) guide to learn what integrations can do and how to write one yourself. diff --git a/content/basics/integrations/seo.md b/content/basics/integrations/seo.md new file mode 100644 index 000000000..b507f1618 --- /dev/null +++ b/content/basics/integrations/seo.md @@ -0,0 +1,23 @@ +--- +title: "SEO" +description: "SEO is the official SEO integration for the Thulite framework." +summary: "SEO is the official SEO integration for the Thulite framework." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +[SEO](https://seo.thulite.io/) is the official SEO integration for the Thulite framework. + +## Official Resources + + +- [Getting Started](https://seo.thulite.io/docs/start-here/getting-started/) +- [GitHub repository](https://github.com/thuliteio/seo) diff --git a/content/basics/integrations/tailwind.md b/content/basics/integrations/tailwind.md new file mode 100644 index 000000000..9e92f3185 --- /dev/null +++ b/content/basics/integrations/tailwind.md @@ -0,0 +1,19 @@ +--- +title: "Tailwind" +description: "Tailwind CSS integration for Thulite." +summary: "Tailwind CSS integration for Thulite." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Tailwind CSS integration for Thulite. + +[..] diff --git a/content/basics/layouts.md b/content/basics/layouts.md new file mode 100644 index 000000000..52281e8a8 --- /dev/null +++ b/content/basics/layouts.md @@ -0,0 +1,50 @@ +--- +title: "Layouts" +description: "__Layouts__ are files that live in the `layouts` directory of your Thulite project. They are used to provide a reusable UI structure, such as a page template." +summary: "__Layouts__ are files that live in the `layouts` directory of your Thulite project. They are used to provide a reusable UI structure, such as a page template." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 315 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +__Layouts__ are files that live in the `layouts` directory of your Thulite project. They are used to provide a reusable UI structure, such as a page template. + +## Examples + +For example, the default Thulite [base template](https://gohugo.io/templates/base/#define-the-base-template) looks like this: + +```html title="baseof.html" + + + {{ partial "head/head.html" . }} + {{ partial "head/body-class.html" . }} + + {{ block "main" . }}{{ end }} + {{ if templates.Exists "partials/footer/script-footer.html" -}} + {{ partial "footer/script-footer.html" . }} + {{ else -}} + {{ partial "footer/script-footer-core.html" . }} + {{ end -}} + + +``` + +## Hugo documentation + +Thulite leverages Hugo's [templates](https://gohugo.io/templates/). Here are some relevant topics: + +{{< card-grid >}} + {{< link-card title="Introduction to templating" description="Create templates to render your content, resources, and data." href="https://gohugo.io/templates/introduction/" target="_blank" >}} + {{< link-card title="Template lookup order" description="Hugo uses a template for a given page, starting from the most specific." href="https://gohugo.io/templates/lookup-order/" target="_blank" >}} + {{< link-card title="Base templates and blocks" description="Base and block constructs define the outer shell of your master templates." href="https://gohugo.io/templates/base/" target="_blank" >}} + {{< link-card title="Single page templates" description="Single page templates are the primary view of content in Hugo." href="https://gohugo.io/templates/single-page-templates/" target="_blank" >}} + {{< link-card title="List page templates" description="List page templates render multiple pieces of content in a HTML page." href="https://gohugo.io/templates/lists/" target="_blank" >}} + {{< link-card title="Partial templates" description="Partials are context-aware components in your list and page templates." href="https://gohugo.io/templates/partials/" target="_blank" >}} +{{< /card-grid >}} diff --git a/content/basics/markdown.md b/content/basics/markdown.md new file mode 100644 index 000000000..31a941432 --- /dev/null +++ b/content/basics/markdown.md @@ -0,0 +1,11 @@ +--- +title: Markdown +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/basics/pages.md b/content/basics/pages.md new file mode 100644 index 000000000..38a71b699 --- /dev/null +++ b/content/basics/pages.md @@ -0,0 +1,77 @@ +--- +title: "Pages" +description: "__Pages__ are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for..." +summary: "__Pages__ are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 310 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +__Pages__ are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for every page in your website. + +## Create new content + +You can create new content by running the [`create` command](/basics/commands/#create) in your terminal. + +### Examples + +For example, create an about page using a [leaf bundle](https://gohugo.io/content-management/page-bundles/#leaf-bundles): + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} +```bash +npm run create about/index.md +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash +pnpm run create about/index.md +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash +yarn run create about/index.md +``` + {{< /tab >}} +{{< /tabs >}} + +Or, create a home page using a [branch bundle](https://gohugo.io/content-management/page-bundles/#branch-bundles): + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} +```bash +npm run create _index.md +``` + {{< /tab >}} + {{< tab "pnpm" >}} +```bash +pnpm run create _index.md +``` + {{< /tab >}} + {{< tab "Yarn" >}} +```bash +yarn run create _index.md +``` + {{< /tab >}} +{{< /tabs >}} + +## Hugo documentation + +Thulite leverages Hugo's [content management](https://gohugo.io/content-management/). Here are some relevant topics: + +{{< card-grid >}} + {{< link-card title="Content organization" description="Organize your content in a manner that reflects the rendered website." href="https://gohugo.io/content-management/organization/" target="_blank" >}} + {{< link-card title="Page bundles" description="Use page bundles to logically associate one or more resources with content." href="https://gohugo.io/content-management/page-bundles/" target="_blank" >}} +{{< /card-grid >}} + +{{< card-grid >}} + {{< link-card title="Content formats" description="Create your content using multiple content formats." href="https://gohugo.io/content-management/formats/" target="_blank" >}} + {{< link-card title="Front matter" description="Use front matter to add metadata to your content." href="https://gohugo.io/content-management/front-matter/" target="_blank" >}} +{{< /card-grid >}} diff --git a/content/basics/project-structure.md b/content/basics/project-structure.md new file mode 100644 index 000000000..d44c65cae --- /dev/null +++ b/content/basics/project-structure.md @@ -0,0 +1,154 @@ +--- +title: "Project Structure" +description: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." +summary: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 200 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This guide. + +## Example + +Thulite basic starter (with recommended integrations): + +```bash +. +├── LICENSE +├── archetypes +│   └── default.md +├── assets +│   ├── favicon.png +│   ├── favicon.svg +│   ├── images +│   │   └── paul-pascale-FI9QMIVMdCM-unsplash.jpg +│   └── scss +│   ├── app.scss +│   └── common +│   ├── _custom.scss +│   └── _variables-custom.scss +├── config +│   ├── _default +│   │   ├── hugo.toml +│   │   ├── markup.toml +│   │   ├── menus.toml +│   │   ├── module.toml +│   │   └── params.toml +│   ├── babel.config.js +│   ├── next +│   │   └── hugo.toml +│   ├── postcss.config.js +│   └── production +│   └── hugo.toml +├── content +│   └── _index.md +├── layouts +│   ├── home.html +│   └── single.html +├── netlify.toml +├── package.json +└── static + ├── apple-touch-icon.png + ├── cover.png + ├── favicon.ico + └── icon.svg + +13 directories, 26 files +``` + + +--- + + +Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' existing file structure. + +Here's how a Thulite project is organized, and some files you will find in your new project. + +## Directories and Files + +Thulite leverages the Hugo [directory structure](https://gohugo.io/getting-started/directory-structure/) for your project. Every Thulite project root should include the following directories and files: + +- `assets` - Your project assets (scripts, styles, images, etc.) +- `config` - Your project's configuration files (Thulite, Hugo, PostCSS, etc.) +- `content` - Your project content (pages, posts, etc.) +- `layouts` - Your project layouts (partials, shortcodes, etc.) +- `static` - Your non-code, unprocessed assets (fonts, icons, etc.) +- `package.json` - A project manifest. + +## Example Project Tree + +A common Thulite project directory might look like this: + +{{< tree >}} + +- {folder} assets/scss + - {folder} common + - {brand-sass} _custom.scss + - {brand-sass} _variables-custom.scss + - {brand-sass} app.scss +- {folder} config + - {folder} _default + - {toml} hugo.toml + - {toml} module.toml + - {toml} params.toml +- {folder} content + - {markdown} _index.md +- {folder} layouts + - {html} index.html +- {folder} static + - {svg} favicon.svg +- {json} package.json + +{{< /tree >}} + + +### `assets/scss` + +It is a common convention to store your CSS or Sass files in a `assets/scss` directory, but this is not required. As long as your styles live somewhere in the `assets/` directory and are imported correctly, Thulite will handle and optimize them. + +The `app.scss` file is used to specify the CSS or Sass files to import (or use). Put your custom (S)CSS variables in `common/variables-custom` and custom (S)CSS code in `common/_custom.scss`. + +### `config/_default/` + +The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. + +The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. + +The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. + +### `content/` + +The `content/` directory is where you store [pages](/basics/pages/), organized in sections or page bundles (leaf bundles or branch bundles) and can contain page resources. + +### `layouts/` + +[Layouts](/basics/layouts/) are Thulite templates that define the UI structure shared by one or more pages. + +### `static/` + +The `static/` directory is for files and assets that do not need to be processed during Thulite' build process. These files will be copied into the build folder untouched. + +This behavior makes `static/` ideal for common assets like images and fonts, or special files such as `robots.txt` and `manifest.webmanifest`. + +You can place CSS and JavaScript in your `static/` directory, but be aware that those files will not be bundled or optimized in your final build. + +:::tip +As a general rule, any CSS or JavaScript that you write yourself should live in your `assets/` directory. +::: + + +### `package.json` + +This is a file used by JavaScript package managers to manage your dependencies. It also defines the scripts that are commonly used to run Thulite (ex: `npm run dev`, `npm run build`). + +There are [two kinds of dependencies](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) you can specify in a `package.json`: `dependencies` and `devDependencies`. In most cases, these work the same: Thulite needs all dependencies at build time, and your package manager will install both. We recommend putting all of your dependencies in `dependencies` to start, and only use `devDependencies` if you find a specific need to do so. + +For help creating a new `package.json` file for your project, check out the [manual setup](/install/manual/) instructions. diff --git a/content/basics/scripts.md b/content/basics/scripts.md new file mode 100644 index 000000000..cac2ff3f9 --- /dev/null +++ b/content/basics/scripts.md @@ -0,0 +1,11 @@ +--- +title: Scripts +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/basics/styles.md b/content/basics/styles.md new file mode 100644 index 000000000..a64b03271 --- /dev/null +++ b/content/basics/styles.md @@ -0,0 +1,11 @@ +--- +title: Styles +description: A guide in my new Starlight docs site. +--- + +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Further reading + +- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/basics/templates/_index.md b/content/basics/templates/_index.md new file mode 100644 index 000000000..3a9f7d2a9 --- /dev/null +++ b/content/basics/templates/_index.md @@ -0,0 +1,18 @@ +--- +title: "Templates" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 575 +params: + toc: true + sidebar: + collapsed: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/templates/bolt.md b/content/basics/templates/bolt.md new file mode 100644 index 000000000..adc06d574 --- /dev/null +++ b/content/basics/templates/bolt.md @@ -0,0 +1,17 @@ +--- +title: "Bolt" +description: "Bolt" +summary: "Bolt" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + diff --git a/content/basics/templates/doks.md b/content/basics/templates/doks.md new file mode 100644 index 000000000..06962e67d --- /dev/null +++ b/content/basics/templates/doks.md @@ -0,0 +1,17 @@ +--- +title: "Doks" +description: "Doks" +summary: "Doks" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 500 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + diff --git a/content/basics/templates/use-template.md b/content/basics/templates/use-template.md new file mode 100644 index 000000000..c1b1e59e3 --- /dev/null +++ b/content/basics/templates/use-template.md @@ -0,0 +1,25 @@ +--- +title: "Use a Template" +description: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." +summary: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 510 +toc: true +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. +Writing a good guide requires thinking about what your users are trying to do. + +## Official Themes + +{{< card-grid >}} +{{< link-card title="Doks Theme" description="Use the Doks theme" href="/guides/themes/doks/" >}} +{{< link-card title="Bolt Theme" description="Use the Bolt theme" href="/guides/themes/bolt/" >}} +{{< /card-grid >}} diff --git a/content/blog/_index.md b/content/blog/_index.md deleted file mode 100644 index 114e12f8f..000000000 --- a/content/blog/_index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Blog" -description: "Read product updates, release highlights, and practical tips that explain what’s new, why it matters, and how to get the most value from this project." -summary: "" -date: 2023-09-07T16:21:44+02:00 -lastmod: 2023-09-07T16:21:44+02:00 -draft: false -weight: 50 -categories: [] -tags: [] -contributors: [] -pinned: false -homepage: false -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- diff --git a/content/blog/example/index.md b/content/blog/example/index.md deleted file mode 100644 index 48c5bda20..000000000 --- a/content/blog/example/index.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: "Example Post" -description: "Learn how to write clear, structured product update posts that explain what changed, why it matters, and how users can successfully adopt new features." -summary: "Use blog posts to communicate product updates and new features in a clear and consistent format." -date: 2026-02-16T16:31:32+01:00 -lastmod: 2026-02-16T16:31:38+01:00 -draft: false -weight: 50 -categories: [] -tags: [] -contributors: [] -pinned: false -homepage: false -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- - -Effective announcements serve different reader needs: - -- **Overview:** What’s new? -- **Context:** Why was this built? -- **Guidance:** How do I use it? -- **Details:** Where can I learn more? - -By separating intent, explanation, and practical steps, you turn release posts into durable product documentation — not just temporary marketing updates. - -Clear, structured announcements increase feature adoption, reinforce your product direction, and signal steady progress to both users and potential customers. diff --git a/content/docs/_index.md b/content/docs/_index.md deleted file mode 100644 index 3851911ee..000000000 --- a/content/docs/_index.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Docs" -description: "Browse guides and reference documentation that explain how to use this site’s features, configure Doks, and publish clear, user-focused content." -summary: "" -date: 2023-09-07T16:12:03+02:00 -lastmod: 2023-09-07T16:12:03+02:00 -draft: false -weight: 999 -toc: true -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) - section: - title: "Documentation" - iconName: "book" - startUrl: "/docs/guides/example-guide/" ---- diff --git a/content/docs/guides/_index.md b/content/docs/guides/_index.md deleted file mode 100644 index 1b58e0bef..000000000 --- a/content/docs/guides/_index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Guides" -description: "Explore step-by-step guides that walk you through common tasks, from setup to advanced workflows, helping you learn and use this project with confidence." -summary: "" -date: 2023-09-07T16:06:50+02:00 -lastmod: 2023-09-07T16:06:50+02:00 -draft: false -weight: 800 -toc: true -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- diff --git a/content/docs/guides/example.md b/content/docs/guides/example.md deleted file mode 100644 index 666b2de54..000000000 --- a/content/docs/guides/example.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "Example Guide" -description: "Learn how to structure clear, task-focused guides that walk users through real workflows step by step, improving documentation usability and success." -summary: "" -date: 2023-09-07T16:04:48+02:00 -lastmod: 2023-09-07T16:04:48+02:00 -draft: false -weight: 810 -toc: true -params: - math: false # enable mathematical rendering - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- - -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. Writing a good guide requires thinking about what your users are trying to do. - -## Further reading - -- Read [about how-to guides](https://diataxis.fr/how-to-guides/) in the Diátaxis framework diff --git a/content/docs/reference/_index.md b/content/docs/reference/_index.md deleted file mode 100644 index 01b59786a..000000000 --- a/content/docs/reference/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Reference" -description: "Find detailed, structured reference pages that explain concepts, configuration options, and behavior so you can quickly look up precise information as you work." -summary: "" -date: 2023-09-07T16:12:37+02:00 -lastmod: 2023-09-07T16:12:37+02:00 -draft: false -weight: 900 -toc: true -sidebar: - collapsed: true -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- diff --git a/content/docs/reference/example.md b/content/docs/reference/example.md deleted file mode 100644 index c40bffa55..000000000 --- a/content/docs/reference/example.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: "Example Reference" -description: "Learn how to design concise, comprehensive reference pages that document concepts, options, and behavior clearly so users can quickly find exact answers." -summary: "" -date: 2023-09-07T16:13:18+02:00 -lastmod: 2023-09-07T16:13:18+02:00 -draft: false -weight: 910 -toc: true -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- - -Reference pages are ideal for outlining how things work in terse and clear terms. Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. - -## Further reading - -- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/content/docs/resources.md b/content/docs/resources.md deleted file mode 100644 index 7abf7eb65..000000000 --- a/content/docs/resources.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: "Resources" -description: "Discover curated links to official docs, tools, templates, and learning materials that help you deepen your knowledge and get more from this project." -summary: "" -date: 2024-02-27T09:30:56+01:00 -lastmod: 2024-02-27T09:30:56+01:00 -draft: false -weight: 999 -toc: true -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- - -Link to valuable, relevant resources. diff --git a/content/privacy.md b/content/privacy.md deleted file mode 100644 index 40bba8b88..000000000 --- a/content/privacy.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Privacy Policy" -description: "Learn how we collect, use, and protect your personal data, what rights you have over your information, and how to contact us with questions." -summary: "" -date: 2023-09-07T17:19:07+02:00 -lastmod: 2026-02-16T15:33:59+01:00 -draft: false -type: "legal" -params: - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- - -We value your privacy and are committed to protecting your personal data. This Privacy Policy explains what information we collect, how we use it, and the choices you have. - -We only collect the information necessary to provide and improve our services, such as basic usage analytics and any details you choose to share with us (for example, via forms or support requests). We do not sell your personal data. - -If you have any questions about this policy or how we handle your data, please contact us using the details provided on this site. diff --git a/content/reference/_index.md b/content/reference/_index.md new file mode 100644 index 000000000..7c89b4c52 --- /dev/null +++ b/content/reference/_index.md @@ -0,0 +1,19 @@ +--- +title: "Reference" +description: "" +summary: "" +date: 2026-03-25T10:59:04+01:00 +lastmod: 2026-03-25T10:59:04+01:00 +draft: false +weight: 400 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) + section: + title: "Reference" + iconName: "file-text" + startUrl: "/reference/cli/" +--- diff --git a/content/reference/cli.md b/content/reference/cli.md new file mode 100644 index 000000000..2fa74e16d --- /dev/null +++ b/content/reference/cli.md @@ -0,0 +1,113 @@ +--- +title: "CLI" +description: "This reference guide describes the create-thulite CLI and all of its options." +summary: "This reference guide describes the create-thulite CLI and all of its options." +date: 2026-04-28T14:55:21+02:00 +lastmod: 2026-04-28T14:55:21+02:00 +draft: false +weight: 405 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This reference guide describes the `create-thulite` CLI and all of its options. + +## Usage + +```bash +npm create thulite@latest [DIRECTORY] [TEMPLATE] -- [OPTIONS] +``` + +The CLI creates a new Thulite project in the specified directory, using the specified template. When running in a TTY (interactive terminal), it starts in interactive mode and prompts for any missing information. + +## Arguments + +### `DIRECTORY` + +The name of the directory to create the project in. A string — for example `"my-project"`. Defaults to `"thulite-project"` when not provided in non-interactive mode, or prompted for in interactive mode. + +### `TEMPLATE` + +The template to scaffold the project from. A string — must be one of the [available template names](#--template). Can be passed as the second positional argument as a shorthand for `--template`. + +## Options + +### `--template` + +**Alias:** `-t` + +The template to scaffold the project from. A string — must be one of the available template names listed below. When omitted in interactive mode, the CLI will prompt for a framework and variant selection. When omitted in non-interactive mode, defaults to `"basic"`. + +**Templates with recommended integrations (SEO and Images):** + +| Name | Description | +|---|---| +| `doks` | Doks theme | +| `bolt` | Bolt theme | +| `tailwindcss-rec` | Tailwind CSS starter | +| `bootstrap-rec` | Bootstrap starter | +| `basic-rec` | Basic starter | + +**Templates without recommended integrations:** + +| Name | Description | +|---|---| +| `tailwindcss` | Tailwind CSS starter | +| `bootstrap` | Bootstrap starter | +| `basic` | Basic starter | + +**Examples:** + +```bash +npm create thulite@latest my-project -- --template doks +npm create thulite@latest my-project -- -t tailwindcss-rec +npm create thulite@latest my-project doks +``` + +### `--immediate` + +**Alias:** `-i` + +A boolean flag. When set, the CLI will automatically install dependencies and start the development server after scaffolding. When omitted in interactive mode, the CLI will prompt whether to install and start now. When omitted in non-interactive mode, defaults to `false`. + +**Example:** + +```bash +npm create thulite@latest my-project -- --template basic-rec --immediate +``` + +### `--overwrite` + +A boolean flag. When set, any existing files in the target directory will be removed before scaffolding. When omitted in interactive mode, the CLI will prompt how to proceed if the target directory is not empty. When omitted in non-interactive mode, the operation is cancelled if the target directory is not empty. + +**Example:** + +```bash +npm create thulite@latest my-project -- --overwrite +``` + +### `--interactive` / `--no-interactive` + +A boolean flag. Forces the CLI to run in interactive or non-interactive mode, overriding the automatic TTY detection. Use `--no-interactive` to run without prompts, for example in CI/CD environments. Defaults to the result of TTY detection. + +**Example:** + +```bash +npm create thulite@latest my-project -- --template doks --no-interactive +``` + +### `--help` + +**Alias:** `-h` + +A boolean flag. Prints the help message describing usage, available options, and templates, then exits. + +**Example:** + +```bash +npm create thulite@latest -- --help +``` diff --git a/content/reference/commands.md b/content/reference/commands.md new file mode 100644 index 000000000..770e764ec --- /dev/null +++ b/content/reference/commands.md @@ -0,0 +1,330 @@ +--- +title: "Commands" +description: "You can use the `scripts` in `package.json` to create new content and develop, format, build, and preview your project from a terminal window." +summary: "You can use the `scripts` in `package.json` to create new content and develop, format, build, and preview your project from a terminal window." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 410 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +You can use the `scripts` in `package.json` to create new content and develop, format, build, and preview your project from a terminal window. + +## `package.json` scripts + +{{< callout context="note" icon="info-circle" >}} + +You can add scripts to the `scripts` section for any commands you use frequently. + +{{< /callout >}} + +The following scripts for the most common commands (`create`, `dev`, `format`, `build`, and `preview`) are added for you automatically when you [create a new project](/start-here/installation/#create-a-new-project). + +```json {title="package.json"} +{ + "scripts": { + "create": "hugo new", + "dev": "hugo server --disableFastRender --noHTTPCache", + "format": "prettier **/** -w -c", + "build": "hugo --minify --gc", + "preview": "vite preview --outDir public" + } +} +``` + +You will often use these commands, or the scripts that run them, without any flags. Add flags to the command when you want to customize the command’s behavior. For example, you may wish to start the development server on a different port, or build your site with verbose logs for debugging. + +{{< tabs "command-flags" >}} +{{< tab "npm" >}} + +```bash +# run the dev server on port 3000 using the `dev` script in `package.json` +npm run dev -- --port 3000 + +# build your site with verbose logs using the `build` script in `package.json` +npm run build -- --verbose +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# run the dev server on port 3000 using the `dev` script in `package.json` +pnpm dev --port 3000 + +# build your site with verbose logs using the `build` script in `package.json` +pnpm build --verbose +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# run the dev server on port 3000 using the `dev` script in `package.json` +yarn dev --port 3000 + +# build your site with verbose logs using the `build` script in `package.json` +yarn build --verbose +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# run the dev server on port 3000 using the `dev` script in `package.json` +bun run dev --port 3000 + +# build your site with verbose logs using the `build` script in `package.json` +bun run build --verbose +``` + +{{< /tab >}} +{{< /tabs >}} + +{{< callout context="note" icon="info-circle" >}} + +The extra `--` before any flag is necessary for `npm` to pass your flags to the script. + +{{< /callout >}} + +{{< callout context="note" icon="info-circle" >}} + +You can find the available flags for a command on the command's linked script page below. + +{{< /callout >}} + +### `create` + +Run the following command in your terminal to [create new content](https://gohugo.io/commands/hugo_new_content/): + +{{< tabs "create-command" >}} + +{{< tab "npm" >}} + +```bash +# npm run create [path] [flags] +npm run create +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# pnpm run create [path] [flags] +pnpm run create +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# yarn run create [path] [flags] +yarn run create +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# bun run create [path] [flags] +bun run create +``` + +{{< /tab >}} +{{< /tabs >}} + +For example, create an about page in the `content` directory of your project: + +{{< tabs "create-page-command" >}} + +{{< tab "npm" >}} + +```bash +npm run create about.md +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run create about.md +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn run create about.md +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run create about.md +``` + +{{< /tab >}} +{{< /tabs >}} + +### `dev` + +Run the following command in your terminal to start the [Hugo development server](https://gohugo.io/commands/hugo_server/): + +{{< tabs "dev-command" >}} +{{< tab "npm" >}} + +```bash +# npm run dev [flags] +npm run dev +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# pnpm dev [flags] +pnpm dev +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# yarn dev [flags] +yarn dev +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# bun run dev [flags] +bun run dev +``` + +{{< /tab >}} +{{< /tabs >}} + +### `format` + +Run the following command in your terminal to run the [Prettier code formatter](https://prettier.io/docs/cli): + +{{< tabs "format-command" >}} +{{< tab "npm" >}} + +```bash +# npm run format [flags] +npm run format +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# pnpm format [flags] +pnpm format +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# yarn format [flags] +yarn format +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# bun run format [flags] +bun run format +``` + +{{< /tab >}} +{{< /tabs >}} + +### `build` + +Run the following command in your terminal to [create a production build](https://gohugo.io/commands/hugo/): + +{{< tabs "build-command" >}} +{{< tab "npm" >}} + +```bash +# npm run build [flags] +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# pnpm build [flags] +pnpm build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# yarn build [flags] +yarn build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# bun run build [flags] +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +### `preview` + +Run the following command in your terminal to [locally preview the production build](https://vite.dev/guide/cli.html#vite-preview): + +{{< tabs "preview-command" >}} +{{< tab "npm" >}} + +```bash +# npm run preview [flags] +npm run preview +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +# pnpm preview [flags] +pnpm preview +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +# yarn preview [flags] +yarn preview +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +# bun run preview [flags] +bun run preview +``` + +{{< /tab >}} +{{< /tabs >}} diff --git a/content/reference/configuration/_index.md b/content/reference/configuration/_index.md new file mode 100644 index 000000000..882b9122a --- /dev/null +++ b/content/reference/configuration/_index.md @@ -0,0 +1,18 @@ +--- +title: "Configuration" +description: "" +summary: "" +date: 2026-05-12T09:40:44+02:00 +lastmod: 2026-05-12T09:40:44+02:00 +draft: false +weight: 420 +params: + toc: true + sidebar: + collapsed: false + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/reference/configuration/menus.md b/content/reference/configuration/menus.md new file mode 100644 index 000000000..f51b2e55d --- /dev/null +++ b/content/reference/configuration/menus.md @@ -0,0 +1,50 @@ +--- +title: "Menus" +description: "Create __menus__ by defining entries, localizing each entry, and rendering the resulting data structure." +summary: "Create __menus__ by defining entries, localizing each entry, and rendering the resulting data structure." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 429 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Create __menus__ by defining entries, localizing each entry, and rendering the resulting data structure. + + +## Examples + +For example, to define entries for the main menu: + +```toml title="config/_default/menus.toml" +[[main]] + name = 'Home' + pageRef = '/' + weight = 10 + +[[main]] + name = 'Products' + pageRef = '/products' + weight = 20 + +[[main]] + name = 'Services' + pageRef = '/services' + weight = 30 + +``` + +## Hugo documentation + +Thulite leverages Hugo's [menus](https://gohugo.io/content-management/menus/). Here are some relevant topics: + +{{< card-grid >}} + {{< link-card title="Menus" description="There are three ways to define menu entries" href="https://gohugo.io/content-management/menus/" target="_blank" >}} + {{< link-card title="Localization" description="Localization of menu entries depends on how you define them." href="https://gohugo.io/content-management/multilingual/#menus" target="_blank" >}} + {{< link-card title="Templates" description="Create templates to render one or more menus." href="https://gohugo.io/templates/menu-templates/" target="_blank" >}} +{{< /card-grid >}} diff --git a/content/reference/configuration/overview.md b/content/reference/configuration/overview.md new file mode 100644 index 000000000..854105d11 --- /dev/null +++ b/content/reference/configuration/overview.md @@ -0,0 +1,97 @@ +--- +title: "Configuration Overview" +linkTitle: "Overview" +description: "Here's how a Thulite project configuration is organized, and the configuration files you will find in your new project." +summary: "Here's how a Thulite project configuration is organized, and the configuration files you will find in your new project." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 421 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Here's how a Thulite project configuration is organized, and the configuration files you will find in your new project. + +## Example + +A common Thulite project configuration directory might look like this: + +{{< tree >}} + +- {folder} config + - {folder} _default + - {toml} hugo.toml + - {toml} markup.toml + - {toml} menus.toml + - {toml} module.toml + - {toml} params.toml + - {folder} next + - {toml} hugo.toml + - {toml} params.toml + - {folder} production + - {toml} hugo.toml + - {toml} params.toml +- {brand-javascript} babel.config.js +- {brand-javascript} postcss.config.js + +{{< /tree >}} + +## `config/_default/` + +### `hugo.toml` + +The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. + +### `markup.toml` + +The `markup.toml` file is where you [configure rendering](https://gohugo.io/getting-started/configuration-markup/) of markup to HTML. + +### `menus.toml` + +The `menus.toml` file is where you [define menu entries](https://gohugo.io/content-management/menus/). + +### `module.toml` + +The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. + +### `params.toml` + +The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. + +## `config/next/` + +Overrides for your next environment. + +## `config/production/` + +Overrides for your production environment. + +{{< callout context="tip" icon="rocket" >}} +Set `baseurl` in `hugo.toml` to the absolute URL (protocol, host, path, and trailing slash) of your published site (e.g., https://www.example.org/docs/). +{{< /callout >}} + +## `babel.config.js` + +The `babel.config.js` file is where you configure [Babel](https://babeljs.io/). Thulite supports processing JavaScript files with Babel. + +## `postcss.config.js` + +The `postcss.config.js` file is where you configure [PostCSS](https://postcss.org/). Thulite uses PostCSS to add vendor prefixes to CSS rules using [Autoprefixer](https://github.com/postcss/autoprefixer) and to remove unused CSS from your project using [PurgeCSS](https://purgecss.com/). + +## Hugo documentation + +Thulite leverages Hugo's [configuration](https://gohugo.io/getting-started/configuration/). Here are some relevant topics: + +{{< card-grid >}} +{{< link-card title="Configure Hugo" description="How to configure your Hugo site." href="https://gohugo.io/getting-started/configuration/" target="_blank" >}} +{{< link-card title="Babel" description="Hugo Pipes can process JavaScript files with Babel." href="https://gohugo.io/hugo-pipes/babel/" target="_blank" >}} +{{< /card-grid >}} +{{< card-grid >}} +{{< link-card title="PostCSS" description="Process CSS files with PostCSS, using any of the available plugins." href="https://gohugo.io/hugo-pipes/postcss/" target="_blank" >}} +{{< link-card title="CSS purging with PostCSS" description="There are several ways to set up CSS purging with PostCSS in Hugo." href="https://gohugo.io/hugo-pipes/postprocess/#css-purging-with-postcss" target="_blank" >}} +{{< /card-grid >}} diff --git a/content/reference/configuration/page-frontmatter.md b/content/reference/configuration/page-frontmatter.md new file mode 100644 index 000000000..20608c659 --- /dev/null +++ b/content/reference/configuration/page-frontmatter.md @@ -0,0 +1,23 @@ +--- +title: "Page Frontmatter" +description: "" +summary: "" +date: 2026-03-25T13:02:07+01:00 +lastmod: 2026-03-25T13:02:11+01:00 +draft: false +weight: 427 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Reference pages are ideal for outlining how things work in terse and clear terms. +Less concerned with telling a story or addressing a specific use case, they should give a comprehensive outline of what your documenting. + +## Further reading + +- Read [about reference](https://diataxis.fr/reference/) in the Diátaxis framework diff --git a/content/reference/configuration/parameters.md b/content/reference/configuration/parameters.md new file mode 100644 index 000000000..f81c9bc3d --- /dev/null +++ b/content/reference/configuration/parameters.md @@ -0,0 +1,15 @@ +--- +title: "Parameters" +description: "" +summary: "" +date: 2026-05-11T11:14:33+02:00 +lastmod: 2026-05-11T11:14:33+02:00 +draft: false +weight: 425 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/reference/configuration/settings.md b/content/reference/configuration/settings.md new file mode 100644 index 000000000..d5ee0c1d9 --- /dev/null +++ b/content/reference/configuration/settings.md @@ -0,0 +1,15 @@ +--- +title: "Settings" +description: "" +summary: "" +date: 2026-05-11T11:14:27+02:00 +lastmod: 2026-05-11T11:14:27+02:00 +draft: false +weight: 423 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/reference/markdown/_index.md b/content/reference/markdown/_index.md new file mode 100644 index 000000000..091d78c26 --- /dev/null +++ b/content/reference/markdown/_index.md @@ -0,0 +1,18 @@ +--- +title: "Markdown" +description: "" +summary: "" +date: 2026-05-12T12:43:49+02:00 +lastmod: 2026-05-12T12:43:49+02:00 +draft: false +weight: 430 +params: + toc: true + sidebar: + collapsed: false + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/reference/markdown/basic-syntax.md b/content/reference/markdown/basic-syntax.md new file mode 100644 index 000000000..bd4f5ae8f --- /dev/null +++ b/content/reference/markdown/basic-syntax.md @@ -0,0 +1,159 @@ +--- +title: "Basic Syntax" +description: "" +summary: "" +date: 2026-05-12T12:44:14+02:00 +lastmod: 2026-05-12T12:44:14+02:00 +draft: false +weight: 433 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +A reference to the Markdown basic syntax elements supported by all Markdown applications. + +{{< callout icon="info-circle" >}} +Refer to the [Basic Syntax](https://markdownguide.offshoot.io/basic-syntax/) reference guide from The Markdown Guide for more information. +{{< /callout >}} + +## Heading + +```md +# H1 + +## H2 + +### H3 +``` + +{{< preview >}} + +# H1 + +## H2 + +### H3 + +{{< /preview >}} + +## Bold + +```md +**bold text** +``` + +{{< preview >}} + +**bold text** + +{{< /preview >}} + +## Italic + +```md +_italicized text_ +``` + +_italicized text_ + +{{< preview >}} + +_italicized text_ + +{{< /preview >}} + +## Blockquote + +```md +> blockquote +``` + +{{< preview >}} + +> blockquote + +{{< /preview >}} + +## Ordered List + +```md +1. First item +2. Second item +3. Third item +``` + +{{< preview >}} + +1. First item +2. Second item +3. Third item + +{{< /preview >}} + +## Unordered List + +```md +- First item +- Second item +- Third item +``` + +{{< preview >}} + +- First item +- Second item +- Third item + +{{< /preview >}} + +## Code + +```md +`code` +``` + +{{< preview >}} + +`code` + +{{< /preview >}} + +## Horizontal Rule + +```md +--- +``` + +{{< preview >}} + +--- + +{{< /preview >}} + +## Link + +```md +[Markdown Guide](https://www.markdownguide.org) +``` + +{{< preview >}} + +[Markdown Guide](https://www.markdownguide.org) + +{{< /preview >}} + +## Image + +```md +![A yellow and black bird sitting on top of a body of water](images/vincent-van-zalinge-e5VzJJDODbQ-unsplash.jpg) +``` + +{{< preview >}} + +![A yellow and black bird sitting on top of a body of water](images/vincent-van-zalinge-e5VzJJDODbQ-unsplash.jpg) + +{{< /preview >}} diff --git a/content/reference/markdown/extended-syntax.md b/content/reference/markdown/extended-syntax.md new file mode 100644 index 000000000..9bec64475 --- /dev/null +++ b/content/reference/markdown/extended-syntax.md @@ -0,0 +1,203 @@ +--- +title: "Extended Syntax" +description: "" +summary: "" +date: 2026-05-12T12:44:29+02:00 +lastmod: 2026-05-12T12:44:29+02:00 +draft: false +weight: 435 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +A reference to the extended Markdown syntax elements that add features beyond the basic syntax. + +{{< callout icon="info-circle" >}} +Refer to the [Extended Syntax](https://markdownguide.offshoot.io/extended-syntax/) reference guide from The Markdown Guide for more information. +{{< /callout >}} + +## Table + +```md +| Syntax | Description | +| --------- | ----------- | +| Header | Title | +| Paragraph | Text | +``` + +{{< preview >}} + +| Syntax | Description | +| --------- | ----------- | +| Header | Title | +| Paragraph | Text | + +{{< /preview >}} + +## Fenced Code Block + +````md +```json +{ + "firstName": "John", + "lastName": "Smith", + "age": 25 +} +``` +```` + +{{< preview >}} + +```json +{ + "firstName": "John", + "lastName": "Smith", + "age": 25 +} +``` + +{{< /preview >}} + +## Footnote + +```md +Here's a sentence with a footnote. [^1] + +[^1]: This is the footnote. +``` + +{{< preview >}} + +Here's a sentence with a footnote. [^1] + +[^1]: This is the footnote. + +{{< /preview >}} + +## Heading ID + +```md +### My Great Heading{#custom-id} +``` + +{{< preview >}} + +### My Great Heading{#custom-id} + +{{< /preview >}} + +### Rendered HTML + +```html +

        My Great Heading

        +``` + +## Definition List + +```md +term +: definition +``` + +{{< preview >}} + +term +: definition + +{{< /preview >}} + +## Strikethrough + +```md +~~The world is flat.~~ +``` + +{{< preview >}} + +~~The world is flat.~~ + +{{< /preview >}} + +## Task List + +```md +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media +{.list-unstyled} +``` + +{{< preview >}} + +- [x] Write the press release +- [ ] Update the website +- [ ] Contact the media +{.list-unstyled} + +{{< /preview >}} + +## Emoji + +{{< callout icon="outline/info-circle" >}} +Copy the emoji shortcode from [Emoji Cheat Sheet](https://www.webfx.com/tools/emoji-cheat-sheet/) by clicking on the emoji. +{{< /callout >}} + +
        +
        +
        + +
        +
        That is so funny! :joy:
        +
        +
        + +{{< preview >}} + +That is so funny! :joy: + +{{< /preview >}} + +## Unsupported elements + +{{< callout icon="outline/info-circle" >}} +Hugo does not [support](https://www.markdownguide.org/tools/hugo/#hugo-markdown-support) the highlight, subscript, and superscript elements. Use the HTML element itself instead. +{{< /callout >}} + +### Highlight + +```md +I need to highlight these very important words. +``` + +{{< preview >}} + +I need to highlight these very important words. + +{{< /preview >}} + +### Subscript + +```md +H2O +``` + +{{< preview >}} + +H2O + +{{< /preview >}} + +### Superscript + +```md +X2 +``` + +{{< preview >}} + +X2 + +{{< /preview >}} diff --git a/content/reference/markdown/overview.md b/content/reference/markdown/overview.md new file mode 100644 index 000000000..82304d36c --- /dev/null +++ b/content/reference/markdown/overview.md @@ -0,0 +1,26 @@ +--- +title: "Markdown Overview" +linkTitle: "Overview" +description: "" +summary: "" +date: 2026-03-25T13:02:07+01:00 +lastmod: 2026-03-25T13:02:11+01:00 +draft: false +weight: 431 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Markdown is a lightweight markup language that lets you add formatting to plain text documents. Thulite uses [Hugo's built-in Markdown processor](https://gohugo.io/content-management/formats/), which supports both CommonMark (basic syntax) and a range of extended features. + +## Markdown + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/markdown.svg" title="Basic Syntax" href="/reference/markdown/basic-syntax/" >}} +{{< link-card src="svgs/simple-icons/markdown.svg" title="Extended Syntax" href="/reference/markdown/extended-syntax/" >}} +{{< /card-grid >}} diff --git a/content/reference/project-structure.md b/content/reference/project-structure.md new file mode 100644 index 000000000..13607c938 --- /dev/null +++ b/content/reference/project-structure.md @@ -0,0 +1,154 @@ +--- +title: "Project Structure" +description: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." +summary: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 415 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This guide. + +## Example + +Thulite basic starter (with recommended integrations): + +```bash +. +├── LICENSE +├── archetypes +│   └── default.md +├── assets +│   ├── favicon.png +│   ├── favicon.svg +│   ├── images +│   │   └── paul-pascale-FI9QMIVMdCM-unsplash.jpg +│   └── scss +│   ├── app.scss +│   └── common +│   ├── _custom.scss +│   └── _variables-custom.scss +├── config +│   ├── _default +│   │   ├── hugo.toml +│   │   ├── markup.toml +│   │   ├── menus.toml +│   │   ├── module.toml +│   │   └── params.toml +│   ├── babel.config.js +│   ├── next +│   │   └── hugo.toml +│   ├── postcss.config.js +│   └── production +│   └── hugo.toml +├── content +│   └── _index.md +├── layouts +│   ├── home.html +│   └── single.html +├── netlify.toml +├── package.json +└── static + ├── apple-touch-icon.png + ├── cover.png + ├── favicon.ico + └── icon.svg + +13 directories, 26 files +``` + + +--- + + +Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' existing file structure. + +Here's how a Thulite project is organized, and some files you will find in your new project. + +## Directories and Files + +Thulite leverages the Hugo [directory structure](https://gohugo.io/getting-started/directory-structure/) for your project. Every Thulite project root should include the following directories and files: + +- `assets` - Your project assets (scripts, styles, images, etc.) +- `config` - Your project's configuration files (Thulite, Hugo, PostCSS, etc.) +- `content` - Your project content (pages, posts, etc.) +- `layouts` - Your project layouts (partials, shortcodes, etc.) +- `static` - Your non-code, unprocessed assets (fonts, icons, etc.) +- `package.json` - A project manifest. + +## Example Project Tree + +A common Thulite project directory might look like this: + +{{< tree >}} + +- {folder} assets/scss + - {folder} common + - {brand-sass} _custom.scss + - {brand-sass} _variables-custom.scss + - {brand-sass} app.scss +- {folder} config + - {folder} _default + - {toml} hugo.toml + - {toml} module.toml + - {toml} params.toml +- {folder} content + - {markdown} _index.md +- {folder} layouts + - {html} index.html +- {folder} static + - {svg} favicon.svg +- {json} package.json + +{{< /tree >}} + + +### `assets/scss` + +It is a common convention to store your CSS or Sass files in a `assets/scss` directory, but this is not required. As long as your styles live somewhere in the `assets/` directory and are imported correctly, Thulite will handle and optimize them. + +The `app.scss` file is used to specify the CSS or Sass files to import (or use). Put your custom (S)CSS variables in `common/variables-custom` and custom (S)CSS code in `common/_custom.scss`. + +### `config/_default/` + +The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. + +The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. + +The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. + +### `content/` + +The `content/` directory is where you store [pages](/basics/pages/), organized in sections or page bundles (leaf bundles or branch bundles) and can contain page resources. + +### `layouts/` + +[Layouts](/basics/layouts/) are Thulite templates that define the UI structure shared by one or more pages. + +### `static/` + +The `static/` directory is for files and assets that do not need to be processed during Thulite' build process. These files will be copied into the build folder untouched. + +This behavior makes `static/` ideal for common assets like images and fonts, or special files such as `robots.txt` and `manifest.webmanifest`. + +You can place CSS and JavaScript in your `static/` directory, but be aware that those files will not be bundled or optimized in your final build. + +:::tip +As a general rule, any CSS or JavaScript that you write yourself should live in your `assets/` directory. +::: + + +### `package.json` + +This is a file used by JavaScript package managers to manage your dependencies. It also defines the scripts that are commonly used to run Thulite (ex: `npm run dev`, `npm run build`). + +There are [two kinds of dependencies](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) you can specify in a `package.json`: `dependencies` and `devDependencies`. In most cases, these work the same: Thulite needs all dependencies at build time, and your package manager will install both. We recommend putting all of your dependencies in `dependencies` to start, and only use `devDependencies` if you find a specific need to do so. + +For help creating a new `package.json` file for your project, check out the [manual setup](/install/manual/) instructions. diff --git a/content/start-here/_index.md b/content/start-here/_index.md new file mode 100644 index 000000000..ddb6be34c --- /dev/null +++ b/content/start-here/_index.md @@ -0,0 +1,19 @@ +--- +title: "Start Here" +description: "" +summary: "" +date: 2026-03-25T10:58:25+01:00 +lastmod: 2026-03-25T10:58:25+01:00 +draft: false +weight: 100 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) + section: + title: "Start Here" + iconName: "rocket" + startUrl: "/start-here/getting-started/" +--- diff --git a/content/start-here/concepts/_index.md b/content/start-here/concepts/_index.md new file mode 100644 index 000000000..970f64ead --- /dev/null +++ b/content/start-here/concepts/_index.md @@ -0,0 +1,19 @@ +--- +title: "Concepts" +description: "" +summary: "" +date: 2026-03-25T10:58:56+01:00 +lastmod: 2026-03-25T10:58:56+01:00 +draft: false +weight: 150 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) + section: + title: "Concepts" + iconName: "bulb" + startUrl: "/concepts/why-thulite/" +--- diff --git a/content/start-here/concepts/dependencies.md b/content/start-here/concepts/dependencies.md new file mode 100644 index 000000000..76c40249d --- /dev/null +++ b/content/start-here/concepts/dependencies.md @@ -0,0 +1,76 @@ +--- +title: "Dependencies" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 153 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Thulite helps you [build scalable and maintainable websites](/start-here/concepts/why-thulite/#solid-architecture) and leverages npm to [explicitly declare and isolate dependencies](https://12factor.net/dependencies). + +## Explicit declaration and isolation + +The [Dependencies](https://12factor.net/dependencies) section of the Twelve-Factor App encourages every app to declare and isolate all required dependencies. + +In practice, this means: + +- Use a dependency manifest to list what your project needs. +- Use a package manager or module system to install dependencies in a reproducible way. +- Avoid hidden dependencies from the host machine. + +This improves reliability across environments and makes onboarding easier for new contributors. + +## JavaScript + +For JavaScript projects, this usually means declaring dependencies in `package.json` and installing them with [npm](https://www.npmjs.com/). + +npm installs packages into a local `node_modules` directory, so your project does not depend on globally installed system packages. This keeps builds consistent between local development, CI, and production. + +## Thulite + +In Thulite, [integrations](https://thulite.io/integrations/) are npm packages declared in your project's `package.json`. + +Thulite then uses Hugo's module configuration to [mount](https://gohugo.io/configuration/module/#mounts) relevant files from dependency `node_modules` directories into Hugo [component](https://gohugo.io/quick-reference/glossary/#component) directories. This makes those assets available to Hugo during the build process. + +### Pros + +- Centralizes dependency management in `package.json`. +- Familiar workflow for teams already using npm. +- Access to the broader JavaScript ecosystem and tooling. + +### Cons + +- Different from the default Hugo dependency workflow. + +## Hugo + +You can also manage dependencies with [Hugo Modules](https://gohugo.io/hugo-modules/use-modules/). In that approach: + +1. Declare dependencies in a `go.mod` file. +2. Use Hugo's module system to pin and resolve versions consistently. + +Hugo also provides [`hugo mod npm pack`](https://gohugo.io/commands/hugo_mod_npm_pack/), which generates a composite `package.json` from `package.hugo.json` files in your project and modules. + +### Pros + +- Aligns with the standard Hugo module workflow. + +### Cons + +- Using Hugo Modules requires you to have [Go](https://go.dev/dl/) installed. +- Using npm alongside Hugo Modules introduces _two_ dependency systems. +- Hugo's integrated npm support is still _experimental_. +- Hugo's integrated npm support is _limited_. For example, `scripts` in `package.json` are not supported. + +## Chosen approach + +Thulite chooses npm as the primary dependency manager because it keeps integrations and frontend tooling in one familiar workflow, without requiring Go or maintaining two parallel dependency systems. Hugo Modules are still used for mounting and composition, but npm-first dependency management gives most teams a simpler and more predictable setup. diff --git a/content/start-here/concepts/why-thulite.md b/content/start-here/concepts/why-thulite.md new file mode 100644 index 000000000..d8bc98067 --- /dev/null +++ b/content/start-here/concepts/why-thulite.md @@ -0,0 +1,88 @@ +--- +title: "Why Thulite?" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 151 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Thulite is a web framework built for speed, security, and SEO, powered by Hugo and npm. It helps you create content-driven websites, including blogs, marketing sites, documentation portals, and e-commerce projects, with production-ready defaults from day one. + +If you need a site that loads quickly, stays secure, and ranks well, Thulite gives you a strong starting point. + +## Features + +Thulite is an all-in-one framework for modern websites. It includes the essentials out of the box, plus a growing ecosystem of [integrations](https://thulite.io/integrations/) and [templates](https://thulite.io/templates/) to match your use case. + +Some highlights include: + +- [Site generator](https://gohugo.io/): Use Hugo for fast builds and flexible content modeling. +- [Dependencies](/start-here/concepts/dependencies/): Manage project dependencies explicitly with npm. +- [Integrations](https://thulite.io/integrations/): Extend your project with integrations such as CSS frameworks, SEO optimization, and image handling. +- [Templates](https://thulite.io/templates/): Start from purpose-built templates for docs, blogs, landing pages, and more. + +## Design Principles + +These five design principles explain why Thulite exists, which problems it solves, and when it is the right fit for your team. + +Thulite is... + +- [Solid architecture](#solid-architecture): Build sites that are maintainable and scalable over time. +- [Fast by default](#fast-by-default): Avoid performance regressions by starting from optimized defaults. +- [Maximum secure](#maximum-secure): Keep your site aligned with current web security best practices. +- [Easy to use](#easy-to-use): You don't need to be an expert to build something with Thulite. +- [Developer-focused](#developer-focused): Get the tooling, docs, and community support needed to ship confidently. + +### Solid architecture + +Thulite applies ideas from [The Twelve-Factor App](https://12factor.net/) to promote maintainable architecture and reliable deployments. These principles encourage clear configuration, clean dependency management, and portable environments. + +The result is a project structure that scales from simple sites to larger multi-environment setups without becoming fragile. + +### Fast by default + +Performance matters for every website, but it is especially important for content-heavy experiences. Slow pages reduce engagement, conversions, and trust. Real-world studies consistently show measurable business impact from faster load times: + +- 43% faster LCP → 156% more conversions ([Ray-Ban](https://web.dev/case-studies/rayban-speculation-rules/), 2025) +- 42% faster LCP → 60% more visit-to-order conversions ([T-Mobile](https://web.dev/case-studies/t-mobile-case-study/), 2025) +- 18% faster load time → 8.9% more user engagement ([Monrif Publishing](https://web.dev/case-studies/monrif-cwv/), 2025) +- Performance improvements → 27% growth in lead generation ([Fotocasa](https://web.dev/case-studies/fotocasa-cwv/), 2025) + +Many frameworks make it easy to build pages that feel fast on a developer laptop but become slow in production, especially on mid-range mobile devices. + +Thulite combines architectural discipline with production-oriented optimizations and tools such as [Quicklink](https://getquick.link/). Our goal is simple: make it hard to accidentally ship a slow site. + +### Maximum secure + +Security incidents are common: service outages, defaced homepages, leaked credentials, and exposed payment data. The impact is technical, financial, and reputational. + +Website security is the practice of protecting systems against unauthorized access, modification, disruption, and data loss. + +Effective protection requires decisions across the full stack: application code, server configuration, authentication policies, and client-side behavior. + +Thulite helps by combining [MDN's web security guidelines](https://infosec.mozilla.org/guidelines/web_security) with sensible defaults, so your baseline stays aligned with modern standards. + +### Easy to use + +Thulite aims to be accessible to every web developer. It is designed to feel familiar, whether you are building your first static site or migrating from another stack. + +The framework removes unnecessary complexity during onboarding. You can start with basic HTML and CSS, then adopt advanced features incrementally as your project grows. + +### Developer-focused + +Thulite succeeds only if developers enjoy working with it. That is why the project invests heavily in usability, documentation, and long-term maintainability. + +From a solid CLI experience to actively maintained documentation, the focus is on helping teams move from setup to shipping with less friction. + +The community on Discussions is welcoming and active. Use [Q&A](https://github.com/orgs/thuliteio/discussions/categories/q-a) for project help, and share work in [Showcase](https://github.com/orgs/thuliteio/discussions/categories/showcase) for feedback. + +As an open-source project, Thulite welcomes contributions of all sizes and experience levels. You can join roadmap discussions, contribute fixes and features, and help improve the docs and ecosystem. diff --git a/content/start-here/configuration.md b/content/start-here/configuration.md new file mode 100644 index 000000000..464c7a4fd --- /dev/null +++ b/content/start-here/configuration.md @@ -0,0 +1,131 @@ +--- +title: "Configuration" +description: "Update settings, parameters, and page frontmatter in your Thulite project." +summary: "Update settings, parameters, and page frontmatter in your Thulite project." +date: 2026-04-27T12:46:23+02:00 +lastmod: 2026-04-27T12:46:23+02:00 +draft: false +weight: 115 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This page covers the main configuration tasks for a Thulite project. + + +## Update settings + +Update your [settings](/reference/settings/) in `./config/_default/hugo.toml`: + +```toml {title="hugo.toml"} +title = "Thulite" +baseurl = "http://localhost/" +disableAliases = true +disableHugoGeneratorInject = true +disableKinds = ["taxonomy", "term"] +enableEmoji = true +enableGitInfo = false +enableRobotsTXT = true +languageCode = "en-US" +rssLimit = 10 +summarylength = 20 # 70 (default) + +copyRight = "Copyright (c) 2020-2026 Thulite" + +[build.buildStats] + enable = true + +[outputs] + home = ["HTML"] + +[caches] + [caches.getresource] + dir = ":cacheDir/:project" + maxAge = "30m" + +[taxonomies] + category = "categories" + +[permalinks] + blog = "/:title/" + +[minify.tdewolff.html] + keepComments = true # If set to false, build signatures are removed + keepWhitespace = false + +[related] + threshold = 80 + includeNewer = true + toLower = false + [[related.indices]] + name = "categories" + weight = 100 + [[related.indices]] + name = "tags" + weight = 80 + [[related.indices]] + name = "date" + weight = 10 +``` + +## Update parameters + +Update your [parameters](/reference/parameters/) in `./config/_default/params.toml`: + +```toml {title="params.toml"} +# Hugo +title = "My Thulite site" +description = "Congrats on setting up a new Thulite project!" +images = ["cover.png"] + +# Debug +[render_hooks.image] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + +[render_hooks.link] + errorLevel = 'ignore' # ignore (default), warning, or error (fails the build) + highlightBroken = false # true or false (default) +``` + +## Update page frontmatter + +Update your [page frontmatter](/reference/page-frontmatter/) in `./content/*.md` files: + +```md {title="_index.md"} +--- +title : "My Thulite site" +description: "Congrats on setting up a new Thulite project!" +lead: "Congrats on setting up a new Thulite project!" +date: 2026-04-28T17:01:41+02:00 +lastmod: 2026-04-28T17:01:52+02:00 +draft: false +--- +``` + + +## Integrations + +{{< card-grid >}} +{{< link-card + title="Thulite SEO" + description="Update settings, parameters, and page frontmatter." + href="https://seo.thulite.io/docs/start-here/configuration/" +>}} +{{< link-card + title="Thulite Images" + description="Update settings and parameters." + href="https://images.thulite.io/docs/start-here/configuration/" +>}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card + title="Thulite SVG" + description="Update your project's parameters" + href="https://svg.thulite.io/docs/start-here/configuration/" + class="w-50" +>}} +{{< /card-grid >}} diff --git a/content/start-here/editor-setup.md b/content/start-here/editor-setup.md new file mode 100644 index 000000000..f859f6eb2 --- /dev/null +++ b/content/start-here/editor-setup.md @@ -0,0 +1,67 @@ +--- +title: "Editor Setup" +description: "Configure your editor and formatting tools for a smoother Thulite workflow." +summary: "Configure your editor and formatting tools for a smoother Thulite workflow." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 145 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This page covers the editor and formatting tools we recommend for Thulite projects. + +## Editor choice + +Thulite works with any code editor, but we recommend [VS Code](https://code.visualstudio.com/) for the best experience. The VS Code engine also powers in-browser editors such as [GitHub Codespaces](https://github.com/features/codespaces). + +If you use VS Code, install these extensions: + +- [Hugo Language and Syntax Support](https://marketplace.visualstudio.com/items?itemName=budparr.language-hugo-vscode) +- [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one) +- [Even Better TOML](https://marketplace.visualstudio.com/items?itemName=tamasfe.even-better-toml) +- [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) +- [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) +- [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) + +## Formatting + +Thulite includes Prettier and a `format` script for formatting JavaScript, HTML, CSS, and other supported files. You can customize the defaults by updating the `.prettierrc.yaml` and `.prettierignore` files in your project root. + +Use the command that matches your package manager: + +{{< tabs "package-manager-1" >}} +{{< tab "npm" >}} + +```bash +npm run format +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run format +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn format +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run format +``` + +{{< /tab >}} +{{< /tabs >}} diff --git a/content/start-here/getting-started.md b/content/start-here/getting-started.md new file mode 100644 index 000000000..0c080d777 --- /dev/null +++ b/content/start-here/getting-started.md @@ -0,0 +1,74 @@ +--- +title: "Getting Started" +description: "Learn what Thulite is and get oriented with the key next steps." +summary: "Learn what Thulite is and get oriented with the key next steps." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 105 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Thulite is a web framework built for speed, security, and SEO, powered by Hugo and npm. It helps you build production-ready websites with exceptional performance, enterprise security, scalable architecture, and a developer-friendly workflow. + +## Prerequisites + +- [Hugo](https://github.com/gohugoio/hugo/releases/latest) (latest extended or extended/deploy edition) +- [Thulite](https://github.com/thuliteio/thulite/releases/latest) (latest version) +- [Node.js/npm](https://nodejs.org/en/download) (latest LTS version) + +## Quick start + +{{< card-grid >}} +{{< link-card + title="Installation" + description="Create a Thulite project using a template and optional integrations." + href="/start-here/installation/" +>}} +{{< link-card + title="Configuration" + description="Update settings, parameters, and page front matter." + href="/start-here/configuration/" +>}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card + title="Usage" + description="Learn how to use your Thulite project." + href="/start-here/usage/" +>}} +{{< link-card + title="Verification" + description="Validate your Thulite setup and output quality." + href="/start-here/verification/" +>}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card + title="Updating" + description="Update Thulite to the latest version." + href="/start-here/updating/overview/" +>}} +{{< link-card + title="Troubleshooting" + description="Diagnose and fix common issues." + href="/start-here/troubleshooting/" +>}} +{{< /card-grid >}} + +## Credits + +Thulite builds on the excellent work of the open-source ecosystem, especially: + +- [Hugo](https://gohugo.io/) +- [Vite](https://vite.dev/) +- [npm](https://www.npmjs.com/) + +Special thanks to the Thulite contributors, template authors, integration maintainers, and community members who continuously improve the framework and documentation. diff --git a/content/start-here/installation.md b/content/start-here/installation.md new file mode 100644 index 000000000..f234df228 --- /dev/null +++ b/content/start-here/installation.md @@ -0,0 +1,132 @@ +--- +title: "Installation" +description: "Create a Thulite project using the CLI with a template and optional integrations." +summary: "Create a Thulite project using the CLI with a template and optional integrations." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 110 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +This page guides you through creating a new Thulite project with a template and optional integrations. + +## Create a new project + +Run the command for your package manager to start an interactive [CLI](/reference/cli/) setup: + +{{< tabs "create-new-site" >}} +{{< tab "npm" >}} + +```bash +npm create thulite@latest +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm create thulite +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn create thulite +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun create thulite +``` + +{{< /tab >}} +{{< /tabs >}} + +This will guide you through an interactive setup process where you'll select your project name, [choose a template](https://thulite.io/templates/), and pick your preferred variant. Follow the prompts as shown below: + +{{< steps >}} +{{< step >}} + +Enter your project name /installation directory + +```txt {frame="none"} +│ +◆ Project name: +│ thulite-project +└ +``` + +{{< /step >}} +{{< step >}} + +Select a template + +```txt {frame="none"} +◆ Select a template: +│ ○ Doks theme +│ ○ Bolt theme +│ ○ Tailwind CSS starter +│ ○ Bootstrap starter +│ ● Basic starter +└ +``` + +{{< /step >}} +{{< step >}} + +Select a variant + +```txt {frame="none"} +◆ Select a variant: +│ ● With recommended integrations (SEO and Images) +│ ○ Without recommended integrations +└ +``` + +{{< /step >}} +{{< step >}} + +Install and start now? + +```txt {frame="none"} +◆ Install with npm and start now? +│ ● Yes / ○ No +└ +``` + +{{< /step >}} +{{< step >}} + +Scaffolding project + +```txt {frame="none"} +◇ Scaffolding project in /home/h-enk/thulite-project... +│ +◇ Installing dependencies with npm... +│ +◇ Starting dev server... +``` + +{{< /step >}} +{{< /steps >}} + +You'll now have a new [project directory](/reference/project-structure/) with all the necessary files and configurations for your site. +{.mt-3} + +## Configure Thulite + +{{< link-card + title="Configure Thulite" + description="Update settings, parameters, and page front matter." + href="/start-here/configuration/" +>}} diff --git a/content/start-here/troubleshooting.md b/content/start-here/troubleshooting.md new file mode 100644 index 000000000..bd6406ec8 --- /dev/null +++ b/content/start-here/troubleshooting.md @@ -0,0 +1,28 @@ +--- +title: "Troubleshooting" +description: "Diagnose and fix common issues with your Thulite installation and setup." +summary: "Diagnose and fix common issues with your Thulite installation and setup." +date: 2026-04-27T12:47:03+02:00 +lastmod: 2026-04-27T12:47:03+02:00 +draft: false +weight: 140 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This page helps you find answers to common problems with Thulite. + +## Verify your setup + +Use the [Settings](/reference/settings/), [Parameters](/reference/parameters/), and [Page Frontmatter](/reference/page-frontmatter/) reference pages to confirm your configuration is correct. + +## Consult the documentation + +If you cannot find an answer in this documentation, visit the [Thulite SEO Docs](https://seo.thulite.io/), [Thulite Images Docs](https://images.thulite.io/), and [Thulite SVG Docs](https://svg.thulite.io/) for integration-level guidance. + +## Ask the community + +Check for known [issues on GitHub](https://github.com/thuliteio/thulite/issues), or ask for help in [Thulite Discussions](https://github.com/thuliteio/thulite/discussions). The community is active and happy to help. diff --git a/content/start-here/updating/_index.md b/content/start-here/updating/_index.md new file mode 100644 index 000000000..8c72d4370 --- /dev/null +++ b/content/start-here/updating/_index.md @@ -0,0 +1,18 @@ +--- +title: "Updating" +description: "" +summary: "" +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 130 +params: + toc: true + sidebar: + collapsed: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/start-here/updating/overview.md b/content/start-here/updating/overview.md new file mode 100644 index 000000000..d357421d4 --- /dev/null +++ b/content/start-here/updating/overview.md @@ -0,0 +1,168 @@ +--- +title: "Updating Overview" +linkTitle: "Overview" +description: "Learn how to update Thulite, track release changes, and use semantic versioning to plan safe upgrades." +summary: "Learn how to update Thulite, track release changes, and use semantic versioning to plan safe upgrades." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 131 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This page explains how to update Thulite, where to check what changed between releases, and how version numbers affect your upgrade path. + +## Quick links + +- Release notes: [all releases](https://github.com/thuliteio/thulite/releases) or [latest release](https://github.com/thuliteio/thulite/releases/latest) +- Full change history: [CHANGELOG.md](https://github.com/thuliteio/thulite/blob/main/CHANGELOG.md) +- Breaking-change instructions: [Upgrade Guides](#upgrade-guides) + +## Update to the latest version + +Use the command that matches your package manager. + +{{< tabs "update-thulite-command" >}} +{{< tab "npm" >}} + +```bash +npm install thulite@latest +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm upgrade thulite --latest +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn upgrade thulite --latest +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun update thulite --latest +``` + +{{< /tab >}} +{{< /tabs >}} + +### Install a specific version + +To install a specific [Thulite version](https://www.npmjs.com/package/thulite?activeTab=versions), run one of the following commands. + +{{< tabs "package-manager-1" >}} +{{< tab "npm" >}} + +```bash +npm install thulite@2.6.5 +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm install thulite@2.6.5 +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn add thulite@2.6.5 +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun install thulite@2.6.5 +``` + +{{< /tab >}} +{{< /tabs >}} + +## Documentation updates + +The documentation tracks the latest Thulite behavior, including [minor](#minor-changes) and [major](#major-changes) releases. + +If your project is behind, you may see differences between docs and runtime behavior. Check `Added in:` version notes in the docs before using newer features, and make sure your project version supports them. + +Projects that stay on older major versions can diverge significantly from the current docs. To reduce confusion and avoid unsupported setups, upgrade to the latest major version when possible. + +### Upgrade Guides + +Each [major release](#major-changes) includes an upgrade guide with migration steps and breaking-change details. + +Main docs describe the latest version only. They do not compare historical behavior. Use upgrade guides when moving from one major version to another. + +Upgrade guides focus on changes that can require code updates, including breaking changes, deprecations, removals, replacements, and updated usage guidance. + +- [Upgrade to v2](/start-here/updating/v2/) + +## Semantic versioning + +Thulite follows [semantic versioning](https://semver.org/) to signal the impact of each release. + +Version numbers use the `X.Y.Z` pattern: + +- `X` = major +- `Y` = minor +- `Z` = patch + +### Patch changes + +Patch releases are the least disruptive. They typically require no changes in your project code. + +When a patch is released, only the last number increases (for example, `thulite@2.4.1` -> `thulite@2.4.2`). + +Patch releases can include: + +- Internal changes that do not alter public behavior: + - refactors + - performance improvements + - test coverage changes + - alignment with documented behavior +- Improvements to logging and error messages. +- Re-releases after a failed release. + +Most bug fixes are also released as patches, including cases where behavior previously relied on unintended implementation details. + +### Minor changes + +Minor releases usually add features and improvements without requiring changes to your code. + +A minor release can also mark features as `deprecated`, meaning they still work now but are planned for removal in a future major release. + +Minor releases can include: + +- Deprecations of existing features/options with a warning that they will be removed in an upcoming major release. +- New features. +- New options in integration hooks. + +A minor release may also bundle patch-level fixes. + +### Major changes + +Major releases include breaking changes for at least some existing projects. + +These releases can change public behavior, APIs, and usage patterns. Main docs are updated to the latest version, while older docs are kept only as historical references. + +Major releases can include: + +- Removal of previously deprecated functionalities. +- Changes to existing features. +- Changes to existing options in integration hooks. + +A major release may also include non-breaking improvements in the same release. diff --git a/content/start-here/updating/v2.md b/content/start-here/updating/v2.md new file mode 100644 index 000000000..797b1ef33 --- /dev/null +++ b/content/start-here/updating/v2.md @@ -0,0 +1,255 @@ +--- +title: "V2" +description: "This guide will help you migrate from Thulite v1 to Thulite v2." +summary: "This guide will help you migrate from Thulite v1 to Thulite v2." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 133 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use this guide to migrate your project from Thulite v1 to Thulite v2. + +## Prerequisites + +- [Hugo](https://github.com/gohugoio/hugo/releases/latest) (latest extended or extended/deploy edition) +- [Thulite](https://github.com/thuliteio/thulite/releases/latest) (latest version) +- [Node.js/npm](https://nodejs.org/en/download) (latest LTS version) + +## Updating + +Follow the steps below to update your project. + +{{< steps >}} +{{< step >}} + +Remove currently installed dependencies to avoid version conflicts: + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} + +```bash +npm run clean:install +``` + + {{< /tab >}} + {{< tab "pnpm" >}} + +```bash +pnpm run clean:install +``` + + {{< /tab >}} + {{< tab "Yarn" >}} + +```bash +yarn run clean:install +``` + + {{< /tab >}} + {{< tab "bun" >}} + +```bash +bun run clean:install +``` + + {{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< step >}} +Update `package.json` + +Replace the contents of your project's `package.json` with the following template: + +```json +// package.json +{ + "name": "thulite-project", + "version": "0.0.0", + "description": "Thulite", + "author": "Thulite", + "license": "MIT", + "scripts": { + "create": "hugo new", + "dev": "hugo server --disableFastRender --noHTTPCache", + "format": "prettier **/** -w -c", + "build": "hugo --minify --gc", + "preview": "vite preview --outDir public" + }, + "engines": { + "node": ">=20.11.0" + } +} +``` + +{{< /step >}} +{{< step >}} + +Install the latest Thulite dependency in your project: + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} + +```bash +npm install thulite@latest +``` + + {{< /tab >}} + {{< tab "pnpm" >}} + +```bash +pnpm install thulite@latest +``` + + {{< /tab >}} + {{< tab "Yarn" >}} + +```bash +yarn add thulite@latest +``` + + {{< /tab >}} + {{< tab "bun" >}} + +```bash +bun install thulite@latest +``` + + {{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< step >}} + +Install the latest versions of Prettier and Vite as `devDependencies`: + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} + +```bash +npm install -D prettier@latest vite@latest +``` + + {{< /tab >}} + {{< tab "pnpm" >}} + +```bash +pnpm install -D prettier@latest vite@latest +``` + + {{< /tab >}} + {{< tab "Yarn" >}} + +```bash +yarn add -D prettier@latest vite@latest +``` + + {{< /tab >}} + {{< tab "bun" >}} + +```bash +bun add -D prettier@latest vite@latest +``` + + {{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< step >}} + +Optionally, install the recommended integrations in your project: + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} + +```bash +npm install @thulite/images@latest @thulite/seo@latest +``` + + {{< /tab >}} + {{< tab "pnpm" >}} + +```bash +pnpm install @thulite/images@latest @thulite/seo@latest +``` + + {{< /tab >}} + {{< tab "Yarn" >}} + +```bash +yarn add @thulite/images@latest @thulite/seo@latest +``` + + {{< /tab >}} + {{< tab "bun" >}} + +```bash +bun install @thulite/images@latest @thulite/seo@latest +``` + + {{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< /steps >}} + +{{< callout context="note" title="Need to continue?" icon="info-circle" >}} + +After upgrading Thulite to the latest version, you may not need to make any changes to your project at all! + +If you notice errors or unexpected behavior, review the sections below to identify project changes you may still need to make. + +{{< /callout >}} + +## Configuration + +Review your project configuration for Thulite and the recommended integrations: + +- [Thulite](/start-here/configuration/) +- [Images](https://images.thulite.io/docs/start-here/configuration/) +- [SEO](https://seo.thulite.io/docs/start-here/configuration/) +- [SVG](https://svg.thulite.io/docs/start-here/configuration/) + +## Known Issues + +### ENOENT + +If you get an `ENOENT` error, run the following command: + +{{< tabs "package-manager-1" >}} + {{< tab "npm" >}} + +```bash +npm run clean:install && npm install +``` + + {{< /tab >}} + {{< tab "pnpm" >}} + +```bash +pnpm run clean:install && pnpm install +``` + + {{< /tab >}} + {{< tab "Yarn" >}} + +```bash +yarn run clean:install && yarn install +``` + + {{< /tab >}} + {{< tab "bun" >}} + +```bash +bun run clean:install && bun install +``` + + {{< /tab >}} +{{< /tabs >}} diff --git a/content/start-here/usage.md b/content/start-here/usage.md new file mode 100644 index 000000000..45a235e36 --- /dev/null +++ b/content/start-here/usage.md @@ -0,0 +1,246 @@ +--- +title: "Usage" +description: "Learn the day-to-day workflow for editing, building, previewing, and deploying a Thulite site." +summary: "Learn the day-to-day workflow for editing, building, previewing, and deploying a Thulite site." +date: 2026-04-27T12:46:32+02:00 +lastmod: 2026-04-27T12:46:32+02:00 +draft: false +weight: 120 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This guide covers the standard development workflow for a Thulite project. + +{{< callout context="note" icon="info-circle" >}} + +See [Commands](/reference/commands/) for full command details. + +{{< /callout >}} + +## Create content + +Add new pages with the `create` script. This command creates files in your `content/` directory using your project's archetypes. + +{{< tabs "create-content-command" >}} +{{< tab "npm" >}} + +```bash +npm run create about.md +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run create about.md +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn run create about.md +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run create about.md +``` + +{{< /tab >}} +{{< /tabs >}} + +Set `draft: false` in front matter when the page is ready to publish. + +## Start development server + +Open your project folder in your editor and run the development server so your browser refreshes while you work. + +{{< tabs "start-development-server-command" >}} +{{< tab "npm" >}} + +```bash +npm run dev +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run dev +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn dev +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run dev +``` + +{{< /tab >}} +{{< /tabs >}} + +When the server starts, open the local URL shown in your terminal (for example, `http://localhost:1313/`). + +## Format + +Run the formatter before building or opening a pull request to keep Markdown, styles, and scripts consistent. + +{{< tabs "format-command" >}} +{{< tab "npm" >}} + +```bash +npm run format +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run format +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn format +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run format +``` + +{{< /tab >}} +{{< /tabs >}} + +## Build + +Before deploying, stop the development server (`Ctrl + C`) and create a production build. + +{{< tabs "build-command" >}} +{{< tab "npm" >}} + +```bash +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +This generates deploy-ready output in `public/` and surfaces build errors early. + +## Preview + +Preview the built site locally to validate what will actually be deployed. + +{{< tabs "preview-command" >}} +{{< tab "npm" >}} + +```bash +npm run preview +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run preview +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn preview +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run preview +``` + +{{< /tab >}} +{{< /tabs >}} + +Preview uses your most recent build. If you make code changes after building, run the build command again before previewing. + +To test on other devices in your local network (for example, a phone), use `--host` with preview: + +{{< tabs "preview-network-command" >}} +{{< tab "npm" >}} + +```bash +npm run build && npm run preview -- --host +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build && pnpm run preview --host +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn build && yarn preview --host +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build && bun run preview --host +``` + +{{< /tab >}} +{{< /tabs >}} + +## Deploy + +Once everything looks good in preview, deploy your site. + +- Follow the deployment guides in [Deploy overview](/basics/deploy/overview/). +- Use [Verification](/start-here/verification/) to validate quality and output before production updates. diff --git a/content/start-here/verification.md b/content/start-here/verification.md new file mode 100644 index 000000000..c230877fe --- /dev/null +++ b/content/start-here/verification.md @@ -0,0 +1,147 @@ +--- +title: "Verification" +description: "Validate that your Thulite project builds correctly and produces expected output before deployment." +summary: "Validate that your Thulite project builds correctly and produces expected output before deployment." +date: 2026-04-27T12:46:43+02:00 +lastmod: 2026-04-27T12:46:43+02:00 +draft: false +weight: 125 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +This page helps you verify that Thulite is generating the expected pages, assets, and metadata. + +## Build your site + +Create a production build before inspecting the generated output. + +{{< tabs "verification-build-command" >}} +{{< tab "npm" >}} + +```bash +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +Check for: + +- A successful build with no unresolved content, template, or asset errors +- Generated output in `public/` +- Bundled CSS and JavaScript assets +- Generated `robots.txt`, `sitemap.xml`, and other expected top-level output files + +If the build fails, continue to [Troubleshooting](/start-here/troubleshooting/). + +## Inspect generated HTML + +Open page source in your browser or inspect files in `public/` to confirm the generated HTML matches your expectations. + +Check for: + +- A valid page `` and meta description +- Expected headings, navigation, and page content +- Canonical, Open Graph, and Twitter metadata when you use the SEO integration +- Correct stylesheet and script references +- Expected language, robots, and structured-data output for your configuration + +If you use Thulite Images or Inline SVG, also confirm that generated image and SVG markup appears correctly where expected. + +## Inspect generated site output + +Review the build output in `public/` and confirm that important files and sections are present. + +Check for: + +- `index.html` files for the pages and sections you expect to publish +- `sitemap.xml` and section sitemap files where configured +- `search-index.json` when your site uses search +- `manifest.webmanifest`, `robots.txt`, icons, fonts, and other static assets +- Fingerprinted CSS and JavaScript files for cache-friendly production builds + +Also verify that pages, static files, and section outputs use the expected URLs for your current `baseurl` and environment configuration. + +## Validate in the browser + +Preview the built site locally and verify behavior in real conditions. + +{{< tabs "verification-preview-command" >}} +{{< tab "npm" >}} + +```bash +npm run preview +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run preview +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn preview +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run preview +``` + +{{< /tab >}} +{{< /tabs >}} + +Check for: + +- No broken internal links or missing pages +- No 404 responses for stylesheets, scripts, images, fonts, or icons +- Correct navigation, menus, and sidebar behavior +- Responsive layout behavior on desktop and mobile widths +- No unexpected console errors or visible rendering issues + +If your project includes optional integrations, validate those behaviors as well using the dedicated guides for [Thulite SEO](https://seo.thulite.io/docs/start-here/verification/), [Thulite Images](https://images.thulite.io/docs/start-here/verification/), and [Thulite SVG](https://svg.thulite.io/docs/start-here/verification/). + +## Use tools + +Use browser and auditing tools to validate output quality before deployment. + +For example: + +- [Lighthouse](https://developer.chrome.com/docs/lighthouse/overview) +- [PageSpeed Insights](https://pagespeed.web.dev/) +- [WAVE Web Accessibility Evaluation Tool](https://wave.webaim.org/) +- [Nu Html Checker](https://validator.w3.org/nu/) + +If anything looks incorrect, continue to [Troubleshooting](/start-here/troubleshooting/). diff --git a/hugo_stats.json b/hugo_stats.json index 5361bace7..5430be941 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -5,11 +5,18 @@ "article", "aside", "base", + "blockquote", "body", "button", "circle", + "code", + "dd", + "del", "details", "div", + "dl", + "dt", + "em", "figcaption", "figure", "footer", @@ -18,11 +25,13 @@ "h1", "h2", "h3", + "h4", "h5", "head", "header", "hr", "html", + "img", "input", "kbd", "label", @@ -30,53 +39,91 @@ "line", "link", "main", + "mark", "meta", "nav", "noscript", + "ol", "p", "path", "pre", + "rect", "script", "section", "small", "span", "strong", "style", + "sub", "summary", + "sup", "svg", + "table", + "tbody", + "td", "template", + "th", + "thead", "time", "title", + "tr", "ul" ], "classes": [ + "/box", + "/brand-javascript", + "/brand-sass", + "/file-text", + "/folder", + "/html", + "/json", + "/markdown", + "/rocket", + "/settings-2", + "/svg", + "/toml", "404", "DocSearch-Label", "active", + "advanced", + "align-items-center", "align-items-start", "anchor", - "blog", - "blog-header", + "article", + "basics", + "border-0", "btn", "btn-close", "btn-cta", "btn-lg", "btn-link", + "btn-outline-secondary", "btn-primary", "btn-sm", + "callout", + "callout-body", + "callout-content", + "callout-icon", + "callout-note", + "callout-tip", + "callout-title", "card", "card-body", "card-list", - "categories", + "card-nav", + "card-text", + "card-title", + "chevron-right", "chroma", "col", + "col-13", "col-lg-10", + "col-lg-11", "col-lg-12", "col-lg-16", "col-lg-5", "col-lg-7", "col-lg-8", - "col-lg-9", "col-md-12", "col-xl-3", "col-xl-4", @@ -86,7 +133,6 @@ "container-fluid", "container-fw", "content", - "contributors", "created-date", "d-flex", "d-lg-block", @@ -97,7 +143,6 @@ "d-none", "d-xl-block", "d-xl-none", - "docs", "docs-content", "docs-links", "docs-sidebar", @@ -110,6 +155,8 @@ "dropdown-menu-end", "dropdown-toggle", "expressive-code", + "fade", + "file-text", "flex-column", "flex-grow-1", "flex-lg-row", @@ -117,16 +164,22 @@ "flex-row", "flex-sm-row", "flex-xl-nowrap", + "folder-root", "footer", + "footnote-backref", + "footnote-ref", + "footnotes", "form-control", "form-control-lg", "frame", "fs-5", "fs-6", + "fw-medium", "g-4", + "gauge", "h-auto", - "h3", "h5", + "has-title", "header", "header-content", "highlight", @@ -137,15 +190,18 @@ "icon-tabler-arrow-left", "icon-tabler-arrow-right", "icon-tabler-brand-github", - "icon-tabler-clock", + "icon-tabler-check", + "icon-tabler-chevron-down", "icon-tabler-dots", "icon-tabler-dots-vertical", "icon-tabler-menu", "icon-tabler-moon", "icon-tabler-search", + "icon-tabler-selector", "icon-tabler-sun", "icon-tabler-x", "icons-tabler-outline", + "info-circle", "is-terminal", "justify-content-between", "justify-content-center", @@ -160,8 +216,12 @@ "list-unstyled", "list-view", "m-2", + "markdown-svg", "mb-0", "mb-1", + "mb-3", + "mb-4", + "mb-lg-0", "me-1", "me-2", "me-auto", @@ -183,14 +243,18 @@ "ms-lg-2", "mt-1", "mt-3", + "mt-4", "mt-lg-0", "mt-n3", "mx-2", "mx-auto", + "mx-xl-auto", + "my-0", "my-3", "nav", "nav-item", "nav-link", + "nav-tabs", "navbar", "navbar-brand", "navbar-expand-lg", @@ -204,12 +268,6 @@ "offcanvas-title", "order-3", "order-lg-4", - "outline/article", - "outline/chevron-right", - "outline/file-text", - "outline/folder-root", - "outline/gauge", - "outline/stack-2", "p-0", "p-2", "page-footer-meta", @@ -217,13 +275,20 @@ "page-links", "page-nav", "page-wash", + "pb-2", "pb-5", - "position-relative", - "privacy", + "pe-4", + "preview", + "preview-content", + "preview-figure", + "ps-3", "pt-3", + "pt-4", "px-0", "query-no-results", - "reading-time", + "reference", + "rocket", + "rounded", "rounded-pill", "row", "search-form", @@ -235,21 +300,29 @@ "search-results", "search-text", "section", + "section-divider", "section-footer", "section-header", "section-main", "section-nav", "section-prefooter", + "section-switcher", + "shadow", + "show", "single", "social-link", + "stack-2", + "start-here", "status", "sticky-top", "stretched-link", "submitted", "svg-inline", - "tags", - "taxonomy", - "text-body", + "svg-inline-custom", + "svg-monochrome", + "tab-content", + "tab-pane", + "text-body-emphasis", "text-body-secondary", "text-center", "text-decoration-none", @@ -257,42 +330,373 @@ "text-lg-end", "text-lg-start", "text-muted", - "text-nowrap", "text-reset", + "text-start", + "thulite-steps", "title", "title-submitted", "toc-mobile", "toc-mobile-sticky", + "tree", "visually-hidden", "w-100", + "w-50", "wrap" ], "ids": [ + "--help", + "--immediate", + "--interactive----no-interactive", + "--overwrite", + "--template", "TableOfContents", + "add-parameters", + "add-script", + "add-tracking-id", + "add-translated-content", + "adding-an-integration", "ai-dropdown", + "analytics-guides", + "arguments", + "ask-the-community", + "assetsscss", + "babelconfigjs", + "background", + "blockquote", + "bold", + "build", + "build-your-site", + "building-your-own-integration", + "building-your-site-locally", "buttonColorMode", + "chosen-approach", + "cli-deployment", + "cms-guides", + "code", + "config_default", + "confignext", + "configproduction", + "configuration", + "configure-languages", + "configure-thulite", + "configuring-an-integration", + "cons", + "cons-1", + "consult-the-documentation", + "content", "copy-markdown", + "create", + "create-a-new-project", + "create-content", + "create-new-content", + "credits", + "custom-id", + "definition-list", + "deploy", + "deployment-guides", + "design-principles", + "dev", + "developer-focused", + "directories-and-files", + "directory", + "documentation-updates", "doks-docs-nav", + "easy-to-use", + "editor-choice", + "emoji", + "enabling-preview-locally-with-wrangler", + "enoent", + "example", + "example-project-tree", + "examples", + "explicit-declaration-and-isolation", + "fast-by-default", + "features", + "fenced-code-block", + "finding-more-integrations", + "fn:1", + "fnref:1", + "footnote", + "format", + "formatting", "further-reading", + "h-rh-i-0", + "h1", + "h2", + "h3", + "heading", + "heading-id", + "highlight", + "horizontal-rule", + "how-to-deploy", + "how-to-deploy-a-site-using-wrangler", + "how-to-deploy-a-site-with-git", + "how-to-use", + "hugo", + "hugo-documentation", + "hugo-version", + "hugotoml", + "image", + "inspect-generated-html", + "inspect-generated-site-output", + "install-a-specific-version", + "installation", + "integrations", + "italic", + "javascript", + "known-issues", + "layouts", + "link", + "major-changes", + "markdown", + "markuptoml", + "maximum-secure", + "menustoml", + "minor-changes", + "moduletoml", + "nav-tab", + "nav-tabContent", + "netlifytoml-file", + "node-version", "offcanvasNavMain", "offcanvasNavMainLabel", "offcanvasNavSection", "offcanvasNavSectionLabel", + "official-integrations", + "official-resources", + "official-themes", + "options", + "ordered-list", + "packagejson", + "packagejson-scripts", + "paramstoml", + "patch-changes", + "postcssconfigjs", + "prerequisites", + "preview", + "previewing-your-site-locally", + "project-config-with-verceljson", + "pros", + "pros-1", "query", + "quick-deploy-options", + "quick-links", + "quick-setup", + "quick-start", + "removing-an-integration", + "rendered-html", + "resources", "search-form", "searchModal", "searchModalLabel", "searchResults", "searchToggleDesktop", "searchToggleMobile", + "sectionSwitcher", + "semantic-versioning", + "set-a-nodejs-version", + "setting-up-an-integration", + "setup", "socialMenu", + "solid-architecture", + "start-development-server", + "static", + "status", + "strikethrough", + "subscript", + "superscript", "svg-article", + "svg-box", + "svg-brand-javascript", + "svg-brand-sass", + "svg-cabin", "svg-chevron-right", + "svg-cloudcannon", + "svg-cloudflarepages", + "svg-decapcms", + "svg-fathom", "svg-file-text", + "svg-folder", "svg-folder-root", "svg-gauge", + "svg-github", + "svg-gitlab", + "svg-googleanalytics", + "svg-html", + "svg-info-circle", + "svg-json", + "svg-markdown", + "svg-microsoft", + "svg-netlify", + "svg-plausibleanalytics", + "svg-render", + "svg-rocket", + "svg-settings-2", + "svg-simple-iconsfirebase", "svg-stack-2", - "toc" + "svg-svg", + "svg-thulite", + "svg-tina", + "svg-toml", + "svg-vercel", + "table", + "tabs-build-command-0", + "tabs-build-command-0-tab", + "tabs-build-command-1", + "tabs-build-command-1-tab", + "tabs-build-command-2", + "tabs-build-command-2-tab", + "tabs-build-command-3", + "tabs-build-command-3-tab", + "tabs-command-flags-0", + "tabs-command-flags-0-tab", + "tabs-command-flags-1", + "tabs-command-flags-1-tab", + "tabs-command-flags-2", + "tabs-command-flags-2-tab", + "tabs-command-flags-3", + "tabs-command-flags-3-tab", + "tabs-create-command-0", + "tabs-create-command-0-tab", + "tabs-create-command-1", + "tabs-create-command-1-tab", + "tabs-create-command-2", + "tabs-create-command-2-tab", + "tabs-create-command-3", + "tabs-create-command-3-tab", + "tabs-create-content-command-0", + "tabs-create-content-command-0-tab", + "tabs-create-content-command-1", + "tabs-create-content-command-1-tab", + "tabs-create-content-command-2", + "tabs-create-content-command-2-tab", + "tabs-create-content-command-3", + "tabs-create-content-command-3-tab", + "tabs-create-new-site-0", + "tabs-create-new-site-0-tab", + "tabs-create-new-site-1", + "tabs-create-new-site-1-tab", + "tabs-create-new-site-2", + "tabs-create-new-site-2-tab", + "tabs-create-new-site-3", + "tabs-create-new-site-3-tab", + "tabs-create-page-command-0", + "tabs-create-page-command-0-tab", + "tabs-create-page-command-1", + "tabs-create-page-command-1-tab", + "tabs-create-page-command-2", + "tabs-create-page-command-2-tab", + "tabs-create-page-command-3", + "tabs-create-page-command-3-tab", + "tabs-dev-command-0", + "tabs-dev-command-0-tab", + "tabs-dev-command-1", + "tabs-dev-command-1-tab", + "tabs-dev-command-2", + "tabs-dev-command-2-tab", + "tabs-dev-command-3", + "tabs-dev-command-3-tab", + "tabs-format-command-0", + "tabs-format-command-0-tab", + "tabs-format-command-1", + "tabs-format-command-1-tab", + "tabs-format-command-2", + "tabs-format-command-2-tab", + "tabs-format-command-3", + "tabs-format-command-3-tab", + "tabs-initialize-tina-command-0", + "tabs-initialize-tina-command-0-tab", + "tabs-initialize-tina-command-1", + "tabs-initialize-tina-command-1-tab", + "tabs-initialize-tina-command-2", + "tabs-initialize-tina-command-2-tab", + "tabs-initialize-tina-command-3", + "tabs-initialize-tina-command-3-tab", + "tabs-package-manager-1-0", + "tabs-package-manager-1-0-tab", + "tabs-package-manager-1-1", + "tabs-package-manager-1-1-tab", + "tabs-package-manager-1-2", + "tabs-package-manager-1-2-tab", + "tabs-package-manager-1-3", + "tabs-package-manager-1-3-tab", + "tabs-preview-command-0", + "tabs-preview-command-0-tab", + "tabs-preview-command-1", + "tabs-preview-command-1-tab", + "tabs-preview-command-2", + "tabs-preview-command-2-tab", + "tabs-preview-command-3", + "tabs-preview-command-3-tab", + "tabs-preview-network-command-0", + "tabs-preview-network-command-0-tab", + "tabs-preview-network-command-1", + "tabs-preview-network-command-1-tab", + "tabs-preview-network-command-2", + "tabs-preview-network-command-2-tab", + "tabs-preview-network-command-3", + "tabs-preview-network-command-3-tab", + "tabs-start-development-server-command-0", + "tabs-start-development-server-command-0-tab", + "tabs-start-development-server-command-1", + "tabs-start-development-server-command-1-tab", + "tabs-start-development-server-command-2", + "tabs-start-development-server-command-2-tab", + "tabs-start-development-server-command-3", + "tabs-start-development-server-command-3-tab", + "tabs-tabs-1-0", + "tabs-tabs-1-0-tab", + "tabs-tabs-1-1", + "tabs-tabs-1-1-tab", + "tabs-tabs-1-2", + "tabs-tabs-1-2-tab", + "tabs-update-thulite-command-0", + "tabs-update-thulite-command-0-tab", + "tabs-update-thulite-command-1", + "tabs-update-thulite-command-1-tab", + "tabs-update-thulite-command-2", + "tabs-update-thulite-command-2-tab", + "tabs-update-thulite-command-3", + "tabs-update-thulite-command-3-tab", + "tabs-verification-build-command-0", + "tabs-verification-build-command-0-tab", + "tabs-verification-build-command-1", + "tabs-verification-build-command-1-tab", + "tabs-verification-build-command-2", + "tabs-verification-build-command-2-tab", + "tabs-verification-build-command-3", + "tabs-verification-build-command-3-tab", + "tabs-verification-preview-command-0", + "tabs-verification-preview-command-0-tab", + "tabs-verification-preview-command-1", + "tabs-verification-preview-command-1-tab", + "tabs-verification-preview-command-2", + "tabs-verification-preview-command-2-tab", + "tabs-verification-preview-command-3", + "tabs-verification-preview-command-3-tab", + "task-list", + "template", + "thulite", + "thulite-core", + "toc", + "translate-interface-strings", + "troubleshooting", + "unordered-list", + "unsupported-elements", + "update-page-frontmatter", + "update-parameters", + "update-settings", + "update-to-the-latest-version", + "updating", + "upgrade-guides", + "upgrading-an-integration", + "usage", + "use-tools", + "using-netlify-functions", + "validate-in-the-browser", + "verify-your-setup", + "website-ui", + "website-ui-deployment" ] } } diff --git a/layouts/_partials/sidebar/render-section-menu.html b/layouts/_partials/sidebar/render-section-menu.html new file mode 100644 index 000000000..2004867e2 --- /dev/null +++ b/layouts/_partials/sidebar/render-section-menu.html @@ -0,0 +1,101 @@ +{{- /* +Based on: https://discourse.gohugo.io/t/automated-nested-menus/42835/2 + +Renders a recursive section menu starting from a page collection or menu. + +As it walks the tree, this partial: + + - Sets class="active" on the active list item + - Sets aria-current="page" on the active anchor + - Sets aria-current="true" on the ancestors of the active anchor + +If you feed it a single page, you must wrap the page in a slice. See examples +below. + +If you feed it a menu, menu entries defined in site configuration must use the +pageRef property, not the URL property. Everything must be a page. + +By default, a home page reference in the page collection or menu will be +skipped. To override this behavior, set $skipHome to false below. + +@param {page} currentPage The page currently being rendered. +@param {slice} nodes A slice of top level pages or a menu. + +@returns {template.HTML} + +@examples + + {{ with site.Menus.main }} + {{ partial "sidebar/render-section-menu.html" (dict "currentPage" $ "nodes" .) }} + {{ end }} + + {{ with site.Sections }} + {{ partial "sidebar/render-section-menu.html" (dict "currentPage" $ "nodes" .) }} + {{ end }} + + {{ with (.Site.GetPage "section" .Section).Sections }} + {{ partial "sidebar/render-section-menu.html" (dict "currentPage" $ "nodes" .) }} + {{ end }} + + {{ with slice (site.GetPage "/introduction") }} + {{ partial "sidebar/render-section-menu.html" (dict "currentPage" $ "nodes" .) }} + {{ end }} + +*/}} + +{{- /* Configure. */}} +{{- $skipHome := true }} + +{{- /* Get parameters. */}} +{{- $currentPage := .currentPage }} +{{- $nodes := .nodes }} + +{{- /* Render. */}} +<nav class="section-nav docs-links"> + <ul class="list-unstyled"> + {{- range $nodes }} + {{- if and .Page.IsHome $skipHome }} + {{- continue }} + {{- end }} + {{- template "walk" (dict "node" . "currentPage" $currentPage) }} + {{- end }} + </ul> +</nav> + +{{- /* Recursively render list items. */}} +{{- define "walk" }} + {{- $currentPage := .currentPage }} + {{- $node := .node }} + + {{- $linkContent := $node.Name }} + {{- with $node.Page.LinkTitle }} + {{- $linkContent = . }} + {{- end }} + + {{- $ariaCurrent := "" }} + {{- $liClass := "" }} + + {{- if in $currentPage.Ancestors $node.Page }} + {{- $ariaCurrent = "true" }} + {{- end }} + + {{- if $currentPage.Eq $node.Page }} + {{- $ariaCurrent = "page" }} + {{- $liClass = "active" }} + {{- end }} + + <li {{- with $liClass }} class="{{ . }}" {{ end -}}> + {{- with $node.Page.Pages }} + <details{{- with $ariaCurrent }} open{{- else}}{{- if ne $node.Page.Params.sidebar.collapsed true }} open{{- end }}{{- end}}> + <summary>{{ $linkContent }}</summary> + <ul class="list-unstyled list-nested"> + {{- range . }} + {{- template "walk" (dict "node" . "currentPage" $currentPage) }} + {{- end }} + </ul> + </details> + {{- else }} + <a {{- with $ariaCurrent }} aria-current="{{ . }}" {{- end }} href="{{- $node.Page.RelPermalink }}">{{ $linkContent }}</a> + {{- end }} + </li> +{{- end }} diff --git a/layouts/_shortcodes/email.html b/layouts/_shortcodes/email.html new file mode 100644 index 000000000..cb84ef656 --- /dev/null +++ b/layouts/_shortcodes/email.html @@ -0,0 +1,13 @@ +{{- /* Set defaults and get args. */}} +{{- $address := index .Params 0 | default site.Params.defaultEmail }} + +{{- /* Get parts. */}} +{{- $addressParts := split $address "@" }} +{{- $userName := (index $addressParts 0) }} +{{- $rootDomain := (index $addressParts 1) }} +{{- $rootDomainParts := split $rootDomain "." }} +{{- $domainName := (index $rootDomainParts 0) }} +{{- $topLevelDomain := (index $rootDomainParts 1) }} + +{{- /* Render. */}} +{{- printf "<span class=\"email\">%s@%s<b>.%s</b>.%s</span>" $userName $domainName $domainName $topLevelDomain | safeHTML -}} diff --git a/layouts/_shortcodes/link-card.html b/layouts/_shortcodes/link-card.html new file mode 100644 index 000000000..bc4915f15 --- /dev/null +++ b/layouts/_shortcodes/link-card.html @@ -0,0 +1,40 @@ +{{- $opts := dict + "page" . + "src" .Params.src + "href" .Params.href + "title" .Params.title + "description" .Params.description + "target" .Params.target + "class" .Params.class + "rel" .Params.rel +}} + +{{- with .Parent }} + {{- partial "inline/link-card.html" $opts }} +{{- else }} + <div class="card-nav d-flex flex-column flex-sm-row"> + {{- partial "inline/link-card.html" $opts }} + </div> +{{- end }} + +{{- define "_partials/inline/link-card.html" }} + <div class="card text-end w-100{{ with .class}} {{ . }}{{ end }}"> + <div class="card-body d-flex"> + <div class="d-flex flex-column me-auto text-start"> + {{ with .src }} + {{- partial "inline-svg" (dict "src" . "width" "32px" "class" "svg-inline-custom svg-monochrome text-body-emphasis" ) }} + {{ end }} + <h5 class="card-title my-0"><a href="{{ .href }}"{{ with .target}} target="{{ . }}"{{ end }} class="stretched-link text-reset text-decoration-none"{{ with .rel}} rel="{{ . }}"{{ end }}>{{ .title }}</a></h5> + {{ with .description }}<p class="card-text mt-1">{{ . }}</p>{{ end }} + </div> + <div class="d-flex flex-column justify-content-center"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-arrow-right" width="20" height="20" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M5 12l14 0"></path> + <path d="M13 18l6 -6"></path> + <path d="M13 6l6 6"></path> + </svg> + </div> + </div> + </div> +{{- end -}} diff --git a/layouts/_shortcodes/preview.html b/layouts/_shortcodes/preview.html new file mode 100644 index 000000000..e9ac415b8 --- /dev/null +++ b/layouts/_shortcodes/preview.html @@ -0,0 +1,8 @@ +<figure class="preview-figure"> + <div class="preview"> + <figcaption>Preview</figcaption> + <div class="preview-content"> + {{ .Page.RenderString (dict "display" "block") .Inner }} + </div> + </div> +</figure> diff --git a/layouts/home.html b/layouts/home.html index 314a270d8..425b48e8f 100644 --- a/layouts/home.html +++ b/layouts/home.html @@ -7,7 +7,7 @@ <div class="col-lg-10 text-center"> <h1 class="mt-1">{{ .Title }}</h1> <p class="lead text-muted">{{ .Params.lead | safeHTML }}</p> - <a class="btn btn-primary btn-cta rounded-pill btn-lg my-3" href="/docs/{{ if site.Params.doks.docsVersioning }}{{ site.Params.doks.docsVersion }}/{{ end }}start-here/getting-started/" role="button">{{ i18n "get_started" }}</a> + <a class="btn btn-primary btn-cta rounded-pill btn-lg my-3" href="/{{ if site.Params.doks.docsVersioning }}{{ site.Params.doks.docsVersion }}/{{ end }}start-here/getting-started/" role="button">{{ i18n "get_started" }}</a> </div> <div class="col-lg-12"> <div class="header-content"> @@ -25,7 +25,7 @@ <h2 class="text-center mt-lg-0">What's included</h2> <div class="col-lg-5"> <div class="card"> <div class="card-body"> - <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/file-text" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Structured content</h3> + <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "file-text" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Structured content</h3> <p class="text-muted fs-6">Write and manage content in Markdown with clear workflows.</p> </div> </div> @@ -33,7 +33,7 @@ <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/file-text" "stroke <div class="col-lg-5"> <div class="card"> <div class="card-body"> - <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/folder-root" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Simple project setup</h3> + <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "folder-root" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Simple project setup</h3> <p class="text-muted fs-6">A clean, predictable structure that scales with your site.</p> </div> </div> @@ -41,7 +41,7 @@ <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/folder-root" "stro <div class="col-lg-5"> <div class="card"> <div class="card-body"> - <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/stack-2" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Modern web stack</h3> + <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "stack-2" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Modern web stack</h3> <p class="text-muted fs-6">Built on a fast, maintainable, and standards-compliant stack.</p> </div> </div> @@ -49,7 +49,7 @@ <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/stack-2" "stroke-w <div class="col-lg-5"> <div class="card"> <div class="card-body"> - <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/gauge" "stroke-width" "1.5" "class" "text-muted me-2" ) }}SEO & Performance</h3> + <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "gauge" "stroke-width" "1.5" "class" "text-muted me-2" ) }}SEO & Performance</h3> <p class="text-muted fs-6">Optimized defaults for fast, search-friendly websites.</p> </div> </div> @@ -57,7 +57,7 @@ <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/gauge" "stroke-wid <div class="col-lg-5"> <div class="card"> <div class="card-body"> - <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/article" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Content sites</h3> + <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "article" "stroke-width" "1.5" "class" "text-muted me-2" ) }}Content sites</h3> <p class="text-muted fs-6">Ideal for documentation, blogs, and other content-heavy sites.</p> </div> </div> @@ -70,11 +70,11 @@ <h3 class="fs-5">{{ partial "inline-svg" (dict "src" "outline/article" "stroke-w {{ define "sidebar-footer" }} <section class="section-prefooter"> <div class="container"> - <h2 class="text-center mt-lg-0">Open source</h2> + <h2 class="text-center mt-lg-0">Open source, MIT licensed</h2> <div class="row justify-content-center"> <div class="col-lg-7 text-center"> <p class="text-muted fs-6">Help keep Thulite sustainable by supporting maintenance, documentation, and long-term development.</p> - <a target="_blank" href="https://github.com/sponsors/thuliteio" class="icon-link">Sponsor Thulite{{ partial "inline-svg" (dict "src" "outline/chevron-right" "stroke-width" "1.5" ) }}</a> + <a target="_blank" href="https://github.com/sponsors/thuliteio" class="icon-link">Sponsor Thulite{{ partial "inline-svg" (dict "src" "chevron-right" "stroke-width" "1.5" ) }}</a> </div> </div> </div> @@ -95,4 +95,21 @@ <h2 class="text-center mt-lg-0">FAQs</h2> </div> </div> </section> + + <section class="section-prefooter"> + <div class="container"> + <div class="row justify-content-center"> + <div class="col-13 col-lg-7 text-center"> + <h2 class="text-center mt-lg-0">Thulite, ready in minutes</h2> + </div> + </div> + <div class="row justify-content-center"> + <div class="col-lg-5 text-center"> + <p class="text-muted fs-6">Get your Thulite project up and running in minutes — minimal setup, maximum control.</p> + <a href="/start-here/getting-started/" class="icon-link">{{ i18n "get_started" }}{{ partial "inline-svg" (dict "src" "chevron-right" "stroke-width" "1.5" ) }}</a> + </div> + </div> + </div> + </section> + {{ end }} diff --git a/layouts/list.html b/layouts/list.html new file mode 100644 index 000000000..f95bcc051 --- /dev/null +++ b/layouts/list.html @@ -0,0 +1,23 @@ +{{ define "main" }} +<div class="row justify-content-center"> + <div class="col-md-12 col-lg-10 col-xl-8"> + <article> + <!-- <h1 class="text-center">{{ if eq .CurrentSection .FirstSection }}{{ .Section | humanize }}{{ else }}{{ .Title }}{{ end }}</h1> --> + <h1 class="text-center">{{ .Title }}</h1> + {{ with .Content }}<div class="text-center">{{ . }}</div>{{ end }} + <div class="card-list"> + {{ $currentSection := .CurrentSection }} + {{ range where .Site.RegularPages.ByTitle "Section" .Section }} + {{ if in (.RelPermalink | string) $currentSection.RelPermalink }} + <div class="card my-3"> + <div class="card-body"> + <a class="stretched-link" href="{{ .RelPermalink }}">{{ .Params.title | title }} →</a> + </div> + </div> + {{ end }} + {{ end }} + </div> + </article> + </div> +</div> +{{ end }} diff --git a/netlify.toml b/netlify.toml index 8bac7fb4b..f70539da1 100644 --- a/netlify.toml +++ b/netlify.toml @@ -14,6 +14,20 @@ hugo build --gc --minify --baseURL "${URL}" """ +[context.deploy-preview] + command = """\ + git config core.quotepath false && \ + npm install && \ + hugo build --gc --minify --baseURL "$DEPLOY_PRIME_URL" + """ + +[context.branch-deploy] + command = """\ + git config core.quotepath false && \ + npm install && \ + hugo build --gc --minify --baseURL "$DEPLOY_PRIME_URL" + """ + [dev] framework = "#custom" command = "bun run dev" diff --git a/package-lock.json b/package-lock.json index eaa3a2c8b..39d762558 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,18 +11,19 @@ "dependencies": { "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", - "@tabler/icons": "^3.36.1", + "@tabler/icons": "^3.41.1", "@thulite/doks-core": "^1.9.3", "@thulite/images": "^3.3.4", "@thulite/inline-svg": "^1.2.2", "@thulite/seo": "^2.4.3", + "simple-icons": "^16.18.1", "thulite": "^2.6.5" }, "devDependencies": { "@changesets/changelog-github": "^0.6.0", - "@changesets/cli": "^2.29.8", - "prettier": "^3.8.1", - "vite": "^7.3.1" + "@changesets/cli": "^2.31.0", + "prettier": "^3.8.3", + "vite": "^8.0.10" }, "engines": { "node": ">=24.13.0" @@ -1547,13 +1548,13 @@ } }, "node_modules/@changesets/apply-release-plan": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.1.0.tgz", - "integrity": "sha512-yq8ML3YS7koKQ/9bk1PqO0HMzApIFNwjlwCnwFEXMzNe8NpzeeYYKCmnhWJGkN8g7E51MnWaSbqRcTcdIxUgnQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-7.1.1.tgz", + "integrity": "sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==", "dev": true, "license": "MIT", "dependencies": { - "@changesets/config": "^3.1.3", + "@changesets/config": "^3.1.4", "@changesets/get-version-range-type": "^0.4.0", "@changesets/git": "^3.0.4", "@changesets/should-skip-package": "^0.1.2", @@ -1585,14 +1586,14 @@ } }, "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.9.tgz", - "integrity": "sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-6.0.10.tgz", + "integrity": "sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", + "@changesets/get-dependents-graph": "^2.1.4", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", "@manypkg/get-packages": "^1.1.3", @@ -1622,19 +1623,19 @@ } }, "node_modules/@changesets/cli": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.30.0.tgz", - "integrity": "sha512-5D3Nk2JPqMI1wK25pEymeWRSlSMdo5QOGlyfrKg0AOufrUcjEE3RQgaCpHoBiM31CSNrtSgdJ0U6zL1rLDDfBA==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.31.0.tgz", + "integrity": "sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==", "dev": true, "license": "MIT", "dependencies": { - "@changesets/apply-release-plan": "^7.1.0", - "@changesets/assemble-release-plan": "^6.0.9", + "@changesets/apply-release-plan": "^7.1.1", + "@changesets/assemble-release-plan": "^6.0.10", "@changesets/changelog-git": "^0.2.1", - "@changesets/config": "^3.1.3", + "@changesets/config": "^3.1.4", "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", - "@changesets/get-release-plan": "^4.0.15", + "@changesets/get-dependents-graph": "^2.1.4", + "@changesets/get-release-plan": "^4.0.16", "@changesets/git": "^3.0.4", "@changesets/logger": "^0.1.1", "@changesets/pre": "^2.0.2", @@ -1660,14 +1661,14 @@ } }, "node_modules/@changesets/config": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.3.tgz", - "integrity": "sha512-vnXjcey8YgBn2L1OPWd3ORs0bGC4LoYcK/ubpgvzNVr53JXV5GiTVj7fWdMRsoKUH7hhhMAQnsJUqLr21EncNw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-3.1.4.tgz", + "integrity": "sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==", "dev": true, "license": "MIT", "dependencies": { "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.1.3", + "@changesets/get-dependents-graph": "^2.1.4", "@changesets/logger": "^0.1.1", "@changesets/should-skip-package": "^0.1.2", "@changesets/types": "^6.1.0", @@ -1687,9 +1688,9 @@ } }, "node_modules/@changesets/get-dependents-graph": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.3.tgz", - "integrity": "sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-2.1.4.tgz", + "integrity": "sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==", "dev": true, "license": "MIT", "dependencies": { @@ -1711,14 +1712,14 @@ } }, "node_modules/@changesets/get-release-plan": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.15.tgz", - "integrity": "sha512-Q04ZaRPuEVZtA+auOYgFaVQQSA98dXiVe/yFaZfY7hoSmQICHGvP0TF4u3EDNHWmmCS4ekA/XSpKlSM2PyTS2g==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-4.0.16.tgz", + "integrity": "sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==", "dev": true, "license": "MIT", "dependencies": { - "@changesets/assemble-release-plan": "^6.0.9", - "@changesets/config": "^3.1.3", + "@changesets/assemble-release-plan": "^6.0.10", + "@changesets/config": "^3.1.4", "@changesets/pre": "^2.0.2", "@changesets/read": "^0.6.7", "@changesets/types": "^6.1.0", @@ -1843,446 +1844,38 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz", - "integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz", - "integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz", - "integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz", - "integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz", - "integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz", - "integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz", - "integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz", - "integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz", - "integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz", - "integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz", - "integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz", - "integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz", - "integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz", - "integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz", - "integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz", - "integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz", - "integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz", - "integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz", - "integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz", - "integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz", - "integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz", - "integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz", - "integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz", - "integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==", - "cpu": [ - "arm64" - ], + "node_modules/@emnapi/core": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", + "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@emnapi/wasi-threads": "1.2.1", + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz", - "integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==", - "cpu": [ - "ia32" - ], + "node_modules/@emnapi/runtime": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", + "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz", - "integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==", - "cpu": [ - "x64" - ], + "node_modules/@emnapi/wasi-threads": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", + "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "dependencies": { + "tslib": "^2.4.0" } }, "node_modules/@fontsource-variable/geist": { @@ -2454,6 +2047,25 @@ "node": ">=6 <7 || >=8" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", + "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@tybys/wasm-util": "^0.10.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@emnapi/core": "^1.7.1", + "@emnapi/runtime": "^1.7.1" + } + }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", @@ -2496,6 +2108,16 @@ "node": ">= 8" } }, + "node_modules/@oxc-project/types": { + "version": "0.127.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz", + "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -2506,24 +2128,10 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.0.tgz", - "integrity": "sha512-WOhNW9K8bR3kf4zLxbfg6Pxu2ybOUbB2AjMDHSQx86LIF4rH4Ft7vmMwNt0loO0eonglSNy4cpD3MKXXKQu0/A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.0.tgz", - "integrity": "sha512-u6JHLll5QKRvjciE78bQXDmqRqNs5M/3GVqZeMwvmjaNODJih/WIrJlFVEihvV0MiYFmd+ZyPr9wxOVbPAG2Iw==", + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.17.tgz", + "integrity": "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==", "cpu": [ "arm64" ], @@ -2532,12 +2140,15 @@ "optional": true, "os": [ "android" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.0.tgz", - "integrity": "sha512-qEF7CsKKzSRc20Ciu2Zw1wRrBz4g56F7r/vRwY430UPp/nt1x21Q/fpJ9N5l47WWvJlkNCPJz3QRVw008fi7yA==", + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz", + "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==", "cpu": [ "arm64" ], @@ -2546,12 +2157,15 @@ "optional": true, "os": [ "darwin" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.0.tgz", - "integrity": "sha512-WADYozJ4QCnXCH4wPB+3FuGmDPoFseVCUrANmA5LWwGmC6FL14BWC7pcq+FstOZv3baGX65tZ378uT6WG8ynTw==", + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.17.tgz", + "integrity": "sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==", "cpu": [ "x64" ], @@ -2560,26 +2174,15 @@ "optional": true, "os": [ "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.0.tgz", - "integrity": "sha512-6b8wGHJlDrGeSE3aH5mGNHBjA0TTkxdoNHik5EkvPHCt351XnigA4pS7Wsj/Eo9Y8RBU6f35cjN9SYmCFBtzxw==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.0.tgz", - "integrity": "sha512-h25Ga0t4jaylMB8M/JKAyrvvfxGRjnPQIR8lnCayyzEjEOx2EJIlIiMbhpWxDRKGKF8jbNH01NnN663dH638mA==", + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.17.tgz", + "integrity": "sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==", "cpu": [ "x64" ], @@ -2588,26 +2191,15 @@ "optional": true, "os": [ "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.0.tgz", - "integrity": "sha512-RzeBwv0B3qtVBWtcuABtSuCzToo2IEAIQrcyB/b2zMvBWVbjo8bZDjACUpnaafaxhTw2W+imQbP2BD1usasK4g==", - "cpu": [ - "arm" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.0.tgz", - "integrity": "sha512-Sf7zusNI2CIU1HLzuu9Tc5YGAHEZs5Lu7N1ssJG4Tkw6e0MEsN7NdjUDDfGNHy2IU+ENyWT+L2obgWiguWibWQ==", + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.17.tgz", + "integrity": "sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==", "cpu": [ "arm" ], @@ -2616,26 +2208,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.0.tgz", - "integrity": "sha512-DX2x7CMcrJzsE91q7/O02IJQ5/aLkVtYFryqCjduJhUfGKG6yJV8hxaw8pZa93lLEpPTP/ohdN4wFz7yp/ry9A==", - "cpu": [ - "arm64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.0.tgz", - "integrity": "sha512-09EL+yFVbJZlhcQfShpswwRZ0Rg+z/CsSELFCnPt3iK+iqwGsI4zht3secj5vLEs957QvFFXnzAT0FFPIxSrkQ==", + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.17.tgz", + "integrity": "sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==", "cpu": [ "arm64" ], @@ -2644,54 +2225,32 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.0.tgz", - "integrity": "sha512-i9IcCMPr3EXm8EQg5jnja0Zyc1iFxJjZWlb4wr7U2Wx/GrddOuEafxRdMPRYVaXjgbhvqalp6np07hN1w9kAKw==", - "cpu": [ - "loong64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.0.tgz", - "integrity": "sha512-DGzdJK9kyJ+B78MCkWeGnpXJ91tK/iKA6HwHxF4TAlPIY7GXEvMe8hBFRgdrR9Ly4qebR/7gfUs9y2IoaVEyog==", + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.17.tgz", + "integrity": "sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==", "cpu": [ - "loong64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.0.tgz", - "integrity": "sha512-RwpnLsqC8qbS8z1H1AxBA1H6qknR4YpPR9w2XX0vo2Sz10miu57PkNcnHVaZkbqyw/kUWfKMI73jhmfi9BRMUQ==", - "cpu": [ - "ppc64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.0.tgz", - "integrity": "sha512-Z8pPf54Ly3aqtdWC3G4rFigZgNvd+qJlOE52fmko3KST9SoGfAdSRCwyoyG05q1HrrAblLbk1/PSIV+80/pxLg==", + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.17.tgz", + "integrity": "sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==", "cpu": [ "ppc64" ], @@ -2700,40 +2259,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.0.tgz", - "integrity": "sha512-3a3qQustp3COCGvnP4SvrMHnPQ9d1vzCakQVRTliaz8cIp/wULGjiGpbcqrkv0WrHTEp8bQD/B3HBjzujVWLOA==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.0.tgz", - "integrity": "sha512-pjZDsVH/1VsghMJ2/kAaxt6dL0psT6ZexQVrijczOf+PeP2BUqTHYejk3l6TlPRydggINOeNRhvpLa0AYpCWSQ==", - "cpu": [ - "riscv64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.0.tgz", - "integrity": "sha512-3ObQs0BhvPgiUVZrN7gqCSvmFuMWvWvsjG5ayJ3Lraqv+2KhOsp+pUbigqbeWqueGIsnn+09HBw27rJ+gYK4VQ==", + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.17.tgz", + "integrity": "sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==", "cpu": [ "s390x" ], @@ -2742,12 +2276,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.0.tgz", - "integrity": "sha512-EtylprDtQPdS5rXvAayrNDYoJhIz1/vzN2fEubo3yLE7tfAw+948dO0g4M0vkTVFhKojnF+n6C8bDNe+gDRdTg==", + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.17.tgz", + "integrity": "sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==", "cpu": [ "x64" ], @@ -2756,12 +2293,15 @@ "optional": true, "os": [ "linux" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.0.tgz", - "integrity": "sha512-k09oiRCi/bHU9UVFqD17r3eJR9bn03TyKraCrlz5ULFJGdJGi7VOmm9jl44vOJvRJ6P7WuBi/s2A97LxxHGIdw==", + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.17.tgz", + "integrity": "sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==", "cpu": [ "x64" ], @@ -2770,26 +2310,15 @@ "optional": true, "os": [ "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.0.tgz", - "integrity": "sha512-1o/0/pIhozoSaDJoDcec+IVLbnRtQmHwPV730+AOD29lHEEo4F5BEUB24H0OBdhbBBDwIOSuf7vgg0Ywxdfiiw==", - "cpu": [ - "x64" ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.0.tgz", - "integrity": "sha512-pESDkos/PDzYwtyzB5p/UoNU/8fJo68vcXM9ZW2V0kjYayj1KaaUfi1NmTUTUpMn4UhU4gTuK8gIaFO4UGuMbA==", + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.17.tgz", + "integrity": "sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==", "cpu": [ "arm64" ], @@ -2798,54 +2327,51 @@ "optional": true, "os": [ "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.0.tgz", - "integrity": "sha512-hj1wFStD7B1YBeYmvY+lWXZ7ey73YGPcViMShYikqKT1GtstIKQAtfUI6yrzPjAy/O7pO0VLXGmUVWXQMaYgTQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.0.tgz", - "integrity": "sha512-SyaIPFoxmUPlNDq5EHkTbiKzmSEmq/gOYFI/3HHJ8iS/v1mbugVa7dXUzcJGQfoytp9DJFLhHH4U3/eTy2Bq4w==", + "node_modules/@rolldown/binding-wasm32-wasi": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.17.tgz", + "integrity": "sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==", "cpu": [ - "ia32" + "wasm32" ], "dev": true, "license": "MIT", "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@emnapi/core": "1.10.0", + "@emnapi/runtime": "1.10.0", + "@napi-rs/wasm-runtime": "^1.1.4" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.0.tgz", - "integrity": "sha512-RdcryEfzZr+lAr5kRm2ucN9aVlCCa2QNq4hXelZxb8GG0NJSazq44Z3PCCc8wISRuCVnGs0lQJVX5Vp6fKA+IA==", + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.17.tgz", + "integrity": "sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==", "cpu": [ - "x64" + "arm64" ], "dev": true, "license": "MIT", "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.0.tgz", - "integrity": "sha512-PrsWNQ8BuE00O3Xsx3ALh2Df8fAj9+cvvX9AIA6o4KpATR98c9mud4XtDWVvsEuyia5U4tVSTKygawyJkjm60w==", + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.17.tgz", + "integrity": "sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==", "cpu": [ "x64" ], @@ -2854,12 +2380,22 @@ "optional": true, "os": [ "win32" - ] + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz", + "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==", + "dev": true, + "license": "MIT" }, "node_modules/@tabler/icons": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.40.0.tgz", - "integrity": "sha512-V/Q4VgNPKubRTiLdmWjV/zscYcj5IIk+euicUtaVVqF6luSC9rDngYWgST5/yh3Mrg/mYUwRv1YVTk71Jp0twQ==", + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.41.1.tgz", + "integrity": "sha512-OaRnVbRmH2nHtFeg+RmMJ/7m2oBIF9XCJAUD5gQnMrpK9f05ydj8MZrAf3NZQqOXyxGN1UBL0D5IKLLEUfr74Q==", "license": "MIT", "funding": { "type": "github", @@ -2942,21 +2478,15 @@ "node": ">=20.11.0" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz", - "integrity": "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==", - "extraneous": true, "license": "MIT", + "optional": true, "dependencies": { - "undici-types": "~7.18.0" + "tslib": "^2.4.0" } }, "node_modules/ansi-colors": { @@ -3024,9 +2554,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.27", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.27.tgz", - "integrity": "sha512-NP9APE+tO+LuJGn7/9+cohklunJsXWiaWEfV3si4Gi/XHDwVNgkwr1J3RQYFIvPy76GmJ9/bW8vyoU1LcxwKHA==", + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", "funding": [ { "type": "opencollective", @@ -3043,8 +2573,8 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.28.1", - "caniuse-lite": "^1.0.30001774", + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" @@ -3117,9 +2647,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.10", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.10.tgz", - "integrity": "sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==", + "version": "2.10.23", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", + "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -3179,9 +2709,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -3203,9 +2733,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", + "version": "4.28.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", "funding": [ { "type": "opencollective", @@ -3222,11 +2752,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" @@ -3236,9 +2766,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001781", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001781.tgz", - "integrity": "sha512-RdwNCyMsNBftLjW6w01z8bKEvT6e/5tpPVEgtn22TiLGlstHOVecsX2KHFkD5e/vRnIE4EGzpuIODb3mtswtkw==", + "version": "1.0.30001791", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", + "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", "funding": [ { "type": "opencollective", @@ -3433,6 +2963,16 @@ "node": ">=8" } }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -3457,9 +2997,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.321", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.321.tgz", - "integrity": "sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==", + "version": "1.5.344", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", + "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -3482,46 +3022,13 @@ "node": ">=8.6" } }, - "node_modules/esbuild": { - "version": "0.27.4", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", - "integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==", - "dev": true, - "hasInstallScript": true, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.4", - "@esbuild/android-arm": "0.27.4", - "@esbuild/android-arm64": "0.27.4", - "@esbuild/android-x64": "0.27.4", - "@esbuild/darwin-arm64": "0.27.4", - "@esbuild/darwin-x64": "0.27.4", - "@esbuild/freebsd-arm64": "0.27.4", - "@esbuild/freebsd-x64": "0.27.4", - "@esbuild/linux-arm": "0.27.4", - "@esbuild/linux-arm64": "0.27.4", - "@esbuild/linux-ia32": "0.27.4", - "@esbuild/linux-loong64": "0.27.4", - "@esbuild/linux-mips64el": "0.27.4", - "@esbuild/linux-ppc64": "0.27.4", - "@esbuild/linux-riscv64": "0.27.4", - "@esbuild/linux-s390x": "0.27.4", - "@esbuild/linux-x64": "0.27.4", - "@esbuild/netbsd-arm64": "0.27.4", - "@esbuild/netbsd-x64": "0.27.4", - "@esbuild/openbsd-arm64": "0.27.4", - "@esbuild/openbsd-x64": "0.27.4", - "@esbuild/openharmony-arm64": "0.27.4", - "@esbuild/sunos-x64": "0.27.4", - "@esbuild/win32-arm64": "0.27.4", - "@esbuild/win32-ia32": "0.27.4", - "@esbuild/win32-x64": "0.27.4" + "node": ">= 0.4" } }, "node_modules/escalade": { @@ -3783,9 +3290,9 @@ "license": "ISC" }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -3986,6 +3493,267 @@ "integrity": "sha512-22UzWP+Vedi/sMeOr8O7FWimRVtiNJV2HCa+V8+peZOw6QbswN9k58VUhd7i6iK5bw5QkYrF01LJbeJe0PV8jg==", "license": "MIT" }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -4078,12 +3846,12 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -4163,9 +3931,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.36", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz", - "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==", + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", + "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", "license": "MIT" }, "node_modules/normalize-path": { @@ -4299,9 +4067,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", + "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -4324,9 +4092,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "license": "MIT", "engines": { "node": ">=8.6" @@ -4345,9 +4113,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", + "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", "funding": [ { "type": "opencollective", @@ -4415,9 +4183,9 @@ } }, "node_modules/postcss-cli/node_modules/jsonfile": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", - "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.1.tgz", + "integrity": "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==", "license": "MIT", "dependencies": { "universalify": "^2.0.0" @@ -4532,9 +4300,9 @@ "license": "MIT" }, "node_modules/prettier": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", - "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", + "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", "dev": true, "license": "MIT", "bin": { @@ -4760,9 +4528,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", + "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.1.0" @@ -4781,11 +4549,12 @@ } }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.12", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.12.tgz", + "integrity": "sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==", "license": "MIT", "dependencies": { + "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" @@ -4820,49 +4589,38 @@ "node": ">=0.10.0" } }, - "node_modules/rollup": { - "version": "4.60.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.0.tgz", - "integrity": "sha512-yqjxruMGBQJ2gG4HtjZtAfXArHomazDHoFwFFmZZl0r7Pdo7qCIXKqKHZc8yeoMgzJJ+pO6pEEHa+V7uzWlrAQ==", + "node_modules/rolldown": { + "version": "1.0.0-rc.17", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz", + "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@oxc-project/types": "=0.127.0", + "@rolldown/pluginutils": "1.0.0-rc.17" }, "bin": { - "rollup": "dist/bin/rollup" + "rolldown": "bin/cli.mjs" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.0", - "@rollup/rollup-android-arm64": "4.60.0", - "@rollup/rollup-darwin-arm64": "4.60.0", - "@rollup/rollup-darwin-x64": "4.60.0", - "@rollup/rollup-freebsd-arm64": "4.60.0", - "@rollup/rollup-freebsd-x64": "4.60.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.0", - "@rollup/rollup-linux-arm-musleabihf": "4.60.0", - "@rollup/rollup-linux-arm64-gnu": "4.60.0", - "@rollup/rollup-linux-arm64-musl": "4.60.0", - "@rollup/rollup-linux-loong64-gnu": "4.60.0", - "@rollup/rollup-linux-loong64-musl": "4.60.0", - "@rollup/rollup-linux-ppc64-gnu": "4.60.0", - "@rollup/rollup-linux-ppc64-musl": "4.60.0", - "@rollup/rollup-linux-riscv64-gnu": "4.60.0", - "@rollup/rollup-linux-riscv64-musl": "4.60.0", - "@rollup/rollup-linux-s390x-gnu": "4.60.0", - "@rollup/rollup-linux-x64-gnu": "4.60.0", - "@rollup/rollup-linux-x64-musl": "4.60.0", - "@rollup/rollup-openbsd-x64": "4.60.0", - "@rollup/rollup-openharmony-arm64": "4.60.0", - "@rollup/rollup-win32-arm64-msvc": "4.60.0", - "@rollup/rollup-win32-ia32-msvc": "4.60.0", - "@rollup/rollup-win32-x64-gnu": "4.60.0", - "@rollup/rollup-win32-x64-msvc": "4.60.0", - "fsevents": "~2.3.2" + "@rolldown/binding-android-arm64": "1.0.0-rc.17", + "@rolldown/binding-darwin-arm64": "1.0.0-rc.17", + "@rolldown/binding-darwin-x64": "1.0.0-rc.17", + "@rolldown/binding-freebsd-x64": "1.0.0-rc.17", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17", + "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17", + "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17", + "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17", + "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17", + "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17", + "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17", + "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17" } }, "node_modules/route-manifest": { @@ -4962,6 +4720,25 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/simple-icons": { + "version": "16.18.1", + "resolved": "https://registry.npmjs.org/simple-icons/-/simple-icons-16.18.1.tgz", + "integrity": "sha512-+AS16pmdVHFdKrzYuTGfNGW6RRJ7eubpRhh2wipqPD5nglXKKIbAoEFhdxuweR1AV63+TuLXVJ+NEqlJpXXa2A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/simple-icons" + }, + { + "type": "github", + "url": "https://github.com/sponsors/simple-icons" + } + ], + "license": "CC0-1.0", + "engines": { + "node": ">=0.12.18" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -5061,9 +4838,9 @@ } }, "node_modules/thenby": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", - "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.4.1.tgz", + "integrity": "sha512-D5a/bO0KdalOE3q8MlrRmSxjbKZHT3MQmXkJP+r97Vw8MMwOZKOwUSEyTtK7eSMj2y0kyAjpYMRMZmmLw1FtNQ==", "license": "Apache-2.0" }, "node_modules/throttles": { @@ -5094,13 +4871,13 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "version": "0.2.16", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", + "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", "license": "MIT", "dependencies": { "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=12.0.0" @@ -5127,9 +4904,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -5157,12 +4934,13 @@ "dev": true, "license": "MIT" }, - "node_modules/undici-types": { - "version": "7.18.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", - "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", - "extraneous": true, - "license": "MIT" + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "optional": true }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", @@ -5251,18 +5029,17 @@ "license": "MIT" }, "node_modules/vite": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", - "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", + "version": "8.0.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.10.tgz", + "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" + "lightningcss": "^1.32.0", + "picomatch": "^4.0.4", + "postcss": "^8.5.10", + "rolldown": "1.0.0-rc.17", + "tinyglobby": "^0.2.16" }, "bin": { "vite": "bin/vite.js" @@ -5278,9 +5055,10 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.1.0", + "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", - "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", @@ -5293,13 +5071,16 @@ "@types/node": { "optional": true }, - "jiti": { + "@vitejs/devtools": { "optional": true }, - "less": { + "esbuild": { + "optional": true + }, + "jiti": { "optional": true }, - "lightningcss": { + "less": { "optional": true }, "sass": { @@ -5325,28 +5106,10 @@ } } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { diff --git a/package.json b/package.json index 721b8b545..c1a34e573 100644 --- a/package.json +++ b/package.json @@ -18,11 +18,12 @@ "dependencies": { "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", - "@tabler/icons": "^3.36.1", + "@tabler/icons": "^3.41.1", "@thulite/doks-core": "^1.9.3", "@thulite/images": "^3.3.4", "@thulite/inline-svg": "^1.2.2", "@thulite/seo": "^2.4.3", + "simple-icons": "^16.18.1", "thulite": "^2.6.5" }, "overrides": { @@ -31,9 +32,9 @@ }, "devDependencies": { "@changesets/changelog-github": "^0.6.0", - "@changesets/cli": "^2.29.8", - "prettier": "^3.8.1", - "vite": "^7.3.1" + "@changesets/cli": "^2.31.0", + "prettier": "^3.8.3", + "vite": "^8.0.10" }, "engines": { "node": ">=24.13.0" diff --git a/public/robots.txt b/public/robots.txt index 27216e5e6..19de83294 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,3 +1,3 @@ User-agent: * Disallow: /admin/ -Sitemap: http://localhost:1313/sitemap.xml +Sitemap: http://localhost:3000/sitemap.xml From 1ede939773989d48cf46972a6ed062229efc2626 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Tue, 12 May 2026 16:24:04 +0200 Subject: [PATCH 04/12] Add changeset --- .changeset/yellow-trams-rush.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/yellow-trams-rush.md diff --git a/.changeset/yellow-trams-rush.md b/.changeset/yellow-trams-rush.md new file mode 100644 index 000000000..34cb782f1 --- /dev/null +++ b/.changeset/yellow-trams-rush.md @@ -0,0 +1,5 @@ +--- +"docs": minor +--- + +Migrate from Starlight 0.29.2 to Doks 1.9 From cffea3ef34d0109fa96abbb5d4ff76615bedde7d Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Tue, 12 May 2026 16:30:34 +0200 Subject: [PATCH 05/12] Enable editPage, lastMod, and enableGitInfo --- config/_default/hugo.toml | 2 +- config/_default/params.toml | 6 +++--- hugo_stats.json | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index e616a6521..5d82c20d9 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -4,7 +4,7 @@ disableAliases = true disableHugoGeneratorInject = true disableKinds = ["taxonomy", "term"] enableEmoji = true -enableGitInfo = false +enableGitInfo = true enableRobotsTXT = true languageCode = "en-US" rssLimit = 10 diff --git a/config/_default/params.toml b/config/_default/params.toml index f71bb4e81..870d9ae91 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -77,10 +77,10 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" imageSingle = true # true (default) or false # Repository - editPage = false # false (default) or true - lastMod = false # false (default) or true + editPage = true # false (default) or true + lastMod = true # false (default) or true repoHost = "GitHub" # GitHub (default), Gitea, GitLab, Bitbucket, or BitbucketServer - docsRepo = "https://github.com/h-enk/doks" + docsRepo = "https://github.com/thuliteio/docs" docsRepoBranch = "main" # main (default), master, or <branch name> docsRepoSubPath = "" # "" (none, default) or <sub path> diff --git a/hugo_stats.json b/hugo_stats.json index 5430be941..148a17786 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -154,8 +154,12 @@ "dropdown-menu", "dropdown-menu-end", "dropdown-toggle", + "edit-page", "expressive-code", "fade", + "feather", + "feather-calendar", + "feather-edit-2", "file-text", "flex-column", "flex-grow-1", @@ -206,6 +210,7 @@ "justify-content-between", "justify-content-center", "justify-content-end", + "last-modified", "lead", "link", "link--text", From ef4d1de216fa1b41776b0b4975e88168e4e4a100 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Fri, 15 May 2026 13:49:51 +0200 Subject: [PATCH 06/12] Add Hugo Shortcodes --- .vscode/extensions.json | 2 +- content/start-here/editor-setup.md | 1 + package-lock.json | 316 ++++++++++++++++------------- package.json | 5 +- public/robots.txt | 2 +- 5 files changed, 182 insertions(+), 144 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 4c33c0dd9..5126693b7 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -1,3 +1,3 @@ { - "recommendations": ["budparr.language-hugo-vscode", "yzhang.markdown-all-in-one", "tamasfe.even-better-toml", "dbaeumer.vscode-eslint", "DavidAnson.vscode-markdownlint", "stylelint.vscode-stylelint"] + "recommendations": ["budparr.language-hugo-vscode", "yzhang.markdown-all-in-one", "tamasfe.even-better-toml", "dbaeumer.vscode-eslint", "DavidAnson.vscode-markdownlint", "stylelint.vscode-stylelint", "thuliteio.hugo-shortcodes"] } diff --git a/content/start-here/editor-setup.md b/content/start-here/editor-setup.md index f859f6eb2..04da1c75d 100644 --- a/content/start-here/editor-setup.md +++ b/content/start-here/editor-setup.md @@ -28,6 +28,7 @@ If you use VS Code, install these extensions: - [ESLint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) - [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint) - [Stylelint](https://marketplace.visualstudio.com/items?itemName=stylelint.vscode-stylelint) +- [Hugo Shortcodes](https://marketplace.visualstudio.com/items?itemName=thuliteio.hugo-shortcodes) ## Formatting diff --git a/package-lock.json b/package-lock.json index 39d762558..719a4fdbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -82,9 +82,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", + "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -183,9 +183,9 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", - "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.29.3.tgz", + "integrity": "sha512-RpLYy2sb51oNLjuu1iD3bwBqCBWUzjO0ocp+iaCP/lJtb2CPLcnC2Fftw+4sAzaMELGeWTgExSKADbdo0GFVzA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", @@ -193,7 +193,7 @@ "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.28.6", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", + "@babel/traverse": "^7.29.0", "semver": "^6.3.1" }, "engines": { @@ -429,9 +429,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.3.tgz", + "integrity": "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==", "license": "MIT", "dependencies": { "@babel/types": "^7.29.0" @@ -489,6 +489,22 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": { + "version": "7.29.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-rest-destructuring-rhs-array/-/plugin-bugfix-safari-rest-destructuring-rhs-array-7.29.3.tgz", + "integrity": "sha512-SRS46DFR4HqzUzCVgi90/xMoL+zeBDBvWdKYXSEzh79kXswNFEglUpMKxR04//dPqwYXWUBJ3mpUd933ru9Kmg==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz", @@ -977,9 +993,9 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "version": "7.29.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.4.tgz", + "integrity": "sha512-N7QmZ0xRZfjHOfZeQLJjwgX2zS9pdGHSVl/cjSGlo4dXMqvurfxXDMKY4RqEKzPozV78VMcd0lxyG13mlbKc4w==", "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.28.6", @@ -1386,18 +1402,19 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.2.tgz", - "integrity": "sha512-DYD23veRYGvBFhcTY1iUvJnDNpuqNd/BzBwCvzOTKUnJjKg5kpUBh3/u9585Agdkgj+QuygG7jLfOPWMa2KVNw==", + "version": "7.29.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.5.tgz", + "integrity": "sha512-/69t2aEzGKHD76DyLbHysF/QH2LJOB8iFnYO37unDTKBTubzcMRv0f3H5EiN1Q6ajOd/eB7dAInF0qdFVS06kA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.29.0", + "@babel/compat-data": "^7.29.3", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-plugin-utils": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", + "@babel/plugin-bugfix-safari-rest-destructuring-rhs-array": "^7.29.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", @@ -1429,7 +1446,7 @@ "@babel/plugin-transform-member-expression-literals": "^7.27.1", "@babel/plugin-transform-modules-amd": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.29.0", + "@babel/plugin-transform-modules-systemjs": "^7.29.4", "@babel/plugin-transform-modules-umd": "^7.27.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0", "@babel/plugin-transform-new-target": "^7.27.1", @@ -2109,9 +2126,9 @@ } }, "node_modules/@oxc-project/types": { - "version": "0.127.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.127.0.tgz", - "integrity": "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==", + "version": "0.130.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.130.0.tgz", + "integrity": "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q==", "dev": true, "license": "MIT", "funding": { @@ -2129,9 +2146,9 @@ } }, "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.0-rc.17.tgz", - "integrity": "sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.1.tgz", + "integrity": "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg==", "cpu": [ "arm64" ], @@ -2146,9 +2163,9 @@ } }, "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.0-rc.17.tgz", - "integrity": "sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.1.tgz", + "integrity": "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg==", "cpu": [ "arm64" ], @@ -2163,9 +2180,9 @@ } }, "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.0-rc.17.tgz", - "integrity": "sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.1.tgz", + "integrity": "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg==", "cpu": [ "x64" ], @@ -2180,9 +2197,9 @@ } }, "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.0-rc.17.tgz", - "integrity": "sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.1.tgz", + "integrity": "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw==", "cpu": [ "x64" ], @@ -2197,9 +2214,9 @@ } }, "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.0-rc.17.tgz", - "integrity": "sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.1.tgz", + "integrity": "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ==", "cpu": [ "arm" ], @@ -2214,9 +2231,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.0-rc.17.tgz", - "integrity": "sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.1.tgz", + "integrity": "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A==", "cpu": [ "arm64" ], @@ -2231,9 +2248,9 @@ } }, "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.0-rc.17.tgz", - "integrity": "sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.1.tgz", + "integrity": "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg==", "cpu": [ "arm64" ], @@ -2248,9 +2265,9 @@ } }, "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.0-rc.17.tgz", - "integrity": "sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.1.tgz", + "integrity": "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg==", "cpu": [ "ppc64" ], @@ -2265,9 +2282,9 @@ } }, "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.0-rc.17.tgz", - "integrity": "sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.1.tgz", + "integrity": "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ==", "cpu": [ "s390x" ], @@ -2282,9 +2299,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.0-rc.17.tgz", - "integrity": "sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.1.tgz", + "integrity": "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw==", "cpu": [ "x64" ], @@ -2299,9 +2316,9 @@ } }, "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.0-rc.17.tgz", - "integrity": "sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.1.tgz", + "integrity": "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ==", "cpu": [ "x64" ], @@ -2316,9 +2333,9 @@ } }, "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.0-rc.17.tgz", - "integrity": "sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.1.tgz", + "integrity": "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ==", "cpu": [ "arm64" ], @@ -2333,9 +2350,9 @@ } }, "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.0-rc.17.tgz", - "integrity": "sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.1.tgz", + "integrity": "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ==", "cpu": [ "wasm32" ], @@ -2352,9 +2369,9 @@ } }, "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.0-rc.17.tgz", - "integrity": "sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.1.tgz", + "integrity": "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw==", "cpu": [ "arm64" ], @@ -2369,9 +2386,9 @@ } }, "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.0-rc.17.tgz", - "integrity": "sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.1.tgz", + "integrity": "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ==", "cpu": [ "x64" ], @@ -2386,16 +2403,16 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.17.tgz", - "integrity": "sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", "dev": true, "license": "MIT" }, "node_modules/@tabler/icons": { - "version": "3.41.1", - "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.41.1.tgz", - "integrity": "sha512-OaRnVbRmH2nHtFeg+RmMJ/7m2oBIF9XCJAUD5gQnMrpK9f05ydj8MZrAf3NZQqOXyxGN1UBL0D5IKLLEUfr74Q==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.44.0.tgz", + "integrity": "sha512-Wn0AOZG9sg0L+bjfMqq4eNhC6pQjIrk94LvvWYNYkY8KH8wC3YILRzQlrnVJc4FUeMxH/AK97QsYCX35H3LndA==", "license": "MIT", "funding": { "type": "github", @@ -2479,9 +2496,9 @@ } }, "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", + "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", "dev": true, "license": "MIT", "optional": true, @@ -2489,6 +2506,16 @@ "tslib": "^2.4.0" } }, + "node_modules/@types/node": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", + "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", + "extraneous": true, + "license": "MIT", + "dependencies": { + "undici-types": "~7.21.0" + } + }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -2647,9 +2674,9 @@ } }, "node_modules/baseline-browser-mapping": { - "version": "2.10.23", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.23.tgz", - "integrity": "sha512-xwVXGqevyKPsiuQdLj+dZMVjidjJV508TBqexND5HrF89cGdCYCJFB3qhcxRHSeMctdCfbR1jrxBajhDy7o29g==", + "version": "2.10.29", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.29.tgz", + "integrity": "sha512-Asa2krT+XTPZINCS+2QcyS8WTkObE77RwkydwF7h6DmnKqbvlalz93m/dnphUyCa6SWSP51VgtEUf2FN+gelFQ==", "license": "Apache-2.0", "bin": { "baseline-browser-mapping": "dist/cli.cjs" @@ -2709,9 +2736,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", + "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" @@ -2766,9 +2793,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001791", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001791.tgz", - "integrity": "sha512-yk0l/YSrOnFZk3UROpDLQD9+kC1l4meK/wed583AXrzoarMGJcbRi2Q4RaUYbKxYAsZ8sWmaSa/DsLmdBeI1vQ==", + "version": "1.0.30001792", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001792.tgz", + "integrity": "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw==", "funding": [ { "type": "opencollective", @@ -2997,9 +3024,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.344", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.344.tgz", - "integrity": "sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==", + "version": "1.5.355", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.355.tgz", + "integrity": "sha512-LUPZhKzZPYSPme1jEYohpkA+ybYCJztr1quAdBd7E7h3+VOBVcKkwwtBJu41nrjawrRzfb8mtMfzWozoaK0ZIQ==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -3351,12 +3378,12 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.2.tgz", + "integrity": "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "hasown": "^2.0.3" }, "engines": { "node": ">= 0.4" @@ -3892,9 +3919,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", + "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", "funding": [ { "type": "github", @@ -3931,9 +3958,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.38", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.38.tgz", - "integrity": "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==", + "version": "2.0.44", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.44.tgz", + "integrity": "sha512-5WUyunoPMsvvEhS8AxHtRzP+oA8UCkJ7YRxatWKjngndhDGLiqEVAQKWjFAiAiuL8zMRGzGSJxFnLetoa43qGQ==", "license": "MIT" }, "node_modules/normalize-path": { @@ -4067,9 +4094,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.3.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.5.tgz", - "integrity": "sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==", + "version": "11.3.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.3.6.tgz", + "integrity": "sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -4113,9 +4140,9 @@ } }, "node_modules/postcss": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.12.tgz", - "integrity": "sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==", + "version": "8.5.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", + "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", "funding": [ { "type": "opencollective", @@ -4169,9 +4196,9 @@ } }, "node_modules/postcss-cli/node_modules/fs-extra": { - "version": "11.3.4", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", - "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "version": "11.3.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz", + "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", @@ -4590,14 +4617,14 @@ } }, "node_modules/rolldown": { - "version": "1.0.0-rc.17", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.0-rc.17.tgz", - "integrity": "sha512-ZrT53oAKrtA4+YtBWPQbtPOxIbVDbxT0orcYERKd63VJTF13zPcgXTvD4843L8pcsI7M6MErt8QtON6lrB9tyA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.1.tgz", + "integrity": "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ==", "dev": true, "license": "MIT", "dependencies": { - "@oxc-project/types": "=0.127.0", - "@rolldown/pluginutils": "1.0.0-rc.17" + "@oxc-project/types": "=0.130.0", + "@rolldown/pluginutils": "^1.0.0" }, "bin": { "rolldown": "bin/cli.mjs" @@ -4606,21 +4633,21 @@ "node": "^20.19.0 || >=22.12.0" }, "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.0-rc.17", - "@rolldown/binding-darwin-arm64": "1.0.0-rc.17", - "@rolldown/binding-darwin-x64": "1.0.0-rc.17", - "@rolldown/binding-freebsd-x64": "1.0.0-rc.17", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.0-rc.17", - "@rolldown/binding-linux-arm64-gnu": "1.0.0-rc.17", - "@rolldown/binding-linux-arm64-musl": "1.0.0-rc.17", - "@rolldown/binding-linux-ppc64-gnu": "1.0.0-rc.17", - "@rolldown/binding-linux-s390x-gnu": "1.0.0-rc.17", - "@rolldown/binding-linux-x64-gnu": "1.0.0-rc.17", - "@rolldown/binding-linux-x64-musl": "1.0.0-rc.17", - "@rolldown/binding-openharmony-arm64": "1.0.0-rc.17", - "@rolldown/binding-wasm32-wasi": "1.0.0-rc.17", - "@rolldown/binding-win32-arm64-msvc": "1.0.0-rc.17", - "@rolldown/binding-win32-x64-msvc": "1.0.0-rc.17" + "@rolldown/binding-android-arm64": "1.0.1", + "@rolldown/binding-darwin-arm64": "1.0.1", + "@rolldown/binding-darwin-x64": "1.0.1", + "@rolldown/binding-freebsd-x64": "1.0.1", + "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", + "@rolldown/binding-linux-arm64-gnu": "1.0.1", + "@rolldown/binding-linux-arm64-musl": "1.0.1", + "@rolldown/binding-linux-ppc64-gnu": "1.0.1", + "@rolldown/binding-linux-s390x-gnu": "1.0.1", + "@rolldown/binding-linux-x64-gnu": "1.0.1", + "@rolldown/binding-linux-x64-musl": "1.0.1", + "@rolldown/binding-openharmony-arm64": "1.0.1", + "@rolldown/binding-wasm32-wasi": "1.0.1", + "@rolldown/binding-win32-arm64-msvc": "1.0.1", + "@rolldown/binding-win32-x64-msvc": "1.0.1" } }, "node_modules/route-manifest": { @@ -4672,9 +4699,9 @@ "license": "MIT" }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.0.tgz", + "integrity": "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA==", "dev": true, "license": "ISC", "bin": { @@ -4721,9 +4748,9 @@ } }, "node_modules/simple-icons": { - "version": "16.18.1", - "resolved": "https://registry.npmjs.org/simple-icons/-/simple-icons-16.18.1.tgz", - "integrity": "sha512-+AS16pmdVHFdKrzYuTGfNGW6RRJ7eubpRhh2wipqPD5nglXKKIbAoEFhdxuweR1AV63+TuLXVJ+NEqlJpXXa2A==", + "version": "16.19.0", + "resolved": "https://registry.npmjs.org/simple-icons/-/simple-icons-16.19.0.tgz", + "integrity": "sha512-muxcz/FDvWFPrKJdsjaz79qsBjtZeVKUVIFl7wLVOwb+yqAag8FPe8+hFlMVRnmAXYQIm4eUDDm2+dhOj0cFgQ==", "funding": [ { "type": "opencollective", @@ -4942,6 +4969,13 @@ "license": "0BSD", "optional": true }, + "node_modules/undici-types": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", + "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", + "extraneous": true, + "license": "MIT" + }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", @@ -5029,16 +5063,16 @@ "license": "MIT" }, "node_modules/vite": { - "version": "8.0.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.10.tgz", - "integrity": "sha512-rZuUu9j6J5uotLDs+cAA4O5H4K1SfPliUlQwqa6YEwSrWDZzP4rhm00oJR5snMewjxF5V/K3D4kctsUTsIU9Mw==", + "version": "8.0.13", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.13.tgz", + "integrity": "sha512-MFtjBYgzmSxmgA4RAfjIyXWpGe1oALnjgUTzzV7QLx/TKxCzjtMH6Fd9/eVK+5Fg1qNoz5VAwsmMs/NofrmJvw==", "dev": true, "license": "MIT", "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.4", - "postcss": "^8.5.10", - "rolldown": "1.0.0-rc.17", + "postcss": "^8.5.14", + "rolldown": "1.0.1", "tinyglobby": "^0.2.16" }, "bin": { @@ -5055,7 +5089,7 @@ }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.1.0", + "@vitejs/devtools": "^0.1.18", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", @@ -5186,9 +5220,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "license": "ISC", "bin": { "yaml": "bin.mjs" diff --git a/package.json b/package.json index c1a34e573..ff2f56372 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,10 @@ "dev": "hugo server --disableFastRender --noHTTPCache", "format": "prettier **/** -w -c", "build": "hugo --minify --gc", - "preview": "vite preview --outDir public" + "preview": "vite preview --outDir public", + "changeset": "changeset", + "changeset:status": "changeset status --verbose", + "changeset:version": "changeset version" }, "dependencies": { "@fontsource-variable/geist": "^5.2.8", diff --git a/public/robots.txt b/public/robots.txt index 19de83294..27216e5e6 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,3 +1,3 @@ User-agent: * Disallow: /admin/ -Sitemap: http://localhost:3000/sitemap.xml +Sitemap: http://localhost:1313/sitemap.xml From e16d1c0bc0e9f1664317b801f378f94465bf6af0 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Fri, 15 May 2026 14:34:13 +0200 Subject: [PATCH 07/12] Update list template --- assets/scss/common/_custom.scss | 6 ++++- config/_default/languages.toml | 3 ++- hugo_stats.json | 6 +++-- layouts/list.html | 44 +++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index f40cd93c0..3a73c245d 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -232,8 +232,12 @@ backface-visibility: hidden; } +.card.w-50 { + width: 100% !important; +} + @include media-breakpoint-up(sm) { - .card.w-100.w-50 { + .card.w-50 { width: calc(50% - 0.5rem) !important; } } diff --git a/config/_default/languages.toml b/config/_default/languages.toml index 4b23c9569..b093ea8d4 100644 --- a/config/_default/languages.toml +++ b/config/_default/languages.toml @@ -7,7 +7,8 @@ languageTag = "en-US" # footer = 'Brought to you by <a class="text-muted" href="https://thulite.io/">Thulite</a>' footer = '© 2026 Thulite' - alertText = '<a class="alert-link stretched-link fw-normal" href="/blog/example-post/">Doks version 1.0 just shipped!</a>' + ## alertText = '<a class="alert-link stretched-link fw-normal" href="/blog/example-post/">Doks version 1.0 just shipped!</a>' + alertText = '<a target="_blank" class="alert-link stretched-link fw-normal" href="https://thulite.io/blog/hugo-shortcodes-0-1/">Get Hugo Shortcodes</a><svg xmlns="http://www.w3.org/2000/svg" class="ms-1 mb-1 icon icon-tabler icon-tabler-external-link" width="20" height="20" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 6h-6a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-6" /><path d="M11 13l9 -9" /><path d="M15 4h5v5" /></svg>' [de] languageName = "German" diff --git a/hugo_stats.json b/hugo_stats.json index 148a17786..f7eed015f 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -58,6 +58,7 @@ "summary", "sup", "svg", + "symbol", "table", "tbody", "td", @@ -67,7 +68,8 @@ "time", "title", "tr", - "ul" + "ul", + "use" ], "classes": [ "/box", @@ -109,7 +111,6 @@ "callout-title", "card", "card-body", - "card-list", "card-nav", "card-text", "card-title", @@ -441,6 +442,7 @@ "hugo-documentation", "hugo-version", "hugotoml", + "icon-arrow-right", "image", "inspect-generated-html", "inspect-generated-site-output", diff --git a/layouts/list.html b/layouts/list.html index f95bcc051..2836d875d 100644 --- a/layouts/list.html +++ b/layouts/list.html @@ -5,6 +5,49 @@ <!-- <h1 class="text-center">{{ if eq .CurrentSection .FirstSection }}{{ .Section | humanize }}{{ else }}{{ .Title }}{{ end }}</h1> --> <h1 class="text-center">{{ .Title }}</h1> {{ with .Content }}<div class="text-center">{{ . }}</div>{{ end }} + + <svg xmlns="http://www.w3.org/2000/svg" style="display:none;" aria-hidden="true" focusable="false"> + <symbol id="icon-arrow-right" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M5 12l14 0"></path> + <path d="M13 18l6 -6"></path> + <path d="M13 6l6 6"></path> + </symbol> + </svg> + + <div class="card-nav d-flex flex-column flex-sm-row"> + {{ $currentSection := .CurrentSection }} + {{ $cards := where .Site.RegularPages "Section" .Section }} + {{ $scratch := newScratch }} + {{ $scratch.Set "visibleCount" 0 }} + {{ range $page := $cards }} + {{ if in ($page.RelPermalink | string) $currentSection.RelPermalink }} + {{ $scratch.Add "visibleCount" 1 }} + {{ $visibleCount := $scratch.Get "visibleCount" }} + + <div class="card text-end w-50"> + <div class="card-body d-flex"> + <div class="d-flex flex-column me-auto text-start"> + <h5 class="card-title my-0"><a href="{{ $page.RelPermalink }}" class="stretched-link text-reset text-decoration-none">{{ $page.Params.title | title }}</a></h5> + <!-- <p class="card-text mt-1">{{ .Summary }}</p> --> + </div> + <div class="d-flex flex-column justify-content-center"> + <svg class="icon icon-tabler icon-tabler-arrow-right" width="20" height="20" viewBox="0 0 24 24" stroke="currentColor" fill="none" aria-hidden="true" focusable="false"> + <use href="#icon-arrow-right"></use> + </svg> + </div> + </div> + </div> + + {{ if eq (mod $visibleCount 2) 0 }} + </div><div class="card-nav d-flex flex-column flex-sm-row"> + {{ end }} + + {{ end }} + {{ end }} + </div> + + <!-- <div class="card-list"> {{ $currentSection := .CurrentSection }} {{ range where .Site.RegularPages.ByTitle "Section" .Section }} @@ -17,6 +60,7 @@ <h1 class="text-center">{{ .Title }}</h1> {{ end }} {{ end }} </div> + --> </article> </div> </div> From 58741bd00ffecda3414ee4fcd1c30d6fd9c532cd Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Fri, 15 May 2026 17:01:23 +0200 Subject: [PATCH 08/12] Restructure basics section --- assets/scss/common/_custom.scss | 4 + config/_default/markup.toml | 2 +- content/basics/_index.md | 2 +- content/basics/archetypes.md | 2 +- content/basics/fonts.md | 5 +- content/basics/images.md | 5 +- content/basics/integrations/_index.md | 2 +- content/basics/layouts.md | 2 +- content/basics/markdown.md | 3 + content/basics/pages.md | 4 +- content/basics/partials.md | 15 ++ content/basics/project-structure.md | 157 +++++++----------- content/basics/scripts.md | 3 + content/basics/shortcodes.md | 15 ++ content/basics/styles.md | 3 + content/basics/templates/_index.md | 2 +- content/basics/templates/bolt.md | 2 +- content/basics/templates/doks.md | 2 +- .../{use-template.md => overview.md} | 5 +- content/reference/markdown/basic-syntax.md | 1 + content/reference/markdown/extended-syntax.md | 1 + content/reference/project-structure.md | 8 +- content/start-here/configuration.md | 3 +- content/start-here/installation.md | 2 +- content/start-here/troubleshooting.md | 1 + hugo_stats.json | 11 ++ 26 files changed, 146 insertions(+), 116 deletions(-) create mode 100644 content/basics/partials.md create mode 100644 content/basics/shortcodes.md rename content/basics/templates/{use-template.md => overview.md} (93%) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index 3a73c245d..d6fb76d46 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -326,6 +326,10 @@ h3 code { font-size: calc(1.3rem + 0.6vw); } +h4 code { + font-size: calc(1.275rem + 0.3vw); +} + .card h5 { font-family: $font-family-base; } diff --git a/config/_default/markup.toml b/config/_default/markup.toml index fa2d8a110..d4118dcdb 100644 --- a/config/_default/markup.toml +++ b/config/_default/markup.toml @@ -33,6 +33,6 @@ defaultMarkdownHandler = "goldmark" tabWidth = 2 [tableOfContents] - endLevel = 3 + endLevel = 4 ordered = false startLevel = 2 diff --git a/content/basics/_index.md b/content/basics/_index.md index 2bd458381..11d9a2e82 100644 --- a/content/basics/_index.md +++ b/content/basics/_index.md @@ -15,5 +15,5 @@ params: section: title: "Basics" iconName: "box" - startUrl: "/basics/markdown/" + startUrl: "/basics/project-structure/" --- diff --git a/content/basics/archetypes.md b/content/basics/archetypes.md index e886adfb2..cd7126ab2 100644 --- a/content/basics/archetypes.md +++ b/content/basics/archetypes.md @@ -5,7 +5,7 @@ summary: "" date: 2026-03-25T08:23:03+01:00 lastmod: 2026-03-25T08:23:03+01:00 draft: false -weight: 420 +weight: 220 toc: true params: seo: diff --git a/content/basics/fonts.md b/content/basics/fonts.md index 3859f7073..335330344 100644 --- a/content/basics/fonts.md +++ b/content/basics/fonts.md @@ -1,6 +1,9 @@ --- -title: Using custom fonts +title: Fonts description: A guide in my new Starlight docs site. +weight: 250 +params: + toc: true --- Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. diff --git a/content/basics/images.md b/content/basics/images.md index ea5d29d0e..7b18da1ef 100644 --- a/content/basics/images.md +++ b/content/basics/images.md @@ -1,6 +1,9 @@ --- -title: Using images +title: Images description: A guide in my new Starlight docs site. +weight: 245 +params: + toc: true --- Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. diff --git a/content/basics/integrations/_index.md b/content/basics/integrations/_index.md index 265ac4947..91efd186f 100644 --- a/content/basics/integrations/_index.md +++ b/content/basics/integrations/_index.md @@ -5,7 +5,7 @@ summary: "" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 550 +weight: 400 params: toc: true sidebar: diff --git a/content/basics/layouts.md b/content/basics/layouts.md index 52281e8a8..fb84bd63f 100644 --- a/content/basics/layouts.md +++ b/content/basics/layouts.md @@ -5,7 +5,7 @@ summary: "__Layouts__ are files that live in the `layouts` directory of your Thu date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 315 +weight: 225 params: toc: true seo: diff --git a/content/basics/markdown.md b/content/basics/markdown.md index 31a941432..5f3929aba 100644 --- a/content/basics/markdown.md +++ b/content/basics/markdown.md @@ -1,6 +1,9 @@ --- title: Markdown description: A guide in my new Starlight docs site. +weight: 210 +params: + toc: true --- Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. diff --git a/content/basics/pages.md b/content/basics/pages.md index 38a71b699..855f09c5c 100644 --- a/content/basics/pages.md +++ b/content/basics/pages.md @@ -5,7 +5,7 @@ summary: "__Pages__ are files that live in the `content` directory of your Thuli date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 310 +weight: 205 params: toc: true seo: @@ -14,7 +14,7 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -__Pages__ are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for every page in your website. +Pages are files that live in the `content` directory of your Thulite project. They are responsible for handling routing, data loading, and overall page layout for every page in your website. ## Create new content diff --git a/content/basics/partials.md b/content/basics/partials.md new file mode 100644 index 000000000..5504559fd --- /dev/null +++ b/content/basics/partials.md @@ -0,0 +1,15 @@ +--- +title: "Partials" +description: "" +summary: "" +date: 2026-05-15T16:27:22+02:00 +lastmod: 2026-05-15T16:27:22+02:00 +draft: false +weight: 230 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/project-structure.md b/content/basics/project-structure.md index d44c65cae..cea2b4a1a 100644 --- a/content/basics/project-structure.md +++ b/content/basics/project-structure.md @@ -1,7 +1,7 @@ --- title: "Project Structure" -description: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." -summary: "Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' e..." +description: "Understand the Thulite project structure and where to place content, templates, and assets." +summary: "A concise guide to the key directories and files in a Thulite project." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false @@ -14,86 +14,43 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -This guide. - -## Example - -Thulite basic starter (with recommended integrations): - -```bash -. -├── LICENSE -├── archetypes -│   └── default.md -├── assets -│   ├── favicon.png -│   ├── favicon.svg -│   ├── images -│   │   └── paul-pascale-FI9QMIVMdCM-unsplash.jpg -│   └── scss -│   ├── app.scss -│   └── common -│   ├── _custom.scss -│   └── _variables-custom.scss -├── config -│   ├── _default -│   │   ├── hugo.toml -│   │   ├── markup.toml -│   │   ├── menus.toml -│   │   ├── module.toml -│   │   └── params.toml -│   ├── babel.config.js -│   ├── next -│   │   └── hugo.toml -│   ├── postcss.config.js -│   └── production -│   └── hugo.toml -├── content -│   └── _index.md -├── layouts -│   ├── home.html -│   └── single.html -├── netlify.toml -├── package.json -└── static - ├── apple-touch-icon.png - ├── cover.png - ├── favicon.ico - └── icon.svg - -13 directories, 26 files -``` +Your project created with `create thulite` comes with a practical default structure. +This page explains what each top-level directory is for and where to put your files. +## At a glance ---- - - -Your new Thulite project generated from the `create thulite` CLI wizard already includes some files and folders. Others, you will create yourself and add to Thulite' existing file structure. +Thulite follows the Hugo [directory structure](https://gohugo.io/getting-started/directory-structure/). +Most projects include these key directories and files: -Here's how a Thulite project is organized, and some files you will find in your new project. +- `assets` - processed assets (styles, scripts, images) +- `config` - Hugo/Thulite configuration +- `content` - pages and section content +- `layouts` - templates, partials, and shortcodes +- `static` - files copied as-is to output +- `package.json` - npm dependencies and scripts -## Directories and Files +## Example tree -Thulite leverages the Hugo [directory structure](https://gohugo.io/getting-started/directory-structure/) for your project. Every Thulite project root should include the following directories and files: +{{< callout context="note" icon="info-circle" >}} -- `assets` - Your project assets (scripts, styles, images, etc.) -- `config` - Your project's configuration files (Thulite, Hugo, PostCSS, etc.) -- `content` - Your project content (pages, posts, etc.) -- `layouts` - Your project layouts (partials, shortcodes, etc.) -- `static` - Your non-code, unprocessed assets (fonts, icons, etc.) -- `package.json` - A project manifest. +For complete details, see the [Project Structure reference](/reference/project-structure/). -## Example Project Tree +{{< /callout >}} -A common Thulite project directory might look like this: +Typical starter structure: {{< tree >}} -- {folder} assets/scss - - {folder} common - - {brand-sass} _custom.scss - - {brand-sass} _variables-custom.scss - - {brand-sass} app.scss +- {folder} archetypes + - {markdown} default.md +- {folder} assets + - {folder} scss + - {folder} common + - {brand-sass} _custom.scss + - {brand-sass} _variables-custom.scss + - {brand-sass} app.scss + - {png} favicon.png + - {svg} favicon.svg - {folder} config - {folder} _default - {toml} hugo.toml @@ -102,53 +59,63 @@ A common Thulite project directory might look like this: - {folder} content - {markdown} _index.md - {folder} layouts - - {html} index.html + - {html} home.html - {folder} static - - {svg} favicon.svg + - {png} cover.png - {json} package.json {{< /tree >}} +### `archetypes` -### `assets/scss` +`default.md` -It is a common convention to store your CSS or Sass files in a `assets/scss` directory, but this is not required. As long as your styles live somewhere in the `assets/` directory and are imported correctly, Thulite will handle and optimize them. +Template used when creating new content files. -The `app.scss` file is used to specify the CSS or Sass files to import (or use). Put your custom (S)CSS variables in `common/variables-custom` and custom (S)CSS code in `common/_custom.scss`. +### `assets` -### `config/_default/` +`favicon.png`, `favicon.svg` -The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. +Use `assets/` for files that should be bundled, transformed, or optimized. -The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-modules/configuration/#module-configuration-mounts), logically linking `node_modules` directories to component folders (ex: `assets`, `layouts`) — making Thulite Integrations available in your Thulite project. +#### `scss` -The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. +Storing styles in `assets/scss/` is conventional, but not required. Any stylesheet in `assets/` can be processed when imported correctly. -### `content/` +Use `app.scss` as your entrypoint. Put custom variables in `common/_variables-custom.scss` and custom styles in `common/_custom.scss`. -The `content/` directory is where you store [pages](/basics/pages/), organized in sections or page bundles (leaf bundles or branch bundles) and can contain page resources. +### `config` -### `layouts/` +#### `_default` -[Layouts](/basics/layouts/) are Thulite templates that define the UI structure shared by one or more pages. +- `hugo.toml`: core [Hugo configuration](https://gohugo.io/configuration/all/) +- `module.toml`: [Hugo mounts](https://gohugo.io/configuration/module/#mounts), including links from `node_modules` to project directories +- `params.toml`: site-level [Thulite settings](/start-here/configuration/#update-parameters), including theme and integration options -### `static/` +### `content` -The `static/` directory is for files and assets that do not need to be processed during Thulite' build process. These files will be copied into the build folder untouched. +Use `content/` for [pages](/basics/pages/), sections, and page bundles (including page resources). -This behavior makes `static/` ideal for common assets like images and fonts, or special files such as `robots.txt` and `manifest.webmanifest`. +### `layouts` -You can place CSS and JavaScript in your `static/` directory, but be aware that those files will not be bundled or optimized in your final build. +[Layouts](/basics/layouts/) define shared page structure and rendering templates. -:::tip -As a general rule, any CSS or JavaScript that you write yourself should live in your `assets/` directory. -::: +### `static` +Files in `static/` are copied to the output unchanged. -### `package.json` +This is ideal for assets like fonts or icons, and special files like `robots.txt` and `manifest.webmanifest`. -This is a file used by JavaScript package managers to manage your dependencies. It also defines the scripts that are commonly used to run Thulite (ex: `npm run dev`, `npm run build`). +You can place CSS and JavaScript here, but they will not be bundled or optimized. + +{{< callout context="tip" icon="bulb" >}} + +As a rule, keep your own CSS and JavaScript in `assets/`. + +{{< /callout >}} + +### `package.json` -There are [two kinds of dependencies](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file) you can specify in a `package.json`: `dependencies` and `devDependencies`. In most cases, these work the same: Thulite needs all dependencies at build time, and your package manager will install both. We recommend putting all of your dependencies in `dependencies` to start, and only use `devDependencies` if you find a specific need to do so. +`package.json` defines dependencies and scripts such as `npm run dev` and `npm run build`. -For help creating a new `package.json` file for your project, check out the [manual setup](/install/manual/) instructions. +You can use [dependencies and devDependencies](https://docs.npmjs.com/specifying-dependencies-and-devdependencies-in-a-package-json-file). For most Thulite projects, placing packages in `dependencies` is a practical default. diff --git a/content/basics/scripts.md b/content/basics/scripts.md index cac2ff3f9..996090cd8 100644 --- a/content/basics/scripts.md +++ b/content/basics/scripts.md @@ -1,6 +1,9 @@ --- title: Scripts description: A guide in my new Starlight docs site. +weight: 240 +params: + toc: true --- Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. diff --git a/content/basics/shortcodes.md b/content/basics/shortcodes.md new file mode 100644 index 000000000..c32a816d2 --- /dev/null +++ b/content/basics/shortcodes.md @@ -0,0 +1,15 @@ +--- +title: "Shortcodes" +description: "" +summary: "" +date: 2026-05-15T16:27:08+02:00 +lastmod: 2026-05-15T16:27:08+02:00 +draft: false +weight: 215 +params: + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/basics/styles.md b/content/basics/styles.md index a64b03271..3508a99ef 100644 --- a/content/basics/styles.md +++ b/content/basics/styles.md @@ -1,6 +1,9 @@ --- title: Styles description: A guide in my new Starlight docs site. +weight: 235 +params: + toc: true --- Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. diff --git a/content/basics/templates/_index.md b/content/basics/templates/_index.md index 3a9f7d2a9..433662b91 100644 --- a/content/basics/templates/_index.md +++ b/content/basics/templates/_index.md @@ -5,7 +5,7 @@ summary: "" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 575 +weight: 300 params: toc: true sidebar: diff --git a/content/basics/templates/bolt.md b/content/basics/templates/bolt.md index adc06d574..c8c9c76b6 100644 --- a/content/basics/templates/bolt.md +++ b/content/basics/templates/bolt.md @@ -5,7 +5,7 @@ summary: "Bolt" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 330 params: toc: true seo: diff --git a/content/basics/templates/doks.md b/content/basics/templates/doks.md index 06962e67d..0a7a2b674 100644 --- a/content/basics/templates/doks.md +++ b/content/basics/templates/doks.md @@ -5,7 +5,7 @@ summary: "Doks" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 320 params: toc: true seo: diff --git a/content/basics/templates/use-template.md b/content/basics/templates/overview.md similarity index 93% rename from content/basics/templates/use-template.md rename to content/basics/templates/overview.md index c1b1e59e3..824705882 100644 --- a/content/basics/templates/use-template.md +++ b/content/basics/templates/overview.md @@ -1,11 +1,12 @@ --- -title: "Use a Template" +title: "Templates Overview" +linkTitle: "Overview" description: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." summary: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 510 +weight: 310 toc: true params: seo: diff --git a/content/reference/markdown/basic-syntax.md b/content/reference/markdown/basic-syntax.md index bd4f5ae8f..f7a0c85fd 100644 --- a/content/reference/markdown/basic-syntax.md +++ b/content/reference/markdown/basic-syntax.md @@ -7,6 +7,7 @@ lastmod: 2026-05-12T12:44:14+02:00 draft: false weight: 433 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/reference/markdown/extended-syntax.md b/content/reference/markdown/extended-syntax.md index 9bec64475..929883ca7 100644 --- a/content/reference/markdown/extended-syntax.md +++ b/content/reference/markdown/extended-syntax.md @@ -7,6 +7,7 @@ lastmod: 2026-05-12T12:44:29+02:00 draft: false weight: 435 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/reference/project-structure.md b/content/reference/project-structure.md index 13607c938..535f9a598 100644 --- a/content/reference/project-structure.md +++ b/content/reference/project-structure.md @@ -116,7 +116,7 @@ It is a common convention to store your CSS or Sass files in a `assets/scss` dir The `app.scss` file is used to specify the CSS or Sass files to import (or use). Put your custom (S)CSS variables in `common/variables-custom` and custom (S)CSS code in `common/_custom.scss`. -### `config/_default/` +### `config/_default` The `hugo.toml` file includes [Hugo configuration](https://gohugo.io/getting-started/configuration/) options for your Thulite project. Here you can specify taxonomies to use, build options, server options, and more. @@ -124,15 +124,15 @@ The `module.toml` file specifies the [Hugo mounts](https://gohugo.io/hugo-module The `params.toml` file is where you set [Thulite configuration](/reference/configuration/) options like e.g. options for themes and integrations. -### `content/` +### `content` The `content/` directory is where you store [pages](/basics/pages/), organized in sections or page bundles (leaf bundles or branch bundles) and can contain page resources. -### `layouts/` +### `layouts` [Layouts](/basics/layouts/) are Thulite templates that define the UI structure shared by one or more pages. -### `static/` +### `static` The `static/` directory is for files and assets that do not need to be processed during Thulite' build process. These files will be copied into the build folder untouched. diff --git a/content/start-here/configuration.md b/content/start-here/configuration.md index 464c7a4fd..b8977c86d 100644 --- a/content/start-here/configuration.md +++ b/content/start-here/configuration.md @@ -7,6 +7,7 @@ lastmod: 2026-04-27T12:46:23+02:00 draft: false weight: 115 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) @@ -15,7 +16,6 @@ params: --- This page covers the main configuration tasks for a Thulite project. - ## Update settings Update your [settings](/reference/settings/) in `./config/_default/hugo.toml`: @@ -105,7 +105,6 @@ draft: false --- ``` - ## Integrations {{< card-grid >}} diff --git a/content/start-here/installation.md b/content/start-here/installation.md index f234df228..c39830e72 100644 --- a/content/start-here/installation.md +++ b/content/start-here/installation.md @@ -120,7 +120,7 @@ Scaffolding project {{< /step >}} {{< /steps >}} -You'll now have a new [project directory](/reference/project-structure/) with all the necessary files and configurations for your site. +You'll now have a new [project directory](/basics/project-structure/) with all the necessary files and configurations for your site. {.mt-3} ## Configure Thulite diff --git a/content/start-here/troubleshooting.md b/content/start-here/troubleshooting.md index bd6406ec8..788f126c3 100644 --- a/content/start-here/troubleshooting.md +++ b/content/start-here/troubleshooting.md @@ -7,6 +7,7 @@ lastmod: 2026-04-27T12:47:03+02:00 draft: false weight: 140 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/hugo_stats.json b/hugo_stats.json index f7eed015f..51d356ded 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -80,6 +80,7 @@ "/html", "/json", "/markdown", + "/png", "/rocket", "/settings-2", "/svg", @@ -102,6 +103,7 @@ "btn-outline-secondary", "btn-primary", "btn-sm", + "bulb", "callout", "callout-body", "callout-content", @@ -356,6 +358,7 @@ "--overwrite", "--template", "TableOfContents", + "_default", "add-parameters", "add-script", "add-tracking-id", @@ -363,9 +366,12 @@ "adding-an-integration", "ai-dropdown", "analytics-guides", + "archetypes", "arguments", "ask-the-community", + "assets", "assetsscss", + "at-a-glance", "babelconfigjs", "background", "blockquote", @@ -379,6 +385,7 @@ "cli-deployment", "cms-guides", "code", + "config", "config_default", "confignext", "configproduction", @@ -414,6 +421,7 @@ "enoent", "example", "example-project-tree", + "example-tree", "examples", "explicit-declaration-and-isolation", "fast-by-default", @@ -493,6 +501,7 @@ "removing-an-integration", "rendered-html", "resources", + "scss", "search-form", "searchModal", "searchModalLabel", @@ -516,6 +525,7 @@ "svg-box", "svg-brand-javascript", "svg-brand-sass", + "svg-bulb", "svg-cabin", "svg-chevron-right", "svg-cloudcannon", @@ -536,6 +546,7 @@ "svg-microsoft", "svg-netlify", "svg-plausibleanalytics", + "svg-png", "svg-render", "svg-rocket", "svg-settings-2", From 9c2bbf7d3a6f5f7625233808b63ce4e07dad64b2 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Tue, 19 May 2026 17:18:02 +0200 Subject: [PATCH 09/12] Update pages Advanced and Basics sections --- archetypes/default.md | 16 ++ content/404.md | 1 + content/_index.md | 1 + content/advanced/_index.md | 1 + content/advanced/analytics/_index.md | 4 +- content/advanced/analytics/cabin-analytics.md | 2 +- .../advanced/analytics/fathom-analytics.md | 2 +- .../advanced/analytics/google-analytics.md | 2 +- content/advanced/analytics/overview.md | 2 +- .../advanced/analytics/plausible-analytics.md | 2 +- content/advanced/cms/_index.md | 4 +- content/advanced/cms/cloudcannon.md | 2 +- content/advanced/cms/decap-cms.md | 2 +- content/advanced/cms/overview.md | 2 +- content/advanced/cms/tina-cms.md | 2 +- content/advanced/internationalization.md | 1 + content/advanced/performance/_index.md | 18 ++ content/advanced/performance/caching.md | 61 +++++++ content/advanced/performance/optimization.md | 85 ++++++++++ content/advanced/performance/overview.md | 33 ++++ .../security/_index.md} | 15 +- .../security/content-security-policy.md | 59 +++++++ .../{ => security}/email-obfuscation.md | 3 +- content/advanced/security/headers.md | 60 +++++++ content/advanced/security/overview.md | 42 +++++ content/advanced/seo/_index.md | 18 ++ content/advanced/seo/overview.md | 26 +++ content/basics/_index.md | 1 + content/basics/archetypes.md | 1 + content/basics/deploy/cloudflare.md | 112 ------------- content/basics/deploy/github.md | 138 --------------- content/basics/deploy/gitlab.md | 56 ------- content/basics/deploy/google-firebase.md | 70 -------- content/basics/deploy/overview.md | 157 ------------------ .../basics/{deploy => deployment}/_index.md | 2 +- content/basics/deployment/cloudflare-pages.md | 157 ++++++++++++++++++ content/basics/deployment/github-pages.md | 154 +++++++++++++++++ content/basics/deployment/gitlab-pages.md | 66 ++++++++ content/basics/deployment/google-firebase.md | 97 +++++++++++ .../{deploy => deployment}/microsoft-azure.md | 50 +++--- .../basics/{deploy => deployment}/netlify.md | 2 +- content/basics/deployment/overview.md | 41 +++++ .../basics/{deploy => deployment}/render.md | 2 +- .../basics/{deploy => deployment}/vercel.md | 2 +- content/basics/integrations/bolt-core.md | 14 +- content/basics/integrations/bootstrap.md | 53 +----- content/basics/integrations/core.md | 95 +---------- content/basics/integrations/doks-core.md | 15 +- content/basics/integrations/images.md | 15 +- content/basics/integrations/inline-svg.md | 15 +- content/basics/integrations/overview.md | 126 ++------------ content/basics/integrations/seo.md | 15 +- content/basics/integrations/tailwindcss.md | 21 +++ content/basics/partials.md | 1 + content/basics/shortcodes.md | 1 + content/basics/templates/basic.md | 22 +++ content/basics/templates/bolt.md | 11 +- content/basics/templates/bootstrap.md | 22 +++ content/basics/templates/doks.md | 12 +- content/basics/templates/overview.md | 23 ++- content/basics/templates/tailwind-css.md | 22 +++ content/reference/_index.md | 1 + content/reference/configuration/parameters.md | 1 + content/reference/configuration/settings.md | 1 + content/start-here/_index.md | 1 + content/start-here/concepts/_index.md | 1 + hugo_stats.json | 71 ++++---- public/robots.txt | 2 +- 68 files changed, 1232 insertions(+), 903 deletions(-) create mode 100644 archetypes/default.md create mode 100644 content/advanced/performance/_index.md create mode 100644 content/advanced/performance/caching.md create mode 100644 content/advanced/performance/optimization.md create mode 100644 content/advanced/performance/overview.md rename content/{basics/integrations/tailwind.md => advanced/security/_index.md} (52%) create mode 100644 content/advanced/security/content-security-policy.md rename content/advanced/{ => security}/email-obfuscation.md (99%) create mode 100644 content/advanced/security/headers.md create mode 100644 content/advanced/security/overview.md create mode 100644 content/advanced/seo/_index.md create mode 100644 content/advanced/seo/overview.md delete mode 100644 content/basics/deploy/cloudflare.md delete mode 100644 content/basics/deploy/github.md delete mode 100644 content/basics/deploy/gitlab.md delete mode 100644 content/basics/deploy/google-firebase.md delete mode 100644 content/basics/deploy/overview.md rename content/basics/{deploy => deployment}/_index.md (94%) create mode 100644 content/basics/deployment/cloudflare-pages.md create mode 100644 content/basics/deployment/github-pages.md create mode 100644 content/basics/deployment/gitlab-pages.md create mode 100644 content/basics/deployment/google-firebase.md rename content/basics/{deploy => deployment}/microsoft-azure.md (55%) rename content/basics/{deploy => deployment}/netlify.md (99%) create mode 100644 content/basics/deployment/overview.md rename content/basics/{deploy => deployment}/render.md (99%) rename content/basics/{deploy => deployment}/vercel.md (99%) create mode 100644 content/basics/integrations/tailwindcss.md create mode 100644 content/basics/templates/basic.md create mode 100644 content/basics/templates/bootstrap.md create mode 100644 content/basics/templates/tailwind-css.md diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 000000000..3ad3dd269 --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,16 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +description: "" +summary: "" +date: {{ .Date }} +lastmod: {{ .Date }} +draft: true +weight: 999 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/404.md b/content/404.md index bbdf782c6..632f258aa 100644 --- a/content/404.md +++ b/content/404.md @@ -4,6 +4,7 @@ date: 2026-02-17T13:06:19+01:00 description: "The page you're looking for doesn’t exist or has moved. Check the URL, use the navigation to browse sections, or return to the homepage." draft: false params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/_index.md b/content/_index.md index 2d854b011..cd14e0799 100644 --- a/content/_index.md +++ b/content/_index.md @@ -6,6 +6,7 @@ date: 2023-09-07T16:33:54+02:00 lastmod: 2026-03-23T16:15:33+01:00 draft: false params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/_index.md b/content/advanced/_index.md index 97283cf16..2f1b92160 100644 --- a/content/advanced/_index.md +++ b/content/advanced/_index.md @@ -7,6 +7,7 @@ lastmod: 2026-04-27T11:59:45+02:00 draft: false weight: 300 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/analytics/_index.md b/content/advanced/analytics/_index.md index fa11b5adb..834c9df51 100644 --- a/content/advanced/analytics/_index.md +++ b/content/advanced/analytics/_index.md @@ -5,9 +5,11 @@ summary: "" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 320 +weight: 700 params: toc: true + sidebar: + collapsed: false seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/analytics/cabin-analytics.md b/content/advanced/analytics/cabin-analytics.md index a59a9aae1..e9974555f 100644 --- a/content/advanced/analytics/cabin-analytics.md +++ b/content/advanced/analytics/cabin-analytics.md @@ -5,7 +5,7 @@ summary: "Cabin Analytics is a privacy-first, carbon conscious web analytics ser date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 323 +weight: 711 params: toc: true seo: diff --git a/content/advanced/analytics/fathom-analytics.md b/content/advanced/analytics/fathom-analytics.md index dc7101a60..490b23f72 100644 --- a/content/advanced/analytics/fathom-analytics.md +++ b/content/advanced/analytics/fathom-analytics.md @@ -5,7 +5,7 @@ summary: "Fathom Analytics is a Google Analytics alternative that doesn't compro date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 325 +weight: 713 params: toc: true seo: diff --git a/content/advanced/analytics/google-analytics.md b/content/advanced/analytics/google-analytics.md index 5344ad08a..bce46f5ff 100644 --- a/content/advanced/analytics/google-analytics.md +++ b/content/advanced/analytics/google-analytics.md @@ -5,7 +5,7 @@ summary: "Google Analytics is an analytics service that enables you to measure t date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 327 +weight: 715 params: toc: true seo: diff --git a/content/advanced/analytics/overview.md b/content/advanced/analytics/overview.md index 8f980995a..3c1d661de 100644 --- a/content/advanced/analytics/overview.md +++ b/content/advanced/analytics/overview.md @@ -6,7 +6,7 @@ summary: "Choose an analytics guide below to add a service to your Thulite proje date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 321 +weight: 710 params: toc: true seo: diff --git a/content/advanced/analytics/plausible-analytics.md b/content/advanced/analytics/plausible-analytics.md index a9e98aa54..b4ba933b9 100644 --- a/content/advanced/analytics/plausible-analytics.md +++ b/content/advanced/analytics/plausible-analytics.md @@ -5,7 +5,7 @@ summary: "Plausible Analytics ia an easy to use and privacy-friendly Google Anal date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 329 +weight: 717 params: toc: true seo: diff --git a/content/advanced/cms/_index.md b/content/advanced/cms/_index.md index 2f1db4788..9b1db95f2 100644 --- a/content/advanced/cms/_index.md +++ b/content/advanced/cms/_index.md @@ -5,9 +5,11 @@ summary: "" date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 330 +weight: 800 params: toc: true + sidebar: + collapsed: false seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/cms/cloudcannon.md b/content/advanced/cms/cloudcannon.md index 00d071df6..e18fc145f 100644 --- a/content/advanced/cms/cloudcannon.md +++ b/content/advanced/cms/cloudcannon.md @@ -5,7 +5,7 @@ summary: "CloudCannon is a Git-based content management system that provides a v date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 333 +weight: 811 params: toc: true seo: diff --git a/content/advanced/cms/decap-cms.md b/content/advanced/cms/decap-cms.md index 5735d7018..f8ede2889 100644 --- a/content/advanced/cms/decap-cms.md +++ b/content/advanced/cms/decap-cms.md @@ -5,7 +5,7 @@ summary: "Decap CMS (formerly Netlify CMS) is an open-source, Git-based content date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 335 +weight: 813 params: toc: true seo: diff --git a/content/advanced/cms/overview.md b/content/advanced/cms/overview.md index e2e0dc450..2e6095e2d 100644 --- a/content/advanced/cms/overview.md +++ b/content/advanced/cms/overview.md @@ -6,7 +6,7 @@ summary: "Choose a CMS guide below to connect a headless CMS to your Thulite pro date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 331 +weight: 810 params: toc: true seo: diff --git a/content/advanced/cms/tina-cms.md b/content/advanced/cms/tina-cms.md index 74f50741b..733965ae7 100644 --- a/content/advanced/cms/tina-cms.md +++ b/content/advanced/cms/tina-cms.md @@ -5,7 +5,7 @@ summary: "Tina CMS is a Git-backed headless content management system." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 337 +weight: 815 params: toc: true seo: diff --git a/content/advanced/internationalization.md b/content/advanced/internationalization.md index 214ecd2aa..b84d8b13f 100644 --- a/content/advanced/internationalization.md +++ b/content/advanced/internationalization.md @@ -8,6 +8,7 @@ draft: false weight: 305 toc: true params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/performance/_index.md b/content/advanced/performance/_index.md new file mode 100644 index 000000000..f57608fd9 --- /dev/null +++ b/content/advanced/performance/_index.md @@ -0,0 +1,18 @@ +--- +title: "Performance" +description: "" +summary: "" +date: 2026-05-18T08:09:49+02:00 +lastmod: 2026-05-18T08:09:49+02:00 +draft: false +weight: 400 +params: + toc: true + sidebar: + collapsed: false + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/advanced/performance/caching.md b/content/advanced/performance/caching.md new file mode 100644 index 000000000..1e16b4dbe --- /dev/null +++ b/content/advanced/performance/caching.md @@ -0,0 +1,61 @@ +--- +title: "Caching" +description: "Use build caches and immutable asset caching in Thulite." +summary: "Configure Hugo caches, ship fingerprinted assets, and validate cache behavior." +date: 2026-05-18T08:11:14+02:00 +lastmod: 2026-05-18T08:11:14+02:00 +draft: false +weight: 411 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Caching in Thulite has two layers: + +- Build-time cache (Hugo resource and data caches) +- Runtime cache (browser and CDN caching for generated assets) + +## Configure Hugo build caches + +Set cache directories in your Hugo config so repeated builds are faster and deterministic: + +```toml {title="config/_default/hugo.toml"} +[caches] + [caches.getresource] + dir = ":cacheDir/:project" + maxAge = -1 +``` + +For projects using Thulite Core, you can also configure `getjson`, `getcsv`, `images`, and `assets` caches. + +## Use fingerprinted assets for long-lived caching + +Thulite Core fingerprints CSS and JavaScript bundles. Because filenames change when content changes, you can safely cache those files aggressively. + +Recommended strategy: + +- HTML: short cache lifetime or revalidate often +- Fingerprinted CSS/JS/fonts/images: long cache lifetime (for example `max-age=31536000, immutable`) + +## Add cache headers at the edge + +Set cache headers in your host or CDN config (for example Netlify). Keep document caching conservative and static fingerprinted assets aggressive. + +## Verify caching behavior + +After `npm run build`, check `public/` for fingerprinted assets and validate headers in browser dev tools: + +- HTML responses are revalidated as expected +- Fingerprinted assets return long-lived cache headers +- A new build changes asset filenames when content changes + +## Related + +- [Configuration](/start-here/configuration/) +- [Verification](/start-here/verification/) +- [Thulite Core integration](/basics/integrations/core/) diff --git a/content/advanced/performance/optimization.md b/content/advanced/performance/optimization.md new file mode 100644 index 000000000..df6455507 --- /dev/null +++ b/content/advanced/performance/optimization.md @@ -0,0 +1,85 @@ +--- +title: "Optimization" +description: "Optimize Thulite builds and delivery with a few high-impact defaults." +summary: "Minify output, reduce CSS/JS payload, defer non-critical work, and verify results." +date: 2026-05-18T08:11:22+02:00 +lastmod: 2026-05-18T08:11:22+02:00 +draft: false +weight: 413 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Optimization in Thulite is mostly about shipping less code and doing less work on first load. + +## Build for production + +Use a production build with garbage collection and minification (`hugo build --gc --minify`): + +{{< tabs "build-command" >}} +{{< tab "npm" >}} + +```bash +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +This removes unused build artifacts and compresses generated output. + +## Keep CSS lean + +Thulite uses PostCSS and can remove unused selectors in production (via `hugo_stats.json` + PurgeCSS). Keep your safelist current for dynamic classes. + +## Ship optimized assets + +Thulite Core compiles and fingerprints CSS/JS bundles. This gives: + +- Smaller assets in production +- Stable integrity hashes +- Efficient browser caching with automatic cache busting on content change + +## Defer non-critical work + +Thulite Core supports async script loading, link prefetching using [Quicklink](https://getquick.link/), and native image lazy loading. These reduce main-thread and network pressure during initial render. + +## Verify with real checks + +After each change, run a production build and validate: + +- Lighthouse / PageSpeed scores +- JavaScript and CSS payload size +- No regressions in Core Web Vitals + +## Related + +- [Caching](/advanced/performance/caching/) +- [Verification](/start-here/verification/) +- [Thulite Core integration](/basics/integrations/core/) diff --git a/content/advanced/performance/overview.md b/content/advanced/performance/overview.md new file mode 100644 index 000000000..df0b64b7a --- /dev/null +++ b/content/advanced/performance/overview.md @@ -0,0 +1,33 @@ +--- +title: "Performance Overview" +linkTitle: "Overview" +description: "Improve load speed and runtime efficiency in Thulite." +summary: "Learn how to configure caching and apply high-impact optimization defaults." +date: 2026-05-18T08:14:59+02:00 +lastmod: 2026-05-18T08:14:59+02:00 +draft: false +weight: 410 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use this section to improve how fast your Thulite site builds, renders, and delivers assets in production. + +## Performance Guides + +{{< card-grid >}} +{{< link-card + title="Caching" + description="Configure build and runtime caching for faster repeat visits and safer cache busting." + href="/advanced/performance/caching/" +>}} +{{< link-card + title="Optimization" + description="Reduce payload size and defer non-critical work to improve Core Web Vitals." + href="/advanced/performance/optimization/" +>}} +{{< /card-grid >}} diff --git a/content/basics/integrations/tailwind.md b/content/advanced/security/_index.md similarity index 52% rename from content/basics/integrations/tailwind.md rename to content/advanced/security/_index.md index 9e92f3185..3b14d403a 100644 --- a/content/basics/integrations/tailwind.md +++ b/content/advanced/security/_index.md @@ -1,19 +1,18 @@ --- -title: "Tailwind" -description: "Tailwind CSS integration for Thulite." -summary: "Tailwind CSS integration for Thulite." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 +title: "Security" +description: "" +summary: "" +date: 2026-05-18T08:11:58+02:00 +lastmod: 2026-05-18T08:11:58+02:00 draft: false weight: 500 params: toc: true + sidebar: + collapsed: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -Tailwind CSS integration for Thulite. - -[..] diff --git a/content/advanced/security/content-security-policy.md b/content/advanced/security/content-security-policy.md new file mode 100644 index 000000000..d1f23d797 --- /dev/null +++ b/content/advanced/security/content-security-policy.md @@ -0,0 +1,59 @@ +--- +title: "Content Security Policy" +description: "Define and enforce a strict Content Security Policy for Thulite sites." +summary: "Start strict, allow only required sources, and roll out safely with report-only checks." +date: 2026-05-18T08:13:01+02:00 +lastmod: 2026-05-18T08:13:01+02:00 +draft: false +weight: 511 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Content Security Policy (CSP) reduces XSS risk by restricting where scripts, styles, fonts, and other resources can load from. + +## Start with a strict baseline + +Use `self` by default and add only domains your site actually needs. + +```toml {title="netlify.toml"} +[[headers]] + for = "/*" + [headers.values] + Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self'; frame-ancestors 'none'; base-uri 'self'; object-src 'none'" +``` + +## Handle inline and third-party scripts explicitly + +If inline scripts are required, prefer nonces or hashes instead of `unsafe-inline`. + +- Nonce: good when values are generated per response +- Hash: good for stable inline snippets +- Third-party sources: add only exact hosts you trust + +## Roll out with report-only first + +Deploy a `Content-Security-Policy-Report-Only` header, review violations, then enforce once clean. + +## Keep CSP aligned with asset strategy + +Thulite/Core generates fingerprinted assets and SRI attributes, which work well with a strict CSP. When integrations change, re-check CSP so new endpoints and assets are explicitly allowed. + +## Verify after every release + +In browser dev tools, confirm: + +- No blocked first-party scripts or styles +- No unexpected external domains +- No CSP violations on key pages + +## Related + +- [Headers](/advanced/security/headers/) +- [Optimization](/advanced/performance/optimization/) +- [Caching](/advanced/performance/caching/) diff --git a/content/advanced/email-obfuscation.md b/content/advanced/security/email-obfuscation.md similarity index 99% rename from content/advanced/email-obfuscation.md rename to content/advanced/security/email-obfuscation.md index f190b832f..e678cb3a9 100644 --- a/content/advanced/email-obfuscation.md +++ b/content/advanced/security/email-obfuscation.md @@ -5,9 +5,10 @@ summary: "Obfuscate email addresses in Thulite with a simple, effective CSS tech date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 310 +weight: 515 toc: true params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/advanced/security/headers.md b/content/advanced/security/headers.md new file mode 100644 index 000000000..2f773df6c --- /dev/null +++ b/content/advanced/security/headers.md @@ -0,0 +1,60 @@ +--- +title: "Headers" +description: "Set secure HTTP response headers for your Thulite site." +summary: "Use a small, high-impact header baseline and validate behavior after each deploy." +date: 2026-05-18T08:13:33+02:00 +lastmod: 2026-05-18T08:13:33+02:00 +draft: false +weight: 513 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- + +Security headers are a low-cost way to harden your site at the edge. + +## Start with a safe baseline + +Use these headers for all routes (example for Netlify): + +```toml {title="netlify.toml"} +[[headers]] + for = "/*" + [headers.values] + Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" + X-Content-Type-Options = "nosniff" + X-Frame-Options = "SAMEORIGIN" + Referrer-Policy = "strict-origin" + Permissions-Policy = "geolocation=(self), microphone=(), camera=()" +``` + +## Add CSP separately and keep it strict + +Treat CSP as its own policy and iterate carefully as scripts and integrations evolve. + +- Start with `default-src 'self'` +- Add only required origins +- Prefer nonces/hashes over `unsafe-inline` + +## Be intentional with cache headers + +Apply long-lived caching to fingerprinted static assets, and shorter/revalidated caching to HTML. + +## Validate after deployment + +In browser dev tools and scanners, confirm: + +- Headers are present on HTML and static assets +- HTTPS and HSTS are active +- No unexpected framing or MIME issues +- No CSP violations on critical pages + +## Related + +- [Content Security Policy](/advanced/security/content-security-policy/) +- [Caching](/advanced/performance/caching/) +- [Verification](/start-here/verification/) diff --git a/content/advanced/security/overview.md b/content/advanced/security/overview.md new file mode 100644 index 000000000..3e2cbd2e0 --- /dev/null +++ b/content/advanced/security/overview.md @@ -0,0 +1,42 @@ +--- +title: "Security Overview" +linkTitle: "Overview" +description: "Harden your Thulite site with practical security controls." +summary: "Configure CSP, response headers, and email obfuscation to reduce common web risks." +date: 2026-05-18T08:14:51+02:00 +lastmod: 2026-05-18T08:14:51+02:00 +draft: false +weight: 510 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use this section to apply essential security protections at the framework and hosting layer. + +## Security Guides + +{{< card-grid >}} +{{< link-card + title="Content Security Policy" + description="Restrict allowed resource sources to reduce XSS and injection risk." + href="/advanced/security/content-security-policy/" +>}} +{{< link-card + title="Headers" + description="Set secure HTTP headers such as HSTS, nosniff, and permissions policy." + href="/advanced/security/headers/" +>}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card + title="Email Obfuscation" + description="Protect published email addresses from basic scraping bots." + href="/advanced/security/email-obfuscation/" + class="w-50" +>}} +{{< /card-grid >}} diff --git a/content/advanced/seo/_index.md b/content/advanced/seo/_index.md new file mode 100644 index 000000000..723619828 --- /dev/null +++ b/content/advanced/seo/_index.md @@ -0,0 +1,18 @@ +--- +title: "SEO" +description: "" +summary: "" +date: 2026-05-18T08:13:50+02:00 +lastmod: 2026-05-18T08:13:50+02:00 +draft: false +weight: 600 +params: + toc: true + sidebar: + collapsed: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- diff --git a/content/advanced/seo/overview.md b/content/advanced/seo/overview.md new file mode 100644 index 000000000..bf7e6086a --- /dev/null +++ b/content/advanced/seo/overview.md @@ -0,0 +1,26 @@ +--- +title: "SEO Overview" +linkTitle: "Overview" +description: "" +summary: "" +date: 2026-05-18T08:14:40+02:00 +lastmod: 2026-05-18T08:14:40+02:00 +draft: false +weight: 610 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use this section to improve crawlability, metadata quality, and search visibility for production sites. + +## SEO Guides + +{{< link-card + title="Thulite SEO" + description="Official documentation for SEO configuration, metadata, and validation in Thulite projects." + href="https://seo.thulite.io/" +>}} diff --git a/content/basics/_index.md b/content/basics/_index.md index 11d9a2e82..576d7bc56 100644 --- a/content/basics/_index.md +++ b/content/basics/_index.md @@ -7,6 +7,7 @@ lastmod: 2026-04-27T11:59:36+02:00 draft: false weight: 200 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/basics/archetypes.md b/content/basics/archetypes.md index cd7126ab2..16589fffa 100644 --- a/content/basics/archetypes.md +++ b/content/basics/archetypes.md @@ -8,6 +8,7 @@ draft: false weight: 220 toc: true params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/basics/deploy/cloudflare.md b/content/basics/deploy/cloudflare.md deleted file mode 100644 index 43aa9b0bd..000000000 --- a/content/basics/deploy/cloudflare.md +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: "Cloudflare" -description: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." -summary: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 -draft: false -weight: 500 -params: - toc: true - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- -You can deploy your Thulite project on [Cloudflare Pages](https://pages.cloudflare.com/), a JAMstack platform for frontend developers to collaborate and deploy websites. - -This guide includes: - -- [How to deploy through the Cloudflare Pages Dashboard](#how-to-deploy-a-site-with-git) -- [How to deploy using Wrangler, the Cloudflare CLI](#how-to-deploy-a-site-using-wrangler) - -## Prerequisites - -To get started, you will need: - -- A Cloudflare account. If you don't already have one, you can create a free Cloudflare account during the process. -- Your app code pushed to a [GitHub](https://github.com/) or a [GitLab](https://about.gitlab.com/) repository. - -## How to deploy a site with Git - -1. Set up a new project on Cloudflare Pages. -2. Push your code to your git repository (GitHub, GitLab). -3. Log in to the Cloudflare dashboard and select your account in **Account Home** > **Pages**. -4. Select **Create a new Project** and the **Connect Git** option. -5. Select the git project you want to deploy and click **Begin setup** -6. Use the following build settings: - - - **Framework preset**: `exit 0` - - **Build command:** `npm run build` - - **Build output directory:** `public` - -7. Click the **Save and Deploy** button. - -## How to deploy a site using Wrangler - -1. Install the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/get-started/) in your project: - - {{< tabs "tabs-1" >}} - {{< tab "npm" >}} - ```bash - npm install wrangler --save-dev - ``` - {{< /tab >}} - {{< tab "pnpm" >}} - ```bash - pnpm add wrangler --save-dev - ``` - {{< /tab >}} - {{< tab "Yarn" >}} - ```bash - yarn add --dev wrangler - ``` - {{< /tab >}} - {{< /tabs >}} - -2. Authorize Wrangler with your Cloudflare account using OAuth: - - ```bash - wrangler login - ``` - -3. Run your build command: - - {{< tabs "tabs-1" >}} - {{< tab "npm" >}} - ```bash - npm run build - ``` - {{< /tab >}} - {{< tab "pnpm" >}} - ```bash - pnpm run build - ``` - {{< /tab >}} - {{< tab "Yarn" >}} - ```bash - yarn run build - ``` - {{< /tab >}} - {{< /tabs >}} - -4. Deploy the build output directory as a Pages deployment: - - ```bash - wrangler pages deploy public - ``` - -After your assets are uploaded, Wrangler will give you a preview URL to inspect your site. When you log into the Cloudflare Pages dashboard, you will see your new project. - -### Enabling Preview locally with Wrangler - -Update the preview script to run `wrangler` instead of Thulite' built-in preview command: - -```json title="package.json" -"preview": "wrangler pages dev ./public" -``` - -## Troubleshooting - -If you're encountering errors, check whether the `node` version you're using locally (`node -v`) matches the `NODE_VERSION` environment variable under **Settings**. diff --git a/content/basics/deploy/github.md b/content/basics/deploy/github.md deleted file mode 100644 index 4b76d7ea0..000000000 --- a/content/basics/deploy/github.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: "Github" -description: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." -summary: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 -draft: false -weight: 500 -params: - toc: true - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- -You can use [GitHub Pages](https://pages.github.com/) to host a Thulite website directly from a repository on [GitHub.com](https://github.com/). - -:::tip[Looking for an example?] -Check out the [official GitHub Pages Doks example project](https://github.com/thuliteio/doks-gh-pages)! -::: - -## How to deploy - -You can deploy a Thulite site to GitHub Pages by using [GitHub Actions](https://github.com/features/actions) to automatically build and deploy your site. To do this, your source code must be hosted on GitHub. - -Follow the instructions below to deploy your Thulite site to GitHub pages. - -1. Create a new file in your project at `.github/workflows/deploy.yml` and paste in the YAML below. - - ```yaml title="deploy.yml" - # Sample workflow for building and deploying a Thulite site to GitHub Pages - name: Deploy Thulite site to Pages - - on: - # Runs on pushes targeting the default branch - push: - branches: - - main - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - - # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages - permissions: - contents: read - pages: write - id-token: write - - # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. - # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. - concurrency: - group: "pages" - cancel-in-progress: false - - # Default to bash - defaults: - run: - shell: bash - - jobs: - # Build job - build: - runs-on: ubuntu-latest - env: - HUGO_VERSION: 0.126.0 - steps: - - name: Install Hugo CLI - run: | - wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ - && sudo dpkg -i ${{ runner.temp }}/hugo.deb - - name: Install Dart Sass - run: sudo snap install dart-sass - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: recursive - fetch-depth: 0 - - name: Setup Node.js - uses: actions/setup-node@v4 - with: - node-version: '20' - cache: 'npm' - - name: Setup Pages - id: pages - uses: actions/configure-pages@v4 - - name: Install dependencies - run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" - - name: Build production website - env: - # For maximum backward compatibility with Hugo modules - HUGO_ENVIRONMENT: production - HUGO_ENV: production - TZ: America/Los_Angeles - run: | - npm run build \ - -- \ - --baseURL "${{ steps.pages.outputs.base_url }}/" - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ./public - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 - - ``` - -2. On GitHub, go to your repository's **Settings** tab and find the **Pages** section of the settings. - -3. Choose **GitHub Actions** as the **Source** of your site. - -4. Commit the new workflow file and push it to GitHub. - -5. Copy the **Your site is published at** URL and paste it as `baseurl` in `./config/production/hugo.toml`. - -7. Push the changes to GitHub and wait for the action to finish succesfully (after approximately 30 seconds). - -That's it. After a minute or so, you site is avaliable at the **Your site is published at** URL. When you push changes to your Thulite project's repository, the GitHub Action will automatically deploy them for you. - -:::tip[Set up a custom domain] -You can optionally set up a custom domain by adding the following `./public/CNAME` file to your project: - -```js title="public/CNAME" -sub.mydomain.com -``` - -This will deploy your site at your custom domain instead of `user.github.io`. Don't forget to also [configure DNS for your domain provider](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain). -::: diff --git a/content/basics/deploy/gitlab.md b/content/basics/deploy/gitlab.md deleted file mode 100644 index 081695f56..000000000 --- a/content/basics/deploy/gitlab.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Gitlab" -description: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." -summary: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 -draft: false -weight: 500 -params: - toc: true - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- -You can use [GitLab Pages](https://pages.gitlab.io/) to host a Thulite site for your [GitLab](https://about.gitlab.com/) projects, groups, or user account. - -:::tip[Looking for an example?] -Check out the [GitLab Pages Doks example project](https://gitlab.com/h-enk/doks-gitlab-pages)! -::: - -## How to deploy - -Follow the instructions below to deploy your Thulite site to GitLab pages. - -1. Create a file called `.gitlab-ci.yml` in the root of your project with the content below. This will build and deploy your site whenever you make changes to your content: - - ```yaml title=".gitlab-ci.yml" - # The Docker image that will be used to build your app - image: node:lts - # Functions that should be executed before the build script is run - before_script: - - npm ci - pages: - script: - - npm run build - artifacts: - paths: - # The folder that contains the files to be exposed at the Page URL - - public - rules: - # This ensures that only pushes to the default branch will trigger - # a pages deploy - - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH - ``` - -2. On GitLab, go to your repository's Deploy tab and find the Pages section. - -3. Copy the **Access pages** URL and paste it as `baseurl` in `./config/production/hugo.toml`. - -4. Set `canonifyURLs = true` in `./config/production/hugo.toml`. - -5. Push the changes to GitLab. - -That's it. After a minute or so, you site is avaliable at the **Access pages** URL. diff --git a/content/basics/deploy/google-firebase.md b/content/basics/deploy/google-firebase.md deleted file mode 100644 index 43681b868..000000000 --- a/content/basics/deploy/google-firebase.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "Google Firebase" -description: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." -summary: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 -draft: false -weight: 500 -params: - toc: true - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- -[Firebase Hosting](https://firebase.google.com/products/hosting) is a service provided by Google's [Firebase](https://firebase.google.com/) app development platform, which can be used to deploy a Thulite site. - -## Prerequisites - -To follow this guide, you will need to have [firebase-tools](https://github.com/firebase/firebase-tools) installed. - -## How to deploy - -1. Create `firebase.json` at the root of your project with the following content: - - ```json title="firebase.json" - { - "hosting": { - "public": "public", - "ignore": [] - } - } - ``` - -2. Create `.firebaserc` at the root of your project with the following content: - - ```json title= ".firebaserc" - { - "projects": { - "default": "<YOUR_FIREBASE_ID>" - } - } - ``` - -3. Run your build command: - - {{< tabs "tabs-1" >}} - {{< tab "npm" >}} - ```bash - npm run build - ``` - {{< /tab >}} - {{< tab "pnpm" >}} - ```bash - pnpm run build - ``` - {{< /tab >}} - {{< tab "Yarn" >}} - ```bash - yarn run build - ``` - {{< /tab >}} - {{< /tabs >}} - -4. Deploy using the command: - - ```bash - firebase deploy - ``` diff --git a/content/basics/deploy/overview.md b/content/basics/deploy/overview.md deleted file mode 100644 index cf16f43cd..000000000 --- a/content/basics/deploy/overview.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: "Deploy Overview" -linkTitle: "Overview" -description: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." -summary: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." -date: 2026-03-24T08:10:51+01:00 -lastmod: 2026-03-24T08:10:51+01:00 -draft: false -weight: 100 -params: - toc: true - seo: - title: "" # custom title (optional) - description: "" # custom description (recommended) - canonical: "" # custom canonical URL (optional) - robots: "" # custom robot tags (optional) ---- -**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulite site. - -## Deployment Guides - -{{< card-grid >}} -{{< link-card src="svgs/simple-icons/netlify.svg" title="Netlify" href="/basics/deploy/netlify/" >}} -{{< link-card src="svgs/simple-icons/vercel.svg" title="Vercel" href="/basics/deploy/vercel/" >}} -{{< /card-grid >}} - -{{< card-grid >}} -{{< link-card src="svgs/simple-icons/github.svg" title="GitHub Pages" href="/basics/deploy/github/" >}} -{{< link-card src="svgs/simple-icons/gitlab.svg" title="GitLab Pages" href="/basics/deploy/gitlab/" >}} -{{< /card-grid >}} - -{{< card-grid >}} -{{< link-card src="svgs/simple-icons/cloudflarepages.svg" title="Cloudflare Pages" href="/basics/deploy/cloudflare/" >}} -{{< link-card src="svgs/simple-icons/render.svg" title="Render" href="/basics/deploy/render/" >}} -{{< /card-grid >}} - -{{< card-grid >}} -{{< link-card src="svgs/simple-iconsfirebase.svg" title="Google Firebase" href="/basics/deploy/google-firebase/" >}} -{{< link-card src="svgs/microsoft.svg" title="Microsoft Azure" href="/basics/deploy/microsoft-azure/" >}} -{{< /card-grid >}} - -## Quick Deploy Options - -You can build and deploy a Thulite site to a number of hosts quickly using either their website's dashboard UI or a CLI. - -### Website UI - -A quick way to deploy your website is to connect your Thulite project's online Git repository (e.g. GitHub, GitLab, Bitbucket) to a host provider and take advantage of continuous deployment using Git. - -These host platforms automatically detect pushes to your Thulite project's source repository, build your site and deploy it to the web at a custom URL or your personal domain. Often, setting up a deployment on these platforms will follow steps something like the following: - -1. Add your repository to an online Git provider (e.g. in GitHub, GitLab, Bitbucket) - -2. Choose a host that supports **continuous deployment** (e.g. [Netlify](/guides/deploy/netlify/) or [Vercel](/guides/deploy/vercel/)) and import your Git repository as a new site/project. - - Many common hosts will recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy your site as shown below. (If not, these settings can be changed.) - - :::note[Deploy settings] - - **Build Command:** `npm run build` - - **Publish directory:** `public` - ::: - -3. Click "Deploy" and your new website will be created at a unique URL for that host (e.g. `new-thulite-site.netlify.app`). - -The host will be automatically configured to watch your Git provider's main branch for changes, and to rebuild and republish your site at each new commit. These settings can typically be configured in your host provider's dashboard UI. - -### CLI Deployment - -Some hosts will have their own command line interface (CLI) you can install globally to your machine using npm. Often, using a CLI to deploy looks something like the following: - -1. Install your host's CLI globally, for example: - - {{< tabs "tabs-1" >}} - {{< tab "npm" >}} - ```bash - npm install --global netlify-cli - ``` - {{< /tab >}} - {{< tab "pnpm" >}} - ```bash - pnpm add --global netlify-cli - ``` - {{< /tab >}} - {{< tab "Yarn" >}} - ```bash - yarn global add netlify-cli - ``` - {{< /tab >}} - {{< /tabs >}} - -2. Run the CLI and follow any instructions for authorization, setup etc. - -3. Build your site and deploy to your host - - Many common hosts will build and deploy your site for you. They will usually recognize your project as a Thulite site, and should choose the appropriate configuration settings to build and deploy as shown below. (If not, these settings can be changed.) - - :::note[Deploy settings] - - **Build Command:** `npm run build` - - **Publish directory:** `public` - ::: - - - Other hosts will require you to [build your site locally](#building-your-site-locally) and deploy using the command line. - -## Building Your Site Locally - -Many hosts like Netlify and Vercel will build your site for you and then publish that build output to the web. But, some sites will require you to build locally and then run a deploy command or upload your build output. - -You may also wish to build locally to [preview your site](#previewing-your-site-locally), or to catch any potential errors and warnings in your own environment. - -Run the command `npm run build` to build your Thulite site. - -{{< tabs "tabs-1" >}} - {{< tab "npm" >}} -```bash -npm run build -``` - {{< /tab >}} - {{< tab "pnpm" >}} -```bash -pnpm run build -``` - {{< /tab >}} - {{< tab "Yarn" >}} -```bash -yarn run build -``` - {{< /tab >}} -{{< /tabs >}} - -By default, the build output will be placed at `public/`. This location can be changed using the [`publishDir` configuration option](https://gohugo.io/getting-started/configuration/#publishdir). - -## Previewing Your Site Locally - -Next to Hugo's built-in development server, Thulite ships with [http-server](https://github.com/http-party/http-server), a simple, zero-configuration command-line static HTTP server. - -Run the command `npm run preview` to preview your Thulite site. - -{{< tabs "tabs-1" >}} - {{< tab "npm" >}} -```bash -npm run preview -``` - {{< /tab >}} - {{< tab "pnpm" >}} -```bash -pnpm run preview -``` - {{< /tab >}} - {{< tab "Yarn" >}} -```bash -yarn run preview -``` - {{< /tab >}} -{{< /tabs >}} - -The `http-server` script is configured to run with [gzip](https://developer.mozilla.org/en-US/docs/Glossary/GZip_compression), [brotli](https://developer.mozilla.org/en-US/docs/Glossary/Brotli_compression), and [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) enabled. These settings can be changed using the [available options](https://github.com/http-party/http-server#available-options). diff --git a/content/basics/deploy/_index.md b/content/basics/deployment/_index.md similarity index 94% rename from content/basics/deploy/_index.md rename to content/basics/deployment/_index.md index 4e2eac0f3..3f54a815f 100644 --- a/content/basics/deploy/_index.md +++ b/content/basics/deployment/_index.md @@ -1,5 +1,5 @@ --- -title: "Deploy" +title: "Deployment" description: "" summary: "" date: 2026-03-24T08:10:51+01:00 diff --git a/content/basics/deployment/cloudflare-pages.md b/content/basics/deployment/cloudflare-pages.md new file mode 100644 index 000000000..0bcc4302f --- /dev/null +++ b/content/basics/deployment/cloudflare-pages.md @@ -0,0 +1,157 @@ +--- +title: "Cloudflare Pages" +description: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." +summary: "You can deploy your Thulite project on Cloudflare Pages, a JAMstack platform for frontend developers to collaborate and deploy websites." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 511 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Deploy your Thulite project on [Cloudflare Pages](https://pages.cloudflare.com/), a JAMstack platform for building and shipping frontend sites. + +## Prerequisites + +To get started, you need: + +- A Cloudflare account. If you do not already have one, you can create a free account during setup. +- Your app code pushed to a [GitHub](https://github.com/) or [GitLab](https://about.gitlab.com/) repository. + +## Deploy with Git + +{{< steps >}} +{{< step >}} +Set up a new project on Cloudflare Pages. +{{< /step >}} +{{< step >}} +Push your code to your Git repository (GitHub or GitLab). +{{< /step >}} +{{< step >}} +Log in to the Cloudflare dashboard, then select your account in Account Home > Pages. +{{< /step >}} +{{< step >}} +Select Create a new project, then choose Connect Git. +{{< /step >}} +{{< step >}} +Select the Git project you want to deploy, then click Begin setup. +{{< /step >}} +{{< step >}} +Use the following build settings: + +- Framework preset: `exit 0` +- Build command: `npm run build` +- Build output directory: `public` +{{< /step >}} +{{< step >}} +Click the Save and Deploy button. +{{< /step >}} +{{< /steps >}} + +## Deploy with Wrangler + +{{< steps >}} +{{< step >}} +Install the [Wrangler CLI](https://developers.cloudflare.com/workers/wrangler/get-started/) in your project: +{{< tabs "install-wrangler" >}} +{{< tab "npm" >}} + +```bash +npm install wrangler --save-dev +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm add wrangler --save-dev +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn add --dev wrangler +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun install wrangler --save-dev +``` + +{{< /tab >}} +{{< /tabs >}} +{{< /step >}} +{{< step >}} +Authorize Wrangler with your Cloudflare account using OAuth: + +```bash +wrangler login +``` + +{{< /step >}} +{{< step >}} +Run your build command: + +{{< tabs "run-build" >}} +{{< tab "npm" >}} + +```bash +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn run build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< step >}} +Deploy the build output directory to Cloudflare Pages: + +```bash +wrangler pages deploy public +``` + +{{< /step >}} +{{< /steps >}} + +After Wrangler uploads your assets, it provides a preview URL so you can inspect your site. You will also see the new project in the Cloudflare Pages dashboard. + +### Enable local preview with Wrangler + +Update the preview script to run `wrangler` instead of Thulite's built-in preview command: + +```json title="package.json" +"preview": "wrangler pages dev ./public" +``` + +## Troubleshooting + +If you run into errors, check whether your local `node` version (`node -v`) matches the `NODE_VERSION` environment variable in Cloudflare Pages settings. diff --git a/content/basics/deployment/github-pages.md b/content/basics/deployment/github-pages.md new file mode 100644 index 000000000..6e621c03b --- /dev/null +++ b/content/basics/deployment/github-pages.md @@ -0,0 +1,154 @@ +--- +title: "Github Pages" +description: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." +summary: "You can use GitHub Pages to host a Thulite website directly from a repository on GitHub.com." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 513 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use [GitHub Pages](https://docs.github.com/en/pages) to host a Thulite site directly from a repository on [GitHub.com](https://github.com/). + +{{< callout context="tip" icon="bulb" >}} +Looking for an example? Check out the [official GitHub Pages Doks example project](https://github.com/thuliteio/doks-gh-pages)! +{{< /callout >}} + +## How to deploy + +Deploy your Thulite site to GitHub Pages with [GitHub Actions](https://github.com/features/actions), which builds and publishes your site automatically. Your source code must be hosted on GitHub. + +Follow these steps: + +{{< steps >}} +{{< step >}} + +Create `.github/workflows/deploy.yml` in your project and paste in the workflow below. + +```yaml {title="deploy.yml"} +# Sample workflow for building and deploying a Thulite site to GitHub Pages +name: Deploy Thulite site to Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +# Default to bash +defaults: + run: + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + HUGO_VERSION: 0.161.1 + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \ + && sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: sudo snap install dart-sass + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '24' + cache: 'npm' + - name: Setup Pages + id: pages + uses: actions/configure-pages@v4 + - name: Install dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Build production website + env: + # For maximum backward compatibility with Hugo modules + HUGO_ENVIRONMENT: production + HUGO_ENV: production + TZ: America/Los_Angeles + run: | + npm run build \ + -- \ + --baseURL "${{ steps.pages.outputs.base_url }}/" + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 + +``` + +{{< /step >}} +{{< step >}} + +In GitHub, open your repository's Settings and go to Pages. +{{< /step >}} +{{< step >}} + +Set Source to GitHub Actions. +{{< /step >}} +{{< step >}} + +Commit the workflow file and push to GitHub. +{{< /step >}} +{{< step >}} + +Copy the "Your site is published at" URL and set it as `baseurl` in `./config/production/hugo.toml`. +{{< /step >}} +{{< step >}} + +Push the changes and wait for the action to complete successfully (about 30 seconds). +{{< /step >}} +{{< /steps >}} + +That's it. After about a minute, your site is available at the "Your site is published at" URL. Each push to your Thulite repository triggers an automatic deployment. + +{{< callout context="tip" icon="bulb" title="Set up a custom domain" >}} +You can optionally set up a custom domain by adding the following `./public/CNAME` file to your project: + +```txt +sub.mydomain.com +``` + +This will deploy your site at your custom domain instead of `user.github.io`. Don't forget to also [configure DNS for your domain provider](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site#configuring-a-subdomain). +{{< /callout >}} diff --git a/content/basics/deployment/gitlab-pages.md b/content/basics/deployment/gitlab-pages.md new file mode 100644 index 000000000..3eef3f4c4 --- /dev/null +++ b/content/basics/deployment/gitlab-pages.md @@ -0,0 +1,66 @@ +--- +title: "Gitlab Pages" +description: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." +summary: "You can use GitLab Pages to host a Thulite site for your GitLab projects, groups, or user account." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 515 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use [GitLab Pages](https://docs.gitlab.com/user/project/pages/) to host a Thulite site for your [GitLab](https://about.gitlab.com/) projects, groups, or user account. + +{{< callout context="tip" icon="bulb" >}} +Looking for an example? Check out the [GitLab Pages Doks example project](https://gitlab.com/h-enk/doks-gitlab-pages)! +{{< /callout >}} + +## How to deploy + +Follow these steps to deploy your Thulite site to GitLab Pages. + +{{< steps >}} +{{< step >}} + +Create `.gitlab-ci.yml` in the root of your project with the content below. This pipeline builds and deploys your site when you push changes: + +```yaml {title=".gitlab-ci.yml"} +# The Docker image that will be used to build your app +image: node:lts +# Functions that should be executed before the build script is run +before_script: + - npm ci +pages: + script: + - npm run build + artifacts: + paths: + # The folder that contains the files to be exposed at the Page URL + - public + rules: + # This ensures that only pushes to the default branch will trigger + # a pages deploy + - if: $CI_COMMIT_REF_NAME == $CI_DEFAULT_BRANCH +``` + +{{< /step >}} +{{< step >}} + +In GitLab, open your repository's Deploy tab and go to Pages. +{{< /step >}} +{{< step >}} + +Copy the Access pages URL and set it as `baseurl` in `./config/production/hugo.toml`. +{{< /step >}} +{{< step >}} + +Push the changes to GitLab. +{{< /step >}} +{{< /steps >}} + +That's it. After about a minute, your site is available at the Access pages URL. diff --git a/content/basics/deployment/google-firebase.md b/content/basics/deployment/google-firebase.md new file mode 100644 index 000000000..0df7ac27b --- /dev/null +++ b/content/basics/deployment/google-firebase.md @@ -0,0 +1,97 @@ +--- +title: "Google Firebase" +description: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." +summary: "Firebase Hosting is a service provided by Google's Firebase app development platform, which can be used to deploy a Thulite site." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 517 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Use [Firebase Hosting](https://firebase.google.com/products/hosting), part of [Firebase](https://firebase.google.com/), to deploy a Thulite site. + +## Prerequisites + +To follow this guide, install [firebase-tools](https://github.com/firebase/firebase-tools). + +## How to deploy + +{{< steps >}} +{{< step >}} + +Create `firebase.json` at the root of your project with the following content: + +```json {title="firebase.json"} +{ + "hosting": { + "public": "public", + "ignore": [] + } +} +``` + +{{< /step >}} +{{< step >}} + +Create `.firebaserc` at the root of your project with the following content: + +```json {title= ".firebaserc"} +{ + "projects": { + "default": "<YOUR_FIREBASE_ID>" + } +} +``` + +{{< /step >}} +{{< step >}} +Run your build command: + +{{< tabs "run-build" >}} +{{< tab "npm" >}} + +```bash +npm run build +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + +```bash +pnpm run build +``` + +{{< /tab >}} +{{< tab "Yarn" >}} + +```bash +yarn run build +``` + +{{< /tab >}} +{{< tab "bun" >}} + +```bash +bun run build +``` + +{{< /tab >}} +{{< /tabs >}} + +{{< /step >}} +{{< step >}} + +Deploy your site: + +```bash +firebase deploy +``` + +{{< /step >}} +{{< /steps >}} diff --git a/content/basics/deploy/microsoft-azure.md b/content/basics/deployment/microsoft-azure.md similarity index 55% rename from content/basics/deploy/microsoft-azure.md rename to content/basics/deployment/microsoft-azure.md index 58b6abc2d..b8acd83af 100644 --- a/content/basics/deploy/microsoft-azure.md +++ b/content/basics/deployment/microsoft-azure.md @@ -5,7 +5,7 @@ summary: "Azure is a cloud platform from Microsoft. You can deploy your Thulite date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 519 params: toc: true seo: @@ -14,51 +14,59 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -[Azure](https://azure.microsoft.com/) is a cloud platform from Microsoft. You can deploy your Thulite site with Microsoft Azure's [Static Web Apps](https://aka.ms/staticwebapps) service. +Use [Azure](https://azure.microsoft.com/en-us) and its [Static Web Apps](https://azure.microsoft.com/en-us/products/app-service/static/) service to deploy your Thulite site. -:::tip[Looking for an example?] -Check out the [official Microsoft Azure Doks example project](https://github.com/thuliteio/doks-microsoft-azure)! -::: +{{< callout context="tip" icon="bulb" >}} +Looking for an example? Check out the [official Microsoft Azure Doks example project](https://github.com/thuliteio/doks-microsoft-azure)! +{{< /callout >}} -This guide takes you through deploying your Thulite site stored in GitHub using Visual Studio Code. Please see Microsoft guides for using an [Azure Pipelines Task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/azure-static-web-app-v0?view=azure-pipelines) for other setups. +This guide shows how to deploy a Thulite site hosted on GitHub using Visual Studio Code. For other setups, see Microsoft's guide for the [Azure Pipelines Task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/azure-static-web-app-v0?view=azure-pipelines). ## Prerequisites -To follow this guide, you will need: +To follow this guide, you need: -- An Azure account and a subscription key. You can create a [free Azure account here](https://azure.microsoft.com/free). +- An Azure account and subscription key. You can create a [free Azure account here](https://azure.microsoft.com/free). - Your app code pushed to [GitHub](https://github.com/). - The [SWA Extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurestaticwebapps) in [Visual Studio Code](https://code.visualstudio.com/). ## How to deploy -1. Open your project in VS Code. +{{< steps >}} +{{< step >}} +Open your project in VS Code. +{{< /step >}} +{{< step >}} +Open the Static Web Apps extension, sign in to Azure, and click + to create a new Static Web App. You will be prompted to choose a subscription key. +{{< /step >}} +{{< step >}} +Follow the wizard to name your app, choose a framework preset, and set the app root (usually `/`) and build output location (use `/public`). Because Thulite is not in Azure's built-in templates, select `custom`. The wizard then creates a [GitHub Action](https://github.com/features/actions) in your repo's `.github` folder (created automatically if needed). -2. Open the Static Web Apps extension, sign in to Azure, and click the **+** button to create a new Static Web App. You will be prompted to designate which subscription key to use. - -3. Follow the wizard started by the extension to give your app a name, choose a framework preset, and designate the app root (usually `/`) and built file location (use `/public`). Thulite is not listed in the built-in templates in Azure so you will need to select `custom`. The wizard will run and will create a [GitHub Action](https://github.com/features/actions) in the `.github` folder of your repo. (This folder will be automatically created if it does not already exist.) - -The GitHub Action will deploy your app (you can see its progress in your repo's Actions tab on GitHub). When successfully completed, you can view your app at the address shown in the SWA Extension's progress window by clicking the **Browse Website** button (this will appear after the GitHub Action has run). +The GitHub Action deploys your app. You can track progress in your repository's Actions tab on GitHub. When it completes successfully, click Browse Website in the SWA extension progress window to open the deployed site. +{{< /step >}} +{{< /steps >}} ## Known Issues -The build fails because an old (no longer supported) Node version and/or Hugo version is used. +Builds can fail if your Node or Hugo version is outdated. ### Node version -To resolve this, update your projects `package.json` file with this snippet: +To resolve this, update your project's `package.json` with this snippet: -```json +```json {title="package.json"} +{ "engines": { - "node": ">=20.11.0" + "node": ">=24.13.0" }, +} ``` ### Hugo version To resolve this, update your workflow file by providing a value for `HUGO_VERSION` in the `env` section: -```yaml +```yaml {title="workflow.yml"} jobs: build_and_deploy_job: if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.event.action != 'closed') @@ -83,11 +91,11 @@ jobs: output_location: "public" # Built app content directory - optional ###### End of Repository/Build Configurations ###### env: - HUGO_VERSION: 0.131.0 + HUGO_VERSION: 0.161.1 ``` -## Official Resources +## Resources - [Deploy a Hugo site to Azure Static Web Apps](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo) - [Custom Hugo version](https://learn.microsoft.com/en-us/azure/static-web-apps/publish-hugo#custom-hugo-version) diff --git a/content/basics/deploy/netlify.md b/content/basics/deployment/netlify.md similarity index 99% rename from content/basics/deploy/netlify.md rename to content/basics/deployment/netlify.md index 0290b5d68..30e305b24 100644 --- a/content/basics/deploy/netlify.md +++ b/content/basics/deployment/netlify.md @@ -5,7 +5,7 @@ summary: "Netlify offers hosting and serverless backend services for web applica date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 521 params: toc: true seo: diff --git a/content/basics/deployment/overview.md b/content/basics/deployment/overview.md new file mode 100644 index 000000000..316a3765b --- /dev/null +++ b/content/basics/deployment/overview.md @@ -0,0 +1,41 @@ +--- +title: "Deployment Overview" +linkTitle: "Overview" +description: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." +summary: "**Ready to build and deploy your Thulite site?** Follow one of our guides to different deployment services or scroll down for general guidance about deploying a Thulit..." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 510 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +. + +## Deployment Guides + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/cloudflarepages.svg" title="Cloudflare Pages" href="/basics/deployment/cloudflare-pages/" >}} +{{< link-card src="svgs/simple-icons/github.svg" title="GitHub Pages" href="/basics/deployment/github-pages/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/gitlab.svg" title="GitLab Pages" href="/basics/deployment/gitlab-pages/" >}} +{{< link-card src="svgs/simple-iconsfirebase.svg" title="Google Firebase" href="/basics/deployment/google-firebase/" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/microsoft.svg" title="Microsoft Azure" href="/basics/deployment/microsoft-azure/" >}} +{{< link-card src="svgs/simple-icons/netlify.svg" title="Netlify" href="/basics/deployment/netlify/" >}} +{{< /card-grid >}} + +{{< card-grid >}} + +{{< link-card src="svgs/simple-icons/render.svg" title="Render" href="/basics/deployment/render/" >}} +{{< link-card src="svgs/simple-icons/vercel.svg" title="Vercel" href="/basics/deployment/vercel/" >}} +{{< /card-grid >}} diff --git a/content/basics/deploy/render.md b/content/basics/deployment/render.md similarity index 99% rename from content/basics/deploy/render.md rename to content/basics/deployment/render.md index 10cb14284..efab17b69 100644 --- a/content/basics/deploy/render.md +++ b/content/basics/deployment/render.md @@ -5,7 +5,7 @@ summary: "You can deploy your Thulite project to Render, a service to build webs date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 523 params: toc: true seo: diff --git a/content/basics/deploy/vercel.md b/content/basics/deployment/vercel.md similarity index 99% rename from content/basics/deploy/vercel.md rename to content/basics/deployment/vercel.md index 4f9733070..2edd3793e 100644 --- a/content/basics/deploy/vercel.md +++ b/content/basics/deployment/vercel.md @@ -5,7 +5,7 @@ summary: "You can use Vercel to deploy a Thulite site to their global edge netwo date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 525 params: toc: true seo: diff --git a/content/basics/integrations/bolt-core.md b/content/basics/integrations/bolt-core.md index d2a8d9b79..4f5974cbe 100644 --- a/content/basics/integrations/bolt-core.md +++ b/content/basics/integrations/bolt-core.md @@ -1,11 +1,11 @@ --- -title: "Bolt Core" -description: "Core integration for the Bolt theme." -summary: "Core integration for the Bolt theme." +title: "Bolt core" +description: "Foundational integration for the Bolt theme." +summary: "Foundational integration for the Bolt theme." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 411 params: toc: true seo: @@ -14,6 +14,8 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -Core integration for the Bolt theme. +Bolt core is the foundational integration for the [Bolt theme](/basics/templates/bolt/), enabling smooth operation and advanced customizations within Thulite. -[..] +## Links + +- [View repository](https://github.com/thuliteio/bolt-core) diff --git a/content/basics/integrations/bootstrap.md b/content/basics/integrations/bootstrap.md index 35b5dd1bd..76a21838f 100644 --- a/content/basics/integrations/bootstrap.md +++ b/content/basics/integrations/bootstrap.md @@ -1,11 +1,11 @@ --- title: "Bootstrap" -description: "Bootstrap integration for Thulite." -summary: "Bootstrap integration for Thulite." +description: "Bootstrap framework integration for Thulite." +summary: "Bootstrap framework integration for Thulite." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 413 params: toc: true seo: @@ -14,49 +14,8 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -Bootstrap integration for Thulite. +Bootstrap is the official [Bootstrap](https://getbootstrap.com/) integration for Thulite, enabling rapid, responsive UI development with Bootstrap components. -## Status +## Links -[![npm (scoped)](https://img.shields.io/npm/v/@thulite/bootstrap?style=flat-square)](https://www.npmjs.com/package/@thulite/bootstrap) - -## Installation - -```bash -npm i -D @thulite/bootstrap -``` - -## Setup - -Add mounts to `./config/_default/module.toml`: - -```toml -[[mounts]] - source = "node_modules/@thulite/bootstrap/assets" - target = "assets" - -[[mounts]] - source = "node_modules/@thulite/bootstrap/layouts" - target = "layouts" - -[[mounts]] - source = "assets" - target = "assets" - -[[mounts]] - source = "layouts" - target = "layouts" -``` - -## How to use - -[..] - -## Credits - -This npm package is based on the Bootstrap examples: - -- [Bootstrap Color Modes](https://github.com/twbs/examples/tree/main/color-modes) -- [Bootstrap w/ Vite](https://github.com/twbs/examples/tree/main/vite) - -{{< link-card title="Add integrations" href="/guides/integrations/" >}} +- [View repository](https://github.com/thuliteio/bootstrap) diff --git a/content/basics/integrations/core.md b/content/basics/integrations/core.md index e6c5f3028..29dff3f41 100644 --- a/content/basics/integrations/core.md +++ b/content/basics/integrations/core.md @@ -1,11 +1,11 @@ --- -title: "Thulite core" -description: "Official core integration for Thulite." -summary: "Official core integration for Thulite." +title: "Core" +description: "Foundational integration providing essential Thulite services." +summary: "Foundational integration providing essential Thulite services." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 415 params: toc: true seo: @@ -14,88 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -# Thulite core +Core is the foundational integration for Thulite, providing essential services and enabling seamless interoperability across the ecosystem. -Official core integration for Thulite. +## Links -## Official Resources - -- [GitHub Repository](https://github.com/thuliteio/core) - -## Installation - -```bash -npm i @thulite/core -``` - -## Setup - -Add mounts to `./config/_default/module.toml`: - -```toml -[[mounts]] - source = "node_modules/@thulite/core/assets" - target = "assets" - -[[mounts]] - source = "node_modules/@thulite/core/layouts" - target = "layouts" - -[[mounts]] - source = "assets" - target = "assets" - -[[mounts]] - source = "layouts" - target = "layouts" -``` - -Add to `./config/_default/hugo.toml`: - -```toml -baseurl = "http://localhost/" -canonifyURLs = false -disableAliases = true -disableHugoGeneratorInject = true -disableKinds = ["taxonomy", "term"] -enableEmoji = true -enableGitInfo = false -enableRobotsTXT = true -languageCode = "en-US" -paginate = 7 -rssLimit = 10 - -[outputs] - home = ["HTML"] - -[caches] - [caches.getjson] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.getcsv] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.images] - dir = ":cacheDir/images" - maxAge = "1440h" - [caches.assets] - dir = ":cacheDir/:project" - maxAge = -1 - [caches.getresource] - dir = ":cacheDir/:project" - maxage = '1h' - -[sitemap] - changefreq = "monthly" - filename = "sitemap.xml" - priority = 0.5 - -[minify.tdewolff.html] - keepWhitespace = false -``` - -## Credits - -This npm package is based on: - -- [Really getting started with Hugo](https://www.brycewray.com/posts/2022/07/really-getting-started-hugo/) +- [View repository](https://github.com/thuliteio/core) +- [View documentation](https://docs.thulite.io/) diff --git a/content/basics/integrations/doks-core.md b/content/basics/integrations/doks-core.md index 0a0b0f2c8..418297a3d 100644 --- a/content/basics/integrations/doks-core.md +++ b/content/basics/integrations/doks-core.md @@ -1,11 +1,11 @@ --- -title: "Doks Core" -description: "Core integration for the Doks theme." -summary: "Core integration for the Doks theme." +title: "Doks core" +description: "Foundational integration for the Doks theme." +summary: "Foundational integration for the Doks theme." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 417 params: toc: true seo: @@ -14,6 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -Core integration for the Doks theme. +Doks core is the foundational integration for the [Doks theme](/basics/templates/doks/), enabling efficient documentation experiences and robust theme support. -[..] +## Links + +- [View repository](https://github.com/thuliteio/doks-core) +- [View documentation](https://getdoks.org/) diff --git a/content/basics/integrations/images.md b/content/basics/integrations/images.md index c2636d607..a6d156850 100644 --- a/content/basics/integrations/images.md +++ b/content/basics/integrations/images.md @@ -1,11 +1,11 @@ --- title: "Images" -description: "Images is the official Images integration for the Thulite framework." -summary: "Images is the official Images integration for the Thulite framework." +description: "Official image optimization integration for Thulite." +summary: "Official image optimization integration for Thulite." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 419 params: toc: true seo: @@ -14,10 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -[Images](https://images.thulite.io/) is the official Images integration for the Thulite framework. +Images is the official image optimization integration for Thulite, streamlining asset management and enabling responsive image delivery. -## Official Resources +## Links - -- [Getting Started](https://images.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/images) +- [View repository](https://github.com/thuliteio/images) +- [View documentation](https://images.thulite.io/) diff --git a/content/basics/integrations/inline-svg.md b/content/basics/integrations/inline-svg.md index c890d1fad..8dc10bdf6 100644 --- a/content/basics/integrations/inline-svg.md +++ b/content/basics/integrations/inline-svg.md @@ -1,11 +1,11 @@ --- title: "Inline SVG" -description: "Inline SVG is the official Inline SVG integration for the Thulite framework." -summary: "Inline SVG is the official Inline SVG integration for the Thulite framework." +description: "Official inline SVG integration for Thulite." +summary: "Official inline SVG integration for Thulite." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 421 params: toc: true seo: @@ -14,10 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -[Inline SVG](https://svg.thulite.io/) is the official Inline SVG integration for the Thulite framework. +Inline SVG is the official SVG integration for Thulite, enabling embedded SVG graphics with dynamic and interactive support. -## Official Resources +## Links - -- [Getting Started](https://svg.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/inline-svg) +- [View repository](https://github.com/thuliteio/inline-svg) +- [View documentation](https://svg.thulite.io/) diff --git a/content/basics/integrations/overview.md b/content/basics/integrations/overview.md index 3b7a0e4c5..0cd3e338a 100644 --- a/content/basics/integrations/overview.md +++ b/content/basics/integrations/overview.md @@ -1,141 +1,41 @@ --- title: "Integrations Overview" linkTitle: "Overview" -description: "**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integra..." -summary: "**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integra..." +description: "Official Thulite integrations extend functionality for styling, optimization, and metadata management." +summary: "Official Thulite integrations extend functionality for styling, optimization, and metadata management." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 499 +weight: 410 toc: true params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -**Thulite integrations** add new functionality and behaviors for your project. You can write a custom integration yourself, use an official integration, or use integrations built by the community. - -Integrations can… - -- Unlock Tailwind CSS, Bootstrap, and other popular CSS frameworks. -- Add new features to your project, like Images and SEO. -- Integrate themes like Doks or Bolt. +Thulite integrations add new functionality and behaviors to your projects. Use official integrations to extend styling frameworks, optimize assets, and manage metadata—or build custom integrations for specialized needs. ## Official Integrations -The following integrations are maintained by Thulite. - {{< card-grid >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/bolt-core" href="/guides/integrations/core/" >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/bootstrap" href="/guides/integrations/doks-core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/bolt-core" description="Foundational integration for the Bolt theme." href="/basics/integrations/bolt-core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/bootstrap" description="Bootstrap framework integration and components." href="/basics/integrations/bootstrap/" >}} {{< /card-grid >}} {{< card-grid >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/core" href="/guides/integrations/core/" >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/doks-core" href="/guides/integrations/doks-core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/core" description="Foundational services and interoperability." href="/basics/integrations/core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/doks-core" description="Foundational integration for the Doks theme." href="/basics/integrations/doks-core/" >}} {{< /card-grid >}} {{< card-grid >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/images" href="/guides/integrations/doks-core/" >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/inline-svg" href="/guides/integrations/doks-core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/images" description="Image optimization and responsive delivery." href="/basics/integrations/images/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/inline-svg" description="Embedded SVG graphics with dynamic support." href="/basics/integrations/inline-svg/" >}} {{< /card-grid >}} {{< card-grid >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/seo" href="/guides/integrations/core/" >}} -{{< link-card src="svgs/thulite.svg" title="@thulite/tailwindcss" href="/guides/integrations/core/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/seo" description="Metadata management and search optimization." href="/basics/integrations/seo/" >}} + {{< link-card src="svgs/thulite.svg" title="@thulite/tailwindcss" description="Tailwind CSS utility-first styling framework." href="/basics/integrations/tailwindcss/" >}} {{< /card-grid >}} - -## Setting up an Integration - -### Adding an Integration - -Add an integration to your site by running the following command in your project's root directory: - -{{< tabs "tabs-1" >}} - {{< tab "npm" >}} -```bash - # Example: add Images - npm install @thulite/images@latest -``` - {{< /tab >}} - {{< tab "pnpm" >}} -```bash - # Example: add Images - pnpm add @thulite/images@latest -``` - {{< /tab >}} - {{< tab "Yarn" >}} -```bash - # Example: add Images - yarn add @thulite/images@latest -``` - {{< /tab >}} -{{< /tabs >}} - -### Configuring an Integration - -You'll most likely have to update the mounts configuration, add parameters, add some CSS/JavaScript, and update the PostCSS settings. - -## Upgrading an Integration - -To upgrade an integration, use the appropriate command for your package manager. - -{{< tabs "tabs-1" >}} - {{< tab "npm" >}} -```bash - # Example: upgrade Images - npm install @thulite/images@latest -``` - {{< /tab >}} - {{< tab "pnpm" >}} -```bash - # Example: upgrade Images - pnpm add @thulite/images@latest -``` - {{< /tab >}} - {{< tab "Yarn" >}} -```bash - # Example: upgrade Images - yarn add @thulite/images@latest -``` - {{< /tab >}} -{{< /tabs >}} - -## Removing an Integration - -To remove an integration, uninstall the integration from your project. - -{{< tabs "tabs-1" >}} - {{< tab "npm" >}} -```bash - # Example: remove Images - npm uninstall @thulite/images -``` - {{< /tab >}} - {{< tab "pnpm" >}} -```bash - # Example: remove Images - pnpm uninstall @thulite/images -``` - {{< /tab >}} - {{< tab "Yarn" >}} -```bash - # Example: remove Images - yarn remove @thulite/images -``` - {{< /tab >}} -{{< /tabs >}} - -Optionally, remove the configuration settings. - -## Finding More Integrations - -You can find integrations developed by the community in the [Thulite Integrations Directory](https://thulite.io/integrations/). Follow links there for detailed usage and configuration instructions. - -## Building Your Own Integration - -Thulite' Integrations are inspired by npm and Hugo, and designed to feel familiar to anyone who has written an npm package or Hugo Module before. - -Check out the [Build a Thulite Integration](/guides/integrations/) guide to learn what integrations can do and how to write one yourself. diff --git a/content/basics/integrations/seo.md b/content/basics/integrations/seo.md index b507f1618..b0f52157e 100644 --- a/content/basics/integrations/seo.md +++ b/content/basics/integrations/seo.md @@ -1,11 +1,11 @@ --- title: "SEO" -description: "SEO is the official SEO integration for the Thulite framework." -summary: "SEO is the official SEO integration for the Thulite framework." +description: "Official SEO integration for Thulite." +summary: "Official SEO integration for Thulite." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 500 +weight: 423 params: toc: true seo: @@ -14,10 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -[SEO](https://seo.thulite.io/) is the official SEO integration for the Thulite framework. +SEO is the official SEO integration for Thulite, simplifying metadata management for improved search visibility and content discoverability. -## Official Resources +## Links - -- [Getting Started](https://seo.thulite.io/docs/start-here/getting-started/) -- [GitHub repository](https://github.com/thuliteio/seo) +- [View repository](https://github.com/thuliteio/seo) +- [View documentation](https://seo.thulite.io/) diff --git a/content/basics/integrations/tailwindcss.md b/content/basics/integrations/tailwindcss.md new file mode 100644 index 000000000..5ac8461e9 --- /dev/null +++ b/content/basics/integrations/tailwindcss.md @@ -0,0 +1,21 @@ +--- +title: "Tailwind CSS" +description: "Tailwind CSS framework integration for Thulite." +summary: "Tailwind CSS framework integration for Thulite." +date: 2026-03-24T08:10:51+01:00 +lastmod: 2026-03-24T08:10:51+01:00 +draft: false +weight: 425 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Tailwind CSS is the official [Tailwind CSS](https://tailwindcss.com/) integration for Thulite, enabling utility-first styling for rapid, responsive UI development. + +## Links + +- [View repository](https://github.com/thuliteio/tailwindcss) diff --git a/content/basics/partials.md b/content/basics/partials.md index 5504559fd..75c448deb 100644 --- a/content/basics/partials.md +++ b/content/basics/partials.md @@ -7,6 +7,7 @@ lastmod: 2026-05-15T16:27:22+02:00 draft: false weight: 230 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/basics/shortcodes.md b/content/basics/shortcodes.md index c32a816d2..0dd080b7f 100644 --- a/content/basics/shortcodes.md +++ b/content/basics/shortcodes.md @@ -7,6 +7,7 @@ lastmod: 2026-05-15T16:27:08+02:00 draft: false weight: 215 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/basics/templates/basic.md b/content/basics/templates/basic.md new file mode 100644 index 000000000..d38a8cbf1 --- /dev/null +++ b/content/basics/templates/basic.md @@ -0,0 +1,22 @@ +--- +title: "Basic" +description: "Minimal Thulite starter for simple sites and quick customization." +summary: "Minimal Thulite starter for simple sites and quick customization." +date: 2026-05-18T15:01:27+02:00 +lastmod: 2026-05-18T15:01:27+02:00 +draft: false +weight: 315 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Basic is a minimal Thulite starter built for simplicity and speed. It gives you a clean foundation for straightforward sites and quick customization. + +## Links + +- [View repository](https://github.com/thuliteio/basic-starter) +- [View demo](https://basic-rec.thulite.io/) diff --git a/content/basics/templates/bolt.md b/content/basics/templates/bolt.md index c8c9c76b6..2fc19ba8e 100644 --- a/content/basics/templates/bolt.md +++ b/content/basics/templates/bolt.md @@ -1,11 +1,11 @@ --- title: "Bolt" -description: "Bolt" -summary: "Bolt" +description: "Lightweight Thulite blog theme focused on readability and performance." +summary: "Lightweight Thulite blog theme focused on readability and performance." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 330 +weight: 320 params: toc: true seo: @@ -14,4 +14,9 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- +Bolt is a minimal, elegant blog theme for Thulite built for fast, distraction-free reading. Its lightweight footprint and clean HTML styling make it a strong fit for writers who value simplicity and performance. It also includes dark/light mode, tag support, reading time estimates, and related posts. +## Links + +- [View repository](https://github.com/thuliteio/bolt) +- [View demo](https://bolt.thulite.io/) diff --git a/content/basics/templates/bootstrap.md b/content/basics/templates/bootstrap.md new file mode 100644 index 000000000..534074432 --- /dev/null +++ b/content/basics/templates/bootstrap.md @@ -0,0 +1,22 @@ +--- +title: "Bootstrap" +description: "Bootstrap-based Thulite starter with responsive components and preconfigured styles." +summary: "Bootstrap-based Thulite starter with responsive components and preconfigured styles." +date: 2026-05-18T15:01:40+02:00 +lastmod: 2026-05-18T15:01:40+02:00 +draft: false +weight: 325 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Bootstrap is a Thulite starter built on [Bootstrap](https://getbootstrap.com/) for responsive, component-based development. It includes preconfigured styles and components so you can ship polished pages faster. + +## Links + +- [View repository](https://github.com/thuliteio/bootstrap-starter) +- [View demo](https://bootstrap-rec.thulite.io/) diff --git a/content/basics/templates/doks.md b/content/basics/templates/doks.md index 0a7a2b674..e67ffab67 100644 --- a/content/basics/templates/doks.md +++ b/content/basics/templates/doks.md @@ -1,11 +1,11 @@ --- title: "Doks" -description: "Doks" -summary: "Doks" +description: "Modern Thulite documentation theme with search, i18n, and versioning support." +summary: "Modern Thulite documentation theme with search, i18n, and versioning support." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false -weight: 320 +weight: 330 params: toc: true seo: @@ -14,4 +14,10 @@ params: canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- +Doks is a modern documentation theme for Thulite built for clarity, speed, and ease of use. Its clean layout and strong readability make it ideal for technical docs, knowledge bases, and project wikis. It includes configurable search, code highlighting, and built-in support for internationalization and versioning. +## Links + +- [View repository](https://github.com/thuliteio/doks) +- [View demo](https://doks.thulite.io/) +- [View documentation](https://getdoks.org/) diff --git a/content/basics/templates/overview.md b/content/basics/templates/overview.md index 824705882..c63704e94 100644 --- a/content/basics/templates/overview.md +++ b/content/basics/templates/overview.md @@ -1,26 +1,35 @@ --- title: "Templates Overview" linkTitle: "Overview" -description: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." -summary: "Guides lead a user through a specific task they want to accomplish, often with a sequence of steps." +description: "Compare official Thulite templates and choose the right starting point for your site." +summary: "Compare official Thulite templates and choose the right starting point for your site." date: 2026-03-24T08:10:51+01:00 lastmod: 2026-03-24T08:10:51+01:00 draft: false weight: 310 toc: true params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) canonical: "" # custom canonical URL (optional) robots: "" # custom robot tags (optional) --- -Guides lead a user through a specific task they want to accomplish, often with a sequence of steps. -Writing a good guide requires thinking about what your users are trying to do. +Thulite provides official starter templates and themes for common use cases like blogs, docs, and framework-based projects. Start with the option that best matches your content and styling workflow. -## Official Themes +## Official Templates {{< card-grid >}} -{{< link-card title="Doks Theme" description="Use the Doks theme" href="/guides/themes/doks/" >}} -{{< link-card title="Bolt Theme" description="Use the Bolt theme" href="/guides/themes/bolt/" >}} + {{< link-card src="svgs/thulite.svg" title="Basic starter" description="Minimal starter for simple sites and fast customization." href="/basics/templates/basic/" >}} + {{< link-card src="svgs/thulite.svg" title="Bolt theme" description="Clean blog theme focused on readability and performance." href="/basics/templates/bolt/" >}} +{{< /card-grid >}} + +{{< card-grid >}} + {{< link-card src="svgs/thulite.svg" title="Bootstrap starter" description="Starter built around Bootstrap with responsive defaults." href="/basics/templates/bootstrap/" >}} + {{< link-card src="svgs/thulite.svg" title="Doks theme" description="Modern docs theme with search, i18n, and versioning support." href="/basics/templates/doks/" >}} +{{< /card-grid >}} + +{{< card-grid >}} + {{< link-card src="svgs/thulite.svg" title="Tailwind CSS starter" description="Utility-first starter powered by Tailwind CSS." href="/basics/templates/tailwind-css/" class="w-50" >}} {{< /card-grid >}} diff --git a/content/basics/templates/tailwind-css.md b/content/basics/templates/tailwind-css.md new file mode 100644 index 000000000..0e9f1413d --- /dev/null +++ b/content/basics/templates/tailwind-css.md @@ -0,0 +1,22 @@ +--- +title: "Tailwind CSS" +description: "Tailwind CSS Thulite starter for utility-first styling and rapid iteration." +summary: "Tailwind CSS Thulite starter for utility-first styling and rapid iteration." +date: 2026-05-18T15:01:54+02:00 +lastmod: 2026-05-18T15:01:54+02:00 +draft: false +weight: 335 +params: + toc: true + seo: + title: "" # custom title (optional) + description: "" # custom description (recommended) + canonical: "" # custom canonical URL (optional) + robots: "" # custom robot tags (optional) +--- +Tailwind CSS is a Thulite starter built for utility-first styling and rapid iteration. It provides a streamlined setup for customizing layout and design with [Tailwind CSS](https://tailwindcss.com/). + +## Links + +- [View repository](https://github.com/thuliteio/tailwindcss-starter) +- [View demo](https://tailwindcss-rec.thulite.io/) diff --git a/content/reference/_index.md b/content/reference/_index.md index 7c89b4c52..ce50f17f5 100644 --- a/content/reference/_index.md +++ b/content/reference/_index.md @@ -7,6 +7,7 @@ lastmod: 2026-03-25T10:59:04+01:00 draft: false weight: 400 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/reference/configuration/parameters.md b/content/reference/configuration/parameters.md index f81c9bc3d..b6e987406 100644 --- a/content/reference/configuration/parameters.md +++ b/content/reference/configuration/parameters.md @@ -7,6 +7,7 @@ lastmod: 2026-05-11T11:14:33+02:00 draft: false weight: 425 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/reference/configuration/settings.md b/content/reference/configuration/settings.md index d5ee0c1d9..e77f82764 100644 --- a/content/reference/configuration/settings.md +++ b/content/reference/configuration/settings.md @@ -7,6 +7,7 @@ lastmod: 2026-05-11T11:14:27+02:00 draft: false weight: 423 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/start-here/_index.md b/content/start-here/_index.md index ddb6be34c..30d071c6b 100644 --- a/content/start-here/_index.md +++ b/content/start-here/_index.md @@ -7,6 +7,7 @@ lastmod: 2026-03-25T10:58:25+01:00 draft: false weight: 100 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/content/start-here/concepts/_index.md b/content/start-here/concepts/_index.md index 970f64ead..bdef73111 100644 --- a/content/start-here/concepts/_index.md +++ b/content/start-here/concepts/_index.md @@ -7,6 +7,7 @@ lastmod: 2026-03-25T10:58:56+01:00 draft: false weight: 150 params: + toc: true seo: title: "" # custom title (optional) description: "" # custom description (recommended) diff --git a/hugo_stats.json b/hugo_stats.json index 51d356ded..fdb63bfb7 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -121,7 +121,6 @@ "col", "col-13", "col-lg-10", - "col-lg-11", "col-lg-12", "col-lg-16", "col-lg-5", @@ -224,7 +223,6 @@ "list-unstyled", "list-view", "m-2", - "markdown-svg", "mb-0", "mb-1", "mb-3", @@ -256,7 +254,6 @@ "mt-n3", "mx-2", "mx-auto", - "mx-xl-auto", "my-0", "my-3", "nav", @@ -359,11 +356,12 @@ "--template", "TableOfContents", "_default", + "add-cache-headers-at-the-edge", + "add-csp-separately-and-keep-it-strict", "add-parameters", "add-script", "add-tracking-id", "add-translated-content", - "adding-an-integration", "ai-dropdown", "analytics-guides", "archetypes", @@ -374,12 +372,12 @@ "at-a-glance", "babelconfigjs", "background", + "be-intentional-with-cache-headers", "blockquote", "bold", "build", + "build-for-production", "build-your-site", - "building-your-own-integration", - "building-your-site-locally", "buttonColorMode", "chosen-approach", "cli-deployment", @@ -390,9 +388,9 @@ "confignext", "configproduction", "configuration", + "configure-hugo-build-caches", "configure-languages", "configure-thulite", - "configuring-an-integration", "cons", "cons-1", "consult-the-documentation", @@ -404,8 +402,11 @@ "create-new-content", "credits", "custom-id", + "defer-non-critical-work", "definition-list", "deploy", + "deploy-with-git", + "deploy-with-wrangler", "deployment-guides", "design-principles", "dev", @@ -417,7 +418,7 @@ "easy-to-use", "editor-choice", "emoji", - "enabling-preview-locally-with-wrangler", + "enable-local-preview-with-wrangler", "enoent", "example", "example-project-tree", @@ -427,7 +428,6 @@ "fast-by-default", "features", "fenced-code-block", - "finding-more-integrations", "fn:1", "fnref:1", "footnote", @@ -438,14 +438,12 @@ "h1", "h2", "h3", + "handle-inline-and-third-party-scripts-explicitly", "heading", "heading-id", "highlight", "horizontal-rule", "how-to-deploy", - "how-to-deploy-a-site-using-wrangler", - "how-to-deploy-a-site-with-git", - "how-to-use", "hugo", "hugo-documentation", "hugo-version", @@ -455,13 +453,15 @@ "inspect-generated-html", "inspect-generated-site-output", "install-a-specific-version", - "installation", "integrations", "italic", "javascript", + "keep-csp-aligned-with-asset-strategy", + "keep-css-lean", "known-issues", "layouts", "link", + "links", "major-changes", "markdown", "markuptoml", @@ -479,28 +479,28 @@ "offcanvasNavSectionLabel", "official-integrations", "official-resources", - "official-themes", + "official-templates", "options", "ordered-list", "packagejson", "packagejson-scripts", "paramstoml", "patch-changes", + "performance-guides", "postcssconfigjs", "prerequisites", "preview", - "previewing-your-site-locally", "project-config-with-verceljson", "pros", "pros-1", "query", - "quick-deploy-options", "quick-links", "quick-setup", "quick-start", - "removing-an-integration", + "related", "rendered-html", "resources", + "roll-out-with-report-only-first", "scss", "search-form", "searchModal", @@ -509,15 +509,18 @@ "searchToggleDesktop", "searchToggleMobile", "sectionSwitcher", + "security-guides", "semantic-versioning", + "seo-guides", "set-a-nodejs-version", - "setting-up-an-integration", "setup", + "ship-optimized-assets", "socialMenu", "solid-architecture", "start-development-server", + "start-with-a-safe-baseline", + "start-with-a-strict-baseline", "static", - "status", "strikethrough", "subscript", "superscript", @@ -630,6 +633,14 @@ "tabs-initialize-tina-command-2-tab", "tabs-initialize-tina-command-3", "tabs-initialize-tina-command-3-tab", + "tabs-install-wrangler-0", + "tabs-install-wrangler-0-tab", + "tabs-install-wrangler-1", + "tabs-install-wrangler-1-tab", + "tabs-install-wrangler-2", + "tabs-install-wrangler-2-tab", + "tabs-install-wrangler-3", + "tabs-install-wrangler-3-tab", "tabs-package-manager-1-0", "tabs-package-manager-1-0-tab", "tabs-package-manager-1-1", @@ -654,6 +665,14 @@ "tabs-preview-network-command-2-tab", "tabs-preview-network-command-3", "tabs-preview-network-command-3-tab", + "tabs-run-build-0", + "tabs-run-build-0-tab", + "tabs-run-build-1", + "tabs-run-build-1-tab", + "tabs-run-build-2", + "tabs-run-build-2-tab", + "tabs-run-build-3", + "tabs-run-build-3-tab", "tabs-start-development-server-command-0", "tabs-start-development-server-command-0-tab", "tabs-start-development-server-command-1", @@ -662,12 +681,6 @@ "tabs-start-development-server-command-2-tab", "tabs-start-development-server-command-3", "tabs-start-development-server-command-3-tab", - "tabs-tabs-1-0", - "tabs-tabs-1-0-tab", - "tabs-tabs-1-1", - "tabs-tabs-1-1-tab", - "tabs-tabs-1-2", - "tabs-tabs-1-2-tab", "tabs-update-thulite-command-0", "tabs-update-thulite-command-0-tab", "tabs-update-thulite-command-1", @@ -695,7 +708,6 @@ "task-list", "template", "thulite", - "thulite-core", "toc", "translate-interface-strings", "troubleshooting", @@ -707,13 +719,16 @@ "update-to-the-latest-version", "updating", "upgrade-guides", - "upgrading-an-integration", "usage", + "use-fingerprinted-assets-for-long-lived-caching", "use-tools", "using-netlify-functions", + "validate-after-deployment", "validate-in-the-browser", + "verify-after-every-release", + "verify-caching-behavior", + "verify-with-real-checks", "verify-your-setup", - "website-ui", "website-ui-deployment" ] } diff --git a/public/robots.txt b/public/robots.txt index 27216e5e6..19de83294 100644 --- a/public/robots.txt +++ b/public/robots.txt @@ -1,3 +1,3 @@ User-agent: * Disallow: /admin/ -Sitemap: http://localhost:1313/sitemap.xml +Sitemap: http://localhost:3000/sitemap.xml From 687d73edf0f3fe56f1d9842a3fed622097959f80 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Tue, 19 May 2026 17:30:53 +0200 Subject: [PATCH 10/12] Update pages Basics sections --- content/basics/layouts.md | 18 ++++++---- content/basics/pages.md | 70 +++++++++++++++++++++++++++------------ hugo_stats.json | 2 +- 3 files changed, 61 insertions(+), 29 deletions(-) diff --git a/content/basics/layouts.md b/content/basics/layouts.md index fb84bd63f..9007d9044 100644 --- a/content/basics/layouts.md +++ b/content/basics/layouts.md @@ -41,10 +41,16 @@ For example, the default Thulite [base template](https://gohugo.io/templates/bas Thulite leverages Hugo's [templates](https://gohugo.io/templates/). Here are some relevant topics: {{< card-grid >}} - {{< link-card title="Introduction to templating" description="Create templates to render your content, resources, and data." href="https://gohugo.io/templates/introduction/" target="_blank" >}} - {{< link-card title="Template lookup order" description="Hugo uses a template for a given page, starting from the most specific." href="https://gohugo.io/templates/lookup-order/" target="_blank" >}} - {{< link-card title="Base templates and blocks" description="Base and block constructs define the outer shell of your master templates." href="https://gohugo.io/templates/base/" target="_blank" >}} - {{< link-card title="Single page templates" description="Single page templates are the primary view of content in Hugo." href="https://gohugo.io/templates/single-page-templates/" target="_blank" >}} - {{< link-card title="List page templates" description="List page templates render multiple pieces of content in a HTML page." href="https://gohugo.io/templates/lists/" target="_blank" >}} - {{< link-card title="Partial templates" description="Partials are context-aware components in your list and page templates." href="https://gohugo.io/templates/partials/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Introduction to templating" description="Create templates to render your content, resources, and data." href="https://gohugo.io/templates/introduction/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Template lookup order" description="Hugo uses a template for a given page, starting from the most specific." href="https://gohugo.io/templates/lookup-order/" target="_blank" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Base templates and blocks" description="Base and block constructs define the outer shell of your master templates." href="https://gohugo.io/templates/base/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Single page templates" description="Single page templates are the primary view of content in Hugo." href="https://gohugo.io/templates/single-page-templates/" target="_blank" >}} +{{< /card-grid >}} + +{{< card-grid >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="List page templates" description="List page templates render multiple pieces of content in a HTML page." href="https://gohugo.io/templates/lists/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Partial templates" description="Partials are context-aware components in your list and page templates." href="https://gohugo.io/templates/partials/" target="_blank" >}} {{< /card-grid >}} diff --git a/content/basics/pages.md b/content/basics/pages.md index 855f09c5c..1755e8323 100644 --- a/content/basics/pages.md +++ b/content/basics/pages.md @@ -25,41 +25,67 @@ You can create new content by running the [`create` command](/basics/commands/#c For example, create an about page using a [leaf bundle](https://gohugo.io/content-management/page-bundles/#leaf-bundles): {{< tabs "package-manager-1" >}} - {{< tab "npm" >}} +{{< tab "npm" >}} + +```bash +npm run create content about/index.md +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + ```bash -npm run create about/index.md +pnpm run create content about/index.md ``` - {{< /tab >}} - {{< tab "pnpm" >}} + +{{< /tab >}} +{{< tab "Yarn" >}} + ```bash -pnpm run create about/index.md +yarn run create content about/index.md ``` - {{< /tab >}} - {{< tab "Yarn" >}} + +{{< /tab >}} +{{< tab "bun" >}} + ```bash -yarn run create about/index.md +bun run create content about/index.md ``` - {{< /tab >}} + +{{< /tab >}} {{< /tabs >}} Or, create a home page using a [branch bundle](https://gohugo.io/content-management/page-bundles/#branch-bundles): {{< tabs "package-manager-1" >}} - {{< tab "npm" >}} +{{< tab "npm" >}} + +```bash +npm run create content _index.md +``` + +{{< /tab >}} +{{< tab "pnpm" >}} + ```bash -npm run create _index.md +pnpm run create content _index.md ``` - {{< /tab >}} - {{< tab "pnpm" >}} + +{{< /tab >}} +{{< tab "Yarn" >}} + ```bash -pnpm run create _index.md +yarn run create content _index.md ``` - {{< /tab >}} - {{< tab "Yarn" >}} + +{{< /tab >}} +{{< tab "bun" >}} + ```bash -yarn run create _index.md +bun run create content _index.md ``` - {{< /tab >}} + +{{< /tab >}} {{< /tabs >}} ## Hugo documentation @@ -67,11 +93,11 @@ yarn run create _index.md Thulite leverages Hugo's [content management](https://gohugo.io/content-management/). Here are some relevant topics: {{< card-grid >}} - {{< link-card title="Content organization" description="Organize your content in a manner that reflects the rendered website." href="https://gohugo.io/content-management/organization/" target="_blank" >}} - {{< link-card title="Page bundles" description="Use page bundles to logically associate one or more resources with content." href="https://gohugo.io/content-management/page-bundles/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Content organization" description="Organize your content in a manner that reflects the rendered website." href="https://gohugo.io/content-management/organization/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Page bundles" description="Use page bundles to logically associate one or more resources with content." href="https://gohugo.io/content-management/page-bundles/" target="_blank" >}} {{< /card-grid >}} {{< card-grid >}} - {{< link-card title="Content formats" description="Create your content using multiple content formats." href="https://gohugo.io/content-management/formats/" target="_blank" >}} - {{< link-card title="Front matter" description="Use front matter to add metadata to your content." href="https://gohugo.io/content-management/front-matter/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Content formats" description="Create your content using multiple content formats." href="https://gohugo.io/content-management/formats/" target="_blank" >}} +{{< link-card src="svgs/simple-icons/hugo.svg" title="Front matter" description="Use front matter to add metadata to your content." href="https://gohugo.io/content-management/front-matter/" target="_blank" >}} {{< /card-grid >}} diff --git a/hugo_stats.json b/hugo_stats.json index fdb63bfb7..9afb065ae 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -478,7 +478,6 @@ "offcanvasNavSection", "offcanvasNavSectionLabel", "official-integrations", - "official-resources", "official-templates", "options", "ordered-list", @@ -543,6 +542,7 @@ "svg-gitlab", "svg-googleanalytics", "svg-html", + "svg-hugo", "svg-info-circle", "svg-json", "svg-markdown", From f68bb618af7748fd6556aa4fc984b48145930642 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Thu, 21 May 2026 17:34:15 +0200 Subject: [PATCH 11/12] Add DocSearch --- assets/js/custom.js | 1 + assets/js/docsearch.js | 17 + assets/scss/common/_custom.scss | 37 +++ assets/scss/common/_variables-docsearch.scss | 84 +++++ config/_default/params.toml | 8 +- config/postcss.config.js | 1 + hugo_stats.json | 46 +-- .../footer/script-footer-custom.html | 5 +- layouts/_partials/head/resource-hints.html | 1 + layouts/_partials/header/header.html | 302 ++++++++++++++++++ layouts/_partials/main/lvl0.html | 5 + layouts/single.html | 76 +++++ package-lock.json | 31 +- package.json | 2 + 14 files changed, 552 insertions(+), 64 deletions(-) create mode 100644 assets/js/docsearch.js create mode 100644 assets/scss/common/_variables-docsearch.scss create mode 100644 layouts/_partials/header/header.html create mode 100644 layouts/_partials/main/lvl0.html create mode 100644 layouts/single.html diff --git a/assets/js/custom.js b/assets/js/custom.js index 826d5687d..bed14cf07 100644 --- a/assets/js/custom.js +++ b/assets/js/custom.js @@ -1,3 +1,4 @@ +// Put your custom JS code here // Homepage FAQ accordion: keep only one <details> open at a time. document.addEventListener("DOMContentLoaded", () => { const body = document.body; diff --git a/assets/js/docsearch.js b/assets/js/docsearch.js new file mode 100644 index 000000000..6f79f4814 --- /dev/null +++ b/assets/js/docsearch.js @@ -0,0 +1,17 @@ +import docsearch from '@docsearch/js'; + +docsearch({ + container: '#docsearch', + appId: '70H5139H21', + indexName: 'thulite', + apiKey: '5c2d653189f5d57721370f43d0deba25', + // askAi: 'YOUR_ALGOLIA_ASSISTANT_ID', + insights: true +}); + +const onClick = function () { + document.getElementsByClassName('DocSearch-Button')[0].click(); +}; + +document.getElementById('searchToggleMobile').onclick = onClick; +document.getElementById('searchToggleDesktop').onclick = onClick; diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index d6fb76d46..3d75abff9 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -1,4 +1,41 @@ // Put your custom SCSS code here + +/*! purgecss start ignore */ +// @import "@docsearch/css/dist/_variables"; +@import "common/variables-docsearch"; + +// @import "@docsearch/css/dist/button"; +@import "@docsearch/css/dist/modal"; +/*! purgecss end ignore */ + +// DocSearch +/*! purgecss start ignore */ +.DocSearch-Container { + z-index: 2000 !important; +} + +.DocSearch-Hit-title { + overflow: hidden; +} + +.DocSearch-Hit-icon { + display: flex; + align-items: center; +} + +.DocSearch-Hits mark { + padding: 0; +} + +/* +@media (max-width: 768px) { + .DocSearch-Modal { + position: fixed !important; + } +} +*/ +/*! purgecss end ignore */ + .home .sticky-top { position: relative; } diff --git a/assets/scss/common/_variables-docsearch.scss b/assets/scss/common/_variables-docsearch.scss new file mode 100644 index 000000000..f619728be --- /dev/null +++ b/assets/scss/common/_variables-docsearch.scss @@ -0,0 +1,84 @@ +/*! @docsearch/css Variables 4.6.3 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */ +:root { + --docsearch-primary-color: #003dff; + --docsearch-soft-primary-color: rgba(0, 61, 255, .1); + --docsearch-subtle-color: #d6d6e7; + --docsearch-text-color: #36395a; + --docsearch-error-color: #ef5350; + --docsearch-success-color: #e8f5e9; + --docsearch-secondary-text-color: #5a5e9a; + --docsearch-background-color: #f5f5fa; + --docsearch-spacing: 12px; + --docsearch-icon-stroke-width: 1.4; + --docsearch-focus-color: #005fcc; + --docsearch-highlight-color: #003dff; + --docsearch-muted-color: #9698c3; + --docsearch-muted-color-darker: rgba(120, 122, 165, .25); + --docsearch-icon-color: #5a5e9a; + --docsearch-container-background: rgba(101, 108, 133, .8); + --docsearch-logo-color: #003dff; + --docsearch-border-radius: 4px; + --docsearch-search-button-background: #fff; + --docsearch-search-button-text-color: var(--docsearch-secondary-text-color); + --docsearch-modal-width: 800px; + --docsearch-modal-height: 600px; + --docsearch-modal-variable-height: 60dvh; + --docsearch-modal-background: #f5f6f7; + --docsearch-modal-shadow: rgba(0, 0, 0, .2) 0px 12px 28px 0px, rgba(0, 0, 0, .1) 0px 2px 4px 0px, hsla(0, 0%, 100%, .05) 0px 0px 0px 1px inset; + --docsearch-searchbox-height: 56px; + --docsearch-searchbox-initial-height: 56px; + --docsearch-searchbox-background: #ffffffa6; + --docsearch-searchbox-focus-background: #ffffffa6; + --docsearch-actions-width: 99px; + --docsearch-actions-height: 44px; + --docsearch-hit-height: 56px; + --docsearch-hit-color: #444950; + --docsearch-hit-highlight-color: rgba(0, 61, 255, .1); + --docsearch-hit-background: #fff; + --docsearch-key-background: #f5f5fa; + --docsearch-key-color: #5a5e9a; + --docsearch-key-pressed-shadow: inset 0 2px 4px rgba(120, 122, 165, .25); + --docsearch-footer-height: 52px; + --docsearch-footer-background: #ffffffa6; + --docsearch-footer-shadow: 0 -1px 0 0 #e0e3e8, 0 -3px 6px 0 rgba(69, 98, 155, .12); + --fav-out-dur: 160ms; + --del-dur: 150ms; + --ease-smooth: cubic-bezier(0.25, 0.8, 0.4, 1); + --ease-fast: cubic-bezier(0.45, 0.15, 0.6, 0.9); + --shadow-pop: 0 4px 12px rgba(0, 0, 0, .06); + --shimmer-bg: linear-gradient(90deg, #e0e3e8 0%, var(--docsearch-muted-color) 20%, var(--docsearch-muted-color) 60%, #e0e3e8 95%); + --docsearch-dropdown-menu-background: var(--docsearch-hit-background); + --docsearch-dropdown-menu-item-hover-background: var(--docsearch-modal-background); +} + +html[data-bs-theme="dark"] { + --docsearch-text-color: #c4c7dc; + --docsearch-secondary-text-color: #b6b7d5; + --docsearch-subtle-color: #212139; + --docsearch-error-color: #ef5350; + --docsearch-success-color: rgba(67, 160, 71, .2); + --docsearch-highlight-color: #457aff; + --docsearch-focus-color: #9ac8ff; + --docsearch-background-color: #36395a; + --docsearch-icon-color: #b6b7d5; + --docsearch-container-background: rgba(9, 10, 17, .8); + --docsearch-modal-background: #15172a; + --docsearch-modal-shadow: inset 1px 1px 0 0 #2c2e40, 0 3px 8px 0 #000309; + --docsearch-searchbox-background: #000000a6; + --docsearch-searchbox-focus-background: #000000a6; + --docsearch-hit-color: #bec3c9; + --docsearch-hit-shadow: none; + --docsearch-hit-background: #090a11; + --docsearch-key-background: #36395a; + --docsearch-key-color: #b6b7d5; + --docsearch-key-pressed-shadow: inset 0 2px 4px rgba(12, 13, 20, .4); + --docsearch-footer-background: #000000a6; + --docsearch-footer-shadow: inset 0 1px 0 0 rgba(73, 76, 106, .5), 0 -4px 8px 0 rgba(0, 0, 0, .2); + --docsearch-logo-color: #fff; + --docsearch-muted-color: #7f8497; + --shimmer-bg: linear-gradient(90deg, #e0e3e8 0%, var(--docsearch-muted-color) 20%, var(--docsearch-muted-color) 60%, #e0e3e8 95%); + --docsearch-dropdown-menu-background: var(--docsearch-hit-background); + --docsearch-dropdown-menu-item-hover-background: var(--docsearch-modal-background); + --docsearch-search-button-background: var(--docsearch-modal-background); + --docsearch-search-button-text-color: var(--docsearch-text-color); +} diff --git a/config/_default/params.toml b/config/_default/params.toml index 870d9ae91..04fe063af 100644 --- a/config/_default/params.toml +++ b/config/_default/params.toml @@ -13,6 +13,10 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" [social] twitter = "getdoks" +# Add-ons +[add_ons] + docSearch = true # false (default) or true + # Doks (@thulite/doks-core) [doks] # Color mode @@ -29,7 +33,7 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" navBarButtonText = "Get started" # FlexSearch - flexSearch = true # true (default) or false + flexSearch = false # true (default) or false searchExclKinds = [] # list of page kinds to exclude from search indexing (e.g. ["home", "taxonomy", "term"] ) searchExclTypes = [] # list of content types to exclude from search indexing (e.g. ["blog", "docs", "legal", "contributors", "categories"]) showSearch = [] # [] (all pages, default) or homepage (optionally) and list of sections (e.g. ["homepage", "blog", "guides"]) @@ -45,7 +49,7 @@ mathEngine = "KaTeX" # "KaTeX" (default) or "MathJax" alertDismissable = true # true (default) or false # Bootstrap - bootstrapJavascript = false # false (default) or true + bootstrapJavascript = true # false (default) or true # Nav sectionSwitcher = true # true or false (default) diff --git a/config/postcss.config.js b/config/postcss.config.js index 4c1099e5a..ec729fe5b 100644 --- a/config/postcss.config.js +++ b/config/postcss.config.js @@ -9,6 +9,7 @@ const purgecss = purgeCSSPlugin({ }, dynamicAttributes: [ 'aria-expanded', + 'aria-selected', 'data-bs-popper', 'data-bs-target', 'data-bs-theme', diff --git a/hugo_stats.json b/hugo_stats.json index 9afb065ae..341d086b6 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -20,7 +20,6 @@ "figcaption", "figure", "footer", - "form", "g", "h1", "h2", @@ -34,7 +33,6 @@ "img", "input", "kbd", - "label", "li", "line", "link", @@ -62,10 +60,8 @@ "table", "tbody", "td", - "template", "th", "thead", - "time", "title", "tr", "ul", @@ -86,7 +82,6 @@ "/svg", "/toml", "404", - "DocSearch-Label", "active", "advanced", "align-items-center", @@ -96,7 +91,6 @@ "basics", "border-0", "btn", - "btn-close", "btn-cta", "btn-lg", "btn-link", @@ -135,13 +129,10 @@ "container-fluid", "container-fw", "content", - "created-date", "d-flex", "d-lg-block", "d-lg-flex", "d-lg-none", - "d-md-block", - "d-md-none", "d-none", "d-xl-block", "d-xl-none", @@ -175,8 +166,6 @@ "footnote-backref", "footnote-ref", "footnotes", - "form-control", - "form-control-lg", "frame", "fs-5", "fs-6", @@ -184,7 +173,6 @@ "g-4", "gauge", "h-auto", - "h5", "has-title", "header", "header-content", @@ -221,9 +209,7 @@ "list-inline-item", "list-nested", "list-unstyled", - "list-view", "m-2", - "mb-0", "mb-1", "mb-3", "mb-4", @@ -233,18 +219,7 @@ "me-auto", "me-lg-1", "me-lg-3", - "message", - "modal", - "modal-body", - "modal-content", - "modal-dialog", - "modal-dialog-scrollable", - "modal-footer", - "modal-fullscreen-md-down", - "modal-header", - "modal-title", "ms-2", - "ms-3", "ms-auto", "ms-lg-2", "mt-1", @@ -274,7 +249,6 @@ "order-3", "order-lg-4", "p-0", - "p-2", "page-footer-meta", "page-header", "page-links", @@ -289,21 +263,11 @@ "ps-3", "pt-3", "pt-4", - "px-0", - "query-no-results", "reference", "rocket", "rounded", "rounded-pill", "row", - "search-form", - "search-input", - "search-loading", - "search-no-recent", - "search-no-results", - "search-result", - "search-results", - "search-text", "section", "section-divider", "section-footer", @@ -318,10 +282,8 @@ "social-link", "stack-2", "start-here", - "status", "sticky-top", "stretched-link", - "submitted", "svg-inline", "svg-inline-custom", "svg-monochrome", @@ -339,7 +301,6 @@ "text-start", "thulite-steps", "title", - "title-submitted", "toc-mobile", "toc-mobile-sticky", "tree", @@ -413,6 +374,8 @@ "developer-focused", "directories-and-files", "directory", + "docsearch", + "docsearch-lvl0", "documentation-updates", "doks-docs-nav", "easy-to-use", @@ -492,7 +455,6 @@ "project-config-with-verceljson", "pros", "pros-1", - "query", "quick-links", "quick-setup", "quick-start", @@ -501,10 +463,6 @@ "resources", "roll-out-with-report-only-first", "scss", - "search-form", - "searchModal", - "searchModalLabel", - "searchResults", "searchToggleDesktop", "searchToggleMobile", "sectionSwitcher", diff --git a/layouts/_partials/footer/script-footer-custom.html b/layouts/_partials/footer/script-footer-custom.html index 9027bb615..aabe29f3c 100644 --- a/layouts/_partials/footer/script-footer-custom.html +++ b/layouts/_partials/footer/script-footer-custom.html @@ -1,9 +1,12 @@ {{/* Put your custom <script></script> tags here */}} - {{ if .IsHome -}} {{ partial "footer/esbuild" (dict "src" "js/custom.js" "load" "defer" "transpile" false) -}} {{ end -}} +{{ if site.Params.add_ons.docSearch -}} + {{ partial "footer/esbuild" (dict "src" "js/docsearch.js" "load" "async" "transpile" false) -}} +{{ end -}} + {{/* EXAMPLE - only load script for production {{ if eq (hugo.Environment) "production" -}} {{ partial "footer/esbuild" (dict "src" "js/instantpage.js" "load" "async" "transpile" false) -}} diff --git a/layouts/_partials/head/resource-hints.html b/layouts/_partials/head/resource-hints.html index 55565253b..16de1aec8 100644 --- a/layouts/_partials/head/resource-hints.html +++ b/layouts/_partials/head/resource-hints.html @@ -1,3 +1,4 @@ <!-- Preload key fonts to improve performance --> <link rel="preload" as="font" href="{{ "fonts/geist/files/geist-latin-wght-normal.woff2" | absURL }}" type="font/woff2" crossorigin> <link rel="preload" as="font" href="{{ "fonts/geist-mono/files/geist-mono-latin-wght-normal.woff2" | absURL }}" type="font/woff2" crossorigin> +<link rel="preconnect" href="https://70H5139H21-dsn.algolia.net" crossorigin /> diff --git a/layouts/_partials/header/header.html b/layouts/_partials/header/header.html new file mode 100644 index 000000000..2eeeed8d3 --- /dev/null +++ b/layouts/_partials/header/header.html @@ -0,0 +1,302 @@ +{{ if site.Params.doks.alert -}} + {{ partial "header/alert.html" . }} +{{ end -}} + +{{ if site.Params.doks.navbarSticky -}} +<div class="sticky-top"> +{{ end -}} + +{{ if site.Params.doks.headerBar -}} +<div class="header-bar"></div> +{{ end -}} + +<header class="navbar navbar-expand-lg"> + {{ with site.Params.doks.containerBreakpoint -}} + <div class="container-{{ . }}"> + {{ else -}} + <div class="container"> + {{ end -}} + + <!-- Site title --> + <a class="navbar-brand me-auto me-lg-3" href="{{ relLangURL "" }}">{{ .Site.Title }}</a> + + <!-- FlexSearch mobile --> + {{ partial "main/showFlexSearch" . }} + {{ $showFlexSearch := .Scratch.Get "showFlexSearch" -}} + {{ if $showFlexSearch -}} + <button type="button" id="searchToggleMobile" class="btn btn-link nav-link mx-2 d-lg-none" aria-label="Search website"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <circle cx="10" cy="10" r="7"></circle> + <line x1="21" y1="21" x2="15" y2="15"></line> + </svg> + </button> + {{ end -}} + + <!-- DocSearch mobile --> + {{ if site.Params.add_ons.docSearch -}} + <div id="docsearch" class="d-none" tabindex="-1" aria-disabled="true"></div> + <button type="button" id="searchToggleMobile" class="btn btn-link nav-link mx-2 d-lg-none" aria-label="Search website"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <circle cx="10" cy="10" r="7"></circle> + <line x1="21" y1="21" x2="15" y2="15"></line> + </svg> + </button> + {{ end -}} + + <!-- Section navigation --> + {{ if (in site.Params.doks.sectionNav .Section) -}} + <button class="btn btn-link d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavSection" aria-controls="offcanvasNavSection" aria-label="Open section navigation menu"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-dots-vertical" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path> + <path d="M12 19m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path> + <path d="M12 5m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path> + </svg> + </button> + <div class="offcanvas offcanvas-start d-lg-none" tabindex="-1" id="offcanvasNavSection" aria-labelledby="offcanvasNavSectionLabel"> + {{ if site.Params.doks.headerBar -}} + <div class="header-bar"></div> + {{ end -}} + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasNavSectionLabel">{{ .Section | humanize }}</h5> + <button type="button" class="btn btn-link nav-link p-0 ms-auto" data-bs-dismiss="offcanvas" aria-label="Close"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M18 6l-12 12"></path> + <path d="M6 6l12 12"></path> + </svg> + </button> + </div> + <div class="offcanvas-body"> + <aside class="doks-sidebar mt-n3"> + {{ if site.Params.doks.sectionSwitcher -}} + {{ partial "sidebar/section-switcher.html" . }} + {{ end -}} + <nav id="doks-docs-nav" aria-label="Tertiary navigation"> + {{ partial "sidebar/section-menu.html" . }} + </nav> + </aside> + </div> + </div> + {{ end -}} + + <!-- Main navigation button --> + <button class="btn btn-link nav-link mx-2 order-3 d-lg-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavMain" aria-controls="offcanvasNavMain" aria-label="Open main navigation menu"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-menu" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <line x1="4" y1="8" x2="20" y2="8"></line> + <line x1="4" y1="16" x2="20" y2="16"></line> + </svg> + </button> + + <!-- Main navigation --> + <div class="offcanvas offcanvas-end h-auto" tabindex="-1" id="offcanvasNavMain" aria-labelledby="offcanvasNavMainLabel"> + {{ if site.Params.doks.headerBar -}} + <div class="header-bar d-lg-none"></div> + {{ end -}} + <div class="offcanvas-header"> + <h5 class="offcanvas-title" id="offcanvasNavMainLabel">{{ site.Title }}</h5> + <button type="button" class="btn btn-link nav-link p-0 ms-auto" data-bs-dismiss="offcanvas" aria-label="Close"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M18 6l-12 12"></path> + <path d="M6 6l12 12"></path> + </svg> + </button> + </div> + <!-- + <div class="offcanvas-header"> + <h5 class="offcanvas-title fw-bold" id="offcanvasNavMainLabel">{{ .Site.Params.Title }}</h5> + <button class="btn btn-link nav-link ms-auto" type="button" data-bs-dismiss="offcanvas" aria-label="Close menu"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M18 6l-12 12"></path> + <path d="M6 6l12 12"></path> + </svg> + </button> + </div> + --> + <div class="offcanvas-body d-flex flex-column flex-lg-row justify-content-between"> + <ul class="navbar-nav flex-grow-1"> + {{- $current := . -}} + {{- $section := $current.Section -}} + {{ range .Site.Menus.main -}} + {{- $active := or ($current.IsMenuCurrent "main" .) ($current.HasMenuCurrent "main" .) -}} + {{- $active = or $active (eq .Name $current.Title) -}} + {{- $active = or $active (eq .Name ($section | humanize)) -}} + {{- $active = or $active (and (eq .Name "Blog") (eq $current.Section "blog" "authors")) -}} + {{ if .HasChildren -}} + <li class="nav-item dropdown"> + <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> + {{ .Name -}} + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M6 9l6 6l6 -6"></path> + </svg> + </a> + <ul class="dropdown-menu shadow rounded border-0"> + {{ range .Children -}} + {{- $active = eq .Name $current.Title -}} + <li><a class="dropdown-item{{ if $active }} active{{ end }}" href="{{ .URL | absURL }}"{{ if $active }} aria-current="true"{{ end }}>{{ .Name }}</a></li> + {{ end -}} + </ul> + </li> + {{ else -}} + <li class="nav-item"> + <a class="nav-link{{ if $active }} active{{ end }}" href="{{ .URL | absURL }}"{{ if $active }} aria-current="true"{{ end }}>{{ .Name }}</a> + </li> + {{ end -}} + {{ end -}} + </ul> + + <!-- FlexSearch desktop --> + {{ partial "main/showFlexSearch" . }} + {{ $showFlexSearch := .Scratch.Get "showFlexSearch" -}} + {{ if $showFlexSearch -}} + <button type="button" id="searchToggleDesktop" class="btn btn-link nav-link p-2 d-none d-lg-block" aria-label="Search website"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <circle cx="10" cy="10" r="7"></circle> + <line x1="21" y1="21" x2="15" y2="15"></line> + </svg> + </button> + {{ end -}} + + <!-- DocSearch desktop --> + {{ if site.Params.add_ons.docSearch -}} + <button type="button" id="searchToggleDesktop" class="btn btn-link nav-link mx-2 d-none d-lg-block" aria-label="Search website"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <circle cx="10" cy="10" r="7"></circle> + <line x1="21" y1="21" x2="15" y2="15"></line> + </svg> + </button> + {{ end -}} + + <!-- Language dropdown --> + {{ if eq site.Params.doks.multilingualMode true -}} + + <div class="dropdown mt-1 order-lg-2"> + <button class="btn btn-dropdown dropdown-toggle" id="doks-languages" data-bs-toggle="dropdown" aria-expanded="false" data-bs-display="static"> + <span class="dropdown-caret"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-language" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M4 5h7"></path> + <path d="M9 3v2c0 4.418 -2.239 8 -5 8"></path> + <path d="M5 9c0 2.144 2.952 3.908 6.7 4"></path> + <path d="M12 20l4 -9l4 9"></path> + <path d="M19.1 18h-6.2"></path> + </svg> + <span id="doks-language-current">{{ .Site.Language.LanguageName }}</span> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M6 9l6 6l6 -6"></path> + </svg> + </span> + </button> + <ul class="dropdown-menu dropdown-menu-lg-end me-lg-2 shadow rounded border-0" aria-labelledby="doks-languages"> + + <li><span class="dropdown-item current" aria-current="true">{{ .Site.Language.LanguageName }}</span></li> + + <li><hr class="dropdown-divider"></li> + + {{ if site.Params.doks.showMissingLanguages -}} + {{ $translatedLangs := slice -}} + {{ range .Translations -}} + {{ $translatedLangs = $translatedLangs | append .Lang }} + {{- end }} + {{ range site.Languages -}} + {{ if and (ne $.Lang .Lang) (not (in $.Params.skipTranslations .Lang)) -}} + {{ $isTranslated := in $translatedLangs .Lang -}} + <li><a class="dropdown-item {{ if not $isTranslated }}untranslated{{ end }}" rel="alternate" href="{{ if $isTranslated }}{{ (index (where $.Translations "Lang" .Lang) 0).RelPermalink }}{{ else }}{{ .Lang | relURL }}{{ end }}" hreflang="{{ .Lang }}" lang="{{ .Lang }}">{{ .LanguageName }}</a></li> + {{- end }} + {{- end }} + {{ else -}} + {{ range .Translations -}} + <li><a class="dropdown-item" rel="alternate" href="{{ .RelPermalink }}" hreflang="{{ .Lang }}" lang="{{ .Lang }}">{{ .Language.LanguageName }}</a></li> + {{- end }} + {{- end }} + <!-- + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="/docs/contributing/how-to-contribute/">Help Translate</a></li> + --> + </ul> + </div> + {{ end -}} + + <!-- Versioning dropdown --> + {{ if eq site.Params.doks.docsVersioning true -}} + + <div class="dropdown mt-1 order-lg-3"> + <button class="btn btn-dropdown dropdown-toggle" id="doks-versions" data-bs-toggle="dropdown" aria-expanded="false" data-bs-display="static" aria-label="Toggle version menu"> + <span class="d-none">Doks</span> v{{ site.Params.doks.docsVersion }} + <span class="dropdown-caret"> + <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M6 9l6 6l6 -6"></path> + </svg> + </span> + </button> + <ul class="dropdown-menu dropdown-menu-lg-end me-lg-2 shadow rounded border-0" aria-labelledby="doks-versions"> + <li><a class="dropdown-item current" aria-current="true" href="/docs/{{ site.Params.doks.docsVersion }}/prologue/introduction/">Latest ({{ site.Params.doks.docsVersion }}.x)</a></li> + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="/docs/0.2/prologue/introduction/">v0.2.x</a></li> + <li><a class="dropdown-item" href="/docs/0.1/prologue/introduction/">v0.1.x</a></li> + <li><hr class="dropdown-divider"></li> + <li><a class="dropdown-item" href="/docs/versions/">All versions</a></li> + </ul> + </div> + {{ end -}} + + <!-- Color mode toggler --> + {{ if and (eq site.Params.doks.colorMode "auto") site.Params.doks.colorModeToggler -}} + <button id="buttonColorMode" class="btn btn-link nav-link mt-3 mt-lg-0 p-0 ms-lg-2 me-lg-1" type="button" aria-label="Toggle theme"> + <svg data-bs-theme-value="dark" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-moon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"></path> + </svg> + <svg data-bs-theme-value="light" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-sun" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> + <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> + <path d="M12 12m-4 0a4 4 0 1 0 8 0a4 4 0 1 0 -8 0m-5 0h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7"></path> + </svg> + </button> + {{ end -}} + + <!-- Social menu --> + {{ if .Site.Menus.social -}} + <ul id="socialMenu" class="nav flex-row order-lg-4"> + {{ range .Site.Menus.social -}} + <li class="nav-item"> + <a class="nav-link social-link" href="{{ .URL | relURL }}">{{ .Pre | safeHTML }}<small class="ms-2 visually-hidden">{{ .Name | safeHTML }}</small></a> + </li> + {{ end -}} + </ul> + {{ end -}} + + + <!-- Navbar button mobile --> + {{ if site.Params.doks.navBarButton -}} + <a class="btn btn-primary rounded-pill mt-2 btn-block d-lg-none" href="{{ site.Params.doks.navBarButtonUrl | absURL }}" role="button">{{ site.Params.doks.navBarButtonText }}</a> + {{ end -}} + </div> + </div> + + <!-- Navbar button desktop --> + {{ if site.Params.doks.navBarButton -}} + <a class="btn btn-primary rounded-pill ms-3 me-2 px-4 order-lg-3 d-none d-lg-block" href="{{ site.Params.doks.navBarButtonUrl | absURL }}" role="button">{{ site.Params.doks.navBarButtonText }}</a> + {{ end -}} + + </div> +</header> +{{ if site.Params.doks.navbarSticky -}} +</div> +{{ end -}} + +<!-- Search modal --> +{{ if site.Params.doks.flexSearch -}} +{{ partial "header/search-modal" . }} +{{ end -}} + + diff --git a/layouts/_partials/main/lvl0.html b/layouts/_partials/main/lvl0.html new file mode 100644 index 000000000..41a19513e --- /dev/null +++ b/layouts/_partials/main/lvl0.html @@ -0,0 +1,5 @@ +{{ $lvl0 := .FirstSection.Title }} +{{ if eq $lvl0 "Start Here" -}} + {{ $lvl0 = "Learn" }} +{{ end -}} +<span id="docsearch-lvl0" hidden>{{ $lvl0 }}</span> diff --git a/layouts/single.html b/layouts/single.html new file mode 100644 index 000000000..3457faeed --- /dev/null +++ b/layouts/single.html @@ -0,0 +1,76 @@ +{{ define "main" }} + <div class="row flex-xl-nowrap"> + {{ if (in site.Params.doks.sectionNav .Section) -}} + <div class="col-lg-5 col-xl-4 docs-sidebar{{ if ne site.Params.doks.navbarSticky true }} docs-sidebar-top{{ end }}{{ if site.Params.doks.headerBar }} docs-sidebar-offset{{ end }} d-none d-lg-block"> + {{ if site.Params.doks.sectionSwitcher -}} + {{ partial "sidebar/section-switcher.html" . }} + {{ end -}} + {{ partial "sidebar/section-menu.html" . }} + </div> + {{ end -}} + {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} + <div class="col container-fw d-lg-flex flex-lg-row justify-content-center mx-auto"> + {{ end }} + {{ if ne .Params.toc false -}} + <nav class="docs-toc{{ if ne site.Params.doks.navbarSticky true }} docs-toc-top{{ end }}{{ if site.Params.doks.headerBar }} docs-toc-offset{{ end }} d-none d-xl-block col-xl-3" aria-label="Secondary navigation"> + {{ partial "sidebar/docs-toc-desktop.html" . }} + </nav> + {{ end -}} + {{ if and (eq site.Params.doks.containerBreakpoint "fluid") .Params.toc -}} + <main class="docs-content col-lg-16 col-xl-9"> + {{ else -}} + <main class="docs-content col-lg-11 col-xl-9 mx-xl-auto"> + {{ end -}} + {{ if ne .Params.toc false -}} + <nav class="toc-mobile toc-mobile-sticky d-xl-none" aria-label="Quaternary navigation"> + {{ partial "sidebar/docs-toc-mobile.html" . }} + </nav> + {{ end -}} + {{ if site.Params.doks.breadcrumbTrail -}} + <!-- https://discourse.gohugo.io/t/breadcrumb-navigation-for-highly-nested-content/27359/6 --> + <nav aria-label="breadcrumb"> + <ol class="breadcrumb"> + {{ partial "main/breadcrumb" . -}} + <li class="breadcrumb-item active" aria-current="page">{{ .Title }}</li> + </ol> + </nav> + {{ end }} + <div class="page-header d-flex flex-row justify-content-between align-items-start"> + <div> + <h1>{{ .Title }}</h1> + <!-- <p class="lead">{{ .Params.lead | safeHTML }}</p> --> + </div> + {{ if site.Params.doks.aiButtons -}} + <div> + {{ partial "main/ai-buttons.html" . }} + </div> + {{ end -}} + </div> + {{ if site.Params.doks.headlineHash -}} + {{ partial "main/headline-hash" .Content }} + {{ else -}} + {{ .Content }} + {{ end -}} + <div class="page-footer-meta d-flex flex-column flex-md-row justify-content-between"> + {{ if site.Params.doks.lastMod -}} + {{ partial "main/last-modified.html" . }} + {{ end -}} + {{ if site.Params.doks.editPage -}} + {{ partial "main/edit-page.html" . }} + {{ end -}} + </div> + {{ partial "main/docs-navigation.html" . }} + <!-- + {{ if not .Site.Params.options.collapsibleSidebar -}} + {{ partial "main/docs-navigation.html" . }} + {{ else -}} + <div class="my-n3"></div> + {{ end -}} + --> + </main> + {{ if and (eq site.Params.doks.containerBreakpoint "fluid") (in .Site.Params.mainSections .Type) }} + </div> + {{ end }} + </div> + {{ partial "main/lvl0" . }} +{{ end }} diff --git a/package-lock.json b/package-lock.json index 719a4fdbc..6634fb4e6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,8 @@ "version": "0.2.0", "license": "MIT", "dependencies": { + "@docsearch/css": "^4.6.3", + "@docsearch/js": "^4.6.3", "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", "@tabler/icons": "^3.41.1", @@ -1861,6 +1863,18 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/@docsearch/css": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz", + "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==", + "license": "MIT" + }, + "node_modules/@docsearch/js": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-4.6.3.tgz", + "integrity": "sha512-qUIX2b4Apew3tv4F0qhmgShsl/Lfw4m6mqv/5/5dWNxwTcDdLMp2s3YwZ+NMGh3IKCg0pBaXm7Q5VdyU5Rj+cQ==", + "license": "MIT" + }, "node_modules/@emnapi/core": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", @@ -2506,16 +2520,6 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/node": { - "version": "25.7.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.7.0.tgz", - "integrity": "sha512-z+pdZyxE+RTQE9AcboAZCb4otwcrvgHD+GlBpPgn0emDVt0ohrTMhAwlr2Wd9nZ+nihhYFxO2pThz3C5qSu2Eg==", - "extraneous": true, - "license": "MIT", - "dependencies": { - "undici-types": "~7.21.0" - } - }, "node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -4969,13 +4973,6 @@ "license": "0BSD", "optional": true }, - "node_modules/undici-types": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.21.0.tgz", - "integrity": "sha512-w9IMgQrz4O0YN1LtB7K5P63vhlIOvC7opSmouCJ+ZywlPAlO9gIkJ+otk6LvGpAs2wg4econaCz3TvQ9xPoyuQ==", - "extraneous": true, - "license": "MIT" - }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", diff --git a/package.json b/package.json index ff2f56372..16c036a37 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,8 @@ "changeset:version": "changeset version" }, "dependencies": { + "@docsearch/css": "^4.6.3", + "@docsearch/js": "^4.6.3", "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", "@tabler/icons": "^3.41.1", From 3897a3399a0827572997a4672ff9afac0071c291 Mon Sep 17 00:00:00 2001 From: Henk Verlinde <henk@henkverlinde.com> Date: Fri, 22 May 2026 16:49:57 +0200 Subject: [PATCH 12/12] Disable Content Security Policy for deploy preview --- assets/scss/common/_custom.scss | 6 +++--- netlify.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/scss/common/_custom.scss b/assets/scss/common/_custom.scss index 3d75abff9..5a7e6e748 100644 --- a/assets/scss/common/_custom.scss +++ b/assets/scss/common/_custom.scss @@ -1,15 +1,14 @@ // Put your custom SCSS code here +// DocSearch /*! purgecss start ignore */ + // @import "@docsearch/css/dist/_variables"; @import "common/variables-docsearch"; // @import "@docsearch/css/dist/button"; @import "@docsearch/css/dist/modal"; -/*! purgecss end ignore */ -// DocSearch -/*! purgecss start ignore */ .DocSearch-Container { z-index: 2000 !important; } @@ -34,6 +33,7 @@ } } */ + /*! purgecss end ignore */ .home .sticky-top { diff --git a/netlify.toml b/netlify.toml index f70539da1..d72e811fb 100644 --- a/netlify.toml +++ b/netlify.toml @@ -49,7 +49,7 @@ Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload" X-Content-Type-Options = "nosniff" X-XSS-Protection = "1; mode=block" - Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' https://avatars.githubusercontent.com data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" + # Content-Security-Policy = "default-src 'self'; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' https://avatars.githubusercontent.com data:; script-src 'self' 'nonce-dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=' 'sha256-aWZ3y/RxbBYKHXH0z8+8ljrHG1mSBvyzSfxSMjBSaXk='; style-src 'self'" X-Frame-Options = "SAMEORIGIN" Referrer-Policy = "strict-origin" Permissions-Policy = "geolocation=(self), microphone=(), camera=()"