d3ro-voice/packages/ui-native/src/theme-context.tsx
2026-08-29 18:33:45 +09:00

31 lines
814 B
TypeScript

import { createContext, useContext, type ReactNode } from 'react'
import {
d3roNativePalette,
type D3roNativePalette,
} from './theme'
const NativeThemeContext = createContext<D3roNativePalette | null>(null)
export interface NativeThemeProviderProps {
palette: D3roNativePalette
children: ReactNode
}
/**
* Optional runtime palette boundary for React Native consumers.
* Components outside a provider retain the legacy palette for compatibility.
*/
export function NativeThemeProvider({
palette,
children,
}: NativeThemeProviderProps): React.ReactElement {
return (
<NativeThemeContext.Provider value={palette}>
{children}
</NativeThemeContext.Provider>
)
}
export function useNativePalette(): D3roNativePalette {
return useContext(NativeThemeContext) ?? d3roNativePalette
}