diff --git a/app/(marketing)/about/page.tsx b/app/(marketing)/about/page.tsx index db50a7c..8ce856f 100644 --- a/app/(marketing)/about/page.tsx +++ b/app/(marketing)/about/page.tsx @@ -36,11 +36,6 @@ export default function AboutPage() { const headerSegments = asArray(page.aboutHeader.segments); const statsItems = asArray(page.stats.items); - const statsAsOf = - typeof page.stats.asOf === "string" - ? page.stats.asOf - : String(page.stats.asOf ?? ""); - const faqItems = asArray(page.faq.items); const tripleColumns = asArray(page.tripleTextBlock.columns); @@ -57,10 +52,8 @@ export default function AboutPage() { titlePrefix={page.stats.titlePrefix} titleEmphasis={page.stats.titleEmphasis} titleSuffix={page.stats.titleSuffix} - items={statsItems.map((item) => ({ - ...item, - asOf: statsAsOf, - }))} + asOfPrefix={page.stats.asOfPrefix} + items={statsItems} /> ( ? "text-[var(--color-content-invert-primary)]" : "text-[var(--color-content-default-primary)]"; const wordmarkVisibilityClass = - size === "topNavFolderTop" || size === "topNavHeader" + size === "topNavHeader" ? wordmark ? "hidden md:block" : "hidden" diff --git a/app/components/cards/Stat/Stat.types.ts b/app/components/cards/Stat/Stat.types.ts index 8454cca..f69dd3a 100644 --- a/app/components/cards/Stat/Stat.types.ts +++ b/app/components/cards/Stat/Stat.types.ts @@ -4,6 +4,9 @@ export interface StatProps { value: string; label: string; asOf?: string; + asOfPrefix?: string; + sourceHref?: string; + sourceName?: string; shapeVariant?: StatShapeVariant; className?: string; } diff --git a/app/components/cards/Stat/Stat.view.tsx b/app/components/cards/Stat/Stat.view.tsx index 547c71c..d11e789 100644 --- a/app/components/cards/Stat/Stat.view.tsx +++ b/app/components/cards/Stat/Stat.view.tsx @@ -11,9 +11,14 @@ function StatView({ value, label, asOf, + asOfPrefix, + sourceHref, + sourceName, shapeVariant, className = "", }: StatViewProps) { + const sourcedYear = Boolean(asOfPrefix || sourceHref); + return ( diff --git a/app/components/navigation/Top/Top.container.tsx b/app/components/navigation/Top/Top.container.tsx index b9aa8f3..abf8eb8 100644 --- a/app/components/navigation/Top/Top.container.tsx +++ b/app/components/navigation/Top/Top.container.tsx @@ -1,7 +1,8 @@ "use client"; /** - * Figma: "Navigation / Top" (22078-808559) + * Figma: "Navigation / Top" (22078-808559); Folder-top 430–639 (18582:22056), + * 640–1023 (18580:17113). */ import { memo, useCallback } from "react"; @@ -39,6 +40,9 @@ const FOLDER_NAV_ITEM_RESPONSIVE_CLASS = const CREATE_RULE_RESPONSIVE_CLASS = "lg:p-[var(--spacing-scale-012)] lg:gap-[var(--spacing-scale-006)] lg:text-medium-label xl:p-[var(--spacing-scale-016)] xl:gap-[var(--spacing-scale-008)] xl:text-x-large-label"; +const FOLDER_CREATE_RULE_RESPONSIVE_CLASS = + "md:p-[var(--spacing-scale-008)] md:gap-[var(--spacing-scale-002)] md:text-x-small-label lg:p-[var(--spacing-scale-012)] lg:gap-[var(--spacing-scale-006)] lg:text-medium-label xl:p-[var(--spacing-scale-016)] xl:gap-[var(--spacing-scale-008)] xl:text-x-large-label"; + const TopContainer = memo( ({ folderTop = false, loggedIn = false, profile = false, logIn = true }) => { const pathname = usePathname(); @@ -120,6 +124,9 @@ const TopContainer = memo( const navSelected = (loggedIn && pathname === "/profile") || (!loggedIn && pathname === "/login"); + const loginClassName = folderTop + ? FOLDER_NAV_ITEM_RESPONSIVE_CLASS + : NAV_ITEM_RESPONSIVE_CLASS; if (loggedIn) { return ( @@ -128,7 +135,7 @@ const TopContainer = memo( size="X Small" mode="default" state={navSelected ? "selected" : "default"} - className={NAV_ITEM_RESPONSIVE_CLASS} + className={loginClassName} ariaLabel={ariaLabel} > {label} @@ -149,7 +156,7 @@ const TopContainer = memo( size="X Small" mode="default" state={navSelected ? "selected" : "default"} - className={NAV_ITEM_RESPONSIVE_CLASS} + className={loginClassName} ariaLabel={ariaLabel} > {label} @@ -165,11 +172,19 @@ const TopContainer = memo( palette="inverse" onClick={handleCreateRuleClick} ariaLabel={t("ariaLabels.createNewRule")} - className={CREATE_RULE_RESPONSIVE_CLASS} + className={ + folderTop + ? FOLDER_CREATE_RULE_RESPONSIVE_CLASS + : CREATE_RULE_RESPONSIVE_CLASS + } > {avatarImageSources.map((src, index) => ( ( src={src} alt={tTopNav(`avatarAlts.${3 - index}`)} size="small" - className="lg:h-[var(--spacing-scale-024)] lg:w-[var(--spacing-scale-024)] xl:h-[var(--spacing-scale-032)] xl:w-[var(--spacing-scale-032)]" + className={ + folderTop + ? "md:h-[var(--spacing-scale-018)] md:w-[var(--spacing-scale-018)] lg:h-[var(--spacing-scale-024)] lg:w-[var(--spacing-scale-024)] xl:h-[var(--spacing-scale-032)] xl:w-[var(--spacing-scale-032)]" + : "lg:h-[var(--spacing-scale-024)] lg:w-[var(--spacing-scale-024)] xl:h-[var(--spacing-scale-032)] xl:w-[var(--spacing-scale-032)]" + } /> ))} diff --git a/app/components/navigation/Top/Top.view.tsx b/app/components/navigation/Top/Top.view.tsx index ee07e2f..9a6f9f8 100644 --- a/app/components/navigation/Top/Top.view.tsx +++ b/app/components/navigation/Top/Top.view.tsx @@ -37,17 +37,17 @@ function TopView({ dangerouslySetInnerHTML={{ __html: JSON.stringify(schemaData) }} />