/** * Copyright Zendesk, Inc. * * Use of this source code is governed under the Apache License, Version 2.0 * found at http://www.apache.org/licenses/LICENSE-2.0. */ import { ReactNode, HTMLAttributes, ButtonHTMLAttributes } from 'react'; export declare const ALIGN_ITEMS: readonly ["start", "end", "center", "baseline", "stretch"]; export declare const ALIGN_SELF: readonly ["auto", "start", "end", "center", "baseline", "stretch"]; export declare const DIRECTION: readonly ["row", "row-reverse", "column", "column-reverse"]; export declare const JUSTIFY_CONTENT: readonly ["start", "end", "center", "between", "around"]; export declare const TEXT_ALIGN: readonly ["start", "end", "center", "justify"]; export declare const SPACE: readonly [false, "xxs", "xs", "sm", "md", "lg", "xl", "xxl"]; export declare const WRAP: readonly ["nowrap", "wrap", "wrap-reverse"]; export declare const PLACEMENT: readonly ["end", "start", "center"]; export type AlignItems = (typeof ALIGN_ITEMS)[number]; export type AlignSelf = (typeof ALIGN_SELF)[number]; export type Direction = (typeof DIRECTION)[number]; export type JustifyContent = (typeof JUSTIFY_CONTENT)[number]; export type TextAlign = (typeof TEXT_ALIGN)[number]; export type GridNumber = number | string; export type Breakpoint = number | string | boolean; export type Space = (typeof SPACE)[number]; export type Wrap = (typeof WRAP)[number]; export interface IColProps extends HTMLAttributes { /** Sets the total number of grid `columns` that the column spans on all screen sizes */ size?: number | string; /** Defines the column size on extra-small screens. * See [breakpoints](/components/theme-object#default_theme). */ xs?: number | string | boolean; /** Defines the column size on small screens*/ sm?: number | string | boolean; /** Defines the column size on medium screens */ md?: number | string | boolean; /** Defines the column size on large screens */ lg?: number | string | boolean; /** Defines the column size on extra-large screens */ xl?: number | string | boolean; /** * Applies the `align-self` flex item property, overriding `Row alignItems` * vertical alignment on all screen sizes */ alignSelf?: AlignSelf; /** Applies the `align-self` flex item property to the column on extra-small screens */ alignSelfXs?: AlignSelf; /** Applies the `align-self` flex item property to the column on small screens */ alignSelfSm?: AlignSelf; /** Applies the `align-self` flex item property to the column on medium screens */ alignSelfMd?: AlignSelf; /** Applies the `align-self` flex item property to the column on large screens */ alignSelfLg?: AlignSelf; /** Applies the `align-self` flex item property to the column on extra-large screens */ alignSelfXl?: AlignSelf; /** * Applies the RTL-aware `text-align` property to the column on all screen sizes */ textAlign?: TextAlign; /** Applies the `text-align` property to the column on extra-small screens */ textAlignXs?: TextAlign; /** Applies the `text-align` property to the column on small screens */ textAlignSm?: TextAlign; /** Applies the `text-align` property to the column on medium screens */ textAlignMd?: TextAlign; /** Applies the `text-align` property to the column on large screens */ textAlignLg?: TextAlign; /** Applies the `text-align` property to the column on extra-large screens */ textAlignXl?: TextAlign; /** * Offsets the column relative to the total number of `columns` in the * grid on all screen sizes */ offset?: number | string; /** Applies offset to the column on extra-small screens */ offsetXs?: number | string; /** Applies offset to the column on small screens */ offsetSm?: number | string; /** Applies offset to the column on medium screens */ offsetMd?: number | string; /** Applies offset to the column on large screens */ offsetLg?: number | string; /** Applies offset to the column on extra-large screens */ offsetXl?: number | string; /** * Applies the `order` flex item property to the column on all screen sizes. Note that * order modification can introduce accessibility problems by * confusing tab ordering. Rely on semantic DOM ordering whenever possible. */ order?: number | string; /** Sets the `order` flex item property of the column on extra-small screens */ orderXs?: number | string; /** Sets the `order` flex item property of the column on small screens */ orderSm?: number | string; /** Sets the `order` flex item property of the column on medium screens */ orderMd?: number | string; /** Sets the `order` flex item property of the column on large screens */ orderLg?: number | string; /** Sets the `order` flex item property of the column on extra-large screens */ orderXl?: number | string; } export interface IGridProps extends HTMLAttributes { /** Defines the number of individual columns that the grid contains */ columns?: number | string; /** Specifies the grid column gutter width. The value `false` collapses the gutters */ gutters?: Space; /** Highlights the columns for layout debugging */ debug?: boolean; } export interface IRowProps extends HTMLAttributes { /** * Applies the `align-items` flex container property to the row. * This affects vertical `Col` alignment on all screen sizes. */ alignItems?: AlignItems; /** Applies the `align-items` flex container property to the row on extra-small screens */ alignItemsXs?: AlignItems; /** Applies the `align-items` flex container property to the row on small screens */ alignItemsSm?: AlignItems; /** Applies the `align-items` flex container property to the row on medium screens */ alignItemsMd?: AlignItems; /** Applies the `align-items` flex container property to the row on large screens */ alignItemsLg?: AlignItems; /** Applies the `align-items` flex container property to the row on extra-large screens */ alignItemsXl?: AlignItems; /** * Applies the `justify-content` flex container property to the row. * This affects horizontal `Col` alignment on all screen sizes. */ justifyContent?: JustifyContent; /** Applies the `justify-content` flex container property to the row on extra-small screens */ justifyContentXs?: JustifyContent; /** Applies the `justify-content` flex container property to the row on small screens */ justifyContentSm?: JustifyContent; /** Applies the `justify-content` flex container property to the row on medium screens */ justifyContentMd?: JustifyContent; /** Applies the `justify-content` flex container property to the row on large screens */ justifyContentLg?: JustifyContent; /** Applies the `justify-content` flex container property to the row on extra-large screens */ justifyContentXl?: JustifyContent; /** * Applies the `flex-wrap` container property to the row. This affects `Col` wrapping on * all screen sizes. */ wrap?: Wrap; /** Applies the `flex-wrap` container property to the row on extra-small screens */ wrapXs?: Wrap; /** Applies the `flex-wrap` container property to the row on small screens */ wrapSm?: Wrap; /** Applies the `flex-wrap` container property to the row on medium screens */ wrapMd?: Wrap; /** Applies the `flex-wrap` container property to the row on large screens */ wrapLg?: Wrap; /** Applies the `flex-wrap` container property to the row on extra-large screens */ wrapXl?: Wrap; } export declare const ORIENTATION: readonly ["top", "bottom", "start", "end"]; export type Orientation = (typeof ORIENTATION)[number]; export interface IPaneProviderProps { /** Identifies the pane provider */ id?: string; /** Provides the total width, in `px` units, of all panes in the layout */ totalPanesWidth: number; /** Provides the total height, in `px` units, of all panes in the layout */ totalPanesHeight: number; /** Defines default row values, in `fr` units, for an uncontrolled layout. The values are keyed by splitter. */ defaultRowValues?: Record; /** Defines default column values, in `fr` units, for an uncontrolled layout. The values are keyed by splitter. */ defaultColumnValues?: Record; /** Defines row values, in `fr` units, for a controlled layout. The values are keyed by splitter. */ rowValues?: Record; /** Defines column values, in `fr` units, for a controlled layout. The values are keyed by splitter. */ columnValues?: Record; /** * Handles splitter position changes * * @param rowValues The updated row values * @param columnValues The updated column values */ onChange?: (rowValues: Record, columnValues: Record) => void; /** * Surfaces render props for applying splitter state to the supporting layout * * @param id Provides the `id` prop, if specified; otherwise, a generated ID. * @param getColumnValue Gets column value by key * @param getRowValue Gets row value by key * @param getGridTemplateRows Gets grid template rows track * @param getGridTemplateColumns Gets grid template columns track */ children?: ({ id, getColumnValue, getRowValue, getGridTemplateRows, getGridTemplateColumns }: { id: string; getColumnValue: (splitterKey: string, isPixels?: boolean) => number; getRowValue: (splitterKey: string, isPixels?: boolean) => number; getGridTemplateRows: (isPixels?: boolean) => string; getGridTemplateColumns: (isPixels?: boolean) => string; }) => ReactNode; } export interface ISplitterProps extends HTMLAttributes { /** Identifies the associated `PaneProvider`. Assumes the closest parent provider, by default. */ providerId?: string; /** Specifies the splitter key */ layoutKey: string; /** Sets a minimum, in `fr` units, for splitter position */ min: number; /** Sets a maximum, in `fr` units, for splitter position */ max: number; /** Determines splitter orientation within a pane */ orientation?: Orientation; /** Determines if the splitter only toggles between `min` and `max` */ isFixed?: boolean; } export interface ISplitterButtonProps extends ButtonHTMLAttributes { /** Adjusts the placement of the splitter button. Assumes start when vertical and center when horizontal, by default. */ placement?: (typeof PLACEMENT)[number]; /** Renders the provided label text inside a tooltip */ label: string; }