diff --git a/astro.config.mjs b/astro.config.mjs index 26e12a0..20a5b18 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,15 +1,19 @@ import { defineConfig } from 'astro/config'; import starlight from '@astrojs/starlight'; +import { getFilesInGuidesFolder } from './src/utils/documents'; // https://astro.build/config export default defineConfig({ integrations: [ starlight({ title: 'Klimakode', - defaultLocale: "nb", + defaultLocale: 'nb', + components: { + Footer: './src/components/Footer.astro', + }, locales: { nb: { - label: "Norsk", + label: 'Norsk', lang: 'nb-NO', sidebar: [ { @@ -19,14 +23,14 @@ export default defineConfig({ ], }, en: { - label: "English", + label: 'English', sidebar: [ { label: 'Tips for developing more sustainably', autogenerate: { directory: 'en/guides' }, }, ], - } + }, }, social: { github: 'https://github.com/strombraaten/climatecode', diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..f08fc32 --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,53 @@ +--- +import Default from '@astrojs/starlight/components/Footer.astro'; +import type { Props } from '@astrojs/starlight/props'; +--- + + + + + +
+ + + + + diff --git a/src/content/docs/en/guides/images.md b/src/content/docs/en/guides/images.md index 73f8166..e83c07a 100644 --- a/src/content/docs/en/guides/images.md +++ b/src/content/docs/en/guides/images.md @@ -29,6 +29,7 @@ Use modern formats like WebP for better compression and reduced data transfer: Use tools like cwebp or online converters to convert existing images to WebP format. ### Implement Lazy Loading for Images + Lazy loading only loads images when they become visible in the viewport: Description diff --git a/src/content/docs/nb/hosting/content-delivery-network.mdx b/src/content/docs/nb/hosting/content-delivery-network.mdx index 12ad702..a06fbef 100644 --- a/src/content/docs/nb/hosting/content-delivery-network.mdx +++ b/src/content/docs/nb/hosting/content-delivery-network.mdx @@ -8,5 +8,9 @@ import { Aside } from '@astrojs/starlight/components'; Content Delivery Network, eller CDN som det gjerne kalles, er en tjeneste som gjør at du kan levere innhold til brukerne med høy hastighet og stor pålitelighet. Spesielt nyttig i tilfeller hvor du har mange brukere som trenger tilgang til innholdet på samme tid, eller fra ulike deler av verden. diff --git a/src/content/i18n/nb-NO.json b/src/content/i18n/nb-NO.json index ea065c9..bda4fe2 100644 --- a/src/content/i18n/nb-NO.json +++ b/src/content/i18n/nb-NO.json @@ -1,42 +1,42 @@ { - "skipLink.label": "Hopp til innhold", - "search.label": "Søk", - "search.ctrlKey": "Ctrl", - "search.cancelLabel": "Avbryt", - "search.devWarning": "Search is only available in production builds. \nTry building and previewing the site to test it out locally.", - "themeSelect.accessibleLabel": "Velg utseende", - "themeSelect.dark": "Mørk", - "themeSelect.light": "Lys", - "themeSelect.auto": "Auto", - "languageSelect.accessibleLabel": "Velg språk", - "menuButton.accessibleLabel": "Meny", - "sidebarNav.accessibleLabel": "Main", - "tableOfContents.onThisPage": "På denne siden", - "tableOfContents.overview": "Oversikt", - "i18n.untranslatedContent": "Dette innholdet er ikke tilgjengelig på ditt språk ennå.", - "page.editLink": "Rediger siden", - "page.lastUpdated": "Sist oppdatert:", - "page.previousLink": "Forrige", - "page.nextLink": "Neste", - "page.draft": "Dette innholdet er et utkast og blir ikke inkludert i produksjonsbyggingen.", - "404.text": "Ai! Den siden fant jeg ikke dessverre, men slapp av, det er ikke du som har gjort noe feil, bare vi som har litt rusk i maskineriet.", - "aside.note": "Note", - "aside.tip": "Tip", - "aside.caution": "Caution", - "aside.danger": "Danger", - "fileTree.directory": "Mappe", - "builtWithStarlight.label": "Bygget med Astro, på Starlight-fundamentet", - "expressiveCode.copyButtonCopied": "Kopiert!", - "expressiveCode.copyButtonTooltip": "Kopier til utklippstavle", - "expressiveCode.terminalWindowFallbackTitle": "Terminalen", - "pagefind.clear_search": "Tøm", - "pagefind.load_more": "Last inn flere resultater", - "pagefind.search_label": "Søk på denne nettsiden", - "pagefind.filters_label": "Filtre", - "pagefind.zero_results": "Ingen resultater for [SEARCH_TERM]", - "pagefind.many_results": "[COUNT] resultater for [SEARCH_TERM]", - "pagefind.one_result": "[COUNT] resultat for [SEARCH_TERM]", - "pagefind.alt_search": "Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet", - "pagefind.search_suggestion": "Ingen resultater for [SEARCH_TERM]. Prøv et av følgende søk i stedet:", - "pagefind.searching": "Søker etter [SEARCH_TERM]..." + "skipLink.label": "Hopp til innhold", + "search.label": "Søk", + "search.ctrlKey": "Ctrl", + "search.cancelLabel": "Avbryt", + "search.devWarning": "Search is only available in production builds. \nTry building and previewing the site to test it out locally.", + "themeSelect.accessibleLabel": "Velg utseende", + "themeSelect.dark": "Mørk", + "themeSelect.light": "Lys", + "themeSelect.auto": "Auto", + "languageSelect.accessibleLabel": "Velg språk", + "menuButton.accessibleLabel": "Meny", + "sidebarNav.accessibleLabel": "Main", + "tableOfContents.onThisPage": "På denne siden", + "tableOfContents.overview": "Oversikt", + "i18n.untranslatedContent": "Dette innholdet er ikke tilgjengelig på ditt språk ennå.", + "page.editLink": "Rediger siden", + "page.lastUpdated": "Sist oppdatert:", + "page.previousLink": "Forrige", + "page.nextLink": "Neste", + "page.draft": "Dette innholdet er et utkast og blir ikke inkludert i produksjonsbyggingen.", + "404.text": "Ai! Den siden fant jeg ikke dessverre, men slapp av, det er ikke du som har gjort noe feil, bare vi som har litt rusk i maskineriet.", + "aside.note": "Note", + "aside.tip": "Tip", + "aside.caution": "Caution", + "aside.danger": "Danger", + "fileTree.directory": "Mappe", + "builtWithStarlight.label": "Bygget med Astro, på Starlight-fundamentet", + "expressiveCode.copyButtonCopied": "Kopiert!", + "expressiveCode.copyButtonTooltip": "Kopier til utklippstavle", + "expressiveCode.terminalWindowFallbackTitle": "Terminalen", + "pagefind.clear_search": "Tøm", + "pagefind.load_more": "Last inn flere resultater", + "pagefind.search_label": "Søk på denne nettsiden", + "pagefind.filters_label": "Filtre", + "pagefind.zero_results": "Ingen resultater for [SEARCH_TERM]", + "pagefind.many_results": "[COUNT] resultater for [SEARCH_TERM]", + "pagefind.one_result": "[COUNT] resultat for [SEARCH_TERM]", + "pagefind.alt_search": "Ingen resultater for [SEARCH_TERM]. Viser resultater for [DIFFERENT_TERM] i stedet", + "pagefind.search_suggestion": "Ingen resultater for [SEARCH_TERM]. Prøv et av følgende søk i stedet:", + "pagefind.searching": "Søker etter [SEARCH_TERM]..." } diff --git a/src/utils/documents.ts b/src/utils/documents.ts new file mode 100644 index 0000000..c4f10fe --- /dev/null +++ b/src/utils/documents.ts @@ -0,0 +1,35 @@ +import fs from 'fs'; +import path from 'path'; + +const folderPath = 'src/content/docs/guides/'; +const absolutePath = path.join(process.cwd(), folderPath); + +type FileObject = { + label: string; + slug: string; +}; + +export function getFilesInGuidesFolder(): FileObject[] { + const fileNames: FileObject[] = []; + + // Read the contents of the folder + const files = fs.readdirSync(absolutePath); + + // Iterate over each file + files.forEach((file) => { + // Get the full path of the file + const filePath = `${absolutePath}/${file}`; + + // Check if the path points to a file (not a directory) + if (fs.statSync(filePath).isFile()) { + const fileName = file.replaceAll('.md', ''); + const fileToPush: FileObject = { + label: fileName.replaceAll('-', ' '), + slug: 'guides/' + fileName, + }; + fileNames.push(fileToPush); + } + }); + + return fileNames; +}