/// <reference path="../../index.d.ts" />
import type { PublicLitElement as LitElement } from "@arcgis/lumina";
import type { Appearance, Position, IconType, Scale, SelectionMode } from "../interfaces.js";

/**
 * @cssproperty [--calcite-accordion-border-color] - Specifies the component's border color.
 * @cssproperty [--calcite-accordion-background-color] - Specifies the component's background color.
 * @cssproperty [--calcite-accordion-text-color] - Specifies the component's text color.
 * @cssproperty [--calcite-accordion-text-color-hover] - Specifies the component's main text color on hover.
 * @cssproperty [--calcite-accordion-text-color-press] - Specifies the component's main text color when pressed.
 * @slot  - A slot for adding `calcite-accordion-item`s. `calcite-accordion` cannot be nested, however `calcite-accordion-item`s can.
 */
export abstract class Accordion extends LitElement {
  /**
   * Specifies the appearance of the component.
   *
   * @default "solid"
   */
  accessor appearance: Extract<"solid" | "transparent", Appearance>;
  /**
   * Specifies the position of the expand and collapse icons within `calcite-accordion-item`s
   *
   * @default "end"
   */
  accessor iconPosition: Extract<"start" | "end", Position>;
  /**
   * Specifies the type of the icon in the header.
   *
   * @default "chevron"
   */
  accessor iconType: Extract<"chevron" | "caret" | "plus-minus", IconType>;
  /**
   * Specifies the size of the component.
   *
   * @default "m"
   */
  accessor scale: Scale;
  /**
   * Specifies the selection mode of the component, where:
   *
   * `"multiple"` allows any number of selections,
   *
   * `"single"` allows only one selection, and
   *
   * `"single-persist"` allows one selection and prevents de-selection.
   *
   * @default "multiple"
   */
  accessor selectionMode: Extract<"single" | "single-persist" | "multiple", SelectionMode>;
}