/** * Item — a row of content: media on one side, a title and description in the * middle, actions on the other side. * * It is the shape almost every list in an app already has — a settings row, a * file in a picker, a member in a team list, a tool call in a transcript — so * it exists as one composable primitive rather than being rebuilt per screen * with slightly different padding each time. * * ```tsx * * * * Invoice.pdf * 2.4 MB · Updated yesterday * * * * ``` * * Two axes, and they are independent. `orientation` on the item decides * whether its own parts sit side by side or stack into a card; `orientation` * on `Item.Group` decides whether the items themselves run down the screen or * across it. A carousel wants both set to the non-default: a horizontal group * of vertical items. */ import { type ReactNode } from 'react'; import { View, type ViewProps } from 'react-native'; import { type VariantProps } from 'tailwind-variants'; import { type AnimatedPressableProps } from '../../primitives/animated-pressable.js'; import { type TextProps } from '../../primitives/text.js'; type ItemSize = 'default' | 'sm' | 'xs'; type ItemOrientation = 'horizontal' | 'vertical'; declare const itemVariants: import("tailwind-variants").TVReturnType<{ variant: { default: {}; outline: { root: string; }; muted: { root: string; }; }; size: { default: { root: string; title: string; description: string; }; sm: { root: string; title: string; description: string; }; xs: { root: string; title: string; description: string; }; }; orientation: { /** Media, text and actions side by side — the list-row shape. */ horizontal: { root: string; }; /** Stacked into a card — the shape a horizontal carousel wants. */ vertical: { root: string; }; }; disabled: { true: { root: string; }; }; }, { root: string; title: string; description: string; }, undefined, { variant: { default: {}; outline: { root: string; }; muted: { root: string; }; }; size: { default: { root: string; title: string; description: string; }; sm: { root: string; title: string; description: string; }; xs: { root: string; title: string; description: string; }; }; orientation: { /** Media, text and actions side by side — the list-row shape. */ horizontal: { root: string; }; /** Stacked into a card — the shape a horizontal carousel wants. */ vertical: { root: string; }; }; disabled: { true: { root: string; }; }; }, { root: string; title: string; description: string; }, import("tailwind-variants").TVReturnType<{ variant: { default: {}; outline: { root: string; }; muted: { root: string; }; }; size: { default: { root: string; title: string; description: string; }; sm: { root: string; title: string; description: string; }; xs: { root: string; title: string; description: string; }; }; orientation: { /** Media, text and actions side by side — the list-row shape. */ horizontal: { root: string; }; /** Stacked into a card — the shape a horizontal carousel wants. */ vertical: { root: string; }; }; disabled: { true: { root: string; }; }; }, { root: string; title: string; description: string; }, undefined, unknown, unknown, undefined>>; declare const mediaVariants: import("tailwind-variants").TVReturnType<{ variant: { /** No box — for an Avatar or anything that styles itself. */ default: string; /** Rounded square tile sized for an icon. */ icon: string; /** Clipped frame for an image or thumbnail. */ image: string; }; size: { default: string; sm: string; xs: string; }; }, undefined, "shrink-0 items-center justify-center", { variant: { /** No box — for an Avatar or anything that styles itself. */ default: string; /** Rounded square tile sized for an icon. */ icon: string; /** Clipped frame for an image or thumbnail. */ image: string; }; size: { default: string; sm: string; xs: string; }; }, undefined, import("tailwind-variants").TVReturnType<{ variant: { /** No box — for an Avatar or anything that styles itself. */ default: string; /** Rounded square tile sized for an icon. */ icon: string; /** Clipped frame for an image or thumbnail. */ image: string; }; size: { default: string; sm: string; xs: string; }; }, undefined, "shrink-0 items-center justify-center", unknown, unknown, undefined>>; export interface ItemProps extends Omit, Omit, 'disabled'> { className?: string; disabled?: boolean; /** * Row density. `Item.Media`, `Item.Title` and `Item.Description` follow it, * so it only needs setting here. */ size?: ItemSize; /** * `horizontal` is the list row: media, text and actions side by side. * `vertical` stacks them into a card, which is what a horizontal carousel * wants — and it is also what `Item.Header` and `Item.Footer` need, since * both are full-width strips. */ orientation?: ItemOrientation; children?: ReactNode; } export interface ItemGroupProps extends ViewProps { className?: string; /** * `vertical` stacks the items — the settings-list shape. `horizontal` runs * them across instead, for a carousel; pair it with a scrollable and * `orientation="vertical"` on each item so every entry reads as a card. */ orientation?: ItemOrientation; children?: ReactNode; } export interface ItemSeparatorProps extends ViewProps { className?: string; /** Match the group's axis: a horizontal group needs vertical hairlines. */ orientation?: ItemOrientation; } export interface ItemMediaProps extends ViewProps, VariantProps { className?: string; children?: ReactNode; } export interface ItemContentProps extends ViewProps { className?: string; children?: ReactNode; } export interface ItemTitleProps extends TextProps { className?: string; } export interface ItemDescriptionProps extends TextProps { className?: string; } export interface ItemActionsProps extends ViewProps { className?: string; children?: ReactNode; } export interface ItemHeaderProps extends ViewProps { className?: string; children?: ReactNode; } export interface ItemFooterProps extends ViewProps { className?: string; children?: ReactNode; } export declare const Item: import("react").ForwardRefExoticComponent> & { Group: import("react").ForwardRefExoticComponent>; Separator: import("react").ForwardRefExoticComponent>; Media: import("react").ForwardRefExoticComponent>; Content: import("react").ForwardRefExoticComponent>; Title: import("react").ForwardRefExoticComponent>; Description: import("react").ForwardRefExoticComponent>; Actions: import("react").ForwardRefExoticComponent>; Header: import("react").ForwardRefExoticComponent>; Footer: import("react").ForwardRefExoticComponent>; }; export {}; //# sourceMappingURL=index.d.ts.map