import type { ComponentProps } from "../../types/component-props"; import type { SpacingScale, ClusterElement } from "../../types/layout-primitives"; import type React from "react"; /** * Props for the Cluster component - a wrapping flex layout for inline groups. * * Cluster provides a flexible layout for inline content that needs to wrap naturally, * such as tags, badges, button groups, or navigation links. Items wrap to the next line * when they exceed the container width. * * @example * // Tag cloud * * React * TypeScript * CSS * * * @example * // Button group * * * * * */ export interface ClusterProps extends Partial, Omit, "className"> { /** * Gap between items. * Uses unified spacing scale: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' * @default 'sm' */ gap?: SpacingScale; /** * Horizontal alignment of items. * - 'start': Items at start (left in LTR) * - 'center': Items centered * - 'end': Items at end (right in LTR) * - 'between': Space evenly between items * @example * Centered items */ justify?: "start" | "center" | "end" | "between"; /** * Vertical alignment of items. * - 'start': Align to top * - 'center': Vertically centered * - 'end': Align to bottom * - 'baseline': Align baselines (good for text) * @example * Baseline-aligned text */ align?: "start" | "center" | "end" | "baseline"; /** * Polymorphic element type to render. * @default 'div' */ as?: ClusterElement; /** * Additional CSS classes to apply. */ className?: string; /** * Children elements to render inside the Cluster. */ children?: React.ReactNode; }