#!/usr/bin/env node /** * Component Demo - Demonstrates all UI components * Run with: tsx src/ui/examples/component-demo.tsx * * This file is for development/testing only and showcases: * - Header component * - Table component * - List component * - KeyValue component * - StatusBadge component * - Spinner component * - WelcomeScreen */ import React from 'react' import { Box, Text } from 'ink' import { renderScreen } from '../render.js' import { Header, Table, List, KeyValue, StatusBadge, Spinner } from '../components/index.js' import { WelcomeScreen } from '../screens/index.js' import { theme } from '../theme.js' interface DemoItem { id: number name: string value: number status: string } function ComponentDemo(): React.ReactElement { // Sample data for demonstrations const tableData: DemoItem[] = [ { id: 1, name: 'Item Alpha', value: 100, status: 'active' }, { id: 2, name: 'Item Beta', value: 250, status: 'pending' }, { id: 3, name: 'Item Gamma', value: 75, status: 'active' }, ] const listData = [ { id: 'wallet-1', name: 'Main Wallet', address: '0x1234...5678' }, { id: 'wallet-2', name: 'Trading Wallet', address: '0xabcd...efgh' }, { id: 'wallet-3', name: 'Cold Storage', address: '0x9999...0000' }, ] return ( {/* Header Demo */}
{/* StatusBadge Demo */} Status Badges: {/* Table Demo */}
row.id, width: 5, align: 'right' }, { header: 'Name', accessor: (row) => row.name, width: 15 }, { header: 'Value', accessor: (row) => row.value, align: 'right' }, { header: 'Status', accessor: (row) => row.status, color: theme.colors.success }, ]} data={tableData} /> {/* List Demo */}
item.id} renderItem={(item, _index, isActive) => ( {item.name} Address: {item.address} )} /> {/* KeyValue Demo */} {/* Spinner Demo */}
{/* Empty List Demo */}
null} emptyMessage="No wallets found. Import one to get started." /> ) } // Main execution async function main() { console.log('=== Component Demo ===\n') await renderScreen(ComponentDemo, {}) console.log('\n=== WelcomeScreen Demo ===\n') await renderScreen(WelcomeScreen, {}) console.log('\n=== Demo Complete ===') } main().catch(console.error)