import type { DefineComponent } from "vue"; import type { SlAlert } from "../../components/alert/alert.component.js"; import type { SlAnimatedImage } from "../../components/animated-image/animated-image.component.js"; import type { SlAnimation } from "../../components/animation/animation.component.js"; import type { SlBadge } from "../../components/badge/badge.component.js"; import type { SlBreadcrumb } from "../../components/breadcrumb/breadcrumb.component.js"; import type { SlBreadcrumbItem } from "../../components/breadcrumb-item/breadcrumb-item.component.js"; import type { SlAvatar } from "../../components/avatar/avatar.component.js"; import type { SlBubble } from "../../components/bubble/bubble.component.js"; import type { SlButton } from "../../components/button/button.component.js"; import type { SlButtonGroup } from "../../components/button-group/button-group.component.js"; import type { SlCalendar, CustomEvent } from "../../components/calendar/calendar.component.js"; import type { SlCard } from "../../components/card/card.component.js"; import type { SlCarouselItem } from "../../components/carousel-item/carousel-item.component.js"; import type { SlCarousel } from "../../components/carousel/carousel.component.js"; import type { SlCascader } from "../../components/cascader/cascader.component.js"; import type { SlCheckbox } from "../../components/checkbox/checkbox.component.js"; import type { SlCol } from "../../components/col/col.component.js"; import type { SlColorPicker } from "../../components/color-picker/color-picker.component.js"; import type { SlCopyButton } from "../../components/copy-button/copy-button.component.js"; import type { SlDatePanel, CustomEvent } from "../../components/date-panel/date-panel.component.js"; import type { SlDatepicker } from "../../components/datepicker/datepicker.component.js"; import type { SlDaterangepicker } from "../../components/daterangepicker/daterangepicker.component.js"; import type { SlDetails } from "../../components/details/details.component.js"; import type { SlDialog } from "../../components/dialog/dialog.component.js"; import type { SlDivider } from "../../components/divider/divider.component.js"; import type { SlDrawer } from "../../components/drawer/drawer.component.js"; import type { SlDropdown } from "../../components/dropdown/dropdown.component.js"; import type { SlFloatButton } from "../../components/float-button/float-button.component.js"; import type { SlFloatButtonGroup } from "../../components/float-button-group/float-button-group.component.js"; import type { SlFormatBytes } from "../../components/format-bytes/format-bytes.component.js"; import type { SlFormatDate } from "../../components/format-date/format-date.component.js"; import type { SlFormatNumber } from "../../components/format-number/format-number.component.js"; import type { SlIcon } from "../../components/icon/icon.component.js"; import type { SlIconButton } from "../../components/icon-button/icon-button.component.js"; import type { SlImage } from "../../components/image/image.component.js"; import type { SlImageComparer } from "../../components/image-comparer/image-comparer.component.js"; import type { SlImagePreviewGroup } from "../../components/image-preview-group/image-preview-group.component.js"; import type { SlInclude } from "../../components/include/include.component.js"; import type { SlInput } from "../../components/input/input.component.js"; import type { SlMenu } from "../../components/menu/menu.component.js"; import type { SlMenuItem } from "../../components/menu-item/menu-item.component.js"; import type { SlMenuLabel } from "../../components/menu-label/menu-label.component.js"; import type { SlMutationObserver } from "../../components/mutation-observer/mutation-observer.component.js"; import type { SlNav } from "../../components/nav/nav.component.js"; import type { SlNavGroup } from "../../components/nav-group/nav-group.component.js"; import type { SlNavSubmenu } from "../../components/nav-submenu/nav-submenu.component.js"; import type { SlNavItem } from "../../components/nav-item/nav-item.component.js"; import type { SlNotification } from "../../components/notification/notification.component.js"; import type { SlOption } from "../../components/option/option.component.js"; import type { SlPopconfirm } from "../../components/popconfirm/popconfirm.component.js"; import type { SlPagination } from "../../components/pagination/pagination.component.js"; import type { SlPopup } from "../../components/popup/popup.component.js"; import type { SlProgressBar } from "../../components/progress-bar/progress-bar.component.js"; import type { SlProgressRing } from "../../components/progress-ring/progress-ring.component.js"; import type { SlQrCode } from "../../components/qr-code/qr-code.component.js"; import type { SlRadio } from "../../components/radio/radio.component.js"; import type { SlRadioButton } from "../../components/radio-button/radio-button.component.js"; import type { SlRadioGroup } from "../../components/radio-group/radio-group.component.js"; import type { SlRange } from "../../components/range/range.component.js"; import type { SlRelativeTime } from "../../components/relative-time/relative-time.component.js"; import type { SlResizeObserver } from "../../components/resize-observer/resize-observer.component.js"; import type { SlRating } from "../../components/rating/rating.component.js"; import type { SlScreen } from "../../components/screen/screen.component.js"; import type { SlRow } from "../../components/row/row.component.js"; import type { SlSegmented } from "../../components/segmented/segmented.component.js"; import type { SlSelect } from "../../components/select/select.component.js"; import type { SlSender, CustomEvent } from "../../components/sender/sender.component.js"; import type { SlSenderHeader } from "../../components/sender-header/sender-header.component.js"; import type { SlSenderSwitch, CustomEvent } from "../../components/sender-switch/sender-switch.component.js"; import type { SlSkeleton } from "../../components/skeleton/skeleton.component.js"; import type { SlSpinner } from "../../components/spinner/spinner.component.js"; import type { SlSpace } from "../../components/space/space.component.js"; import type { SlSplitPanel } from "../../components/split-panel/split-panel.component.js"; import type { SlSteps } from "../../components/steps/steps.component.js"; import type { SlSwitch } from "../../components/switch/switch.component.js"; import type { SlTab } from "../../components/tab/tab.component.js"; import type { SlTabGroup } from "../../components/tab-group/tab-group.component.js"; import type { SlTabPanel } from "../../components/tab-panel/tab-panel.component.js"; import type { SlTag } from "../../components/tag/tag.component.js"; import type { SlTable, CustomEvent } from "../../components/table/table.component.js"; import type { SlTextarea } from "../../components/textarea/textarea.component.js"; import type { SlThink } from "../../components/think/think.component.js"; import type { SlThoughtChain } from "../../components/thought-chain/thought-chain.component.js"; import type { SlThoughtChainItem } from "../../components/thought-chain-item/thought-chain-item.component.js"; import type { SlThoughtChainNode } from "../../components/thought-chain-node/thought-chain-node.component.js"; import type { SlTimelineItem } from "../../components/timeline-item/timeline-item.component.js"; import type { SlTimeline } from "../../components/timeline/timeline.component.js"; import type { SlTimepicker } from "../../components/timepicker/timepicker.component.js"; import type { SlTooltip } from "../../components/tooltip/tooltip.component.js"; import type { SlTransfer } from "../../components/transfer/transfer.component.js"; import type { SlTree } from "../../components/tree/tree.component.js"; import type { SlTreeItem } from "../../components/tree-item/tree-item.component.js"; import type { SlTreeSelect } from "../../components/tree-select/tree-select.component.js"; import type { SlUpload } from "../../components/upload/upload.component.js"; import type { SlVisuallyHidden } from "../../components/visually-hidden/visually-hidden.component.js"; import type { SlXMarkdown } from "../../components/x-markdown/x-markdown.component.js"; type SlAlertProps = { /** Indicates whether or not the alert is open. You can toggle this attribute to show and hide the alert, or you can use the `show()` and `hide()` methods and this attribute will reflect the alert's open state. */ open?: SlAlert["open"]; /** Enables a close button that allows the user to dismiss the alert. */ closable?: SlAlert["closable"]; /** The alert's theme variant. */ variant?: SlAlert["variant"]; /** The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with the alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning the alert will not close on its own. */ duration?: SlAlert["duration"]; /** Enables a countdown that indicates the remaining time the alert will be displayed. Typically used to indicate the remaining time before a whole app refresh. */ countdown?: SlAlert["countdown"]; /** */ base?: SlAlert["base"]; /** */ countdownElement?: SlAlert["countdownElement"]; /** Emitted when the alert opens. */ "onsl-show"?: (e: CustomEvent) => void; /** Emitted after the alert opens and all animations are complete. */ "onsl-after-show"?: (e: CustomEvent) => void; /** Emitted when the alert closes. */ "onsl-hide"?: (e: CustomEvent) => void; /** Emitted after the alert closes and all animations are complete. */ "onsl-after-hide"?: (e: CustomEvent) => void; }; type SlAnimatedImageProps = { /** The path to the image to load. */ src?: SlAnimatedImage["src"]; /** A description of the image used by assistive devices. */ alt?: SlAnimatedImage["alt"]; /** Plays the animation. When this attribute is remove, the animation will pause. */ play?: SlAnimatedImage["play"]; /** */ animatedImage?: SlAnimatedImage["animatedImage"]; /** */ frozenFrame?: SlAnimatedImage["frozenFrame"]; /** */ isLoaded?: SlAnimatedImage["isLoaded"]; /** Emitted when the image loads successfully. */ "onsl-load"?: (e: CustomEvent) => void; /** Emitted when the image fails to load. */ "onsl-error"?: (e: CustomEvent) => void; }; type SlAnimationProps = { /** The name of the built-in animation to use. For custom animations, use the `keyframes` prop. */ name?: SlAnimation["name"]; /** Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when the animation finishes or gets canceled. */ play?: SlAnimation["play"]; /** The number of milliseconds to delay the start of the animation. */ delay?: SlAnimation["delay"]; /** Determines the direction of playback as well as the behavior when reaching the end of an iteration. [Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction) */ direction?: SlAnimation["direction"]; /** The number of milliseconds each iteration of the animation takes to complete. */ duration?: SlAnimation["duration"]; /** The easing function to use for the animation. This can be a Shoelace easing function or a custom easing function such as `cubic-bezier(0, 1, .76, 1.14)`. */ easing?: SlAnimation["easing"]; /** The number of milliseconds to delay after the active period of an animation sequence. */ "end-delay"?: SlAnimation["endDelay"]; /** Sets how the animation applies styles to its target before and after its execution. */ fill?: SlAnimation["fill"]; /** The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops. */ iterations?: SlAnimation["iterations"]; /** The offset at which to start the animation, usually between 0 (start) and 1 (end). */ "iteration-start"?: SlAnimation["iterationStart"]; /** Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this to `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This value can be changed without causing the animation to restart. */ "playback-rate"?: SlAnimation["playbackRate"]; /** */ defaultSlot?: SlAnimation["defaultSlot"]; /** The keyframes to use for the animation. If this is set, `name` will be ignored. */ keyframes?: SlAnimation["keyframes"]; /** Gets and sets the current animation time. */ currentTime?: SlAnimation["currentTime"]; /** Emitted when the animation is canceled. */ "onsl-cancel"?: (e: CustomEvent) => void; /** Emitted when the animation finishes. */ "onsl-finish"?: (e: CustomEvent) => void; /** Emitted when the animation starts or restarts. */ "onsl-start"?: (e: CustomEvent) => void; }; type SlBadgeProps = { /** The badge's theme variant. */ variant?: SlBadge["variant"]; /** Draws a pill-style badge with rounded edges. */ pill?: SlBadge["pill"]; /** Makes the badge pulsate to draw attention. */ pulse?: SlBadge["pulse"]; }; type SlBreadcrumbProps = { /** The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by screen readers and other assistive devices to provide more context for users. */ label?: SlBreadcrumb["label"]; /** */ defaultSlot?: SlBreadcrumb["defaultSlot"]; /** */ separatorSlot?: SlBreadcrumb["separatorSlot"]; }; type SlBreadcrumbItemProps = { /** Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered internally. When unset, a button will be rendered instead. */ href?: SlBreadcrumbItem["href"]; /** Tells the browser where to open the link. Only used when `href` is set. */ target?: SlBreadcrumbItem["target"]; /** The `rel` attribute to use on the link. Only used when `href` is set. */ rel?: SlBreadcrumbItem["rel"]; /** */ defaultSlot?: SlBreadcrumbItem["defaultSlot"]; }; type SlAvatarProps = { /** The image source to use for the avatar. */ image?: SlAvatar["image"]; /** A label to use to describe the avatar to assistive devices. */ label?: SlAvatar["label"]; /** Initials to use as a fallback when no image is available (1-2 characters max recommended). */ initials?: SlAvatar["initials"]; /** Indicates how the browser should load the image. */ loading?: SlAvatar["loading"]; /** The shape of the avatar. */ shape?: SlAvatar["shape"]; /** The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause. */ "onsl-error"?: (e: CustomEvent) => void; }; type SlBubbleProps = { /** The position of the bubble. Use `start` for messages from others (left-aligned) and `end` for messages from the current user (right-aligned). */ placement?: SlBubble["placement"]; /** The text content to display in the bubble. If omitted, the default slot content is rendered instead. When `typing` is enabled, the content will be animated character by character. */ content?: SlBubble["content"]; /** The visual style variant of the bubble. - `filled`: Solid background (default) - `outlined`: Border with transparent background - `shadow`: White background with drop shadow - `borderless`: No background or border */ variant?: SlBubble["variant"]; /** The shape of the bubble. - `default`: Standard rounded corners - `round`: Pill-shaped corners - `corner`: Asymmetric corner (chat-style notch) */ shape?: SlBubble["shape"]; /** When true, shows a loading indicator instead of content. */ loading?: SlBubble["loading"]; /** Enables a character-by-character typing animation for the `content` attribute. Only works with string content set via the `content` attribute. */ typing?: SlBubble["typing"]; /** Number of characters to reveal per animation step during typing. */ "typing-step"?: SlBubble["typingStep"]; /** Interval in milliseconds between each typing animation step. */ "typing-interval"?: SlBubble["typingInterval"]; /** Indicates the content is being streamed. When typing is enabled and streaming is true, the typing animation keeps running as new content arrives. The `sl-typing-complete` event is only emitted after streaming ends. */ streaming?: SlBubble["streaming"]; /** Controls the position of the footer slot relative to the content bubble. - `outer-start`: Footer outside the content area, aligned to start (default when placement is `start`) - `outer-end`: Footer outside the content area, aligned to end (default when placement is `end`) - `inner-start`: Footer inside the content area (shares background), aligned to start - `inner-end`: Footer inside the content area (shares background), aligned to end When not set, defaults to `outer-start` if placement is `start`, or `outer-end` if placement is `end`. */ "footer-placement"?: SlBubble["footerPlacement"]; /** Enables editing mode on the bubble content. When true, the content area becomes a contentEditable region with OK and Cancel buttons. */ editable?: SlBubble["editable"]; /** Custom text for the edit confirm button. */ "ok-text"?: SlBubble["okText"]; /** Custom text for the edit cancel button. */ "cancel-text"?: SlBubble["cancelText"]; /** Emitted when the typing animation finishes rendering all content. */ "onsl-typing-complete"?: (e: CustomEvent) => void; /** Emitted when the user confirms an edit. `event.detail.content` contains the edited text. */ "onsl-edit-confirm"?: (e: CustomEvent) => void; /** Emitted when the user cancels editing. */ "onsl-edit-cancel"?: (e: CustomEvent) => void; }; type SlButtonProps = { /** */ title?: SlButton["title"]; /** The button's theme variant. */ variant?: SlButton["variant"]; /** The button's size. */ size?: SlButton["size"]; /** Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior. */ caret?: SlButton["caret"]; /** Disables the button. */ disabled?: SlButton["disabled"]; /** Draws the button in a loading state. */ loading?: SlButton["loading"]; /** Draws an outlined button. */ outline?: SlButton["outline"]; /** Draws a pill-style button with rounded edges. */ pill?: SlButton["pill"]; /** Draws a circular icon button. When this attribute is present, the button expects a single `` in the default slot. */ circle?: SlButton["circle"]; /** The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native `