Skip to content

Composites 完整索引

Source: src/components/common/ | src/components/layout/

概览

复合组件是由基础组件组合而成的业务通用组件,分为 CommonLayout 两类。


Common 组件 (20个)

组件文件描述
StepIndicatorstep-indicator.tsx步骤指示器
AnimatedNumberanimated-number.tsx数字动画
QRCodeqr-code.tsx二维码生成
ErrorBoundaryerror-boundary.tsx错误边界
FormFieldform-field.tsx表单字段
IconCircleicon-circle.tsx圆形图标容器
ContactAvatarcontact-avatar.tsx联系人头像
DevWatermarkDevWatermark.tsx开发水印
EmptyStateempty-state.tsx空状态
ProviderFallbackWarningprovider-fallback-warning.tsxProvider 降级警告
TimeDisplaytime-display.tsx时间显示
GradientButtongradient-button.tsx渐变按钮
SwiperSyncContextswiper-sync-context.tsxSwiper 同步上下文
Alertalert.tsx警告提示
LoadingSpinnerloading-spinner.tsx加载动画
MigrationRequiredViewmigration-required-view.tsx迁移提示视图
SafeMarkdownsafe-markdown.tsx安全 Markdown
AmountDisplayamount-display.tsx金额显示
Skeletonskeleton.tsx骨架屏

Layout 组件 (5个)

组件文件描述
SwipeableTabsswipeable-tabs.tsx可滑动标签页
BottomSheetbottom-sheet.tsx底部弹窗
TabBartab-bar.tsx底部导航栏
PageHeaderpage-header.tsx页面头部
Modalmodal.tsx模态框

详细文档

StepIndicator

步骤进度指示器。

typescript
interface StepIndicatorProps {
  currentStep: number;
  totalSteps: number;
  labels?: string[];
}

<StepIndicator currentStep={2} totalSteps={4} />

AnimatedNumber

数字变化动画。

typescript
interface AnimatedNumberProps {
  value: number;
  duration?: number;
  decimals?: number;
  prefix?: string;
  suffix?: string;
}

<AnimatedNumber value={1234.56} prefix="$" decimals={2} />

QRCode

二维码生成。

typescript
interface QRCodeProps {
  value: string;
  size?: number;
  logo?: string;
  className?: string;
}

<QRCode value="0x1234..." size={200} />

AmountDisplay

格式化金额显示。

typescript
interface AmountDisplayProps {
  amount: Amount | string;
  symbol?: string;
  showSign?: boolean;
  showFiat?: boolean;
  fiatValue?: number;
}

<AmountDisplay amount="1.5" symbol="ETH" showFiat fiatValue={3000} />
// 显示: 1.5 ETH ($3,000.00)

TimeDisplay

相对/绝对时间显示。

typescript
interface TimeDisplayProps {
  timestamp: number;
  format?: 'relative' | 'absolute' | 'auto';
}

<TimeDisplay timestamp={Date.now() - 60000} format="relative" />
// 显示: 1 分钟前

EmptyState

空状态占位。

typescript
interface EmptyStateProps {
  icon?: React.ReactNode;
  title: string;
  description?: string;
  action?: React.ReactNode;
}

<EmptyState
  icon={<WalletIcon />}
  title="暂无钱包"
  description="创建或导入钱包开始使用"
  action={<Button>创建钱包</Button>}
/>

LoadingSpinner

加载动画。

typescript
interface LoadingSpinnerProps {
  size?: 'sm' | 'md' | 'lg';
  className?: string;
}

<LoadingSpinner size="lg" />

Skeleton

骨架屏加载占位。

typescript
<Skeleton className="h-4 w-[200px]" />
<Skeleton className="h-12 w-full rounded-lg" />

页面头部导航。

typescript
interface PageHeaderProps {
  title: string;
  onBack?: () => void;
  rightAction?: React.ReactNode;
}

<PageHeader
  title="发送"
  onBack={() => pop()}
  rightAction={<Button variant="ghost">扫码</Button>}
/>

TabBar

底部导航栏。

typescript
interface TabBarProps {
  items: TabBarItem[];
  activeIndex: number;
  onChange: (index: number) => void;
}

interface TabBarItem {
  icon: React.ReactNode;
  label: string;
  badge?: number;
}

SwipeableTabs

可滑动切换的标签页。

typescript
interface SwipeableTabsProps {
  tabs: Tab[];
  activeIndex: number;
  onChange: (index: number) => void;
  children: React.ReactNode[];
}

<SwipeableTabs
  tabs={[
    { label: '资产' },
    { label: '交易' },
  ]}
  activeIndex={activeTab}
  onChange={setActiveTab}
>
  <AssetList />
  <TransactionList />
</SwipeableTabs>

Alert

警告/提示条。

typescript
interface AlertProps {
  variant?: 'default' | 'destructive' | 'warning';
  children: React.ReactNode;
}

<Alert variant="warning">
  <AlertTriangle className="h-4 w-4" />
  <AlertTitle>注意</AlertTitle>
  <AlertDescription>请确保您已备份助记词</AlertDescription>
</Alert>

GradientButton

渐变背景按钮。

typescript
interface GradientButtonProps {
  children: React.ReactNode;
  onClick?: () => void;
  disabled?: boolean;
  gradient?: string;
}

<GradientButton gradient="from-blue-500 to-purple-500">
  立即购买
</GradientButton>

ErrorBoundary

错误边界组件。

typescript
<ErrorBoundary fallback={<ErrorView />}>
  <MyComponent />
</ErrorBoundary>

SafeMarkdown

安全渲染 Markdown (XSS 防护)。

typescript
<SafeMarkdown content="**粗体** 和 [链接](https://example.com)" />

相关文档

Released under the MIT License.