import React, { useState } from 'react';
import { View, Text, Pressable } from 'react-native';
import { ThemeProvider, useT, T, Screen, Scroll, Header, NavBar, Card, Group, Row, Button, Segmented, Chip, Pill, Avatar, Stat, TabBar, Tabs, Stack, Icon, Spacer, SectionTitle, Gradient, alpha } from './ui/kit';
const ACCENT = '#E879F9';
const THEME = { dark: { bg: '#0E0A10', card: '#1A131D', card2: '#271C2B', line: '#2C2030', text2: '#B99CC0', text3: '#765F7C' }, light: { bg: '#FAF2FB', card: '#FFFFFF', card2: '#F2E0F4' } };
const WORK = [
{ id: 1, title: 'Lumen banking', kind: 'Product design', year: '2026', c: ['#581C87', '#E879F9'], emoji: '๐ณ', role: 'Lead designer', blurb: 'A calmer bank. We cut the home screen to one number and one action, and watched support tickets fall by a third.', tags: ['iOS', 'Design system', 'Research'] },
{ id: 2, title: 'Tide identity', kind: 'Branding', year: '2025', c: ['#0F766E', '#5EEAD4'], emoji: '๐', role: 'Art direction', blurb: 'A wordmark that moves like water and a palette that survives on a dark terminal.', tags: ['Brand', 'Motion'] },
{ id: 3, title: 'Field notes', kind: 'Editorial', year: '2025', c: ['#7C2D12', '#FDBA74'], emoji: '๐', role: 'Design and type', blurb: 'A quarterly print magazine set in two typefaces and a lot of white space.', tags: ['Print', 'Typography'] },
{ id: 4, title: 'Orbit messaging', kind: 'Product design', year: '2024', c: ['#1E3A8A', '#60A5FA'], emoji: '๐ฌ', role: 'Senior designer', blurb: 'Threads, reactions and a composer that gets out of the way.', tags: ['iOS', 'Android'] },
{ id: 5, title: 'Sprout packaging', kind: 'Packaging', year: '2024', c: ['#14532D', '#86EFAC'], emoji: '๐ชด', role: 'Designer', blurb: 'Compostable boxes for a plant subscription, printed with one colour.', tags: ['Packaging', 'Sustainability'] },
];
const CATS = ['All', 'Product design', 'Branding', 'Editorial', 'Packaging'];
function Tile({ w, big, onPress }) {
const t = useT();
return (
[{ width: big ? '100%' : '47.5%', flexGrow: 1 }, pressed && { opacity: 0.8 }]}>
{w.emoji}
{w.title}{w.kind}
);
}
function WorkScreen({ nav }) {
const t = useT();
const [cat, setCat] = useState('All');
const list = WORK.filter((w) => cat === 'All' || w.kind === cat);
return (
} />
{CATS.map((c) => setCat(c)} />)}
{list[0] ? nav.push('project', { id: list[0].id })} /> : null}
{list.slice(1).map((w) => nav.push('project', { id: w.id })} />)}
);
}
function AboutScreen() {
const t = useT();
return (
Maya KovacsProduct designer in Lisbon. Ten years of making software feel lighter.
{['Product design', 'Design systems', 'Prototyping', 'Research', 'Motion', 'Typography', 'React Native'].map((s) => {}} />)}
);
}
function ContactScreen() {
const t = useT();
return (
Open to new projects from July
Product design, design systems and the occasional brand.
{}} />
{}} />
{}} />
{}} />
);
}
function Project({ nav, params }) {
const t = useT();
const w = WORK.find((x) => x.id === params.id) || WORK[0];
const next = WORK[(WORK.indexOf(w) + 1) % WORK.length];
return (
} />
{w.emoji}
{w.title}
{w.role}
{w.blurb}
{w.tags.map((x) => {}} />)}
{[0, 1, 2].map((i) => )}
nav.push('project', { id: next.id })} />
);
}
function Root({ nav }) {
const [tab, setTab] = useState('work');
return (
, about: , contact: }} />
);
}
const SCREENS = { root: Root, project: Project };
export default function App() {
return (
);
}