import { CSSProperties, ReactNode } from 'react'; import { CategorySelection, ConnectedAppConfig, CurrentPageInfo, FilterCategoryData, ReviewContentType, ReviewFileItem, ReviewPlatform } from '../../types/riskReview'; /** * Props for CreateReview component */ export interface CreateReviewProps { /** * Current content type selected */ contentType: ReviewContentType; /** * Callback when content type changes (extension platform only) */ onContentTypeChange?: (type: ReviewContentType) => void; /** * Platform mode affecting UI behavior * - 'extension': Shows content type toggle, file input with DropZone, text/URL input options * - 'webapp': Simplified file list display, no content type toggle */ platform: ReviewPlatform; /** * Custom section title * @default Contextual based on type and platform */ sectionTitle?: string; /** * Custom object name (replaces 'Files') * @example 'Frames' for Figma, 'Documents' for SharePoint */ objectName?: string; /** * Files in queue (for file mode) */ files?: ReviewFileItem[]; /** * Selected file IDs */ selectedFileIds?: string[]; /** * Maximum files for multi-file review */ maxFiles?: number; /** * Callback when files are added (extension platform) */ onFilesAdd?: (files: File[]) => void; /** * Callback when file selection changes */ onFileSelectionChange?: (selectedIds: string[]) => void; /** * Callback when file is removed */ onFileRemove?: (fileId: string) => void; /** * Callback to clear all files */ onFilesClear?: () => void; /** * Text content (for text mode) */ text?: string; /** * Callback when text changes */ onTextChange?: (text: string) => void; /** * Maximum text length */ maxTextLength?: number; /** * Placeholder text for the text input */ textPlaceholder?: string; /** * Current page info (for weburl mode) */ currentPage?: CurrentPageInfo; /** * Whether weburl mode is available */ isWebUrlAvailable?: boolean; /** * URL input value (for manual URL entry) */ urlInputValue?: string; /** * Callback when URL input changes */ onUrlInputChange?: (url: string) => void; /** * Filter categories */ filterCategories?: FilterCategoryData[]; /** * Current filter selections */ filterSelections?: CategorySelection[]; /** * Callback when filters change */ onFilterChange?: (selections: CategorySelection[]) => void; /** * Whether filters are loading */ isFiltersLoading?: boolean; /** * Error message for filters */ filterError?: string; /** * Callback when review is submitted */ onSubmit: () => void; /** * Whether submit is enabled */ canSubmit?: boolean; /** * Whether review is currently processing */ isLoading?: boolean; /** * Submit button label * @default 'Start Risk Review' */ submitLabel?: string; /** * Custom empty state for file list */ emptyState?: ReactNode; /** * Empty state message for file list * @default 'No files selected' */ emptyStateMessage?: string; /** * Data attribute for testing */ dataTestId?: string; /** * Data attribute for analytics */ dataId?: string; /** * Additional CSS class */ className?: string; /** * Inline styles */ style?: CSSProperties; } /** * Props for content type selector */ export interface ContentTypeSelectorProps { /** * Currently selected content type */ value: ReviewContentType; /** * Callback when content type changes */ onChange: (type: ReviewContentType) => void; /** * Whether weburl option is available */ isWebUrlAvailable?: boolean; /** * Whether the selector is disabled */ isDisabled?: boolean; /** * Data attribute for testing */ dataTestId?: string; } export type { CategorySelection, ConnectedAppConfig, CurrentPageInfo, FilterCategoryData, ReviewContentType, ReviewFileItem, ReviewPlatform, }; //# sourceMappingURL=CreateReview.types.d.ts.map