changed offres + added reference to HP
This commit is contained in:
parent
4ec6b01162
commit
4d184782fc
|
@ -1,8 +1,8 @@
|
||||||
type DefaultLangCode = "fr"
|
type DefaultLangCode = "fr"
|
||||||
type SupportedLangCode = "en"
|
type SupportedLangCode = "en"
|
||||||
type LangCode = DefaultLangCode | SupportedLangCode
|
type LangCode = DefaultLangCode | SupportedLangCode
|
||||||
type RouteUri = | "/articles/[...slug]" | "/articles" | "/agments/[slug]" | "/agments" | "/references" | "/veille" | "/" | "/plan-du-site"
|
type RouteUri = | "/articles/[slug]" | "/articles" | "/agments/[slug]" | "/agments" | "/references" | "/veille" | "/" | "/plan-du-site"
|
||||||
type RouteParams = {"/articles/[...slug]": { "...slug": string; }; "/articles": undefined; "/agments/[slug]": { "slug": string; }; "/agments": undefined; "/references": undefined; "/veille": undefined; "/": undefined; "/plan-du-site": undefined; }
|
type RouteParams = {"/articles/[slug]": { "slug": string; }; "/articles": undefined; "/agments/[slug]": { "slug": string; }; "/agments": undefined; "/references": undefined; "/veille": undefined; "/": undefined; "/plan-du-site": undefined; }
|
||||||
type TranslationPath = "accueil" | "tagline" | "copyright" | "contact.title" | "contact.email" | "contact.tel" | "contenuVide" | "header.skipLink" | "header.mainNav" | "header.homeLink" | "sitemap" | "prevNext.contenus" | "prevNext.precedent" | "prevNext.suivant" | "article.titre" | "article.tagline" | "article.published" | "meta.publication" | "meta.modification" | "meta.credit" | "fragments.titre" | "fragments.tagline" | "references.titre" | "references.slug" | "references.cta" | "references.tagline" | "veille.titre" | "veille.tagline" | "erreur.introuvable" | "erreur.autre" | "erreur.lienRetour" | "seo.meta.description" | "seo.article.title" | "seo.article.description" | "seo.code.title" | "seo.code.description" | "seo.references.title" | "seo.references.description" | "index.articles.pageName" | "index.articles.subtitle" | "index.fragments.pageName" | "index.fragments.subtitle" | "index.references.pageName" | "index.references.subtitle" | "index.veille.pageName" | "index.veille.subtitle" | "index.title" | "index.subtitle" | "index.quoi" | "index.comment" | "index.opensource" | "index.writing" | "index.latestProjects" | "index.latestArticles" | "index.allProjects" | "index.allArticles" | "index.latestSnippets" | "index.allSnippets" | "index.toc" | "contact.contenuVide"
|
type TranslationPath = "accueil" | "tagline" | "copyright" | "contact.title" | "contact.email" | "contact.tel" | "contenuVide" | "header.skipLink" | "header.mainNav" | "header.homeLink" | "sitemap" | "prevNext.contenus" | "prevNext.precedent" | "prevNext.suivant" | "article.titre" | "article.tagline" | "article.published" | "meta.publication" | "meta.modification" | "meta.credit" | "fragments.titre" | "fragments.tagline" | "references.titre" | "references.slug" | "references.cta" | "references.tagline" | "veille.titre" | "veille.tagline" | "erreur.introuvable" | "erreur.autre" | "erreur.lienRetour" | "seo.meta.description" | "seo.article.title" | "seo.article.description" | "seo.code.title" | "seo.code.description" | "seo.references.title" | "seo.references.description" | "index.articles.pageName" | "index.articles.subtitle" | "index.fragments.pageName" | "index.fragments.subtitle" | "index.references.pageName" | "index.references.subtitle" | "index.veille.pageName" | "index.veille.subtitle" | "index.title" | "index.subtitle" | "index.quoi" | "index.comment" | "index.opensource" | "index.writing" | "index.latestProjects" | "index.latestArticles" | "index.allProjects" | "index.allArticles" | "index.latestSnippets" | "index.allSnippets" | "index.toc" | "contact.contenuVide"
|
||||||
type TranslationOptions = { "accueil": {} | undefined; "tagline": {} | undefined; "copyright": {} | undefined; "contact.title": {} | undefined; "contact.email": {} | undefined; "contact.tel": {} | undefined; "contenuVide": {} | undefined; "header.skipLink": {} | undefined; "header.mainNav": {} | undefined; "header.homeLink": {} | undefined; "sitemap": {} | undefined; "prevNext.contenus": {} | undefined; "prevNext.precedent": {} | undefined; "prevNext.suivant": {} | undefined; "article.titre": {} | undefined; "article.tagline": {} | undefined; "article.published": { datetime: unknown; options: unknown; }; "meta.publication": {} | undefined; "meta.modification": {} | undefined; "meta.credit": {} | undefined; "fragments.titre": {} | undefined; "fragments.tagline": {} | undefined; "references.titre": {} | undefined; "references.slug": {} | undefined; "references.cta": {} | undefined; "references.tagline": {} | undefined; "veille.titre": {} | undefined; "veille.tagline": {} | undefined; "erreur.introuvable": {} | undefined; "erreur.autre": {} | undefined; "erreur.lienRetour": {} | undefined; "seo.meta.description": {} | undefined; "seo.article.title": {} | undefined; "seo.article.description": {} | undefined; "seo.code.title": {} | undefined; "seo.code.description": {} | undefined; "seo.references.title": {} | undefined; "seo.references.description": {} | undefined; "index.articles.pageName": {} | undefined; "index.articles.subtitle": {} | undefined; "index.fragments.pageName": {} | undefined; "index.fragments.subtitle": {} | undefined; "index.references.pageName": {} | undefined; "index.references.subtitle": {} | undefined; "index.veille.pageName": {} | undefined; "index.veille.subtitle": {} | undefined; "index.title": {} | undefined; "index.subtitle": {} | undefined; "index.quoi": {} | undefined; "index.comment": {} | undefined; "index.opensource": {} | undefined; "index.writing": {} | undefined; "index.latestProjects": {} | undefined; "index.latestArticles": {} | undefined; "index.allProjects": {} | undefined; "index.allArticles": {} | undefined; "index.latestSnippets": {} | undefined; "index.allSnippets": {} | undefined; "index.toc": {} | undefined; "contact.contenuVide": {} | undefined; }
|
type TranslationOptions = { "accueil": {} | undefined; "tagline": {} | undefined; "copyright": {} | undefined; "contact.title": {} | undefined; "contact.email": {} | undefined; "contact.tel": {} | undefined; "contenuVide": {} | undefined; "header.skipLink": {} | undefined; "header.mainNav": {} | undefined; "header.homeLink": {} | undefined; "sitemap": {} | undefined; "prevNext.contenus": {} | undefined; "prevNext.precedent": {} | undefined; "prevNext.suivant": {} | undefined; "article.titre": {} | undefined; "article.tagline": {} | undefined; "article.published": { datetime: unknown; options: unknown; }; "meta.publication": {} | undefined; "meta.modification": {} | undefined; "meta.credit": {} | undefined; "fragments.titre": {} | undefined; "fragments.tagline": {} | undefined; "references.titre": {} | undefined; "references.slug": {} | undefined; "references.cta": {} | undefined; "references.tagline": {} | undefined; "veille.titre": {} | undefined; "veille.tagline": {} | undefined; "erreur.introuvable": {} | undefined; "erreur.autre": {} | undefined; "erreur.lienRetour": {} | undefined; "seo.meta.description": {} | undefined; "seo.article.title": {} | undefined; "seo.article.description": {} | undefined; "seo.code.title": {} | undefined; "seo.code.description": {} | undefined; "seo.references.title": {} | undefined; "seo.references.description": {} | undefined; "index.articles.pageName": {} | undefined; "index.articles.subtitle": {} | undefined; "index.fragments.pageName": {} | undefined; "index.fragments.subtitle": {} | undefined; "index.references.pageName": {} | undefined; "index.references.subtitle": {} | undefined; "index.veille.pageName": {} | undefined; "index.veille.subtitle": {} | undefined; "index.title": {} | undefined; "index.subtitle": {} | undefined; "index.quoi": {} | undefined; "index.comment": {} | undefined; "index.opensource": {} | undefined; "index.writing": {} | undefined; "index.latestProjects": {} | undefined; "index.latestArticles": {} | undefined; "index.allProjects": {} | undefined; "index.allArticles": {} | undefined; "index.latestSnippets": {} | undefined; "index.allSnippets": {} | undefined; "index.toc": {} | undefined; "contact.contenuVide": {} | undefined; }
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,7 @@ declare module 'astro:content' {
|
||||||
|
|
||||||
declare module 'astro:content' {
|
declare module 'astro:content' {
|
||||||
export { z } from 'astro/zod';
|
export { z } from 'astro/zod';
|
||||||
export type CollectionEntry<C extends keyof typeof entryMap> =
|
export type CollectionEntry<C extends keyof AnyEntryMap> = AnyEntryMap[C][keyof AnyEntryMap[C]];
|
||||||
(typeof entryMap)[C][keyof (typeof entryMap)[C]];
|
|
||||||
|
|
||||||
// TODO: Remove this when having this fallback is no longer relevant. 2.3? 3.0? - erika, 2023-04-04
|
// TODO: Remove this when having this fallback is no longer relevant. 2.3? 3.0? - erika, 2023-04-04
|
||||||
/**
|
/**
|
||||||
|
@ -75,316 +74,410 @@ declare module 'astro:content' {
|
||||||
|
|
||||||
export type SchemaContext = { image: ImageFunction };
|
export type SchemaContext = { image: ImageFunction };
|
||||||
|
|
||||||
type BaseCollectionConfig<S extends BaseSchema> = {
|
type DataCollectionConfig<S extends BaseSchema> = {
|
||||||
|
type: 'data';
|
||||||
schema?: S | ((context: SchemaContext) => S);
|
schema?: S | ((context: SchemaContext) => S);
|
||||||
};
|
};
|
||||||
export function defineCollection<S extends BaseSchema>(
|
|
||||||
input: BaseCollectionConfig<S>
|
|
||||||
): BaseCollectionConfig<S>;
|
|
||||||
|
|
||||||
type EntryMapKeys = keyof typeof entryMap;
|
type ContentCollectionConfig<S extends BaseSchema> = {
|
||||||
|
type?: 'content';
|
||||||
|
schema?: S | ((context: SchemaContext) => S);
|
||||||
|
};
|
||||||
|
|
||||||
|
type CollectionConfig<S> = ContentCollectionConfig<S> | DataCollectionConfig<S>;
|
||||||
|
|
||||||
|
export function defineCollection<S extends BaseSchema>(
|
||||||
|
input: CollectionConfig<S>
|
||||||
|
): CollectionConfig<S>;
|
||||||
|
|
||||||
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
||||||
type ValidEntrySlug<C extends EntryMapKeys> = AllValuesOf<(typeof entryMap)[C]>['slug'];
|
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
||||||
|
ContentEntryMap[C]
|
||||||
|
>['slug'];
|
||||||
|
|
||||||
export function getEntryBySlug<
|
export function getEntryBySlug<
|
||||||
C extends keyof typeof entryMap,
|
C extends keyof ContentEntryMap,
|
||||||
E extends ValidEntrySlug<C> | (string & {})
|
E extends ValidContentEntrySlug<C> | (string & {})
|
||||||
>(
|
>(
|
||||||
collection: C,
|
collection: C,
|
||||||
// Note that this has to accept a regular string too, for SSR
|
// Note that this has to accept a regular string too, for SSR
|
||||||
entrySlug: E
|
entrySlug: E
|
||||||
): E extends ValidEntrySlug<C>
|
): E extends ValidContentEntrySlug<C>
|
||||||
? Promise<CollectionEntry<C>>
|
? Promise<CollectionEntry<C>>
|
||||||
: Promise<CollectionEntry<C> | undefined>;
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
export function getCollection<C extends keyof typeof entryMap, E extends CollectionEntry<C>>(
|
|
||||||
|
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
||||||
|
collection: C,
|
||||||
|
entryId: E
|
||||||
|
): Promise<CollectionEntry<C>>;
|
||||||
|
|
||||||
|
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
||||||
collection: C,
|
collection: C,
|
||||||
filter?: (entry: CollectionEntry<C>) => entry is E
|
filter?: (entry: CollectionEntry<C>) => entry is E
|
||||||
): Promise<E[]>;
|
): Promise<E[]>;
|
||||||
export function getCollection<C extends keyof typeof entryMap>(
|
export function getCollection<C extends keyof AnyEntryMap>(
|
||||||
collection: C,
|
collection: C,
|
||||||
filter?: (entry: CollectionEntry<C>) => unknown
|
filter?: (entry: CollectionEntry<C>) => unknown
|
||||||
): Promise<CollectionEntry<C>[]>;
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {})
|
||||||
|
>(entry: {
|
||||||
|
collection: C;
|
||||||
|
slug: E;
|
||||||
|
}): E extends ValidContentEntrySlug<C>
|
||||||
|
? Promise<CollectionEntry<C>>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof DataEntryMap,
|
||||||
|
E extends keyof DataEntryMap[C] | (string & {})
|
||||||
|
>(entry: {
|
||||||
|
collection: C;
|
||||||
|
id: E;
|
||||||
|
}): E extends keyof DataEntryMap[C]
|
||||||
|
? Promise<DataEntryMap[C][E]>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof ContentEntryMap,
|
||||||
|
E extends ValidContentEntrySlug<C> | (string & {})
|
||||||
|
>(
|
||||||
|
collection: C,
|
||||||
|
slug: E
|
||||||
|
): E extends ValidContentEntrySlug<C>
|
||||||
|
? Promise<CollectionEntry<C>>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
export function getEntry<
|
||||||
|
C extends keyof DataEntryMap,
|
||||||
|
E extends keyof DataEntryMap[C] | (string & {})
|
||||||
|
>(
|
||||||
|
collection: C,
|
||||||
|
id: E
|
||||||
|
): E extends keyof DataEntryMap[C]
|
||||||
|
? Promise<DataEntryMap[C][E]>
|
||||||
|
: Promise<CollectionEntry<C> | undefined>;
|
||||||
|
|
||||||
|
/** Resolve an array of entry references from the same collection */
|
||||||
|
export function getEntries<C extends keyof ContentEntryMap>(
|
||||||
|
entries: {
|
||||||
|
collection: C;
|
||||||
|
slug: ValidContentEntrySlug<C>;
|
||||||
|
}[]
|
||||||
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
export function getEntries<C extends keyof DataEntryMap>(
|
||||||
|
entries: {
|
||||||
|
collection: C;
|
||||||
|
id: keyof DataEntryMap[C];
|
||||||
|
}[]
|
||||||
|
): Promise<CollectionEntry<C>[]>;
|
||||||
|
|
||||||
|
export function reference<C extends keyof AnyEntryMap>(
|
||||||
|
collection: C
|
||||||
|
): import('astro/zod').ZodEffects<
|
||||||
|
import('astro/zod').ZodString,
|
||||||
|
C extends keyof ContentEntryMap
|
||||||
|
? {
|
||||||
|
collection: C;
|
||||||
|
slug: ValidContentEntrySlug<C>;
|
||||||
|
}
|
||||||
|
: {
|
||||||
|
collection: C;
|
||||||
|
id: keyof DataEntryMap[C];
|
||||||
|
}
|
||||||
|
>;
|
||||||
|
// Allow generic `string` to avoid excessive type errors in the config
|
||||||
|
// if `dev` is not running to update as you edit.
|
||||||
|
// Invalid collection names will be caught at build time.
|
||||||
|
export function reference<C extends string>(
|
||||||
|
collection: C
|
||||||
|
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
||||||
|
|
||||||
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
||||||
type InferEntrySchema<C extends keyof typeof entryMap> = import('astro/zod').infer<
|
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
||||||
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
||||||
>;
|
>;
|
||||||
|
|
||||||
const entryMap: {
|
type ContentEntryMap = {
|
||||||
"articles": {
|
"articles": {
|
||||||
"en/2022.md": {
|
"en/2022.md": {
|
||||||
id: "en/2022.md",
|
id: "en/2022.md";
|
||||||
slug: "2022",
|
slug: "2022";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/2023.md": {
|
"en/2023.md": {
|
||||||
id: "en/2023.md",
|
id: "en/2023.md";
|
||||||
slug: "2023",
|
slug: "2023";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/after-effects-expressions.mdx": {
|
"en/after-effects-expressions.mdx": {
|
||||||
id: "en/after-effects-expressions.mdx",
|
id: "en/after-effects-expressions.mdx";
|
||||||
slug: "after-effects-expressions",
|
slug: "after-effects-expressions";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"en/faq.md": {
|
"en/faq.md": {
|
||||||
id: "en/faq.md",
|
id: "en/faq.md";
|
||||||
slug: "faq",
|
slug: "faq";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/gratuiste.md": {
|
"en/gratuiste.md": {
|
||||||
id: "en/gratuiste.md",
|
id: "en/gratuiste.md";
|
||||||
slug: "gratuiste",
|
slug: "gratuiste";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/sci-hub-blocage.mdx": {
|
"en/sci-hub-blocage.mdx": {
|
||||||
id: "en/sci-hub-blocage.mdx",
|
id: "en/sci-hub-blocage.mdx";
|
||||||
slug: "sci-hub-unblock",
|
slug: "sci-hub-unblock";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"en/the-day-I-jamd.mdx": {
|
"en/the-day-I-jamd.mdx": {
|
||||||
id: "en/the-day-I-jamd.mdx",
|
id: "en/the-day-I-jamd.mdx";
|
||||||
slug: "the-day-I-jamd",
|
slug: "the-day-I-jamd";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"en/video-compression.mdx": {
|
"en/video-compression.mdx": {
|
||||||
id: "en/video-compression.mdx",
|
id: "en/video-compression.mdx";
|
||||||
slug: "video-compression",
|
slug: "video-compression";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/2022.md": {
|
"fr/2022.md": {
|
||||||
id: "fr/2022.md",
|
id: "fr/2022.md";
|
||||||
slug: "2022",
|
slug: "2022";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/2023.md": {
|
"fr/2023.md": {
|
||||||
id: "fr/2023.md",
|
id: "fr/2023.md";
|
||||||
slug: "2023",
|
slug: "2023";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/after-effects-expressions.md": {
|
"fr/after-effects-expressions.md": {
|
||||||
id: "fr/after-effects-expressions.md",
|
id: "fr/after-effects-expressions.md";
|
||||||
slug: "after-effects-expressions",
|
slug: "after-effects-expressions";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/faq.md": {
|
"fr/faq.md": {
|
||||||
id: "fr/faq.md",
|
id: "fr/faq.md";
|
||||||
slug: "faq",
|
slug: "faq";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/gratuiste.md": {
|
"fr/gratuiste.md": {
|
||||||
id: "fr/gratuiste.md",
|
id: "fr/gratuiste.md";
|
||||||
slug: "gratuiste",
|
slug: "gratuiste";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/sci-hub-blocage.mdx": {
|
"fr/sci-hub-blocage.mdx": {
|
||||||
id: "fr/sci-hub-blocage.mdx",
|
id: "fr/sci-hub-blocage.mdx";
|
||||||
slug: "sci-hub-blocage",
|
slug: "sci-hub-blocage";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/the-day-I-jamd.mdx": {
|
"fr/the-day-I-jamd.mdx": {
|
||||||
id: "fr/the-day-I-jamd.mdx",
|
id: "fr/the-day-I-jamd.mdx";
|
||||||
slug: "the-day-I-jamd",
|
slug: "the-day-I-jamd";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/video-compression.md": {
|
"fr/video-compression.md": {
|
||||||
id: "fr/video-compression.md",
|
id: "fr/video-compression.md";
|
||||||
slug: "video-compression",
|
slug: "video-compression";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "articles",
|
collection: "articles";
|
||||||
data: InferEntrySchema<"articles">
|
data: InferEntrySchema<"articles">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
},
|
};
|
||||||
"fragments": {
|
"fragments": {
|
||||||
"en/acme-sh-tls-cert.md": {
|
"en/acme-sh-tls-cert.md": {
|
||||||
id: "en/acme-sh-tls-cert.md",
|
id: "en/acme-sh-tls-cert.md";
|
||||||
slug: "acme-sh-tls-cert",
|
slug: "acme-sh-tls-cert";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/array-vs-array.md": {
|
"en/array-vs-array.md": {
|
||||||
id: "en/array-vs-array.md",
|
id: "en/array-vs-array.md";
|
||||||
slug: "array-vs-array",
|
slug: "array-vs-array";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/buttons.md": {
|
"en/buttons.md": {
|
||||||
id: "en/buttons.md",
|
id: "en/buttons.md";
|
||||||
slug: "buttons",
|
slug: "buttons";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/image-full.mdx": {
|
"en/image-full.mdx": {
|
||||||
id: "en/image-full.mdx",
|
id: "en/image-full.mdx";
|
||||||
slug: "image-full",
|
slug: "image-full";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"en/nuxt-graphql-static.md": {
|
"en/nuxt-graphql-static.md": {
|
||||||
id: "en/nuxt-graphql-static.md",
|
id: "en/nuxt-graphql-static.md";
|
||||||
slug: "nuxt-graphql-static",
|
slug: "nuxt-graphql-static";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/super-cookies.md": {
|
"en/super-cookies.md": {
|
||||||
id: "en/super-cookies.md",
|
id: "en/super-cookies.md";
|
||||||
slug: "super-cookies",
|
slug: "super-cookies";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/toulouse-fun.md": {
|
"en/toulouse-fun.md": {
|
||||||
id: "en/toulouse-fun.md",
|
id: "en/toulouse-fun.md";
|
||||||
slug: "toulouse-fun",
|
slug: "toulouse-fun";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/acme-sh-tls-cert.md": {
|
"fr/acme-sh-tls-cert.md": {
|
||||||
id: "fr/acme-sh-tls-cert.md",
|
id: "fr/acme-sh-tls-cert.md";
|
||||||
slug: "acme-sh-tls-cert",
|
slug: "acme-sh-tls-cert";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/array-vs-array.md": {
|
"fr/array-vs-array.md": {
|
||||||
id: "fr/array-vs-array.md",
|
id: "fr/array-vs-array.md";
|
||||||
slug: "array-vs-array",
|
slug: "array-vs-array";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/buttons.mdx": {
|
"fr/buttons.mdx": {
|
||||||
id: "fr/buttons.mdx",
|
id: "fr/buttons.mdx";
|
||||||
slug: "buttons",
|
slug: "buttons";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/image-full.mdx": {
|
"fr/image-full.mdx": {
|
||||||
id: "fr/image-full.mdx",
|
id: "fr/image-full.mdx";
|
||||||
slug: "image-full",
|
slug: "image-full";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/nuxt-graphql-static.md": {
|
"fr/nuxt-graphql-static.md": {
|
||||||
id: "fr/nuxt-graphql-static.md",
|
id: "fr/nuxt-graphql-static.md";
|
||||||
slug: "nuxt-graphql-static",
|
slug: "nuxt-graphql-static";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/super-cookies.mdx": {
|
"fr/super-cookies.mdx": {
|
||||||
id: "fr/super-cookies.mdx",
|
id: "fr/super-cookies.mdx";
|
||||||
slug: "super-cookies",
|
slug: "super-cookies";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".mdx"] },
|
} & { render(): Render[".mdx"] };
|
||||||
"fr/toulouse-fun.md": {
|
"fr/toulouse-fun.md": {
|
||||||
id: "fr/toulouse-fun.md",
|
id: "fr/toulouse-fun.md";
|
||||||
slug: "toulouse-fun",
|
slug: "toulouse-fun";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "fragments",
|
collection: "fragments";
|
||||||
data: InferEntrySchema<"fragments">
|
data: InferEntrySchema<"fragments">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
},
|
};
|
||||||
"references": {
|
"references": {
|
||||||
"en/3w.md": {
|
"en/3w.md": {
|
||||||
id: "en/3w.md",
|
id: "en/3w.md";
|
||||||
slug: "3w",
|
slug: "3w";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/natureo.md": {
|
"en/natureo.md": {
|
||||||
id: "en/natureo.md",
|
id: "en/natureo.md";
|
||||||
slug: "natureo",
|
slug: "natureo";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/parole-expression.md": {
|
"en/parole-expression.md": {
|
||||||
id: "en/parole-expression.md",
|
id: "en/parole-expression.md";
|
||||||
slug: "parole-expression",
|
slug: "parole-expression";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"en/rose-primaire.md": {
|
"en/rose-primaire.md": {
|
||||||
id: "en/rose-primaire.md",
|
id: "en/rose-primaire.md";
|
||||||
slug: "rose-primaire",
|
slug: "rose-primaire";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/3w.md": {
|
"fr/3w.md": {
|
||||||
id: "fr/3w.md",
|
id: "fr/3w.md";
|
||||||
slug: "3w",
|
slug: "3w";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/natureo.md": {
|
"fr/natureo.md": {
|
||||||
id: "fr/natureo.md",
|
id: "fr/natureo.md";
|
||||||
slug: "natureo",
|
slug: "natureo";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/parole-expression.md": {
|
"fr/parole-expression.md": {
|
||||||
id: "fr/parole-expression.md",
|
id: "fr/parole-expression.md";
|
||||||
slug: "parole-expression",
|
slug: "parole-expression";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
"fr/rose-primaire.md": {
|
"fr/rose-primaire.md": {
|
||||||
id: "fr/rose-primaire.md",
|
id: "fr/rose-primaire.md";
|
||||||
slug: "rose-primaire",
|
slug: "rose-primaire";
|
||||||
body: string,
|
body: string;
|
||||||
collection: "references",
|
collection: "references";
|
||||||
data: InferEntrySchema<"references">
|
data: InferEntrySchema<"references">
|
||||||
} & { render(): Render[".md"] },
|
} & { render(): Render[".md"] };
|
||||||
},
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type DataEntryMap = {
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
||||||
|
|
||||||
type ContentConfig = typeof import("../src/content/config");
|
type ContentConfig = typeof import("../src/content/config");
|
||||||
}
|
}
|
||||||
|
|
10
package.json
10
package.json
|
@ -14,11 +14,11 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/image": "0.16.7",
|
"@astrojs/image": "0.16.7",
|
||||||
"@astrojs/mdx": "^0.19.1",
|
"@astrojs/mdx": "^0.19.6",
|
||||||
"@astrojs/rss": "^2.4.1",
|
"@astrojs/rss": "^2.4.3",
|
||||||
"@astrojs/sitemap": "^1.3.1",
|
"@astrojs/sitemap": "^1.3.3",
|
||||||
"astro": "2.4.3",
|
"astro": "2.5.7",
|
||||||
"astro-i18n": "1.7.0"
|
"astro-i18n": "1.8.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"autoprefixer": "^10.4.13",
|
"autoprefixer": "^10.4.13",
|
||||||
|
|
1036
pnpm-lock.yaml
1036
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 821 B After Width: | Height: | Size: 821 B |
|
@ -0,0 +1,20 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="2" clip-rule="evenodd" viewBox="0 0 400 479">
|
||||||
|
<path fill="none" d="M0 0h400v478.049H0z"/>
|
||||||
|
<clipPath id="a">
|
||||||
|
<path d="M0 0h400v478.049H0z"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#a)">
|
||||||
|
<path fill="#162e57" d="M29.269 268.293h29.268v209.756H29.269zm39.024 0h29.268v209.756H68.293z"/>
|
||||||
|
<path fill="#ff826c" d="M43.903 29.268h43.902v53.659H43.903zm0-29.268h58.537v29.268H43.903z"/>
|
||||||
|
<path fill="#d4ebf2" d="M0 82.927h43.903v185.366H0z"/>
|
||||||
|
<path fill="#d4ebf2" fill-rule="nonzero" d="M165.854 175.6v-24.39h-29.268v-29.27h-24.39V82.917h-24.39v185.376h24.39V175.6h24.39v29.278h48.78V175.6h-19.512Z"/>
|
||||||
|
<path fill="#ff826c" d="M43.903 82.927h43.902v185.366H43.903zM9.415 258.536h29.61v34.147H9.415z"/>
|
||||||
|
<path fill="#162e57" d="M360.976 478.039h-29.268V268.283h29.268zm-39.024 0h-29.269V268.283h29.269z"/>
|
||||||
|
<path fill="#ff826c" d="M346.342 82.917H302.44V9.747h43.902z"/>
|
||||||
|
<path fill="#ff826c" fill-rule="nonzero" d="M400 121.941h-9.756V82.917H278.05v39.024h-24.39v29.269h-29.268v24.39H204.88v29.278h48.78V175.6h24.39v92.693h112.195v-14.635h9.757V121.941Z"/>
|
||||||
|
<path fill="#ff826c" d="M400 292.673h-29.61v-39.024H400zm-200-73.171h-29.268v-29.268h29.269z"/>
|
||||||
|
<path fill="#d4ebf2" d="M321.952 199.56h-14.498V82.918h14.498z"/>
|
||||||
|
<path fill="#162e57" d="M346.342 48.77h-24.39V24.38h24.39z"/>
|
||||||
|
<path fill="#ff826c" fill-rule="nonzero" d="M214.635 190.234h-34.147v9.756H200v19.522h14.635v-29.278Z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -1,17 +1,19 @@
|
||||||
---
|
---
|
||||||
|
import { renderContent } from "astro-i18n";
|
||||||
import MetaDate from "./MetaDate.astro";
|
import MetaDate from "./MetaDate.astro";
|
||||||
import TOC from "./TOC.astro";
|
import TOC from "./TOC.astro";
|
||||||
|
|
||||||
const { content } = Astro.props;
|
const { content } = Astro.props;
|
||||||
const { Content, headings } = await content.render();
|
// const { Content, headings } = await content.render();
|
||||||
|
const { html, headings } = await renderContent(Astro, content);
|
||||||
|
|
||||||
const toc = headings.map((heading) => {
|
const toc = headings.map((heading) => {
|
||||||
return heading;
|
return heading;
|
||||||
});
|
});
|
||||||
|
|
||||||
// if (content.data.code) {
|
if (content.data.code) {
|
||||||
// import "../styles/vendor/one-dark-pro.css";
|
import "../styles/vendor/one-dark-pro.css";
|
||||||
// }
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="sidebar region">
|
<div class="sidebar region">
|
||||||
|
@ -20,8 +22,8 @@ const toc = headings.map((heading) => {
|
||||||
<h1>{content.data.title}</h1>
|
<h1>{content.data.title}</h1>
|
||||||
<p class="h3">{content.data.subtitle}</p>
|
<p class="h3">{content.data.subtitle}</p>
|
||||||
<MetaDate item={content.data} />
|
<MetaDate item={content.data} />
|
||||||
<div class="flow content">
|
<div class="flow content" set:html={html}>
|
||||||
<Content />
|
<!-- <Content /> -->
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,7 +3,7 @@ title: Parole Expression
|
||||||
subtitle: Un nouveau site pour l'association.
|
subtitle: Un nouveau site pour l'association.
|
||||||
url: https://www.paroleexpression.fr/
|
url: https://www.paroleexpression.fr/
|
||||||
lang: fr
|
lang: fr
|
||||||
slug: "parole-expression"
|
slug: parole-expression
|
||||||
excerpt: Développement web et compagnie.
|
excerpt: Développement web et compagnie.
|
||||||
tags: ["Front-end", "éco-conception", "CMS"]
|
tags: ["Front-end", "éco-conception", "CMS"]
|
||||||
createdAt: "2022-04-19T17:11:00.000Z"
|
createdAt: "2022-04-19T17:11:00.000Z"
|
||||||
|
|
|
@ -1,31 +0,0 @@
|
||||||
---
|
|
||||||
type: section
|
|
||||||
id: offre
|
|
||||||
lang: fr
|
|
||||||
slug:
|
|
||||||
createdAt:
|
|
||||||
image: /assets/images/home/offres.svg
|
|
||||||
order: 1
|
|
||||||
quickTitle: Mes offres en freelance
|
|
||||||
quickImage: /assets/images/home/icon-desktop.svg
|
|
||||||
---
|
|
||||||
|
|
||||||
## Offres site web.
|
|
||||||
|
|
||||||
### Petit site vitrine, blog, landing page.
|
|
||||||
|
|
||||||
Qu'il s'agisse d'une création ou d'une refonte, je m'occupe de tout :
|
|
||||||
|
|
||||||
- développement sur-mesure ;
|
|
||||||
- configuration d'un outil de gestion des contenus (si pertinent) ;
|
|
||||||
- hébergement et mise en ligne ;
|
|
||||||
- maintenance.
|
|
||||||
|
|
||||||
### Plus gros site, e-commerce.
|
|
||||||
|
|
||||||
Lorsque le projet est plus volumineux, je fais appel à des partenaires talentueux partageant les mêmes valeurs :
|
|
||||||
|
|
||||||
- [Rose Primaire](https://roseprimaire.com/) pour le conseil et l'accompagnement du projet ;
|
|
||||||
- [Sylvain Plantier](https://jedessinebien.com/) et/ou [Benoît Etchevery](http://ben-etche.com/) pour l'illustration et la direction artistique.
|
|
||||||
|
|
||||||
[Consultez quelques références ici !](/references/)
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
type: section
|
||||||
|
id: offre
|
||||||
|
lang: fr
|
||||||
|
createdAt:
|
||||||
|
image: /assets/images/home/offre-1.1.svg
|
||||||
|
order: 1
|
||||||
|
quickTitle: Mes offres en freelance
|
||||||
|
quickImage: /assets/images/home/icon-desktop.svg
|
||||||
|
reference: parole-expression
|
||||||
|
---
|
||||||
|
|
||||||
|
## L'offre site web classique
|
||||||
|
|
||||||
|
Cette offre est destinée à un public souhaitant **se doter d'un site web.** Sans forcément chercher une conformité totale au [référentiel général d'amélioration de l'accessibilité](https://accessibilite.numerique.gouv.fr/) (<abbr>RGAA</abbr>), le site sera malgré tout développé au plus proche des règles du référentiel.
|
||||||
|
|
||||||
|
L'objectif principal de cette offre étant d'**établir une présence en ligne** pour le client. Que cette dernière ait un but informatif et/ou éditorial.
|
||||||
|
|
||||||
|
<a href="/offres/web-classique" class="btn">L'offre classique en détails.</a>
|
|
@ -0,0 +1,17 @@
|
||||||
|
---
|
||||||
|
type: section
|
||||||
|
lang: fr
|
||||||
|
image: /assets/images/home/offre-1.2.svg
|
||||||
|
reference: rose-primaire
|
||||||
|
---
|
||||||
|
|
||||||
|
## L'offre accessibilité avancée
|
||||||
|
|
||||||
|
Cette offre s'adresse plus spécifiquement aux entités pour lesquelles **l'accessibilité du site est un critère majeur.** Qu'il s'agisse d'une création de zéro ou d'une mise en conformité après un audit d'accessibilité.
|
||||||
|
|
||||||
|
Lorsque le projet le nécessite, je fais appel à des partenaires talentueux partageant les mêmes valeurs :
|
||||||
|
|
||||||
|
- [Rose Primaire](https://roseprimaire.com/) pour le conseil et l'accompagnement du projet ;
|
||||||
|
- [Sylvain Plantier](https://jedessinebien.com/) et/ou [Benoît Etchevery](http://ben-etche.com/) pour l'illustration et la direction artistique.
|
||||||
|
|
||||||
|
<a href="/offres/accessibilite" class="btn">L'offre accessibilité en détails.</a>
|
|
@ -1,26 +1,34 @@
|
||||||
---
|
---
|
||||||
import { astroI18n } from "astro-i18n";
|
import { createStaticPaths } from "astro-i18n";
|
||||||
astroI18n.init(Astro);
|
|
||||||
|
|
||||||
import { getCollection } from "astro:content";
|
import { getCollection } from "astro:content";
|
||||||
import EditorialContent from "../../components/EditorialContent.astro";
|
|
||||||
|
|
||||||
|
import EditorialContent from "../../components/EditorialContent.astro";
|
||||||
import BaseLayout from "../../layouts/BaseLayout.astro";
|
import BaseLayout from "../../layouts/BaseLayout.astro";
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
export const getStaticPaths = createStaticPaths(async ({ langCode }) => {
|
||||||
const articles = await getCollection("articles", ({ data }) => {
|
const articles = await getCollection("articles", ({ data }) => {
|
||||||
return data.lang === astroI18n.langCode;
|
return data.lang === langCode;
|
||||||
});
|
});
|
||||||
return articles.map((article) => ({
|
return articles.map((article) => ({
|
||||||
params: { slug: article.slug },
|
params: { slug: article.slug },
|
||||||
props: { article },
|
props: { article },
|
||||||
}));
|
}));
|
||||||
}
|
}, import.meta.url);
|
||||||
|
|
||||||
|
// export async function getStaticPaths() {
|
||||||
|
// const articles = await getCollection("articles", ({ data }) => {
|
||||||
|
// return data.lang === astroI18n.langCode;
|
||||||
|
// });
|
||||||
|
// return articles.map((article) => ({
|
||||||
|
// params: { slug: article.slug },
|
||||||
|
// props: { article },
|
||||||
|
// }));
|
||||||
|
// }
|
||||||
|
|
||||||
const { article } = Astro.props;
|
const { article } = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout pageTitle={article.data.title}>
|
<BaseLayout pageTitle={article.data.title}>
|
||||||
{article.data.lang}
|
|
||||||
<EditorialContent content={article} />
|
<EditorialContent content={article} />
|
||||||
</BaseLayout>
|
</BaseLayout>
|
|
@ -1,9 +0,0 @@
|
||||||
---
|
|
||||||
import Page from "../../articles/[...slug].astro"
|
|
||||||
|
|
||||||
export { getStaticPaths } from "../../articles/[...slug].astro"
|
|
||||||
|
|
||||||
const { props } = Astro
|
|
||||||
---
|
|
||||||
|
|
||||||
<Page {...props} />
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
---
|
||||||
|
import Page from "../../articles/[slug].astro"
|
||||||
|
import { getStaticPaths as proxyGetStaticPaths } from "../../articles/[slug].astro"
|
||||||
|
import { extractRouteLangCode } from "astro-i18n"
|
||||||
|
|
||||||
|
/* @ts-ignore */
|
||||||
|
export const getStaticPaths = (props) => proxyGetStaticPaths({
|
||||||
|
...props,
|
||||||
|
langCode: extractRouteLangCode(import.meta.url),
|
||||||
|
})
|
||||||
|
|
||||||
|
const { props } = Astro
|
||||||
|
---
|
||||||
|
|
||||||
|
<Page {...props} />
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../../articles/index.astro"
|
import Page from "../../articles/index.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../index.astro"
|
import Page from "../index.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../plan-du-site.astro"
|
import Page from "../plan-du-site.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
---
|
---
|
||||||
import Page from "../../fragments/[slug].astro"
|
import Page from "../../fragments/[slug].astro"
|
||||||
|
import { getStaticPaths as proxyGetStaticPaths } from "../../fragments/[slug].astro"
|
||||||
|
import { extractRouteLangCode } from "astro-i18n"
|
||||||
|
|
||||||
export { getStaticPaths } from "../../fragments/[slug].astro"
|
/* @ts-ignore */
|
||||||
|
export const getStaticPaths = (props) => proxyGetStaticPaths({
|
||||||
|
...props,
|
||||||
|
langCode: extractRouteLangCode(import.meta.url),
|
||||||
|
})
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../../fragments/index.astro"
|
import Page from "../../fragments/index.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../../veille/index.astro"
|
import Page from "../../veille/index.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
---
|
---
|
||||||
import Page from "../../references/index.astro"
|
import Page from "../../references/index.astro"
|
||||||
|
|
||||||
const { props } = Astro
|
const { props } = Astro
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,30 @@
|
||||||
---
|
---
|
||||||
import { l, t, astroI18n } from "astro-i18n";
|
import { createStaticPaths } from "astro-i18n";
|
||||||
astroI18n.init(Astro);
|
|
||||||
|
|
||||||
import { getCollection } from "astro:content";
|
import { getCollection } from "astro:content";
|
||||||
import EditorialContent from "../../components/EditorialContent.astro";
|
import EditorialContent from "../../components/EditorialContent.astro";
|
||||||
|
|
||||||
import BaseLayout from "../../layouts/BaseLayout.astro";
|
import BaseLayout from "../../layouts/BaseLayout.astro";
|
||||||
|
|
||||||
export async function getStaticPaths() {
|
export const getStaticPaths = createStaticPaths(async ({ langCode }) => {
|
||||||
const snippets = await getCollection("fragments", ({ data }) => {
|
const snippets = await getCollection("fragments", ({ data }) => {
|
||||||
return data.lang === astroI18n.langCode;
|
return data.lang === langCode;
|
||||||
});
|
});
|
||||||
return snippets.map((snippet) => ({
|
return snippets.map((snippet) => ({
|
||||||
params: { slug: snippet.slug },
|
params: { slug: snippet.slug },
|
||||||
props: { snippet },
|
props: { snippet },
|
||||||
}));
|
}));
|
||||||
}
|
}, import.meta.url);
|
||||||
|
|
||||||
|
// export async function getStaticPaths() {
|
||||||
|
// const snippets = await getCollection("fragments", ({ data }) => {
|
||||||
|
// return data.lang === astroI18n.langCode;
|
||||||
|
// });
|
||||||
|
// return snippets.map((snippet) => ({
|
||||||
|
// params: { slug: snippet.slug },
|
||||||
|
// props: { snippet },
|
||||||
|
// }));
|
||||||
|
// }
|
||||||
|
|
||||||
const { snippet } = Astro.props;
|
const { snippet } = Astro.props;
|
||||||
---
|
---
|
||||||
|
|
|
@ -3,10 +3,13 @@
|
||||||
import { l, t, astroI18n } from "astro-i18n";
|
import { l, t, astroI18n } from "astro-i18n";
|
||||||
astroI18n.init(Astro);
|
astroI18n.init(Astro);
|
||||||
|
|
||||||
|
import { getEntry } from "astro:content";
|
||||||
|
|
||||||
// import stuff
|
// import stuff
|
||||||
import BaseLayout from "../layouts/BaseLayout.astro";
|
import BaseLayout from "../layouts/BaseLayout.astro";
|
||||||
import QuickAccessCard from "../components/QuickAccessCard.astro";
|
import QuickAccessCard from "../components/QuickAccessCard.astro";
|
||||||
import ListCards from "../components/ListCards.astro";
|
import ListCards from "../components/ListCards.astro";
|
||||||
|
import CardEditorial from "../components/CardEditorial.astro";
|
||||||
|
|
||||||
const pageTitle = t("accueil");
|
const pageTitle = t("accueil");
|
||||||
|
|
||||||
|
@ -35,6 +38,9 @@ const localizedSnippets = await getCollection("fragments", ({ data }) => {
|
||||||
const sortedSnippets = localizedSnippets.sort(
|
const sortedSnippets = localizedSnippets.sort(
|
||||||
(a, b) => b.data.createdAt - a.data.createdAt
|
(a, b) => b.data.createdAt - a.data.createdAt
|
||||||
);
|
);
|
||||||
|
const localizedReferences = await getCollection("references", ({ data }) => {
|
||||||
|
return data.lang === astroI18n.langCode && !data.draft;
|
||||||
|
});
|
||||||
---
|
---
|
||||||
|
|
||||||
<BaseLayout pageTitle={pageTitle}>
|
<BaseLayout pageTitle={pageTitle}>
|
||||||
|
@ -44,11 +50,14 @@ const sortedSnippets = localizedSnippets.sort(
|
||||||
<h2 class="intro__subtitle">{t("index.subtitle")}</h2>
|
<h2 class="intro__subtitle">{t("index.subtitle")}</h2>
|
||||||
<ul class="quick-access__list" role="list">
|
<ul class="quick-access__list" role="list">
|
||||||
{
|
{
|
||||||
localizedSections.map((section) => (
|
localizedSections.map(
|
||||||
<li>
|
(section) =>
|
||||||
<QuickAccessCard item={section.frontmatter} />
|
section.frontmatter.id && (
|
||||||
</li>
|
<li>
|
||||||
))
|
<QuickAccessCard item={section.frontmatter} />
|
||||||
|
</li>
|
||||||
|
)
|
||||||
|
)
|
||||||
}
|
}
|
||||||
</ul>
|
</ul>
|
||||||
</section>
|
</section>
|
||||||
|
@ -60,6 +69,16 @@ const sortedSnippets = localizedSnippets.sort(
|
||||||
<div class="section__container">
|
<div class="section__container">
|
||||||
<div class="flow section__content">
|
<div class="flow section__content">
|
||||||
<section.Content />
|
<section.Content />
|
||||||
|
{section.frontmatter.reference && (
|
||||||
|
<div class="section__reference">
|
||||||
|
<ListCards
|
||||||
|
list={localizedReferences.filter((ref) => {
|
||||||
|
return ref.slug === section.frontmatter.reference;
|
||||||
|
})}
|
||||||
|
routeName={t("references.slug")}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
<div class="section__image">
|
<div class="section__image">
|
||||||
<img
|
<img
|
||||||
|
@ -149,6 +168,7 @@ const sortedSnippets = localizedSnippets.sort(
|
||||||
|
|
||||||
/* SECTIONS */
|
/* SECTIONS */
|
||||||
.section {
|
.section {
|
||||||
|
--region-space: var(--space-l-3xl);
|
||||||
container-name: section;
|
container-name: section;
|
||||||
container-type: inline-size;
|
container-type: inline-size;
|
||||||
}
|
}
|
||||||
|
@ -156,7 +176,7 @@ const sortedSnippets = localizedSnippets.sort(
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: var(--space-m-l);
|
gap: var(--space-m-xl);
|
||||||
}
|
}
|
||||||
|
|
||||||
.section :global(h2) {
|
.section :global(h2) {
|
||||||
|
@ -177,20 +197,33 @@ const sortedSnippets = localizedSnippets.sort(
|
||||||
|
|
||||||
@container section (min-width: 50rem) {
|
@container section (min-width: 50rem) {
|
||||||
.section__container {
|
.section__container {
|
||||||
|
position: relative;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
.section__image {
|
.section__image {
|
||||||
order: 1;
|
order: 1;
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 20px;
|
top: var(--space-3xl);
|
||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
flex-basis: 18rem;
|
flex-basis: 18rem;
|
||||||
}
|
}
|
||||||
.section__content {
|
.section__content {
|
||||||
order: 2;
|
order: 2;
|
||||||
flex-basis: 0;
|
flex-basis: 0;
|
||||||
min-inline-size: 40ch;
|
min-inline-size: 32ch;
|
||||||
|
font-size: var(--size-1);
|
||||||
|
}
|
||||||
|
.section__content :global(h2) {
|
||||||
|
font-size: var(--size-5);
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
.section__reference {
|
||||||
|
margin-block-start: 50vh;
|
||||||
|
padding-block-end: var(--space-3xl);
|
||||||
|
}
|
||||||
|
.section__reference :global(.card a) {
|
||||||
|
font-size: var(--size-0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
body {
|
body {
|
||||||
font-family: var(--font-primary);
|
font-family: var(--font-primary);
|
||||||
font-size: var(--size-0);
|
font-size: var(--size-0);
|
||||||
line-height: 1.4;
|
line-height: 1.5;
|
||||||
color: var(--color-dark);
|
color: var(--color-dark);
|
||||||
background-color: var(--color-light-white);
|
background-color: var(--color-light-white);
|
||||||
accent-color: var(--color-brique);
|
accent-color: var(--color-brique);
|
||||||
|
@ -23,34 +23,30 @@ body {
|
||||||
main {
|
main {
|
||||||
min-block-size: 100vh;
|
min-block-size: 100vh;
|
||||||
}
|
}
|
||||||
:where(h1, h2, h3, .h2, .h3) {
|
:where(h1, h2, h3, h4, .h2, .h3, .h4) {
|
||||||
font-family: var(--font-secondary);
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
:where(h1) {
|
:where(h1) {
|
||||||
max-inline-size: 20ch;
|
max-inline-size: 20ch;
|
||||||
font-size: var(--size-6);
|
font-size: var(--size-6);
|
||||||
font-weight: bold;
|
|
||||||
color: var(--color-dark-blue);
|
color: var(--color-dark-blue);
|
||||||
}
|
}
|
||||||
|
|
||||||
h2,
|
h2,
|
||||||
.h2 {
|
.h2 {
|
||||||
font-size: var(--size-4);
|
font-size: var(--size-4);
|
||||||
font-weight: bold;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
h3,
|
h3,
|
||||||
.h3 {
|
.h3 {
|
||||||
max-inline-size: initial;
|
max-inline-size: initial;
|
||||||
font-size: var(--size-2);
|
font-size: var(--size-2);
|
||||||
font-weight: bold;
|
|
||||||
letter-spacing: 0.05rem;
|
letter-spacing: 0.05rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
h4,
|
h4,
|
||||||
.h4 {
|
.h4 {
|
||||||
font-size: var(--size-2);
|
font-size: var(--size-2);
|
||||||
font-weight: bold;
|
|
||||||
color: var(--color-dark);
|
color: var(--color-dark);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,39 +107,28 @@ ol:not([role="list"]) > li + li {
|
||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
.btn {
|
.btn {
|
||||||
padding: var(--space-xs) var(--space-s);
|
padding: var(--space-2xs) var(--space-xs);
|
||||||
margin-block: var(--space-s);
|
margin-block: var(--space-s);
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: var(--size--1);
|
font-size: var(--size-0);
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
border: 2px solid var(--color-red);
|
border: 2px solid var(--color-blue);
|
||||||
border-radius: 14px;
|
border-radius: var(--radius-small);
|
||||||
color: var(--color-red);
|
color: var(--color-white);
|
||||||
background-color: transparent;
|
background-color: var(--color-blue);
|
||||||
transition-property: color, background-color;
|
transition-property: color, background-color;
|
||||||
transition-duration: 0.2s;
|
transition-duration: 0.3s;
|
||||||
transition-timing-function: ease-in-out;
|
transition-timing-function: ease;
|
||||||
}
|
}
|
||||||
.btn:hover {
|
.btn:hover,
|
||||||
color: var(--color-light);
|
.btn:focus {
|
||||||
background-color: var(--color-red);
|
color: var(--color-blue);
|
||||||
}
|
|
||||||
|
|
||||||
.reset-button {
|
|
||||||
padding: var(--space-3xs) var(--space-2xs);
|
|
||||||
/* margin-inline-start: auto; */
|
|
||||||
font-size: var(--size--1);
|
|
||||||
color: var(--color-light);
|
|
||||||
border: 1px solid transparent;
|
|
||||||
background-color: var(--color-dark);
|
|
||||||
border-radius: var(--radius);
|
|
||||||
}
|
|
||||||
.reset-button:not([disabled]):hover {
|
|
||||||
color: var(--color-dark);
|
|
||||||
border: 1px solid var(--color-dark);
|
|
||||||
background-color: var(--color-white);
|
background-color: var(--color-white);
|
||||||
}
|
}
|
||||||
|
.btn:visited {
|
||||||
|
color: var(--color-white);
|
||||||
|
}
|
||||||
|
|
||||||
button[disabled] {
|
button[disabled] {
|
||||||
cursor: not-allowed;
|
cursor: not-allowed;
|
||||||
|
@ -159,7 +144,7 @@ button[disabled] {
|
||||||
/* clean style link */
|
/* clean style link */
|
||||||
.clean-link {
|
.clean-link {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
font-weight: normal;
|
font-weight: inherit;
|
||||||
color: currentColor;
|
color: currentColor;
|
||||||
}
|
}
|
||||||
.clean-link:hover {
|
.clean-link:hover {
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
/* VARIABLES */
|
/* VARIABLES */
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* font sizes */
|
/* font sizes
|
||||||
|
https://utopia.fyi/type/calculator?c=320,18,1.2,1040,20,1.25,5,2,&s=0.75%7C0.5%7C0.25,1.5%7C2%7C3%7C4%7C6,m-xl&g=s,l,xl,12
|
||||||
|
*/
|
||||||
--size--1: clamp(0.94rem, calc(0.91rem + 0.14vw), 1rem);
|
--size--1: clamp(0.94rem, calc(0.91rem + 0.14vw), 1rem);
|
||||||
--size-0: clamp(1.13rem, calc(1.07rem + 0.28vw), 1.25rem);
|
--size-0: clamp(1.13rem, calc(1.07rem + 0.28vw), 1.25rem);
|
||||||
--size-1: clamp(1.35rem, calc(1.26rem + 0.47vw), 1.56rem);
|
--size-1: clamp(1.35rem, calc(1.26rem + 0.47vw), 1.56rem);
|
||||||
|
@ -13,7 +15,9 @@
|
||||||
--size-7: clamp(4.03rem, calc(3.17rem + 4.29vw), 5.96rem);
|
--size-7: clamp(4.03rem, calc(3.17rem + 4.29vw), 5.96rem);
|
||||||
--size-8: clamp(4.84rem, calc(3.68rem + 5.81vw), 7.45rem);
|
--size-8: clamp(4.84rem, calc(3.68rem + 5.81vw), 7.45rem);
|
||||||
|
|
||||||
/* spaces */
|
/* spaces
|
||||||
|
https://utopia.fyi/space/calculator?c=320,18,1.2,1040,20,1.25,5,2,&s=0.75|0.5|0.25,1.5|2|3|4|6,m-xl&g=s,l,xl,12
|
||||||
|
*/
|
||||||
--space-3xs: clamp(0.31rem, calc(0.31rem + 0vw), 0.31rem);
|
--space-3xs: clamp(0.31rem, calc(0.31rem + 0vw), 0.31rem);
|
||||||
--space-2xs: clamp(0.56rem, calc(0.53rem + 0.14vw), 0.63rem);
|
--space-2xs: clamp(0.56rem, calc(0.53rem + 0.14vw), 0.63rem);
|
||||||
--space-xs: clamp(0.88rem, calc(0.85rem + 0.14vw), 0.94rem);
|
--space-xs: clamp(0.88rem, calc(0.85rem + 0.14vw), 0.94rem);
|
||||||
|
@ -42,7 +46,9 @@
|
||||||
--space-xs-l: clamp(0.88rem, calc(0.15rem + 3.61vw), 2.5rem);
|
--space-xs-l: clamp(0.88rem, calc(0.15rem + 3.61vw), 2.5rem);
|
||||||
--space-s-l: clamp(1.13rem, calc(0.51rem + 3.06vw), 2.5rem);
|
--space-s-l: clamp(1.13rem, calc(0.51rem + 3.06vw), 2.5rem);
|
||||||
--space-s-xl: clamp(1.13rem, calc(-0.04rem + 5.83vw), 3.75rem);
|
--space-s-xl: clamp(1.13rem, calc(-0.04rem + 5.83vw), 3.75rem);
|
||||||
|
--space-m-xl: clamp(1.69rem, calc(0.77rem + 4.58vw), 3.75rem);
|
||||||
--space-l-2xl: clamp(2.25rem, calc(1.03rem + 6.11vw), 5rem);
|
--space-l-2xl: clamp(2.25rem, calc(1.03rem + 6.11vw), 5rem);
|
||||||
|
--space-l-3xl: clamp(2.25rem, calc(-0.08rem + 11.67vw), 7.5rem);
|
||||||
|
|
||||||
/* fonts */
|
/* fonts */
|
||||||
--font-primary: "wotfard", "ArialReplace", sans-serif;
|
--font-primary: "wotfard", "ArialReplace", sans-serif;
|
||||||
|
|
Loading…
Reference in New Issue