From cc998e2cfe68e0145d39a604ba4ee343a1cf31bd Mon Sep 17 00:00:00 2001 From: Mahdi Date: Thu, 16 Jul 2026 13:34:02 +0330 Subject: [PATCH] logo set --- src/api/businesses.ts | 20 +++++ src/api/platform-settings.ts | 2 + src/api/types.ts | 2 + src/components/brand/AppLogo.vue | 24 +++-- src/components/brand/BrandMark.vue | 10 ++- src/components/brand/useAppLogo.ts | 34 +++++++ src/components/shared/LogoUploadField.vue | 62 +++++++++++++ src/components/shared/LogoUploadPair.vue | 68 ++++++++++++++ src/composables/useLogoSources.ts | 63 +++++++++++++ src/layouts/WebAppLayout.vue | 12 ++- src/stores/platform-settings.ts | 105 +++++++++++++--------- src/stores/tenant.ts | 8 +- src/utils/media.ts | 29 ++++++ src/views/app/AppBusinessBookingView.vue | 11 ++- src/views/app/AppOwnerView.vue | 90 ++++++++++++++++++- 15 files changed, 482 insertions(+), 58 deletions(-) create mode 100644 src/components/brand/useAppLogo.ts create mode 100644 src/components/shared/LogoUploadField.vue create mode 100644 src/components/shared/LogoUploadPair.vue create mode 100644 src/composables/useLogoSources.ts diff --git a/src/api/businesses.ts b/src/api/businesses.ts index 44fafb5..cd9430e 100644 --- a/src/api/businesses.ts +++ b/src/api/businesses.ts @@ -51,3 +51,23 @@ export function setBusinessCoverImage(imageId: string) { method: 'PATCH', }); } + +export function uploadBusinessLogoLight(file: File) { + const form = new FormData(); + form.append('file', file); + return apiFormData('/businesses/mine/logo-light', form); +} + +export function uploadBusinessLogoDark(file: File) { + const form = new FormData(); + form.append('file', file); + return apiFormData('/businesses/mine/logo-dark', form); +} + +export function removeBusinessLogoLight() { + return api('/businesses/mine/logo-light', { method: 'DELETE' }); +} + +export function removeBusinessLogoDark() { + return api('/businesses/mine/logo-dark', { method: 'DELETE' }); +} diff --git a/src/api/platform-settings.ts b/src/api/platform-settings.ts index fb26850..5de0431 100644 --- a/src/api/platform-settings.ts +++ b/src/api/platform-settings.ts @@ -2,6 +2,8 @@ import { api } from './client'; export type PlatformSettings = { loginHeroImageUrl: string | null; + logoLightUrl: string | null; + logoDarkUrl: string | null; }; export function fetchPlatformSettings() { diff --git a/src/api/types.ts b/src/api/types.ts index b38ce54..bdfe92a 100644 --- a/src/api/types.ts +++ b/src/api/types.ts @@ -43,6 +43,8 @@ export type Business = { promoDiscountPercent?: number | null; promoDiscountCode?: string | null; promoDiscountMode?: 'first_booking' | 'always'; + logoLightUrl?: string | null; + logoDarkUrl?: string | null; averageRating?: number | null; reviewCount?: number; createdAt?: string; diff --git a/src/components/brand/AppLogo.vue b/src/components/brand/AppLogo.vue index e577274..e0005d0 100644 --- a/src/components/brand/AppLogo.vue +++ b/src/components/brand/AppLogo.vue @@ -1,19 +1,19 @@