import React from 'react'; import { type StyleProp, type TextStyle, type ViewStyle } from 'react-native'; import type { PlatformBlocksTheme } from '../../core/theme/types'; import type { CodeBlockFile } from './types'; type ControlSize = 'xs' | 'sm'; /** * Opens the file on GitHub. `url` is whatever the caller supplied — a blob view, * an `/edit/` link, a permalink — this only navigates, it never rewrites the URL, * so the caller stays in control of where "edit" actually lands. */ export declare const EditOnGithubButton: React.FC<{ url: string; size: ControlSize; boxStyle?: ViewStyle; iconColor?: string; }>; type HeaderControlsProps = { showCopyButton: boolean; code: string; onCopy?: (code: string) => void; /** Resolved URL for the file currently on screen. Hides the edit button when absent. */ githubUrl?: string; size: ControlSize; /** Minimum box each control occupies, so the pair keeps the header row's height. */ boxStyle?: ViewStyle; containerStyle?: StyleProp; iconColor?: string; }; /** * The trailing control pair shared by all three header treatments. Edit sits to * the left of copy: copy is the one readers reach for reflexively, so it keeps * the rightmost position it has always had. */ export declare const HeaderControls: React.FC; type FileHeaderBarProps = { fileName: string; /** `styles.headerBar` — the theme-resolved bar, shared with the style sheet. */ barStyle: ViewStyle; titleBaseStyle: TextStyle; titleStyle?: StyleProp; showCopyButton: boolean; code: string; onCopy?: (code: string) => void; githubUrl?: string; }; /** Detached bar above the panel, opted into with `fileHeader`. */ export declare const FileHeaderBar: React.FC; type InlineTitleRowProps = { label: string; fileIcon?: React.ReactNode; theme: PlatformBlocksTheme; /** `styles.inlineTitleRow` — carries the theme's hairline. */ rowStyle: ViewStyle; titleBaseStyle: TextStyle; titleStyle?: StyleProp; showCopyButton: boolean; code: string; onCopy?: (code: string) => void; githubUrl?: string; }; /** Title/filename row inside the panel — the default header treatment. */ export declare const InlineTitleRow: React.FC; /** * Glyph for one file: the language's own logo when the brand registry has one * (TypeScript, CSS), otherwise a Tabler glyph tinted to the caller's state. */ export declare const FileTypeIcon: React.FC<{ fileName: string; color: string; }>; type FileTabsRowProps = { files: CodeBlockFile[]; activeName: string; onSelect: (fileName: string) => void; theme: PlatformBlocksTheme; showCopyButton: boolean; code: string; onCopy?: (code: string) => void; /** URL for the *active* tab — the edit button follows the tab strip. */ githubUrl?: string; }; /** * Header strip of file tabs: one xs button per file, each with an icon derived * from its extension. Scrolls horizontally so a demo with many files never * widens the code panel. */ export declare const FileTabsRow: React.FC; type FloatingCopyControlsProps = { visible: boolean; code: string; onCopy?: (code: string) => void; topOffset: number; isWeb: boolean; githubUrl?: string; showCopyButton: boolean; }; /** * Hover-revealed controls for panels with no header of any kind: copy on top, * edit beneath it. Stacked rather than side by side so the pair stays clear of * the code's right edge on narrow panels. */ export declare const FloatingCopyControls: React.FC; export {};