{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "components/avatar/avatar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlAvatar",
          "cssProperties": [
            {
              "description": "The size of the avatar.",
              "name": "--size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the avatar's icon.",
              "name": "icon"
            },
            {
              "description": "The container that wraps the avatar's initials.",
              "name": "initials"
            },
            {
              "description": "The avatar image. Only shown when the `image` attribute is set.",
              "name": "image"
            }
          ],
          "slots": [
            {
              "description": "The default icon to use when no image or initials are present. Works best with `<sl-icon>`.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "hasError",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "image",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The image source to use for the avatar.",
              "attribute": "image"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use to describe the avatar to assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "initials",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
              "attribute": "initials"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Indicates how the browser should load the image.",
              "attribute": "loading"
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "attribute": "shape",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleImageChange"
            },
            {
              "kind": "method",
              "name": "handleImageLoadError",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some unknown cause.",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "image",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The image source to use for the avatar.",
              "fieldName": "image"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use to describe the avatar to assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "initials",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Initials to use as a fallback when no image is available (1-2 characters max recommended).",
              "fieldName": "initials"
            },
            {
              "name": "loading",
              "type": {
                "text": "'eager' | 'lazy'"
              },
              "default": "'eager'",
              "description": "Indicates how the browser should load the image.",
              "fieldName": "loading"
            },
            {
              "name": "shape",
              "type": {
                "text": "'circle' | 'square' | 'rounded'"
              },
              "default": "'circle'",
              "description": "The shape of the avatar.",
              "fieldName": "shape"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Avatars are used to represent a person or object.",
          "tagNameWithoutPrefix": "avatar",
          "tagName": "sl-avatar",
          "customElement": true,
          "jsDoc": "/**\n * @summary Avatars are used to represent a person or object.\n * @documentation https://shoelace.style/components/avatar\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @event sl-error - The image could not be loaded. This may because of an invalid URL, a temporary network condition, or some\n * unknown cause.\n *\n * @slot icon - The default icon to use when no image or initials are present. Works best with `<sl-icon>`.\n *\n * @csspart base - The component's base wrapper.\n * @csspart icon - The container that wraps the avatar's icon.\n * @csspart initials - The container that wraps the avatar's initials.\n * @csspart image - The avatar image. Only shown when the `image` attribute is set.\n *\n * @cssproperty --size - The size of the avatar.\n */",
          "documentation": "https://shoelace.style/components/avatar",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlAvatar",
            "module": "components/avatar/avatar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/animation/animation.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlAnimation",
          "slots": [
            {
              "description": "The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To animate multiple elements, either wrap them in a single container or use multiple `<sl-animation>` elements.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "animation",
              "type": {
                "text": "Animation | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasStarted",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "Promise<HTMLSlotElement>"
              }
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'none'",
              "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.",
              "attribute": "play",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay the start of the animation.",
              "attribute": "delay"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "PlaybackDirection"
              },
              "default": "'normal'",
              "description": "Determines the direction of playback as well as the behavior when reaching the end of an iteration.\n[Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)",
              "attribute": "direction"
            },
            {
              "kind": "field",
              "name": "duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The number of milliseconds each iteration of the animation takes to complete.",
              "attribute": "duration"
            },
            {
              "kind": "field",
              "name": "easing",
              "type": {
                "text": "string"
              },
              "default": "'linear'",
              "description": "The easing function to use for the animation. This can be a Shoelace easing function or a custom easing function\nsuch as `cubic-bezier(0, 1, .76, 1.14)`.",
              "attribute": "easing"
            },
            {
              "kind": "field",
              "name": "endDelay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay after the active period of an animation sequence.",
              "attribute": "end-delay"
            },
            {
              "kind": "field",
              "name": "fill",
              "type": {
                "text": "FillMode"
              },
              "default": "'auto'",
              "description": "Sets how the animation applies styles to its target before and after its execution.",
              "attribute": "fill"
            },
            {
              "kind": "field",
              "name": "iterations",
              "default": "Infinity",
              "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
              "attribute": "iterations"
            },
            {
              "kind": "field",
              "name": "iterationStart",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
              "attribute": "iteration-start"
            },
            {
              "kind": "field",
              "name": "keyframes",
              "type": {
                "text": "Keyframe[] | undefined"
              },
              "description": "The keyframes to use for the animation. If this is set, `name` will be ignored."
            },
            {
              "kind": "field",
              "name": "playbackRate",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this\nto `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This\nvalue can be changed without causing the animation to restart.",
              "attribute": "playback-rate"
            },
            {
              "kind": "field",
              "name": "currentTime",
              "type": {
                "text": "CSSNumberish"
              },
              "description": "Gets and sets the current animation time."
            },
            {
              "kind": "field",
              "name": "handleAnimationFinish",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleAnimationCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "createAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "destroyAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleAnimationChange"
            },
            {
              "kind": "method",
              "name": "handlePlayChange"
            },
            {
              "kind": "method",
              "name": "handlePlaybackRateChange"
            },
            {
              "kind": "method",
              "name": "cancel",
              "description": "Clears all keyframe effects caused by this animation and aborts its playback."
            },
            {
              "kind": "method",
              "name": "finish",
              "description": "Sets the playback time to the end of the animation corresponding to the current playback direction."
            }
          ],
          "events": [
            {
              "description": "Emitted when the animation is canceled.",
              "name": "sl-cancel",
              "reactName": "onSlCancel",
              "eventName": "SlCancelEvent"
            },
            {
              "description": "Emitted when the animation finishes.",
              "name": "sl-finish",
              "reactName": "onSlFinish",
              "eventName": "SlFinishEvent"
            },
            {
              "description": "Emitted when the animation starts or restarts.",
              "name": "sl-start",
              "reactName": "onSlStart",
              "eventName": "SlStartEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'none'",
              "description": "The name of the built-in animation to use. For custom animations, use the `keyframes` prop.",
              "fieldName": "name"
            },
            {
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Plays the animation. When omitted, the animation will be paused. This attribute will be automatically removed when\nthe animation finishes or gets canceled.",
              "fieldName": "play"
            },
            {
              "name": "delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay the start of the animation.",
              "fieldName": "delay"
            },
            {
              "name": "direction",
              "type": {
                "text": "PlaybackDirection"
              },
              "default": "'normal'",
              "description": "Determines the direction of playback as well as the behavior when reaching the end of an iteration.\n[Learn more](https://developer.mozilla.org/en-US/docs/Web/CSS/animation-direction)",
              "fieldName": "direction"
            },
            {
              "name": "duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The number of milliseconds each iteration of the animation takes to complete.",
              "fieldName": "duration"
            },
            {
              "name": "easing",
              "type": {
                "text": "string"
              },
              "default": "'linear'",
              "description": "The easing function to use for the animation. This can be a Shoelace easing function or a custom easing function\nsuch as `cubic-bezier(0, 1, .76, 1.14)`.",
              "fieldName": "easing"
            },
            {
              "name": "end-delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number of milliseconds to delay after the active period of an animation sequence.",
              "fieldName": "endDelay"
            },
            {
              "name": "fill",
              "type": {
                "text": "FillMode"
              },
              "default": "'auto'",
              "description": "Sets how the animation applies styles to its target before and after its execution.",
              "fieldName": "fill"
            },
            {
              "name": "iterations",
              "default": "Infinity",
              "description": "The number of iterations to run before the animation completes. Defaults to `Infinity`, which loops.",
              "fieldName": "iterations"
            },
            {
              "name": "iteration-start",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The offset at which to start the animation, usually between 0 (start) and 1 (end).",
              "fieldName": "iterationStart"
            },
            {
              "name": "playback-rate",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Sets the animation's playback rate. The default is `1`, which plays the animation at a normal speed. Setting this\nto `2`, for example, will double the animation's speed. A negative value can be used to reverse the animation. This\nvalue can be changed without causing the animation to restart.",
              "fieldName": "playbackRate"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. Powered by the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).",
          "tagNameWithoutPrefix": "animation",
          "tagName": "sl-animation",
          "customElement": true,
          "jsDoc": "/**\n * @summary Animate elements declaratively with nearly 100 baked-in presets, or roll your own with custom keyframes. Powered by the [Web Animations API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API).\n * @documentation https://shoelace.style/components/animation\n * @status stable\n * @since 2.0\n *\n * @event sl-cancel - Emitted when the animation is canceled.\n * @event sl-finish - Emitted when the animation finishes.\n * @event sl-start - Emitted when the animation starts or restarts.\n *\n * @slot - The element to animate. Avoid slotting in more than one element, as subsequent ones will be ignored. To\n *  animate multiple elements, either wrap them in a single container or use multiple `<sl-animation>` elements.\n */",
          "documentation": "https://shoelace.style/components/animation",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlAnimation",
            "module": "components/animation/animation.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/dialog/dialog.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDialog",
          "cssProperties": [
            {
              "description": "The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.",
              "name": "--width"
            },
            {
              "description": "The amount of padding to use for the header.",
              "name": "--header-spacing"
            },
            {
              "description": "The amount of padding to use for the body.",
              "name": "--body-spacing"
            },
            {
              "description": "The amount of padding to use for the footer.",
              "name": "--footer-spacing"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The overlay that covers the screen behind the dialog.",
              "name": "overlay"
            },
            {
              "description": "The dialog's panel (where the dialog and its content are rendered).",
              "name": "panel"
            },
            {
              "description": "The dialog's header. This element wraps the title and header actions.",
              "name": "header"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<sl-icon-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The dialog's title.",
              "name": "title"
            },
            {
              "description": "The close button, an `<sl-icon-button>`.",
              "name": "close-button"
            },
            {
              "description": "The close button's exported `base` part.",
              "name": "close-button__base"
            },
            {
              "description": "The dialog's body.",
              "name": "body"
            },
            {
              "description": "The dialog's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The dialog's main content.",
              "name": ""
            },
            {
              "description": "The dialog's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<sl-icon-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The dialog's footer, usually one or more buttons representing various options.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "originalTrigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "modal",
              "privacy": "public",
              "default": "new Modal(this)",
              "description": "Exposes the internal modal utility that controls focus trapping. To temporarily disable focus trapping and allow third-party modals spawned from an active Shoelace modal, call `modal.activateExternal()` when the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Shoelace's focus trapping."
            },
            {
              "kind": "field",
              "name": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "dialog",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "overlay",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is open. You can toggle this attribute to show and hide the dialog, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the dialog's open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's label as displayed in the header. You should always include a relevant label even when using\n`no-header`, as it is required for proper accessibility. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "noHeader",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button, so please ensure you provide an easy,\naccessible way for users to dismiss the dialog.",
              "attribute": "no-header",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "requestClose",
              "privacy": "private",
              "parameters": [
                {
                  "name": "source",
                  "type": {
                    "text": "'close-button' | 'keyboard' | 'overlay'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the dialog."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the dialog"
            }
          ],
          "events": [
            {
              "description": "Emitted when the dialog opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the dialog opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the dialog closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the dialog closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            },
            {
              "description": "Emitted when the dialog opens and is ready to receive focus. Calling `event.preventDefault()` will prevent focusing and allow you to set it on a different element, such as an input.",
              "name": "sl-initial-focus",
              "reactName": "onSlInitialFocus",
              "eventName": "SlInitialFocusEvent"
            },
            {
              "type": {
                "text": "{ source: 'close-button' | 'keyboard' | 'overlay' }"
              },
              "description": "Emitted when the user attempts to close the dialog by clicking the close button, clicking the overlay, or pressing escape. Calling `event.preventDefault()` will keep the dialog open. Avoid using this unless closing the dialog will result in destructive behavior such as data loss.",
              "name": "sl-request-close",
              "reactName": "onSlRequestClose",
              "eventName": "SlRequestCloseEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is open. You can toggle this attribute to show and hide the dialog, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the dialog's open state.",
              "fieldName": "open"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The dialog's label as displayed in the header. You should always include a relevant label even when using\n`no-header`, as it is required for proper accessibility. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "no-header",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the header. This will also remove the default close button, so please ensure you provide an easy,\naccessible way for users to dismiss the dialog.",
              "fieldName": "noHeader"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.",
          "tagNameWithoutPrefix": "dialog",
          "tagName": "sl-dialog",
          "customElement": true,
          "jsDoc": "/**\n * @summary Dialogs, sometimes called \"modals\", appear above the page and require the user's immediate attention.\n * @documentation https://shoelace.style/components/dialog\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - The dialog's main content.\n * @slot label - The dialog's label. Alternatively, you can use the `label` attribute.\n * @slot header-actions - Optional actions to add to the header. Works best with `<sl-icon-button>`.\n * @slot footer - The dialog's footer, usually one or more buttons representing various options.\n *\n * @event sl-show - Emitted when the dialog opens.\n * @event sl-after-show - Emitted after the dialog opens and all animations are complete.\n * @event sl-hide - Emitted when the dialog closes.\n * @event sl-after-hide - Emitted after the dialog closes and all animations are complete.\n * @event sl-initial-focus - Emitted when the dialog opens and is ready to receive focus. Calling\n *   `event.preventDefault()` will prevent focusing and allow you to set it on a different element, such as an input.\n * @event {{ source: 'close-button' | 'keyboard' | 'overlay' }} sl-request-close - Emitted when the user attempts to\n *   close the dialog by clicking the close button, clicking the overlay, or pressing escape. Calling\n *   `event.preventDefault()` will keep the dialog open. Avoid using this unless closing the dialog will result in\n *   destructive behavior such as data loss.\n *\n * @csspart base - The component's base wrapper.\n * @csspart overlay - The overlay that covers the screen behind the dialog.\n * @csspart panel - The dialog's panel (where the dialog and its content are rendered).\n * @csspart header - The dialog's header. This element wraps the title and header actions.\n * @csspart header-actions - Optional actions to add to the header. Works best with `<sl-icon-button>`.\n * @csspart title - The dialog's title.\n * @csspart close-button - The close button, an `<sl-icon-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n * @csspart body - The dialog's body.\n * @csspart footer - The dialog's footer.\n *\n * @cssproperty --width - The preferred width of the dialog. Note that the dialog will shrink to accommodate smaller screens.\n * @cssproperty --header-spacing - The amount of padding to use for the header.\n * @cssproperty --body-spacing - The amount of padding to use for the body.\n * @cssproperty --footer-spacing - The amount of padding to use for the footer.\n *\n * @animation dialog.show - The animation to use when showing the dialog.\n * @animation dialog.hide - The animation to use when hiding the dialog.\n * @animation dialog.denyClose - The animation to use when a request to close the dialog is denied.\n * @animation dialog.overlay.show - The animation to use when showing the dialog's overlay.\n * @animation dialog.overlay.hide - The animation to use when hiding the dialog's overlay.\n *\n * @property modal - Exposes the internal modal utility that controls focus trapping. To temporarily disable focus\n *   trapping and allow third-party modals spawned from an active Shoelace modal, call `modal.activateExternal()` when\n *   the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Shoelace's focus trapping.\n */",
          "documentation": "https://shoelace.style/components/dialog",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ],
          "animations": [
            {
              "name": "dialog.show",
              "description": "The animation to use when showing the dialog."
            },
            {
              "name": "dialog.hide",
              "description": "The animation to use when hiding the dialog."
            },
            {
              "name": "dialog.denyClose",
              "description": "The animation to use when a request to close the dialog is denied."
            },
            {
              "name": "dialog.overlay.show",
              "description": "The animation to use when showing the dialog's overlay."
            },
            {
              "name": "dialog.overlay.hide",
              "description": "The animation to use when hiding the dialog's overlay."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDialog",
            "module": "components/dialog/dialog.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/checkbox/checkbox.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCheckbox",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The square container that wraps the checkbox's checked state.",
              "name": "control"
            },
            {
              "description": "Matches the control part when the checkbox is checked.",
              "name": "control--checked"
            },
            {
              "description": "Matches the control part when the checkbox is indeterminate.",
              "name": "control--indeterminate"
            },
            {
              "description": "The checked icon, an `<sl-icon>` element.",
              "name": "checked-icon"
            },
            {
              "description": "The indeterminate icon, an `<sl-icon>` element.",
              "name": "indeterminate-icon"
            },
            {
              "description": "The container that wraps the checkbox's label.",
              "name": "label"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            }
          ],
          "slots": [
            {
              "description": "The checkbox's label.",
              "name": ""
            },
            {
              "description": "Text that describes how to use the checkbox. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { value: (control: SlCheckbox) => (control.checked ? control.value || 'on' : undefined), defaultValue: (control: SlCheckbox) => control.defaultChecked, setValue: (control: SlCheckbox, checked: boolean) => (control.checked = checked) })"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'help-text')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the checkbox, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the checkbox, submitted as a name/value pair with form data.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The checkbox's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the checkbox.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the checkbox in a checked state.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a \"select\nall/none\" behavior when associated checkboxes have a mix of checked and unchecked states.",
              "attribute": "indeterminate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultChecked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The default value of the form control. Primarily used for resetting the form control."
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox a required field.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The checkbox's help text. If you need to display HTML, use the `help-text` slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "validity",
              "description": "Gets the validity state object",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "description": "Gets the validation message",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleStateChange"
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the checkbox."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the checkbox."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the checkbox."
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "Gets the associated form, if one exists."
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a custom validation message. The value provided will be shown to the user when the form is submitted. To clear\nthe custom validation message, call this method with an empty string."
            }
          ],
          "events": [
            {
              "description": "Emitted when the checkbox loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the checked state changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the checkbox gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the checkbox receives input.",
              "name": "sl-input",
              "reactName": "onSlInput",
              "eventName": "SlInputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the checkbox, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the checkbox, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The checkbox's size.",
              "fieldName": "size"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the checkbox.",
              "fieldName": "disabled"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the checkbox in a checked state.",
              "fieldName": "checked"
            },
            {
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the checkbox in an indeterminate state. This is usually applied to checkboxes that represents a \"select\nall/none\" behavior when associated checkboxes have a mix of checked and unchecked states.",
              "fieldName": "indeterminate"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "fieldName": "form"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the checkbox a required field.",
              "fieldName": "required"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The checkbox's help text. If you need to display HTML, use the `help-text` slot instead.",
              "fieldName": "helpText"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Checkboxes allow the user to toggle an option on or off.",
          "tagNameWithoutPrefix": "checkbox",
          "tagName": "sl-checkbox",
          "customElement": true,
          "jsDoc": "/**\n * @summary Checkboxes allow the user to toggle an option on or off.\n * @documentation https://shoelace.style/components/checkbox\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot - The checkbox's label.\n * @slot help-text - Text that describes how to use the checkbox. Alternatively, you can use the `help-text` attribute.\n *\n * @event sl-blur - Emitted when the checkbox loses focus.\n * @event sl-change - Emitted when the checked state changes.\n * @event sl-focus - Emitted when the checkbox gains focus.\n * @event sl-input - Emitted when the checkbox receives input.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The square container that wraps the checkbox's checked state.\n * @csspart control--checked - Matches the control part when the checkbox is checked.\n * @csspart control--indeterminate - Matches the control part when the checkbox is indeterminate.\n * @csspart checked-icon - The checked icon, an `<sl-icon>` element.\n * @csspart indeterminate-icon - The indeterminate icon, an `<sl-icon>` element.\n * @csspart label - The container that wraps the checkbox's label.\n * @csspart form-control-help-text - The help text's wrapper.\n */",
          "documentation": "https://shoelace.style/components/checkbox",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCheckbox",
            "module": "components/checkbox/checkbox.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/drawer/drawer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDrawer",
          "cssProperties": [
            {
              "description": "The preferred size of the drawer. This will be applied to the drawer's width or height depending on its `placement`. Note that the drawer will shrink to accommodate smaller screens.",
              "name": "--size"
            },
            {
              "description": "The amount of padding to use for the header.",
              "name": "--header-spacing"
            },
            {
              "description": "The amount of padding to use for the body.",
              "name": "--body-spacing"
            },
            {
              "description": "The amount of padding to use for the footer.",
              "name": "--footer-spacing"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The overlay that covers the screen behind the drawer.",
              "name": "overlay"
            },
            {
              "description": "The drawer's panel (where the drawer and its content are rendered).",
              "name": "panel"
            },
            {
              "description": "The drawer's header. This element wraps the title and header actions.",
              "name": "header"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<sl-icon-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The drawer's title.",
              "name": "title"
            },
            {
              "description": "The close button, an `<sl-icon-button>`.",
              "name": "close-button"
            },
            {
              "description": "The close button's exported `base` part.",
              "name": "close-button__base"
            },
            {
              "description": "The drawer's body.",
              "name": "body"
            },
            {
              "description": "The drawer's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The drawer's main content.",
              "name": ""
            },
            {
              "description": "The drawer's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Optional actions to add to the header. Works best with `<sl-icon-button>`.",
              "name": "header-actions"
            },
            {
              "description": "The drawer's footer, usually one or more buttons representing various options.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "originalTrigger",
              "type": {
                "text": "HTMLElement | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "modal",
              "privacy": "public",
              "default": "new Modal(this)",
              "description": "Exposes the internal modal utility that controls focus trapping. To temporarily disable focus trapping and allow third-party modals spawned from an active Shoelace modal, call `modal.activateExternal()` when the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Shoelace's focus trapping."
            },
            {
              "kind": "field",
              "name": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "drawer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "overlay",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the drawer is open. You can toggle this attribute to show and hide the drawer, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the drawer's open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The drawer's label as displayed in the header. You should always include a relevant label even when using\n`no-header`, as it is required for proper accessibility. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'end' | 'bottom' | 'start'"
              },
              "default": "'end'",
              "description": "The direction from which the drawer will open.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "contained",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, the drawer slides out of its containing block (usually the viewport). To make the drawer slide out of\nits parent element, set this attribute and add `position: relative` to the parent.",
              "attribute": "contained",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "noHeader",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the header. This will also remove the default close button, so please ensure you provide an easy,\naccessible way for users to dismiss the drawer.",
              "attribute": "no-header",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "requestClose",
              "privacy": "private",
              "parameters": [
                {
                  "name": "source",
                  "type": {
                    "text": "'close-button' | 'keyboard' | 'overlay'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "handleNoModalChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the drawer."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the drawer"
            }
          ],
          "events": [
            {
              "description": "Emitted when the drawer opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the drawer opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the drawer closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the drawer closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            },
            {
              "description": "Emitted when the drawer opens and is ready to receive focus. Calling `event.preventDefault()` will prevent focusing and allow you to set it on a different element, such as an input.",
              "name": "sl-initial-focus",
              "reactName": "onSlInitialFocus",
              "eventName": "SlInitialFocusEvent"
            },
            {
              "type": {
                "text": "{ source: 'close-button' | 'keyboard' | 'overlay' }"
              },
              "description": "Emitted when the user attempts to close the drawer by clicking the close button, clicking the overlay, or pressing escape. Calling `event.preventDefault()` will keep the drawer open. Avoid using this unless closing the drawer will result in destructive behavior such as data loss.",
              "name": "sl-request-close",
              "reactName": "onSlRequestClose",
              "eventName": "SlRequestCloseEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the drawer is open. You can toggle this attribute to show and hide the drawer, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the drawer's open state.",
              "fieldName": "open"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The drawer's label as displayed in the header. You should always include a relevant label even when using\n`no-header`, as it is required for proper accessibility. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'end' | 'bottom' | 'start'"
              },
              "default": "'end'",
              "description": "The direction from which the drawer will open.",
              "fieldName": "placement"
            },
            {
              "name": "contained",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, the drawer slides out of its containing block (usually the viewport). To make the drawer slide out of\nits parent element, set this attribute and add `position: relative` to the parent.",
              "fieldName": "contained"
            },
            {
              "name": "no-header",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the header. This will also remove the default close button, so please ensure you provide an easy,\naccessible way for users to dismiss the drawer.",
              "fieldName": "noHeader"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Drawers slide in from a container to expose additional options and information.",
          "tagNameWithoutPrefix": "drawer",
          "tagName": "sl-drawer",
          "customElement": true,
          "jsDoc": "/**\n * @summary Drawers slide in from a container to expose additional options and information.\n * @documentation https://shoelace.style/components/drawer\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - The drawer's main content.\n * @slot label - The drawer's label. Alternatively, you can use the `label` attribute.\n * @slot header-actions - Optional actions to add to the header. Works best with `<sl-icon-button>`.\n * @slot footer - The drawer's footer, usually one or more buttons representing various options.\n *\n * @event sl-show - Emitted when the drawer opens.\n * @event sl-after-show - Emitted after the drawer opens and all animations are complete.\n * @event sl-hide - Emitted when the drawer closes.\n * @event sl-after-hide - Emitted after the drawer closes and all animations are complete.\n * @event sl-initial-focus - Emitted when the drawer opens and is ready to receive focus. Calling\n *   `event.preventDefault()` will prevent focusing and allow you to set it on a different element, such as an input.\n * @event {{ source: 'close-button' | 'keyboard' | 'overlay' }} sl-request-close - Emitted when the user attempts to\n *   close the drawer by clicking the close button, clicking the overlay, or pressing escape. Calling\n *   `event.preventDefault()` will keep the drawer open. Avoid using this unless closing the drawer will result in\n *   destructive behavior such as data loss.\n *\n * @csspart base - The component's base wrapper.\n * @csspart overlay - The overlay that covers the screen behind the drawer.\n * @csspart panel - The drawer's panel (where the drawer and its content are rendered).\n * @csspart header - The drawer's header. This element wraps the title and header actions.\n * @csspart header-actions - Optional actions to add to the header. Works best with `<sl-icon-button>`.\n * @csspart title - The drawer's title.\n * @csspart close-button - The close button, an `<sl-icon-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n * @csspart body - The drawer's body.\n * @csspart footer - The drawer's footer.\n *\n * @cssproperty --size - The preferred size of the drawer. This will be applied to the drawer's width or height\n *   depending on its `placement`. Note that the drawer will shrink to accommodate smaller screens.\n * @cssproperty --header-spacing - The amount of padding to use for the header.\n * @cssproperty --body-spacing - The amount of padding to use for the body.\n * @cssproperty --footer-spacing - The amount of padding to use for the footer.\n *\n * @animation drawer.showTop - The animation to use when showing a drawer with `top` placement.\n * @animation drawer.showEnd - The animation to use when showing a drawer with `end` placement.\n * @animation drawer.showBottom - The animation to use when showing a drawer with `bottom` placement.\n * @animation drawer.showStart - The animation to use when showing a drawer with `start` placement.\n * @animation drawer.hideTop - The animation to use when hiding a drawer with `top` placement.\n * @animation drawer.hideEnd - The animation to use when hiding a drawer with `end` placement.\n * @animation drawer.hideBottom - The animation to use when hiding a drawer with `bottom` placement.\n * @animation drawer.hideStart - The animation to use when hiding a drawer with `start` placement.\n * @animation drawer.denyClose - The animation to use when a request to close the drawer is denied.\n * @animation drawer.overlay.show - The animation to use when showing the drawer's overlay.\n * @animation drawer.overlay.hide - The animation to use when hiding the drawer's overlay.\n *\n * @property modal - Exposes the internal modal utility that controls focus trapping. To temporarily disable focus\n *   trapping and allow third-party modals spawned from an active Shoelace modal, call `modal.activateExternal()` when\n *   the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Shoelace's focus trapping.\n */",
          "documentation": "https://shoelace.style/components/drawer",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ],
          "animations": [
            {
              "name": "drawer.showTop",
              "description": "The animation to use when showing a drawer with `top` placement."
            },
            {
              "name": "drawer.showEnd",
              "description": "The animation to use when showing a drawer with `end` placement."
            },
            {
              "name": "drawer.showBottom",
              "description": "The animation to use when showing a drawer with `bottom` placement."
            },
            {
              "name": "drawer.showStart",
              "description": "The animation to use when showing a drawer with `start` placement."
            },
            {
              "name": "drawer.hideTop",
              "description": "The animation to use when hiding a drawer with `top` placement."
            },
            {
              "name": "drawer.hideEnd",
              "description": "The animation to use when hiding a drawer with `end` placement."
            },
            {
              "name": "drawer.hideBottom",
              "description": "The animation to use when hiding a drawer with `bottom` placement."
            },
            {
              "name": "drawer.hideStart",
              "description": "The animation to use when hiding a drawer with `start` placement."
            },
            {
              "name": "drawer.denyClose",
              "description": "The animation to use when a request to close the drawer is denied."
            },
            {
              "name": "drawer.overlay.show",
              "description": "The animation to use when showing the drawer's overlay."
            },
            {
              "name": "drawer.overlay.hide",
              "description": "The animation to use when hiding the drawer's overlay."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDrawer",
            "module": "components/drawer/drawer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/button/button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlButton",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the prefix.",
              "name": "prefix"
            },
            {
              "description": "The button's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the suffix.",
              "name": "suffix"
            },
            {
              "description": "The button's caret icon, an `<sl-icon>` element.",
              "name": "caret"
            },
            {
              "description": "The spinner that shows when the button is in the loading state.",
              "name": "spinner"
            }
          ],
          "slots": [
            {
              "description": "The button's label.",
              "name": ""
            },
            {
              "description": "A presentational prefix icon or similar element.",
              "name": "prefix"
            },
            {
              "description": "A presentational suffix icon or similar element.",
              "name": "suffix"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { assumeInteractionOn: ['click'] })"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'prefix', 'suffix')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "button",
              "type": {
                "text": "HTMLButtonElement | HTMLLinkElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "invalid",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'default' | 'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text'"
              },
              "default": "'default'",
              "description": "The button's theme variant.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The button's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "caret",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
              "attribute": "caret",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button in a loading state.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "outline",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an outlined button.",
              "attribute": "outline",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style button with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "circle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a circular icon button. When this attribute is present, the button expects a single `<sl-icon>` in the\ndefault slot.",
              "attribute": "circle",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'button' | 'submit' | 'reset'"
              },
              "default": "'button'",
              "description": "The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n`<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.",
              "attribute": "type"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\nThis attribute is ignored when `href` is present.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\nbutton is the submitter. This attribute is ignored when `href` is present.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top'"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute. Unlike regular links, the\ndefault is `noreferrer noopener` to prevent security exploits. However, if you're using `target` to point to a\nspecific tab/window, this will prevent that from working correctly. You can remove or change the default value by\nsetting the attribute to an empty string or a value of your choice, respectively.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "description": "The \"form owner\" to associate the button with. If omitted, the closest containing form will be used instead. The\nvalue of this attribute must be an id of a form in the same document or shadow root as the button.",
              "attribute": "form"
            },
            {
              "kind": "field",
              "name": "formAction",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `action` attribute.",
              "attribute": "formaction"
            },
            {
              "kind": "field",
              "name": "formEnctype",
              "type": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              },
              "description": "Used to override the form owner's `enctype` attribute.",
              "attribute": "formenctype"
            },
            {
              "kind": "field",
              "name": "formMethod",
              "type": {
                "text": "'post' | 'get'"
              },
              "description": "Used to override the form owner's `method` attribute.",
              "attribute": "formmethod"
            },
            {
              "kind": "field",
              "name": "formNoValidate",
              "type": {
                "text": "boolean"
              },
              "description": "Used to override the form owner's `novalidate` attribute.",
              "attribute": "formnovalidate"
            },
            {
              "kind": "field",
              "name": "formTarget",
              "type": {
                "text": "'_self' | '_blank' | '_parent' | '_top' | string"
              },
              "description": "Used to override the form owner's `target` attribute.",
              "attribute": "formtarget"
            },
            {
              "kind": "field",
              "name": "validity",
              "description": "Gets the validity state object",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "description": "Gets the validation message",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isButton",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isLink",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the button."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the button."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the button."
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "Gets the associated form, if one exists."
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a custom validation message. Pass an empty string to restore validity."
            }
          ],
          "events": [
            {
              "description": "Emitted when the button loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the button gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "variant",
              "type": {
                "text": "'default' | 'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text'"
              },
              "default": "'default'",
              "description": "The button's theme variant.",
              "fieldName": "variant"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The button's size.",
              "fieldName": "size"
            },
            {
              "name": "caret",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button with a caret. Used to indicate that the button triggers a dropdown menu or similar behavior.",
              "fieldName": "caret"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "fieldName": "disabled"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the button in a loading state.",
              "fieldName": "loading"
            },
            {
              "name": "outline",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws an outlined button.",
              "fieldName": "outline"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style button with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "circle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a circular icon button. When this attribute is present, the button expects a single `<sl-icon>` in the\ndefault slot.",
              "fieldName": "circle"
            },
            {
              "name": "type",
              "type": {
                "text": "'button' | 'submit' | 'reset'"
              },
              "default": "'button'",
              "description": "The type of button. Note that the default value is `button` instead of `submit`, which is opposite of how native\n`<button>` elements behave. When the type is `submit`, the button will submit the surrounding form.",
              "fieldName": "type"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the button, submitted as a name/value pair with form data, but only when this button is the submitter.\nThis attribute is ignored when `href` is present.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The value of the button, submitted as a pair with the button's name as part of the form data, but only when this\nbutton is the submitter. This attribute is ignored when `href` is present.",
              "fieldName": "value"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top'"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is present.",
              "fieldName": "target"
            },
            {
              "name": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "When using `href`, this attribute will map to the underlying link's `rel` attribute. Unlike regular links, the\ndefault is `noreferrer noopener` to prevent security exploits. However, if you're using `target` to point to a\nspecific tab/window, this will prevent that from working correctly. You can remove or change the default value by\nsetting the attribute to an empty string or a value of your choice, respectively.",
              "fieldName": "rel"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is present.",
              "fieldName": "download"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "description": "The \"form owner\" to associate the button with. If omitted, the closest containing form will be used instead. The\nvalue of this attribute must be an id of a form in the same document or shadow root as the button.",
              "fieldName": "form"
            },
            {
              "name": "formaction",
              "type": {
                "text": "string"
              },
              "description": "Used to override the form owner's `action` attribute.",
              "fieldName": "formAction"
            },
            {
              "name": "formenctype",
              "type": {
                "text": "'application/x-www-form-urlencoded' | 'multipart/form-data' | 'text/plain'"
              },
              "description": "Used to override the form owner's `enctype` attribute.",
              "fieldName": "formEnctype"
            },
            {
              "name": "formmethod",
              "type": {
                "text": "'post' | 'get'"
              },
              "description": "Used to override the form owner's `method` attribute.",
              "fieldName": "formMethod"
            },
            {
              "name": "formnovalidate",
              "type": {
                "text": "boolean"
              },
              "description": "Used to override the form owner's `novalidate` attribute.",
              "fieldName": "formNoValidate"
            },
            {
              "name": "formtarget",
              "type": {
                "text": "'_self' | '_blank' | '_parent' | '_top' | string"
              },
              "description": "Used to override the form owner's `target` attribute.",
              "fieldName": "formTarget"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Buttons represent actions that are available to the user.",
          "tagNameWithoutPrefix": "button",
          "tagName": "sl-button",
          "customElement": true,
          "jsDoc": "/**\n * @summary Buttons represent actions that are available to the user.\n * @documentation https://shoelace.style/components/button\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-spinner\n *\n * @event sl-blur - Emitted when the button loses focus.\n * @event sl-focus - Emitted when the button gains focus.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @slot - The button's label.\n * @slot prefix - A presentational prefix icon or similar element.\n * @slot suffix - A presentational suffix icon or similar element.\n *\n * @csspart base - The component's base wrapper.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The button's label.\n * @csspart suffix - The container that wraps the suffix.\n * @csspart caret - The button's caret icon, an `<sl-icon>` element.\n * @csspart spinner - The spinner that shows when the button is in the loading state.\n */",
          "documentation": "https://shoelace.style/components/button",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-spinner"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlButton",
            "module": "components/button/button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/card/card.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCard",
          "cssProperties": [
            {
              "description": "The card's border color, including borders that occur inside the card.",
              "name": "--border-color"
            },
            {
              "description": "The border radius for the card's edges.",
              "name": "--border-radius"
            },
            {
              "description": "The width of the card's borders.",
              "name": "--border-width"
            },
            {
              "description": "The padding to use for the card's sections.",
              "name": "--padding"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the card's image.",
              "name": "image"
            },
            {
              "description": "The container that wraps the card's header.",
              "name": "header"
            },
            {
              "description": "The container that wraps the card's main content.",
              "name": "body"
            },
            {
              "description": "The container that wraps the card's footer.",
              "name": "footer"
            }
          ],
          "slots": [
            {
              "description": "The card's main content.",
              "name": ""
            },
            {
              "description": "An optional header for the card.",
              "name": "header"
            },
            {
              "description": "An optional footer for the card.",
              "name": "footer"
            },
            {
              "description": "An optional image to render at the start of the card.",
              "name": "image"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'footer', 'header', 'image')"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Cards can be used to group related subjects in a container.",
          "tagNameWithoutPrefix": "card",
          "tagName": "sl-card",
          "customElement": true,
          "jsDoc": "/**\n * @summary Cards can be used to group related subjects in a container.\n * @documentation https://shoelace.style/components/card\n * @status stable\n * @since 2.0\n *\n * @slot - The card's main content.\n * @slot header - An optional header for the card.\n * @slot footer - An optional footer for the card.\n * @slot image - An optional image to render at the start of the card.\n *\n * @csspart base - The component's base wrapper.\n * @csspart image - The container that wraps the card's image.\n * @csspart header - The container that wraps the card's header.\n * @csspart body - The container that wraps the card's main content.\n * @csspart footer - The container that wraps the card's footer.\n *\n * @cssproperty --border-color - The card's border color, including borders that occur inside the card.\n * @cssproperty --border-radius - The border radius for the card's edges.\n * @cssproperty --border-width - The width of the card's borders.\n * @cssproperty --padding - The padding to use for the card's sections.\n */",
          "documentation": "https://shoelace.style/components/card",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCard",
            "module": "components/card/card.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/dropdown/dropdown.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDropdown",
          "cssParts": [
            {
              "description": "The component's base wrapper, an `<sl-popup>` element.",
              "name": "base"
            },
            {
              "description": "The popup's exported `popup` part. Use this to target the tooltip's popup container.",
              "name": "base__popup"
            },
            {
              "description": "The container that wraps the trigger.",
              "name": "trigger"
            },
            {
              "description": "The panel that gets shown when the dropdown is open.",
              "name": "panel"
            }
          ],
          "slots": [
            {
              "description": "The dropdown's main content.",
              "name": ""
            },
            {
              "description": "The dropdown's trigger, usually a `<sl-button>` element.",
              "name": "trigger"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-popup': SlPopup }"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'bottom-start'",
              "description": "The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown so the panel will not open.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "stayOpenOnSelect",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.",
              "attribute": "stay-open-on-select",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "containingElement",
              "type": {
                "text": "HTMLElement | undefined"
              },
              "description": "The dropdown will close when the user interacts outside of this element (e.g. clicking). Useful for composing other\ncomponents that use a dropdown internally."
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its trigger.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its trigger.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
              "attribute": "hoist"
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both' | undefined"
              },
              "default": "undefined",
              "description": "Syncs the popup width or height to that of the trigger element.",
              "attribute": "sync",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "focusOnTrigger"
            },
            {
              "kind": "method",
              "name": "getMenu"
            },
            {
              "kind": "field",
              "name": "handleKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePanelSelect",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTriggerClick"
            },
            {
              "kind": "method",
              "name": "handleTriggerKeyDown",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTriggerKeyUp",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTriggerSlotChange"
            },
            {
              "kind": "method",
              "name": "updateAccessibleTrigger"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the dropdown panel."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the dropdown panel"
            },
            {
              "kind": "method",
              "name": "reposition",
              "description": "Instructs the dropdown menu to reposition. Useful when the position or size of the trigger changes when the menu\nis activated."
            },
            {
              "kind": "method",
              "name": "addOpenListeners"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the dropdown opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the dropdown opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the dropdown closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the dropdown closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dropdown is open. You can toggle this attribute to show and hide the dropdown, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the dropdown's open state.",
              "fieldName": "open"
            },
            {
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'bottom-start'",
              "description": "The preferred placement of the dropdown panel. Note that the actual placement may vary as needed to keep the panel\ninside of the viewport.",
              "fieldName": "placement"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the dropdown so the panel will not open.",
              "fieldName": "disabled"
            },
            {
              "name": "stay-open-on-select",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, the dropdown is closed when an item is selected. This attribute will keep it open instead. Useful for\ndropdowns that allow for multiple interactions.",
              "fieldName": "stayOpenOnSelect"
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its trigger.",
              "fieldName": "distance"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its trigger.",
              "fieldName": "skidding"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the panel from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
              "fieldName": "hoist"
            },
            {
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both' | undefined"
              },
              "default": "undefined",
              "description": "Syncs the popup width or height to that of the trigger element.",
              "fieldName": "sync"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Dropdowns expose additional content that \"drops down\" in a panel.",
          "tagNameWithoutPrefix": "dropdown",
          "tagName": "sl-dropdown",
          "customElement": true,
          "jsDoc": "/**\n * @summary Dropdowns expose additional content that \"drops down\" in a panel.\n * @documentation https://shoelace.style/components/dropdown\n * @status stable\n * @since 2.0\n *\n * @dependency sl-popup\n *\n * @slot - The dropdown's main content.\n * @slot trigger - The dropdown's trigger, usually a `<sl-button>` element.\n *\n * @event sl-show - Emitted when the dropdown opens.\n * @event sl-after-show - Emitted after the dropdown opens and all animations are complete.\n * @event sl-hide - Emitted when the dropdown closes.\n * @event sl-after-hide - Emitted after the dropdown closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper, an `<sl-popup>` element.\n * @csspart base__popup - The popup's exported `popup` part. Use this to target the tooltip's popup container.\n * @csspart trigger - The container that wraps the trigger.\n * @csspart panel - The panel that gets shown when the dropdown is open.\n *\n * @animation dropdown.show - The animation to use when showing the dropdown.\n * @animation dropdown.hide - The animation to use when hiding the dropdown.\n */",
          "documentation": "https://shoelace.style/components/dropdown",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-popup"
          ],
          "animations": [
            {
              "name": "dropdown.show",
              "description": "The animation to use when showing the dropdown."
            },
            {
              "name": "dropdown.hide",
              "description": "The animation to use when hiding the dropdown."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDropdown",
            "module": "components/dropdown/dropdown.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/icon/icon.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlIcon",
          "cssParts": [
            {
              "description": "The internal SVG element.",
              "name": "svg"
            },
            {
              "description": "The <use> element generated when using `spriteSheet: true`",
              "name": "use"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "initialRender",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "resolveIcon",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<SVGResult>"
                }
              },
              "parameters": [
                {
                  "name": "url",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "library",
                  "optional": true,
                  "type": {
                    "text": "IconLibrary"
                  }
                }
              ],
              "description": "Given a URL, this function returns the resulting SVG element or an appropriate error symbol."
            },
            {
              "kind": "field",
              "name": "svg",
              "type": {
                "text": "SVGElement | HTMLTemplateResult | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of the icon to draw. Available names depend on the icon library being used.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "library",
              "type": {
                "text": "string"
              },
              "default": "'default'",
              "description": "The name of a registered custom icon library.",
              "attribute": "library",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getIconSource",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "IconSource"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleLabelChange"
            },
            {
              "kind": "method",
              "name": "setIcon"
            }
          ],
          "events": [
            {
              "description": "Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.",
              "name": "sl-load",
              "reactName": "onSlLoad",
              "eventName": "SlLoadEvent"
            },
            {
              "description": "Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of the icon to draw. Available names depend on the icon library being used.",
              "fieldName": "name"
            },
            {
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
              "fieldName": "src"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An alternate description to use for assistive devices. If omitted, the icon will be considered presentational and\nignored by assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "library",
              "type": {
                "text": "string"
              },
              "default": "'default'",
              "description": "The name of a registered custom icon library.",
              "fieldName": "library"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Icons are symbols that can be used to represent various options within an application.",
          "tagNameWithoutPrefix": "icon",
          "tagName": "sl-icon",
          "customElement": true,
          "jsDoc": "/**\n * @summary Icons are symbols that can be used to represent various options within an application.\n * @documentation https://shoelace.style/components/icon\n * @status stable\n * @since 2.0\n *\n * @event sl-load - Emitted when the icon has loaded. When using `spriteSheet: true` this will not emit.\n * @event sl-error - Emitted when the icon fails to load due to an error. When using `spriteSheet: true` this will not emit.\n *\n * @csspart svg - The internal SVG element.\n * @csspart use - The <use> element generated when using `spriteSheet: true`\n */",
          "documentation": "https://shoelace.style/components/icon",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlIcon",
            "module": "components/icon/icon.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/icon-button/icon-button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlIconButton",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "button",
              "type": {
                "text": "HTMLButtonElement | HTMLLinkElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of the icon to draw. Available names depend on the icon library being used.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "library",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of a registered custom icon library.",
              "attribute": "library"
            },
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is set.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A description that gets read by assistive devices. For optimal accessibility, you should always include a label\nthat describes what the icon button does.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the icon button."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the icon button."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the icon button."
            }
          ],
          "events": [
            {
              "description": "Emitted when the icon button loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the icon button gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of the icon to draw. Available names depend on the icon library being used.",
              "fieldName": "name"
            },
            {
              "name": "library",
              "type": {
                "text": "string | undefined"
              },
              "description": "The name of a registered custom icon library.",
              "fieldName": "library"
            },
            {
              "name": "src",
              "type": {
                "text": "string | undefined"
              },
              "description": "An external URL of an SVG file. Be sure you trust the content you are including, as it will be executed as code and\ncan result in XSS attacks.",
              "fieldName": "src"
            },
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "When set, the underlying button will be rendered as an `<a>` with this `href` instead of a `<button>`.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top' | undefined"
              },
              "description": "Tells the browser where to open the link. Only used when `href` is set.",
              "fieldName": "target"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "Tells the browser to download the linked file as this filename. Only used when `href` is set.",
              "fieldName": "download"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A description that gets read by assistive devices. For optimal accessibility, you should always include a label\nthat describes what the icon button does.",
              "fieldName": "label"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Icons buttons are simple, icon-only buttons that can be used for actions and in toolbars.",
          "tagNameWithoutPrefix": "icon-button",
          "tagName": "sl-icon-button",
          "customElement": true,
          "jsDoc": "/**\n * @summary Icons buttons are simple, icon-only buttons that can be used for actions and in toolbars.\n * @documentation https://shoelace.style/components/icon-button\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @event sl-blur - Emitted when the icon button loses focus.\n * @event sl-focus - Emitted when the icon button gains focus.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/icon-button",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlIconButton",
            "module": "components/icon-button/icon-button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/input/input.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlInput",
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and help text.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The input's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            },
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The internal `<input>` control.",
              "name": "input"
            },
            {
              "description": "The container that wraps the prefix.",
              "name": "prefix"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The password toggle button.",
              "name": "password-toggle-button"
            },
            {
              "description": "The container that wraps the suffix.",
              "name": "suffix"
            }
          ],
          "slots": [
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Used to prepend a presentational icon or similar element to the input.",
              "name": "prefix"
            },
            {
              "description": "Used to append a presentational icon or similar element to the input.",
              "name": "suffix"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "An icon to use in lieu of the default show password icon.",
              "name": "show-password-icon"
            },
            {
              "description": "An icon to use in lieu of the default hide password icon.",
              "name": "hide-password-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { assumeInteractionOn: ['sl-blur', 'sl-input'] })"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'help-text', 'label')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "__numberInput",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "__dateInput",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "| 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'number'\n    | 'password'\n    | 'search'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'"
              },
              "default": "'text'",
              "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the input, submitted as a name/value pair with form data.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The default value of the form control. Primarily used for resetting the form control."
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The input's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled input.",
              "attribute": "filled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's help text. If you need to display HTML, use the `help-text` slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "clearable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the input is not empty.",
              "attribute": "clearable"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the input.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "passwordToggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
              "attribute": "password-toggle"
            },
            {
              "kind": "field",
              "name": "passwordVisible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
              "attribute": "password-visible"
            },
            {
              "kind": "field",
              "name": "noSpinButtons",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
              "attribute": "no-spin-buttons"
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "description": "A regular expression pattern to validate input against.",
              "attribute": "pattern"
            },
            {
              "kind": "field",
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "attribute": "minlength"
            },
            {
              "kind": "field",
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "attribute": "maxlength"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "description": "The input's minimum value. Only applies to date and number input types.",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value. Only applies to date and number input types.",
              "attribute": "step"
            },
            {
              "kind": "field",
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "attribute": "autocapitalize"
            },
            {
              "kind": "field",
              "name": "autocorrect",
              "type": {
                "text": "'off' | 'on'"
              },
              "description": "Indicates whether the browser's autocorrect feature is on or off.",
              "attribute": "autocorrect"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint"
            },
            {
              "kind": "field",
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the input.",
              "attribute": "spellcheck"
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "attribute": "inputmode"
            },
            {
              "kind": "field",
              "name": "valueAsDate",
              "description": "Gets or sets the current value as a `Date` object. Returns `null` if the value can't be converted. This will use the native `<input type=\"{{type}}\">` implementation and may result in an error."
            },
            {
              "kind": "field",
              "name": "valueAsNumber",
              "description": "Gets or sets the current value as a number. Returns `NaN` if the value can't be converted."
            },
            {
              "kind": "field",
              "name": "validity",
              "description": "Gets the validity state object",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "description": "Gets the validation message",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePasswordToggle",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleStepChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the input."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the input."
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the input."
            },
            {
              "kind": "method",
              "name": "setSelectionRange",
              "parameters": [
                {
                  "name": "selectionStart",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionEnd",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionDirection",
                  "default": "'none'",
                  "type": {
                    "text": "'forward' | 'backward' | 'none'"
                  }
                }
              ],
              "description": "Sets the start and end positions of the text selection (0-based)."
            },
            {
              "kind": "method",
              "name": "setRangeText",
              "parameters": [
                {
                  "name": "replacement",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "start",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "end",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectMode",
                  "default": "'preserve'",
                  "type": {
                    "text": "'select' | 'start' | 'end' | 'preserve'"
                  }
                }
              ],
              "description": "Replaces a range of text with a new string."
            },
            {
              "kind": "method",
              "name": "showPicker",
              "description": "Displays the browser picker for an input element (only works if the browser supports it for the input type)."
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value of a numeric input type by the value of the step attribute."
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value of a numeric input type by the value of the step attribute."
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "Gets the associated form, if one exists."
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a custom validation message. Pass an empty string to restore validity."
            }
          ],
          "events": [
            {
              "description": "Emitted when the control loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the clear button is activated.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the control receives input.",
              "name": "sl-input",
              "reactName": "onSlInput",
              "eventName": "SlInputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "type",
              "type": {
                "text": "| 'date'\n    | 'datetime-local'\n    | 'email'\n    | 'number'\n    | 'password'\n    | 'search'\n    | 'tel'\n    | 'text'\n    | 'time'\n    | 'url'"
              },
              "default": "'text'",
              "description": "The type of input. Works the same as a native `<input>` element, but only a subset of types are supported. Defaults\nto `text`.",
              "fieldName": "type"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the input, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the input, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The input's size.",
              "fieldName": "size"
            },
            {
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled input.",
              "fieldName": "filled"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style input with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's help text. If you need to display HTML, use the `help-text` slot instead.",
              "fieldName": "helpText"
            },
            {
              "name": "clearable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the input is not empty.",
              "fieldName": "clearable"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the input.",
              "fieldName": "disabled"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "password-toggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a button to toggle the password's visibility. Only applies to password types.",
              "fieldName": "passwordToggle"
            },
            {
              "name": "password-visible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Determines whether or not the password is currently visible. Only applies to password input types.",
              "fieldName": "passwordVisible"
            },
            {
              "name": "no-spin-buttons",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the browser's built-in increment/decrement spin buttons for number inputs.",
              "fieldName": "noSpinButtons"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "fieldName": "form"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "fieldName": "required"
            },
            {
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "description": "A regular expression pattern to validate input against.",
              "fieldName": "pattern"
            },
            {
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "fieldName": "minlength"
            },
            {
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "fieldName": "maxlength"
            },
            {
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "description": "The input's minimum value. Only applies to date and number input types.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "description": "The input's maximum value. Only applies to date and number input types.",
              "fieldName": "max"
            },
            {
              "name": "step",
              "type": {
                "text": "number | 'any'"
              },
              "description": "Specifies the granularity that the value must adhere to, or the special value `any` which means no stepping is\nimplied, allowing any numeric value. Only applies to date and number input types.",
              "fieldName": "step"
            },
            {
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "fieldName": "autocapitalize"
            },
            {
              "name": "autocorrect",
              "type": {
                "text": "'off' | 'on'"
              },
              "description": "Indicates whether the browser's autocorrect feature is on or off.",
              "fieldName": "autocorrect"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "fieldName": "autocomplete"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "fieldName": "autofocus"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint"
            },
            {
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the input.",
              "fieldName": "spellcheck"
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "fieldName": "inputmode"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Inputs collect data from the user.",
          "tagNameWithoutPrefix": "input",
          "tagName": "sl-input",
          "customElement": true,
          "jsDoc": "/**\n * @summary Inputs collect data from the user.\n * @documentation https://shoelace.style/components/input\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the input.\n * @slot suffix - Used to append a presentational icon or similar element to the input.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot show-password-icon - An icon to use in lieu of the default show password icon.\n * @slot hide-password-icon - An icon to use in lieu of the default hide password icon.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event sl-blur - Emitted when the control loses focus.\n * @event sl-change - Emitted when an alteration to the control's value is committed by the user.\n * @event sl-clear - Emitted when the clear button is activated.\n * @event sl-focus - Emitted when the control gains focus.\n * @event sl-input - Emitted when the control receives input.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The input's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart base - The component's base wrapper.\n * @csspart input - The internal `<input>` control.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart clear-button - The clear button.\n * @csspart password-toggle-button - The password toggle button.\n * @csspart suffix - The container that wraps the suffix.\n */",
          "documentation": "https://shoelace.style/components/input",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlInput",
            "module": "components/input/input.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/menu/menu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlMenu",
          "slots": [
            {
              "description": "The menu's content, including menu items, menu labels, and dividers.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isMenuItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ item: SlMenuItem }"
              },
              "description": "Emitted when a menu item is selected.",
              "name": "sl-select",
              "reactName": "onSlSelect",
              "eventName": "SlSelectEvent"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Menus provide a list of options for the user to choose from.",
          "tagNameWithoutPrefix": "menu",
          "tagName": "sl-menu",
          "customElement": true,
          "jsDoc": "/**\n * @summary Menus provide a list of options for the user to choose from.\n * @documentation https://shoelace.style/components/menu\n * @status stable\n * @since 2.0\n *\n * @slot - The menu's content, including menu items, menu labels, and dividers.\n *\n * @event {{ item: SlMenuItem }} sl-select - Emitted when a menu item is selected.\n */",
          "documentation": "https://shoelace.style/components/menu",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlMenu",
            "module": "components/menu/menu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/menu-item/menu-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlMenuItem",
          "cssProperties": [
            {
              "description": "The distance submenus shift to overlap the parent menu.",
              "name": "--submenu-offset",
              "default": "-2px"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The checked icon, which is only visible when the menu item is checked.",
              "name": "checked-icon"
            },
            {
              "description": "The prefix container.",
              "name": "prefix"
            },
            {
              "description": "The menu item label.",
              "name": "label"
            },
            {
              "description": "The suffix container.",
              "name": "suffix"
            },
            {
              "description": "The spinner that shows when the menu item is in the loading state.",
              "name": "spinner"
            },
            {
              "description": "The spinner's base part.",
              "name": "spinner__base"
            },
            {
              "description": "The submenu icon, visible only when the menu item has a submenu (not yet implemented).",
              "name": "submenu-icon"
            }
          ],
          "slots": [
            {
              "description": "The menu item's label.",
              "name": ""
            },
            {
              "description": "Used to prepend an icon or similar element to the menu item.",
              "name": "prefix"
            },
            {
              "description": "Used to append an icon or similar element to the menu item.",
              "name": "suffix"
            },
            {
              "description": "Used to denote a nested menu.",
              "name": "submenu"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "cachedTextLabel",
              "type": {
                "text": "string"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "menuItem",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox'"
              },
              "default": "'normal'",
              "description": "The type of menu item to render. To use `checked`, this value must be set to `checkbox`.",
              "attribute": "type"
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the item in a checked state.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A unique value to store in the menu item. This can be used as a way to identify menu items when selected.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the menu item in a loading state.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the menu item in a disabled state, preventing selection.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'submenu')"
            },
            {
              "kind": "field",
              "name": "submenuController",
              "type": {
                "text": "SubmenuController"
              },
              "privacy": "private",
              "default": "new SubmenuController(this, this.hasSlotController)"
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleHostClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseOver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCheckedChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleTypeChange"
            },
            {
              "kind": "method",
              "name": "getTextLabel",
              "description": "Returns a text label based on the contents of the menu item's default slot."
            },
            {
              "kind": "method",
              "name": "isSubmenu"
            }
          ],
          "attributes": [
            {
              "name": "type",
              "type": {
                "text": "'normal' | 'checkbox'"
              },
              "default": "'normal'",
              "description": "The type of menu item to render. To use `checked`, this value must be set to `checkbox`.",
              "fieldName": "type"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the item in a checked state.",
              "fieldName": "checked"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A unique value to store in the menu item. This can be used as a way to identify menu items when selected.",
              "fieldName": "value"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the menu item in a loading state.",
              "fieldName": "loading"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the menu item in a disabled state, preventing selection.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Menu items provide options for the user to pick from in a menu.",
          "tagNameWithoutPrefix": "menu-item",
          "tagName": "sl-menu-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary Menu items provide options for the user to pick from in a menu.\n * @documentation https://shoelace.style/components/menu-item\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-popup\n * @dependency sl-spinner\n *\n * @slot - The menu item's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n * @slot submenu - Used to denote a nested menu.\n *\n * @csspart base - The component's base wrapper.\n * @csspart checked-icon - The checked icon, which is only visible when the menu item is checked.\n * @csspart prefix - The prefix container.\n * @csspart label - The menu item label.\n * @csspart suffix - The suffix container.\n * @csspart spinner - The spinner that shows when the menu item is in the loading state.\n * @csspart spinner__base - The spinner's base part.\n * @csspart submenu-icon - The submenu icon, visible only when the menu item has a submenu (not yet implemented).\n *\n * @cssproperty [--submenu-offset=-2px] - The distance submenus shift to overlap the parent menu.\n */",
          "documentation": "https://shoelace.style/components/menu-item",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-popup",
            "sl-spinner"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlMenuItem",
            "module": "components/menu-item/menu-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/menu-label/menu-label.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlMenuLabel",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The menu label's content.",
              "name": ""
            }
          ],
          "members": [],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Menu labels are used to describe a group of menu items.",
          "tagNameWithoutPrefix": "menu-label",
          "tagName": "sl-menu-label",
          "customElement": true,
          "jsDoc": "/**\n * @summary Menu labels are used to describe a group of menu items.\n * @documentation https://shoelace.style/components/menu-label\n * @status stable\n * @since 2.0\n *\n * @slot - The menu label's content.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/menu-label",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlMenuLabel",
            "module": "components/menu-label/menu-label.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/option/option.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlOption",
          "cssParts": [
            {
              "description": "The checked icon, an `<sl-icon>` element.",
              "name": "checked-icon"
            },
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The option's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the prefix.",
              "name": "prefix"
            },
            {
              "description": "The container that wraps the suffix.",
              "name": "suffix"
            }
          ],
          "slots": [
            {
              "description": "The option's label.",
              "name": ""
            },
            {
              "description": "Used to prepend an icon or similar element to the menu item.",
              "name": "prefix"
            },
            {
              "description": "Used to append an icon or similar element to the menu item.",
              "name": "suffix"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "current",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasHover",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the option in a disabled state, preventing selection.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMouseEnter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMouseLeave",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleSelectedChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "getTextLabel",
              "description": "Returns a plain text label based on the option's content."
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The option's value. When selected, the containing form control will receive this value. The value must be unique\nfrom other options in the same group. Values may not contain spaces, as spaces are used as delimiters when listing\nmultiple values.",
              "fieldName": "value"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the option in a disabled state, preventing selection.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Options define the selectable items within various form controls such as [select](/components/select).",
          "tagNameWithoutPrefix": "option",
          "tagName": "sl-option",
          "customElement": true,
          "jsDoc": "/**\n * @summary Options define the selectable items within various form controls such as [select](/components/select).\n * @documentation https://shoelace.style/components/option\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot - The option's label.\n * @slot prefix - Used to prepend an icon or similar element to the menu item.\n * @slot suffix - Used to append an icon or similar element to the menu item.\n *\n * @csspart checked-icon - The checked icon, an `<sl-icon>` element.\n * @csspart base - The component's base wrapper.\n * @csspart label - The option's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n */",
          "documentation": "https://shoelace.style/components/option",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlOption",
            "module": "components/option/option.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/popup/popup.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlPopup",
          "cssProperties": [
            {
              "description": "The size of the arrow. Note that an arrow won't be shown unless the `arrow` attribute is used.",
              "name": "--arrow-size",
              "default": "6px"
            },
            {
              "description": "The color of the arrow.",
              "name": "--arrow-color",
              "default": "var(--sl-color-neutral-0)"
            },
            {
              "description": "A read-only custom property that determines the amount of width the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`.",
              "name": "--auto-size-available-width"
            },
            {
              "description": "A read-only custom property that determines the amount of height the popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only available when using `auto-size`.",
              "name": "--auto-size-available-height"
            }
          ],
          "cssParts": [
            {
              "description": "The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and maybe a border or box shadow.",
              "name": "arrow"
            },
            {
              "description": "The popup's container. Useful for setting a background color, box shadow, etc.",
              "name": "popup"
            },
            {
              "description": "The hover bridge element. Only available when the `hover-bridge` option is enabled.",
              "name": "hover-bridge"
            }
          ],
          "slots": [
            {
              "description": "The popup's content.",
              "name": ""
            },
            {
              "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can use the `anchor` attribute or property instead.",
              "name": "anchor"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "anchorEl",
              "type": {
                "text": "Element | VirtualElement | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "cleanup",
              "type": {
                "text": "ReturnType<typeof autoUpdate> | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "HTMLElement"
              },
              "description": "A reference to the internal popup container. Useful for animating and styling the popup with JavaScript."
            },
            {
              "kind": "field",
              "name": "arrowEl",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "anchor",
              "type": {
                "text": "Element | string | VirtualElement"
              },
              "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
              "attribute": "anchor"
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'top'",
              "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "strategy",
              "type": {
                "text": "'absolute' | 'fixed'"
              },
              "default": "'absolute'",
              "description": "Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.",
              "attribute": "strategy",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its anchor.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its anchor.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
              "attribute": "arrow"
            },
            {
              "kind": "field",
              "name": "arrowPlacement",
              "type": {
                "text": "'start' | 'end' | 'center' | 'anchor'"
              },
              "default": "'anchor'",
              "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
              "attribute": "arrow-placement"
            },
            {
              "kind": "field",
              "name": "arrowPadding",
              "type": {
                "text": "number"
              },
              "default": "10",
              "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
              "attribute": "arrow-padding"
            },
            {
              "kind": "field",
              "name": "flip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
              "attribute": "flip"
            },
            {
              "kind": "field",
              "name": "flipFallbackPlacements",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
              "attribute": "flip-fallback-placements"
            },
            {
              "kind": "field",
              "name": "flipFallbackStrategy",
              "type": {
                "text": "'best-fit' | 'initial'"
              },
              "default": "'best-fit'",
              "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
              "attribute": "flip-fallback-strategy"
            },
            {
              "kind": "field",
              "name": "flipBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "attribute": "flipBoundary"
            },
            {
              "kind": "field",
              "name": "flipPadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
              "attribute": "flip-padding"
            },
            {
              "kind": "field",
              "name": "shift",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Moves the popup along the axis to keep it in view when clipped.",
              "attribute": "shift"
            },
            {
              "kind": "field",
              "name": "shiftBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "attribute": "shiftBoundary"
            },
            {
              "kind": "field",
              "name": "shiftPadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
              "attribute": "shift-padding"
            },
            {
              "kind": "field",
              "name": "autoSize",
              "type": {
                "text": "'horizontal' | 'vertical' | 'both'"
              },
              "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
              "attribute": "auto-size"
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "attribute": "sync"
            },
            {
              "kind": "field",
              "name": "autoSizeBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "attribute": "autoSizeBoundary"
            },
            {
              "kind": "field",
              "name": "autoSizePadding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
              "attribute": "auto-size-padding"
            },
            {
              "kind": "field",
              "name": "hoverBridge",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
              "attribute": "hover-bridge"
            },
            {
              "kind": "method",
              "name": "handleAnchorChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "start",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stop",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Promise<void>"
                }
              }
            },
            {
              "kind": "method",
              "name": "reposition",
              "description": "Forces the popup to recalculate and reposition itself."
            },
            {
              "kind": "field",
              "name": "updateHoverBridge",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive operations in your listener or consider debouncing it.",
              "name": "sl-reposition",
              "reactName": "onSlReposition",
              "eventName": "SlRepositionEvent"
            }
          ],
          "attributes": [
            {
              "name": "anchor",
              "type": {
                "text": "Element | string | VirtualElement"
              },
              "description": "The element the popup will be anchored to. If the anchor lives outside of the popup, you can provide the anchor\nelement `id`, a DOM element reference, or a `VirtualElement`. If the anchor lives inside the popup, use the\n`anchor` slot instead.",
              "fieldName": "anchor"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Activates the positioning logic and shows the popup. When this attribute is removed, the positioning logic is torn\ndown and the popup will be hidden.",
              "fieldName": "active"
            },
            {
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'top'",
              "description": "The preferred placement of the popup. Note that the actual placement will vary as configured to keep the\npanel inside of the viewport.",
              "fieldName": "placement"
            },
            {
              "name": "strategy",
              "type": {
                "text": "'absolute' | 'fixed'"
              },
              "default": "'absolute'",
              "description": "Determines how the popup is positioned. The `absolute` strategy works well in most cases, but if overflow is\nclipped, using a `fixed` position strategy can often workaround it.",
              "fieldName": "strategy"
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel away from its anchor.",
              "fieldName": "distance"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the panel along its anchor.",
              "fieldName": "skidding"
            },
            {
              "name": "arrow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Attaches an arrow to the popup. The arrow's size and color can be customized using the `--arrow-size` and\n`--arrow-color` custom properties. For additional customizations, you can also target the arrow using\n`::part(arrow)` in your stylesheet.",
              "fieldName": "arrow"
            },
            {
              "name": "arrow-placement",
              "type": {
                "text": "'start' | 'end' | 'center' | 'anchor'"
              },
              "default": "'anchor'",
              "description": "The placement of the arrow. The default is `anchor`, which will align the arrow as close to the center of the\nanchor as possible, considering available space and `arrow-padding`. A value of `start`, `end`, or `center` will\nalign the arrow to the start, end, or center of the popover instead.",
              "fieldName": "arrowPlacement"
            },
            {
              "name": "arrow-padding",
              "type": {
                "text": "number"
              },
              "default": "10",
              "description": "The amount of padding between the arrow and the edges of the popup. If the popup has a border-radius, for example,\nthis will prevent it from overflowing the corners.",
              "fieldName": "arrowPadding"
            },
            {
              "name": "flip",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, placement of the popup will flip to the opposite site to keep it in view. You can use\n`flipFallbackPlacements` to further configure how the fallback placement is determined.",
              "fieldName": "flip"
            },
            {
              "name": "flip-fallback-placements",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "If the preferred placement doesn't fit, popup will be tested in these fallback placements until one fits. Must be a\nstring of any number of placements separated by a space, e.g. \"top bottom left\". If no placement fits, the flip\nfallback strategy will be used instead.",
              "fieldName": "flipFallbackPlacements"
            },
            {
              "name": "flip-fallback-strategy",
              "type": {
                "text": "'best-fit' | 'initial'"
              },
              "default": "'best-fit'",
              "description": "When neither the preferred placement nor the fallback placements fit, this value will be used to determine whether\nthe popup should be positioned using the best available fit based on available space or as it was initially\npreferred.",
              "fieldName": "flipFallbackStrategy"
            },
            {
              "name": "flipBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The flip boundary describes clipping element(s) that overflow will be checked relative to when flipping. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "fieldName": "flipBoundary"
            },
            {
              "name": "flip-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the flip behavior will occur.",
              "fieldName": "flipPadding"
            },
            {
              "name": "shift",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Moves the popup along the axis to keep it in view when clipped.",
              "fieldName": "shift"
            },
            {
              "name": "shiftBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The shift boundary describes clipping element(s) that overflow will be checked relative to when shifting. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "fieldName": "shiftBoundary"
            },
            {
              "name": "shift-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the shift behavior will occur.",
              "fieldName": "shiftPadding"
            },
            {
              "name": "auto-size",
              "type": {
                "text": "'horizontal' | 'vertical' | 'both'"
              },
              "description": "When set, this will cause the popup to automatically resize itself to prevent it from overflowing.",
              "fieldName": "autoSize"
            },
            {
              "name": "sync",
              "type": {
                "text": "'width' | 'height' | 'both'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element.",
              "fieldName": "sync"
            },
            {
              "name": "autoSizeBoundary",
              "type": {
                "text": "Element | Element[]"
              },
              "description": "The auto-size boundary describes clipping element(s) that overflow will be checked relative to when resizing. By\ndefault, the boundary includes overflow ancestors that will cause the element to be clipped. If needed, you can\nchange the boundary by passing a reference to one or more elements to this property.",
              "fieldName": "autoSizeBoundary"
            },
            {
              "name": "auto-size-padding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The amount of padding, in pixels, to exceed before the auto-size behavior will occur.",
              "fieldName": "autoSizePadding"
            },
            {
              "name": "hover-bridge",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When a gap exists between the anchor and the popup element, this option will add a \"hover bridge\" that fills the\ngap using an invisible element. This makes listening for events such as `mouseenter` and `mouseleave` more sane\nbecause the pointer never technically leaves the element. The hover bridge will only be drawn when the popover is\nactive.",
              "fieldName": "hoverBridge"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.",
          "tagNameWithoutPrefix": "popup",
          "tagName": "sl-popup",
          "customElement": true,
          "jsDoc": "/**\n * @summary Popup is a utility that lets you declaratively anchor \"popup\" containers to another element.\n * @documentation https://shoelace.style/components/popup\n * @status stable\n * @since 2.0\n *\n * @event sl-reposition - Emitted when the popup is repositioned. This event can fire a lot, so avoid putting expensive\n *  operations in your listener or consider debouncing it.\n *\n * @slot - The popup's content.\n * @slot anchor - The element the popup will be anchored to. If the anchor lives outside of the popup, you can use the\n *  `anchor` attribute or property instead.\n *\n * @csspart arrow - The arrow's container. Avoid setting `top|bottom|left|right` properties, as these values are\n *  assigned dynamically as the popup moves. This is most useful for applying a background color to match the popup, and\n *  maybe a border or box shadow.\n * @csspart popup - The popup's container. Useful for setting a background color, box shadow, etc.\n * @csspart hover-bridge - The hover bridge element. Only available when the `hover-bridge` option is enabled.\n *\n * @cssproperty [--arrow-size=6px] - The size of the arrow. Note that an arrow won't be shown unless the `arrow`\n *  attribute is used.\n * @cssproperty [--arrow-color=var(--sl-color-neutral-0)] - The color of the arrow.\n * @cssproperty [--auto-size-available-width] - A read-only custom property that determines the amount of width the\n *  popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n *  available when using `auto-size`.\n * @cssproperty [--auto-size-available-height] - A read-only custom property that determines the amount of height the\n *  popup can be before overflowing. Useful for positioning child elements that need to overflow. This property is only\n *  available when using `auto-size`.\n */",
          "documentation": "https://shoelace.style/components/popup",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlPopup",
            "module": "components/popup/popup.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/qr-code/qr-code.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlQrCode",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "canvas",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The QR code's value.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The label for assistive devices to announce. If unspecified, the value will be used instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "number"
              },
              "default": "128",
              "description": "The size of the QR code, in pixels.",
              "attribute": "size"
            },
            {
              "kind": "field",
              "name": "fill",
              "type": {
                "text": "string"
              },
              "default": "'black'",
              "description": "The fill color. This can be any valid CSS color, but not a CSS custom property.",
              "attribute": "fill"
            },
            {
              "kind": "field",
              "name": "background",
              "type": {
                "text": "string"
              },
              "default": "'white'",
              "description": "The background color. This can be any valid CSS color or `transparent`. It cannot be a CSS custom property.",
              "attribute": "background"
            },
            {
              "kind": "field",
              "name": "radius",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The edge radius of each module. Must be between 0 and 0.5.",
              "attribute": "radius"
            },
            {
              "kind": "field",
              "name": "errorCorrection",
              "type": {
                "text": "'L' | 'M' | 'Q' | 'H'"
              },
              "default": "'H'",
              "description": "The level of error correction to use. [Learn more](https://www.qrcode.com/en/about/error_correction.html)",
              "attribute": "error-correction"
            },
            {
              "kind": "method",
              "name": "generate"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The QR code's value.",
              "fieldName": "value"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The label for assistive devices to announce. If unspecified, the value will be used instead.",
              "fieldName": "label"
            },
            {
              "name": "size",
              "type": {
                "text": "number"
              },
              "default": "128",
              "description": "The size of the QR code, in pixels.",
              "fieldName": "size"
            },
            {
              "name": "fill",
              "type": {
                "text": "string"
              },
              "default": "'black'",
              "description": "The fill color. This can be any valid CSS color, but not a CSS custom property.",
              "fieldName": "fill"
            },
            {
              "name": "background",
              "type": {
                "text": "string"
              },
              "default": "'white'",
              "description": "The background color. This can be any valid CSS color or `transparent`. It cannot be a CSS custom property.",
              "fieldName": "background"
            },
            {
              "name": "radius",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The edge radius of each module. Must be between 0 and 0.5.",
              "fieldName": "radius"
            },
            {
              "name": "error-correction",
              "type": {
                "text": "'L' | 'M' | 'Q' | 'H'"
              },
              "default": "'H'",
              "description": "The level of error correction to use. [Learn more](https://www.qrcode.com/en/about/error_correction.html)",
              "fieldName": "errorCorrection"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Generates a [QR code](https://www.qrcode.com/) and renders it using the [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API).",
          "tagNameWithoutPrefix": "qr-code",
          "tagName": "sl-qr-code",
          "customElement": true,
          "jsDoc": "/**\n * @summary Generates a [QR code](https://www.qrcode.com/) and renders it using the [Canvas API](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API).\n * @documentation https://shoelace.style/components/qr-code\n * @status stable\n * @since 2.0\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/qr-code",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlQrCode",
            "module": "components/qr-code/qr-code.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/resize-observer/resize-observer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlResizeObserver",
          "slots": [
            {
              "description": "One or more elements to watch for resizing.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "observedElements",
              "type": {
                "text": "HTMLElement[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "startObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ entries: ResizeObserverEntry[] }"
              },
              "description": "Emitted when the element is resized.",
              "name": "sl-resize",
              "reactName": "onSlResize",
              "eventName": "SlResizeEvent"
            }
          ],
          "attributes": [
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).",
          "tagNameWithoutPrefix": "resize-observer",
          "tagName": "sl-resize-observer",
          "customElement": true,
          "jsDoc": "/**\n * @summary The Resize Observer component offers a thin, declarative interface to the [`ResizeObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver).\n * @documentation https://shoelace.style/components/resize-observer\n * @status stable\n * @since 2.0\n *\n * @slot - One or more elements to watch for resizing.\n *\n * @event {{ entries: ResizeObserverEntry[] }} sl-resize - Emitted when the element is resized.\n */",
          "documentation": "https://shoelace.style/components/resize-observer",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlResizeObserver",
            "module": "components/resize-observer/resize-observer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/select/select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSelect",
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and help text.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The select's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            },
            {
              "description": "The container the wraps the prefix, suffix, combobox, clear icon, and expand button.",
              "name": "combobox"
            },
            {
              "description": "The container that wraps the prefix slot.",
              "name": "prefix"
            },
            {
              "description": "The container that wraps the suffix slot.",
              "name": "suffix"
            },
            {
              "description": "The element that displays the selected option's label, an `<input>` element.",
              "name": "display-input"
            },
            {
              "description": "The listbox container where options are slotted.",
              "name": "listbox"
            },
            {
              "description": "The container that houses option tags when `multiselect` is used.",
              "name": "tags"
            },
            {
              "description": "The individual tags that represent each multiselect option.",
              "name": "tag"
            },
            {
              "description": "The tag's base part.",
              "name": "tag__base"
            },
            {
              "description": "The tag's content part.",
              "name": "tag__content"
            },
            {
              "description": "The tag's remove button.",
              "name": "tag__remove-button"
            },
            {
              "description": "The tag's remove button base part.",
              "name": "tag__remove-button__base"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the expand icon.",
              "name": "expand-icon"
            }
          ],
          "slots": [
            {
              "description": "The listbox options. Must be `<sl-option>` elements. You can use `<sl-divider>` to group items visually.",
              "name": ""
            },
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Used to prepend a presentational icon or similar element to the combobox.",
              "name": "prefix"
            },
            {
              "description": "Used to append a presentational icon or similar element to the combobox.",
              "name": "suffix"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "The icon to show when the control is expanded and collapsed. Rotates on open and close.",
              "name": "expand-icon"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup, 'sl-tag': SlTag }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { assumeInteractionOn: ['sl-blur', 'sl-input'] })"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'help-text', 'label')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "typeToSelectString",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "typeToSelectTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "combobox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "displayInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "listbox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "displayLabel",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "currentOption",
              "type": {
                "text": "SlOption"
              }
            },
            {
              "kind": "field",
              "name": "selectedOptions",
              "type": {
                "text": "SlOption[]"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "_value",
              "type": {
                "text": "string | string[]"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "value",
              "description": "The current value of the select, submitted as a name/value pair with form data. When `multiple` is enabled, the\nvalue attribute will be a space-delimited list of values based on the options selected, and the value property will\nbe an array. **For this reason, values must not contain spaces.**"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string | string[]"
              },
              "default": "''",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The select's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "maxOptionsVisible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
              "attribute": "max-options-visible"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the select control.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "clearable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "attribute": "clearable"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
              "attribute": "hoist"
            },
            {
              "kind": "field",
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled select.",
              "attribute": "filled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's help text. If you need to display HTML, use the `help-text` slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "getTag",
              "type": {
                "text": "(option: SlOption, index: number) => TemplateResult | string | HTMLElement"
              },
              "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index.  The function should return either a Lit TemplateResult or a string containing trusted HTML of the symbol to render at\nthe specified value.",
              "attribute": "getTag"
            },
            {
              "kind": "field",
              "name": "validity",
              "description": "Gets the validity state object",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "description": "Gets the validation message",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentFocusIn",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleComboboxKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOptionClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDefaultSlotChange",
              "privacy": "public"
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "SlRemoveEvent"
                  }
                },
                {
                  "name": "option",
                  "type": {
                    "text": "SlOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllOptions",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getFirstOption",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setCurrentOption",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "SlOption | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setSelectedOptions",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "SlOption | SlOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toggleOptionSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "SlOption"
                  }
                },
                {
                  "name": "force",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectionChanged",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "tags",
              "privacy": "protected",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the listbox."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the listbox."
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "Gets the associated form, if one exists."
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a custom validation message. Pass an empty string to restore validity."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the control."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the control."
            }
          ],
          "events": [
            {
              "description": "Emitted when the control's value changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the control's value is cleared.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            },
            {
              "description": "Emitted when the control receives input.",
              "name": "sl-input",
              "reactName": "onSlInput",
              "eventName": "SlInputEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the control loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the select's menu opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the select's menu opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the select's menu closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the select's menu closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the select, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string | string[]"
              },
              "default": "''",
              "description": "The default value of the form control. Primarily used for resetting the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The select's size.",
              "fieldName": "size"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the select is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows more than one option to be selected.",
              "fieldName": "multiple"
            },
            {
              "name": "max-options-visible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "description": "The maximum number of selected options to show when `multiple` is true. After the maximum, \"+n\" will be shown to\nindicate the number of additional items that are selected. Set to 0 to remove the limit.",
              "fieldName": "maxOptionsVisible"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the select control.",
              "fieldName": "disabled"
            },
            {
              "name": "clearable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the select is not empty.",
              "fieldName": "clearable"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the select is open. You can toggle this attribute to show and hide the menu, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the select's open state.",
              "fieldName": "open"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the listbox from being clipped when the component is placed inside a container with\n`overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.",
              "fieldName": "hoist"
            },
            {
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled select.",
              "fieldName": "filled"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style select with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom'"
              },
              "default": "'bottom'",
              "description": "The preferred placement of the select's menu. Note that the actual placement may vary as needed to keep the listbox\ninside of the viewport.",
              "fieldName": "placement"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The select's help text. If you need to display HTML, use the `help-text` slot instead.",
              "fieldName": "helpText"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "fieldName": "form"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The select's required attribute.",
              "fieldName": "required"
            },
            {
              "name": "getTag",
              "type": {
                "text": "(option: SlOption, index: number) => TemplateResult | string | HTMLElement"
              },
              "description": "A function that customizes the tags to be rendered when multiple=true. The first argument is the option, the second\nis the current tag's index.  The function should return either a Lit TemplateResult or a string containing trusted HTML of the symbol to render at\nthe specified value.",
              "fieldName": "getTag"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Selects allow you to choose items from a menu of predefined options.",
          "tagNameWithoutPrefix": "select",
          "tagName": "sl-select",
          "customElement": true,
          "jsDoc": "/**\n * @summary Selects allow you to choose items from a menu of predefined options.\n * @documentation https://shoelace.style/components/select\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-popup\n * @dependency sl-tag\n *\n * @slot - The listbox options. Must be `<sl-option>` elements. You can use `<sl-divider>` to group items visually.\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - Used to prepend a presentational icon or similar element to the combobox.\n * @slot suffix - Used to append a presentational icon or similar element to the combobox.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot expand-icon - The icon to show when the control is expanded and collapsed. Rotates on open and close.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event sl-change - Emitted when the control's value changes.\n * @event sl-clear - Emitted when the control's value is cleared.\n * @event sl-input - Emitted when the control receives input.\n * @event sl-focus - Emitted when the control gains focus.\n * @event sl-blur - Emitted when the control loses focus.\n * @event sl-show - Emitted when the select's menu opens.\n * @event sl-after-show - Emitted after the select's menu opens and all animations are complete.\n * @event sl-hide - Emitted when the select's menu closes.\n * @event sl-after-hide - Emitted after the select's menu closes and all animations are complete.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The select's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container the wraps the prefix, suffix, combobox, clear icon, and expand button.\n * @csspart prefix - The container that wraps the prefix slot.\n * @csspart suffix - The container that wraps the suffix slot.\n * @csspart display-input - The element that displays the selected option's label, an `<input>` element.\n * @csspart listbox - The listbox container where options are slotted.\n * @csspart tags - The container that houses option tags when `multiselect` is used.\n * @csspart tag - The individual tags that represent each multiselect option.\n * @csspart tag__base - The tag's base part.\n * @csspart tag__content - The tag's content part.\n * @csspart tag__remove-button - The tag's remove button.\n * @csspart tag__remove-button__base - The tag's remove button base part.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n */",
          "documentation": "https://shoelace.style/components/select",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-popup",
            "sl-tag"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSelect",
            "module": "components/select/select.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/spinner/spinner.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSpinner",
          "cssProperties": [
            {
              "description": "The width of the track.",
              "name": "--track-width"
            },
            {
              "description": "The color of the track.",
              "name": "--track-color"
            },
            {
              "description": "The color of the spinner's indicator.",
              "name": "--indicator-color"
            },
            {
              "description": "The time it takes for the spinner to complete one animation cycle.",
              "name": "--speed"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Spinners are used to show the progress of an indeterminate operation.",
          "tagNameWithoutPrefix": "spinner",
          "tagName": "sl-spinner",
          "customElement": true,
          "jsDoc": "/**\n * @summary Spinners are used to show the progress of an indeterminate operation.\n * @documentation https://shoelace.style/components/spinner\n * @status stable\n * @since 2.0\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --track-width - The width of the track.\n * @cssproperty --track-color - The color of the track.\n * @cssproperty --indicator-color - The color of the spinner's indicator.\n * @cssproperty --speed - The time it takes for the spinner to complete one animation cycle.\n */",
          "documentation": "https://shoelace.style/components/spinner",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSpinner",
            "module": "components/spinner/spinner.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab/tab.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTab",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The close button, an `<sl-icon-button>`.",
              "name": "close-button"
            },
            {
              "description": "The close button's exported `base` part.",
              "name": "close-button__base"
            }
          ],
          "slots": [
            {
              "description": "The tab's label.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "attrId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true,
              "default": "++id"
            },
            {
              "kind": "field",
              "name": "componentId",
              "privacy": "private",
              "readonly": true,
              "default": "`sl-tab-${this.attrId}`"
            },
            {
              "kind": "field",
              "name": "tab",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "panel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
              "attribute": "panel",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tab in an active state.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tab closable and shows a close button.",
              "attribute": "closable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tab and prevents selection.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleCloseClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleActiveChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the tab is closable and the close button is activated.",
              "name": "sl-close",
              "reactName": "onSlClose",
              "eventName": "SlCloseEvent"
            }
          ],
          "attributes": [
            {
              "name": "panel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the tab panel this tab is associated with. The panel must be located in the same tab group.",
              "fieldName": "panel"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tab in an active state.",
              "fieldName": "active"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tab closable and shows a close button.",
              "fieldName": "closable"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tab and prevents selection.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Tabs are used inside [tab groups](/components/tab-group) to represent and activate [tab panels](/components/tab-panel).",
          "tagNameWithoutPrefix": "tab",
          "tagName": "sl-tab",
          "customElement": true,
          "jsDoc": "/**\n * @summary Tabs are used inside [tab groups](/components/tab-group) to represent and activate [tab panels](/components/tab-panel).\n * @documentation https://shoelace.style/components/tab\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - The tab's label.\n *\n * @event sl-close - Emitted when the tab is closable and the close button is activated.\n *\n * @csspart base - The component's base wrapper.\n * @csspart close-button - The close button, an `<sl-icon-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n */",
          "documentation": "https://shoelace.style/components/tab",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTab",
            "module": "components/tab/tab.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab-group/tab-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTabGroup",
          "cssProperties": [
            {
              "description": "The color of the active tab indicator.",
              "name": "--indicator-color"
            },
            {
              "description": "The color of the indicator's track (the line that separates tabs from panels).",
              "name": "--track-color"
            },
            {
              "description": "The width of the indicator's track (the line that separates tabs from panels).",
              "name": "--track-width"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The tab group's navigation container where tabs are slotted in.",
              "name": "nav"
            },
            {
              "description": "The container that wraps the tabs.",
              "name": "tabs"
            },
            {
              "description": "The line that highlights the currently selected tab.",
              "name": "active-tab-indicator"
            },
            {
              "description": "The tab group's body where tab panels are slotted in.",
              "name": "body"
            },
            {
              "description": "The previous/next scroll buttons that show when tabs are scrollable, an `<sl-icon-button>`.",
              "name": "scroll-button"
            },
            {
              "description": "The starting scroll button.",
              "name": "scroll-button--start"
            },
            {
              "description": "The ending scroll button.",
              "name": "scroll-button--end"
            },
            {
              "description": "The scroll button's exported `base` part.",
              "name": "scroll-button__base"
            }
          ],
          "slots": [
            {
              "description": "Used for grouping tab panels in the tab group. Must be `<sl-tab-panel>` elements.",
              "name": ""
            },
            {
              "description": "Used for grouping tabs in the tab group. Must be `<sl-tab>` elements.",
              "name": "nav"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton, 'sl-resize-observer': SlResizeObserver }"
            },
            {
              "kind": "field",
              "name": "activeTab",
              "type": {
                "text": "SlTab | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "tabs",
              "type": {
                "text": "SlTab[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "focusableTabs",
              "type": {
                "text": "SlTab[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "panels",
              "type": {
                "text": "SlTabPanel[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "tabGroup",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "nav",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "indicator",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hasScrollControls",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "shouldHideScrollStartButton",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "shouldHideScrollEndButton",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom' | 'start' | 'end'"
              },
              "default": "'top'",
              "description": "The placement of the tabs.",
              "attribute": "placement"
            },
            {
              "kind": "field",
              "name": "activation",
              "type": {
                "text": "'auto' | 'manual'"
              },
              "default": "'auto'",
              "description": "When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\nmanual, the tab will receive focus but will not show until the user presses spacebar or enter.",
              "attribute": "activation"
            },
            {
              "kind": "field",
              "name": "noScrollControls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the scroll arrows that appear when tabs overflow.",
              "attribute": "no-scroll-controls"
            },
            {
              "kind": "field",
              "name": "fixedScrollControls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Prevent scroll buttons from being hidden when inactive.",
              "attribute": "fixed-scroll-controls"
            },
            {
              "kind": "method",
              "name": "getAllTabs",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getAllPanels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getActiveTab",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleScrollToStart",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleScrollToEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setActiveTab",
              "privacy": "private",
              "parameters": [
                {
                  "name": "tab",
                  "type": {
                    "text": "SlTab"
                  }
                },
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "{ emitEvents?: boolean; scrollBehavior?: 'auto' | 'smooth' }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setAriaLabels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "repositionIndicator",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncTabsAndPanels",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "findNextFocusableTab",
              "privacy": "private",
              "parameters": [
                {
                  "name": "currentIndex",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "'forward' | 'backward'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "scrollOffset",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "1",
              "description": "The reality of the browser means that we can't expect the scroll position to be exactly what we want it to be, so\nwe add one pixel of wiggle room to our calculations."
            },
            {
              "kind": "method",
              "name": "updateScrollButtons",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isScrolledToEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "scrollFromStart",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateScrollControls"
            },
            {
              "kind": "method",
              "name": "syncIndicator"
            },
            {
              "kind": "method",
              "name": "show",
              "parameters": [
                {
                  "name": "panel",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Shows the specified tab panel."
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ name: String }"
              },
              "description": "Emitted when a tab is shown.",
              "name": "sl-tab-show",
              "reactName": "onSlTabShow",
              "eventName": "SlTabShowEvent"
            },
            {
              "type": {
                "text": "{ name: String }"
              },
              "description": "Emitted when a tab is hidden.",
              "name": "sl-tab-hide",
              "reactName": "onSlTabHide",
              "eventName": "SlTabHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'bottom' | 'start' | 'end'"
              },
              "default": "'top'",
              "description": "The placement of the tabs.",
              "fieldName": "placement"
            },
            {
              "name": "activation",
              "type": {
                "text": "'auto' | 'manual'"
              },
              "default": "'auto'",
              "description": "When set to auto, navigating tabs with the arrow keys will instantly show the corresponding tab panel. When set to\nmanual, the tab will receive focus but will not show until the user presses spacebar or enter.",
              "fieldName": "activation"
            },
            {
              "name": "no-scroll-controls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the scroll arrows that appear when tabs overflow.",
              "fieldName": "noScrollControls"
            },
            {
              "name": "fixed-scroll-controls",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Prevent scroll buttons from being hidden when inactive.",
              "fieldName": "fixedScrollControls"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Tab groups organize content into a container that shows one section at a time.",
          "tagNameWithoutPrefix": "tab-group",
          "tagName": "sl-tab-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary Tab groups organize content into a container that shows one section at a time.\n * @documentation https://shoelace.style/components/tab-group\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - Used for grouping tab panels in the tab group. Must be `<sl-tab-panel>` elements.\n * @slot nav - Used for grouping tabs in the tab group. Must be `<sl-tab>` elements.\n *\n * @event {{ name: String }} sl-tab-show - Emitted when a tab is shown.\n * @event {{ name: String }} sl-tab-hide - Emitted when a tab is hidden.\n *\n * @csspart base - The component's base wrapper.\n * @csspart nav - The tab group's navigation container where tabs are slotted in.\n * @csspart tabs - The container that wraps the tabs.\n * @csspart active-tab-indicator - The line that highlights the currently selected tab.\n * @csspart body - The tab group's body where tab panels are slotted in.\n * @csspart scroll-button - The previous/next scroll buttons that show when tabs are scrollable, an `<sl-icon-button>`.\n * @csspart scroll-button--start - The starting scroll button.\n * @csspart scroll-button--end - The ending scroll button.\n * @csspart scroll-button__base - The scroll button's exported `base` part.\n *\n * @cssproperty --indicator-color - The color of the active tab indicator.\n * @cssproperty --track-color - The color of the indicator's track (the line that separates tabs from panels).\n * @cssproperty --track-width - The width of the indicator's track (the line that separates tabs from panels).\n */",
          "documentation": "https://shoelace.style/components/tab-group",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTabGroup",
            "module": "components/tab-group/tab-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tab-panel/tab-panel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTabPanel",
          "cssProperties": [
            {
              "description": "The tab panel's padding.",
              "name": "--padding"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The tab panel's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "attrId",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "readonly": true,
              "default": "++id"
            },
            {
              "kind": "field",
              "name": "componentId",
              "privacy": "private",
              "readonly": true,
              "default": "`sl-tab-panel-${this.attrId}`"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tab panel's name.",
              "attribute": "name",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the tab panel will be shown.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleActiveChange"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tab panel's name.",
              "fieldName": "name"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the tab panel will be shown.",
              "fieldName": "active"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Tab panels are used inside [tab groups](/components/tab-group) to display tabbed content.",
          "tagNameWithoutPrefix": "tab-panel",
          "tagName": "sl-tab-panel",
          "customElement": true,
          "jsDoc": "/**\n * @summary Tab panels are used inside [tab groups](/components/tab-group) to display tabbed content.\n * @documentation https://shoelace.style/components/tab-panel\n * @status stable\n * @since 2.0\n *\n * @slot - The tab panel's content.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --padding - The tab panel's padding.\n */",
          "documentation": "https://shoelace.style/components/tab-panel",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTabPanel",
            "module": "components/tab-panel/tab-panel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tag/tag.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTag",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The tag's content.",
              "name": "content"
            },
            {
              "description": "The tag's remove button, an `<sl-icon-button>`.",
              "name": "remove-button"
            },
            {
              "description": "The remove button's exported `base` part.",
              "name": "remove-button__base"
            }
          ],
          "slots": [
            {
              "description": "The tag's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text'"
              },
              "default": "'neutral'",
              "description": "The tag's theme variant.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The tag's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style tag with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "removable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag removable and shows a remove button.",
              "attribute": "removable"
            },
            {
              "kind": "method",
              "name": "handleRemoveClick",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "Emitted when the remove button is activated.",
              "name": "sl-remove",
              "reactName": "onSlRemove",
              "eventName": "SlRemoveEvent"
            }
          ],
          "attributes": [
            {
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger' | 'text'"
              },
              "default": "'neutral'",
              "description": "The tag's theme variant.",
              "fieldName": "variant"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The tag's size.",
              "fieldName": "size"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style tag with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "removable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the tag removable and shows a remove button.",
              "fieldName": "removable"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Tags are used as labels to organize things or to indicate a selection.",
          "tagNameWithoutPrefix": "tag",
          "tagName": "sl-tag",
          "customElement": true,
          "jsDoc": "/**\n * @summary Tags are used as labels to organize things or to indicate a selection.\n * @documentation https://shoelace.style/components/tag\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - The tag's content.\n *\n * @event sl-remove - Emitted when the remove button is activated.\n *\n * @csspart base - The component's base wrapper.\n * @csspart content - The tag's content.\n * @csspart remove-button - The tag's remove button, an `<sl-icon-button>`.\n * @csspart remove-button__base - The remove button's exported `base` part.\n */",
          "documentation": "https://shoelace.style/components/tag",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTag",
            "module": "components/tag/tag.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/textarea/textarea.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTextarea",
          "cssParts": [
            {
              "description": "The form control that wraps the label, input, and help text.",
              "name": "form-control"
            },
            {
              "description": "The label's wrapper.",
              "name": "form-control-label"
            },
            {
              "description": "The input's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            },
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The internal `<textarea>` control.",
              "name": "textarea"
            }
          ],
          "slots": [
            {
              "description": "The textarea's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { assumeInteractionOn: ['sl-blur', 'sl-input'] })"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'help-text', 'label')"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "HTMLTextAreaElement"
              }
            },
            {
              "kind": "field",
              "name": "sizeAdjuster",
              "type": {
                "text": "HTMLTextAreaElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the textarea, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the textarea, submitted as a name/value pair with form data.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The textarea's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled textarea.",
              "attribute": "filled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's help text. If you need to display HTML, use the `help-text` slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The number of rows to display by default.",
              "attribute": "rows"
            },
            {
              "kind": "field",
              "name": "resize",
              "type": {
                "text": "'none' | 'vertical' | 'auto'"
              },
              "default": "'vertical'",
              "description": "Controls how the textarea can be resized.",
              "attribute": "resize"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the textarea.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea a required field.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "attribute": "minlength"
            },
            {
              "kind": "field",
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "attribute": "maxlength"
            },
            {
              "kind": "field",
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "attribute": "autocapitalize"
            },
            {
              "kind": "field",
              "name": "autocorrect",
              "type": {
                "text": "string"
              },
              "description": "Indicates whether the browser's autocorrect feature is on or off.",
              "attribute": "autocorrect"
            },
            {
              "kind": "field",
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "attribute": "autocomplete"
            },
            {
              "kind": "field",
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "attribute": "autofocus"
            },
            {
              "kind": "field",
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "attribute": "enterkeyhint"
            },
            {
              "kind": "field",
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the textarea.",
              "attribute": "spellcheck"
            },
            {
              "kind": "field",
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "attribute": "inputmode"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The default value of the form control. Primarily used for resetting the form control."
            },
            {
              "kind": "field",
              "name": "validity",
              "description": "Gets the validity state object",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "description": "Gets the validation message",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setTextareaHeight",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleRowsChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the textarea."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the textarea."
            },
            {
              "kind": "method",
              "name": "select",
              "description": "Selects all the text in the textarea."
            },
            {
              "kind": "method",
              "name": "scrollPosition",
              "return": {
                "type": {
                  "text": "{ top: number; left: number } | undefined"
                }
              },
              "parameters": [
                {
                  "name": "position",
                  "optional": true,
                  "type": {
                    "text": "{ top?: number; left?: number }"
                  }
                }
              ],
              "description": "Gets or sets the textarea's scroll position."
            },
            {
              "kind": "method",
              "name": "setSelectionRange",
              "parameters": [
                {
                  "name": "selectionStart",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionEnd",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectionDirection",
                  "default": "'none'",
                  "type": {
                    "text": "'forward' | 'backward' | 'none'"
                  }
                }
              ],
              "description": "Sets the start and end positions of the text selection (0-based)."
            },
            {
              "kind": "method",
              "name": "setRangeText",
              "parameters": [
                {
                  "name": "replacement",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "start",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "end",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "selectMode",
                  "default": "'preserve'",
                  "type": {
                    "text": "'select' | 'start' | 'end' | 'preserve'"
                  }
                }
              ],
              "description": "Replaces a range of text with a new string."
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "Checks for validity but does not show a validation message. Returns `true` when valid and `false` when invalid."
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "Gets the associated form, if one exists."
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Sets a custom validation message. Pass an empty string to restore validity."
            }
          ],
          "events": [
            {
              "description": "Emitted when the control loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when an alteration to the control's value is committed by the user.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the control receives input.",
              "name": "sl-input",
              "reactName": "onSlInput",
              "eventName": "SlInputEvent"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "title"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the textarea, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the textarea, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The textarea's size.",
              "fieldName": "size"
            },
            {
              "name": "filled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a filled textarea.",
              "fieldName": "filled"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The textarea's help text. If you need to display HTML, use the `help-text` slot instead.",
              "fieldName": "helpText"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "4",
              "description": "The number of rows to display by default.",
              "fieldName": "rows"
            },
            {
              "name": "resize",
              "type": {
                "text": "'none' | 'vertical' | 'auto'"
              },
              "default": "'vertical'",
              "description": "Controls how the textarea can be resized.",
              "fieldName": "resize"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the textarea.",
              "fieldName": "disabled"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "By default, form controls are associated with the nearest containing `<form>` element. This attribute allows you\nto place the form control outside of a form and associate it with the form that has this `id`. The form must be in\nthe same document or shadow root for this to work.",
              "fieldName": "form"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the textarea a required field.",
              "fieldName": "required"
            },
            {
              "name": "minlength",
              "type": {
                "text": "number"
              },
              "description": "The minimum length of input that will be considered valid.",
              "fieldName": "minlength"
            },
            {
              "name": "maxlength",
              "type": {
                "text": "number"
              },
              "description": "The maximum length of input that will be considered valid.",
              "fieldName": "maxlength"
            },
            {
              "name": "autocapitalize",
              "type": {
                "text": "'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters'"
              },
              "description": "Controls whether and how text input is automatically capitalized as it is entered by the user.",
              "fieldName": "autocapitalize"
            },
            {
              "name": "autocorrect",
              "type": {
                "text": "string"
              },
              "description": "Indicates whether the browser's autocorrect feature is on or off.",
              "fieldName": "autocorrect"
            },
            {
              "name": "autocomplete",
              "type": {
                "text": "string"
              },
              "description": "Specifies what permission the browser has to provide assistance in filling out form field values. Refer to\n[this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for available values.",
              "fieldName": "autocomplete"
            },
            {
              "name": "autofocus",
              "type": {
                "text": "boolean"
              },
              "description": "Indicates that the input should receive focus on page load.",
              "fieldName": "autofocus"
            },
            {
              "name": "enterkeyhint",
              "type": {
                "text": "'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'"
              },
              "description": "Used to customize the label or icon of the Enter key on virtual keyboards.",
              "fieldName": "enterkeyhint"
            },
            {
              "name": "spellcheck",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables spell checking on the textarea.",
              "fieldName": "spellcheck"
            },
            {
              "name": "inputmode",
              "type": {
                "text": "'none' | 'text' | 'decimal' | 'numeric' | 'tel' | 'search' | 'email' | 'url'"
              },
              "description": "Tells the browser what type of data will be entered by the user, allowing it to display the appropriate virtual\nkeyboard on supportive devices.",
              "fieldName": "inputmode"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Textareas collect data from the user and allow multiple lines of text.",
          "tagNameWithoutPrefix": "textarea",
          "tagName": "sl-textarea",
          "customElement": true,
          "jsDoc": "/**\n * @summary Textareas collect data from the user and allow multiple lines of text.\n * @documentation https://shoelace.style/components/textarea\n * @status stable\n * @since 2.0\n *\n * @slot label - The textarea's label. Alternatively, you can use the `label` attribute.\n * @slot help-text - Text that describes how to use the input. Alternatively, you can use the `help-text` attribute.\n *\n * @event sl-blur - Emitted when the control loses focus.\n * @event sl-change - Emitted when an alteration to the control's value is committed by the user.\n * @event sl-focus - Emitted when the control gains focus.\n * @event sl-input - Emitted when the control receives input.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n *\n * @csspart form-control - The form control that wraps the label, input, and help text.\n * @csspart form-control-label - The label's wrapper.\n * @csspart form-control-input - The input's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart base - The component's base wrapper.\n * @csspart textarea - The internal `<textarea>` control.\n */",
          "documentation": "https://shoelace.style/components/textarea",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTextarea",
            "module": "components/textarea/textarea.js"
          }
        }
      ]
    }
  ],
  "package": {
    "name": "coaxium-ui-library-pilot",
    "description": "web component library",
    "version": "1.0.0",
    "author": "Thien Nguyen",
    "homepage": "#"
  }
}
