import { CSSObject } from 'styled-components'; import { ButtonSize, ButtonState, ButtonSubType, ButtonType } from './types'; import { FoundationTokenType } from '../../tokens/theme.token'; import { BreakpointType } from '../../breakpoints/breakPoints'; /** * Button Tokens following the pattern: [target].CSSProp.[size].[variant].[subType].[state] * * Structure: * - target: container | text (defines what element the token applies to) * - CSSProp: backgroundColor | borderRadius | padding | border | shadow | outline | color * - size: sm | md | lg (only for size-dependent properties like padding) * - variant: primary | secondary | danger | success (button type/variant) * - subType: default | iconOnly | inline (button sub-type) * - state: default | hover | active | disabled (interaction state) * * Size-independent properties: backgroundColor, borderRadius, border, shadow, outline, color * Size-dependent properties: padding */ export type ButtonTokensType = { gap: CSSObject['gap']; slotMaxHeight: { [key in ButtonSize]: CSSObject['maxHeight']; }; backgroundColor: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['background']; }; }; }; borderRadius: { [key in ButtonSize]: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['borderRadius']; }; }; }; }; padding: { [key in ButtonSize]: { [key in ButtonType]: { [key in ButtonSubType]: { x: CSSObject['padding']; y: CSSObject['padding']; }; }; }; }; border: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['border']; }; }; }; shadow: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['boxShadow']; }; }; }; outline: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['outline']; }; }; }; text: { color: { [key in ButtonType]: { [key in ButtonSubType]: { [key in ButtonState]: CSSObject['color']; }; }; }; fontSize: { [key in ButtonSize]: CSSObject['fontSize']; }; fontWeight: { [key in ButtonSize]: CSSObject['fontWeight']; }; }; }; export type ResponsiveButtonTokens = { [key in keyof BreakpointType]: ButtonTokensType; }; export declare const getButtonTokens: (foundationToken: FoundationTokenType) => ResponsiveButtonTokens;