From dcf128a2d84b779170961d537554b1cbeb52f837 Mon Sep 17 00:00:00 2001 From: GauthierWebDev Date: Sun, 13 Apr 2025 13:36:07 +0200 Subject: [PATCH] feat: Add conditional link behavior in Link component --- app/components/common/Link.tsx | 8 ++++- app/data/docs/communaute/influenceurs/page.md | 7 ---- app/data/docs/communaute/partages/page.md | 35 +++++++++++++++++++ app/markdoc/nodes.tsx | 5 +++ app/pages/+onPageTransitionEnd.ts | 1 - app/pages/+onPageTransitionStart.ts | 1 - app/services/DocsService.ts | 2 +- 7 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 app/data/docs/communaute/partages/page.md diff --git a/app/components/common/Link.tsx b/app/components/common/Link.tsx index e7f465e..a01dbbc 100644 --- a/app/components/common/Link.tsx +++ b/app/components/common/Link.tsx @@ -4,9 +4,15 @@ import clsx from "clsx"; export function Link(props: React.AnchorHTMLAttributes & { href: string }) { const { urlPathname } = usePageContext(); const isActive = props.href === "/" ? urlPathname === props.href : urlPathname.startsWith(props.href); + const isSameDomain = !(props.href.startsWith("http") || props.href.startsWith("mailto")); return ( - + {props.children} ); diff --git a/app/data/docs/communaute/influenceurs/page.md b/app/data/docs/communaute/influenceurs/page.md index b26376d..3a4e969 100644 --- a/app/data/docs/communaute/influenceurs/page.md +++ b/app/data/docs/communaute/influenceurs/page.md @@ -40,13 +40,6 @@ Il peut s'agir d'un HUB _(Linktree, Bento, etc.)_ où l'on peut retrouver tous t {% /callout %} -{% callout type="warning" title="Ordre d'apparition" %} - -Aucun influenceur ou créateur de contenu, en dehors des coups de coeurs de Memento Dev, n'est mis en avant par rapport à un autre dans cette page. -Les noms sont listés par ordre alphabétique, peu importe le nombre d'abonnés ou de vues. - -{% /callout %} - ## 🥷 Disparaître de cette page Pour retirer ton nom de cette page, même fonctionnement que pour apparaître sur cette page : tu peux m'envoyer un [email _(gauthier@gauthierdaniels.fr)_](mailto:gauthier@gauthierdaniels?subject=Demande%20de%20suppression%20de%20la%20page%20des%20influenceurs%20Memento%20Dev). diff --git a/app/data/docs/communaute/partages/page.md b/app/data/docs/communaute/partages/page.md new file mode 100644 index 0000000..3126bee --- /dev/null +++ b/app/data/docs/communaute/partages/page.md @@ -0,0 +1,35 @@ +--- +title: Partages et réutilisations du contenu de Memento Dev +description: "Partagez et réutilisez le contenu de Memento Dev : Exportez, collaborez, intégrez !" +tags: [] +--- + +Tu souhaites partager ou réutiliser le contenu de Memento Dev ? +Tout d'abord, permet-moi de te remercier pour ton intérêt ! 🙏 + +L'entièreté du contenu de Memento Dev est disponible publiquement et est sous licence **CC BY-NC-SA 4.0**. +Cela signifie que tu peux le partager et le réutiliser, tant que tu respectes les conditions de la licence. + +## Conditions de la licence + +La licence **CC BY-NC-SA 4.0** impose les conditions suivantes : + +- **Attribution** : Tu dois donner le crédit approprié, fournir un lien vers la licence et indiquer si des modifications ont été apportées. + Tu peux le faire de la manière suivante : + - En ajoutant un lien vers la page d'accueil de Memento Dev : [https://memento-dev.fr](https://memento-dev.fr) + - En ajoutant un lien vers la licence : [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) +- **Pas d'utilisation commerciale** : Tu ne peux pas utiliser le matériel à des fins commerciales. + +## Écoles, entreprises et utilisateurs réutilisant le contenu de Memento Dev + +Un grand merci à ces entités qui utilisent le contenu de Memento Dev pour leurs formations ou leurs projets ! 🙏 + +- [Coda](https://coda.school) +- [O'clock](https://oclock.io) +- [Wild Code School](https://wildcodeschool.com) + +{% callout type="note" title="Tu utilises mon contenu et tu souhaites apparaître ici ?" %} + +Pour figurer sur cette page, tu peux tout simplement m'en faire la demande par [email _(gauthier@gauthierdaniels.fr)_](mailto:gauthier@gauthierdaniels?subject=Demande%20d'ajout%20sur%20la%20page%20partages%20et%20r%C3%A9utilisations%20Memento%20Dev). + +{% /callout %} diff --git a/app/markdoc/nodes.tsx b/app/markdoc/nodes.tsx index 74a7704..4796dde 100644 --- a/app/markdoc/nodes.tsx +++ b/app/markdoc/nodes.tsx @@ -5,6 +5,7 @@ import { DocsLayout } from "@syntax/DocsLayout"; import Markdoc from "@markdoc/markdoc"; import { Fence } from "@syntax/Fence"; import yaml from "js-yaml"; +import { Link } from "@/components/common/Link"; const { nodes: defaultNodes, Tag } = Markdoc; @@ -68,6 +69,10 @@ const nodes = { }, }, }, + link: { + ...defaultNodes.link, + render: Link, + }, }; export default nodes; diff --git a/app/pages/+onPageTransitionEnd.ts b/app/pages/+onPageTransitionEnd.ts index 75af2e0..86daa06 100644 --- a/app/pages/+onPageTransitionEnd.ts +++ b/app/pages/+onPageTransitionEnd.ts @@ -1,6 +1,5 @@ import type { OnPageTransitionEndAsync } from "vike/types"; export const onPageTransitionEnd: OnPageTransitionEndAsync = async () => { - console.log("Page transition end"); document.querySelector("body")?.classList.remove("page-is-transitioning"); }; diff --git a/app/pages/+onPageTransitionStart.ts b/app/pages/+onPageTransitionStart.ts index 12c344b..7650de3 100644 --- a/app/pages/+onPageTransitionStart.ts +++ b/app/pages/+onPageTransitionStart.ts @@ -1,6 +1,5 @@ import type { OnPageTransitionStartAsync } from "vike/types"; export const onPageTransitionStart: OnPageTransitionStartAsync = async () => { - console.log("Page transition start"); document.querySelector("body")?.classList.add("page-is-transitioning"); }; diff --git a/app/services/DocsService.ts b/app/services/DocsService.ts index b73f190..3270f42 100644 --- a/app/services/DocsService.ts +++ b/app/services/DocsService.ts @@ -91,7 +91,7 @@ class DocsService { const ast = Markdoc.parse(content); const title = ast.attributes?.frontmatter?.match(/^title:\s*(.*?)\s*$/m)?.[1]; - const description = ast.attributes?.frontmatter?.match(/^description:\s*(.*?)\s*$/m)?.[1]; + const description = ast.attributes?.frontmatter?.match(/^description:\s*(.*?)\s*$/m)?.[1]?.replaceAll('"', ""); const sections: DocSection[] = [[title, null, []]]; this.extractSections(ast, sections);