import React from 'react'; import { PlatformBlocksTheme, PlatformBlocksThemeOverride } from './types'; /** Visual slice: colors, text, backgrounds, interactive states, colorScheme */ export interface ThemeVisuals { colorScheme: PlatformBlocksTheme['colorScheme']; primaryColor: PlatformBlocksTheme['primaryColor']; colors: PlatformBlocksTheme['colors']; text: PlatformBlocksTheme['text']; backgrounds: PlatformBlocksTheme['backgrounds']; states: PlatformBlocksTheme['states']; } /** Layout / token slice: font, spacing, radii, shadows, breakpoints */ export interface ThemeLayout { fontFamily: PlatformBlocksTheme['fontFamily']; fontSizes: PlatformBlocksTheme['fontSizes']; spacing: PlatformBlocksTheme['spacing']; radii: PlatformBlocksTheme['radii']; shadows: PlatformBlocksTheme['shadows']; breakpoints: PlatformBlocksTheme['breakpoints']; designTokens: PlatformBlocksTheme['designTokens']; } export interface PlatformBlocksThemeProviderProps { /** Theme override object */ theme?: PlatformBlocksThemeOverride; /** Whether to inherit theme from parent provider */ inherit?: boolean; /** Children to render */ children: React.ReactNode; } export declare function PlatformBlocksThemeProvider({ theme, inherit, children }: PlatformBlocksThemeProviderProps): React.JSX.Element; /** * Hook to access the current theme (full object — backwards compatible) */ export declare function useTheme(): PlatformBlocksTheme; /** * Granular hook: subscribe only to visual / color-related properties. * Components using this will NOT re-render when layout tokens change. */ export declare function useThemeVisuals(): ThemeVisuals; /** * Granular hook: subscribe only to layout / token properties. * Components using this will NOT re-render when colors change. */ export declare function useThemeLayout(): ThemeLayout; /** * Hook that safely returns theme or default theme */ export declare function useSafePlatformBlocksTheme(): PlatformBlocksTheme;