import "./event_chip.css"; import type * as React from "react"; import type { ReactNode } from "react"; import { useRender } from "@base-ui/react/use-render"; import { type StyleProps } from "../style_props"; import type { CalendarEvent } from "./types"; /** * The three ways an event is drawn. * * - `banner` — a bar, for a thing that occupies whole DAYS; reads as continuous * across day boundaries. * - `dot` — a coloured dot beside plain text, for a timed event inside a month * cell, where a filled bar per meeting turns the month into a colour chart. * - `block` — a body sized to its duration, for the time grid, where vertical * extent carries the meaning. * * **None of them draws a border.** A washed body already states its own edge * (`board.tsx` states the same law for its cards). */ export type EventChipVariant = "banner" | "dot" | "block"; export interface EventChipProps extends StyleProps { event: CalendarEvent; variant: EventChipVariant; onPress?: () => void; /** * Replaces the chip's CONTENTS; the press target and geometry stay ours. Named * apart from `render`, which every kit entry uses to substitute its ELEMENT. */ renderContent?: (event: CalendarEvent) => ReactNode; /** Show the start time before the title (month cells, where there is no rail). */ showTime?: boolean; locale?: string; /** Below this the block drops its second line rather than clipping it. */ compact?: boolean; /** The chip's rendered height, so its corners stay proportionate to it — a * fixed radius turns a 20px lane chip into a pill and barely marks a tall * block. */ height: number; ref?: React.Ref; render?: useRender.RenderProp; } export declare function EventChip(props: EventChipProps): React.ReactElement>; /** What a screen reader hears: the title, then when it is — never a bare title, * which in a grid of forty of them says nothing about which one this is. */ export declare function accessibleName(event: CalendarEvent, locale?: string): string;