import * as React from "react";
import type { MasonryProp } from "../../props/components/layout.prop.js";
export type { MasonryColumnsProp, MasonryGapProp, MasonryItemProp, MasonryLayoutEntryProp, MasonryProp, MasonryProp as MasonryProps, } from "../../props/components/layout.prop.js";
/**
* Masonry — Ant Design `Masonry` (6.0.0): tiles of unequal height packed into columns, each tile
* dropped into whichever column is shortest when its turn comes.
*
* ## Reading order is the real accessibility question, and this layout answers it by construction
*
* A masonry has two orders and they do not agree. **DOM order is `items` order, always** — the
* tiles are absolutely positioned, so nothing in this component ever reorders the DOM. A screen
* reader therefore reads, and the Tab key therefore visits, exactly the sequence the caller
* passed, at every width and in every column count. **Visual order is the packing** — with three
* columns, items 1·2·3 open the three columns and item 4 lands under whichever of them is
* shortest, so a later item can sit visually ABOVE an earlier one.
*
* That divergence is inherent to the form, not a defect to paper over, and it has one consequence
* the caller owns: **order `items` by importance, never by height.** `MasonryItem.column` makes
* the gap wider on purpose — a tile pinned to a column can end up far down the page while staying
* second in the reading order — so pin sparingly, and never to fake a visual sequence.
*
* The alternative implementation is worse on exactly this axis. CSS `column-count` fills the
* first column to the bottom before starting the second, so in a 30-tile feed the second tile in
* the DOM paints at the bottom-left of the screen; here the second tile paints at the top of the
* second column. Absolute placement is what keeps the two orders as close as a masonry can get
* them.
*
* ## It carries no ARIA, and that is the decision, not an omission
*
* The container is a plain `
` with no role, and so is each tile. WAI-ARIA 1.2 has no role
* for this, and every near-miss is worse than nothing:
*
* - `list` / `listitem` would announce "list, N items" over content that is usually already
* headed, linked and structured — and would strip the tiles' own semantics on some AT.
* - `group` must have an accessible name to be conveyed at all; an unnamed one is discarded, and
* naming a layout forces a string the caller has no reason to have.
* - `region` is a landmark: three masonries on a page would ship three landmarks that axe's
* `landmark-unique` rejects — the exact collision gh#817 recorded for the table scroll region.
* - `grid` / `table` promise a row/column keyboard model that this has none of.
* - `presentation` / `none` on a `
` is a no-op.
*
* So the first rule of ARIA applies: no role is the correct role. The tiles' own content carries
* the semantics, and the caller wraps the masonry in `` (or a `Flex`
* with a label, which does this for you) when the COLLECTION needs a name.
*
* There are no strings here either — no label, no `aria-label`, no announcement — so the
* component has nothing to route through `t()`. That is a property of a pure layout, and it is
* stated rather than papered over with an invented "masonry" label nobody asked for.
*
* ## The four deliberate differences from antd, each with its reason at the point of deviation
*
* 1. **`gap`, not `gutter`** (and a `GapProp` token step, not a raw pixel number). This package
* already owns that axis under that name on `Flex`, `ResponsiveGrid` and `AuthStack`, and
* `check:prop-vocabulary` maps a field called `gap` to `GapProp`. `gutter` is typed `never` so
* arriving from antd's docs is a compile error that names the replacement.
* 2. **Breakpoint steps are `base sm md lg xl`, not `xs sm md lg xl xxl`.** antd's `xs` IS this
* library's `base`; `xxl` has no step here. Both are rejected by TypeScript and named in a
* development warning rather than silently dropped.
* 3. **`classNames` / `styles` are not ported** — the standing decision for every antd port here
* (docs/DESIGN-AUTHORITY.md, "a knob that only a fork could reach is not parity either").
* `src/tokens/components/masonry.css` is the answer.
* 4. **`MasonryItem.height` is honoured.** antd declares and documents the field and then never
* reads it — its layout is measured from `getBoundingClientRect()` alone, and all six of its
* demos carry their heights in `data`. Shipping an inert prop is worse than shipping none, so
* here a finite `height` sizes the tile and skips its measurement, which is also what lets a
* first paint and an SSR render land in the right place.
*
* And one thing that is NOT ported: antd animates tile REMOVAL through rc-motion's `CSSMotionList`
* (`motionLeave`). A removed tile here disappears at once. The arrival fade and the re-flow slide
* are ported, in CSS, and both snap under `prefers-reduced-motion: reduce`.
*/
export declare const Masonry: ((props: MasonryProp & React.RefAttributes) => React.ReactElement) & {
displayName?: string;
};