UNPKG

@hypothesis/frontend-shared

Version:

Shared components, styles and utilities for Hypothesis projects

85 lines (84 loc) 2.74 kB
/** * Props common to components that play a primarily presentational role. * * @typedef PresentationalProps * @prop {import('preact').ComponentChildren} [children] * @prop {string|string[]} [classes] - Optional extra CSS classes to append to the * component's default classes * @prop {never} [className] - Use variants, props, unstyled component (when * available) or `classes` instead * @prop {import('preact').Ref<HTMLElement>} [elementRef] - Ref for component's * outermost element. */ /** * Props common to components that are opinionated compositions of other * components. * * @typedef {Omit<PresentationalProps, 'classes'>} CompositeProps */ /** * Props common to Base, abstract components. These are not part of the * package API. * * @typedef BaseProps * @prop {import('preact').ComponentChildren} [children] * @prop {string} className - Base components require a className for base * styling. * @prop {never} [classes] - Use `className` instead * @prop {import('preact').Ref<HTMLElement>} [elementRef] */ /** * A type describing any of the standalone icon components, which take any * valid `<svg>` element attribute as props. * * @typedef {import('preact').FunctionComponent<import('preact').JSX.SVGAttributes<SVGSVGElement>>} IconComponent */ export const unused: {}; /** * Props common to components that play a primarily presentational role. */ export type PresentationalProps = { children?: import('preact').ComponentChildren; /** * - Optional extra CSS classes to append to the * component's default classes */ classes?: string | string[] | undefined; /** * - Use variants, props, unstyled component (when * available) or `classes` instead */ className?: undefined; /** * - Ref for component's * outermost element. */ elementRef?: import("preact").Ref<HTMLElement> | undefined; }; /** * Props common to components that are opinionated compositions of other * components. */ export type CompositeProps = Omit<PresentationalProps, 'classes'>; /** * Props common to Base, abstract components. These are not part of the * package API. */ export type BaseProps = { children?: import('preact').ComponentChildren; /** * - Base components require a className for base * styling. */ className: string; /** * - Use `className` instead */ classes?: undefined; elementRef?: import("preact").Ref<HTMLElement> | undefined; }; /** * A type describing any of the standalone icon components, which take any * valid `<svg>` element attribute as props. */ export type IconComponent = import('preact').FunctionComponent<import('preact').JSX.SVGAttributes<SVGSVGElement>>;