From 31caa8cca71c9f809106ba14716805174d7cd531 Mon Sep 17 00:00:00 2001 From: safavimohadeseh78 Date: Tue, 16 Jun 2026 10:32:10 +0330 Subject: [PATCH] Polish boursecu UX: branding logos, home price stats, assets, and desktop footer. Co-authored-by: Cursor --- components.d.ts | 2 +- src/App.vue | 142 +++++++++++++++--- src/assets/img/boursemes-login.png | Bin 0 -> 15544 bytes src/assets/img/boursemes-splash.png | Bin 0 -> 42862 bytes src/components/AppCreditLink.vue | 21 +++ src/composables/useProductsCatalog.ts | 17 ++- src/layouts/desktop/DesktopSidebar.vue | 9 +- src/layouts/desktop/desktop-layout.less | 10 +- src/layouts/mobile/MobileAppLayout.vue | 4 +- src/layouts/styles/desktop-shell.less | 4 +- src/main.ts | 48 +++--- src/utils/config.ts | 20 ++- src/utils/persianDigits.ts | 29 ---- src/utils/productAssets.ts | 41 ++++- src/utils/usePrice.ts | 33 ++-- src/views/base/home/components/AppHeader.vue | 10 +- .../base/home/components/AssetsSection.vue | 29 +++- .../base/home/components/CurrentPrice.vue | 2 +- src/views/base/home/components/PriceStats.vue | 27 ++-- .../base/home/composables/useHomePage.ts | 19 ++- .../base/home/composables/useHomePageData.ts | 6 +- .../base/home/composables/usePriceChart.ts | 60 +++++--- .../components/DesktopAssetsMetrics.vue | 10 +- .../desktop/components/DesktopLivePrice.vue | 2 +- .../components/DesktopPriceOverview.vue | 8 +- .../base/home/layouts/HomeLayoutRenderer.vue | 2 +- .../layouts/sections/PriceStatsSection.vue | 16 +- .../desktop/components/DesktopAuthShell.vue | 4 +- .../login/desktop/styles/desktop-auth.less | 6 +- 29 files changed, 384 insertions(+), 197 deletions(-) create mode 100644 src/assets/img/boursemes-login.png create mode 100644 src/assets/img/boursemes-splash.png create mode 100644 src/components/AppCreditLink.vue delete mode 100644 src/utils/persianDigits.ts diff --git a/components.d.ts b/components.d.ts index ef35dfd..ecd8d5f 100644 --- a/components.d.ts +++ b/components.d.ts @@ -14,6 +14,7 @@ declare module 'vue' { AInput: typeof import('ant-design-vue/es')['Input'] AInputPassword: typeof import('ant-design-vue/es')['InputPassword'] AModal: typeof import('ant-design-vue/es')['Modal'] + AppCreditLink: typeof import('./src/components/AppCreditLink.vue')['default'] ARadio: typeof import('ant-design-vue/es')['Radio'] ARadioButton: typeof import('ant-design-vue/es')['RadioButton'] ARadioGroup: typeof import('ant-design-vue/es')['RadioGroup'] @@ -69,6 +70,5 @@ declare module 'vue' { TransactionSkeleton: typeof import('./src/components/TransactionSkeleton.vue')['default'] VanActionSheet: typeof import('vant/es')['ActionSheet'] VanDialog: typeof import('vant/es')['Dialog'] - VanField: typeof import('vant/es')['Field'] } } diff --git a/src/App.vue b/src/App.vue index 87971a4..c2c9247 100644 --- a/src/App.vue +++ b/src/App.vue @@ -27,10 +27,13 @@
@@ -90,20 +93,16 @@
+ @@ -118,19 +117,28 @@ import img_bottomGradiant from '@/views/login/assets/img/gr_bottom_white.svg' import {DotLottieVue} from '@lottiefiles/dotlottie-vue' import BasicButton from '@/components/BasicPacks/BasicButton.vue' import {useConfigStore} from "@/store/configStore"; -import {getProjectFontFamily, getProjectLoginLogo, getProjectSplashBackground, getProjectBrandRed, hasCustomLoginLogoLayout, isBoursecuProject, resetAppSurfaceBackground} from "@/utils/config"; +import {getProjectFontFamily, getProjectSplashBackground, getProjectSplashLogo, getProjectBrandRed, hasCustomLoginLogoLayout, isBoursecuProject, resetAppSurfaceBackground} from "@/utils/config"; import {ConfigProvider as AConfigProvider} from 'ant-design-vue' import BasicIcon from "@/components/BasicPacks/BasicIcon.vue"; -import { useApplyDesktopLayoutClass } from '@/layouts/composables/useAppLayout' +import { useApplyDesktopLayoutClass, useDesktopBreakpoint } from '@/layouts/composables/useAppLayout' import { buildSupportMessengerUrl, loadSupportMessengerFromSettings, supportMessengerSettings, } from '@/utils/supportMessenger' -import {useDraggableFloatingButton} from '@/utils/useDraggableFloatingButton' +import { useDraggableFloatingButton } from '@/utils/useDraggableFloatingButton' +import AppCreditLink from '@/components/AppCreditLink.vue' +import { useRoute } from 'vue-router' useApplyDesktopLayoutClass() +const isDesktop = useDesktopBreakpoint() +const route = useRoute() +const showDesktopFloatingCredit = computed(() => { + if (!isDesktop.value) return false + return route.name === 'login' || !!route.meta.hideMenu +}) + const {offlineReady, needRefresh, updateServiceWorker} = useRegisterSW() const config = useConfigStore() const splashIndicator = computed(() => h(LoadingOutlined, { @@ -310,16 +318,106 @@ function update() { bottom: 0; left: 0; right: 0; + z-index: 1000000; + box-sizing: content-box; +} + +.app-credit-footer--mobile { width: 100%; max-width: 426px; margin-left: auto; margin-right: auto; - z-index: 1000000; min-height: var(--app-credit-bar-inner); padding-bottom: var(--app-safe-bottom); - box-sizing: content-box; background: #fff; box-shadow: 0 -2px 4px -2px #0000001a; + display: flex; + justify-content: center; + font-size: 9px; +} + +.app-credit-footer--desktop-float { + left: auto; + right: 20px; + bottom: 16px; + width: auto; +} + +.app-credit-link { + display: inline-flex; + align-items: center; + text-decoration: none; + color: inherit; + transition: opacity 0.15s ease; + + &:hover { + opacity: 0.85; + } + + &__text { + font-weight: 500; + white-space: nowrap; + } + + &__logo { + width: auto; + object-fit: contain; + } + + &--mobile { + gap: 4px; + padding: 4px 0; + color: inherit; + + .app-credit-link__logo { + height: 12px; + } + } + + &--sidebar { + flex-direction: column; + gap: 6px; + padding: 4px; + color: #9ca3af; + font-size: 10px; + + .app-credit-link__logo { + height: 15px; + opacity: 0.85; + } + } + + &--float { + gap: 6px; + padding: 7px 14px; + font-size: 10px; + color: #6b7280; + background: #fff; + border-radius: 999px; + border: 1px solid rgba(15, 23, 42, 0.08); + box-shadow: 0 2px 10px rgba(15, 23, 42, 0.06); + + .app-credit-link__logo { + height: 13px; + } + } +} + +html.project-boursecu { + .app-credit-link--sidebar { + color: rgba(255, 255, 255, 0.5); + + .app-credit-link__logo { + filter: brightness(1.15); + opacity: 0.75; + } + } + + .app-credit-link--float { + background: var(--App-brand-nav, #133050); + border-color: rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.65); + } } .updateButton .van-dialog__confirm .van-button__text { diff --git a/src/assets/img/boursemes-login.png b/src/assets/img/boursemes-login.png new file mode 100644 index 0000000000000000000000000000000000000000..d19c776a11e18736802851c8ed53e9350090ed7b GIT binary patch literal 15544 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 KB`U?f2K*P3cJHMC literal 0 HcmV?d00001 diff --git a/src/assets/img/boursemes-splash.png b/src/assets/img/boursemes-splash.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec4e9178b4566305ebb7e593a6a02c296af581d GIT binary patch literal 42862 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 + + توسعه و طراحی توسط + + + + + diff --git a/src/composables/useProductsCatalog.ts b/src/composables/useProductsCatalog.ts index bdb24ce..eff8aa1 100644 --- a/src/composables/useProductsCatalog.ts +++ b/src/composables/useProductsCatalog.ts @@ -1,13 +1,18 @@ +import { ref } from 'vue' import { getProducts } from '@/api/products' import type { Product } from '@/models/products' /** Shared product catalog — dedupes getProducts() across wallet assets and chart offset. */ -let catalogCache: Product[] | null = null +const catalogProducts = ref([]) let catalogPromise: Promise | null = null +export function getProductsCatalogRef() { + return catalogProducts +} + export function getProductsCatalog(force = false): Promise { - if (!force && catalogCache) { - return Promise.resolve(catalogCache) + if (!force && catalogProducts.value.length > 0) { + return Promise.resolve(catalogProducts.value) } if (!force && catalogPromise) { @@ -16,8 +21,8 @@ export function getProductsCatalog(force = false): Promise { catalogPromise = getProducts() .then((products) => { - catalogCache = products ?? [] - return catalogCache + catalogProducts.value = products ?? [] + return catalogProducts.value }) .finally(() => { catalogPromise = null @@ -27,6 +32,6 @@ export function getProductsCatalog(force = false): Promise { } export function clearProductsCatalog() { - catalogCache = null + catalogProducts.value = [] catalogPromise = null } diff --git a/src/layouts/desktop/DesktopSidebar.vue b/src/layouts/desktop/DesktopSidebar.vue index 1f79045..caf48a5 100644 --- a/src/layouts/desktop/DesktopSidebar.vue +++ b/src/layouts/desktop/DesktopSidebar.vue @@ -34,20 +34,25 @@ @click="navigateTo(item.routeName)" /> + +
+ +
+ + diff --git a/src/views/base/home/components/CurrentPrice.vue b/src/views/base/home/components/CurrentPrice.vue index a9c6ac2..3ff433c 100644 --- a/src/views/base/home/components/CurrentPrice.vue +++ b/src/views/base/home/components/CurrentPrice.vue @@ -20,7 +20,7 @@ ریال diff --git a/src/views/base/home/components/PriceStats.vue b/src/views/base/home/components/PriceStats.vue index 2862caa..be49183 100644 --- a/src/views/base/home/components/PriceStats.vue +++ b/src/views/base/home/components/PriceStats.vue @@ -2,7 +2,7 @@
@@ -33,31 +33,28 @@ diff --git a/src/views/base/home/desktop/components/DesktopLivePrice.vue b/src/views/base/home/desktop/components/DesktopLivePrice.vue index a69174f..09939f0 100644 --- a/src/views/base/home/desktop/components/DesktopLivePrice.vue +++ b/src/views/base/home/desktop/components/DesktopLivePrice.vue @@ -13,7 +13,7 @@ ریال
diff --git a/src/views/base/home/desktop/components/DesktopPriceOverview.vue b/src/views/base/home/desktop/components/DesktopPriceOverview.vue index 8a2468c..13de215 100644 --- a/src/views/base/home/desktop/components/DesktopPriceOverview.vue +++ b/src/views/base/home/desktop/components/DesktopPriceOverview.vue @@ -1,13 +1,7 @@ diff --git a/src/views/base/home/layouts/HomeLayoutRenderer.vue b/src/views/base/home/layouts/HomeLayoutRenderer.vue index d695353..f4cd6b4 100644 --- a/src/views/base/home/layouts/HomeLayoutRenderer.vue +++ b/src/views/base/home/layouts/HomeLayoutRenderer.vue @@ -52,5 +52,5 @@ function resolveSectionComponent(sectionId: HomeSectionId) { - + diff --git a/src/views/base/home/layouts/sections/PriceStatsSection.vue b/src/views/base/home/layouts/sections/PriceStatsSection.vue index 5d17187..a6a1aeb 100644 --- a/src/views/base/home/layouts/sections/PriceStatsSection.vue +++ b/src/views/base/home/layouts/sections/PriceStatsSection.vue @@ -1,21 +1,7 @@ diff --git a/src/views/login/desktop/components/DesktopAuthShell.vue b/src/views/login/desktop/components/DesktopAuthShell.vue index 123185d..13955a9 100644 --- a/src/views/login/desktop/components/DesktopAuthShell.vue +++ b/src/views/login/desktop/components/DesktopAuthShell.vue @@ -37,8 +37,8 @@ import pkg from '../../../../../package.json' import BasicIcon from '@/components/BasicPacks/BasicIcon.vue' import { useConfigStore } from '@/store/configStore' import { - getProjectLoginLogo, getProjectLoginTaglineLines, + getProjectSplashLogo, hasCustomLoginLogoLayout, isBoursecuProject, } from '@/utils/config' @@ -48,7 +48,7 @@ const isBoursecu = isBoursecuProject() const hasCustomLayout = hasCustomLoginLogoLayout() const version = pkg.version -const logo = computed(() => getProjectLoginLogo(config.config?.avatar)) +const logo = computed(() => getProjectSplashLogo(config.config?.avatar)) const taglineLines = computed(() => getProjectLoginTaglineLines()) const tagline = computed(() => { diff --git a/src/views/login/desktop/styles/desktop-auth.less b/src/views/login/desktop/styles/desktop-auth.less index 5bfbcb6..1e06014 100644 --- a/src/views/login/desktop/styles/desktop-auth.less +++ b/src/views/login/desktop/styles/desktop-auth.less @@ -27,9 +27,9 @@ &--boursecu { .dauth-brand__logo { - max-width: 300px; - max-height: 110px; - width: 100%; + max-width: 280px; + max-height: 280px; + width: min(100%, 280px); object-fit: contain; } }