import styled from 'styled-components' import { typography, TypographyProps, space, SpaceProps, variant, color, layout, LayoutProps, } from 'styled-system' import contentCSS from '../../utils/content-styles' import { cssClass } from '../../utils/css-class' import { ColorProps } from '../../utils/color-props' const variants = variant({ variants: { xs: { fontSize: 'xs', }, sm: { fontSize: 'sm', }, lg: { fontSize: 'lg', }, }, }) /** * Prop Types of a Text component. * Apart from variant it extends all {@link ColorProps}, {@link SpaceProps} and * {@link TypographyProps} * * @memberof Text * @alias TextProps * @property {string} [...] Other props from {@link ColorProps}, {@link SpaceProps} * and {@link TypographyProps} */ export type TextProps = TypographyProps & SpaceProps & ColorProps & LayoutProps & { /** Optional variant of a component */ variant?: 'xs' | 'sm' | 'lg'; /** Define this if you want to render element as something other than div */ as?: string; } /** * @classdesc * * * * Use the Text component to control font size, weight, alignment, and color. * By default it is rendered as a `div` but you can change this to other (like `span`) * by using `as` prop, * * ### Usage * * ```javascript * import { Text, TextProps } from '@adminjs/design-system' * ``` * * @component * @subcategory Atoms * @see TextProps * @see {@link https://storybook.adminjs.co/?path=/story/designsystem-atoms-text--default Storybook} * @hideconstructor * @example Lorem ipsum * return ( * * * In publishing and graphic design, * Lorem ipsum is a placeholder text commonly used to demonstrate the * visual form of a document or a typeface without relying on meaningful * content. * * This text was from Wikipedia * * ) * @section design-system */ const Text = styled.div` ${contentCSS}; ${typography}; ${space}; ${layout}; ${color}; ${variants}; ` Text.defaultProps = { className: cssClass('Text'), } export { Text } export default Text