diff --git a/public/assets/ark-library/figma/README.md b/public/assets/ark-library/figma/README.md index 8801553..19f8bf6 100644 --- a/public/assets/ark-library/figma/README.md +++ b/public/assets/ark-library/figma/README.md @@ -7,6 +7,6 @@ Source: Figma file `uHDZkVHjAp7BXDKQKB0PM4`, responsive reference node `3761:109 - `banner-576.png` — mobile/tablet banner crop from node `3726:13099`. - `banner-440.png` — mobile banner crop from node `3726:14199`. - `banner-375.png` — mobile banner crop from node `3726:14238`. -- `recommendation-1.png` ... `recommendation-5.png` — official recommendation cover exports from the 1920px frame card image nodes. +- `official-recommendation-1.png` ... `official-recommendation-5.png` — official recommendation cover exports from the 1920px frame card image nodes; used only as fallback/placeholder covers so real resource cards keep accurate API-provided imagery. These files are visual UI assets only. They do not change backend data or API contracts. diff --git a/public/assets/ark-library/figma/recommendation-1.png b/public/assets/ark-library/figma/official-recommendation-1.png similarity index 100% rename from public/assets/ark-library/figma/recommendation-1.png rename to public/assets/ark-library/figma/official-recommendation-1.png diff --git a/public/assets/ark-library/figma/recommendation-2.png b/public/assets/ark-library/figma/official-recommendation-2.png similarity index 100% rename from public/assets/ark-library/figma/recommendation-2.png rename to public/assets/ark-library/figma/official-recommendation-2.png diff --git a/public/assets/ark-library/figma/recommendation-3.png b/public/assets/ark-library/figma/official-recommendation-3.png similarity index 100% rename from public/assets/ark-library/figma/recommendation-3.png rename to public/assets/ark-library/figma/official-recommendation-3.png diff --git a/public/assets/ark-library/figma/recommendation-4.png b/public/assets/ark-library/figma/official-recommendation-4.png similarity index 100% rename from public/assets/ark-library/figma/recommendation-4.png rename to public/assets/ark-library/figma/official-recommendation-4.png diff --git a/public/assets/ark-library/figma/recommendation-5.png b/public/assets/ark-library/figma/official-recommendation-5.png similarity index 100% rename from public/assets/ark-library/figma/recommendation-5.png rename to public/assets/ark-library/figma/official-recommendation-5.png diff --git a/src/App.tsx b/src/App.tsx index 4597ebd..07f3bce 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,3 +1,4 @@ +import { lazy, Suspense } from "react"; import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom"; import { I18nProvider } from "./i18n"; import { PublicLayout } from "./layouts/PublicLayout"; @@ -7,12 +8,17 @@ import { CategoryPage } from "./pages/CategoryPage"; import { SearchPage } from "./pages/SearchPage"; import { FavoritesPage } from "./pages/FavoritesPage"; import { ResourceDetail } from "./pages/ResourceDetail"; -import { WalletPage } from "./pages/WalletPage"; import { AboutPage } from "./pages/AboutPage"; import { adminUiPrefix } from "./adminPaths"; import { AdminRouteTree } from "./adminRouteTree"; import { AdminRouterModeProvider } from "./adminRouterMode"; +const WalletPage = lazy(() => + import("./pages/WalletPage").then((module) => ({ + default: module.WalletPage, + })), +); + const adminEnabled = import.meta.env.VITE_DISABLE_ADMIN !== "true"; export default function App() { @@ -28,7 +34,14 @@ export default function App() { } /> } /> } /> - } /> + + + + } + /> } /> diff --git a/src/components/FigmaBanner.tsx b/src/components/FigmaBanner.tsx index 2254f47..4af3b59 100644 --- a/src/components/FigmaBanner.tsx +++ b/src/components/FigmaBanner.tsx @@ -1,16 +1,16 @@ const FIGMA_ASSET_BASE = "/assets/ark-library/figma"; -export const recommendationCoverFallbacks = [ - `${FIGMA_ASSET_BASE}/recommendation-1.png`, - `${FIGMA_ASSET_BASE}/recommendation-2.png`, - `${FIGMA_ASSET_BASE}/recommendation-3.png`, - `${FIGMA_ASSET_BASE}/recommendation-4.png`, - `${FIGMA_ASSET_BASE}/recommendation-5.png`, +export const officialRecommendationCoverFallbacks = [ + `${FIGMA_ASSET_BASE}/official-recommendation-1.png`, + `${FIGMA_ASSET_BASE}/official-recommendation-2.png`, + `${FIGMA_ASSET_BASE}/official-recommendation-3.png`, + `${FIGMA_ASSET_BASE}/official-recommendation-4.png`, + `${FIGMA_ASSET_BASE}/official-recommendation-5.png`, ] as const; export function FigmaBanner() { return ( - + { const original = r.coverImage || r.previewUrl; if (isPlaceholderAsset(original)) { - return recommendationCoverFallbacks[ - visualIndex % recommendationCoverFallbacks.length + return officialRecommendationCoverFallbacks[ + visualIndex % officialRecommendationCoverFallbacks.length ]; } return assetUrl(original); @@ -105,8 +105,8 @@ export function ComingSoonRecommendedCard({ visualIndex?: number; }) { const cover = - recommendationCoverFallbacks[ - visualIndex % recommendationCoverFallbacks.length + officialRecommendationCoverFallbacks[ + visualIndex % officialRecommendationCoverFallbacks.length ]; return ( diff --git a/src/layouts/PublicLayout.tsx b/src/layouts/PublicLayout.tsx index f766b04..aa43468 100644 --- a/src/layouts/PublicLayout.tsx +++ b/src/layouts/PublicLayout.tsx @@ -77,7 +77,7 @@ export function PublicLayout() { return (
-
+
{/* Single row (md+): logo | scrollable nav (左對齊,可橫向滑動) | 搜尋 + 語言 */}
- + {t("brand")} -
-
+
+
setQ(e.target.value)} onKeyDown={(e) => e.key === "Enter" && goSearch()} placeholder={t("searchPlaceholder")} - className="w-24 rounded-md bg-transparent text-sm text-neutral-200 outline-none placeholder:text-[#777985] focus-visible:ring-2 focus-visible:ring-ark-gold/60 focus-visible:ring-offset-2 focus-visible:ring-offset-[#1a1b20] md:w-28 lg:w-44 xl:w-52" + className="min-w-0 flex-1 rounded-md bg-transparent text-sm text-neutral-200 outline-none placeholder:text-[#777985] focus-visible:ring-2 focus-visible:ring-ark-gold/60 focus-visible:ring-offset-2 focus-visible:ring-offset-[#1a1b20]" />
@@ -182,7 +182,7 @@ export function PublicLayout() {
{open ? ( -
+
-
+