From 3162606cb31d7da66777dfe95cbf9bfd2b0ac5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:06:58 +0100 Subject: [PATCH 1/8] chore: add translation --- src/i18n/locales/es.json | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index da091966..e1ceb7c1 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -1045,5 +1045,13 @@ } } }, - "loading": "Cargando..." + "loading": "Cargando...", + "blog": { + "share": { + "modal": { + "title": "Difunde este blog por el mundo", + "description": "Puedes copiar el enlace para enviarlo y tambiƩn compartirla en Facebook o X." + } + } + } } From 793c0ac7c907b39accb6d5cb0de7bde624c700dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:07:34 +0100 Subject: [PATCH 2/8] fix: add compilerOptions allowArbitraryExtensions --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index fc7ff75c..af20f012 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,6 @@ "include": [".astro/types.d.ts", "src/types", "**/*"], "exclude": ["dist"], "compilerOptions": { - "types": ["astro/client", "svelte"] + "allowArbitraryExtensions": true } } From 83a6769a4f093e5893056170d5567bea634a68be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:07:57 +0100 Subject: [PATCH 3/8] fix: change to the now component share --- src/components/project/SingleProject.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/project/SingleProject.svelte b/src/components/project/SingleProject.svelte index 559d3edb..4ca4a9d7 100644 --- a/src/components/project/SingleProject.svelte +++ b/src/components/project/SingleProject.svelte @@ -1,7 +1,6 @@ + + + + diff --git a/src/components/library/Share/Facebook.svelte b/src/components/library/Share/Facebook.svelte new file mode 100644 index 00000000..26d3b851 --- /dev/null +++ b/src/components/library/Share/Facebook.svelte @@ -0,0 +1,39 @@ + + + diff --git a/src/components/library/Share/ShareButton.svelte b/src/components/library/Share/ShareButton.svelte new file mode 100644 index 00000000..20a5740d --- /dev/null +++ b/src/components/library/Share/ShareButton.svelte @@ -0,0 +1,57 @@ + + + + + +

{modalDescription}

