d3ro-voice/packages/ui-native/src/theme.ts
윤찬 211673bc6c feat(mobile): Phase M-1 모바일 프로젝트 기반 + V3 마스터 플랜
- V3 모바일 마스터 플랜 작성 (docs/v3/00-mobile-master-plan.md)
  11개 Phase, 5주 로드맵, 전략 결정사항 확정
- 7개 디자인 HTML 레퍼런스 저장 (docs/v3/designs/)
- app.json → app.config.ts 전환 + 환경변수 체계
- 5탭 네비게이션 (DASH/HIST/REC FAB/TALK/SET)
- metro.config.js monorepo 격리 (root RN 0.84 충돌 해결)
- ui-native 테마 디자인 목업 색상 동기화
- SafeArea 적용 (useSafeAreaInsets)
- DEV 로그인 우회 (__DEV__ 전용)
- Supabase .env 연동
- iOS 시뮬레이터 검증 완료
2026-04-13 03:22:15 +09:00

75 lines
2.2 KiB
TypeScript

// packages/ui-native/src/theme.ts
// RN용 테마 토큰 — MUI 없이 순수 색상/타이포/그림자 값
// packages/ui의 d3roPalette와 의도적으로 동기화 (RN은 CSS var 불가, 정적 값)
import { Platform } from 'react-native'
export const d3roNativePalette = {
bg: {
app: '#19191b',
card: '#242427',
cardHover: '#2a2a2d',
elevated: '#2e2e32',
sidebar: '#1e1f21',
inset: '#0f0f11',
chassis: '#242528'
},
text: {
primary: '#d4d4d8',
white: '#ffffff',
secondary: '#8e8e93',
label: '#7c7c82',
disabled: '#4a4a4e',
inactive: '#77797c',
muted: '#71717a'
},
accent: {
amber: '#ff5c35',
amberDim: 'rgba(255, 92, 53, 0.15)',
amberGlow: 'rgba(255, 92, 53, 0.6)',
green: '#4ade80',
greenGlow: 'rgba(74, 222, 128, 0.6)'
},
border: {
subtle: 'rgba(255,255,255,0.04)',
default: '#2e2e32',
strong: 'rgba(255,255,255,0.12)'
},
tag: {
purple: '#b854f5',
orange: '#f59e0b',
red: '#ef4444',
green: '#22c55e',
blue: '#3b82f6'
},
led: {
off: '#111111'
}
} as const
export const d3roNativeTypo = {
hero: { fontSize: 42, fontWeight: '300' as const, letterSpacing: -2, lineHeight: 42 },
title: { fontSize: 28, fontWeight: '300' as const, letterSpacing: -1, lineHeight: 34 },
value: { fontSize: 20, fontWeight: '400' as const, letterSpacing: 0.4, lineHeight: 20 },
heading: { fontSize: 16, fontWeight: '600' as const, letterSpacing: 0.32, lineHeight: 22 },
body: { fontSize: 14, fontWeight: '400' as const, letterSpacing: 0.14, lineHeight: 21 },
small: { fontSize: 12, fontWeight: '600' as const, letterSpacing: 0.36, lineHeight: 17 },
meta: { fontSize: 11, fontWeight: '600' as const, letterSpacing: 0.55, lineHeight: 14 },
label: { fontSize: 10, fontWeight: '700' as const, letterSpacing: 2, lineHeight: 12 }
} as const
export const d3roNativeRadius = {
card: 22,
inner: 12,
button: 8,
small: 6,
pill: 999
} as const
export const d3roNativeFonts = {
mono: Platform.OS === 'ios' ? 'Menlo' : 'monospace',
sans: Platform.OS === 'ios' ? 'System' : 'Roboto'
} as const
export type D3roNativePaletteKey = keyof typeof d3roNativePalette
export type D3roNativeTypoKey = keyof typeof d3roNativeTypo