@spark-web/button
Version:
--- title: Button storybookPath: forms-buttons-button--default isExperimentalPackage: true ---
44 lines (43 loc) • 1.68 kB
TypeScript
import type { BoxProps } from '@spark-web/box';
import type { ForegroundTone } from '@spark-web/text';
import type { BrighteTheme } from '@spark-web/theme';
import type { ButtonProminence, ButtonTone } from './types';
declare type BaseButtonStyles = {
background: BoxProps['background'];
border?: BoxProps['border'];
borderWidth?: BoxProps['borderWidth'];
textTone?: ForegroundTone;
};
declare type HoverButtonStyles = {
backgroundHover: keyof BrighteTheme['backgroundInteractions'];
borderHover?: keyof BrighteTheme['border']['color'];
textToneHover?: keyof BrighteTheme['color']['foreground'];
};
declare type ActiveButtonStyles = {
backgroundActive: keyof BrighteTheme['backgroundInteractions'];
borderActive?: keyof BrighteTheme['border']['color'];
textToneActive?: keyof BrighteTheme['color']['foreground'];
};
declare type DisabledButtonStyles = {
backgroundDisabled: keyof BrighteTheme['color']['background'];
borderDisabled?: keyof BrighteTheme['border']['color'];
textToneDisabled: keyof BrighteTheme['color']['foreground'];
};
declare type ButtonStyles = BaseButtonStyles & HoverButtonStyles & ActiveButtonStyles & DisabledButtonStyles;
declare type Variants = Record<ButtonProminence, Record<ButtonTone, ButtonStyles | undefined>>;
export declare const variants: Variants;
export declare const mapTokens: {
readonly fontSize: {
readonly medium: "small";
readonly large: "standard";
};
readonly size: {
readonly medium: "medium";
readonly large: "large";
};
readonly spacing: {
readonly medium: "medium";
readonly large: "xlarge";
};
};
export {};