baseui
Version:
A React Component library implementing the Base design language
223 lines (222 loc) • 12.9 kB
TypeScript
import type * as React from 'react';
import type { StyleObject } from 'styletron-standard';
import type { Override } from '../helpers/overrides';
export type BlockOverrides = {
Block?: Override;
};
export type Responsive<T> = T | Array<T>;
type AlignContent = 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'normal' | 'baseline' | 'first baseline' | 'last baseline' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | 'safe center' | 'unsafe center' | 'inherit' | 'initial' | 'unset';
type AlignItems = 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'baseline' | 'first baseline' | 'last baseline' | 'safe center' | 'unsafe center' | 'inherit' | 'initial' | 'unset';
type AlignSelf = 'auto' | 'normal' | 'center' | 'start' | 'end' | 'self-start' | 'self-end' | 'flex-start' | 'flex-end' | 'baseline' | 'first baseline' | 'last baseline' | 'stretch' | 'safe center' | 'unsafe center' | 'inherit' | 'initial' | 'unset';
type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse' | 'inherit' | 'initial' | 'unset';
type Flex = number | string;
type Display = 'block' | 'inline' | 'run-in' | 'flow' | 'flow-root' | 'table' | 'flex' | 'grid' | 'ruby' | 'block flow' | 'inline table' | 'flex run-in' | 'list-item' | 'list-item block' | 'list-item inline' | 'list-item flow' | 'list-item flow-root' | 'list-item block flow' | 'list-item block flow-root' | 'flow list-item block' | 'table-row-group' | 'table-header-group' | 'table-footer-group' | 'table-row' | 'table-cell' | 'table-column-group' | 'table-column' | 'table-caption' | 'ruby-base' | 'ruby-text' | 'ruby-base-container' | 'ruby-text-container' | 'contents' | 'none' | 'inline-block' | 'inline-table' | 'inline-flex' | 'inline-grid' | 'inherit' | 'initial' | 'unset';
type GridAutoFlow = 'row' | 'column' | 'dense' | 'row dense' | 'column dense' | 'inherit' | 'initial' | 'unset';
type JustifyContent = 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'left' | 'right' | 'space-between' | 'space-around' | 'space-evenly' | 'stretch' | 'safe center' | 'unsafe center' | 'inherit' | 'initial' | 'unset';
type JustifyItems = 'auto' | 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right' | 'baseline' | 'first baseline' | 'last baseline' | 'safe center' | 'unsafe center' | 'legacy right' | 'legacy left' | 'legacy center' | 'inherit' | 'initial' | 'unset';
type JustifySelf = 'auto' | 'normal' | 'stretch' | 'center' | 'start' | 'end' | 'flex-start' | 'flex-end' | 'self-start' | 'self-end' | 'left' | 'right' | 'baseline' | 'first baseline' | 'last baseline' | 'safe center' | 'unsafe center' | 'inherit' | 'initial' | 'unset';
type Order = number | string;
type Position = 'static' | 'absolute' | 'relative' | 'fixed' | 'sticky';
type Overflow = 'visible' | 'hidden' | 'scroll' | 'scrollX' | 'scrollY' | 'auto' | 'inherit' | 'initial' | 'unset';
export type Scale = 0 | string;
export type WhiteSpace = 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line' | 'break-spaces' | 'inherit' | 'initial' | 'unset';
export type BlockProps<T extends React.ElementType = React.ElementType> = {
children?: React.ReactNode;
/** Modifies the base element used to render the block. */
as?: T;
overrides?: BlockOverrides;
/** Accepts all themeable color properties (`primary200`, etc.). */
color?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-attachment */
backgroundAttachment?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-clip */
backgroundClip?: Responsive<string>;
/** Accepts all themeable color properties (`primary200`, etc.). */
backgroundColor?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-image */
backgroundImage?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-origin */
backgroundOrigin?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-position */
backgroundPosition?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-repeat */
backgroundRepeat?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/background-size */
backgroundSize?: Responsive<string>;
/** Accepts all themeable font properties (`font200`, etc.). */
font?: string | Array<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-content */
alignContent?: Responsive<AlignContent>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-items */
alignItems?: Responsive<AlignItems>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/align-self */
alignSelf?: Responsive<AlignSelf>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex-direction */
flexDirection?: Responsive<FlexDirection>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/display */
display?: Responsive<Display>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/flex */
flex?: Responsive<Flex>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid */
grid?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-area */
gridArea?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-columns */
gridAutoColumns?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-flow */
gridAutoFlow?: Responsive<GridAutoFlow>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-auto-rows */
gridAutoRows?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column */
gridColumn?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-end */
gridColumnEnd?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-gap */
gridColumnGap?: Responsive<Scale>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-column-start */
gridColumnStart?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-gap */
gridGap?: Responsive<Scale>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row */
gridRow?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-end */
gridRowEnd?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-gap */
gridRowGap?: Responsive<Scale>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-row-start */
gridRowStart?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template */
gridTemplate?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-areas */
gridTemplateAreas?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-columns */
gridTemplateColumns?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template-rows */
gridTemplateRows?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content */
justifyContent?: Responsive<JustifyContent>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-items */
justifyItems?: Responsive<JustifyItems>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/justify-self */
justifySelf?: Responsive<JustifySelf>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/order */
order?: Responsive<Order>;
position?: Responsive<Position>;
width?: Responsive<Scale>;
minWidth?: Responsive<Scale>;
maxWidth?: Responsive<Scale>;
height?: Responsive<Scale>;
minHeight?: Responsive<Scale>;
maxHeight?: Responsive<Scale>;
overflow?: Responsive<Overflow>;
margin?: Responsive<Scale>;
marginTop?: Responsive<Scale>;
marginRight?: Responsive<Scale>;
marginBottom?: Responsive<Scale>;
marginLeft?: Responsive<Scale>;
padding?: Responsive<Scale>;
paddingTop?: Responsive<Scale>;
paddingRight?: Responsive<Scale>;
paddingBottom?: Responsive<Scale>;
paddingLeft?: Responsive<Scale>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-content */
placeContent?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-items */
placeItems?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/place-self */
placeSelf?: Responsive<string>;
flexWrap?: Responsive<boolean>;
left?: Responsive<Scale>;
top?: Responsive<Scale>;
right?: Responsive<Scale>;
bottom?: Responsive<Scale>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/text-overflow */
textOverflow?: Responsive<string>;
/** available values: https://developer.mozilla.org/en-US/docs/Web/CSS/white-space */
whiteSpace?: Responsive<WhiteSpace>;
};
export type StyledBlockProps = {
$color?: Responsive<string>;
$backgroundAttachment?: Responsive<string>;
$backgroundClip?: Responsive<string>;
$backgroundColor?: Responsive<string>;
$backgroundImage?: Responsive<string>;
$backgroundOrigin?: Responsive<string>;
$backgroundPosition?: Responsive<string>;
$backgroundRepeat?: Responsive<string>;
$backgroundSize?: Responsive<string>;
$font?: Responsive<string>;
$alignContent?: Responsive<AlignContent>;
$alignItems?: Responsive<AlignItems>;
$alignSelf?: Responsive<AlignSelf>;
$flexDirection?: Responsive<FlexDirection>;
$display?: Responsive<Display>;
$flex?: Responsive<Flex>;
$grid?: Responsive<string>;
$gridArea?: Responsive<string>;
$gridAutoColumns?: Responsive<string>;
$gridAutoFlow?: Responsive<GridAutoFlow>;
$gridAutoRows?: Responsive<string>;
$gridColumn?: Responsive<string>;
$gridColumnEnd?: Responsive<string>;
$gridColumnGap?: Responsive<Scale>;
$gridColumnStart?: Responsive<string>;
$gridGap?: Responsive<Scale>;
$gridRow?: Responsive<string>;
$gridRowEnd?: Responsive<string>;
$gridRowGap?: Responsive<Scale>;
$gridRowStart?: Responsive<string>;
$gridTemplate?: Responsive<string>;
$gridTemplateAreas?: Responsive<string>;
$gridTemplateColumns?: Responsive<string>;
$gridTemplateRows?: Responsive<string>;
$justifyContent?: Responsive<JustifyContent>;
$justifyItems?: Responsive<JustifyItems>;
$justifySelf?: Responsive<JustifySelf>;
$order?: Responsive<Order>;
$position?: Responsive<Position>;
$width?: Responsive<Scale>;
$minWidth?: Responsive<Scale>;
$maxWidth?: Responsive<Scale>;
$height?: Responsive<Scale>;
$minHeight?: Responsive<Scale>;
$maxHeight?: Responsive<Scale>;
$overflow?: Responsive<Overflow>;
$margin?: Responsive<Scale>;
$marginTop?: Responsive<Scale>;
$marginRight?: Responsive<Scale>;
$marginBottom?: Responsive<Scale>;
$marginLeft?: Responsive<Scale>;
$padding?: Responsive<Scale>;
$paddingTop?: Responsive<Scale>;
$paddingRight?: Responsive<Scale>;
$paddingBottom?: Responsive<Scale>;
$paddingLeft?: Responsive<Scale>;
$placeContent?: Responsive<string>;
$placeItems?: Responsive<string>;
$placeSelf?: Responsive<string>;
$flexWrap?: Responsive<boolean>;
$left?: Responsive<Scale>;
$top?: Responsive<Scale>;
$right?: Responsive<Scale>;
$bottom?: Responsive<Scale>;
$textOverflow?: Responsive<string>;
$whiteSpace?: Responsive<WhiteSpace>;
};
type BaseProps<P extends {}> = P & {
$style?: StyleObject | ((props: P) => StyleObject);
className?: string;
};
type AddStyletronRef<P extends {
ref: any;
}> = P extends {
ref: infer R;
} ? P & {
$ref?: R;
} : P;
type OverrideProps<D extends React.ElementType, P extends {}> = BaseProps<P> & Omit<AddStyletronRef<React.ComponentProps<D>>, keyof BaseProps<P>>;
export interface BlockComponentType<D extends React.ElementType> {
<C extends React.ElementType = D>(props: OverrideProps<C, BlockProps<C>>): JSX.Element;
displayName?: string;
}
export {};