)
-})
-
-const cardTitle: CSSProperties = {
- fontFamily: 'var--font-display',
- fontWeight: 700,
- fontSize: 'var--type-body-lg',
- margin: '0 0 10px',
- color: 'var--ink',
-}
+})
\ No newline at end of file
diff --git a/src/screens/ProjectDetail.tsx b/src/screens/ProjectDetail.tsx
index 764c615..f6bceeb 100644
--- a/src/screens/ProjectDetail.tsx
+++ b/src/screens/ProjectDetail.tsx
@@ -1,4 +1,4 @@
-import { memo, useState, type CSSProperties } from 'react'
+import { memo, useState, useMemo, type CSSProperties } from 'react'
import { useTranslations } from 'next-intl'
import { Badge, Button, PinIcon, ScoreGauge, ShieldCheckIcon, WatchlistButton, YieldAlertButton } from '../components'
import { Sparkline as SparklineUnmemoized } from '../components/Sparkline'
@@ -17,7 +17,7 @@ import { type ProjectDetail as ProjectDetailData } from '../data/projectDetails'
export interface ProjectDetailProps {
project: Project
detail: ProjectDetailData
- onInvest: () => Promise
+ onInvest: () => void
onBack?: () => void
}
@@ -367,30 +367,11 @@ export const ProjectDetail = memo(function ProjectDetail({ project, detail, onIn
- {investmentUrl && (
-
- View investment →
-
- )}
{t('investNote')}
- {investmentUrl && (
-
- )}
{onBack && (
{overLiquid && (
-
-
- {t('fundExceeds')}
-
+
)}
- {t('liquidHint')}{' '}
-
- ${formatMoney(liquid)}
-
- . {amountN > liquid ? t('fundExceeds') : t('fundOk')}
+ {t('liquidHint')} ${formatMoney(liquid)}.{' '}
+ {amountN > liquid ? t('fundExceeds') : t('fundOk')}
)
}
-
-const cardTitle: CSSProperties = {
- fontFamily: 'var(--font-display)',
- fontWeight: 700,
- fontSize: 'var(--type-body-lg)',
- margin: 0,
- color: 'var(--ink)',
- letterSpacing: '-0.01em',
-}
-const subtleBlock: CSSProperties = {
- fontFamily: 'var(--font-body)',
- fontSize: 'var(--type-small)',
- lineHeight: 1.5,
- color: 'var(--ink-60)',
- margin: '0 0 16px',
-}
-
-const cardInner: CSSProperties = {
- padding: 22,
- height: '100%',
- boxSizing: 'border-box',
-}
-
-const scoreColumn: CSSProperties = {
- display: 'flex',
- flexDirection: 'column',
- alignItems: 'center',
- gap: 8,
-}
-
-const sectionHeaderTop: CSSProperties = {
- display: 'flex',
- justifyContent: 'space-between',
- alignItems: 'center',
- marginBottom: 12,
-}
-
-const sectionHeaderBottom: CSSProperties = {
- display: 'flex',
- justifyContent: 'space-between',
- alignItems: 'center',
- marginBottom: 8,
-}
diff --git a/src/screens/creator/ProjectBuilder.tsx b/src/screens/creator/ProjectBuilder.tsx
index 0e7201d..8df51df 100644
--- a/src/screens/creator/ProjectBuilder.tsx
+++ b/src/screens/creator/ProjectBuilder.tsx
@@ -1,8 +1,18 @@
'use client'
-import { useId, useState, useEffect, type CSSProperties, type ReactNode } from 'react'
+import { useId, useState, useEffect, type ReactNode } from 'react'
import { useTranslations } from 'next-intl'
import { ProjectCard, Tag, Card, UploadIcon } from '@/components'
+import {
+ cardTitle,
+ subtle,
+ inputStyle,
+ labelText,
+ fieldLabel,
+ fieldSpacing,
+ hintText,
+ errorText,
+} from '@/theme'
import { PROJECT_TYPES, DRAFT_PROJECT, type ProjectType } from '@/data/creator'
import { formatMoney } from '@/lib/format'
@@ -155,11 +165,7 @@ export function ProjectBuilder() {
/>