import "./row_focus_entry.css"; import type * as React from "react"; import { Button as Base } from "@base-ui/react/button"; import { type CurrentToken } from "./aria_current"; import { type StyleProps } from "./style_props"; export interface RowFocusEntryProps extends StyleProps { /** Opens the thing the surface stands for — the same handler the surface presses. */ onPress: () => void; /** * REQUIRED. The door is EMPTY, so it has no text content to derive a name from — * without a label it is a nameless button. Name the destination ("Open ORD-1042"). */ accessibilityLabel: string; /** * Set ONLY when the press toggles a disclosure the door owns (`TableRow`'s * `detail`), never when it navigates: it emits `aria-expanded`, which promises * a screen-reader user that this control shows and hides something in place. * Omit and no state is announced. */ expanded?: boolean; /** * This row is the CURRENT one in a set of NAVIGATION rows — the open record, the * view a rail stands in. `"page"` names the row whose destination IS the screen, * `"location"` the group containing it. Selection state on the surface is * `selected`; this is where you ARE. */ current?: CurrentToken; /** Focus-ring corner radius — match the surface the door spans. Default 10 (the register wash). */ radius?: number; testID?: string; ref?: React.Ref; render?: Base.Props["render"]; } /** * THE ROW'S KEYBOARD ENTRY: an empty, absolutely-positioned button that carries * the tab stop, the accessible name and the focus ring for a pressable surface * whose CONTENT can hold its own controls. A door onto the row, in the kit's own * word for a thing you press to go somewhere. * * A button must not contain interactive descendants — nesting `