UNPKG

@spark-web/button

Version:

--- title: Button storybookPath: forms-buttons-button--default isExperimentalPackage: true ---

45 lines (44 loc) 1.66 kB
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 {};