import "./file_row.css"; import type * as React from "react"; import { type ReactNode } from "react"; import { useRender } from "@base-ui/react/use-render"; import { type DisplayFile } from "./file_thumbnail"; import { type FieldAnnotationProps } from "./field_annotations"; import { type RowLineProps } from "./row"; import { type StyleProps } from "./style_props"; export interface FileRowProps extends FieldAnnotationProps, StyleProps { name: string; /** * One statement or a run (size, status, timestamp), each whole, joined by the row's `·` * (`Row.Line`) — words needing action in their tone as there. A statement may be a node, e.g. a * `DiffValue` for a reclassified or superseded file. */ meta?: RowLineProps["children"]; /** Omit (with `placeholder`) for a document not yet provided. */ mimeType?: string; /** * A picture or clip shows itself as the row's picture (`ROW_PICTURE`), since identical badges tell * photographed documents apart by nothing; any other file is its badge inset in a tile the picture's size. In a * list (`FileRows`, a `Table`) every face fills the list's one slot — a picture's where any row holds a file — so * the names start at one x. It replaces the badge; `leading` is for marks about the row. */ file?: DisplayFile; /** * The file's face — a picture's thumbnail, a document's badge — becomes its own press, opening the file * while the row opens what it is about. A sibling above the door, never nested. */ onOpenFile?: () => void; /** A file expected, not yet there — a paper not brought: the dashed tile with the document badge's ghost, whatever * else its list holds. */ placeholder?: boolean; /** Marks the badge TMPL. */ isTemplate?: boolean; /** The band becomes the row's door. Omit for a static line. */ onPress?: () => void; /** The row's own acts (`Row.Acts`), each keeping its press above the door. */ trailing?: ReactNode; /** * What the row is (a `Status`, a verdict) on the name's line (`Row.Stage`); pressing it presses * the row. */ status?: ReactNode; /** * A mark about the row (a `DiffMark`, a checkbox), a second lead above the door so ticking never * opens the file. Outside the badge so it lines up down the list; give every row the slot, filled * or empty. */ leading?: ReactNode; /** * `"sm"` (default): the attachment line — its mark and the row's air on both sides, at the list's 72 floor in a * list of them (`FileRows`, a files block), and the register's row around it in a register's cell. `"md"`: the * document-desk row for the few rows that are the surface's subject, at the page's beat wherever it stands. Its * mark is the same at both. */ size?: "sm" | "md"; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } /** * A file line — the kit's `Row` led by the file's face, the full name over its supporting line, its * state, and `trailing`. For checklists and attachment rows where the name must read. `onPress` * makes the band the door; `leading`, a pressable mark and `trailing` keep their own press. Square * tiles are `FileThumbnailGrid`. */ export declare function FileRow(props: FileRowProps): React.JSX.Element;