d3ro-voice/packages/ui-native/src/components/Header.tsx
yunchan8804 55eb62189a feat(mobile): Phase M-2 D3RO 디자인 시스템 모바일 적용
DS 컴포넌트 9개 (ScreenPanel, WaveBars, AppStatusBar, Header, FilterChip 신규),
5개 탭 + 로그인 화면 D3RO 인스트루먼트 미학 적용,
i18n 연결 (I18nProvider + 모바일 전용 키 80+개),
모노레포 workspaces에 apps/mobile 추가.
2026-04-13 17:32:31 +09:00

55 lines
1.5 KiB
TypeScript

// packages/ui-native/src/components/Header.tsx
// RN Header — D3RO styled screen header with LEDs
// safe-area insets handled by caller (paddingTop prop or wrapper)
import { View, type ViewStyle, type StyleProp } from 'react-native'
import { Led } from './Led'
import { PhosphorText } from './PhosphorText'
import { d3roNativePalette } from '../theme'
export interface HeaderProps {
title: string
showBorder?: boolean
rightContent?: React.ReactNode
paddingTop?: number
style?: StyleProp<ViewStyle>
}
export function Header({
title,
showBorder = true,
rightContent,
paddingTop = 0,
style
}: HeaderProps): React.ReactElement {
return (
<View
style={[
{
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
paddingHorizontal: 20,
paddingTop: paddingTop + 8,
paddingBottom: 12,
borderBottomWidth: showBorder ? 1 : 0,
borderBottomColor: d3roNativePalette.border.subtle
},
style
]}
>
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
<Led color="amber" size={8} />
<PhosphorText variant="label" color="muted" style={{ letterSpacing: 3 }}>
{title}
</PhosphorText>
</View>
{rightContent ?? (
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 8 }}>
<Led color="green" size={6} />
<Led color="amber" size={6} />
</View>
)}
</View>
)
}