import { TemplateResult } from 'lit'; import { BahtElement } from '../base.js'; import { IconName } from './icons.js'; export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger'; export type ButtonSize = 'sm' | 'md' | 'lg'; /** * Design-system button (20baht: no scale, no shadow change — color does the work). * Standalone primitive: children become the label, listen for the native `click`. * (Light DOM has no , so the initial children are moved into the button.) * * Delete * * Copy * * ‹ * Close * * `shortcut` binds a document-wide key combo that clicks the button (NOTES 2026-10-31): * hover/focus shows a tooltip with the label and the keys (`⌥Q` on Mac, `Alt+Q` * elsewhere) and the inner button gets `aria-keyshortcuts`. Disabled buttons, buttons * outside the topmost open ``, and modifier-less combos while typing in a * field never fire. */ export declare class BahtButton extends BahtElement { variant: ButtonVariant; size: ButtonSize; disabled: boolean; /** Forwarded to the native button — 'button' (default) or 'submit'. */ type: 'button' | 'submit'; /** Alternative to children for setting the label programmatically. */ label: string; /** Optional leading icon from the curated set (copy/check/download/…). */ icon: IconName | ''; /** Square icon-only button. Requires `label` for the accessible name. */ iconOnly: boolean; /** * A host `aria-label` never reaches assistive tech on its own — light DOM has no * implicit ARIA relationship between a custom element and its rendered children, so an * `aria-label` written on `` stays on the host and the inner native * `