848e33d198
- composant Seo.svelte partagé : canonical, Open Graph complet (type, url, title, description, image, locale fr_FR, site_name) et Twitter Cards sur toutes les pages - branché sur l'accueil, /outils, /quiz, /contribuer et les fiches outils (les meta OG en dur des fiches sont remplacés par le composant, JSON-LD conservé) - script prebuild gen-sitemap.mjs : régénère static/sitemap.xml (59 URLs, slugs relus depuis content/outils/) — remplace le sitemap qu'apportait @astrojs/sitemap - robots.txt référence le sitemap en URL absolue
24 lines
999 B
TypeScript
24 lines
999 B
TypeScript
/** Constantes du site — un seul endroit à changer si la forge bouge. */
|
|
export const REPO_URL = 'https://labola.o-k-i.net/cyber-mawonaj/lage-chat-control'
|
|
|
|
/** Origine de production — base des URL absolues SEO (canonical, OG, sitemap). */
|
|
export const SITE_URL = 'https://chatcontrol.o-k-i.net'
|
|
export const NEW_TOOL_ISSUE_URL = `${REPO_URL}/issues/new?template=.gitea/ISSUE_TEMPLATE/nouvo-zouti.yaml`
|
|
|
|
/**
|
|
* Les trois arcs du chimen (sommaire) : progression Fondations →
|
|
* Reprendre le contrôle → Autodéfense avancée. Une catégorie appartient
|
|
* au premier arc dont `maxPart` couvre son `part`.
|
|
*/
|
|
export const ARCS = [
|
|
{ id: 'fondations', maxPart: 4, difficulty: 'beginner' },
|
|
{ id: 'controle', maxPart: 9, difficulty: 'intermediate' },
|
|
{ id: 'avance', maxPart: 99, difficulty: 'advanced' }
|
|
] as const
|
|
|
|
export type ArcId = (typeof ARCS)[number]['id']
|
|
|
|
export function arcOf(part: number): ArcId {
|
|
return (ARCS.find((a) => part <= a.maxPart) ?? ARCS[ARCS.length - 1]).id
|
|
}
|