UNPKG

@navinc/base-react-components

Version:
433 lines (432 loc) 15.5 kB
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 {};