@patreon/studio
Version:
Patreon Studio Design System
52 lines (51 loc) • 1.61 kB
TypeScript
import type { AriaAttributes, AriaRole, ReactNode } from 'react';
import type { css } from 'styled-components';
export type BaseAriaProps = AriaAttributes & {
/**
* ARIA role for semantic meaning of the component.
* See {@link https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles|ARIA Role docs}.
*/
role?: AriaRole;
};
export interface AssignableElementProps {
/** The element to render */
as?: React.ElementType;
}
export interface BaseProps {
/** Tag for testing */
'data-tag'?: string;
/** HTML id property */
id?: string;
}
/** @deprecated use StylableProps with className instead */
export interface LegacyStylableProps {
/**
* Custom css applied to the root element
* @deprecated use `className` with CSS Module styles instead.
**/
css?: ReturnType<typeof css>;
}
export type StyleVariableObject = Record<`--${string}`, string | number>;
export interface StylableProps {
/** Custom className applied to the root element */
className?: string;
/**
* Inject CSS variables into the component for use within CSS Modules.
* Only accepts a record of `--${string}: string | number` values.
**/
style?: StyleVariableObject;
}
export interface ChildrenProps {
/** content to render */
children?: ReactNode;
}
export interface LoggerProps {
/**
* Unique identifier of the component used for logging.
*/
loggerId?: string;
/**
* Optional additional fields to log in `Studio Action`
*/
loggerProps?: Record<string, string | number | boolean>;
}