+ +
+ + + + {#if variant === "project"} + + {/if} +
+
diff --git a/src/components/library/Share/ifreme.svelte b/src/components/library/Share/ifreme.svelte new file mode 100644 index 00000000..10894d98 --- /dev/null +++ b/src/components/library/Share/ifreme.svelte @@ -0,0 +1,89 @@ + + + + + +

{$t("project.share.iframe-modal.description")}

+ +
+
+ {#if !iframeLoaded} + + {/if} + +
+
+ +
+
+ + +
diff --git a/src/components/library/Share/x.svelte b/src/components/library/Share/x.svelte new file mode 100644 index 00000000..c58ff649 --- /dev/null +++ b/src/components/library/Share/x.svelte @@ -0,0 +1,26 @@ + + + + + diff --git a/src/components/project/Sharebutton.svelte b/src/components/project/Sharebutton.svelte deleted file mode 100644 index e4fcf414..00000000 --- a/src/components/project/Sharebutton.svelte +++ /dev/null @@ -1,167 +0,0 @@ - - - - - -

{$t("project.share.modal.description")}

- -
- - - - - - - - - - - -
-
- - -

{$t("project.share.iframe-modal.description")}

- -
-
- {#if !iframeLoaded} - - {/if} - -
-
- -
-
- - -
From 765c82aea08fb134859809c31bf39b5b0ec721c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:09:56 +0100 Subject: [PATCH 5/8] feat: implement component blog --- src/components/library/BodyBlog.svelte | 196 +++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 src/components/library/BodyBlog.svelte diff --git a/src/components/library/BodyBlog.svelte b/src/components/library/BodyBlog.svelte new file mode 100644 index 00000000..3d52fe97 --- /dev/null +++ b/src/components/library/BodyBlog.svelte @@ -0,0 +1,196 @@ + + +
+
+

{post.title}

+

+ {post.description} +

+ + {#if post.cover} + {post.title} + {/if} + +
+
+ {post.author?.name} +
+

{post.author?.name}

+

{post.date}

+
+
+ + +
+ +
+ {@html parsedBody} +
+
+
+ + From 7f96932148c5fcf80322564c9569950676c9011c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:35:43 +0100 Subject: [PATCH 6/8] fix: redundant date --- src/components/library/BodyBlog.svelte | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/library/BodyBlog.svelte b/src/components/library/BodyBlog.svelte index 3d52fe97..be7f78f8 100644 --- a/src/components/library/BodyBlog.svelte +++ b/src/components/library/BodyBlog.svelte @@ -4,11 +4,13 @@ import ShareButton from "./Share/ShareButton.svelte"; + const DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/; + interface BlogPost { title?: string; description?: string; cover?: string; - date?: string; + date: string; author?: { name: string; avatar: string }; body?: string; } @@ -20,6 +22,13 @@ let { post, class: className = "" }: Props = $props(); + const validatedDate = $derived.by(() => { + if (!DATE_REGEX.test(post.date)) { + throw new Error(`Invalid date format: "${post.date}". Expected DD/MM/YYYY`); + } + return post.date; + }); + const containerClasses = $derived(twMerge("flex justify-center min-h-screen", className)); const parsedBody = $derived(marked(post.body ?? "")); @@ -40,7 +49,7 @@ {post.author?.name}

{post.author?.name}

-

{post.date}

+

{validatedDate}

From c754b0d8d037e6dc155b264dd8751d4a8b4dd592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Fri, 27 Mar 2026 14:41:39 +0100 Subject: [PATCH 7/8] fix: date format --- src/components/library/BodyBlog.svelte | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/components/library/BodyBlog.svelte b/src/components/library/BodyBlog.svelte index be7f78f8..5dc34601 100644 --- a/src/components/library/BodyBlog.svelte +++ b/src/components/library/BodyBlog.svelte @@ -4,13 +4,11 @@ import ShareButton from "./Share/ShareButton.svelte"; - const DATE_REGEX = /^\d{2}\/\d{2}\/\d{4}$/; - interface BlogPost { title?: string; description?: string; cover?: string; - date: string; + date: Date; author?: { name: string; avatar: string }; body?: string; } @@ -22,13 +20,6 @@ let { post, class: className = "" }: Props = $props(); - const validatedDate = $derived.by(() => { - if (!DATE_REGEX.test(post.date)) { - throw new Error(`Invalid date format: "${post.date}". Expected DD/MM/YYYY`); - } - return post.date; - }); - const containerClasses = $derived(twMerge("flex justify-center min-h-screen", className)); const parsedBody = $derived(marked(post.body ?? "")); @@ -49,7 +40,7 @@ {post.author?.name}

{post.author?.name}

-

{validatedDate}

+

{post.date}

From 7cc0bbab25ad8790f65dc6649777e519d567d597 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pep=20Villalonga=20Amor=C3=B3s?= Date: Wed, 8 Apr 2026 11:34:45 +0200 Subject: [PATCH 8/8] fix: rename share components to PascalCase, replace hardcoded URLs with url prop and use env var for Facebook appId --- src/components/library/Share/CopyUrl.svelte | 8 ++++++- src/components/library/Share/Facebook.svelte | 22 ++++++++++--------- .../Share/{ifreme.svelte => Iframe.svelte} | 12 ++++------ .../library/Share/ShareButton.svelte | 17 ++++++++------ .../library/Share/{x.svelte => X.svelte} | 13 ++++------- 5 files changed, 37 insertions(+), 35 deletions(-) rename src/components/library/Share/{ifreme.svelte => Iframe.svelte} (89%) rename src/components/library/Share/{x.svelte => X.svelte} (54%) diff --git a/src/components/library/Share/CopyUrl.svelte b/src/components/library/Share/CopyUrl.svelte index 759d98a1..2ff1fcd7 100644 --- a/src/components/library/Share/CopyUrl.svelte +++ b/src/components/library/Share/CopyUrl.svelte @@ -2,6 +2,12 @@ import { t } from "../../../i18n/store"; import WebIcon from "../../../svgs/WebIcon.svelte"; import Tooltip from "../../Admin/Tooltip.svelte"; + + interface Props { + url?: string; + } + + let { url = "" }: Props = $props(); diff --git a/src/components/library/Share/Facebook.svelte b/src/components/library/Share/Facebook.svelte index 26d3b851..8aaeca36 100644 --- a/src/components/library/Share/Facebook.svelte +++ b/src/components/library/Share/Facebook.svelte @@ -1,13 +1,20 @@