feat: implement Product page with fund listing
Created a complete Product page based on prototype design with: Page Features: - New /product route with full page layout - AssetX Fund Market title section - 4 statistics cards (TVL, Cumulative Yield, Balance, Earnings) - Assets listing section with view toggle (list/grid) - Product cards grid layout ProductCard Component: - Reusable product card component with HeroUI integration - Product header with icon and category badge - Two-column metric display (Yield APY, Pool Cap, Maturity, etc.) - Risk indicator with color-coded bars (Low/Medium/High) - Pool capacity progress bar with gradient - Invest button with HeroUI Button component - Hover effects and transitions - Color-coded category badges (Quant Strategy, Real Estate) Assets: - Copied view toggle icons from prototype - edit-list-unordered0.svg (list view) - menu-more-grid-small0.svg (grid view) Internationalization: - Added productPage section to en.json and zh.json - All labels translated (English and Chinese) - Consistent with existing i18n pattern Technical Implementation: - Full responsive design - Dark mode support - Gradient styling for visual appeal - Smooth animations and transitions - Proper TypeScript types - Follows existing design system Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
159
app/product/page.tsx
Normal file
159
app/product/page.tsx
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { useApp } from "@/contexts/AppContext";
|
||||||
|
import Sidebar from "@/components/Sidebar";
|
||||||
|
import TopBar from "@/components/TopBar";
|
||||||
|
import StatsCards from "@/components/StatsCards";
|
||||||
|
import ProductCard from "@/components/ProductCard";
|
||||||
|
import Image from "next/image";
|
||||||
|
import { Button } from "@heroui/react";
|
||||||
|
|
||||||
|
export default function ProductPage() {
|
||||||
|
const { t } = useApp();
|
||||||
|
|
||||||
|
const statsData = [
|
||||||
|
{
|
||||||
|
label: "Total Value Locked",
|
||||||
|
value: "$465.0M",
|
||||||
|
change: "+2.4%",
|
||||||
|
isPositive: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Cumulative Yield",
|
||||||
|
value: "$505,232",
|
||||||
|
change: "+2.4%",
|
||||||
|
isPositive: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Your Total Balance",
|
||||||
|
value: "$10,000",
|
||||||
|
change: "+2.4%",
|
||||||
|
isPositive: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Your Total Earning",
|
||||||
|
value: "--",
|
||||||
|
change: "+2.4%",
|
||||||
|
isPositive: true,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
const products = [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
name: "High-Yield US Equity",
|
||||||
|
category: "Quant Strategy",
|
||||||
|
icon: "/product-us-equity.svg",
|
||||||
|
yieldAPY: "22.0%",
|
||||||
|
poolCap: "10M",
|
||||||
|
maturity: "05 Feb 2026",
|
||||||
|
risk: "Medium",
|
||||||
|
riskLevel: 2,
|
||||||
|
lockUp: "12 Months",
|
||||||
|
circulatingSupply: "$2.5M",
|
||||||
|
poolCapacityPercent: 75,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
name: "HK Commercial RE",
|
||||||
|
category: "Real Estate",
|
||||||
|
icon: "/product-hk-re.svg",
|
||||||
|
yieldAPY: "22.0%",
|
||||||
|
poolCap: "10M",
|
||||||
|
maturity: "05 Feb 2026",
|
||||||
|
risk: "LOW",
|
||||||
|
riskLevel: 1,
|
||||||
|
lockUp: "12 Months",
|
||||||
|
circulatingSupply: "$2.5M",
|
||||||
|
poolCapacityPercent: 75,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 3,
|
||||||
|
name: "High-Yield US Equity",
|
||||||
|
category: "Quant Strategy",
|
||||||
|
icon: "/product-us-equity-2.svg",
|
||||||
|
yieldAPY: "22.0%",
|
||||||
|
poolCap: "10M",
|
||||||
|
maturity: "05 Feb 2026",
|
||||||
|
risk: "High",
|
||||||
|
riskLevel: 3,
|
||||||
|
lockUp: "12 Months",
|
||||||
|
circulatingSupply: "$2.5M",
|
||||||
|
poolCapacityPercent: 75,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="min-h-screen bg-bg-subtle dark:bg-gray-900 flex">
|
||||||
|
<Sidebar />
|
||||||
|
<div className="flex-1 flex flex-col ml-[222px]">
|
||||||
|
<div className="bg-bg-surface dark:bg-gray-800 border-b border-border-normal dark:border-gray-700 px-8 py-6">
|
||||||
|
<TopBar />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div className="flex-1 px-8 py-8">
|
||||||
|
{/* Page Title */}
|
||||||
|
<div className="mb-8">
|
||||||
|
<h1 className="text-heading-h2 font-bold text-text-primary dark:text-white">
|
||||||
|
AssetX Fund Market
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Stats Cards */}
|
||||||
|
<div className="mb-8">
|
||||||
|
<StatsCards stats={statsData} />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Assets Section */}
|
||||||
|
<div className="flex flex-col gap-6">
|
||||||
|
{/* Section Header */}
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<h2 className="text-heading-h3 font-bold text-text-primary dark:text-white">
|
||||||
|
Assets
|
||||||
|
</h2>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<button className="p-2 rounded-lg hover:bg-bg-subtle dark:hover:bg-gray-700 transition-colors">
|
||||||
|
<Image
|
||||||
|
src="/edit-list-unordered0.svg"
|
||||||
|
alt="List view"
|
||||||
|
width={20}
|
||||||
|
height={20}
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
<button className="p-2 rounded-lg hover:bg-bg-subtle dark:hover:bg-gray-700 transition-colors">
|
||||||
|
<Image
|
||||||
|
src="/menu-more-grid-small0.svg"
|
||||||
|
alt="Grid view"
|
||||||
|
width={20}
|
||||||
|
height={20}
|
||||||
|
/>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Product Cards Grid */}
|
||||||
|
<div className="grid grid-cols-1 gap-6">
|
||||||
|
{products.map((product) => (
|
||||||
|
<ProductCard
|
||||||
|
key={product.id}
|
||||||
|
name={product.name}
|
||||||
|
category={product.category}
|
||||||
|
icon={product.icon}
|
||||||
|
yieldAPY={product.yieldAPY}
|
||||||
|
poolCap={product.poolCap}
|
||||||
|
maturity={product.maturity}
|
||||||
|
risk={product.risk}
|
||||||
|
riskLevel={product.riskLevel}
|
||||||
|
lockUp={product.lockUp}
|
||||||
|
circulatingSupply={product.circulatingSupply}
|
||||||
|
poolCapacityPercent={product.poolCapacityPercent}
|
||||||
|
onInvest={() => console.log("Invest in", product.name)}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
185
components/ProductCard.tsx
Normal file
185
components/ProductCard.tsx
Normal file
@@ -0,0 +1,185 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import Image from "next/image";
|
||||||
|
import { Button } from "@heroui/react";
|
||||||
|
|
||||||
|
interface ProductCardProps {
|
||||||
|
name: string;
|
||||||
|
category: string;
|
||||||
|
icon?: string;
|
||||||
|
yieldAPY: string;
|
||||||
|
poolCap: string;
|
||||||
|
maturity: string;
|
||||||
|
risk: string;
|
||||||
|
riskLevel: 1 | 2 | 3;
|
||||||
|
lockUp: string;
|
||||||
|
circulatingSupply: string;
|
||||||
|
poolCapacityPercent: number;
|
||||||
|
onInvest?: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function ProductCard({
|
||||||
|
name,
|
||||||
|
category,
|
||||||
|
icon,
|
||||||
|
yieldAPY,
|
||||||
|
poolCap,
|
||||||
|
maturity,
|
||||||
|
risk,
|
||||||
|
riskLevel,
|
||||||
|
lockUp,
|
||||||
|
circulatingSupply,
|
||||||
|
poolCapacityPercent,
|
||||||
|
onInvest,
|
||||||
|
}: ProductCardProps) {
|
||||||
|
const getRiskColor = (level: number) => {
|
||||||
|
switch (level) {
|
||||||
|
case 1:
|
||||||
|
return "bg-green-500";
|
||||||
|
case 2:
|
||||||
|
return "bg-yellow-500";
|
||||||
|
case 3:
|
||||||
|
return "bg-red-500";
|
||||||
|
default:
|
||||||
|
return "bg-gray-300";
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getCategoryColor = (cat: string) => {
|
||||||
|
if (cat.includes("Quant")) {
|
||||||
|
return "bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800 text-blue-700 dark:text-blue-300";
|
||||||
|
} else if (cat.includes("Real Estate")) {
|
||||||
|
return "bg-green-50 dark:bg-green-900/20 border-green-200 dark:border-green-800 text-green-700 dark:text-green-300";
|
||||||
|
}
|
||||||
|
return "bg-bg-subtle dark:bg-gray-700 border-border-normal dark:border-gray-600 text-text-tertiary dark:text-gray-400";
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="bg-bg-surface dark:bg-gray-800 rounded-2xl border border-border-gray dark:border-gray-700 p-6 flex flex-col gap-6 hover:shadow-lg transition-shadow">
|
||||||
|
{/* Product Header */}
|
||||||
|
<div className="flex items-start gap-4">
|
||||||
|
<div className="w-16 h-16 rounded-full bg-gradient-to-br from-blue-500 to-purple-600 flex items-center justify-center flex-shrink-0">
|
||||||
|
{icon ? (
|
||||||
|
<Image src={icon} alt={name} width={32} height={32} />
|
||||||
|
) : (
|
||||||
|
<span className="text-2xl">🏛️</span>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-2 flex-1">
|
||||||
|
<h3 className="text-body-large font-bold text-text-primary dark:text-white leading-tight">
|
||||||
|
{name}
|
||||||
|
</h3>
|
||||||
|
<div
|
||||||
|
className={`inline-flex self-start px-3 py-1 rounded-full border text-caption-tiny font-medium ${getCategoryColor(
|
||||||
|
category
|
||||||
|
)}`}
|
||||||
|
>
|
||||||
|
{category}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Product Metrics - Two Columns */}
|
||||||
|
<div className="grid grid-cols-2 gap-x-8 gap-y-4">
|
||||||
|
{/* Column 1 */}
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Yield APY
|
||||||
|
</span>
|
||||||
|
<span className="text-body-large font-bold text-green-600 dark:text-green-400">
|
||||||
|
{yieldAPY}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Maturity
|
||||||
|
</span>
|
||||||
|
<span className="text-body-default font-medium text-text-primary dark:text-white">
|
||||||
|
{maturity}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Lock-Up
|
||||||
|
</span>
|
||||||
|
<span className="text-body-default font-medium text-text-primary dark:text-white">
|
||||||
|
{lockUp}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Column 2 */}
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Pool CaP
|
||||||
|
</span>
|
||||||
|
<span className="text-body-large font-bold text-text-primary dark:text-white">
|
||||||
|
{poolCap}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Risk
|
||||||
|
</span>
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<span className="text-body-default font-medium text-text-primary dark:text-white">
|
||||||
|
{risk}
|
||||||
|
</span>
|
||||||
|
<div className="flex items-center gap-1">
|
||||||
|
{[1, 2, 3].map((level) => (
|
||||||
|
<div
|
||||||
|
key={level}
|
||||||
|
className={`w-1.5 h-4 rounded-sm transition-colors ${
|
||||||
|
level <= riskLevel
|
||||||
|
? getRiskColor(riskLevel)
|
||||||
|
: "bg-gray-300 dark:bg-gray-600"
|
||||||
|
}`}
|
||||||
|
/>
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-1">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Circulating supply
|
||||||
|
</span>
|
||||||
|
<span className="text-body-default font-medium text-text-primary dark:text-white">
|
||||||
|
{circulatingSupply}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{/* Divider */}
|
||||||
|
<div className="border-t border-border-gray dark:border-gray-700" />
|
||||||
|
|
||||||
|
{/* Pool Capacity & Invest Button */}
|
||||||
|
<div className="flex items-end justify-between gap-6">
|
||||||
|
<div className="flex-1 flex flex-col gap-2">
|
||||||
|
<div className="flex items-center justify-between">
|
||||||
|
<span className="text-body-small text-text-tertiary dark:text-gray-400">
|
||||||
|
Pool Capacity
|
||||||
|
</span>
|
||||||
|
<span className="text-body-small font-bold text-text-primary dark:text-white">
|
||||||
|
{poolCapacityPercent}% Filled
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div className="w-full h-2.5 bg-bg-subtle dark:bg-gray-700 rounded-full overflow-hidden">
|
||||||
|
<div
|
||||||
|
className="h-full bg-gradient-to-r from-blue-500 to-purple-600 rounded-full transition-all duration-300"
|
||||||
|
style={{ width: `${poolCapacityPercent}%` }}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<Button
|
||||||
|
onPress={onInvest}
|
||||||
|
className="px-8 py-3 bg-text-primary dark:bg-blue-600 text-white font-bold text-body-default rounded-xl h-auto min-w-[120px]"
|
||||||
|
>
|
||||||
|
Invest
|
||||||
|
</Button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
288
locales/en.json
288
locales/en.json
@@ -1,133 +1,155 @@
|
|||||||
{
|
{
|
||||||
"nav": {
|
"nav": {
|
||||||
"assets": "Assets",
|
"assets": "Assets",
|
||||||
"alp": "ALP",
|
"alp": "ALP",
|
||||||
"swap": "Swap",
|
"swap": "Swap",
|
||||||
"lending": "Lending",
|
"lending": "Lending",
|
||||||
"transparency": "Transparency",
|
"transparency": "Transparency",
|
||||||
"ecosystem": "Ecosystem",
|
"ecosystem": "Ecosystem",
|
||||||
"points": "Points",
|
"points": "Points",
|
||||||
"globalTVL": "Global TVL",
|
"globalTVL": "Global TVL",
|
||||||
"faqs": "FAQs"
|
"faqs": "FAQs"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"overview": "Overview",
|
"overview": "Overview",
|
||||||
"assetDescription": "Asset Description",
|
"assetDescription": "Asset Description",
|
||||||
"analytics": "Analytics",
|
"analytics": "Analytics",
|
||||||
"performanceAnalysis": "Performance Analysis",
|
"performanceAnalysis": "Performance Analysis",
|
||||||
"assetCustody": "Asset Custody & Verification"
|
"assetCustody": "Asset Custody & Verification"
|
||||||
},
|
},
|
||||||
"product": {
|
"product": {
|
||||||
"gyUsEquityIndexToken": "High-Yield US Equity Quantitative Strategy",
|
"gyUsEquityIndexToken": "High-Yield US Equity Quantitative Strategy",
|
||||||
"contractAddress": "Contract"
|
"contractAddress": "Contract"
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"currentAPY": "Current APY",
|
"currentAPY": "Current APY",
|
||||||
"totalValueLocked": "Total Value Locked",
|
"totalValueLocked": "Total Value Locked",
|
||||||
"yourBalance": "Your Balance",
|
"yourBalance": "Your Balance",
|
||||||
"yourEarnings": "Your Earnings",
|
"yourEarnings": "Your Earnings",
|
||||||
"availableToWithdraw": "Available to Withdraw"
|
"availableToWithdraw": "Available to Withdraw"
|
||||||
},
|
},
|
||||||
"assetOverview": {
|
"assetOverview": {
|
||||||
"title": "Asset Overview",
|
"title": "Asset Overview",
|
||||||
"mediumRisk": "Medium Risk",
|
"mediumRisk": "Medium Risk",
|
||||||
"underlyingAssets": "Underlying Assets",
|
"underlyingAssets": "Underlying Assets",
|
||||||
"usEquityIndex": "US Equity Index",
|
"usEquityIndex": "US Equity Index",
|
||||||
"maturityRange": "Maturity Range",
|
"maturityRange": "Maturity Range",
|
||||||
"cap": "Cap",
|
"cap": "Cap",
|
||||||
"minInvestment": "Min. Investment",
|
"minInvestment": "Min. Investment",
|
||||||
"poolCapacity": "Pool Capacity",
|
"poolCapacity": "Pool Capacity",
|
||||||
"currentPrice": "Current Price"
|
"currentPrice": "Current Price"
|
||||||
},
|
},
|
||||||
"apy": {
|
"apy": {
|
||||||
"apyHistory": "APY History",
|
"apyHistory": "APY History",
|
||||||
"priceHistory": "Price History",
|
"priceHistory": "Price History",
|
||||||
"lastDays": "Last 30 days",
|
"lastDays": "Last 30 days",
|
||||||
"highest": "Highest",
|
"highest": "Highest",
|
||||||
"lowest": "Lowest"
|
"lowest": "Lowest"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"title": "Asset Description",
|
"title": "Asset Description",
|
||||||
"content": "高盈美股量化策略 (High-Yield US Equity Quantitative Strategy) is an institutional-grade Real World Asset (RWA) offering investors exposure to a diversified portfolio of US equities. This strategy utilizes advanced quantitative models to generate high yields through market-neutral arbitrage and other sophisticated trading techniques. Designed for stability and consistent returns, it provides an on-chain gateway to traditional financial markets with enhanced transparency and instant settlement.\n\nThe strategy aims to minimize market risk while maximizing yield generation, making it suitable for investors seeking stable growth within the decentralized finance ecosystem. Underlying assets are held by institutional custodians and verified through robust compliance frameworks."
|
"content": "高盈美股量化策略 (High-Yield US Equity Quantitative Strategy) is an institutional-grade Real World Asset (RWA) offering investors exposure to a diversified portfolio of US equities. This strategy utilizes advanced quantitative models to generate high yields through market-neutral arbitrage and other sophisticated trading techniques. Designed for stability and consistent returns, it provides an on-chain gateway to traditional financial markets with enhanced transparency and instant settlement.\n\nThe strategy aims to minimize market risk while maximizing yield generation, making it suitable for investors seeking stable growth within the decentralized finance ecosystem. Underlying assets are held by institutional custodians and verified through robust compliance frameworks."
|
||||||
},
|
},
|
||||||
"mintSwap": {
|
"mintSwap": {
|
||||||
"mint": "Mint",
|
"mint": "Mint",
|
||||||
"swap": "Swap",
|
"swap": "Swap",
|
||||||
"deposit": "Deposit",
|
"deposit": "Deposit",
|
||||||
"withdraw": "Withdraw",
|
"withdraw": "Withdraw",
|
||||||
"balance": "Bal",
|
"balance": "Bal",
|
||||||
"max": "MAX",
|
"max": "MAX",
|
||||||
"estimatedReturns": "Estimated Returns",
|
"estimatedReturns": "Estimated Returns",
|
||||||
"estAPY": "Est. APY",
|
"estAPY": "Est. APY",
|
||||||
"estReturns": "Est. Returns",
|
"estReturns": "Est. Returns",
|
||||||
"transactionSummary": "Transaction Summary",
|
"transactionSummary": "Transaction Summary",
|
||||||
"youGet": "You Get",
|
"youGet": "You Get",
|
||||||
"salesPrice": "Sales Price",
|
"salesPrice": "Sales Price",
|
||||||
"fee": "Fee",
|
"fee": "Fee",
|
||||||
"gas": "Gas",
|
"gas": "Gas",
|
||||||
"approveDeposit": "Approve & Deposit USDC",
|
"approveDeposit": "Approve & Deposit USDC",
|
||||||
"termsText": "By depositing, you agree to the",
|
"termsText": "By depositing, you agree to the",
|
||||||
"termsOfService": "Terms of Service",
|
"termsOfService": "Terms of Service",
|
||||||
"and": "and",
|
"and": "and",
|
||||||
"privacyPolicy": "Privacy Policy"
|
"privacyPolicy": "Privacy Policy"
|
||||||
},
|
},
|
||||||
"protocol": {
|
"protocol": {
|
||||||
"title": "Protocol Information",
|
"title": "Protocol Information",
|
||||||
"whitepaper": "Whitepaper",
|
"whitepaper": "Whitepaper",
|
||||||
"documentation": "Documentation",
|
"documentation": "Documentation",
|
||||||
"github": "GitHub"
|
"github": "GitHub"
|
||||||
},
|
},
|
||||||
"rewards": {
|
"rewards": {
|
||||||
"season1": "Season 1 Rewards",
|
"season1": "Season 1 Rewards",
|
||||||
"live": "Live",
|
"live": "Live",
|
||||||
"earnPoints": "Earn 1 point per USDC per day holding GY-US",
|
"earnPoints": "Earn 1 point per USDC per day holding GY-US",
|
||||||
"yourPoints": "Your Points",
|
"yourPoints": "Your Points",
|
||||||
"badgeBoost": "Badge Boost",
|
"badgeBoost": "Badge Boost",
|
||||||
"referrals": "Referrals"
|
"referrals": "Referrals"
|
||||||
},
|
},
|
||||||
"performance": {
|
"performance": {
|
||||||
"title": "Performance Analysis",
|
"title": "Performance Analysis",
|
||||||
"description": "Historical daily net returns for the High-Yield US Equity Strategy.",
|
"description": "Historical daily net returns for the High-Yield US Equity Strategy.",
|
||||||
"ytd": "2025 YTD",
|
"ytd": "2025 YTD",
|
||||||
"dailyNetReturns": "Daily Net Returns (%)",
|
"dailyNetReturns": "Daily Net Returns (%)",
|
||||||
"weekdays": {
|
"weekdays": {
|
||||||
"sun": "SUN",
|
"sun": "SUN",
|
||||||
"mon": "MON",
|
"mon": "MON",
|
||||||
"tue": "TUE",
|
"tue": "TUE",
|
||||||
"wed": "WED",
|
"wed": "WED",
|
||||||
"thu": "THU",
|
"thu": "THU",
|
||||||
"fri": "FRI",
|
"fri": "FRI",
|
||||||
"sat": "SAT"
|
"sat": "SAT"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"custody": {
|
"custody": {
|
||||||
"title": "Asset Custody & Verification",
|
"title": "Asset Custody & Verification",
|
||||||
"description": "Real-time view of underlying asset holdings and institutional custodian verification status.",
|
"description": "Real-time view of underlying asset holdings and institutional custodian verification status.",
|
||||||
"underlyingHoldings": "Underlying Asset Holdings",
|
"underlyingHoldings": "Underlying Asset Holdings",
|
||||||
"verifiedBy": "Verified by third-party institutional custodians",
|
"verifiedBy": "Verified by third-party institutional custodians",
|
||||||
"lastUpdated": "Last updated",
|
"lastUpdated": "Last updated",
|
||||||
"minutesAgo": "minutes ago",
|
"minutesAgo": "minutes ago",
|
||||||
"custodian": "Custodian",
|
"custodian": "Custodian",
|
||||||
"assetType": "Asset Type",
|
"assetType": "Asset Type",
|
||||||
"maturity": "Maturity",
|
"maturity": "Maturity",
|
||||||
"valueUSD": "Value (USD)",
|
"valueUSD": "Value (USD)",
|
||||||
"status": "Status",
|
"status": "Status",
|
||||||
"verified": "Verified",
|
"verified": "Verified",
|
||||||
"totalValue": "Total underlying asset value",
|
"totalValue": "Total underlying asset value",
|
||||||
"smartContract": "Smart Contract",
|
"smartContract": "Smart Contract",
|
||||||
"smartContractDesc": "Audited by OpenZeppelin & Certik for security and reliability.",
|
"smartContractDesc": "Audited by OpenZeppelin & Certik for security and reliability.",
|
||||||
"compliance": "Compliance",
|
"compliance": "Compliance",
|
||||||
"complianceDesc": "SEC-regulated structure & bankruptcy remote legal framework.",
|
"complianceDesc": "SEC-regulated structure & bankruptcy remote legal framework.",
|
||||||
"proofOfReserves": "Proof of Reserves",
|
"proofOfReserves": "Proof of Reserves",
|
||||||
"proofDesc": "Real-time on-chain verification via Chainlink Oracle.",
|
"proofDesc": "Real-time on-chain verification via Chainlink Oracle.",
|
||||||
"viewReports": "View Reports",
|
"viewReports": "View Reports",
|
||||||
"independentVerifications": "Independent Verifications",
|
"independentVerifications": "Independent Verifications",
|
||||||
"independentDesc": "Every month, assetX undergoes third-party auditing to ensure complete transparency.",
|
"independentDesc": "Every month, assetX undergoes third-party auditing to ensure complete transparency.",
|
||||||
"attestationReport": "Attestation Report",
|
"attestationReport": "Attestation Report",
|
||||||
"viewAllArchive": "View All Archive",
|
"viewAllArchive": "View All Archive",
|
||||||
"morganStanley": "Morgan Stanley",
|
"morganStanley": "Morgan Stanley",
|
||||||
"primeBroker": "Prime Broker",
|
"primeBroker": "Prime Broker",
|
||||||
"usEquityPortfolio": "US Equity Portfolio",
|
"usEquityPortfolio": "US Equity Portfolio",
|
||||||
"days": "days"
|
"days": "days"
|
||||||
}
|
},
|
||||||
}
|
"productPage": {
|
||||||
|
"title": "AssetX Fund Market",
|
||||||
|
"assets": "Assets",
|
||||||
|
"totalValueLocked": "Total Value Locked",
|
||||||
|
"cumulativeYield": "Cumulative Yield",
|
||||||
|
"yourTotalBalance": "Your Total Balance",
|
||||||
|
"yourTotalEarning": "Your Total Earning",
|
||||||
|
"yieldAPY": "Yield APY",
|
||||||
|
"poolCap": "Pool CaP",
|
||||||
|
"maturity": "Maturity",
|
||||||
|
"risk": "Risk",
|
||||||
|
"lockUp": "Lock-Up",
|
||||||
|
"circulatingSupply": "Circulating supply",
|
||||||
|
"poolCapacity": "Pool Capacity",
|
||||||
|
"filled": "Filled",
|
||||||
|
"invest": "Invest",
|
||||||
|
"quantStrategy": "Quant Strategy",
|
||||||
|
"realEstate": "Real Estate",
|
||||||
|
"low": "LOW",
|
||||||
|
"medium": "Medium",
|
||||||
|
"high": "High"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
288
locales/zh.json
288
locales/zh.json
@@ -1,133 +1,155 @@
|
|||||||
{
|
{
|
||||||
"nav": {
|
"nav": {
|
||||||
"assets": "资产",
|
"assets": "资产",
|
||||||
"alp": "ALP",
|
"alp": "ALP",
|
||||||
"swap": "交换",
|
"swap": "交换",
|
||||||
"lending": "借贷",
|
"lending": "借贷",
|
||||||
"transparency": "透明度",
|
"transparency": "透明度",
|
||||||
"ecosystem": "生态系统",
|
"ecosystem": "生态系统",
|
||||||
"points": "积分",
|
"points": "积分",
|
||||||
"globalTVL": "全球锁仓总值",
|
"globalTVL": "全球锁仓总值",
|
||||||
"faqs": "常见问题"
|
"faqs": "常见问题"
|
||||||
},
|
},
|
||||||
"tabs": {
|
"tabs": {
|
||||||
"overview": "概览",
|
"overview": "概览",
|
||||||
"assetDescription": "资产描述",
|
"assetDescription": "资产描述",
|
||||||
"analytics": "分析",
|
"analytics": "分析",
|
||||||
"performanceAnalysis": "业绩分析",
|
"performanceAnalysis": "业绩分析",
|
||||||
"assetCustody": "资产托管与验证"
|
"assetCustody": "资产托管与验证"
|
||||||
},
|
},
|
||||||
"product": {
|
"product": {
|
||||||
"gyUsEquityIndexToken": "高盈美股量化策略",
|
"gyUsEquityIndexToken": "高盈美股量化策略",
|
||||||
"contractAddress": "合约地址"
|
"contractAddress": "合约地址"
|
||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"currentAPY": "当前年化收益率",
|
"currentAPY": "当前年化收益率",
|
||||||
"totalValueLocked": "总锁仓价值",
|
"totalValueLocked": "总锁仓价值",
|
||||||
"yourBalance": "您的余额",
|
"yourBalance": "您的余额",
|
||||||
"yourEarnings": "您的收益",
|
"yourEarnings": "您的收益",
|
||||||
"availableToWithdraw": "可提取金额"
|
"availableToWithdraw": "可提取金额"
|
||||||
},
|
},
|
||||||
"assetOverview": {
|
"assetOverview": {
|
||||||
"title": "资产概览",
|
"title": "资产概览",
|
||||||
"mediumRisk": "中等风险",
|
"mediumRisk": "中等风险",
|
||||||
"underlyingAssets": "基础资产",
|
"underlyingAssets": "基础资产",
|
||||||
"usEquityIndex": "美国股票指数",
|
"usEquityIndex": "美国股票指数",
|
||||||
"maturityRange": "到期日范围",
|
"maturityRange": "到期日范围",
|
||||||
"cap": "上限",
|
"cap": "上限",
|
||||||
"minInvestment": "最小投资额",
|
"minInvestment": "最小投资额",
|
||||||
"poolCapacity": "资金池容量",
|
"poolCapacity": "资金池容量",
|
||||||
"currentPrice": "当前价格"
|
"currentPrice": "当前价格"
|
||||||
},
|
},
|
||||||
"apy": {
|
"apy": {
|
||||||
"apyHistory": "APY 历史",
|
"apyHistory": "APY 历史",
|
||||||
"priceHistory": "价格历史",
|
"priceHistory": "价格历史",
|
||||||
"lastDays": "最近 30 天",
|
"lastDays": "最近 30 天",
|
||||||
"highest": "最高",
|
"highest": "最高",
|
||||||
"lowest": "最低"
|
"lowest": "最低"
|
||||||
},
|
},
|
||||||
"description": {
|
"description": {
|
||||||
"title": "资产描述",
|
"title": "资产描述",
|
||||||
"content": "高盈美股量化策略(High-Yield US Equity Quantitative Strategy)是一款机构级真实世界资产(RWA)产品,为投资者提供多元化的美国股票投资组合敞口。该策略利用先进的量化模型,通过市场中性套利和其他复杂的交易技术来产生高收益。专为稳定性和持续回报而设计,它提供了一个通往传统金融市场的链上通道,具有更高的透明度和即时结算功能。\n\n该策略旨在最小化市场风险的同时最大化收益生成,适合在去中心化金融生态系统中寻求稳定增长的投资者。基础资产由机构托管人持有,并通过健全的合规框架进行验证。"
|
"content": "高盈美股量化策略(High-Yield US Equity Quantitative Strategy)是一款机构级真实世界资产(RWA)产品,为投资者提供多元化的美国股票投资组合敞口。该策略利用先进的量化模型,通过市场中性套利和其他复杂的交易技术来产生高收益。专为稳定性和持续回报而设计,它提供了一个通往传统金融市场的链上通道,具有更高的透明度和即时结算功能。\n\n该策略旨在最小化市场风险的同时最大化收益生成,适合在去中心化金融生态系统中寻求稳定增长的投资者。基础资产由机构托管人持有,并通过健全的合规框架进行验证。"
|
||||||
},
|
},
|
||||||
"mintSwap": {
|
"mintSwap": {
|
||||||
"mint": "铸造",
|
"mint": "铸造",
|
||||||
"swap": "交换",
|
"swap": "交换",
|
||||||
"deposit": "存入",
|
"deposit": "存入",
|
||||||
"withdraw": "提取",
|
"withdraw": "提取",
|
||||||
"balance": "余额",
|
"balance": "余额",
|
||||||
"max": "最大",
|
"max": "最大",
|
||||||
"estimatedReturns": "预计收益",
|
"estimatedReturns": "预计收益",
|
||||||
"estAPY": "预计 APY",
|
"estAPY": "预计 APY",
|
||||||
"estReturns": "预计回报",
|
"estReturns": "预计回报",
|
||||||
"transactionSummary": "交易摘要",
|
"transactionSummary": "交易摘要",
|
||||||
"youGet": "您将获得",
|
"youGet": "您将获得",
|
||||||
"salesPrice": "销售价格",
|
"salesPrice": "销售价格",
|
||||||
"fee": "手续费",
|
"fee": "手续费",
|
||||||
"gas": "Gas 费用",
|
"gas": "Gas 费用",
|
||||||
"approveDeposit": "批准并存入 USDC",
|
"approveDeposit": "批准并存入 USDC",
|
||||||
"termsText": "通过存入,您同意",
|
"termsText": "通过存入,您同意",
|
||||||
"termsOfService": "服务条款",
|
"termsOfService": "服务条款",
|
||||||
"and": "和",
|
"and": "和",
|
||||||
"privacyPolicy": "隐私政策"
|
"privacyPolicy": "隐私政策"
|
||||||
},
|
},
|
||||||
"protocol": {
|
"protocol": {
|
||||||
"title": "协议信息",
|
"title": "协议信息",
|
||||||
"whitepaper": "白皮书",
|
"whitepaper": "白皮书",
|
||||||
"documentation": "文档",
|
"documentation": "文档",
|
||||||
"github": "GitHub"
|
"github": "GitHub"
|
||||||
},
|
},
|
||||||
"rewards": {
|
"rewards": {
|
||||||
"season1": "第一季奖励",
|
"season1": "第一季奖励",
|
||||||
"live": "进行中",
|
"live": "进行中",
|
||||||
"earnPoints": "持有 GY-US 每天每 USDC 赚取 1 积分",
|
"earnPoints": "持有 GY-US 每天每 USDC 赚取 1 积分",
|
||||||
"yourPoints": "您的积分",
|
"yourPoints": "您的积分",
|
||||||
"badgeBoost": "徽章加成",
|
"badgeBoost": "徽章加成",
|
||||||
"referrals": "推荐"
|
"referrals": "推荐"
|
||||||
},
|
},
|
||||||
"performance": {
|
"performance": {
|
||||||
"title": "业绩分析",
|
"title": "业绩分析",
|
||||||
"description": "高收益美国股票策略的历史每日净回报。",
|
"description": "高收益美国股票策略的历史每日净回报。",
|
||||||
"ytd": "2025 年初至今",
|
"ytd": "2025 年初至今",
|
||||||
"dailyNetReturns": "每日净回报 (%)",
|
"dailyNetReturns": "每日净回报 (%)",
|
||||||
"weekdays": {
|
"weekdays": {
|
||||||
"sun": "周日",
|
"sun": "周日",
|
||||||
"mon": "周一",
|
"mon": "周一",
|
||||||
"tue": "周二",
|
"tue": "周二",
|
||||||
"wed": "周三",
|
"wed": "周三",
|
||||||
"thu": "周四",
|
"thu": "周四",
|
||||||
"fri": "周五",
|
"fri": "周五",
|
||||||
"sat": "周六"
|
"sat": "周六"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"custody": {
|
"custody": {
|
||||||
"title": "资产托管与验证",
|
"title": "资产托管与验证",
|
||||||
"description": "实时查看基础资产持有情况和机构托管人验证状态。",
|
"description": "实时查看基础资产持有情况和机构托管人验证状态。",
|
||||||
"underlyingHoldings": "基础资产持有量",
|
"underlyingHoldings": "基础资产持有量",
|
||||||
"verifiedBy": "由第三方机构托管人验证",
|
"verifiedBy": "由第三方机构托管人验证",
|
||||||
"lastUpdated": "最后更新",
|
"lastUpdated": "最后更新",
|
||||||
"minutesAgo": "分钟前",
|
"minutesAgo": "分钟前",
|
||||||
"custodian": "托管人",
|
"custodian": "托管人",
|
||||||
"assetType": "资产类型",
|
"assetType": "资产类型",
|
||||||
"maturity": "到期日",
|
"maturity": "到期日",
|
||||||
"valueUSD": "价值 (USD)",
|
"valueUSD": "价值 (USD)",
|
||||||
"status": "状态",
|
"status": "状态",
|
||||||
"verified": "已验证",
|
"verified": "已验证",
|
||||||
"totalValue": "基础资产总价值",
|
"totalValue": "基础资产总价值",
|
||||||
"smartContract": "智能合约",
|
"smartContract": "智能合约",
|
||||||
"smartContractDesc": "由 OpenZeppelin 和 Certik 审计,确保安全性和可靠性。",
|
"smartContractDesc": "由 OpenZeppelin 和 Certik 审计,确保安全性和可靠性。",
|
||||||
"compliance": "合规性",
|
"compliance": "合规性",
|
||||||
"complianceDesc": "SEC 监管结构和破产隔离法律框架。",
|
"complianceDesc": "SEC 监管结构和破产隔离法律框架。",
|
||||||
"proofOfReserves": "储备证明",
|
"proofOfReserves": "储备证明",
|
||||||
"proofDesc": "通过 Chainlink Oracle 进行实时链上验证。",
|
"proofDesc": "通过 Chainlink Oracle 进行实时链上验证。",
|
||||||
"viewReports": "查看报告",
|
"viewReports": "查看报告",
|
||||||
"independentVerifications": "独立验证",
|
"independentVerifications": "独立验证",
|
||||||
"independentDesc": "每月 assetX 都会接受第三方审计以确保完全透明。",
|
"independentDesc": "每月 assetX 都会接受第三方审计以确保完全透明。",
|
||||||
"attestationReport": "证明报告",
|
"attestationReport": "证明报告",
|
||||||
"viewAllArchive": "查看所有存档",
|
"viewAllArchive": "查看所有存档",
|
||||||
"morganStanley": "摩根士丹利",
|
"morganStanley": "摩根士丹利",
|
||||||
"primeBroker": "主经纪商",
|
"primeBroker": "主经纪商",
|
||||||
"usEquityPortfolio": "美国股票投资组合",
|
"usEquityPortfolio": "美国股票投资组合",
|
||||||
"days": "天"
|
"days": "天"
|
||||||
}
|
},
|
||||||
}
|
"productPage": {
|
||||||
|
"title": "AssetX 基金市场",
|
||||||
|
"assets": "资产",
|
||||||
|
"totalValueLocked": "总锁仓量",
|
||||||
|
"cumulativeYield": "累计收益",
|
||||||
|
"yourTotalBalance": "您的总余额",
|
||||||
|
"yourTotalEarning": "您的总收益",
|
||||||
|
"yieldAPY": "收益率 APY",
|
||||||
|
"poolCap": "池容量",
|
||||||
|
"maturity": "到期日",
|
||||||
|
"risk": "风险",
|
||||||
|
"lockUp": "锁仓期",
|
||||||
|
"circulatingSupply": "流通量",
|
||||||
|
"poolCapacity": "池容量",
|
||||||
|
"filled": "已填充",
|
||||||
|
"invest": "投资",
|
||||||
|
"quantStrategy": "量化策略",
|
||||||
|
"realEstate": "房地产",
|
||||||
|
"low": "低",
|
||||||
|
"medium": "中",
|
||||||
|
"high": "高"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
3
public/edit-list-unordered0.svg
Normal file
3
public/edit-list-unordered0.svg
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M9 17H19M9 12H19M9 7H19M5.00195 17V17.002L5 17.002V17H5.00195ZM5.00195 12V12.002L5 12.002V12H5.00195ZM5.00195 7V7.002L5 7.00195V7H5.00195Z" stroke="#111827" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 335 B |
10
public/menu-more-grid-small0.svg
Normal file
10
public/menu-more-grid-small0.svg
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M14.5 15.75C14.5 16.4404 15.0596 17 15.75 17C16.4404 17 17 16.4404 17 15.75C17 15.0596 16.4404 14.5 15.75 14.5C15.0596 14.5 14.5 15.0596 14.5 15.75Z" fill="#4B5563"/>
|
||||||
|
<path d="M7 15.75C7 16.4404 7.55964 17 8.25 17C8.94036 17 9.5 16.4404 9.5 15.75C9.5 15.0596 8.94036 14.5 8.25 14.5C7.55964 14.5 7 15.0596 7 15.75Z" fill="#4B5563"/>
|
||||||
|
<path d="M14.5 8.25C14.5 8.94036 15.0596 9.5 15.75 9.5C16.4404 9.5 17 8.94036 17 8.25C17 7.55964 16.4404 7 15.75 7C15.0596 7 14.5 7.55964 14.5 8.25Z" fill="#4B5563"/>
|
||||||
|
<path d="M7 8.25C7 8.94036 7.55964 9.5 8.25 9.5C8.94036 9.5 9.5 8.94036 9.5 8.25C9.5 7.55964 8.94036 7 8.25 7C7.55964 7 7 7.55964 7 8.25Z" fill="#4B5563"/>
|
||||||
|
<path d="M14.5 15.75C14.5 16.4404 15.0596 17 15.75 17C16.4404 17 17 16.4404 17 15.75C17 15.0596 16.4404 14.5 15.75 14.5C15.0596 14.5 14.5 15.0596 14.5 15.75Z" stroke="#4B5563" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M7 15.75C7 16.4404 7.55964 17 8.25 17C8.94036 17 9.5 16.4404 9.5 15.75C9.5 15.0596 8.94036 14.5 8.25 14.5C7.55964 14.5 7 15.0596 7 15.75Z" stroke="#4B5563" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M14.5 8.25C14.5 8.94036 15.0596 9.5 15.75 9.5C16.4404 9.5 17 8.94036 17 8.25C17 7.55964 16.4404 7 15.75 7C15.0596 7 14.5 7.55964 14.5 8.25Z" stroke="#4B5563" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M7 8.25C7 8.94036 7.55964 9.5 8.25 9.5C8.94036 9.5 9.5 8.94036 9.5 8.25C9.5 7.55964 8.94036 7 8.25 7C7.55964 7 7 7.55964 7 8.25Z" stroke="#4B5563" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
Reference in New Issue
Block a user