import type { DefineComponent } from "vue"; import type { TerraAccordion } from "../../components/accordion/accordion.component.js"; import type { TerraAlert } from "../../components/alert/alert.component.js"; import type { TerraBreadcrumb } from "../../components/breadcrumb/breadcrumb.component.js"; import type { TerraBreadcrumbs } from "../../components/breadcrumbs/breadcrumbs.component.js"; import type { TerraBadge } from "../../components/badge/badge.component.js"; import type { TerraAvatar } from "../../components/avatar/avatar.component.js"; import type { TerraBrowseVariables } from "../../components/browse-variables/browse-variables.component.js"; import type { TerraButton } from "../../components/button/button.component.js"; import type { TerraButtonGroup } from "../../components/button-group/button-group.component.js"; import type { TerraCaption } from "../../components/caption/caption.component.js"; import type { TerraCard } from "../../components/card/card.component.js"; import type { TerraCheckbox } from "../../components/checkbox/checkbox.component.js"; import type { TerraChip } from "../../components/chip/chip.component.js"; import type { TerraCombobox } from "../../components/combobox/combobox.component.js"; import type { TerraDataAccess } from "../../components/data-access/data-access.component.js"; import type { TerraDataGrid } from "../../components/data-grid/data-grid.component.js"; import type { TerraDataRods } from "../../components/data-rods/data-rods.component.js"; import type { TerraDataSubsetter } from "../../components/data-subsetter/data-subsetter.component.js"; import type { TerraDataSubsetterHistory } from "../../components/data-subsetter-history/data-subsetter-history.component.js"; import type { TerraDatePicker } from "../../components/date-picker/date-picker.component.js"; import type { TerraDateRangeSlider } from "../../components/date-range-slider/date-range-slider.component.js"; import type { TerraDialog } from "../../components/dialog/dialog.component.js"; import type { TerraDivider } from "../../components/divider/divider.component.js"; import type { TerraDropdown } from "../../components/dropdown/dropdown.component.js"; import type { TerraEarthdataLogin } from "../../components/earthdata-login/earthdata-login.component.js"; import type { TerraFileUpload } from "../../components/file-upload/file-upload.component.js"; import type { TerraInput } from "../../components/input/input.component.js"; import type { TerraLogin } from "../../components/login/login.component.js"; import type { TerraMap } from "../../components/map/map.component.js"; import type { TerraMenu } from "../../components/menu/menu.component.js"; import type { TerraMenuItem } from "../../components/menu-item/menu-item.component.js"; import type { TerraOption } from "../../components/option/option.component.js"; import type { TerraIcon } from "../../components/icon/icon.component.js"; import type { TerraLoader } from "../../components/loader/loader.component.js"; import type { TerraPagination } from "../../components/pagination/pagination.component.js"; import type { TerraPlot } from "../../components/plot/plot.component.js"; import type { TerraPlotToolbar } from "../../components/plot-toolbar/plot-toolbar.component.js"; import type { TerraProgressBar } from "../../components/progress-bar/progress-bar.component.js"; import type { TerraRadio } from "../../components/radio/radio.component.js"; import type { TerraRadioGroup } from "../../components/radio-group/radio-group.component.js"; import type { TerraScrollHint } from "../../components/scroll-hint/scroll-hint.component.js"; import type { TerraSelect } from "../../components/select/select.component.js"; import type { TerraSiteNavigation } from "../../components/site-navigation/site-navigation.component.js"; import type { TerraPopup } from "../../components/popup/popup.component.js"; import type { TerraSkeleton } from "../../components/skeleton/skeleton.component.js"; import type { TerraSlider } from "../../components/slider/slider.component.js"; import type { TerraSiteHeader } from "../../components/site-header/site-header.component.js"; import type { TerraStepper } from "../../components/stepper/stepper.component.js"; import type { TerraStatusIndicator } from "../../components/status-indicator/status-indicator.component.js"; import type { TerraTab } from "../../components/tab/tab.component.js"; import type { TerraStepperStep } from "../../components/stepper-step/stepper-step.component.js"; import type { TerraTabPanel } from "../../components/tab-panel/tab-panel.component.js"; import type { TerraTag } from "../../components/tag/tag.component.js"; import type { TerraTabs } from "../../components/tabs/tabs.component.js"; import type { TerraTimeSeries, CustomEvent } from "../../components/time-series/time-series.component.js"; import type { TerraToast } from "../../components/toast/toast.component.js"; import type { TerraToggle } from "../../components/toggle/toggle.component.js"; import type { TerraTooltip } from "../../components/tooltip/tooltip.component.js"; import type { TerraTimeAverageMap } from "../../components/time-average-map/time-average-map.component.js"; import type { TerraSpatialPicker } from "../../components/spatial-picker/spatial-picker.component.js"; import type { TerraVariableCombobox } from "../../components/variable-combobox/variable-combobox.component.js"; import type { TerraVariableKeywordSearch } from "../../components/variable-keyword-search/variable-keyword-search.component.js"; import type { TerraTextarea } from "../../components/textarea/textarea.component.js"; type TerraAccordionProps = { /** The summary/header for the accordion. Use the property for simple text, or the slot for custom content. */ summary?: TerraAccordion["summary"]; /** Whether the accordion is open or not. This property is reflected as an attribute and can be controlled programmatically or by user interaction. */ open?: TerraAccordion["open"]; /** */ showArrow?: TerraAccordion["showArrow"]; /** emitted when the accordion opens or closes */ onTerraAccordionToggle?: (e: CustomEvent) => void; }; type TerraAlertProps = { /** 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?: TerraAlert["open"]; /** Enables a close button that allows the user to dismiss the alert. */ closable?: TerraAlert["closable"]; /** The alert's theme variant. */ variant?: TerraAlert["variant"]; /** The alert's appearance style. "filled" uses a colored background with white text (HDS default). "white" uses a white background with a colored top border and dark text. */ appearance?: TerraAlert["appearance"]; /** 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?: TerraAlert["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?: TerraAlert["countdown"]; /** */ base?: TerraAlert["base"]; /** */ countdownElement?: TerraAlert["countdownElement"]; /** Emitted when the alert opens. */ onTerraShow?: (e: CustomEvent) => void; /** Emitted after the alert opens and all animations are complete. */ onTerraAfterShow?: (e: CustomEvent) => void; /** Emitted when the alert closes. */ onTerraHide?: (e: CustomEvent) => void; /** Emitted after the alert closes and all animations are complete. */ onTerraAfterHide?: (e: CustomEvent) => void; }; type TerraBreadcrumbProps = { /** The URL the breadcrumb points to. When omitted, the breadcrumb is rendered as plain text. */ href?: TerraBreadcrumb["href"]; /** Indicates that this breadcrumb represents the current page. When set, `aria-current="page"` will be applied to the underlying element. */ current?: TerraBreadcrumb["current"]; }; type TerraBreadcrumbsProps = { /** Accessible label for the breadcrumb navigation. */ "aria-label"?: TerraBreadcrumbs["ariaLabel"]; /** Color theme of the breadcrumbs, matching the Horizon Design System. */ theme?: TerraBreadcrumbs["theme"]; }; type TerraBadgeProps = { /** The badge's theme variant. */ variant?: TerraBadge["variant"]; /** Draws a pill-style badge with rounded edges. */ pill?: TerraBadge["pill"]; /** Makes the badge pulsate to draw attention. */ pulse?: TerraBadge["pulse"]; }; type TerraAvatarProps = { /** The image source to use for the avatar. */ image?: TerraAvatar["image"]; /** A label to use to describe the avatar to assistive devices. */ label?: TerraAvatar["label"]; /** Initials to use as a fallback when no image is available (1-2 characters max recommended). */ initials?: TerraAvatar["initials"]; /** Indicates how the browser should load the image. */ loading?: TerraAvatar["loading"]; /** The shape of the avatar. */ shape?: TerraAvatar["shape"]; /** The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause. */ onTerraError?: (e: CustomEvent) => void; }; type TerraBrowseVariablesProps = { /** Allows the user to switch the catalog between different providers TODO: add support for CMR catalog and make it the default */ catalog?: TerraBrowseVariables["catalog"]; /** */ "selected-variable-entry-ids"?: TerraBrowseVariables["selectedVariableEntryIds"]; /** */ searchQuery?: TerraBrowseVariables["searchQuery"]; /** */ selectedFacets?: TerraBrowseVariables["selectedFacets"]; /** */ selectedVariables?: TerraBrowseVariables["selectedVariables"]; /** */ showVariablesBrowse?: TerraBrowseVariables["showVariablesBrowse"]; }; type TerraButtonProps = { /** */ title?: TerraButton["title"]; /** The button's theme variant. */ variant?: TerraButton["variant"]; /** The button's size. */ size?: TerraButton["size"]; /** Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior. */ caret?: TerraButton["caret"]; /** The button's shape. Used to control the radius edge shape when button is not in a terra-button-group. */ shape?: TerraButton["shape"]; /** Disables the button. */ disabled?: TerraButton["disabled"]; /** Draws the button in a loading state. */ loading?: TerraButton["loading"]; /** Draws an outlined button. */ outline?: TerraButton["outline"]; /** Draws a circular icon button. When this attribute is present, the button expects a single `` in the default slot. */ circle?: TerraButton["circle"]; /** The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native `