@navinc/base-react-components
Version:
Nav's Pattern Library
211 lines (210 loc) • 7.81 kB
TypeScript
import { DetailedHTMLProps, HTMLAttributes } from 'react';
export declare const sizes: {
readonly display1: {
readonly regular: {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
};
readonly emphasized: {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
};
};
readonly display2: {
readonly regular: {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
};
readonly emphasized: {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
};
};
readonly title1: {
readonly regular: {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
};
readonly emphasized: {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
};
};
readonly title2: {
readonly regular: {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
};
readonly emphasized: {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
};
};
readonly title3: {
readonly regular: {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
};
readonly emphasized: {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
};
};
readonly headline: {
readonly emphasized: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
};
};
readonly body1: {
readonly regular: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
};
readonly emphasized: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
};
};
readonly body2: {
readonly regular: {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
};
readonly emphasized: {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
};
};
readonly caption1: {
readonly regular: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
};
readonly emphasized: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
};
readonly uppercase: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0.5px";
readonly textTransform: "uppercase";
};
};
readonly caption2: {
readonly regular: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
};
readonly emphasized: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0";
};
readonly uppercase: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0.5px";
readonly textTransform: "uppercase";
};
};
};
export declare const cssProps: readonly ["fontSize", "lineHeight", "fontWeight", "letterSpacing", "textTransform"];
export declare const variants: readonly ["regular", "emphasized", "uppercase"];
export declare const fontFamilies: readonly ["Inter", "Manrope"];
export declare const componentVariants: readonly ["p", "span", "h1", "h2", "h3", "h4", "h5", "h6"];
type CssPropKey = (typeof cssProps)[number];
type SizeKey = keyof typeof sizes;
type VariantStyleKey = (typeof variants)[number];
type FontFamilyKey = (typeof fontFamilies)[number];
type componentKey = (typeof componentVariants)[number];
export declare const flatVariants: ("body2" | "display1" | "display2" | "title1" | "title2" | "title3" | "headline" | "body1" | "caption1" | "caption2")[];
export declare const getStyle: (cssProp: CssPropKey, size?: SizeKey, variant?: VariantStyleKey) => any;
export type CopyProps = {
size?: SizeKey;
variant?: VariantStyleKey;
color?: string;
underline?: boolean;
fontFamily?: FontFamilyKey;
component?: componentKey;
} & DetailedHTMLProps<HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>;
/**
* A Copy component that includes the same functionality as Text(deprecating) and Header(deprecating).
*
* By removing the dependency on size being tied to header tags, we can use this component for any text component.
*
* When using nested Copy use `component='span'` to properly cast the nested `p` tags.
*
* Link to Design Doc: http://go/typography
*
* @param size - optional - defaults to `body2`
* @param variant - optional - defaults to the first variant in the size object (only headline defaults to `emphasized`)
* @param color - optional - defaults to `navNeutralDark` - a color string or a theme color
* @param component - optional - defaults to `p` - for nested elements, use `span`
* @param underline - optional
* @param fontFamily - optional - defaults to `Inter`
* @param props - optional - any other props that can be passed to a p tag
* @returns a p tag styled with the size, variant, color, underline, and fontFamily props
* @example
* // default size will be `body2`
* <Copy size="title1">Yar Pirate Ipsum</Copy>
* @example
* // example with all props being used
* <Copy size="body1" variant="emphasized" color="navStatusPositive" underline={true} fontFamily="Manrope">
* Yar Pirate Ipsum
* </Copy>
* @example
* // casting as a Header
* <Copy component='h1' size="title1">Yar Pirate Ipsum</Copy>
* @example
* // This is an example of a nested Copy component. The inner Copy component is using the `as` prop with a value of 'span'
* <Copy>
* This is a nested{' '}
* <Copy component="span" size="headline" color="navStatusNegative">
* copy
* </Copy>{' '}
* component. The inner Copy component is using the `component` prop with a value of 'span'
* </Copy>
*/
export declare const CopyVariant: import("styled-components").StyledComponent<({ component, ...props }: CopyProps) => JSX.Element, import("styled-components").DefaultTheme, {}, never>;
export {};