Polish boursecu UX: branding logos, home price stats, assets, and desktop footer.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-16 10:32:10 +03:30
co-authored by Cursor
parent 033e31e7a9
commit 31caa8cca7
29 changed files with 384 additions and 197 deletions
+11 -6
View File
@@ -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<Product[]>([])
let catalogPromise: Promise<Product[]> | null = null
export function getProductsCatalogRef() {
return catalogProducts
}
export function getProductsCatalog(force = false): Promise<Product[]> {
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<Product[]> {
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<Product[]> {
}
export function clearProductsCatalog() {
catalogCache = null
catalogProducts.value = []
catalogPromise = null
}