156 lines
4.8 KiB
TypeScript
156 lines
4.8 KiB
TypeScript
/**
|
|
* Auto-generated component prop types from design document
|
|
* Generated at: 2025-12-19T06:09:11.387360
|
|
* DO NOT EDIT - Regenerate with generate_types.py
|
|
*/
|
|
|
|
import type {
|
|
User, Recording, GeneratedApp,
|
|
} from './types';
|
|
|
|
export type SidebarNavigatePayload = string;
|
|
export type LoginFormSuccessPayload = User;
|
|
export type LoginFormErrorPayload = string;
|
|
export type RegisterFormSuccessPayload = User;
|
|
export type RegisterFormErrorPayload = string;
|
|
export type RecordButtonStoprecordingPayload = Blob;
|
|
export type RecordingListSelectrecordingPayload = string;
|
|
export type RecordingListDeleterecordingPayload = string;
|
|
export type RecordingCardClickPayload = string;
|
|
export type RecordingCardDeletePayload = string;
|
|
export type AudioPlayerPlaypausePayload = boolean;
|
|
export type AudioPlayerSeekPayload = number;
|
|
export type AppGallerySelectappPayload = string;
|
|
export type AppCardClickPayload = string;
|
|
export type AppCardDeletePayload = string;
|
|
|
|
export interface HeaderProps {
|
|
/** Current user for displaying name/avatar */
|
|
user?: User | null;
|
|
}
|
|
|
|
export interface SidebarProps {
|
|
/** Current route path for highlighting */
|
|
activePath: string;
|
|
/** Fired when navigation item clicked */
|
|
onNavigate?: (payload: SidebarNavigatePayload) => void;
|
|
}
|
|
|
|
export interface HeroProps {
|
|
/** Fired when CTA button clicked */
|
|
onGetStarted?: () => void;
|
|
}
|
|
|
|
export interface FeaturesProps {
|
|
}
|
|
|
|
export interface LoginFormProps {
|
|
/** Fired when login successful */
|
|
onSuccess?: (payload: LoginFormSuccessPayload) => void;
|
|
/** Fired when login fails */
|
|
onError?: (payload: LoginFormErrorPayload) => void;
|
|
}
|
|
|
|
export interface RegisterFormProps {
|
|
/** Fired when registration successful */
|
|
onSuccess?: (payload: RegisterFormSuccessPayload) => void;
|
|
/** Fired when registration fails */
|
|
onError?: (payload: RegisterFormErrorPayload) => void;
|
|
}
|
|
|
|
export interface RecordButtonProps {
|
|
/** Whether currently recording */
|
|
isRecording: boolean;
|
|
/** Whether transcribing in real-time */
|
|
isTranscribing?: boolean;
|
|
/** Fired when recording starts */
|
|
onStartRecording?: () => void;
|
|
/** Fired when recording stops, includes audio blob */
|
|
onStopRecording?: (payload: RecordButtonStoprecordingPayload) => void;
|
|
}
|
|
|
|
export interface WakeWordIndicatorProps {
|
|
/** Whether wake word detection is active */
|
|
isListening: boolean;
|
|
/** The wake word phrase */
|
|
wakeWord: string;
|
|
/** Fired when wake word is detected */
|
|
onWakeWordDetected?: () => void;
|
|
}
|
|
|
|
export interface RecordingListProps {
|
|
/** Array of recordings to display */
|
|
recordings: Recording[];
|
|
/** Whether recordings are being loaded */
|
|
isLoading?: boolean;
|
|
/** Fired when recording is clicked, payload is recording ID */
|
|
onSelectRecording?: (payload: RecordingListSelectrecordingPayload) => void;
|
|
/** Fired when delete confirmed, payload is recording ID */
|
|
onDeleteRecording?: (payload: RecordingListDeleterecordingPayload) => void;
|
|
}
|
|
|
|
export interface RecordingCardProps {
|
|
/** Recording to display */
|
|
recording: Recording;
|
|
/** Show edit/delete buttons */
|
|
showActions?: boolean;
|
|
/** Fired when card clicked, payload is recording ID */
|
|
onClick?: (payload: RecordingCardClickPayload) => void;
|
|
/** Fired when delete confirmed, payload is recording ID */
|
|
onDelete?: (payload: RecordingCardDeletePayload) => void;
|
|
}
|
|
|
|
export interface AudioPlayerProps {
|
|
/** URL to audio file */
|
|
audioUrl: string;
|
|
/** Duration in seconds */
|
|
duration: number;
|
|
/** Fired when play/pause toggled, payload is isPlaying */
|
|
onPlayPause?: (payload: AudioPlayerPlaypausePayload) => void;
|
|
/** Fired when user seeks, payload is new time in seconds */
|
|
onSeek?: (payload: AudioPlayerSeekPayload) => void;
|
|
}
|
|
|
|
export interface TranscriptViewerProps {
|
|
/** Transcript text to display */
|
|
transcript: string;
|
|
/** Whether showing live transcription */
|
|
isLive?: boolean;
|
|
}
|
|
|
|
export interface SummaryDisplayProps {
|
|
/** AI-generated summary text */
|
|
summary: string;
|
|
/** Whether summary is being generated */
|
|
isLoading?: boolean;
|
|
}
|
|
|
|
export interface AppGalleryProps {
|
|
/** Array of generated apps to display */
|
|
apps: GeneratedApp[];
|
|
/** Whether apps are being loaded */
|
|
isLoading?: boolean;
|
|
/** Fired when app is clicked, payload is app ID */
|
|
onSelectApp?: (payload: AppGallerySelectappPayload) => void;
|
|
}
|
|
|
|
export interface AppCardProps {
|
|
/** Generated app to display */
|
|
app: GeneratedApp;
|
|
/** Show delete button */
|
|
showActions?: boolean;
|
|
/** Fired when card clicked, payload is app ID */
|
|
onClick?: (payload: AppCardClickPayload) => void;
|
|
/** Fired when delete confirmed, payload is app ID */
|
|
onDelete?: (payload: AppCardDeletePayload) => void;
|
|
}
|
|
|
|
export interface AppIframeViewerProps {
|
|
/** HTML content to render in iframe */
|
|
htmlContent: string;
|
|
/** App title for accessibility */
|
|
title: string;
|
|
/** Fired when iframe finishes loading */
|
|
onLoadComplete?: () => void;
|
|
}
|