diff --git a/scripts/jsonGenerator.js b/scripts/jsonGenerator.js index f63091a..f46ba22 100644 --- a/scripts/jsonGenerator.js +++ b/scripts/jsonGenerator.js @@ -9,11 +9,12 @@ const CONTENT_DEPTH = 3; const BLOG_FOLDER = "blog"; // get data from markdown -const getData = (folder, groupDepth) => { +const getData = (folder, groupDepth, langIndex = 0) => { // get paths const getPaths = languages - .map((lang) => { - const dir = path.join(CONTENT_ROOT, lang.contentDir, folder); + .map((lang, index) => { + const langFolder = lang.contentDir ? lang.contentDir : lang.languageCode; + const dir = path.join(CONTENT_ROOT, folder, langFolder); return fs .readdirSync(dir) .filter( @@ -27,7 +28,7 @@ const getData = (folder, groupDepth) => { const isFolder = stats.isDirectory(); if (isFolder) { - return getData(filepath, groupDepth); + return getData(filepath, groupDepth, index); } else { const file = fs.readFileSync(filepath, "utf-8"); const { data, content } = matter(file); @@ -41,7 +42,7 @@ const getData = (folder, groupDepth) => { const group = pathParts[groupDepth]; return { - lang: lang.languageCode, + lang: languages[langIndex].languageCode, group: group, slug: slug, frontmatter: data, diff --git a/src/config/config.json b/src/config/config.json index 83920f1..f695a6e 100755 --- a/src/config/config.json +++ b/src/config/config.json @@ -3,7 +3,7 @@ "title": "Astroplate", "base_url": "https://astroplate.netlify.app", "base_path": "/", - "trailing_slash": false, + "trailing_slash": true, "favicon": "/images/favicon.png", "logo": "/images/logo.png", "logo_darkmode": "/images/logo-darkmode.png", diff --git a/src/content/about/config.ts b/src/content/about/config.ts new file mode 100755 index 0000000..71ddbf1 --- /dev/null +++ b/src/content/about/config.ts @@ -0,0 +1,11 @@ +import { z } from "zod"; + +const AboutSchema = z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string().optional(), + image: z.string(), + draft: z.boolean().optional(), +}); + +export default AboutSchema; diff --git a/src/content/english/about/-index.md b/src/content/about/english/-index.md similarity index 100% rename from src/content/english/about/-index.md rename to src/content/about/english/-index.md diff --git a/src/content/french/about/-index.md b/src/content/about/french/-index.md similarity index 92% rename from src/content/french/about/-index.md rename to src/content/about/french/-index.md index a4ac128..041c6ad 100644 --- a/src/content/french/about/-index.md +++ b/src/content/about/french/-index.md @@ -6,4 +6,4 @@ image: "/images/avatar.png" draft: false --- -L'entreprise elle-même est une entreprise très prospère. Ils ne connaissent pas les bienfaits du corps, ou sauf qu'ils le recevront à d'autres moments, le tout, les temps de travail, qu'il déteste à partir de ce moment mais. Il fuit les plaisirs perçus pour être supposés n'être rien, tout ou, et la douleur est ce qui est la plus grande option, car cela lui est facile, et avec ce que cela s'ensuit, ils lui procurent de la douleur et ainsi de suite ! Car ledit expédient de la vérité repousse le plaisir et empêche la douleur, ils fournissent comme si \ No newline at end of file +L'entreprise elle-même est une entreprise très prospère. Ils ne connaissent pas les bienfaits du corps, ou sauf qu'ils le recevront à d'autres moments, le tout, les temps de travail, qu'il déteste à partir de ce moment mais. Il fuit les plaisirs perçus pour être supposés n'être rien, tout ou, et la douleur est ce qui est la plus grande option, car cela lui est facile, et avec ce que cela s'ensuit, ils lui procurent de la douleur et ainsi de suite ! Car ledit expédient de la vérité repousse le plaisir et empêche la douleur, ils fournissent comme si diff --git a/src/content/authors/config.ts b/src/content/authors/config.ts new file mode 100755 index 0000000..d0eb2e1 --- /dev/null +++ b/src/content/authors/config.ts @@ -0,0 +1,29 @@ +import { defineCollection, z } from "astro:content"; + +// Author collection schema +const authorsCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + email: z.string().optional(), + image: z.string().optional(), + description: z.string().optional(), + social: z + .array( + z + .object({ + name: z.string().optional(), + icon: z.string().optional(), + link: z.string().optional(), + }) + .optional(), + ) + .optional(), + draft: z.boolean().optional(), + }), +}); + +// Export collections +export const collections = { + authors: authorsCollection, +}; diff --git a/src/content/english/authors/-index.md b/src/content/authors/english/-index.md similarity index 100% rename from src/content/english/authors/-index.md rename to src/content/authors/english/-index.md diff --git a/src/content/english/authors/john-doe.md b/src/content/authors/english/john-doe.md similarity index 100% rename from src/content/english/authors/john-doe.md rename to src/content/authors/english/john-doe.md diff --git a/src/content/english/authors/sam-wilson.md b/src/content/authors/english/sam-wilson.md similarity index 100% rename from src/content/english/authors/sam-wilson.md rename to src/content/authors/english/sam-wilson.md diff --git a/src/content/english/authors/william-jacob.md b/src/content/authors/english/william-jacob.md similarity index 100% rename from src/content/english/authors/william-jacob.md rename to src/content/authors/english/william-jacob.md diff --git a/src/content/french/authors/-index.md b/src/content/authors/french/-index.md similarity index 100% rename from src/content/french/authors/-index.md rename to src/content/authors/french/-index.md diff --git a/src/content/french/authors/john-doe.md b/src/content/authors/french/john-doe.md similarity index 100% rename from src/content/french/authors/john-doe.md rename to src/content/authors/french/john-doe.md diff --git a/src/content/french/authors/sam-wilson.md b/src/content/authors/french/sam-wilson.md similarity index 100% rename from src/content/french/authors/sam-wilson.md rename to src/content/authors/french/sam-wilson.md diff --git a/src/content/french/authors/william-jacob.md b/src/content/authors/french/william-jacob.md similarity index 100% rename from src/content/french/authors/william-jacob.md rename to src/content/authors/french/william-jacob.md diff --git a/src/content/blog/config.ts b/src/content/blog/config.ts new file mode 100755 index 0000000..e2f906b --- /dev/null +++ b/src/content/blog/config.ts @@ -0,0 +1,33 @@ +import { defineCollection, z } from "astro:content"; + +// Post collection schema +const blogCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string().optional(), + date: z.date().optional(), + image: z.string().optional(), + author: z.string().default("Admin"), + categories: z.array(z.string()).default(["others"]), + tags: z.array(z.string()).default(["others"]), + draft: z.boolean().optional(), + }), +}); + +// Pages collection schema +const pagesCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string().optional(), + image: z.string().optional(), + draft: z.boolean().optional(), + }), +}); + +// Export collections +export const collections = { + blog: blogCollection, + pages: pagesCollection, +}; diff --git a/src/content/english/blog/-index.md b/src/content/blog/english/-index.md similarity index 100% rename from src/content/english/blog/-index.md rename to src/content/blog/english/-index.md diff --git a/src/content/english/blog/post-1.md b/src/content/blog/english/post-1.md similarity index 100% rename from src/content/english/blog/post-1.md rename to src/content/blog/english/post-1.md diff --git a/src/content/english/blog/post-2.md b/src/content/blog/english/post-2.md similarity index 100% rename from src/content/english/blog/post-2.md rename to src/content/blog/english/post-2.md diff --git a/src/content/english/blog/post-3.md b/src/content/blog/english/post-3.md similarity index 100% rename from src/content/english/blog/post-3.md rename to src/content/blog/english/post-3.md diff --git a/src/content/english/blog/post-4.md b/src/content/blog/english/post-4.md similarity index 100% rename from src/content/english/blog/post-4.md rename to src/content/blog/english/post-4.md diff --git a/src/content/french/blog/-index.md b/src/content/blog/french/-index.md similarity index 100% rename from src/content/french/blog/-index.md rename to src/content/blog/french/-index.md diff --git a/src/content/french/blog/post-1.md b/src/content/blog/french/post-1.md similarity index 100% rename from src/content/french/blog/post-1.md rename to src/content/blog/french/post-1.md diff --git a/src/content/french/blog/post-2.md b/src/content/blog/french/post-2.md similarity index 100% rename from src/content/french/blog/post-2.md rename to src/content/blog/french/post-2.md diff --git a/src/content/french/blog/post-3.md b/src/content/blog/french/post-3.md similarity index 100% rename from src/content/french/blog/post-3.md rename to src/content/blog/french/post-3.md diff --git a/src/content/french/blog/post-4.md b/src/content/blog/french/post-4.md similarity index 100% rename from src/content/french/blog/post-4.md rename to src/content/blog/french/post-4.md diff --git a/src/content/contact/config.ts b/src/content/contact/config.ts new file mode 100755 index 0000000..349b955 --- /dev/null +++ b/src/content/contact/config.ts @@ -0,0 +1,14 @@ +import { defineCollection, z } from "astro:content"; + +const contactCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string(), + draft: z.boolean().optional(), + }), +}); + +export const collections = { + contact: contactCollection, +}; diff --git a/src/content/english/contact/-index.md b/src/content/contact/english/-index.md similarity index 100% rename from src/content/english/contact/-index.md rename to src/content/contact/english/-index.md diff --git a/src/content/french/contact/-index.md b/src/content/contact/french/-index.md similarity index 100% rename from src/content/french/contact/-index.md rename to src/content/contact/french/-index.md diff --git a/src/content/homepage/config.ts b/src/content/homepage/config.ts new file mode 100755 index 0000000..0262957 --- /dev/null +++ b/src/content/homepage/config.ts @@ -0,0 +1,42 @@ +import { defineCollection, z } from "astro:content"; + +// Banner schema +const bannerSchema = z.object({ + title: z.string(), + content: z.string(), + image: z.string(), + button: z.object({ + enable: z.boolean(), + label: z.string(), + link: z.string(), + }), +}); + +// Features schema +const featureSchema = z.object({ + title: z.string(), + image: z.string(), + content: z.string(), + bulletpoints: z.array(z.string()), + button: z.object({ + enable: z.boolean(), + label: z.string().optional(), + link: z.string().optional(), + }), +}); + +// Main content schema +const contentSchema = z.object({ + banner: bannerSchema, + features: z.array(featureSchema), +}); + +// Define the collection +const contentCollection = defineCollection({ + schema: contentSchema, +}); + +// Export collections +export const collections = { + content: contentCollection, +}; diff --git a/src/content/english/homepage/-index.md b/src/content/homepage/english/-index.md similarity index 100% rename from src/content/english/homepage/-index.md rename to src/content/homepage/english/-index.md diff --git a/src/content/french/homepage/-index.md b/src/content/homepage/french/-index.md similarity index 99% rename from src/content/french/homepage/-index.md rename to src/content/homepage/french/-index.md index d02c12b..be96b3f 100755 --- a/src/content/french/homepage/-index.md +++ b/src/content/homepage/french/-index.md @@ -50,4 +50,4 @@ features: enable: false label: "" link: "" ---- \ No newline at end of file +--- diff --git a/src/content/pages/config.ts b/src/content/pages/config.ts new file mode 100755 index 0000000..b159fc5 --- /dev/null +++ b/src/content/pages/config.ts @@ -0,0 +1,24 @@ +import { defineCollection, z } from "astro:content"; + +const elementsCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string(), + draft: z.boolean().optional(), + }), +}); + +const privacyCollection = defineCollection({ + schema: z.object({ + title: z.string(), + meta_title: z.string().optional(), + description: z.string(), + draft: z.boolean().optional(), + }), +}); + +export const collections = { + elements: elementsCollection, + privacy: privacyCollection, +}; diff --git a/src/content/english/pages/elements.mdx b/src/content/pages/english/elements.mdx similarity index 100% rename from src/content/english/pages/elements.mdx rename to src/content/pages/english/elements.mdx diff --git a/src/content/english/pages/privacy-policy.md b/src/content/pages/english/privacy-policy.md similarity index 100% rename from src/content/english/pages/privacy-policy.md rename to src/content/pages/english/privacy-policy.md diff --git a/src/content/french/pages/elements.mdx b/src/content/pages/french/elements.mdx similarity index 100% rename from src/content/french/pages/elements.mdx rename to src/content/pages/french/elements.mdx diff --git a/src/content/french/pages/privacy-policy.md b/src/content/pages/french/privacy-policy.md similarity index 100% rename from src/content/french/pages/privacy-policy.md rename to src/content/pages/french/privacy-policy.md diff --git a/src/content/sections/config.ts b/src/content/sections/config.ts new file mode 100755 index 0000000..1f49900 --- /dev/null +++ b/src/content/sections/config.ts @@ -0,0 +1,28 @@ +import { z } from "zod"; + +const TestimonialSchema = z.object({ + name: z.string(), + designation: z.string(), + avatar: z.string(), + content: z.string(), +}); + +const TestimonialsSchema = z.array(TestimonialSchema); + +const CallToActionSchema = z.object({ + enable: z.boolean(), + title: z.string(), + image: z.string(), + description: z.string(), + button: z.object({ + enable: z.boolean(), + label: z.string(), + link: z.string().url(), + }), +}); + +export const collections = { + Testimonial: TestimonialSchema, + Testimonials: TestimonialsSchema, + CallToAction: CallToActionSchema, +}; diff --git a/src/content/english/sections/call-to-action.md b/src/content/sections/english/call-to-action.md similarity index 100% rename from src/content/english/sections/call-to-action.md rename to src/content/sections/english/call-to-action.md diff --git a/src/content/english/sections/testimonial.md b/src/content/sections/english/testimonial.md similarity index 100% rename from src/content/english/sections/testimonial.md rename to src/content/sections/english/testimonial.md diff --git a/src/content/french/sections/call-to-action.md b/src/content/sections/french/call-to-action.md similarity index 100% rename from src/content/french/sections/call-to-action.md rename to src/content/sections/french/call-to-action.md diff --git a/src/content/french/sections/testimonial.md b/src/content/sections/french/testimonial.md similarity index 100% rename from src/content/french/sections/testimonial.md rename to src/content/sections/french/testimonial.md diff --git a/src/layouts/components/BlogCard.astro b/src/layouts/components/BlogCard.astro index d2a8a89..eb15361 100644 --- a/src/layouts/components/BlogCard.astro +++ b/src/layouts/components/BlogCard.astro @@ -18,6 +18,11 @@ const { title, image, date, author, categories } = data.data; const lang = getLangFromUrl(Astro.url); const { read_more } = await getTranslations(lang as keyof ContentEntryMap); + +const slugParts = data.slug.split("/"); +slugParts[0] = "blog"; +const modifiedSlug = slugParts.join("/"); +data.slug = modifiedSlug; ---
diff --git a/src/layouts/components/Breadcrumbs.astro b/src/layouts/components/Breadcrumbs.astro index 077cdef..29e0448 100644 --- a/src/layouts/components/Breadcrumbs.astro +++ b/src/layouts/components/Breadcrumbs.astro @@ -11,19 +11,20 @@ if (supportedLang.includes(paths[0])) { lang = paths.shift()!; } +let baseHref = lang ? `/${lang}` : "/"; let parts = [ { label: "Home", - href: `/${lang}`, + href: baseHref, "aria-label": - Astro.url.pathname === `/${lang}` || Astro.url.pathname === `/${lang}/` + Astro.url.pathname === baseHref || Astro.url.pathname === `${baseHref}/` ? "page" : undefined, }, ]; paths.forEach((label: string, i: number) => { - const href = `/${lang}/${paths.slice(0, i + 1).join("/")}`; + const href = `${baseHref}${paths.slice(0, i + 1).join("/")}`; label !== "page" && parts.push({ label: humanize(label.replace(".html", "").replace(/[-_]/g, " ")) || "", diff --git a/src/layouts/partials/Testimonial.astro b/src/layouts/partials/Testimonial.astro index 9fb2cc5..35ca07b 100644 --- a/src/layouts/partials/Testimonial.astro +++ b/src/layouts/partials/Testimonial.astro @@ -67,7 +67,7 @@ const { testimonial } = Astro.props;
- ), + ) )}
diff --git a/src/lib/contentParser.astro b/src/lib/contentParser.astro index 4e98a64..048b5d3 100644 --- a/src/lib/contentParser.astro +++ b/src/lib/contentParser.astro @@ -9,7 +9,7 @@ import { import config from "@/config/config.json"; import languages from "@/config/language.json"; -export const getSinglePage = async ( +export const getSP = async ( collectionName: C, lang: keyof ContentEntryMap | undefined ): Promise[]> => { @@ -40,7 +40,7 @@ export const getSinglePage = async ( return removeDrafts; }; -export const getListPage = async ( +export const getLP = async ( collectionName: C, lang: keyof ContentEntryMap | undefined ): Promise[]> => { @@ -67,4 +67,68 @@ export const getListPage = async ( return pages; }; + +export const getSinglePage = async ( + collectionName: C, + lang: keyof ContentEntryMap | undefined, + subCollectionName?: string +): Promise[]> => { + const { default_language } = config.settings; + + const selectedLanguageCode = lang || default_language; + + const language = languages.find( + (l: any) => l.languageCode === selectedLanguageCode + ); + + if (!language) { + throw new Error("Language not found"); + } + + const { contentDir } = language; + + const path = subCollectionName + ? `${contentDir}/${subCollectionName}` + : contentDir; + + const pages: CollectionEntry[] = (await getCollection( + collectionName as any, + ({ id }: any) => { + return id.startsWith(path) && !id.endsWith("-index.md"); + } + )) as CollectionEntry[]; + + // @ts-ignore + const removeDrafts = pages.filter((data) => !data.data.draft); + + return removeDrafts; +}; + +export const getListPage = async ( + collectionName: C, + lang: keyof ContentEntryMap | undefined +): Promise[]> => { + const { default_language } = config.settings; + + const selectedLanguageCode = lang || default_language; + + const language = languages.find( + (l: any) => l.languageCode == selectedLanguageCode + ); + + if (!language) { + throw new Error("Language not found"); + } + + const { contentDir } = language; + + const pages: CollectionEntry[] = (await getCollection( + collectionName as any, + ({ id }: any) => { + return id.startsWith(contentDir); + } + )) as CollectionEntry[]; + + return pages; +}; --- diff --git a/src/lib/taxonomyParser.astro b/src/lib/taxonomyParser.astro index 69c0c1c..ad38fb0 100644 --- a/src/lib/taxonomyParser.astro +++ b/src/lib/taxonomyParser.astro @@ -16,7 +16,7 @@ export const getTaxonomy = async (collection: string, name: string) => { actualCollection = language.contentDir; } else { const defaultLanguageMatch = languages.find( - (l) => l.languageCode === default_language, + (l) => l.languageCode === default_language ); if (defaultLanguageMatch) { actualCollection = defaultLanguageMatch.contentDir; @@ -24,10 +24,10 @@ export const getTaxonomy = async (collection: string, name: string) => { } const singlePages = await getCollection( - actualCollection as keyof ContentEntryMap, + "blog" as keyof ContentEntryMap, ({ id }: any) => { - return id.startsWith("blog") && !id.endsWith("-index.md"); - }, + return id.startsWith(actualCollection) && !id.endsWith("-index.md"); + } ); const taxonomyPages = singlePages.map((page: any) => page.data[name]); let taxonomies: string[] = []; @@ -52,7 +52,7 @@ export const getAllTaxonomy = async (collection: string, name: string) => { actualCollection = language.contentDir; } else { const defaultLanguageMatch = languages.find( - (l) => l.languageCode === default_language, + (l) => l.languageCode === default_language ); if (defaultLanguageMatch) { actualCollection = defaultLanguageMatch.contentDir; @@ -60,10 +60,10 @@ export const getAllTaxonomy = async (collection: string, name: string) => { } const singlePages = await getCollection( - actualCollection as keyof ContentEntryMap, + "blog" as keyof ContentEntryMap, ({ id }: any) => { - return id.startsWith("blog") && !id.endsWith("-index.md"); - }, + return id.startsWith(actualCollection) && !id.endsWith("-index.md"); + } ); const taxonomyPages = singlePages.map((page: any) => page.data[name]); let taxonomies: string[] = []; diff --git a/src/pages/[...lang]/[regular].astro b/src/pages/[...lang]/[regular].astro index 6e0ebc8..cc08640 100755 --- a/src/pages/[...lang]/[regular].astro +++ b/src/pages/[...lang]/[regular].astro @@ -10,7 +10,7 @@ export async function getStaticPaths() { supportedLang.map(async (lang) => { const pages = await getSinglePage("pages", lang as keyof ContentEntryMap); - return pages.map((page: any) => ({ + return pages.map((page) => ({ params: { lang: lang || undefined, regular: page.slug.split("/").pop(), diff --git a/src/pages/[...lang]/about.astro b/src/pages/[...lang]/about.astro index c45110a..9065501 100644 --- a/src/pages/[...lang]/about.astro +++ b/src/pages/[...lang]/about.astro @@ -4,7 +4,7 @@ import Base from "@/layouts/Base.astro"; import { getListPage } from "@/lib/contentParser.astro"; import { supportedLang } from "@/lib/utils/languageParser"; import { markdownify } from "@/lib/utils/textConverter"; -import type { ContentCollectionKey, ContentEntryMap } from "astro:content"; +import type { ContentEntryMap } from "astro:content"; export function getStaticPaths() { const paths = supportedLang.map((lang) => ({ @@ -14,10 +14,7 @@ export function getStaticPaths() { } const { lang } = Astro.params; -const about: any = await getListPage( - "about" as ContentCollectionKey, - lang as keyof ContentEntryMap -); +const about = await getListPage("about", lang as keyof ContentEntryMap); const { Content } = await about[0].render(); const { title, description, meta_title, image } = about[0].data; diff --git a/src/pages/[...lang]/authors/[single].astro b/src/pages/[...lang]/authors/[single].astro index afdf6ae..e50b1ee 100755 --- a/src/pages/[...lang]/authors/[single].astro +++ b/src/pages/[...lang]/authors/[single].astro @@ -14,12 +14,12 @@ export async function getStaticPaths() { const paths = await Promise.all( supportedLang.map(async (lang) => { - const authors: any = await getSinglePage( + const authors = await getSinglePage( COLLECTION_FOLDER, lang as keyof ContentEntryMap ); - return authors.map((author: any) => ({ + return authors.map((author) => ({ params: { lang: lang || undefined, single: author.slug.split("/").pop(), @@ -42,7 +42,7 @@ const { Content } = await author.render(); const BLOG_FOLDER = "blog"; const posts = await getSinglePage(BLOG_FOLDER, lang as keyof ContentEntryMap); const postFilterByAuthor = posts.filter( - (post: any) => slugify(post.data.author) === slugify(title) + (post) => slugify(post.data.author) === slugify(title) ); --- diff --git a/src/pages/[...lang]/authors/index.astro b/src/pages/[...lang]/authors/index.astro index 902e6fa..e0f1e8d 100755 --- a/src/pages/[...lang]/authors/index.astro +++ b/src/pages/[...lang]/authors/index.astro @@ -16,7 +16,7 @@ export function getStaticPaths() { } const { lang } = Astro.params; -const authorIndex: any = await getListPage( +const authorIndex = await getListPage( COLLECTION_FOLDER, lang as keyof ContentEntryMap ); diff --git a/src/pages/[...lang]/blog/[single].astro b/src/pages/[...lang]/blog/[single].astro index f28de60..8cfa906 100755 --- a/src/pages/[...lang]/blog/[single].astro +++ b/src/pages/[...lang]/blog/[single].astro @@ -10,12 +10,12 @@ export async function getStaticPaths() { const paths = await Promise.all( supportedLang.map(async (lang) => { - const posts: any = await getSinglePage( + const posts = await getSinglePage( BLOG_FOLDER, lang as keyof ContentEntryMap ); - return posts.map((post: any) => ({ + return posts.map((post) => ({ params: { lang: lang || undefined, single: post.slug.split("/").pop(), diff --git a/src/pages/[...lang]/blog/index.astro b/src/pages/[...lang]/blog/index.astro index 9147c46..c4f44a9 100755 --- a/src/pages/[...lang]/blog/index.astro +++ b/src/pages/[...lang]/blog/index.astro @@ -19,7 +19,7 @@ export function getStaticPaths() { } const { lang } = Astro.params; const BLOG_FOLDER = "blog"; -const postIndex: any = await getListPage( +const postIndex = await getListPage( BLOG_FOLDER, lang as keyof ContentEntryMap ); diff --git a/src/pages/[...lang]/contact.astro b/src/pages/[...lang]/contact.astro index f367848..9534843 100644 --- a/src/pages/[...lang]/contact.astro +++ b/src/pages/[...lang]/contact.astro @@ -4,7 +4,6 @@ import Base from "@/layouts/Base.astro"; import { getListPage } from "@/lib/contentParser.astro"; import { getTranslations, supportedLang } from "@/lib/utils/languageParser"; import PageHeader from "@/partials/PageHeader.astro"; -import type { CollectionKey } from "astro:content"; import { type ContentEntryMap } from "astro:content"; export function getStaticPaths() { @@ -15,10 +14,7 @@ export function getStaticPaths() { } const { lang } = Astro.params; -const contact: any = await getListPage( - "contact" as CollectionKey, - lang as keyof ContentEntryMap -); +const contact = await getListPage("contact", lang as keyof ContentEntryMap); const { contact_form_action }: { contact_form_action: string } = config.params; const { title, description, meta_title, image } = contact[0].data; diff --git a/src/pages/[...lang]/index.astro b/src/pages/[...lang]/index.astro index d0bd1bf..a4aae5f 100755 --- a/src/pages/[...lang]/index.astro +++ b/src/pages/[...lang]/index.astro @@ -6,18 +6,9 @@ import { supportedLang } from "@/lib/utils/languageParser"; import { markdownify } from "@/lib/utils/textConverter"; import CallToAction from "@/partials/CallToAction.astro"; import Testimonial from "@/partials/Testimonial.astro"; -import type { Button, Feature } from "@/types"; -import type { ContentCollectionKey, ContentEntryMap } from "astro:content"; +import type { Feature } from "@/types"; +import type { ContentEntryMap } from "astro:content"; import { FaCheck } from "react-icons/fa"; -interface Homepage { - banner: { - title: string; - content: string; - image: string; - button: Button; - }; - features: Feature[]; -} export function getStaticPaths() { const paths = supportedLang.map((lang) => ({ @@ -27,20 +18,19 @@ export function getStaticPaths() { } const { lang } = Astro.params; -const homepage: any = await getListPage( - "homepage" as ContentCollectionKey, - lang as keyof ContentEntryMap -); -const { banner, features }: Homepage = homepage[0].data; +const homepage = await getListPage("homepage", lang as keyof ContentEntryMap); +const { banner, features } = homepage[0].data; const testimonial = await getSinglePage( - "sections/testimonial" as ContentCollectionKey, - lang as keyof ContentEntryMap + "sections", + lang as keyof ContentEntryMap, + "testimonial" ); const call_to_action = await getSinglePage( - "sections/call-to-action" as ContentCollectionKey, - lang as keyof ContentEntryMap + "sections", + lang as keyof ContentEntryMap, + "call-to-action" ); ---