import { ButtonProps } from './components/button.cjs'; export { Button } from './components/button.cjs'; import React$1, { ReactNode } from 'react'; export { Card, Content as CardContent, Footer as CardFooter, CardProps, Title as CardTitle } from './components/card.cjs'; import { I as IconProps } from './icons-75fd8de5.js'; export { a as Icon, b as IconProps } from './icons-75fd8de5.js'; export { default as Field, FieldProps } from './components/form/fields.cjs'; export { default as Input } from './components/form/inputs.cjs'; import { I as InputProps } from './form.types-d25ebfac.js'; export { T as TextareaProps } from './form.types-d25ebfac.js'; export { _ as Link, L as LinkProps, _ as To } from './link-1d478bbc.js'; export { default as List } from './components/list/list.cjs'; export { Modal, ModalProps } from './components/modal.cjs'; export { default as Popover, PopoverProps } from './components/popover/popover.cjs'; export { RenderTable as TBL, TableProps } from './components/tables/table.cjs'; import { D as DialogModalProps } from './dialog-e28c085f.js'; export { a as Dialog, d as DialogPosition, b as DialogProps, c as DialogSize } from './dialog-e28c085f.js'; import { U as UI } from './ui-40a4a170.js'; import { C as ComponentProps$1 } from './component-props-50e69975.js'; export { Nav, NavComponent, NavItem, NavItemProps, NavList, NavListProps, NavProps } from './components/nav/nav.cjs'; export { default as Text, TextProps } from './components/text/text.cjs'; export { b as Heading, H as HeadingLevel, T as Title, a as TitleProps } from './heading-e1fd9674.js'; export { default as Textarea } from './components/form/textarea.cjs'; export { default as Breadcrumb, BreadcrumbProps, CustomRoute, useBreadcrumbSegments } from './components/breadcrumbs/breadcrumb.cjs'; export { L as ListItemProps, a as ListProps } from './list.types-2bcadb23.js'; /** * XOR constraint: exactly one of aria-label or aria-labelledby is required. * Passing both or neither is a TypeScript compile-time error. * Satisfies WCAG 2.1 SC 1.1.1 (Non-text Content). */ type WithAriaLabel = { "aria-label": string; "aria-labelledby"?: never; }; type WithAriaLabelledBy = { "aria-labelledby": string; "aria-label"?: never; }; type IconButtonProps = Omit & (WithAriaLabel | WithAriaLabelledBy) & { /** The icon element rendered inside the button. */ icon: React$1.ReactNode; /** * Optional text shown alongside the icon at desktop widths. * Visually hidden below the `$icon-label-bp` SCSS breakpoint (default 48rem / 768px) * via a media query on `[data-icon-label]`, but always present in the accessibility * tree — screen readers announce it at every viewport size. * * NOTE: When `label` is provided, the default `variant="icon"` removes padding. * Use `variant="outline"` (or another padded variant) to restore layout padding * alongside the label. */ label?: string; /** Button type: button, submit, or reset. Required. */ type: "button" | "submit" | "reset"; }; /** * Accessible icon button component. Wraps `Button` with: * - Required accessible label via `aria-label` or `aria-labelledby` (XOR enforced) * - Optional `label` text hidden on mobile (< 48rem), visible on desktop — always in a11y tree * - `variant="icon"` default (square, no padding) * - Fixed `3rem × 3rem` tap target (48px at default root font size — WCAG 2.5.5 AAA) * * @example * // Icon only * } /> * * @example * // Icon + label (label hides on mobile, visible at >= 48rem / 768px) * } * label="Settings" * variant="outline" * /> * * @example * // Labelled by external element * Delete item * } /> */ declare const IconButton: { ({ icon, label, variant, type, ...props }: IconButtonProps): React$1.JSX.Element; displayName: string; }; /** * Valid severity levels for alerts. * Each severity has associated colors, icons, and ARIA attributes. */ type Severity = "default" | "info" | "success" | "warning" | "error"; /** * Props for the Alert component. */ type AlertProps = { /** * Whether the alert is open. */ open: boolean; /** * The severity level of the alert. * @default "default" */ severity?: Severity; /** * The main message content. */ children: React$1.ReactNode; /** * Optional title for the alert. */ title?: string; /** * Whether the alert can be dismissed. * @default false */ dismissible?: boolean; /** * Callback when alert is dismissed. */ onDismiss?: () => void; /** * Size of the severity icon in pixels. * Allows customization of icon size for different contexts. * @default 24 * @example * ```tsx * Larger icon * Smaller icon * ``` */ iconSize?: number; /** * Whether to hide the severity icon. * When true, only text content is displayed. * @default false */ hideIcon?: boolean; /** * Additional props to pass to the Icon component. * Allows fine-grained control over icon appearance. * @example * ```tsx * * Alert with custom icon props * * ``` */ iconProps?: IconProps; /** * Duration in milliseconds before the alert automatically dismisses. * Set to 0 or undefined to disable auto-dismiss. * @default undefined * @example * ```tsx * Success message * ``` */ autoHideDuration?: number; /** * Whether to pause auto-dismiss when the alert is hovered or focused. * Complies with WCAG 2.2.1 (Timing Adjustable). * @default true */ pauseOnHover?: boolean; /** * Semantic heading level for the title (2-6). * When undefined, uses element instead of heading. * Use this to maintain proper heading hierarchy on the page. * @default undefined * @example * ```tsx * ... * ... * ``` */ titleLevel?: 2 | 3 | 4 | 5 | 6; /** * Custom action buttons to display in the alert. * @example * ```tsx * }> * File deleted * * ``` */ actions?: React$1.ReactNode; /** * Whether to automatically focus the alert when it becomes visible. * Useful for critical alerts that require immediate attention. * @default false */ autoFocus?: boolean; /** * Visual variant of the alert. * - outlined: Border with lighter background (default) * - filled: Solid colored background * - soft: No border, subtle background * @default "outlined" */ variant?: "outlined" | "filled" | "soft"; /** * Content rendering mode for alert children. * Determines how the children content is wrapped in the alert message area. * - "text": Wraps children in a paragraph tag (default, for simple text content) * - "node": Renders children directly without wrapper (for complex layouts, lists, or custom components) * @default "text" * @example Simple text content (uses default "text" mode) * ```tsx * * This is a simple text message that will be wrapped in a paragraph. * * ``` * @example Complex content with list * ```tsx * *

Please review the following items:

*
    *
  • Check your email settings
  • *
  • Update your password
  • *
  • Enable two-factor authentication
  • *
*
* ``` * @example Custom component layout * ```tsx * *
*

Operation completed successfully!

*
* Items processed: 150 * Time elapsed: 2.5s *
*
*
* ``` */ contentType?: "text" | "node"; } & Omit, "title" | "children">; declare const Alert: React$1.FC; /** * Props for the Checkbox component * * A simplified, checkbox-specific interface that wraps the Input component. * Provides a boolean onChange API and automatic label association. * * @example * ```tsx * // Controlled mode * * ``` * * @example * ```tsx * // Uncontrolled mode with default * * ``` */ interface CheckboxProps extends Omit { /** * Unique identifier for the checkbox input. * Required for proper label association via htmlFor attribute. * * @required * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html|WCAG 4.1.2 Name, Role, Value} */ id: string; /** * Label text or React node displayed next to the checkbox. * Automatically associated with the checkbox via htmlFor. * * @required * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/labels-or-instructions.html|WCAG 3.3.2 Labels or Instructions} */ label: React$1.ReactNode; /** * Predefined size variant for the checkbox. * Maps to standardized size tokens for consistent sizing across the design system. * * Available sizes: * - `xs`: Extra small (0.875rem / 14px) - Compact forms, tight spaces * - `sm`: Small (1rem / 16px) - Dense layouts * - `md`: Medium (1.25rem / 20px) - Default, optimal for most use cases * - `lg`: Large (1.5rem / 24px) - Touch-friendly, prominent CTAs * * For custom sizes beyond these presets, use the `styles` prop: * ```tsx * styles={{ '--checkbox-size': '2rem' }} * ``` * * @default 'md' * @example * ```tsx * * * ``` */ size?: 'xs' | 'sm' | 'md' | 'lg'; /** * Controlled mode: Current checked state. * When provided, component becomes controlled and requires onChange handler. * * @example * ```tsx * const [checked, setChecked] = useState(false); * * ``` */ checked?: boolean; /** * Uncontrolled mode: Initial checked state. * Use this for forms where React doesn't need to track the checkbox state. * * @default false * @example * ```tsx * * ``` */ defaultChecked?: boolean; /** * Form submission value when checkbox is checked. * This is the value submitted with the form when the checkbox is checked. * * @default "on" */ value?: string; /** * Change handler with simplified boolean API. * Receives true when checked, false when unchecked. * * @param checked - The new checked state * @example * ```tsx * console.log('Checked:', checked)} * /> * ``` */ onChange?: (checked: boolean) => void; /** * Optional custom CSS classes for the wrapper div. * Applied alongside automatic checkbox wrapper styling. */ classes?: string; /** * Optional custom CSS classes for the input element. * * @default "checkbox-input" */ inputClasses?: string; /** * CSS custom properties for theming and custom sizing. * * Common variables: * - `--checkbox-size`: Custom checkbox dimensions (for sizes beyond xs/sm/md/lg presets) * - `--checkbox-gap`: Space between checkbox and label (default: 0.5rem) * - `--checkbox-border-color`: Border color (default: var(--color-neutral-600)) * - `--checkbox-checked-bg`: Background color when checked (default: var(--color-success)) * - `--checkbox-radius`: Border radius (default: 0.25rem) * - `--checkbox-focus-ring-color`: Focus ring color (default: var(--color-focus-ring)) * - `--checkbox-disabled-opacity`: Opacity for disabled state (default: 0.6) * - `--checkbox-label-fs`: Label font size (default: 1rem) * * For custom sizes beyond the preset variants (xs/sm/md/lg), use `--checkbox-size`: * * @example * ```tsx * // Custom size beyond presets * * * // Brand theming * * ``` * * @see {@link ./CHECKBOX-STYLES.mdx|CHECKBOX-STYLES.mdx} - Complete CSS variable reference * @see {@link ./CHECKBOX.mdx|CHECKBOX.mdx} - Component documentation with examples */ styles?: React$1.CSSProperties; } /** * Checkbox - Accessible checkbox input with automatic label association * * A thin wrapper around the Input component that provides a checkbox-specific API * with simplified boolean onChange and automatic label rendering. Leverages all * validation, disabled state, and ARIA logic from the base Input component. * * **Key Features:** * - ✅ Semantic size variants (xs, sm, md, lg) via `size` prop * - ✅ Boolean onChange API (`onChange={(checked) => ...}`) * - ✅ Automatic label association via htmlFor * - ✅ WCAG 2.1 AA compliant (uses aria-disabled pattern) * - ✅ Supports both controlled and uncontrolled modes * - ✅ Required indicator with asterisk * - ✅ Validation states (invalid, valid, none) * - ✅ Error messages and hint text via Input component * - ✅ Customizable via CSS custom properties * - ✅ Keyboard accessible (Space to toggle) * - ✅ Focus-visible indicators * - ✅ High contrast mode support * * @component * @example * ```tsx * // Basic checkbox * * ``` * * @example * ```tsx * // Controlled checkbox with validation * const [agreed, setAgreed] = useState(false); * * ``` * * @example * ```tsx * // Disabled checkbox * * ``` * * @example * ```tsx * // Size variants * * * ``` * * @example * ```tsx * // Custom styling * * ``` * * @param {CheckboxProps} props - Component props * @param {React.Ref} ref - Forwarded ref to the input element * @returns {JSX.Element} Checkbox wrapper with input and label * * @see {@link ./CHECKBOX.mdx|CHECKBOX.mdx} - Complete component documentation * @see {@link ./CHECKBOX-STYLES.mdx|CHECKBOX-STYLES.mdx} - CSS customization guide * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/name-role-value.html|WCAG 4.1.2 Name, Role, Value} * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/focus-visible.html|WCAG 2.4.7 Focus Visible} * @see {@link https://www.w3.org/WAI/WCAG21/Understanding/error-identification.html|WCAG 3.3.1 Error Identification} */ declare const Checkbox: React$1.ForwardRefExoticComponent>; /** * Props for the Img component. * * Extends native HTML img element attributes with additional functionality * for responsive images, loading states, and error handling. * * ## Accessibility Guidelines (WCAG 2.1 AA) * * **Decorative Images:** * Images that are purely visual decoration should have an empty alt attribute. * * @example * ```tsx * // ✅ Decorative image (border, background pattern, visual separator) * * ``` * * **Semantic Images:** * Images that convey information or meaning must have descriptive alt text. * * @example * ```tsx * // ✅ Semantic image (charts, diagrams, photos with meaning) * Sales chart showing 30% growth in Q4 2024 * ``` * * **Responsive Images:** * Use srcset and sizes for responsive images to optimize performance. * * @example * ```tsx * // ✅ Responsive image with srcset * Team photo from annual conference * ``` * * @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html */ interface ImgProps extends Omit, 'placeholder'> { /** * The image source URL. * @default '//' */ src?: string; /** * Alternative text for the image. * - **Empty string (`""`)** for decorative images * - **Descriptive text** for semantic images that convey meaning * * @example * ```tsx * // Decorative * * * // Semantic * Company logo * ``` */ alt?: string; /** * Width of the image in pixels. * @default 480 */ width?: number | string; /** * Height of the image in pixels. * When not provided, defaults to 'auto'. */ height?: number | string; /** * Inline styles to apply to the image. */ styles?: React$1.CSSProperties; /** * Loading behavior for the image. * - `"lazy"` (default): Defers loading until near viewport * - `"eager"`: Loads immediately * * @default "lazy" * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#loading */ loading?: 'eager' | 'lazy'; /** * Fallback placeholder image URL to display on error. * If not provided and image fails to load, a default placeholder is used. * * @example * ```tsx * User profile photo * ``` */ placeholder?: string; /** * Hint for the browser to prioritize image fetching. * - `"high"`: High priority (above-the-fold images) * - `"low"` (default): Low priority * - `"auto"`: Browser decides * * @default "low" * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#fetchpriority */ fetchpriority?: 'high' | 'low' | 'auto'; /** * Decoding hint for the browser. * - `"async"`: Decode asynchronously (don't block rendering) * - `"sync"`: Decode synchronously * - `"auto"` (default): Browser decides * * @default "auto" * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#decoding */ decoding?: 'sync' | 'async' | 'auto'; /** * Responsive image sources with width descriptors. * Allows browser to choose appropriate image based on viewport. * * @example * ```tsx * Responsive image * ``` * * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#srcset */ srcSet?: string; /** * Media conditions for responsive image sizing. * Works with srcSet to determine which image to load. * * @example * ```tsx * sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 800px" * ``` * * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#sizes */ sizes?: string; /** * Callback fired when the image fails to load. * The default SVG placeholder is still applied after calling this handler. * Call `event.preventDefault()` to prevent the default fallback behavior. * * @param event - The error event * * @example * ```tsx * // Log error and show default placeholder * console.error('Image failed to load', e)} * alt="Photo" * /> * * // Prevent default and use custom fallback * { * e.preventDefault() * e.currentTarget.src = '/custom-fallback.jpg' * }} * alt="Photo" * /> * ``` */ onError?: (event: React$1.SyntheticEvent) => void; /** * Callback fired when the image successfully loads. * * @param event - The load event * * @example * ```tsx * console.log('Image loaded successfully')} * alt="Photo" * /> * ``` */ onLoad?: (event: React$1.SyntheticEvent) => void; } /** * Img - A semantic image component with accessibility and performance best practices. * * This component wraps the native `` element with enhanced features: * - **Responsive images** via optional srcset/sizes * - **Lazy loading** by default for performance * - **Error handling** with configurable fallback placeholders * - **Type safety** with full TypeScript support * * ## Accessibility Patterns (WCAG 2.1 AA) * * ### Decorative Images * Images that are purely visual decoration should use an empty alt attribute. * These images are typically borders, patterns, or visual separators. * * @example * ```tsx * // ✅ GOOD: Decorative border image * * * // ✅ GOOD: Background pattern * * ``` * * ### Semantic Images * Images that convey information must have descriptive alt text that explains * the content and purpose of the image. * * @example * ```tsx * // ✅ GOOD: Informative image with descriptive alt * Sales chart showing 30% revenue growth in Q4 2024 * * // ✅ GOOD: Product photo with context * Silver MacBook Pro 14-inch on wooden desk * ``` * * ## Performance Optimization * * ### Lazy Loading * By default, images use lazy loading to improve page load performance. * Only use `loading="eager"` for above-the-fold images. * * @example * ```tsx * // ✅ GOOD: Lazy load below-the-fold image * Photo * * // ✅ GOOD: Eager load hero image * Hero banner * ``` * * ### Responsive Images * Use srcset and sizes for responsive images to serve appropriate image sizes * based on viewport width, improving performance and bandwidth usage. * * @example * ```tsx * // ✅ GOOD: Responsive image with multiple sizes * Responsive image adapts to viewport * ``` * * ## Error Handling * * @example * ```tsx * // ✅ GOOD: Custom placeholder on error * User profile photo * * // ✅ GOOD: Custom error handler * { * console.error('Image failed to load') * logToAnalytics('image_error', { src: e.currentTarget.src }) * }} * alt="Photo" * /> * ``` * * @param {ImgProps} props - Component props extending native img attributes * @returns {React.ReactElement} Image element with enhanced functionality * * @see {@link ImgProps} for complete prop documentation * @see https://www.w3.org/WAI/WCAG21/Understanding/non-text-content.html */ declare const Img: { ({ src, alt, width, height, styles, loading, placeholder, fetchpriority, decoding, srcSet, sizes, onError, onLoad, ...props }: ImgProps): React$1.JSX.Element; displayName: string; }; /** * DialogModal - A wrapper component that manages dialog state and provides a trigger button. * * This is an **uncontrolled** component wrapper around the controlled Dialog component. * It manages the dialog's open/closed state internally and provides a button to trigger it. * * **Use this when:** * - You want a simple dialog with a trigger button * - You don't need to control the dialog state externally * - You want automatic focus restoration to the trigger button * * **Use the base Dialog component instead when:** * - You need to control dialog state from parent component * - You have a custom trigger mechanism * - You need to open dialog programmatically from multiple places * * @component * @param {DialogModalProps} props - Component props * @param {string} props.dialogTitle - Title displayed in dialog header * @param {ReactNode} props.children - Content to display inside the dialog * @param {string} [props.btnLabel="Open Dialog"] - Text label for the trigger button * @param {"sm" | "md" | "lg"} [props.btnSize="sm"] - Size variant for the trigger button * @param {() => void} [props.btnOnClick] - Callback fired when trigger button is clicked (before opening) * @param {boolean} [props.isAlertDialog=false] - If true, renders as non-modal inline alert * @param {() => void} [props.onClose] - Callback fired when dialog is closed * @param {() => void | Promise} [props.onConfirm] - Callback when confirm button is clicked * @param {string} [props.confirmLabel="Confirm"] - Text label for confirm button * @param {string} [props.cancelLabel="Cancel"] - Text label for cancel button * @param {boolean} [props.hideFooter=false] - If true, hides the footer with action buttons * @param {string} [props.className] - Additional CSS classes for the dialog * @param {string} [props.dialogLabel] - Optional aria-label for the dialog * @param {ReactElement} [props.icon] - Optional icon element. When provided, renders IconButton as trigger. * @returns {JSX.Element} A dialog with trigger button and automatic state management * * @example * ```tsx * await deleteItem()} * confirmLabel="Delete" * cancelLabel="Cancel" * > * Are you sure you want to delete this item? This action cannot be undone. * * ``` * * @example * ```tsx * // Icon trigger — renders IconButton with visible label at desktop widths * } * btnProps={{ variant: "outline" }} * > * Settings content here. * * ``` */ declare const DialogModal: React$1.FC; type ComponentProps = React$1.ComponentProps; /** * Renders children elements without any wrapping component. * Can be used as a placeholder when no semantic landmark is needed. */ declare const Landmarks: { (children?: React$1.FC): React$1.JSX.Element; displayName: string; Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React$1.JSX.Element; Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React$1.JSX.Element; Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; Fieldset: ({ id, children, legend, description, descriptionId, styles, classes, ...props }: FieldsetProps) => React$1.JSX.Element; }; type HeaderProps = { headerBackground?: ReactNode; } & ComponentProps; /** * Header component. * * Renders a header landmark with a section child. * * @param children - The content to render inside the header. * @param styles - Optional styles object. * @param props - Other props. */ declare const Header: ({ id, children, headerBackground, styles, classes, ...props }: HeaderProps) => React$1.JSX.Element; /** * Main component. * * Renders a main landmark. * * @param children - The content to render inside the main element. * @param styles - Optional styles object. * @param props - Other props. */ declare const Main: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; /** * Footer component that renders a footer element with a section element inside. * @param {ReactNode} children - Child elements to render inside the section element. * @param styles - CSS styles to apply to the footer element. * @param props - Additional props to pass to the footer element. * @returns A React component that renders a footer element with a section element inside. */ declare const Footer: ({ id, classes, children, styles, ...props }: ComponentProps) => React$1.JSX.Element; declare const Aside: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; /** * Section component that renders a section element. * * @param children - Child elements to render inside the section. * @param styles - CSS styles to apply to the section. * @param props - Other props. */ declare const Section: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; /** * Article component renders an HTML
element. * * @param children - Child elements to render inside the article. * @param styles - CSS styles to apply to the article. * @param props - Additional props to pass to the article element. */ declare const Article: ({ id, children, styles, classes, ...props }: ComponentProps) => React$1.JSX.Element; type FieldsetProps = { /** * Optional legend content displayed as the fieldset's accessible name */ legend?: ReactNode; /** * Additional description text for complex fieldsets * Enhances accessibility via aria-describedby */ description?: string; /** * Custom ID for the description element * Auto-generated if description is provided without custom ID */ descriptionId?: string; } & ComponentProps; /** * Fieldset landmark for semantic content grouping. * Provides WCAG 2.1 Level AA compliant form grouping with optional descriptions. * * @param legend - Optional legend content (accessible name) * @param description - Optional description for additional context * @param descriptionId - Custom ID for description element * @param children - Content inside fieldset section * * @example * ```tsx *
* {/* form controls *\/} *
* ``` */ declare const Fieldset: ({ id, children, legend, description, descriptionId, styles, classes, ...props }: FieldsetProps) => React$1.JSX.Element; /** * Shared types for layout primitive components (Box, Stack, Cluster, Grid) */ /** * Spacing scale values for padding, margin, and gap properties * Maps to CSS custom properties (--spacing-*) * - '0': No spacing * - 'xs': Extra small (clamp 4-8px) * - 'sm': Small (clamp 8-12px) * - 'md': Medium (clamp 12-18px) * - 'lg': Large (clamp 16-24px) * - 'xl': Extra large (clamp 24-32px) */ type SpacingScale = "0" | "xs" | "sm" | "md" | "lg" | "xl"; /** * Semantic HTML element types for Box component */ type BoxElement = "div" | "section" | "article" | "aside" | "main" | "header" | "footer" | "nav"; /** * Semantic HTML element types for Stack component */ type StackElement = "div" | "section" | "article" | "ul" | "ol" | "nav"; /** * Semantic HTML element types for Cluster component */ type ClusterElement = "div" | "ul" | "ol" | "nav" | "section"; /** * Semantic HTML element types for Grid component */ type GridElement = "div" | "section" | "article" | "ul" | "ol"; /** * Semantic HTML element types for Grid.Item sub-component */ type GridItemElement = "div" | "section" | "article" | "li"; /** * Semantic HTML element types for Row component */ type RowElement = "div" | "section" | "article" | "ul" | "ol" | "nav"; /** * Semantic HTML element types for Col component */ type ColElement = "div" | "section" | "article" | "li"; /** * Column span values (1-12 columns) or "flex" for flex-grow behavior * * - Numeric values (1-12): Fixed fractional widths on desktop * - "flex": Grows to fill remaining space on desktop (flex: 1 1 0%) * * All columns stack to 100% width on mobile (< 48rem / 768px) * * @example * // Fixed width columns * 50% width * * @example * // Flex column fills remaining space * 25% fixed * Grows to fill 75% * * @example * // Multiple flex columns share space equally * Content width * Flex 1 * Flex 2 */ type ColumnSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | "flex"; /** * Column offset values (0-11 columns) */ type ColumnOffset = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11; /** * Column order values */ type ColumnOrder = "first" | "last" | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; /** * Flex justify-content values */ type JustifyContent = "start" | "center" | "end" | "between" | "around" | "evenly"; /** * Flex align-items values */ type AlignItems = "start" | "center" | "end" | "baseline" | "stretch"; /** * Flex wrap values */ type FlexWrap$1 = "wrap" | "nowrap" | "wrap-reverse"; /** * Props for the Box component - a fundamental container primitive for spacing and sizing control. * * The Box component provides a flexible, semantic container with comprehensive spacing, sizing, * and visual customization options. All spacing values use the unified spacing scale with * fluid responsive values via CSS clamp(). * * ## Design Principles * - **Logical Properties**: Uses `padding-inline`/`padding-block` for better i18n support * - **Fluid Spacing**: All spacing scales responsively without media queries * - **Semantic HTML**: Defaults to `div` but supports semantic elements via `as` prop * - **CSS Custom Properties**: All values customizable via CSS variables * * @example * // Basic container with padding * *

Content

*
* * @example * // Centered container with max width * *
Centered content
*
* * @example * // Card-like box with radius * *

Card Title

*

Card content

*
*/ interface BoxProps extends Partial, Omit, "className"> { /** * Padding on all sides. * Uses unified spacing scale: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' * Maps to CSS custom properties (--spacing-*) * @example * Content */ padding?: SpacingScale; /** * Padding on inline axis (left/right in LTR, right/left in RTL). * Uses logical property `padding-inline` for better internationalization. * @example * Wide horizontal padding */ paddingInline?: SpacingScale; /** * Padding on block axis (top/bottom). * Uses logical property `padding-block` for consistency. * @example * Vertical padding */ paddingBlock?: SpacingScale; /** * Margin on all sides. * Uses unified spacing scale: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' * @example * Content with margin */ margin?: SpacingScale; /** * Margin on inline axis (left/right in LTR). * For centering, use inline styles: `style={{ marginInline: 'auto' }}` * @example * Horizontal margin */ marginInline?: SpacingScale; /** * Margin on block axis (top/bottom). * @example * Vertical margin */ marginBlock?: SpacingScale; /** * Width behavior control. * - 'auto': Natural width (default) * - 'full': 100% width * - 'fit': Width fits content (fit-content) * - 'max': Width determined by widest content (max-content) * @default 'auto' * @example * Full width box */ width?: "auto" | "full" | "fit" | "max"; /** * Maximum width constraint. * Useful for readable text widths and responsive containers. * Sizes map to: xs(480px), sm(640px), md(768px), lg(1024px), xl(1280px), container(1200px) * @example * * Centered container with max width * */ maxWidth?: "xs" | "sm" | "md" | "lg" | "xl" | "container"; /** * Border radius for rounded corners. * - 'xs' through 'xl': Increasing radii (2px - 12px) * - 'full': Fully rounded (9999px) for pills/circles * @example * Slightly rounded box * @example * * * */ radius?: SpacingScale | "full"; /** * Polymorphic element type to render. * Defaults to 'div' but supports semantic HTML elements. * Choose semantic elements for better accessibility: * - 'section' for thematic groupings * - 'article' for self-contained content * - 'aside' for tangentially related content * - 'main' for primary page content * - 'header'/'footer' for page/section headers/footers * - 'nav' for navigation landmarks * @default 'div' * @example * *

Section Content

*
*/ as?: BoxElement; /** * Additional CSS classes to apply. * Merged with generated utility classes. * @example * Content */ className?: string; /** * Children elements to render inside the Box. */ children?: React$1.ReactNode; } /** * Box - A fundamental container primitive for spacing and sizing control. * * The Box component is the foundational layout primitive in fpkit, providing a flexible, * semantic container with comprehensive control over spacing (padding/margin), sizing, * and visual appearance. It uses utility classes generated from props, ensuring consistent * styling across the application. * * ## Key Features * - **Unified Spacing Scale**: Fluid responsive spacing using CSS clamp() * - **Logical Properties**: `padding-inline`/`padding-block` for i18n support * - **Polymorphic Rendering**: Render as any semantic HTML element via `as` prop * - **CSS Custom Properties**: All values customizable for theming * - **Type-Safe**: Full TypeScript support with IntelliSense * * ## Accessibility * - Uses semantic HTML elements by default * - Supports ARIA attributes via spread props * - Encourages semantic elements via `as` prop * - All props forwarded to underlying element * * ## Use Cases * - Container with padding/margin * - Centered layouts with max-width * - Card-like components * - Spacing between sections * - Semantic landmarks * * @example * // Basic container with padding * *

Content

*
* * @example * // Centered container with max width * *
Centered content
*
* * @example * // Card-like box with radius * *

Card Title

*

Card content

*
* * @example * // Asymmetric spacing with logical properties * *

Wide horizontal padding, narrow vertical

*
* * @example * // Semantic section with spacing * *

Section Title

*

Section content...

*
* * @see {@link BoxProps} for complete props documentation */ declare const Box: React$1.ForwardRefExoticComponent>; /** * Props for the Stack component - a simplified layout primitive for vertical or horizontal spacing. * * Stack provides an easy-to-use flexbox-based layout for creating vertical or horizontal arrangements * with consistent spacing between children. It's simpler than the full Flex component, ideal for * common stacking patterns. * * ## Design Principles * - **Simplified API**: Fewer props than Flex for common use cases * - **Fluid Spacing**: Uses unified spacing scale with responsive values * - **Flexbox-Based**: Built on CSS flexbox for reliable layouts * - **Semantic HTML**: Defaults to `div` but supports semantic elements * * @example * // Vertical stack (default) * *

Title

*

Paragraph 1

*

Paragraph 2

*
* * @example * // Horizontal stack for buttons * * * * * * @example * // Centered vertical stack * * *

Welcome

*
*/ interface StackProps extends Partial, Omit, "className"> { /** * Gap between children. * Uses unified spacing scale: '0' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' * Maps to CSS custom properties (--spacing-*) * @default 'md' * @example * Content */ gap?: SpacingScale; /** * Layout direction. * - 'vertical': Stack children vertically (column) * - 'horizontal': Stack children horizontally (row) * @default 'vertical' * @example * * * * */ direction?: "vertical" | "horizontal"; /** * Alignment on cross axis. * - 'start': Align items to start (left in horizontal, top in vertical) * - 'center': Center items * - 'end': Align items to end (right in horizontal, bottom in vertical) * - 'stretch': Stretch items to fill cross axis * @default 'stretch' * @example * Centered items */ align?: "start" | "center" | "end" | "stretch"; /** * Alignment on main axis. * - 'start': Items at start * - 'center': Items centered * - 'end': Items at end * - 'between': Space between items * @example * *
*