--- // TODO: spinner param (needs Spinner.astro). // TODO: provider param (unused in markup). // TODO: color=false special case — pass no color prop instead. import Icon from './Icon.astro' interface Props { text?: string href?: string /** raw href + target="_blank" rel="noreferrer" */ external?: boolean element?: 'a' | 'button' type?: 'button' | 'reset' | 'submit' id?: string color?: string outline?: boolean ghost?: boolean /** btn-{height} right after btn */ height?: string size?: string block?: boolean disabled?: boolean square?: boolean loading?: boolean action?: boolean pill?: boolean /** btn-link */ link?: boolean class?: string icon?: string iconColor?: string iconEnd?: string iconOnly?: boolean /** animated dots after the text */ dots?: boolean /** data-bs-toggle="modal" data-bs-target="#modal-{modalId}" (modal-id param) */ modalId?: string /** data-bs-toggle="toast" data-bs-target="#toast-{toastId}" (toast-id param) */ toastId?: string /** data-bs-dismiss="modal" */ dismiss?: boolean } const { text = 'Button', href, external, element, type, id, color, outline, ghost, height, size, block, disabled, square, loading, action, pill, link, class: className, icon, iconColor, iconEnd, iconOnly, dots, modalId, toastId, dismiss } = Astro.props // Without a real destination the control is an action, so render