/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Alignment, Scale } from "../interfaces.js";
import type { IconName } from "../calcite-icon/interfaces.js";
import type { HeadingLevel } from "../functional/Heading.js";

/**
 * @cssproperty [--calcite-tile-accent-color-press] - When the parent `calcite-tile-group` has a `selectionMode` that is not `"none"`, specifies the color of the component's selection elements, such as the radio, checkbox, and border.
 * @cssproperty [--calcite-tile-background-color] - Specifies the component's background color.
 * @cssproperty [--calcite-tile-border-color] - Specifies the component's border color.
 * @cssproperty [--calcite-tile-corner-radius] - Specifies the component's corner radius.
 * @cssproperty [--calcite-tile-heading-text-color] - Specifies the component's `heading` text color.
 * @cssproperty [--calcite-tile-link-color] - When `href` is present, specifies the component's link color.
 * @cssproperty [--calcite-tile-shadow] - Specifies the shadow around the component.
 * @cssproperty [--calcite-tile-text-color] - Specifies the component's `description` and `icon` text color, but not the `heading` text color.
 * @cssproperty [--calcite-tile-link-text-color] - Specifies the component's link text color.
 * @slot [content-top] - A slot for adding non-actionable elements above the component's content.  Content slotted here will render in place of the `icon` property.
 * @slot [content-bottom] - A slot for adding non-actionable elements below the component's content.
 */
export abstract class Tile extends LitElement {
  /**
   * When `true`, the component is active.
   *
   * @deprecated in v2.8.0, removal target v6.0.0 - No longer necessary.
   * @default false
   */
  accessor active: boolean;
  /**
   * Specifies alignment of the component's content.
   *
   * @default "start"
   */
  accessor alignment: Exclude<Alignment, "end">;
  /** Specifies a description for the component. Displays below the `heading`. */
  accessor description: string | undefined;
  /**
   * When `true`, interaction is prevented and the component is displayed with lower opacity.
   *
   * @default false
   */
  accessor disabled: boolean;
  /**
   * Specifies the component's embed mode.
   *
   * When `true`, renders without a border and padding for use by other components.
   *
   * @deprecated in v2.6.0, removal target v6.0.0 - No longer necessary.
   * @default false
   */
  accessor embed: boolean;
  /** Specifies the component's heading text. displays between the `icon` and `description`. */
  accessor heading: string | undefined;
  /** Specifies the heading level number of the component's `heading` for proper document structure, without affecting visual styling. */
  accessor headingLevel: HeadingLevel | undefined;
  /** When embed is `false`, specifies the URL for the component. */
  accessor href: string | undefined;
  /** Specifies an icon to display. */
  accessor icon: IconName | undefined;
  /**
   * When `true`, the icon will be flipped when the element direction is right-to-left (`"rtl"`).
   *
   * @default false
   */
  accessor iconFlipRtl: boolean;
  /** Specifies an accessible label for the component. */
  accessor label: string | undefined;
  /**
   * Specifies the component's size.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /**
   * When `true` and the parent's `selectionMode` is `"single"`, `"single-persist"', or `"multiple"`, the component is selected.
   *
   * @default false
   */
  accessor selected: boolean;
  /**
   * Sets focus on the component.
   *
   * @param options - When specified an optional object customizes the component's focusing process. When `preventScroll` is `true`, scrolling will not occur on the component.
   * @see [MDN - focus(options)](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#options)
   */
  setFocus(options?: FocusOptions): Promise<void>;
  /** Fires when the selected state of the component changes. */
  readonly calciteTileSelect: import("@arcgis/lumina").TargetedEvent<this, void>;
  readonly "@eventTypes": {
    calciteTileSelect: Tile["calciteTileSelect"]["detail"];
  };
}