@spark-web/button
Version:
--- title: Button storybookPath: forms-buttons-button--default isExperimentalPackage: true ---
45 lines (44 loc) • 1.66 kB
TypeScript
import type { BoxProps } from '@spark-web/box';
import type { ForegroundTone } from '@spark-web/text';
import type { SparkTheme } from '@spark-web/theme';
import type { ButtonProminence, ButtonTone } from "./types.js";
type BaseButtonStyles = {
background: BoxProps['background'];
backgroundFill?: BoxProps['background'];
border?: BoxProps['border'];
borderWidth?: BoxProps['borderWidth'];
textTone?: ForegroundTone;
};
type HoverButtonStyles = {
backgroundHover: keyof SparkTheme['backgroundInteractions'];
borderHover?: keyof SparkTheme['border']['color'];
textToneHover?: keyof SparkTheme['color']['foreground'];
};
type ActiveButtonStyles = {
backgroundActive: keyof SparkTheme['backgroundInteractions'];
borderActive?: keyof SparkTheme['border']['color'];
textToneActive?: keyof SparkTheme['color']['foreground'];
};
type DisabledButtonStyles = {
backgroundDisabled: keyof SparkTheme['color']['background'];
borderDisabled?: keyof SparkTheme['border']['color'];
textToneDisabled: keyof SparkTheme['color']['foreground'];
};
type ButtonStyles = BaseButtonStyles & HoverButtonStyles & ActiveButtonStyles & DisabledButtonStyles;
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 {};