import { PropertyValues, TemplateResult } from 'lit'; import { ViElement } from '../base/vi-element.js'; /** * Button visual variant. * Defined here, not in ViElement — each component owns its variant type * (functional composition, not inheritance). Different components may * support different subsets of these values. */ export type ButtonVariant = 'primary' | 'secondary' | 'danger' | 'success' | 'info' | 'ghost'; /** * Button size scale. Controls padding and font-size via CSS custom properties. * xs → sm → md (default) → lg */ export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg'; /** * Icon placement relative to the label. * 'start' (default) places the icon before the text; 'end' places it after. * Controlled via CSS `order` — no extra wrapper elements needed. */ export type ButtonIconPlacement = 'start' | 'end'; declare const ViButton_base: typeof ViElement & (new (...args: any[]) => import('../base/focusable-mixin.js').FocusableInterface); /** * vi-button * Self-styled button component using Flux UI token fallbacks. * * @element vi-button * @attr variant - Visual variant: primary | secondary | danger | success | info * @attr size - Size scale: xs | sm | md | lg (default: md) * @attr icon-placement - Icon slot position: start | end (default: start) * @attr disabled - Disables the button * @attr full-width - Stretches button to fill its container * @attr icon-only - Styles the button for an icon-only layout * * @slot - Button label (text / content) * @slot icon - A single icon (vi-icon or any inline SVG) * * @csspart button - The inner