@navinc/base-react-components
Version:
Nav's Pattern Library
433 lines (432 loc) • 15.5 kB
TypeScript
import { HTMLAttributes } from 'react';
import { VariantProps } from 'class-variance-authority';
export declare const sizes: readonly ["display1", "display2", "title1", "title2", "title3", "headline", "body1", "body2", "caption1", "caption2"];
declare const styledSizes: {
readonly display1: {
readonly regular: {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly display2: {
readonly regular: {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly title1: {
readonly regular: {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly title2: {
readonly regular: {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly title3: {
readonly regular: {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly headline: {
readonly regular: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly body1: {
readonly regular: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly body2: {
readonly regular: {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: undefined;
};
readonly caption1: {
readonly regular: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0.5px";
readonly fontFamily: string;
readonly textTransform: "uppercase";
};
};
readonly caption2: {
readonly regular: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly emphasized: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
};
readonly uppercase: {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0.5px";
readonly fontFamily: string;
readonly textTransform: "uppercase";
};
};
};
export declare const variants: readonly ["regular", "emphasized", "uppercase"];
export declare const componentVariants: readonly ["p", "span", "h1", "h2", "h3", "h4", "h5", "h6"];
export type SizeKey = keyof typeof styledSizes;
type VariantStyleKey = (typeof variants)[number];
export type CopyVariantStylesProps = {
size?: SizeKey;
variant?: VariantStyleKey;
};
export declare const typographyStyles: ({ size, variant }: CopyVariantStylesProps) => {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "45px";
readonly lineHeight: "52px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "36px";
readonly lineHeight: "42px";
readonly fontWeight: 700;
readonly letterSpacing: "-0.5px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "28px";
readonly lineHeight: "34px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "22px";
readonly lineHeight: "28px";
readonly fontWeight: 600;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "20px";
readonly lineHeight: "24px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "16px";
readonly lineHeight: "22px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 400;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "14px";
readonly lineHeight: "20px";
readonly fontWeight: 500;
readonly letterSpacing: "-0.25px";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "12px";
readonly lineHeight: "16px";
readonly fontWeight: 600;
readonly letterSpacing: "0.5px";
readonly fontFamily: string;
readonly textTransform: "uppercase";
} | {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 400;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0";
readonly fontFamily: string;
readonly textTransform: "inherit";
} | {
readonly fontSize: "11px";
readonly lineHeight: "13px";
readonly fontWeight: 500;
readonly letterSpacing: "0.5px";
readonly fontFamily: string;
readonly textTransform: "uppercase";
};
declare const BaseCopy: import("react").ForwardRefExoticComponent<VariantProps<(props?: ({
component?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | null | undefined;
underline?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & Omit<HTMLAttributes<HTMLParagraphElement>, "color"> & {
size?: SizeKey;
variant?: VariantStyleKey;
} & import("react").RefAttributes<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 component - optional - defaults to `p` - for nested elements, use `span`
* @param underline - optional
* @param props - optional - any other props that can be passed to a p tag
* @returns a p tag styled with the size, variant, and underline
* @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" underline={true}>
* 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">
* copy
* </Copy>{' '}
* component. The inner Copy component is using the `component` prop with a value of 'span'
* </Copy>
*
* @deprecated Use our custom typography classes and tailwind instead:
* ```
* <p className="display1-emphasized text-onSurface">Text</p>
* instead of
* <Copy size="display1" variant="emphasized" color="onSurface">Text</Copy>
* ```
*/
export declare const Copy: typeof BaseCopy;
export declare const CopyInheritColor: import("react").ComponentType<VariantProps<(props?: ({
component?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | null | undefined;
underline?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & Omit<HTMLAttributes<HTMLParagraphElement>, "color"> & {
size?: SizeKey;
variant?: VariantStyleKey;
} & import("react").RefAttributes<HTMLParagraphElement>>;
/** Copy, but with the color defaulted to `onSurface`. Eventually, Copy should probably use the same default */
export declare const CopyOnSurface: import("react").ComponentType<VariantProps<(props?: ({
component?: "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | null | undefined;
underline?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & Omit<HTMLAttributes<HTMLParagraphElement>, "color"> & {
size?: SizeKey;
variant?: VariantStyleKey;
} & import("react").RefAttributes<HTMLParagraphElement>>;
export {};