import { LitElement } from 'lit'; import '../../assets/styles/icons.css'; declare global { interface HTMLElementTagNameMap { 'ctt-button-switch': CttButtonSwitch; } } export interface ButtonSwitchItem { label: string; value: string; disabled?: boolean; } /** * CTT ButtonSwitch Web Component * * A customizable multi-button switch component for the CTT Design System. * Provides smooth sliding animation and comprehensive programmatic API. * * @element ctt-button-switch * * @fires change - Dispatched when the component value changes * * @csspart label - The group heading label * @csspart root - The main component wrapper * @csspart option - Individual button options * @csspart text - Button text content * * @example * ```html * * ``` * * @example * ```javascript * const buttonSwitch = document.querySelector('ctt-button-switch'); * * // Get current value * const currentValue = buttonSwitch.getValue(); * * // Set value programmatically * buttonSwitch.setValue('new-value'); * * // Get selected item with label and value * const selectedItem = buttonSwitch.getSelectedItem(); * * // Reset to default * buttonSwitch.reset(); * ``` */ export declare class CttButtonSwitch extends LitElement { static styles: import("lit").CSSResult[]; /** * Array of button items with label and value */ items: ButtonSwitchItem[]; /** * Current selected value */ value: string; /** * Group heading label */ label: string; /** * Color variant of the component */ variant: 'primary' | 'secondary'; /** * Size variant of the component */ size: 's' | 'm' | 'l'; /** * Default value to set when component is initialized */ defaultValue: string; /** * Whether to show text labels on all devices (vs hide on mobile) */ showTextAllDevices: boolean; /** * Whether the component is disabled */ disabled: boolean; constructor(); /** * Get the current selected value * @returns The currently selected value */ getValue(): string; /** * Set the selected value programmatically * @param newValue - The value to set * @param silent - If true, won't dispatch change event */ setValue(newValue: string, silent?: boolean): void; /** * Reset to default value * @param silent - If true, won't dispatch change event */ reset(silent?: boolean): void; /** * Get all available options * @returns Array of all button items */ getOptions(): ButtonSwitchItem[]; /** * Get the currently selected item (both label and value) * @returns The selected item object or null if no selection */ getSelectedItem(): ButtonSwitchItem | null; private _setValue; private _updateSliderPosition; firstUpdated(): void; updated(): void; render(): import("lit-html").TemplateResult<1>; }