phx-react
Version:
PHX REACT
97 lines (96 loc) • 3.64 kB
TypeScript
import type React from 'react';
export type Target = '_blank' | '_self' | '_parent' | '_top';
type Falsy = boolean | undefined | null | 0;
export declare function classNames(...classes: (string | Falsy)[]): string;
export interface BaseInput {
register?: any;
errors?: any;
setError?: any;
clearErrors?: any;
}
export interface BaseButton {
/** A unique identifier for the button */
id?: string;
/** A destination to link to, rendered in the href attribute of a link */
url?: string;
/** Forces url to open in a new tab */
external?: boolean;
/** Tells the browser to download the url instead of opening it. Provides a hint for the downloaded filename if it is a string value */
download?: string | boolean;
/** Allows the button to submit a form */
submit?: boolean;
/** Disables the button, disallowing merchant interaction */
disabled?: boolean;
/** Replaces button text with a spinner while a background action is being performed */
loading?: boolean;
/** Callback when clicked */
onClick?(): unknown;
className?: string;
}
export type IconSource = React.FunctionComponent<React.SVGProps<SVGSVGElement>> | 'placeholder' | string;
export interface ComplexAction extends Action, SubmitAction, DisableableAction, DestructableAction, LoadableAction {
}
export interface MenuActionDescriptor extends ComplexAction, TooltipAction {
/** Zero-indexed numerical position. Overrides the action's order in the menu */
index?: number;
}
export interface Action {
/** A unique identifier for the action */
id?: string;
/** Content the action displays */
content?: string;
/** Visually hidden text for screen readers */
accessibilityLabel?: string;
/** A destination to link to, rendered in the action */
url?: string;
/** Forces url to open in a new tab */
external?: boolean;
/** Where to display the url */
target?: Target;
/** Action loading */
loading?: boolean;
/** Callback when an action takes place */
onClick?(): void;
onDelete?(): void;
/** Callback when mouse enter */
onMouseEnter?(): void;
/** Callback when element is touched */
onTouchStart?(): void;
}
export interface DisableableAction extends Action {
/** Whether or not the action is disabled */
disabled?: boolean;
}
export interface SubmitAction extends Action {
/** Whether or not the action is disabled */
submit?: boolean;
}
export interface DestructableAction extends Action {
/** Destructive action */
destructive?: boolean;
}
export interface LoadableAction extends Action {
/** Should a spinner be displayed */
loading?: boolean;
}
export interface TooltipAction {
/** Text content to render in a tooltip */
helpText?: React.ReactNode;
}
export type Color = 'default' | 'subdued' | 'critical' | 'success' | 'primary' | 'warning' | 'info' | 'highlight' | 'neutral' | 'attention' | 'decorative' | 'danger';
export type BorderColor = 'default';
export type SpacingScale = 'none' | 'atomic' | 'tight' | 'snappy' | 'base' | 'loose' | 'spacious' | 'distant';
export type AlignItems = 'start' | 'center' | 'end';
export type JustifyContent = 'start' | 'center' | 'end' | 'between' | 'around';
export type GridColumns = 1 | 2 | 3;
export type TextSize = 'heading' | 'title' | 'body' | 'subtitle' | 'caption' | 'micro';
export type TextWeight = 'regular' | 'medium' | 'semibold' | 'bold';
export type LineHeight = 'none' | 'tight' | 'base' | 'loose';
export type Responsive<T> = T | {
initial?: T;
sm?: T;
md?: T;
lg?: T;
xl?: T;
};
export {};