From 3ccd7fd3958ce4c3a8df98e1b1d7b754288d1de1 Mon Sep 17 00:00:00 2001 From: pluja Date: Mon, 9 Jun 2025 10:53:52 +0000 Subject: [PATCH] Release 202506091053 --- web/public/favicon-badge.svg | 2 +- web/public/favicon-dev-badge.svg | 2 +- web/public/favicon-dev-lightmode-badge.svg | 8 +++++ web/public/favicon-dev-lightmode.svg | 7 ++++ web/public/favicon-stage-badge.svg | 9 +---- web/public/favicon-stage-lightmode-badge.svg | 8 +++++ web/public/favicon-stage-lightmode.svg | 7 ++++ web/public/favicon-stage.svg | 13 +------ web/src/actions/admin/service.ts | 2 +- web/src/components/BaseHead.astro | 2 +- web/src/components/DynamicFavicon.astro | 25 ++++++++++++-- web/src/lib/zodUtils.ts | 4 +-- .../pages/admin/services/[slug]/edit.astro | 34 ++++++++++++------- 13 files changed, 81 insertions(+), 42 deletions(-) create mode 100644 web/public/favicon-dev-lightmode-badge.svg create mode 100644 web/public/favicon-dev-lightmode.svg create mode 100644 web/public/favicon-stage-lightmode-badge.svg create mode 100644 web/public/favicon-stage-lightmode.svg diff --git a/web/public/favicon-badge.svg b/web/public/favicon-badge.svg index 039448d..68bda20 100644 --- a/web/public/favicon-badge.svg +++ b/web/public/favicon-badge.svg @@ -1,6 +1,6 @@ KYCnot.me logo with badge - + KYCnot.me logo with badge - + + KYCnot.me logo with badge + + + + \ No newline at end of file diff --git a/web/public/favicon-dev-lightmode.svg b/web/public/favicon-dev-lightmode.svg new file mode 100644 index 0000000..9825cc5 --- /dev/null +++ b/web/public/favicon-dev-lightmode.svg @@ -0,0 +1,7 @@ + + KYCnot.me logo + + + \ No newline at end of file diff --git a/web/public/favicon-stage-badge.svg b/web/public/favicon-stage-badge.svg index e67d915..3d82459 100644 --- a/web/public/favicon-stage-badge.svg +++ b/web/public/favicon-stage-badge.svg @@ -1,13 +1,6 @@ KYCnot.me logo with badge - - + + KYCnot.me logo with badge + + + + \ No newline at end of file diff --git a/web/public/favicon-stage-lightmode.svg b/web/public/favicon-stage-lightmode.svg new file mode 100644 index 0000000..8abf112 --- /dev/null +++ b/web/public/favicon-stage-lightmode.svg @@ -0,0 +1,7 @@ + + KYCnot.me logo + + + \ No newline at end of file diff --git a/web/public/favicon-stage.svg b/web/public/favicon-stage.svg index 281d5bb..862ef78 100644 --- a/web/public/favicon-stage.svg +++ b/web/public/favicon-stage.svg @@ -1,18 +1,7 @@ KYCnot.me logo - - \ No newline at end of file diff --git a/web/src/actions/admin/service.ts b/web/src/actions/admin/service.ts index 73a3011..9cd6956 100644 --- a/web/src/actions/admin/service.ts +++ b/web/src/actions/admin/service.ts @@ -307,7 +307,7 @@ export const adminServiceActions = { input: z.object({ id: z.number().int().positive(), label: z.string().min(1).max(50).nullable(), - value: z.string().url(), + value: zodContactMethod, serviceId: z.number().int().positive(), }), handler: async (input) => { diff --git a/web/src/components/BaseHead.astro b/web/src/components/BaseHead.astro index 989c633..68c926d 100644 --- a/web/src/components/BaseHead.astro +++ b/web/src/components/BaseHead.astro @@ -100,7 +100,7 @@ const ogImageUrl = makeOgImageUrl(ogImage, Astro.url) {pwaAssetsHead.themeColor && } -{pwaAssetsHead.links.map((link) => )} +{pwaAssetsHead.links.filter((link) => link.rel !== 'icon').map((link) => )} {pwaInfo && } diff --git a/web/src/components/DynamicFavicon.astro b/web/src/components/DynamicFavicon.astro index 0cce79d..ce83d40 100644 --- a/web/src/components/DynamicFavicon.astro +++ b/web/src/components/DynamicFavicon.astro @@ -25,10 +25,11 @@ function addBadgeIfUnread(href: string) { { DEPLOYMENT_MODE === 'production' && ( <> - + @@ -37,12 +38,30 @@ function addBadgeIfUnread(href: string) { } { DEPLOYMENT_MODE === 'development' && ( - + <> + + + ) } { DEPLOYMENT_MODE === 'staging' && ( - + <> + + + ) } diff --git a/web/src/lib/zodUtils.ts b/web/src/lib/zodUtils.ts index fdf322d..49946a5 100644 --- a/web/src/lib/zodUtils.ts +++ b/web/src/lib/zodUtils.ts @@ -21,7 +21,7 @@ const cleanUrl = (input: unknown) => { export const zodUrlOptionalProtocol = z.preprocess( cleanUrl, - z.string().refine((value) => /^(https?):\/\/(?=.*\.[a-z0-9]{2,})[^\s$.?#].[^\s]*$/i.test(value), { + z.string().refine((value) => /^(https?:\/\/)?[a-z0-9]+(\.[a-z0-9])*(\.[a-z0-9]{2,}).*$/i.test(value), { message: 'Invalid URL', }) ) @@ -42,7 +42,7 @@ export const zodContactMethod = z.preprocess( .trim() .refine( (value) => - /^((https?):\/\/(?=.*\.[a-z0-9]{2,})[^\s$.?#].[^\s]|([\d\s+\-_/()[\]*#.,]|ext|x){7,}|[0-9\s+-_\\/()[\]*#.]|[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})*$/i.test( + /^((https?:\/\/)?[a-z0-9]+(\.[a-z0-9])*(\.[a-z0-9]{2,}).*|([\d\s+\-_/()[\]*#.,]|ext|x){7,}|[0-9\s+-_\\/()[\]*#.]|[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})*$/i.test( value ), { diff --git a/web/src/pages/admin/services/[slug]/edit.astro b/web/src/pages/admin/services/[slug]/edit.astro index a29fac2..fabd195 100644 --- a/web/src/pages/admin/services/[slug]/edit.astro +++ b/web/src/pages/admin/services/[slug]/edit.astro @@ -1141,8 +1141,21 @@ const apiCalls = await Astro.locals.banners.try( type.labelPlural).join(', ')}`} + name="value" + inputProps={{ + required: true, + value: method.value, + placeholder: 'contact@example.com', + }} + error={contactMethodUpdateInputErrors.value} + /> + + - - @@ -1174,8 +1177,6 @@ const apiCalls = await Astro.locals.banners.try(
- - type.labelPlural).join(', ')}`} @@ -1187,6 +1188,13 @@ const apiCalls = await Astro.locals.banners.try( error={contactMethodAddInputErrors.value} /> + +