diff --git a/astro.config.mjs b/astro.config.mjs index d4057e9..81458fa 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -17,13 +17,12 @@ const locales = { const DEFAULT_LAYOUT = '@layouts/Post.astro'; function setDefaultLayout() { - return function (_, file) { + return function(_, file) { const { frontmatter } = file.data.astro; if (!frontmatter.layout) frontmatter.layout = DEFAULT_LAYOUT; }; } -// https://astro.build/config export default defineConfig({ site: "https://max-richter.dev", trailingSlash: "never", @@ -39,7 +38,7 @@ export default defineConfig({ }), ], server: { - watch: { + watch: { // Customize watch behavior to reduce file watchers ignored: ['**/node_modules/**', '**/dist/**', '**/.git/**'], usePolling: process.env.NODE_ENV === 'production', diff --git a/package.json b/package.json index 37e89f2..1bc96b5 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,10 @@ }, "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/mdx": "^4.2.6", - "@astrojs/svelte": "^7.0.13", + "@astrojs/mdx": "^4.3.0", + "@astrojs/svelte": "^7.1.0", "@astrojs/tailwind": "^6.0.2", - "astro": "^5.7.13", + "astro": "^5.9.1", "astro-i18n-aut": "^0.7.3", "exifreader": "^4.30.1", "svelte": "^5.28.6", @@ -24,7 +24,7 @@ "typescript": "^5.8.3" }, "devDependencies": { - "@astrojs/sitemap": "^3.4.0", + "@astrojs/sitemap": "^3.4.1", "@iconify-json/tabler": "^1.2.17", "@types/markdown-it": "^14.1.2", "@unocss/preset-icons": "^66.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bb7aab6..1934810 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: specifier: ^0.9.4 version: 0.9.4(prettier-plugin-astro@0.14.1)(prettier@3.5.3)(typescript@5.8.3) '@astrojs/mdx': - specifier: ^4.2.6 - version: 4.2.6(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)) + specifier: ^4.3.0 + version: 4.3.0(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)) '@astrojs/svelte': - specifier: ^7.0.13 - version: 7.0.13(@types/node@22.15.18)(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(jiti@2.4.2)(svelte@5.28.6)(typescript@5.8.3)(yaml@2.7.1) + specifier: ^7.1.0 + version: 7.1.0(@types/node@22.15.18)(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(jiti@2.4.2)(svelte@5.28.6)(typescript@5.8.3)(yaml@2.7.1) '@astrojs/tailwind': specifier: ^6.0.2 - version: 6.0.2(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@4.1.6) + version: 6.0.2(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@4.1.6) astro: - specifier: ^5.7.13 - version: 5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) + specifier: ^5.9.1 + version: 5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) astro-i18n-aut: specifier: ^0.7.3 - version: 0.7.3(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)) + version: 0.7.3(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)) exifreader: specifier: ^4.30.1 version: 4.30.1 @@ -46,8 +46,8 @@ importers: version: 5.8.3 devDependencies: '@astrojs/sitemap': - specifier: ^3.4.0 - version: 3.4.0 + specifier: ^3.4.1 + version: 3.4.1 '@iconify-json/tabler': specifier: ^1.2.17 version: 1.2.17 @@ -109,6 +109,9 @@ packages: '@astrojs/compiler@2.12.0': resolution: {integrity: sha512-7bCjW6tVDpUurQLeKBUN9tZ5kSv5qYrGmcn0sG0IwacL7isR2ZbyyA3AdZ4uxsuUFOS2SlgReTH7wkxO6zpqWA==} + '@astrojs/compiler@2.12.1': + resolution: {integrity: sha512-WDSyVIiz7sNcJcCJxJFITu6XjfGhJ50Z0auyaWsrM+xb07IlhBLFtQuDkNy0caVHWNcKTM2LISAaHhgkRqGAVg==} + '@astrojs/internal-helpers@0.6.1': resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==} @@ -124,25 +127,25 @@ packages: prettier-plugin-astro: optional: true - '@astrojs/markdown-remark@6.3.1': - resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==} + '@astrojs/markdown-remark@6.3.2': + resolution: {integrity: sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==} - '@astrojs/mdx@4.2.6': - resolution: {integrity: sha512-0i/GmOm6d0qq1/SCfcUgY/IjDc/bS0i42u7h85TkPFBmlFOcBZfkYhR5iyz6hZLwidvJOEq5yGfzt9B1Azku4w==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/mdx@4.3.0': + resolution: {integrity: sha512-OGX2KvPeBzjSSKhkCqrUoDMyzFcjKt5nTE5SFw3RdoLf0nrhyCXBQcCyclzWy1+P+XpOamn+p+hm1EhpCRyPxw==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 - '@astrojs/prism@3.2.0': - resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/prism@3.3.0': + resolution: {integrity: sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} - '@astrojs/sitemap@3.4.0': - resolution: {integrity: sha512-C5m/xsKvRSILKM3hy47n5wKtTQtJXn8epoYuUmCCstaE9XBt20yInym3Bz2uNbEiNfv11bokoW0MqeXPIvjFIQ==} + '@astrojs/sitemap@3.4.1': + resolution: {integrity: sha512-VjZvr1e4FH6NHyyHXOiQgLiw94LnCVY4v06wN/D0gZKchTMkg71GrAHJz81/huafcmavtLkIv26HnpfDq6/h/Q==} - '@astrojs/svelte@7.0.13': - resolution: {integrity: sha512-wAWZu3Y/shIa83qVWyhr34vqwfl0GOXLsTYp081mMMOzuiyDAqmusFILua2zpbhqsQhQlhH/BYbGLEIQ/zQpRA==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/svelte@7.1.0': + resolution: {integrity: sha512-nNAO7iFgCZXCN31N4xBSS/k7vZAZxeZ/v8V6VWZOKG47gVlxeAJBHzn2GlXMMVkxIamr6dhrkDrhYFKIPzoGpw==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} peerDependencies: astro: ^5.0.0 svelte: ^5.1.16 @@ -154,9 +157,9 @@ packages: astro: ^3.0.0 || ^4.0.0 || ^5.0.0 tailwindcss: ^3.0.24 - '@astrojs/telemetry@3.2.1': - resolution: {integrity: sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0} + '@astrojs/telemetry@3.3.0': + resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} '@astrojs/yaml2ts@0.2.2': resolution: {integrity: sha512-GOfvSr5Nqy2z5XiwqTouBBpy5FyI6DEe+/g/Mk5am9SjILN1S5fOEvYK0GuWHg98yS/dobP4m8qyqw/URW35fQ==} @@ -1035,9 +1038,9 @@ packages: peerDependencies: astro: ^5.0.0 - astro@5.7.13: - resolution: {integrity: sha512-cRGq2llKOhV3XMcYwQpfBIUcssN6HEK5CRbcMxAfd9OcFhvWE7KUy50zLioAZVVl3AqgUTJoNTlmZfD2eG0G1w==} - engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} + astro@5.9.1: + resolution: {integrity: sha512-wxoJcTbuDZNFSv6EaL0PAlrp0Wx6VnOAULCXvy0scsV70oWMeUkdxuBxfO54JxO5Qgyvwj9h99y6E0elqOpGtA==} + engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true autoprefixer@10.4.21: @@ -2166,8 +2169,8 @@ packages: svelte-gestures@5.1.4: resolution: {integrity: sha512-gfSO/GqWLu9nRMCz12jqdyA0+NTsojYcIBcRqZjwWrpQbqMXr0zWPFpZBtzfYbRHtuFxZImMZp9MrVaFCYbhDg==} - svelte2tsx@0.7.38: - resolution: {integrity: sha512-R+S2DwFUYByWXyAMcs8CRIeoIi+heXDFqLhYpqmYG+2/YbfWwMoiA7yctUptEP84Hcxl5sRjVJCARZVrLo9y4g==} + svelte2tsx@0.7.39: + resolution: {integrity: sha512-NX8a7eSqF1hr6WKArvXr7TV7DeE+y0kDFD7L5JP7TWqlwFidzGKaG415p992MHREiiEWOv2xIWXJ+mlONofs0A==} peerDependencies: svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0 typescript: ^4.9.4 || ^5.0.0 @@ -2709,6 +2712,8 @@ snapshots: '@astrojs/compiler@2.12.0': {} + '@astrojs/compiler@2.12.1': {} + '@astrojs/internal-helpers@0.6.1': {} '@astrojs/language-server@2.15.4(prettier-plugin-astro@0.14.1)(prettier@3.5.3)(typescript@5.8.3)': @@ -2737,10 +2742,10 @@ snapshots: transitivePeerDependencies: - typescript - '@astrojs/markdown-remark@6.3.1': + '@astrojs/markdown-remark@6.3.2': dependencies: '@astrojs/internal-helpers': 0.6.1 - '@astrojs/prism': 3.2.0 + '@astrojs/prism': 3.3.0 github-slugger: 2.0.0 hast-util-from-html: 2.0.3 hast-util-to-text: 4.0.2 @@ -2763,12 +2768,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.2.6(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))': + '@astrojs/mdx@4.3.0(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))': dependencies: - '@astrojs/markdown-remark': 6.3.1 + '@astrojs/markdown-remark': 6.3.2 '@mdx-js/mdx': 3.1.0(acorn@8.14.1) acorn: 8.14.1 - astro: 5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) + astro: 5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -2782,22 +2787,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/prism@3.2.0': + '@astrojs/prism@3.3.0': dependencies: prismjs: 1.30.0 - '@astrojs/sitemap@3.4.0': + '@astrojs/sitemap@3.4.1': dependencies: sitemap: 8.0.0 stream-replace-string: 2.0.0 zod: 3.24.4 - '@astrojs/svelte@7.0.13(@types/node@22.15.18)(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(jiti@2.4.2)(svelte@5.28.6)(typescript@5.8.3)(yaml@2.7.1)': + '@astrojs/svelte@7.1.0(@types/node@22.15.18)(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(jiti@2.4.2)(svelte@5.28.6)(typescript@5.8.3)(yaml@2.7.1)': dependencies: '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.28.6)(vite@6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1)) - astro: 5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) + astro: 5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) svelte: 5.28.6 - svelte2tsx: 0.7.38(svelte@5.28.6)(typescript@5.8.3) + svelte2tsx: 0.7.39(svelte@5.28.6)(typescript@5.8.3) typescript: 5.8.3 vite: 6.3.5(@types/node@22.15.18)(jiti@2.4.2)(yaml@2.7.1) transitivePeerDependencies: @@ -2814,9 +2819,9 @@ snapshots: - tsx - yaml - '@astrojs/tailwind@6.0.2(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@4.1.6)': + '@astrojs/tailwind@6.0.2(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1))(tailwindcss@4.1.6)': dependencies: - astro: 5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) + astro: 5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) autoprefixer: 10.4.21(postcss@8.5.3) postcss: 8.5.3 postcss-load-config: 4.0.2(postcss@8.5.3) @@ -2824,7 +2829,7 @@ snapshots: transitivePeerDependencies: - ts-node - '@astrojs/telemetry@3.2.1': + '@astrojs/telemetry@3.3.0': dependencies: ci-info: 4.2.0 debug: 4.4.1 @@ -3381,7 +3386,7 @@ snapshots: '@types/sax@1.2.7': dependencies: - '@types/node': 17.0.45 + '@types/node': 22.15.18 '@types/unist@2.0.11': {} @@ -3692,9 +3697,9 @@ snapshots: astro-font@1.1.0: {} - astro-i18n-aut@0.7.3(astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)): + astro-i18n-aut@0.7.3(astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1)): dependencies: - astro: 5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) + astro: 5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1) dedent: 1.6.0 fast-glob: 3.3.3 fs-extra: 11.3.0 @@ -3702,12 +3707,12 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - astro@5.7.13(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1): + astro@5.9.1(@types/node@22.15.18)(jiti@2.4.2)(rollup@4.40.2)(typescript@5.8.3)(yaml@2.7.1): dependencies: - '@astrojs/compiler': 2.12.0 + '@astrojs/compiler': 2.12.1 '@astrojs/internal-helpers': 0.6.1 - '@astrojs/markdown-remark': 6.3.1 - '@astrojs/telemetry': 3.2.1 + '@astrojs/markdown-remark': 6.3.2 + '@astrojs/telemetry': 3.3.0 '@capsizecss/unpack': 2.4.0 '@oslojs/encoding': 1.1.0 '@rollup/pluginutils': 5.1.4(rollup@4.40.2) @@ -3734,6 +3739,7 @@ snapshots: github-slugger: 2.0.0 html-escaper: 3.0.3 http-cache-semantics: 4.2.0 + import-meta-resolve: 4.1.0 js-yaml: 4.1.0 kleur: 4.1.5 magic-string: 0.30.17 @@ -5397,7 +5403,7 @@ snapshots: svelte-gestures@5.1.4: {} - svelte2tsx@0.7.38(svelte@5.28.6)(typescript@5.8.3): + svelte2tsx@0.7.39(svelte@5.28.6)(typescript@5.8.3): dependencies: dedent-js: 1.0.1 pascal-case: 3.1.2 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..a38003e --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,4 @@ +onlyBuiltDependencies: + - esbuild + - exifreader + - sharp diff --git a/src/components/Nav.astro b/src/components/Nav.astro index 7f63eee..f01f8ac 100644 --- a/src/components/Nav.astro +++ b/src/components/Nav.astro @@ -24,8 +24,8 @@ const paths = [ text: t("nav.photos"), }, { - link: translatePath("/videos"), - text: t("nav.videos"), + link: translatePath("/resources"), + text: t("nav.resources"), }, ]; --- diff --git a/src/content/videos/_index.en.md b/src/content/videos/_index.en.md index 147f788..080f05a 100644 --- a/src/content/videos/_index.en.md +++ b/src/content/videos/_index.en.md @@ -1,4 +1,4 @@ --- -title: Videos +title: Resources menu: nav --- diff --git a/src/i18n/ui.ts b/src/i18n/ui.ts index e18e813..9514e5c 100644 --- a/src/i18n/ui.ts +++ b/src/i18n/ui.ts @@ -20,7 +20,7 @@ export const ui = { 'home.subtitle': 'Trained Media Designer, Blender Nerd, Developer and Hardware Tinkerer.', 'nav.blog': 'Blog', 'nav.projects': 'Projects', - 'nav.videos': 'Videos', + 'nav.resources': 'Resources', 'nav.photos': 'Photos', 'toc.title': 'Table of Contents', "resume": "Resume", @@ -38,7 +38,7 @@ export const ui = { 'home.subtitle': 'Ausgebildeter Mediengestalter, Blender Nerd, Entwickler und Hardware Bastler.', 'nav.blog': 'Blog', 'nav.projects': 'Projekte', - 'nav.videos': 'Videos', + 'nav.resources': 'Resources', 'nav.photos': 'Fotos', "resume": "Lebenslauf", 'toc.title': 'Inhaltsverzeichnis', diff --git a/src/layouts/Post.astro b/src/layouts/Post.astro index 4f80a54..5ed665d 100644 --- a/src/layouts/Post.astro +++ b/src/layouts/Post.astro @@ -16,11 +16,10 @@ const { frontmatter, headings } = Astro.props; const t = useTranslations(Astro.url); const { title, url, date: dateString, links, toc, cover } = frontmatter; const collection = url?.split("/")[2]; -const date = new Date(dateString); -const path = useTranslatedPath(Astro.url); - //@ts-ignore const backlinkContent = t(`nav.${collection}`).toLowerCase(); +const date = new Date(dateString); +const path = useTranslatedPath(Astro.url); --- diff --git a/src/pages/resources/index.astro b/src/pages/resources/index.astro new file mode 100644 index 0000000..2501b61 --- /dev/null +++ b/src/pages/resources/index.astro @@ -0,0 +1,64 @@ +--- +import Layout from "@layouts/Layout.astro"; +import HeroCard from "@components/HeroCard.astro"; + +const collection = "resources"; + +const wiki = { + id: "wiki", + collection, + body: "My knowledge base", + data: { + title: "Wiki", + icon: "🧠", + }, +}; + +const articles = { + id: "articles", + collection, + body: "Articles saved", + data: { + title: "Articles", + icon: "📰", + }, +}; + +const recipes = { + id: "recipes", + collection, + body: "Recipes", + data: { + title: "Recipes", + icon: "🍲", + }, +}; + +const movies = { + id: "movies", + collection, + body: "Movies", + data: { + title: "Movies", + icon: "🎥", + }, +}; + +const series = { + id: "series", + collection, + body: "Series", + data: { + title: "Series", + icon: "📺", + }, +}; +--- + + + + + + + + diff --git a/src/pages/resources/movies/[movieName].astro b/src/pages/resources/movies/[movieName].astro new file mode 100644 index 0000000..8088a68 --- /dev/null +++ b/src/pages/resources/movies/[movieName].astro @@ -0,0 +1,35 @@ +--- +import Layout from "@layouts/Layout.astro"; + +export async function getStaticPaths() { + const response = await fetch( + "http://localhost:8080/resources?name=Media/movies/*", + ); + const movieReviews = await response.json(); + + const paths = movieReviews.map((review: any) => { + return { + params: { + movieName: review.identifier + .replace("Media/movies/", "") + .replace(/\.md$/, ""), + }, + }; + }); + + return paths; +} + +const response = await fetch( + //@ts-ignore + `http://localhost:8080/resources?name=Media/movies/${Astro.params.movieName}.md`, +); +const reviewes = await response.json(); +const review = reviewes[0]; +--- + + +

{review.itemReviewed?.name}

+

{review.reviewBody}

+ +
diff --git a/src/pages/resources/movies/index.astro b/src/pages/resources/movies/index.astro new file mode 100644 index 0000000..6abbb93 --- /dev/null +++ b/src/pages/resources/movies/index.astro @@ -0,0 +1,29 @@ +--- +import Layout from "@layouts/Layout.astro"; +import HeroCard from "@components/HeroCard.astro"; + +const response = await fetch( + "http://localhost:8080/resources?name=Media/movies/*", +); +const movieReviews = await response.json(); +--- + + + { + movieReviews.map((review: any) => ( + + )) + } + diff --git a/src/pages/resources/recipes/[recipeName].astro b/src/pages/resources/recipes/[recipeName].astro new file mode 100644 index 0000000..f2d5a17 --- /dev/null +++ b/src/pages/resources/recipes/[recipeName].astro @@ -0,0 +1,66 @@ +--- +import Layout from "@layouts/Layout.astro"; +import { useTranslatedPath } from "@i18n/utils"; +import markdownToText from "@helpers/markdownToText"; + +const path = useTranslatedPath(Astro.url); + +const collection = "resources/recipes"; + +export async function getStaticPaths() { + const response = await fetch( + "http://localhost:8080/resources?name=Recipes/*", + ); + const recipes = await response.json(); + + const paths = recipes.map((recipe: any) => { + return { + params: { + recipeName: recipe.identifier + .replace("Recipes/", "") + .replace(/\.md$/, ""), + }, + }; + }); + + return paths; +} + +const response = await fetch( + //@ts-ignore + `http://localhost:8080/resources?name=Recipes/${Astro.params.recipeName}.md`, +); +const recipes = await response.json(); +const recipe = recipes[0]; +--- + + +
+ + back + +
+ { + recipe.date?.toLocaleString("en-US", { + month: "long", + day: "numeric", + year: "numeric", + }) + } +
+
+ +

{recipe.name}

+ +

Ingredients

+
    + { + recipe.recipeIngredient?.map((ingredient: any) => ( +
  1. {markdownToText(ingredient)}
  2. + )) + } +
+ +

Instructions

+

{recipe.recipeInstructions}

+
diff --git a/src/pages/resources/recipes/index.astro b/src/pages/resources/recipes/index.astro new file mode 100644 index 0000000..7895b9d --- /dev/null +++ b/src/pages/resources/recipes/index.astro @@ -0,0 +1,23 @@ +--- +import Layout from "@layouts/Layout.astro"; +import HeroCard from "@components/HeroCard.astro"; + +const response = await fetch("http://localhost:8080/resources?name=Recipes/*"); +const recipes = await response.json(); +--- + + + { + recipes.map((recipe: any) => ( + + )) + } + diff --git a/src/pages/resources/series/[seriesName].astro b/src/pages/resources/series/[seriesName].astro new file mode 100644 index 0000000..1450df7 --- /dev/null +++ b/src/pages/resources/series/[seriesName].astro @@ -0,0 +1,54 @@ +--- +import Layout from "@layouts/Layout.astro"; +import { useTranslatedPath } from "@i18n/utils"; + +const collection = "resources/series"; + +const path = useTranslatedPath(Astro.url); + +export async function getStaticPaths() { + const response = await fetch( + "http://localhost:8080/resources?name=Media/series/*", + ); + const seriesReviews = await response.json(); + + const paths = seriesReviews.map((review:any) => { + return { + params: { + seriesName: review.identifier + .replace("Media/series/", "") + .replace(/\.md$/, ""), + }, + }; + }); + + return paths; +} + +const response = await fetch( + //@ts-ignore + `http://localhost:8080/resources?name=Media/series/${Astro.params.seriesName}.md`, +); +const reviewes = response.ok ? await response.json() : []; +const review = reviewes[0]; +--- + + +
+ + back + +
+ { + review.date?.toLocaleString("en-US", { + month: "long", + day: "numeric", + year: "numeric", + }) + } +
+
+ +

{review.itemReviewed?.name}

+

{review.reviewBody}

+
diff --git a/src/pages/resources/series/index.astro b/src/pages/resources/series/index.astro new file mode 100644 index 0000000..76d7da1 --- /dev/null +++ b/src/pages/resources/series/index.astro @@ -0,0 +1,29 @@ +--- +import Layout from "@layouts/Layout.astro"; +import HeroCard from "@components/HeroCard.astro"; + +const response = await fetch( + "http://localhost:8080/resources?name=Media/series/*", +); +const seriesReviewes = await response.json(); +--- + + + { + seriesReviewes.map((review: any) => ( + + )) + } +