{
  "schemaVersion": "1.0.0",
  "readme": "",
  "modules": [
    {
      "kind": "javascript-module",
      "path": "components/alert/alert.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlAlert",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the optional icon.",
              "name": "icon"
            },
            {
              "description": "The container that wraps the alert's main content.",
              "name": "message"
            },
            {
              "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 alert's main content.",
              "name": ""
            },
            {
              "description": "An icon to show in the alert. Works best with `<sl-icon>`.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "autoHideTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "remainingTimeInterval",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "countdownAnimation",
              "type": {
                "text": "Animation | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'icon', 'suffix')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "currentToastStack",
              "type": {
                "text": "HTMLDivElement"
              },
              "privacy": "private",
              "static": true
            },
            {
              "kind": "field",
              "name": "toastStack",
              "privacy": "private",
              "static": true,
              "readonly": true
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "countdownElement",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the alert is open. You can toggle this attribute to show and hide the alert, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the alert's open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables a close button that allows the user to dismiss the alert.",
              "attribute": "closable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger'"
              },
              "default": "'primary'",
              "description": "The alert's theme variant.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "duration",
              "default": "Infinity",
              "description": "The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with\nthe alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning\nthe alert will not close on its own.",
              "attribute": "duration"
            },
            {
              "kind": "field",
              "name": "countdown",
              "type": {
                "text": "'rtl' | 'ltr' | undefined"
              },
              "description": "Enables a countdown that indicates the remaining time the alert will be displayed.\nTypically used to indicate the remaining time before a whole app refresh.",
              "attribute": "countdown",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "remainingTime",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "restartAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "pauseAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "resumeAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCountdownChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCloseClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "handleDurationChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the alert."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the alert"
            },
            {
              "kind": "method",
              "name": "toast",
              "description": "Displays the alert as a toast notification. This will move the alert out of its position in the DOM and, when\ndismissed, it will be removed from the DOM completely. By storing a reference to the alert, you can reuse it by\ncalling this method again. The returned promise will resolve after the alert is hidden."
            }
          ],
          "events": [
            {
              "description": "Emitted when the alert opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the alert opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the alert closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the alert 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 alert is open. You can toggle this attribute to show and hide the alert, or you can\nuse the `show()` and `hide()` methods and this attribute will reflect the alert's open state.",
              "fieldName": "open"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables a close button that allows the user to dismiss the alert.",
              "fieldName": "closable"
            },
            {
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger'"
              },
              "default": "'primary'",
              "description": "The alert's theme variant.",
              "fieldName": "variant"
            },
            {
              "name": "duration",
              "default": "Infinity",
              "description": "The length of time, in milliseconds, the alert will show before closing itself. If the user interacts with\nthe alert before it closes (e.g. moves the mouse over it), the timer will restart. Defaults to `Infinity`, meaning\nthe alert will not close on its own.",
              "fieldName": "duration"
            },
            {
              "name": "countdown",
              "type": {
                "text": "'rtl' | 'ltr' | undefined"
              },
              "description": "Enables a countdown that indicates the remaining time the alert will be displayed.\nTypically used to indicate the remaining time before a whole app refresh.",
              "fieldName": "countdown"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Alerts are used to display important messages inline or as toast notifications.",
          "tagNameWithoutPrefix": "alert",
          "tagName": "sl-alert",
          "customElement": true,
          "jsDoc": "/**\n * @summary Alerts are used to display important messages inline or as toast notifications.\n * @documentation https://shoelace.style/components/alert\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon-button\n *\n * @slot - The alert's main content.\n * @slot icon - An icon to show in the alert. Works best with `<sl-icon>`.\n *\n * @event sl-show - Emitted when the alert opens.\n * @event sl-after-show - Emitted after the alert opens and all animations are complete.\n * @event sl-hide - Emitted when the alert closes.\n * @event sl-after-hide - Emitted after the alert closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart icon - The container that wraps the optional icon.\n * @csspart message - The container that wraps the alert's main content.\n * @csspart close-button - The close button, an `<sl-icon-button>`.\n * @csspart close-button__base - The close button's exported `base` part.\n *\n * @animation alert.show - The animation to use when showing the alert.\n * @animation alert.hide - The animation to use when hiding the alert.\n */",
          "documentation": "https://shoelace.style/components/alert",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon-button"
          ],
          "animations": [
            {
              "name": "alert.show",
              "description": "The animation to use when showing the alert."
            },
            {
              "name": "alert.hide",
              "description": "The animation to use when hiding the alert."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlAlert",
            "module": "components/alert/alert.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/animated-image/animated-image.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlAnimatedImage",
          "cssProperties": [
            {
              "description": "The size of the icon box.",
              "name": "--control-box-size"
            },
            {
              "description": "The size of the play/pause icons.",
              "name": "--icon-size"
            }
          ],
          "cssParts": [
            {
              "description": "The container that surrounds the pause/play icons and provides their background.",
              "name": "control-box"
            }
          ],
          "slots": [
            {
              "description": "Optional play icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "play-icon"
            },
            {
              "description": "Optional pause icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "pause-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "animatedImage",
              "type": {
                "text": "HTMLImageElement"
              }
            },
            {
              "kind": "field",
              "name": "frozenFrame",
              "type": {
                "text": "string"
              }
            },
            {
              "kind": "field",
              "name": "isLoaded",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The path to the image to load.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "alt",
              "type": {
                "text": "string"
              },
              "description": "A description of the image used by assistive devices.",
              "attribute": "alt"
            },
            {
              "kind": "field",
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "description": "Plays the animation. When this attribute is remove, the animation will pause.",
              "attribute": "play",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLoad",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleError",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handlePlayChange"
            },
            {
              "kind": "method",
              "name": "handleSrcChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the image loads successfully.",
              "name": "sl-load",
              "reactName": "onSlLoad",
              "eventName": "SlLoadEvent"
            },
            {
              "description": "Emitted when the image fails to load.",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The path to the image to load.",
              "fieldName": "src"
            },
            {
              "name": "alt",
              "type": {
                "text": "string"
              },
              "description": "A description of the image used by assistive devices.",
              "fieldName": "alt"
            },
            {
              "name": "play",
              "type": {
                "text": "boolean"
              },
              "description": "Plays the animation. When this attribute is remove, the animation will pause.",
              "fieldName": "play"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A component for displaying animated GIFs and WEBPs that play and pause on interaction.",
          "tagNameWithoutPrefix": "animated-image",
          "tagName": "sl-animated-image",
          "customElement": true,
          "jsDoc": "/**\n * @summary A component for displaying animated GIFs and WEBPs that play and pause on interaction.\n * @documentation https://shoelace.style/components/animated-image\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @event sl-load - Emitted when the image loads successfully.\n * @event sl-error - Emitted when the image fails to load.\n *\n * @slot play-icon - Optional play icon to use instead of the default. Works best with `<sl-icon>`.\n * @slot pause-icon - Optional pause icon to use instead of the default. Works best with `<sl-icon>`.\n *\n * @part control-box - The container that surrounds the pause/play icons and provides their background.\n *\n * @cssproperty --control-box-size - The size of the icon box.\n * @cssproperty --icon-size - The size of the play/pause icons.\n */",
          "documentation": "https://shoelace.style/components/animated-image",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlAnimatedImage",
            "module": "components/animated-image/animated-image.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/badge/badge.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlBadge",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The badge's content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger'"
              },
              "default": "'primary'",
              "description": "The badge's theme variant.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style badge with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pulse",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the badge pulsate to draw attention.",
              "attribute": "pulse",
              "reflects": true
            }
          ],
          "attributes": [
            {
              "name": "variant",
              "type": {
                "text": "'primary' | 'success' | 'neutral' | 'warning' | 'danger'"
              },
              "default": "'primary'",
              "description": "The badge's theme variant.",
              "fieldName": "variant"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style badge with rounded edges.",
              "fieldName": "pill"
            },
            {
              "name": "pulse",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the badge pulsate to draw attention.",
              "fieldName": "pulse"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Badges are used to draw attention and display statuses or counts.",
          "tagNameWithoutPrefix": "badge",
          "tagName": "sl-badge",
          "customElement": true,
          "jsDoc": "/**\n * @summary Badges are used to draw attention and display statuses or counts.\n * @documentation https://shoelace.style/components/badge\n * @status stable\n * @since 2.0\n *\n * @slot - The badge's content.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/badge",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlBadge",
            "module": "components/badge/badge.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/breadcrumb/breadcrumb.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlBreadcrumb",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "One or more breadcrumb items to display.",
              "name": ""
            },
            {
              "description": "The separator to use between breadcrumb items. Works best with `<sl-icon>`.",
              "name": "separator"
            }
          ],
          "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": "separatorDir",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "separatorSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
              "attribute": "label"
            },
            {
              "kind": "method",
              "name": "getSeparator",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The label to use for the breadcrumb control. This will not be shown on the screen, but it will be announced by\nscreen readers and other assistive devices to provide more context for users.",
              "fieldName": "label"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.",
          "tagNameWithoutPrefix": "breadcrumb",
          "tagName": "sl-breadcrumb",
          "customElement": true,
          "jsDoc": "/**\n * @summary Breadcrumbs provide a group of links so users can easily navigate a website's hierarchy.\n * @documentation https://shoelace.style/components/breadcrumb\n * @status stable\n * @since 2.0\n *\n * @slot - One or more breadcrumb items to display.\n * @slot separator - The separator to use between breadcrumb items. Works best with `<sl-icon>`.\n *\n * @dependency sl-icon\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/breadcrumb",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlBreadcrumb",
            "module": "components/breadcrumb/breadcrumb.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/breadcrumb-item/breadcrumb-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlBreadcrumbItem",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The breadcrumb item's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the prefix.",
              "name": "prefix"
            },
            {
              "description": "The container that wraps the suffix.",
              "name": "suffix"
            },
            {
              "description": "The container that wraps the separator.",
              "name": "separator"
            }
          ],
          "slots": [
            {
              "description": "The breadcrumb item's label.",
              "name": ""
            },
            {
              "description": "An optional prefix, usually an icon or icon button.",
              "name": "prefix"
            },
            {
              "description": "An optional suffix, usually an icon or icon button.",
              "name": "suffix"
            },
            {
              "description": "The separator to use for the breadcrumb item. This will only change the separator for this item. If you want to change it for all items in the group, set the separator on `<sl-breadcrumb>` instead.",
              "name": "separator"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'prefix', 'suffix')"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "renderType",
              "type": {
                "text": "'button' | 'link' | 'dropdown'"
              },
              "privacy": "private",
              "default": "'button'"
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
              "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": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
              "attribute": "rel"
            },
            {
              "kind": "method",
              "name": "setRenderType",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hrefChanged"
            },
            {
              "kind": "method",
              "name": "handleSlotChange"
            }
          ],
          "attributes": [
            {
              "name": "href",
              "type": {
                "text": "string | undefined"
              },
              "description": "Optional URL to direct the user to when the breadcrumb item is activated. When set, a link will be rendered\ninternally. When unset, a button will be rendered instead.",
              "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": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "The `rel` attribute to use on the link. Only used when `href` is set.",
              "fieldName": "rel"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Breadcrumb Items are used inside [breadcrumbs](/components/breadcrumb) to represent different links.",
          "tagNameWithoutPrefix": "breadcrumb-item",
          "tagName": "sl-breadcrumb-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary Breadcrumb Items are used inside [breadcrumbs](/components/breadcrumb) to represent different links.\n * @documentation https://shoelace.style/components/breadcrumb-item\n * @status stable\n * @since 2.0\n *\n * @slot - The breadcrumb item's label.\n * @slot prefix - An optional prefix, usually an icon or icon button.\n * @slot suffix - An optional suffix, usually an icon or icon button.\n * @slot separator - The separator to use for the breadcrumb item. This will only change the separator for this item. If\n * you want to change it for all items in the group, set the separator on `<sl-breadcrumb>` instead.\n *\n * @csspart base - The component's base wrapper.\n * @csspart label - The breadcrumb item's label.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart suffix - The container that wraps the suffix.\n * @csspart separator - The container that wraps the separator.\n */",
          "documentation": "https://shoelace.style/components/breadcrumb-item",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlBreadcrumbItem",
            "module": "components/breadcrumb-item/breadcrumb-item.js"
          }
        }
      ]
    },
    {
      "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/bubble/bubble.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlBubble",
          "cssProperties": [
            {
              "description": "Background color for the `filled` variant (start placement).",
              "name": "--sl-bubble-filled-background"
            },
            {
              "description": "Text color for the `filled` variant.",
              "name": "--sl-bubble-filled-color"
            },
            {
              "description": "Background color for the `filled` variant when placement is `end`.",
              "name": "--sl-bubble-filled-background-end"
            },
            {
              "description": "Text color for the `filled` variant when placement is `end`.",
              "name": "--sl-bubble-filled-color-end"
            },
            {
              "description": "Background color for the `outlined` variant.",
              "name": "--sl-bubble-outlined-background"
            },
            {
              "description": "Border color for the `outlined` variant.",
              "name": "--sl-bubble-outlined-border-color"
            },
            {
              "description": "Text color for the `outlined` variant.",
              "name": "--sl-bubble-outlined-color"
            },
            {
              "description": "Background color for the `shadow` variant.",
              "name": "--sl-bubble-shadow-background"
            },
            {
              "description": "Box shadow for the `shadow` variant.",
              "name": "--sl-bubble-shadow-box-shadow"
            },
            {
              "description": "Text color for the `shadow` variant.",
              "name": "--sl-bubble-shadow-color"
            },
            {
              "description": "Text color for the `borderless` variant.",
              "name": "--sl-bubble-borderless-color"
            },
            {
              "description": "Color of the loading indicator dots.",
              "name": "--sl-bubble-loading-dot-color"
            },
            {
              "description": "Color of the typing cursor indicator.",
              "name": "--sl-bubble-cursor-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's outermost wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the avatar slot.",
              "name": "avatar"
            },
            {
              "description": "The body wrapper containing header, content, and footer.",
              "name": "body"
            },
            {
              "description": "The header container.",
              "name": "header"
            },
            {
              "description": "The main content bubble area.",
              "name": "content"
            },
            {
              "description": "The footer container.",
              "name": "footer"
            },
            {
              "description": "The extra content container.",
              "name": "extra"
            },
            {
              "description": "The default loading indicator container.",
              "name": "loading"
            }
          ],
          "slots": [
            {
              "description": "The default slot for bubble content. Used when the `content` attribute is not set.",
              "name": ""
            },
            {
              "description": "An avatar to display beside the bubble. Works well with `<sl-avatar>`.",
              "name": "avatar"
            },
            {
              "description": "Header content displayed above the bubble content area.",
              "name": "header"
            },
            {
              "description": "Footer content displayed below the bubble content area.",
              "name": "footer"
            },
            {
              "description": "Extra content displayed on the opposite side of the avatar.",
              "name": "extra"
            },
            {
              "description": "Custom loading indicator. Overrides the default loading dots.",
              "name": "loading"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-avatar': SlAvatar, 'sl-button': SlButton, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'avatar', 'header', 'footer', 'extra')"
            },
            {
              "kind": "field",
              "name": "editableInput",
              "type": {
                "text": "HTMLDivElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "typingTimer",
              "type": {
                "text": "ReturnType<typeof setTimeout> | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Typing animation timer handle"
            },
            {
              "kind": "field",
              "name": "typingIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "Current position in the typing animation"
            },
            {
              "kind": "field",
              "name": "isTyping",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "Whether the typing animation is currently running"
            },
            {
              "kind": "field",
              "name": "typingText",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "Internal rendered string for typing animation"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The position of the bubble. Use `start` for messages from others (left-aligned)\nand `end` for messages from the current user (right-aligned).",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text content to display in the bubble. If omitted, the default slot content is rendered instead.\nWhen `typing` is enabled, the content will be animated character by character.",
              "attribute": "content"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'filled' | 'outlined' | 'shadow' | 'borderless'"
              },
              "default": "'filled'",
              "description": "The visual style variant of the bubble.\n- `filled`: Solid background (default)\n- `outlined`: Border with transparent background\n- `shadow`: White background with drop shadow\n- `borderless`: No background or border",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'default' | 'round' | 'corner'"
              },
              "default": "'default'",
              "description": "The shape of the bubble.\n- `default`: Standard rounded corners\n- `round`: Pill-shaped corners\n- `corner`: Asymmetric corner (chat-style notch)",
              "attribute": "shape",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, shows a loading indicator instead of content.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "typing",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables a character-by-character typing animation for the `content` attribute.\nOnly works with string content set via the `content` attribute.",
              "attribute": "typing",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "typingStep",
              "type": {
                "text": "number"
              },
              "default": "2",
              "description": "Number of characters to reveal per animation step during typing.",
              "attribute": "typing-step"
            },
            {
              "kind": "field",
              "name": "typingInterval",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "Interval in milliseconds between each typing animation step.",
              "attribute": "typing-interval"
            },
            {
              "kind": "field",
              "name": "streaming",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates the content is being streamed. When typing is enabled and streaming is true,\nthe typing animation keeps running as new content arrives. The `sl-typing-complete` event\nis only emitted after streaming ends.",
              "attribute": "streaming",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "footerPlacement",
              "type": {
                "text": "'outer-start' | 'outer-end' | 'inner-start' | 'inner-end' | undefined"
              },
              "description": "Controls the position of the footer slot relative to the content bubble.\n- `outer-start`: Footer outside the content area, aligned to start (default when placement is `start`)\n- `outer-end`: Footer outside the content area, aligned to end (default when placement is `end`)\n- `inner-start`: Footer inside the content area (shares background), aligned to start\n- `inner-end`: Footer inside the content area (shares background), aligned to end\n\nWhen not set, defaults to `outer-start` if placement is `start`, or `outer-end` if placement is `end`.",
              "attribute": "footer-placement"
            },
            {
              "kind": "field",
              "name": "editable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables editing mode on the bubble content. When true, the content area becomes\na contentEditable region with OK and Cancel buttons.",
              "attribute": "editable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "okText",
              "type": {
                "text": "string"
              },
              "default": "'OK'",
              "description": "Custom text for the edit confirm button.",
              "attribute": "ok-text"
            },
            {
              "kind": "field",
              "name": "cancelText",
              "type": {
                "text": "string"
              },
              "default": "'Cancel'",
              "description": "Custom text for the edit cancel button.",
              "attribute": "cancel-text"
            },
            {
              "kind": "method",
              "name": "startTypingAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stepTyping",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopTypingAnimation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopTypingTimer",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "initEditable",
              "privacy": "private",
              "description": "Initialize the contentEditable div with current content, focus and place cursor at end"
            },
            {
              "kind": "method",
              "name": "getPlainText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "root",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "Extract plain text from a contentEditable div, converting block elements\nand <br> tags into newlines (mirrors React's getPlainTextWithFormat)."
            },
            {
              "kind": "method",
              "name": "isBlockElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleEditConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleEditCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderLoading",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderContent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderEditable",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "effectiveFooterPlacement",
              "type": {
                "text": "'outer-start' | 'outer-end' | 'inner-start' | 'inner-end'"
              },
              "privacy": "private",
              "description": "Compute the effective footer placement, with default based on placement",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderFooter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "hasFooter",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "description": "Emitted when the typing animation finishes rendering all content.",
              "name": "sl-typing-complete",
              "reactName": "onSlTypingComplete",
              "eventName": "SlTypingCompleteEvent"
            },
            {
              "description": "Emitted when the user confirms an edit. `event.detail.content` contains the edited text.",
              "name": "sl-edit-confirm",
              "reactName": "onSlEditConfirm",
              "eventName": "SlEditConfirmEvent"
            },
            {
              "description": "Emitted when the user cancels editing.",
              "name": "sl-edit-cancel",
              "reactName": "onSlEditCancel",
              "eventName": "SlEditCancelEvent"
            }
          ],
          "attributes": [
            {
              "name": "placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The position of the bubble. Use `start` for messages from others (left-aligned)\nand `end` for messages from the current user (right-aligned).",
              "fieldName": "placement"
            },
            {
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text content to display in the bubble. If omitted, the default slot content is rendered instead.\nWhen `typing` is enabled, the content will be animated character by character.",
              "fieldName": "content"
            },
            {
              "name": "variant",
              "type": {
                "text": "'filled' | 'outlined' | 'shadow' | 'borderless'"
              },
              "default": "'filled'",
              "description": "The visual style variant of the bubble.\n- `filled`: Solid background (default)\n- `outlined`: Border with transparent background\n- `shadow`: White background with drop shadow\n- `borderless`: No background or border",
              "fieldName": "variant"
            },
            {
              "name": "shape",
              "type": {
                "text": "'default' | 'round' | 'corner'"
              },
              "default": "'default'",
              "description": "The shape of the bubble.\n- `default`: Standard rounded corners\n- `round`: Pill-shaped corners\n- `corner`: Asymmetric corner (chat-style notch)",
              "fieldName": "shape"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, shows a loading indicator instead of content.",
              "fieldName": "loading"
            },
            {
              "name": "typing",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables a character-by-character typing animation for the `content` attribute.\nOnly works with string content set via the `content` attribute.",
              "fieldName": "typing"
            },
            {
              "name": "typing-step",
              "type": {
                "text": "number"
              },
              "default": "2",
              "description": "Number of characters to reveal per animation step during typing.",
              "fieldName": "typingStep"
            },
            {
              "name": "typing-interval",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "Interval in milliseconds between each typing animation step.",
              "fieldName": "typingInterval"
            },
            {
              "name": "streaming",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates the content is being streamed. When typing is enabled and streaming is true,\nthe typing animation keeps running as new content arrives. The `sl-typing-complete` event\nis only emitted after streaming ends.",
              "fieldName": "streaming"
            },
            {
              "name": "footer-placement",
              "type": {
                "text": "'outer-start' | 'outer-end' | 'inner-start' | 'inner-end' | undefined"
              },
              "description": "Controls the position of the footer slot relative to the content bubble.\n- `outer-start`: Footer outside the content area, aligned to start (default when placement is `start`)\n- `outer-end`: Footer outside the content area, aligned to end (default when placement is `end`)\n- `inner-start`: Footer inside the content area (shares background), aligned to start\n- `inner-end`: Footer inside the content area (shares background), aligned to end\n\nWhen not set, defaults to `outer-start` if placement is `start`, or `outer-end` if placement is `end`.",
              "fieldName": "footerPlacement"
            },
            {
              "name": "editable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables editing mode on the bubble content. When true, the content area becomes\na contentEditable region with OK and Cancel buttons.",
              "fieldName": "editable"
            },
            {
              "name": "ok-text",
              "type": {
                "text": "string"
              },
              "default": "'OK'",
              "description": "Custom text for the edit confirm button.",
              "fieldName": "okText"
            },
            {
              "name": "cancel-text",
              "type": {
                "text": "string"
              },
              "default": "'Cancel'",
              "description": "Custom text for the edit cancel button.",
              "fieldName": "cancelText"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Bubble is a chat bubble component commonly used in conversational UIs.",
          "tagNameWithoutPrefix": "bubble",
          "tagName": "sl-bubble",
          "customElement": true,
          "jsDoc": "/**\n * @summary Bubble is a chat bubble component commonly used in conversational UIs.\n * @documentation https://shoelace.style/components/bubble\n * @status experimental\n * @since 2.0\n *\n * @slot - The default slot for bubble content. Used when the `content` attribute is not set.\n * @slot avatar - An avatar to display beside the bubble. Works well with `<sl-avatar>`.\n * @slot header - Header content displayed above the bubble content area.\n * @slot footer - Footer content displayed below the bubble content area.\n * @slot extra - Extra content displayed on the opposite side of the avatar.\n * @slot loading - Custom loading indicator. Overrides the default loading dots.\n *\n * @event sl-typing-complete - Emitted when the typing animation finishes rendering all content.\n * @event sl-edit-confirm - Emitted when the user confirms an edit. `event.detail.content` contains the edited text.\n * @event sl-edit-cancel - Emitted when the user cancels editing.\n *\n * @csspart base - The component's outermost wrapper.\n * @csspart avatar - The container that wraps the avatar slot.\n * @csspart body - The body wrapper containing header, content, and footer.\n * @csspart header - The header container.\n * @csspart content - The main content bubble area.\n * @csspart footer - The footer container.\n * @csspart extra - The extra content container.\n * @csspart loading - The default loading indicator container.\n *\n * @cssproperty --sl-bubble-filled-background - Background color for the `filled` variant (start placement).\n * @cssproperty --sl-bubble-filled-color - Text color for the `filled` variant.\n * @cssproperty --sl-bubble-filled-background-end - Background color for the `filled` variant when placement is `end`.\n * @cssproperty --sl-bubble-filled-color-end - Text color for the `filled` variant when placement is `end`.\n * @cssproperty --sl-bubble-outlined-background - Background color for the `outlined` variant.\n * @cssproperty --sl-bubble-outlined-border-color - Border color for the `outlined` variant.\n * @cssproperty --sl-bubble-outlined-color - Text color for the `outlined` variant.\n * @cssproperty --sl-bubble-shadow-background - Background color for the `shadow` variant.\n * @cssproperty --sl-bubble-shadow-box-shadow - Box shadow for the `shadow` variant.\n * @cssproperty --sl-bubble-shadow-color - Text color for the `shadow` variant.\n * @cssproperty --sl-bubble-borderless-color - Text color for the `borderless` variant.\n * @cssproperty --sl-bubble-loading-dot-color - Color of the loading indicator dots.\n * @cssproperty --sl-bubble-cursor-color - Color of the typing cursor indicator.\n */",
          "documentation": "https://shoelace.style/components/bubble",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlBubble",
            "module": "components/bubble/bubble.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/button-group/button-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlButtonGroup",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "One or more `<sl-button>` elements to display in the button group.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "disableRole",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
              "attribute": "label"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseOver",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseOut",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label to use for the button group. This won't be displayed on the screen, but it will be announced by assistive\ndevices when interacting with the control and is strongly recommended.",
              "fieldName": "label"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Button groups can be used to group related buttons into sections.",
          "tagNameWithoutPrefix": "button-group",
          "tagName": "sl-button-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary Button groups can be used to group related buttons into sections.\n * @documentation https://shoelace.style/components/button-group\n * @status stable\n * @since 2.0\n *\n * @slot - One or more `<sl-button>` elements to display in the button group.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/button-group",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlButtonGroup",
            "module": "components/button-group/button-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar/calendar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCalendar",
          "cssProperties": [
            {
              "description": "Background color of selected date",
              "name": "--sl-calendar-item-active-bg"
            },
            {
              "description": "Background color of full calendar",
              "name": "--sl-calendar-full-bg"
            },
            {
              "description": "Background color of calendar panel",
              "name": "--sl-calendar-full-panel-bg"
            },
            {
              "description": "Height of mini calendar content",
              "name": "--sl-calendar-mini-content-height"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The calendar header.",
              "name": "header"
            },
            {
              "description": "The header left section (year/month selects).",
              "name": "header-left"
            },
            {
              "description": "The header right section (mode switch).",
              "name": "header-right"
            },
            {
              "description": "The calendar body.",
              "name": "body"
            },
            {
              "description": "The calendar table.",
              "name": "table"
            },
            {
              "description": "Individual calendar cells.",
              "name": "cell"
            },
            {
              "description": "Inner content of calendar cells.",
              "name": "cell-inner"
            },
            {
              "description": "The date number display.",
              "name": "date-value"
            },
            {
              "description": "The custom content area in cells.",
              "name": "date-content"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-select': SlSelect, 'sl-option': SlOption, 'sl-segmented': SlSegmented }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "Date"
              },
              "default": "new Date()",
              "description": "The currently selected date."
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "Date | undefined"
              },
              "description": "The default value when no value is set."
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "CalendarMode"
              },
              "default": "'month'",
              "description": "The display mode: 'month' shows days, 'year' shows months.",
              "attribute": "mode",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to display in fullscreen mode. Set to false for card mode.",
              "attribute": "fullscreen",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabledDate",
              "type": {
                "text": "(date: Date) => boolean | undefined"
              },
              "description": "A function to determine if a date should be disabled."
            },
            {
              "kind": "field",
              "name": "dateCellRender",
              "type": {
                "text": "(date: Date) => TemplateResult | HTMLElement | string | undefined | undefined"
              },
              "description": "Custom render function for date cells. Return content to append to the cell."
            },
            {
              "kind": "field",
              "name": "dateFullCellRender",
              "type": {
                "text": "(\n    date: Date\n  ) => TemplateResult | HTMLElement | string | undefined | undefined"
              },
              "description": "Custom render function to replace the entire date cell."
            },
            {
              "kind": "field",
              "name": "monthCellRender",
              "type": {
                "text": "(date: Date) => TemplateResult | HTMLElement | string | undefined | undefined"
              },
              "description": "Custom render function for month cells (in year mode)."
            },
            {
              "kind": "field",
              "name": "monthFullCellRender",
              "type": {
                "text": "(\n    date: Date\n  ) => TemplateResult | HTMLElement | string | undefined | undefined"
              },
              "description": "Custom render function to replace entire month cell."
            },
            {
              "kind": "field",
              "name": "getListData",
              "type": {
                "text": "(date: Date) => ListDataItem[] | undefined"
              },
              "description": "Shorthand for providing list data to display in cells."
            },
            {
              "kind": "field",
              "name": "validRange",
              "type": {
                "text": "[Date, Date] | undefined"
              },
              "description": "Valid date range [start, end]. Dates outside this range will be disabled."
            },
            {
              "kind": "field",
              "name": "headerRender",
              "type": {
                "text": "(props: {\n    value: Date;\n    type: CalendarMode;\n    onChange: (date: Date) => void;\n    onTypeChange: (type: CalendarMode) => void;\n  }) => TemplateResult | HTMLElement | undefined"
              },
              "description": "Custom header render function for complete header customization."
            },
            {
              "kind": "field",
              "name": "currentYear",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "currentMonth",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "viewMode",
              "type": {
                "text": "CalendarMode"
              },
              "privacy": "private",
              "default": "'month'"
            },
            {
              "kind": "field",
              "name": "weekDays",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "monthNames",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "yearOptions",
              "type": {
                "text": "number[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "handleModeChange"
            },
            {
              "kind": "method",
              "name": "isDateDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isSameDate",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date1",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "date2",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isSameMonth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date1",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "date2",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getMonthData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ date: Date; isCurrentMonth: boolean }[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleYearChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMonthChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleModeSwitch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "newMode",
                  "type": {
                    "text": "CalendarMode"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "emitPanelChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectDate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "source",
                  "default": "'date'",
                  "type": {
                    "text": "CalendarSelectSource"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "selectMonth",
              "privacy": "private",
              "parameters": [
                {
                  "name": "month",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderListData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult | typeof nothing"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderHeader",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderMonthView",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderWeeks",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult[]"
                }
              },
              "parameters": [
                {
                  "name": "days",
                  "type": {
                    "text": "{ date: Date; isCurrentMonth: boolean }[]"
                  }
                },
                {
                  "name": "today",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderDateCell",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "isCurrentMonth",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "today",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderYearView",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              }
            }
          ],
          "events": [
            {
              "name": "sl-panel-change",
              "type": {
                "text": "CustomEvent"
              },
              "description": "当面板切换时触发",
              "reactName": "onSlPanelChange",
              "eventName": "SlPanelChangeEvent"
            },
            {
              "name": "sl-calendar-change",
              "type": {
                "text": "CustomEvent"
              },
              "description": "当日期发生变化时触发",
              "reactName": "onSlCalendarChange",
              "eventName": "SlCalendarChangeEvent"
            },
            {
              "name": "sl-calendar-select",
              "type": {
                "text": "CustomEvent"
              },
              "description": "当日期被选中时触发，包含来源信息",
              "reactName": "onSlCalendarSelect",
              "eventName": "SlCalendarSelectEvent"
            }
          ],
          "attributes": [
            {
              "name": "mode",
              "type": {
                "text": "CalendarMode"
              },
              "default": "'month'",
              "description": "The display mode: 'month' shows days, 'year' shows months.",
              "fieldName": "mode"
            },
            {
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to display in fullscreen mode. Set to false for card mode.",
              "fieldName": "fullscreen"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "日历组件，用于按日历形式展示数据，支持全屏和卡片模式",
          "tagNameWithoutPrefix": "calendar",
          "tagName": "sl-calendar",
          "customElement": true,
          "jsDoc": "/**\n * @summary 日历组件，用于按日历形式展示数据，支持全屏和卡片模式\n * @documentation https://shoelace.style/components/calendar\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-select\n * @dependency sl-option\n * @dependency sl-segmented\n *\n * @event sl-calendar-change - 当日期发生变化时触发\n * @event sl-calendar-select - 当日期被选中时触发，包含来源信息\n * @event sl-panel-change - 当面板切换时触发\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The calendar header.\n * @csspart header-left - The header left section (year/month selects).\n * @csspart header-right - The header right section (mode switch).\n * @csspart body - The calendar body.\n * @csspart table - The calendar table.\n * @csspart cell - Individual calendar cells.\n * @csspart cell-inner - Inner content of calendar cells.\n * @csspart date-value - The date number display.\n * @csspart date-content - The custom content area in cells.\n *\n * @cssproperty --sl-calendar-item-active-bg - Background color of selected date\n * @cssproperty --sl-calendar-full-bg - Background color of full calendar\n * @cssproperty --sl-calendar-full-panel-bg - Background color of calendar panel\n * @cssproperty --sl-calendar-mini-content-height - Height of mini calendar content\n */",
          "documentation": "https://shoelace.style/components/calendar",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-select",
            "sl-option",
            "sl-segmented"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCalendar",
            "module": "components/calendar/calendar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/calendar-picker/calendar-picker.js",
      "declarations": [],
      "exports": []
    },
    {
      "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/carousel-item/carousel-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCarouselItem",
          "cssProperties": [
            {
              "description": "The slide's aspect ratio. Inherited from the carousel by default.",
              "name": "--aspect-ratio"
            }
          ],
          "slots": [
            {
              "description": "The carousel item's content..",
              "name": ""
            }
          ],
          "members": [],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A carousel item represent a slide within a [carousel](/components/carousel).",
          "tagNameWithoutPrefix": "carousel-item",
          "tagName": "sl-carousel-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary A carousel item represent a slide within a [carousel](/components/carousel).\n *\n * @since 2.0\n * @status experimental\n *\n * @slot - The carousel item's content..\n *\n * @cssproperty --aspect-ratio - The slide's aspect ratio. Inherited from the carousel by default.\n *\n */",
          "since": "2.0",
          "status": "experimental"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCarouselItem",
            "module": "components/carousel-item/carousel-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/carousel/carousel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCarousel",
          "cssProperties": [
            {
              "description": "The space between each slide.",
              "name": "--slide-gap"
            },
            {
              "description": "The aspect ratio of each slide.",
              "name": "--aspect-ratio",
              "default": "16/9"
            },
            {
              "description": "The amount of padding to apply to the scroll area, allowing adjacent slides to become partially visible as a scroll hint.",
              "name": "--scroll-hint"
            }
          ],
          "cssParts": [
            {
              "description": "The carousel's internal wrapper.",
              "name": "base"
            },
            {
              "description": "The scroll container that wraps the slides.",
              "name": "scroll-container"
            },
            {
              "description": "The pagination indicators wrapper.",
              "name": "pagination"
            },
            {
              "description": "The pagination indicator.",
              "name": "pagination-item"
            },
            {
              "description": "Applied when the item is active.",
              "name": "pagination-item--active"
            },
            {
              "description": "The navigation wrapper.",
              "name": "navigation"
            },
            {
              "description": "The navigation button.",
              "name": "navigation-button"
            },
            {
              "description": "Applied to the previous button.",
              "name": "navigation-button--previous"
            },
            {
              "description": "Applied to the next button.",
              "name": "navigation-button--next"
            }
          ],
          "slots": [
            {
              "description": "The carousel's main content, one or more `<sl-carousel-item>` elements.",
              "name": ""
            },
            {
              "description": "Optional next icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "next-icon"
            },
            {
              "description": "Optional previous icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "previous-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "loop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
              "attribute": "loop",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's navigation.",
              "attribute": "navigation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's pagination indicators.",
              "attribute": "pagination",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autoplay",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
              "attribute": "autoplay",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "autoplayInterval",
              "type": {
                "text": "number"
              },
              "default": "3000",
              "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
              "attribute": "autoplay-interval"
            },
            {
              "kind": "field",
              "name": "slidesPerPage",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies how many slides should be shown at a given time.",
              "attribute": "slides-per-page"
            },
            {
              "kind": "field",
              "name": "slidesPerMove",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page`\ngreater than one. It can't be higher than `slides-per-page`.",
              "attribute": "slides-per-move"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Specifies the orientation in which the carousel will lay out.",
              "attribute": "orientation"
            },
            {
              "kind": "field",
              "name": "mouseDragging",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
              "attribute": "mouse-dragging",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "scrollContainer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "paginationContainer",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "activeSlide",
              "type": {
                "text": "number"
              },
              "default": "0"
            },
            {
              "kind": "field",
              "name": "scrolling",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "autoplayController",
              "privacy": "private",
              "default": "new AutoplayController(this, () => this.next())"
            },
            {
              "kind": "field",
              "name": "dragStartPosition",
              "type": {
                "text": "[number, number]"
              },
              "privacy": "private",
              "default": "[-1, -1]"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "pendingSlideChange",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "getPageCount",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getCurrentPage",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "canScrollNext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "canScrollPrev",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "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": "handleMouseDragStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleMouseDrag",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleScrollEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isCarouselItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "node is SlCarouselItem"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "initializeSlides"
            },
            {
              "kind": "method",
              "name": "createClones",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlideChange"
            },
            {
              "kind": "method",
              "name": "updateSlidesSnap"
            },
            {
              "kind": "method",
              "name": "handleAutoplayChange"
            },
            {
              "kind": "method",
              "name": "previous",
              "parameters": [
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Move the carousel backward by `slides-per-move` slides."
            },
            {
              "kind": "method",
              "name": "next",
              "parameters": [
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Move the carousel forward by `slides-per-move` slides."
            },
            {
              "kind": "method",
              "name": "goToSlide",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  },
                  "description": "The slide index."
                },
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  },
                  "description": "The behavior used for scrolling."
                }
              ],
              "description": "Scrolls the carousel to the slide specified by `index`."
            },
            {
              "kind": "method",
              "name": "scrollToSlide",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slide",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "behavior",
                  "default": "'smooth'",
                  "type": {
                    "text": "ScrollBehavior"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ index: number, slide: SlCarouselItem }"
              },
              "description": "Emitted when the active slide changes.",
              "name": "sl-slide-change",
              "reactName": "onSlSlideChange",
              "eventName": "SlSlideChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "loop",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, allows the user to navigate the carousel in the same direction indefinitely.",
              "fieldName": "loop"
            },
            {
              "name": "navigation",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's navigation.",
              "fieldName": "navigation"
            },
            {
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, show the carousel's pagination indicators.",
              "fieldName": "pagination"
            },
            {
              "name": "autoplay",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, the slides will scroll automatically when the user is not interacting with them.",
              "fieldName": "autoplay"
            },
            {
              "name": "autoplay-interval",
              "type": {
                "text": "number"
              },
              "default": "3000",
              "description": "Specifies the amount of time, in milliseconds, between each automatic scroll.",
              "fieldName": "autoplayInterval"
            },
            {
              "name": "slides-per-page",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies how many slides should be shown at a given time.",
              "fieldName": "slidesPerPage"
            },
            {
              "name": "slides-per-move",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "Specifies the number of slides the carousel will advance when scrolling, useful when specifying a `slides-per-page`\ngreater than one. It can't be higher than `slides-per-page`.",
              "fieldName": "slidesPerMove"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "Specifies the orientation in which the carousel will lay out.",
              "fieldName": "orientation"
            },
            {
              "name": "mouse-dragging",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When set, it is possible to scroll through the slides by dragging them with the mouse.",
              "fieldName": "mouseDragging"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Carousels display an arbitrary number of content slides along a horizontal or vertical axis.",
          "tagNameWithoutPrefix": "carousel",
          "tagName": "sl-carousel",
          "customElement": true,
          "jsDoc": "/**\n * @summary Carousels display an arbitrary number of content slides along a horizontal or vertical axis.\n *\n * @since 2.2\n * @status experimental\n *\n * @dependency sl-icon\n *\n * @event {{ index: number, slide: SlCarouselItem }} sl-slide-change - Emitted when the active slide changes.\n *\n * @slot - The carousel's main content, one or more `<sl-carousel-item>` elements.\n * @slot next-icon - Optional next icon to use instead of the default. Works best with `<sl-icon>`.\n * @slot previous-icon - Optional previous icon to use instead of the default. Works best with `<sl-icon>`.\n *\n * @csspart base - The carousel's internal wrapper.\n * @csspart scroll-container - The scroll container that wraps the slides.\n * @csspart pagination - The pagination indicators wrapper.\n * @csspart pagination-item - The pagination indicator.\n * @csspart pagination-item--active - Applied when the item is active.\n * @csspart navigation - The navigation wrapper.\n * @csspart navigation-button - The navigation button.\n * @csspart navigation-button--previous - Applied to the previous button.\n * @csspart navigation-button--next - Applied to the next button.\n *\n * @cssproperty --slide-gap - The space between each slide.\n * @cssproperty [--aspect-ratio=16/9] - The aspect ratio of each slide.\n * @cssproperty --scroll-hint - The amount of padding to apply to the scroll area, allowing adjacent slides to become\n *  partially visible as a scroll hint.\n */",
          "since": "2.2",
          "status": "experimental",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCarousel",
            "module": "components/carousel/carousel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/cascader/cascader.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCascader",
          "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 cascader's wrapper.",
              "name": "form-control-input"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            },
            {
              "description": "The container that 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.",
              "name": "display-input"
            },
            {
              "description": "The search input element when showSearch is enabled.",
              "name": "search-input"
            },
            {
              "description": "The cascader menu container.",
              "name": "menu"
            },
            {
              "description": "Each column in the cascader menu.",
              "name": "menu-column"
            },
            {
              "description": "Each item in the cascader menu.",
              "name": "menu-item"
            },
            {
              "description": "The container that houses option tags when `multiple` is used.",
              "name": "tags"
            },
            {
              "description": "The individual tags that represent each selected option.",
              "name": "tag"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the expand icon.",
              "name": "expand-icon"
            },
            {
              "description": "The empty state content container.",
              "name": "not-found"
            }
          ],
          "slots": [
            {
              "description": "The input'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"
            },
            {
              "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.",
              "name": "expand-icon"
            },
            {
              "description": "Content shown when no options match.",
              "name": "not-found"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup, 'sl-tag': SlTag }"
            },
            {
              "kind": "field",
              "name": "SHOW_PARENT",
              "static": true,
              "readonly": true,
              "default": "'show-parent'",
              "type": {
                "text": "'show-parent'"
              },
              "description": "Constants for showCheckedStrategy, matching Ant Design Cascader.SHOW_PARENT / Cascader.SHOW_CHILD"
            },
            {
              "kind": "field",
              "name": "SHOW_CHILD",
              "static": true,
              "readonly": true,
              "default": "'show-child'",
              "type": {
                "text": "'show-child'"
              }
            },
            {
              "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": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "combobox",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "displayInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "searchInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "menu",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "displayLabel",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "menus",
              "type": {
                "text": "CascaderOption[][]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "selectedPath",
              "type": {
                "text": "CascaderOption[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "expandedKeys",
              "type": {
                "text": "(string | number)[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "searchKeyword",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "searchResults",
              "type": {
                "text": "CascaderOption[][]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "selectedPaths",
              "type": {
                "text": "CascaderOption[][]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the cascader, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "(string | number)[] | (string | number)[][]"
              },
              "default": "[]",
              "description": "The current value of the cascader.\nIn single mode: an array of values representing the selected path, e.g. ['zhejiang', 'hangzhou'].\nIn multiple mode: an array of arrays, e.g. [['zhejiang', 'hangzhou'], ['jiangsu', 'nanjing']].",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "(string | number)[] | (string | number)[][]"
              },
              "default": "[]",
              "description": "The default value of the form control.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The cascader's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the cascader is empty.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Support multiple or not.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether disabled select.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "panelDisabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to disable all options in the panel. The panel can still open/close, but options are not interactive.",
              "attribute": "panel-disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "allowClear",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Show clear button. Supports boolean.",
              "attribute": "allow-clear"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the cascader is open.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultOpen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Initial visible of cascader popup.",
              "attribute": "default-open"
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enable this option to prevent the menu from being clipped when the component is placed inside a container with `overflow: auto|scroll`.",
              "attribute": "hoist"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The cascader's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight'"
              },
              "default": "'bottomLeft'",
              "description": "Use preset popup align config.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The cascader'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.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The cascader's required attribute.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "CascaderOption[]"
              },
              "default": "[]",
              "description": "The data options of cascade.",
              "attribute": "options"
            },
            {
              "kind": "field",
              "name": "fieldNames",
              "type": {
                "text": "FieldNames"
              },
              "default": "{ label: 'label', value: 'value', children: 'children' }",
              "description": "Custom field name for label, value and children.",
              "attribute": "field-names"
            },
            {
              "kind": "field",
              "name": "expandTrigger",
              "type": {
                "text": "'click' | 'hover'"
              },
              "default": "'click'",
              "description": "Expand current item when click or hover, one of 'click' or 'hover'.",
              "attribute": "expand-trigger"
            },
            {
              "kind": "field",
              "name": "changeOnSelect",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Change value on each selection if set to true.",
              "attribute": "change-on-select"
            },
            {
              "kind": "field",
              "name": "separator",
              "type": {
                "text": "string"
              },
              "default": "' / '",
              "description": "Separator used to join the selected path labels for display.",
              "attribute": "separator"
            },
            {
              "kind": "field",
              "name": "showFullPath",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to show the full path in the input.",
              "attribute": "show-full-path"
            },
            {
              "kind": "field",
              "name": "showSearch",
              "type": {
                "text": "boolean | ShowSearchConfig"
              },
              "default": "false",
              "description": "Whether show search input in single mode. Can be boolean or a ShowSearchConfig object (set via JS property)."
            },
            {
              "kind": "field",
              "name": "notFoundContent",
              "type": {
                "text": "string"
              },
              "default": "'Not Found'",
              "description": "Specify content to show when no result matches.",
              "attribute": "not-found-content"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'borderless' | 'filled' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "Variants of selector.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "'error' | 'warning' | ''"
              },
              "default": "''",
              "description": "Set validation status.",
              "attribute": "status",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loadData",
              "type": {
                "text": "LoadDataFn | null"
              },
              "default": "null",
              "description": "To load option lazily. Cannot work with showSearch."
            },
            {
              "kind": "field",
              "name": "displayRender",
              "type": {
                "text": "DisplayRenderFn | null"
              },
              "default": "null",
              "description": "The render function of displaying selected options. Set via JS property. Default: labels => labels.join(separator)."
            },
            {
              "kind": "field",
              "name": "optionRender",
              "type": {
                "text": "OptionRenderFn | null"
              },
              "default": "null",
              "description": "Custom render for each option in the dropdown menu. Set via JS property."
            },
            {
              "kind": "field",
              "name": "maxTagCount",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "Max tag count to show in multiple mode.",
              "attribute": "max-tag-count"
            },
            {
              "kind": "field",
              "name": "maxTagPlaceholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder for not showing tags when exceeding maxTagCount.",
              "attribute": "max-tag-placeholder"
            },
            {
              "kind": "field",
              "name": "maxTagTextLength",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "Max tag text length to show.",
              "attribute": "max-tag-text-length"
            },
            {
              "kind": "field",
              "name": "showCheckedStrategy",
              "type": {
                "text": "'show-parent' | 'show-child'"
              },
              "default": "'show-parent'",
              "description": "Define how to show selected items when multiple is true.\n'show-parent': Show parent node when all children are selected.\n'show-child': Only show child nodes.",
              "attribute": "show-checked-strategy"
            },
            {
              "kind": "field",
              "name": "validity",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "validationMessage",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "popupPlacement",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isSearchMode",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasValue",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "initMenus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getFieldValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "field",
                  "type": {
                    "text": "keyof FieldNames"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getOptionValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | number"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getOptionLabel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getOptionChildren",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "CascaderOption[] | undefined"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "addOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "removeOpenListeners",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentFocusIn",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentMouseDown",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleComboboxMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "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": "handleSearchInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOptionClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCheckboxClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                },
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Handle checkbox click in multiple mode - toggles selection without expanding"
            },
            {
              "kind": "method",
              "name": "handleOptionMouseEnter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSearchResultClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "path",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "rebuildMenus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectOption",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "toggleMultipleSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "path",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isPathSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "path",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isOptionChecked",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Check if an option is fully selected (all descendants for parent nodes)"
            },
            {
              "kind": "method",
              "name": "buildPathToOption",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "CascaderOption[]"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Build path from root to an option at a given column index using expanded keys"
            },
            {
              "kind": "method",
              "name": "getDescendantLeafPaths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "CascaderOption[][]"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "currentPath",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ],
              "description": "Get all non-disabled leaf paths under an option. currentPath includes the option itself."
            },
            {
              "kind": "method",
              "name": "toggleParentSelection",
              "privacy": "private",
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "currentPath",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ],
              "description": "Toggle all descendant leaf selections for a parent option"
            },
            {
              "kind": "method",
              "name": "isOptionIndeterminate",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "option",
                  "type": {
                    "text": "CascaderOption"
                  }
                },
                {
                  "name": "columnIndex",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "Check if some (but not all) descendant leaves are selected - indeterminate checkbox state"
            },
            {
              "kind": "method",
              "name": "updateDisplayLabel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "performSearch",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "defaultSearchFilter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getAllPaths",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "CascaderOption[][]"
                }
              },
              "parameters": [
                {
                  "name": "options",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                },
                {
                  "name": "parentPath",
                  "default": "[]",
                  "type": {
                    "text": "CascaderOption[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "restoreSelectedPath",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "restoreMultiplePaths",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "findPathByValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "CascaderOption[]"
                }
              },
              "parameters": [
                {
                  "name": "values",
                  "type": {
                    "text": "(string | number)[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleOptionsChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show"
            },
            {
              "kind": "method",
              "name": "hide"
            },
            {
              "kind": "method",
              "name": "checkValidity"
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "reportValidity"
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "blur"
            },
            {
              "kind": "method",
              "name": "renderSearchResults",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderMenu",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderTags",
              "privacy": "private"
            }
          ],
          "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 cascader's menu opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the cascader's menu opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the cascader's menu closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the cascader's menu closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the cascader, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "(string | number)[] | (string | number)[][]"
              },
              "default": "[]",
              "description": "The default value of the form control.",
              "fieldName": "defaultValue"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The cascader's size.",
              "fieldName": "size"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the cascader is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Support multiple or not.",
              "fieldName": "multiple"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether disabled select.",
              "fieldName": "disabled"
            },
            {
              "name": "panel-disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to disable all options in the panel. The panel can still open/close, but options are not interactive.",
              "fieldName": "panelDisabled"
            },
            {
              "name": "allow-clear",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Show clear button. Supports boolean.",
              "fieldName": "allowClear"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the cascader is open.",
              "fieldName": "open"
            },
            {
              "name": "default-open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Initial visible of cascader popup.",
              "fieldName": "defaultOpen"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enable this option to prevent the menu from being clipped when the component is placed inside a container with `overflow: auto|scroll`.",
              "fieldName": "hoist"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The cascader's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "placement",
              "type": {
                "text": "'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight'"
              },
              "default": "'bottomLeft'",
              "description": "Use preset popup align config.",
              "fieldName": "placement"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The cascader'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.",
              "fieldName": "form"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The cascader's required attribute.",
              "fieldName": "required"
            },
            {
              "name": "options",
              "type": {
                "text": "CascaderOption[]"
              },
              "default": "[]",
              "description": "The data options of cascade.",
              "fieldName": "options"
            },
            {
              "name": "field-names",
              "type": {
                "text": "FieldNames"
              },
              "default": "{ label: 'label', value: 'value', children: 'children' }",
              "description": "Custom field name for label, value and children.",
              "fieldName": "fieldNames"
            },
            {
              "name": "expand-trigger",
              "type": {
                "text": "'click' | 'hover'"
              },
              "default": "'click'",
              "description": "Expand current item when click or hover, one of 'click' or 'hover'.",
              "fieldName": "expandTrigger"
            },
            {
              "name": "change-on-select",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Change value on each selection if set to true.",
              "fieldName": "changeOnSelect"
            },
            {
              "name": "separator",
              "type": {
                "text": "string"
              },
              "default": "' / '",
              "description": "Separator used to join the selected path labels for display.",
              "fieldName": "separator"
            },
            {
              "name": "show-full-path",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to show the full path in the input.",
              "fieldName": "showFullPath"
            },
            {
              "name": "not-found-content",
              "type": {
                "text": "string"
              },
              "default": "'Not Found'",
              "description": "Specify content to show when no result matches.",
              "fieldName": "notFoundContent"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'borderless' | 'filled' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "Variants of selector.",
              "fieldName": "variant"
            },
            {
              "name": "status",
              "type": {
                "text": "'error' | 'warning' | ''"
              },
              "default": "''",
              "description": "Set validation status.",
              "fieldName": "status"
            },
            {
              "name": "max-tag-count",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "Max tag count to show in multiple mode.",
              "fieldName": "maxTagCount"
            },
            {
              "name": "max-tag-placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder for not showing tags when exceeding maxTagCount.",
              "fieldName": "maxTagPlaceholder"
            },
            {
              "name": "max-tag-text-length",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "Max tag text length to show.",
              "fieldName": "maxTagTextLength"
            },
            {
              "name": "show-checked-strategy",
              "type": {
                "text": "'show-parent' | 'show-child'"
              },
              "default": "'show-parent'",
              "description": "Define how to show selected items when multiple is true.\n'show-parent': Show parent node when all children are selected.\n'show-child': Only show child nodes.",
              "fieldName": "showCheckedStrategy"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Cascader is a cascade selection component that allows users to select from a set of hierarchical options.",
          "tagNameWithoutPrefix": "cascader",
          "tagName": "sl-cascader",
          "customElement": true,
          "jsDoc": "/**\n * @summary Cascader is a cascade selection component that allows users to select from a set of hierarchical options.\n * @documentation https://shoelace.style/components/cascader\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-popup\n * @dependency sl-tag\n *\n * @slot label - The input'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 * @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.\n * @slot not-found - Content shown when no options match.\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 cascader's menu opens.\n * @event sl-after-show - Emitted after the cascader's menu opens and all animations are complete.\n * @event sl-hide - Emitted when the cascader's menu closes.\n * @event sl-after-hide - Emitted after the cascader's menu closes and all animations are complete.\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 cascader's wrapper.\n * @csspart form-control-help-text - The help text's wrapper.\n * @csspart combobox - The container that 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.\n * @csspart search-input - The search input element when showSearch is enabled.\n * @csspart menu - The cascader menu container.\n * @csspart menu-column - Each column in the cascader menu.\n * @csspart menu-item - Each item in the cascader menu.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each selected option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart not-found - The empty state content container.\n */",
          "documentation": "https://shoelace.style/components/cascader",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-popup",
            "sl-tag"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCascader",
            "module": "components/cascader/cascader.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": "hasDefaultSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]')"
            },
            {
              "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/col/col.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCol",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The default slot for content.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "mediaQueryLists",
              "type": {
                "text": "Map<Breakpoint, MediaQueryList>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "currentBreakpoint",
              "type": {
                "text": "Breakpoint"
              },
              "privacy": "private",
              "default": "'xs'"
            },
            {
              "kind": "field",
              "name": "rowContext",
              "type": {
                "text": "RowContext"
              },
              "default": "{ gutter: [0, 0], wrap: true }"
            },
            {
              "kind": "field",
              "name": "span",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to span (out of 24)",
              "attribute": "span"
            },
            {
              "kind": "field",
              "name": "offset",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to offset from the left",
              "attribute": "offset"
            },
            {
              "kind": "field",
              "name": "order",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Order of the column",
              "attribute": "order"
            },
            {
              "kind": "field",
              "name": "push",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to push from the left",
              "attribute": "push"
            },
            {
              "kind": "field",
              "name": "pull",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to pull from the right",
              "attribute": "pull"
            },
            {
              "kind": "field",
              "name": "flex",
              "type": {
                "text": "FlexType | undefined"
              },
              "description": "Flex layout style",
              "attribute": "flex"
            },
            {
              "kind": "field",
              "name": "xs",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xs screens (< 576px)",
              "attribute": "xs"
            },
            {
              "kind": "field",
              "name": "sm",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for sm screens (≥ 576px)",
              "attribute": "sm"
            },
            {
              "kind": "field",
              "name": "md",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for md screens (≥ 768px)",
              "attribute": "md"
            },
            {
              "kind": "field",
              "name": "lg",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for lg screens (≥ 992px)",
              "attribute": "lg"
            },
            {
              "kind": "field",
              "name": "xl",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xl screens (≥ 1200px)",
              "attribute": "xl"
            },
            {
              "kind": "field",
              "name": "xxl",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xxl screens (≥ 1600px)",
              "attribute": "xxl"
            },
            {
              "kind": "method",
              "name": "setupResponsiveObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cleanupResponsiveObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getResponsiveProps",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "ColSize"
                }
              }
            },
            {
              "kind": "method",
              "name": "parseFlex",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "flex",
                  "type": {
                    "text": "FlexType"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateHostStyles",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "span",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to span (out of 24)",
              "fieldName": "span"
            },
            {
              "name": "offset",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to offset from the left",
              "fieldName": "offset"
            },
            {
              "name": "order",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Order of the column",
              "fieldName": "order"
            },
            {
              "name": "push",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to push from the left",
              "fieldName": "push"
            },
            {
              "name": "pull",
              "type": {
                "text": "ColSpanType | undefined"
              },
              "description": "Number of cells to pull from the right",
              "fieldName": "pull"
            },
            {
              "name": "flex",
              "type": {
                "text": "FlexType | undefined"
              },
              "description": "Flex layout style",
              "fieldName": "flex"
            },
            {
              "name": "xs",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xs screens (< 576px)",
              "fieldName": "xs"
            },
            {
              "name": "sm",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for sm screens (≥ 576px)",
              "fieldName": "sm"
            },
            {
              "name": "md",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for md screens (≥ 768px)",
              "fieldName": "md"
            },
            {
              "name": "lg",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for lg screens (≥ 992px)",
              "fieldName": "lg"
            },
            {
              "name": "xl",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xl screens (≥ 1200px)",
              "fieldName": "xl"
            },
            {
              "name": "xxl",
              "type": {
                "text": "ColSpanType | ColSize | undefined"
              },
              "description": "Responsive config for xxl screens (≥ 1600px)",
              "fieldName": "xxl"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Col component for grid layout system.",
          "tagNameWithoutPrefix": "col",
          "tagName": "sl-col",
          "customElement": true,
          "jsDoc": "/**\n * @summary Col component for grid layout system.\n * @documentation https://shoelace.style/components/col\n * @status stable\n * @since 2.0\n *\n * @slot - The default slot for content.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/col",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCol",
            "module": "components/col/col.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/color-picker/color-picker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlColorPicker",
          "cssProperties": [
            {
              "description": "The width of the color grid.",
              "name": "--grid-width"
            },
            {
              "description": "The height of the color grid.",
              "name": "--grid-height"
            },
            {
              "description": "The size of the color grid's handle.",
              "name": "--grid-handle-size"
            },
            {
              "description": "The height of the hue and alpha sliders.",
              "name": "--slider-height"
            },
            {
              "description": "The diameter of the slider's handle.",
              "name": "--slider-handle-size"
            },
            {
              "description": "The size of each predefined color swatch.",
              "name": "--swatch-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The color picker's dropdown trigger.",
              "name": "trigger"
            },
            {
              "description": "The container that holds the swatches.",
              "name": "swatches"
            },
            {
              "description": "Each individual swatch.",
              "name": "swatch"
            },
            {
              "description": "The color grid.",
              "name": "grid"
            },
            {
              "description": "The color grid's handle.",
              "name": "grid-handle"
            },
            {
              "description": "Hue and opacity sliders.",
              "name": "slider"
            },
            {
              "description": "Hue and opacity slider handles.",
              "name": "slider-handle"
            },
            {
              "description": "The hue slider.",
              "name": "hue-slider"
            },
            {
              "description": "The hue slider's handle.",
              "name": "hue-slider-handle"
            },
            {
              "description": "The opacity slider.",
              "name": "opacity-slider"
            },
            {
              "description": "The opacity slider's handle.",
              "name": "opacity-slider-handle"
            },
            {
              "description": "The preview color.",
              "name": "preview"
            },
            {
              "description": "The text input.",
              "name": "input"
            },
            {
              "description": "The eye dropper button.",
              "name": "eye-dropper-button"
            },
            {
              "description": "The eye dropper button's exported `button` part.",
              "name": "eye-dropper-button__base"
            },
            {
              "description": "The eye dropper button's exported `prefix` part.",
              "name": "eye-dropper-button__prefix"
            },
            {
              "description": "The eye dropper button's exported `label` part.",
              "name": "eye-dropper-button__label"
            },
            {
              "description": "The eye dropper button's exported `suffix` part.",
              "name": "eye-dropper-button__suffix"
            },
            {
              "description": "The eye dropper button's exported `caret` part.",
              "name": "eye-dropper-button__caret"
            },
            {
              "description": "The format button.",
              "name": "format-button"
            },
            {
              "description": "The format button's exported `button` part.",
              "name": "format-button__base"
            },
            {
              "description": "The format button's exported `prefix` part.",
              "name": "format-button__prefix"
            },
            {
              "description": "The format button's exported `label` part.",
              "name": "format-button__label"
            },
            {
              "description": "The format button's exported `suffix` part.",
              "name": "format-button__suffix"
            },
            {
              "description": "The format button's exported `caret` part.",
              "name": "format-button__caret"
            }
          ],
          "slots": [
            {
              "description": "The color picker's form label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-button-group': SlButtonGroup, 'sl-button': SlButton, 'sl-dropdown': SlDropdown, 'sl-icon': SlIcon, 'sl-input': SlInput, 'sl-visually-hidden': SlVisuallyHidden }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this)"
            },
            {
              "kind": "field",
              "name": "isSafeValue",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "SlInput"
              }
            },
            {
              "kind": "field",
              "name": "dropdown",
              "type": {
                "text": "SlDropdown"
              }
            },
            {
              "kind": "field",
              "name": "previewButton",
              "type": {
                "text": "HTMLButtonElement"
              }
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "HTMLButtonElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isDraggingGridHandle",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isEmpty",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "inputValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "hue",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "saturation",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "100"
            },
            {
              "kind": "field",
              "name": "brightness",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "100"
            },
            {
              "kind": "field",
              "name": "alpha",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "100"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the color picker. The value's format will vary based the `format` attribute. To get the value\nin a specific format, use the `getFormattedValue()` method. The value is submitted as a name/value pair with form\ndata.",
              "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": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The color picker's label. This will not be displayed, but it will be announced by assistive devices. If you need to\ndisplay HTML, you can use the `label` slot` instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "'hex' | 'rgb' | 'hsl' | 'hsv'"
              },
              "default": "'hex'",
              "description": "The format to use. If opacity is enabled, these will translate to HEXA, RGBA, HSLA, and HSVA respectively. The color\npicker will accept user input in any format (including CSS color names) and convert it to the desired format.",
              "attribute": "format"
            },
            {
              "kind": "field",
              "name": "inline",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders the color picker inline rather than in a dropdown.",
              "attribute": "inline",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "Determines the size of the color picker's trigger. This has no effect on inline color pickers.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "noFormatToggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the button that lets users toggle between format.",
              "attribute": "no-format-toggle"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the form control, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the color picker.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "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": "opacity",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows the opacity slider. Enabling this will cause the formatted value to be HEXA, RGBA, or HSLA.",
              "attribute": "opacity"
            },
            {
              "kind": "field",
              "name": "uppercase",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, values are lowercase. With this attribute, values will be uppercase instead.",
              "attribute": "uppercase"
            },
            {
              "kind": "field",
              "name": "swatches",
              "type": {
                "text": "string | string[]"
              },
              "default": "''",
              "description": "One or more predefined color swatches to display as presets in the color picker. Can include any format the color\npicker can parse, including HEX(A), RGB(A), HSL(A), HSV(A), and CSS color names. Each color must be separated by a\nsemicolon (`;`). Alternatively, you can pass an array of color values to this property using JavaScript.",
              "attribute": "swatches"
            },
            {
              "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 color picker a required field.",
              "attribute": "required",
              "reflects": true
            },
            {
              "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": "handleCopy",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocusIn",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocusOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFormatToggle",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleAlphaDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleHueDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleGridDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleAlphaKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleHueKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleGridKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "SlChangeEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "SlInputEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTouchMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "parseColor",
              "privacy": "private",
              "parameters": [
                {
                  "name": "colorString",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setColor",
              "privacy": "private",
              "parameters": [
                {
                  "name": "colorString",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setLetterCase",
              "privacy": "private",
              "parameters": [
                {
                  "name": "string",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncValues",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleAfterHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleEyeDropper",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectSwatch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "color",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getHexString",
              "privacy": "private",
              "parameters": [
                {
                  "name": "hue",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "saturation",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "brightness",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "alpha",
                  "default": "100"
                }
              ],
              "description": "Generates a hex string from HSV values. Hue must be 0-360. All other arguments must be 0-100."
            },
            {
              "kind": "method",
              "name": "stopNestedEventPropagation",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFormatChange"
            },
            {
              "kind": "method",
              "name": "handleOpacityChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange",
              "parameters": [
                {
                  "name": "oldValue",
                  "type": {
                    "text": "string | undefined"
                  }
                },
                {
                  "name": "newValue",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the color picker."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the color picker."
            },
            {
              "kind": "method",
              "name": "getFormattedValue",
              "parameters": [
                {
                  "name": "format",
                  "default": "'hex'",
                  "type": {
                    "text": "'hex' | 'hexa' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'hsv' | 'hsva'"
                  }
                }
              ],
              "description": "Returns the current value as a string in the specified format."
            },
            {
              "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 color picker loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the color picker's value changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the color picker receives focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the color picker 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": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the color picker. The value's format will vary based the `format` attribute. To get the value\nin a specific format, use the `getFormattedValue()` method. The value is submitted as a name/value pair with form\ndata.",
              "fieldName": "value"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The color picker's label. This will not be displayed, but it will be announced by assistive devices. If you need to\ndisplay HTML, you can use the `label` slot` instead.",
              "fieldName": "label"
            },
            {
              "name": "format",
              "type": {
                "text": "'hex' | 'rgb' | 'hsl' | 'hsv'"
              },
              "default": "'hex'",
              "description": "The format to use. If opacity is enabled, these will translate to HEXA, RGBA, HSLA, and HSVA respectively. The color\npicker will accept user input in any format (including CSS color names) and convert it to the desired format.",
              "fieldName": "format"
            },
            {
              "name": "inline",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Renders the color picker inline rather than in a dropdown.",
              "fieldName": "inline"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "Determines the size of the color picker's trigger. This has no effect on inline color pickers.",
              "fieldName": "size"
            },
            {
              "name": "no-format-toggle",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Removes the button that lets users toggle between format.",
              "fieldName": "noFormatToggle"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the form control, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the color picker.",
              "fieldName": "disabled"
            },
            {
              "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": "opacity",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows the opacity slider. Enabling this will cause the formatted value to be HEXA, RGBA, or HSLA.",
              "fieldName": "opacity"
            },
            {
              "name": "uppercase",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "By default, values are lowercase. With this attribute, values will be uppercase instead.",
              "fieldName": "uppercase"
            },
            {
              "name": "swatches",
              "type": {
                "text": "string | string[]"
              },
              "default": "''",
              "description": "One or more predefined color swatches to display as presets in the color picker. Can include any format the color\npicker can parse, including HEX(A), RGB(A), HSL(A), HSV(A), and CSS color names. Each color must be separated by a\nsemicolon (`;`). Alternatively, you can pass an array of color values to this property using JavaScript.",
              "fieldName": "swatches"
            },
            {
              "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 color picker a required field.",
              "fieldName": "required"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Color pickers allow the user to select a color.",
          "tagNameWithoutPrefix": "color-picker",
          "tagName": "sl-color-picker",
          "customElement": true,
          "jsDoc": "/**\n * @summary Color pickers allow the user to select a color.\n * @documentation https://shoelace.style/components/color-picker\n * @status stable\n * @since 2.0\n *\n * @dependency sl-button\n * @dependency sl-button-group\n * @dependency sl-dropdown\n * @dependency sl-input\n * @dependency sl-visually-hidden\n *\n * @slot label - The color picker's form label. Alternatively, you can use the `label` attribute.\n *\n * @event sl-blur - Emitted when the color picker loses focus.\n * @event sl-change - Emitted when the color picker's value changes.\n * @event sl-focus - Emitted when the color picker receives focus.\n * @event sl-input - Emitted when the color picker 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 trigger - The color picker's dropdown trigger.\n * @csspart swatches - The container that holds the swatches.\n * @csspart swatch - Each individual swatch.\n * @csspart grid - The color grid.\n * @csspart grid-handle - The color grid's handle.\n * @csspart slider - Hue and opacity sliders.\n * @csspart slider-handle - Hue and opacity slider handles.\n * @csspart hue-slider - The hue slider.\n * @csspart hue-slider-handle - The hue slider's handle.\n * @csspart opacity-slider - The opacity slider.\n * @csspart opacity-slider-handle - The opacity slider's handle.\n * @csspart preview - The preview color.\n * @csspart input - The text input.\n * @csspart eye-dropper-button - The eye dropper button.\n * @csspart eye-dropper-button__base - The eye dropper button's exported `button` part.\n * @csspart eye-dropper-button__prefix - The eye dropper button's exported `prefix` part.\n * @csspart eye-dropper-button__label - The eye dropper button's exported `label` part.\n * @csspart eye-dropper-button__suffix - The eye dropper button's exported `suffix` part.\n * @csspart eye-dropper-button__caret - The eye dropper button's exported `caret` part.\n * @csspart format-button - The format button.\n * @csspart format-button__base - The format button's exported `button` part.\n * @csspart format-button__prefix - The format button's exported `prefix` part.\n * @csspart format-button__label - The format button's exported `label` part.\n * @csspart format-button__suffix - The format button's exported `suffix` part.\n * @csspart format-button__caret - The format button's exported `caret` part.\n *\n * @cssproperty --grid-width - The width of the color grid.\n * @cssproperty --grid-height - The height of the color grid.\n * @cssproperty --grid-handle-size - The size of the color grid's handle.\n * @cssproperty --slider-height - The height of the hue and alpha sliders.\n * @cssproperty --slider-handle-size - The diameter of the slider's handle.\n * @cssproperty --swatch-size - The size of each predefined color swatch.\n */",
          "documentation": "https://shoelace.style/components/color-picker",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-button",
            "sl-button-group",
            "sl-dropdown",
            "sl-input",
            "sl-visually-hidden"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlColorPicker",
            "module": "components/color-picker/color-picker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/copy-button/copy-button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlCopyButton",
          "cssProperties": [
            {
              "description": "The color to use for success feedback.",
              "name": "--success-color"
            },
            {
              "description": "The color to use for error feedback.",
              "name": "--error-color"
            }
          ],
          "cssParts": [
            {
              "description": "The internal `<button>` element.",
              "name": "button"
            },
            {
              "description": "The container that holds the copy icon.",
              "name": "copy-icon"
            },
            {
              "description": "The container that holds the success icon.",
              "name": "success-icon"
            },
            {
              "description": "The container that holds the error icon.",
              "name": "error-icon"
            },
            {
              "description": "The tooltip's exported `base` part.",
              "name": "tooltip__base"
            },
            {
              "description": "The tooltip's exported `popup` part.",
              "name": "tooltip__base__popup"
            },
            {
              "description": "The tooltip's exported `arrow` part.",
              "name": "tooltip__base__arrow"
            },
            {
              "description": "The tooltip's exported `body` part.",
              "name": "tooltip__body"
            }
          ],
          "slots": [
            {
              "description": "The icon to show in the default copy state. Works best with `<sl-icon>`.",
              "name": "copy-icon"
            },
            {
              "description": "The icon to show when the content is copied. Works best with `<sl-icon>`.",
              "name": "success-icon"
            },
            {
              "description": "The icon to show when a copy error occurs. Works best with `<sl-icon>`.",
              "name": "error-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-tooltip': SlTooltip }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "copyIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "successIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "errorIcon",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "tooltip",
              "type": {
                "text": "SlTooltip"
              }
            },
            {
              "kind": "field",
              "name": "isCopying",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "'rest' | 'success' | 'error'"
              },
              "default": "'rest'"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text value to copy.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "from",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An id that references an element in the same document from which data will be copied. If both this and `value` are\npresent, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an\nattribute, append the attribute name wrapped in square brackets, e.g. `from=\"el[value]\"`. To copy a property,\nappend a dot and the property name, e.g. `from=\"el.value\"`.",
              "attribute": "from"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the copy button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "copyLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip.",
              "attribute": "copy-label"
            },
            {
              "kind": "field",
              "name": "successLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip after copying.",
              "attribute": "success-label"
            },
            {
              "kind": "field",
              "name": "errorLabel",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip when a copy error occurs.",
              "attribute": "error-label"
            },
            {
              "kind": "field",
              "name": "feedbackDuration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The length of time to show feedback before restoring the default trigger.",
              "attribute": "feedback-duration"
            },
            {
              "kind": "field",
              "name": "tooltipPlacement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip.",
              "attribute": "tooltip-placement"
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the tooltip from being clipped when the component is placed inside a container with\n`overflow: auto|hidden|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all,\nscenarios.",
              "attribute": "hoist"
            },
            {
              "kind": "method",
              "name": "handleCopy",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "showStatus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "'success' | 'error'"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "description": "Emitted when the data has been copied.",
              "name": "sl-copy",
              "reactName": "onSlCopy",
              "eventName": "SlCopyEvent"
            },
            {
              "description": "Emitted when the data could not be copied.",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The text value to copy.",
              "fieldName": "value"
            },
            {
              "name": "from",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "An id that references an element in the same document from which data will be copied. If both this and `value` are\npresent, this value will take precedence. By default, the target element's `textContent` will be copied. To copy an\nattribute, append the attribute name wrapped in square brackets, e.g. `from=\"el[value]\"`. To copy a property,\nappend a dot and the property name, e.g. `from=\"el.value\"`.",
              "fieldName": "from"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the copy button.",
              "fieldName": "disabled"
            },
            {
              "name": "copy-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip.",
              "fieldName": "copyLabel"
            },
            {
              "name": "success-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip after copying.",
              "fieldName": "successLabel"
            },
            {
              "name": "error-label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label to show in the tooltip when a copy error occurs.",
              "fieldName": "errorLabel"
            },
            {
              "name": "feedback-duration",
              "type": {
                "text": "number"
              },
              "default": "1000",
              "description": "The length of time to show feedback before restoring the default trigger.",
              "fieldName": "feedbackDuration"
            },
            {
              "name": "tooltip-placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip.",
              "fieldName": "tooltipPlacement"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the tooltip from being clipped when the component is placed inside a container with\n`overflow: auto|hidden|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all,\nscenarios.",
              "fieldName": "hoist"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Copies text data to the clipboard when the user clicks the trigger.",
          "tagNameWithoutPrefix": "copy-button",
          "tagName": "sl-copy-button",
          "customElement": true,
          "jsDoc": "/**\n * @summary Copies text data to the clipboard when the user clicks the trigger.\n * @documentation https://shoelace.style/components/copy\n * @status experimental\n * @since 2.7\n *\n * @dependency sl-icon\n * @dependency sl-tooltip\n *\n * @event sl-copy - Emitted when the data has been copied.\n * @event sl-error - Emitted when the data could not be copied.\n *\n * @slot copy-icon - The icon to show in the default copy state. Works best with `<sl-icon>`.\n * @slot success-icon - The icon to show when the content is copied. Works best with `<sl-icon>`.\n * @slot error-icon - The icon to show when a copy error occurs. Works best with `<sl-icon>`.\n *\n * @csspart button - The internal `<button>` element.\n * @csspart copy-icon - The container that holds the copy icon.\n * @csspart success-icon - The container that holds the success icon.\n * @csspart error-icon - The container that holds the error icon.\n * @csspart tooltip__base - The tooltip's exported `base` part.\n * @csspart tooltip__base__popup - The tooltip's exported `popup` part.\n * @csspart tooltip__base__arrow - The tooltip's exported `arrow` part.\n * @csspart tooltip__body - The tooltip's exported `body` part.\n *\n * @cssproperty --success-color - The color to use for success feedback.\n * @cssproperty --error-color - The color to use for error feedback.\n *\n * @animation copy.in - The animation to use when feedback icons animate in.\n * @animation copy.out - The animation to use when feedback icons animate out.\n */",
          "documentation": "https://shoelace.style/components/copy",
          "status": "experimental",
          "since": "2.7",
          "dependencies": [
            "sl-icon",
            "sl-tooltip"
          ],
          "animations": [
            {
              "name": "copy.in",
              "description": "The animation to use when feedback icons animate in."
            },
            {
              "name": "copy.out",
              "description": "The animation to use when feedback icons animate out."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlCopyButton",
            "module": "components/copy-button/copy-button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/date-panel/date-panel.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDatePanel",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-button': SlButton, 'sl-calendar-picker': SlCalendarPicker, 'sl-drawer': SlDrawer }"
            },
            {
              "kind": "field",
              "name": "calendar",
              "type": {
                "text": "SlCalendarPicker"
              }
            },
            {
              "kind": "field",
              "name": "yearColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "monthColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hourColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "minuteColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "secondColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'date' | 'datetime' | 'time' | 'year' | 'month'"
              },
              "default": "'date'",
              "attribute": "type"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "default": "'0001-01-01'",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "default": "'9999-12-31'",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "pickerView",
              "type": {
                "text": "'calendar' | 'wheel' | 'time'"
              },
              "privacy": "private",
              "default": "'calendar'"
            },
            {
              "kind": "field",
              "name": "wheelDate",
              "type": {
                "text": "Date"
              },
              "privacy": "private",
              "default": "new Date()"
            },
            {
              "kind": "field",
              "name": "yearScrollTop",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "string"
              },
              "default": "'HH:mm:ss'",
              "attribute": "format"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "handleMobileCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileClear",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDateSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleViewChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ view: string }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scrollToWheelDate",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleWheelScroll",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                },
                {
                  "name": "type",
                  "type": {
                    "text": "'year' | 'month' | 'hour' | 'minute' | 'second'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleWheelConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleWheelCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "parseValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "format",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toCalendarValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "将自定义格式的值转换为标准格式，供 calendar-picker 使用。\ncalendar-picker 只能解析标准格式（如 YYYY-MM-DD 或 YYYY-MM-DD HH:mm:ss）"
            },
            {
              "kind": "method",
              "name": "getEffectiveFormat",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            },
            {
              "kind": "method",
              "name": "renderMobileHeader",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderCalendar",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderWheelPicker",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderTimeWheelPicker",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "padStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "num",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "length",
                  "default": "2",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "name": "sl-cancel",
              "type": {
                "text": "CustomEvent"
              },
              "reactName": "onSlCancel",
              "eventName": "SlCancelEvent"
            },
            {
              "name": "sl-clear",
              "type": {
                "text": "CustomEvent"
              },
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            },
            {
              "name": "sl-confirm",
              "type": {
                "text": "CustomEvent"
              },
              "reactName": "onSlConfirm",
              "eventName": "SlConfirmEvent"
            },
            {
              "name": "sl-date-change",
              "type": {
                "text": "CustomEvent"
              },
              "reactName": "onSlDateChange",
              "eventName": "SlDateChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "open"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "value"
            },
            {
              "name": "type",
              "type": {
                "text": "'date' | 'datetime' | 'time' | 'year' | 'month'"
              },
              "default": "'date'",
              "fieldName": "type"
            },
            {
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "default": "'0001-01-01'",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "default": "'9999-12-31'",
              "fieldName": "max"
            },
            {
              "name": "format",
              "type": {
                "text": "string"
              },
              "default": "'HH:mm:ss'",
              "fieldName": "format"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "tagNameWithoutPrefix": "date-panel",
          "tagName": "sl-date-panel",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDatePanel",
            "module": "components/date-panel/date-panel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/datepicker/datepicker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDatepicker",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-button': SlButton, 'sl-calendar-picker': SlCalendarPicker, 'sl-date-panel': SlDatePanel, 'sl-drawer': SlDrawer, 'sl-popup': SlPopup, 'sl-input': SlInput as unknown as typeof ShoelaceElement }"
            },
            {
              "kind": "field",
              "name": "calendar",
              "type": {
                "text": "SlCalendarPicker"
              }
            },
            {
              "kind": "field",
              "name": "valueChangeDebounceTimer",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "_timeColumns",
              "type": {
                "text": "object"
              },
              "privacy": "private",
              "default": "{ showHour: false, showMinute: false, showSecond: false }"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'date' | 'datetime' | 'year' | 'month'"
              },
              "default": "'date'",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "string | string[] | undefined"
              },
              "description": "日期格式化字符串，支持以下占位符（与 dayjs/Ant Design 一致）：\n- YYYY: 4位数年份\n- MM: 2位数月份\n- DD: 2位数日期\n- HH: 24小时制小时\n- mm: 分钟\n- ss: 秒\n- hh: 12小时制小时\n- A: AM/PM\n也支持传入数组，允许输入框接受多种格式。\n默认值：type='date' 时为 'YYYY-MM-DD'，type='datetime' 时为 'YYYY-MM-DD HH:mm:ss'，type='year' 时为 'YYYY'，type='month' 时为 'YYYY-MM'",
              "attribute": "format"
            },
            {
              "kind": "field",
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "attribute": "pattern"
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "default": "'0001-01-01'",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "default": "'9999-12-31'",
              "attribute": "max"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "parseValue",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "formatValue",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "toCalendarValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "将自定义格式的值转换为标准格式，供 calendar-picker 使用。\ncalendar-picker 只能解析标准格式（如 YYYY-MM-DD 或 YYYY-MM-DD HH:mm:ss），\n因此需要先 parse 再用标准格式 format。"
            },
            {
              "kind": "method",
              "name": "getEffectiveFormats",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "获取所有有效的格式数组（有自定义 format 时返回 format 数组，否则返回 [type]）"
            },
            {
              "kind": "method",
              "name": "getDisplayFormat",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "获取用于显示的格式（第一个格式）"
            },
            {
              "kind": "method",
              "name": "isValidFormat",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isValidValue",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getInputPattern",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "getInputSuffixIconName",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "getTimeColumns",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ showHour: boolean; showMinute: boolean; showSecond: boolean }"
                }
              },
              "description": "根据显示格式计算时间列可见性"
            },
            {
              "kind": "method",
              "name": "shouldRevertOnBlur",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleInputInput",
              "privacy": "protected",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "blur"
            },
            {
              "kind": "method",
              "name": "handleInputKeyDown",
              "privacy": "protected",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "renderCalendar",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderPopup",
              "privacy": "private"
            }
          ],
          "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"
            },
            {
              "description": "Emitted when the clear button is activated.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            }
          ],
          "attributes": [
            {
              "name": "type",
              "type": {
                "text": "'date' | 'datetime' | 'year' | 'month'"
              },
              "default": "'date'",
              "fieldName": "type"
            },
            {
              "name": "format",
              "type": {
                "text": "string | string[] | undefined"
              },
              "description": "日期格式化字符串，支持以下占位符（与 dayjs/Ant Design 一致）：\n- YYYY: 4位数年份\n- MM: 2位数月份\n- DD: 2位数日期\n- HH: 24小时制小时\n- mm: 分钟\n- ss: 秒\n- hh: 12小时制小时\n- A: AM/PM\n也支持传入数组，允许输入框接受多种格式。\n默认值：type='date' 时为 'YYYY-MM-DD'，type='datetime' 时为 'YYYY-MM-DD HH:mm:ss'，type='year' 时为 'YYYY'，type='month' 时为 'YYYY-MM'",
              "fieldName": "format"
            },
            {
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "fieldName": "pattern"
            },
            {
              "name": "min",
              "type": {
                "text": "number | string"
              },
              "default": "'0001-01-01'",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number | string"
              },
              "default": "'9999-12-31'",
              "fieldName": "max"
            }
          ],
          "superclass": {
            "name": "PickerBase",
            "module": "/src/internal/picker.js"
          },
          "summary": "Datepickers allow users to select a date using a calendar interface.",
          "tagNameWithoutPrefix": "datepicker",
          "tagName": "sl-datepicker",
          "customElement": true,
          "jsDoc": "/**\n * @summary Datepickers allow users to select a date using a calendar interface.\n * @documentation https://shoelace.style/components/datepicker\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-button\n * @dependency sl-calendar-picker\n * @dependency sl-date-panel\n * @dependency sl-drawer\n * @dependency sl-popup\n * @dependency sl-input\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 * @event sl-clear - Emitted when the clear button is activated.\n */",
          "documentation": "https://shoelace.style/components/datepicker",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-button",
            "sl-calendar-picker",
            "sl-date-panel",
            "sl-drawer",
            "sl-popup",
            "sl-input"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDatepicker",
            "module": "components/datepicker/datepicker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/daterangepicker/daterangepicker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDaterangepicker",
          "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>` for the start date.",
              "name": "start-input"
            },
            {
              "description": "The internal `<input>` for the end date.",
              "name": "end-input"
            },
            {
              "description": "The separator between the two inputs.",
              "name": "separator"
            },
            {
              "description": "The container that wraps the suffix icon.",
              "name": "suffix"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The popup that contains the calendars.",
              "name": "popup"
            },
            {
              "description": "The container that wraps the calendars.",
              "name": "calendars"
            }
          ],
          "slots": [
            {
              "description": "The input'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": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup, 'sl-calendar-picker': SlCalendarPicker, 'sl-drawer': SlDrawer, 'sl-button': SlButton }"
            },
            {
              "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": "startInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "endInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "inputContainer",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "calendars",
              "type": {
                "text": "NodeListOf<SlCalendarPicker>"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isHovered",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "activeInput",
              "type": {
                "text": "'start' | 'end'"
              },
              "privacy": "private",
              "default": "'start'"
            },
            {
              "kind": "field",
              "name": "leftDate",
              "privacy": "private",
              "default": "new Date()"
            },
            {
              "kind": "field",
              "name": "rightDate",
              "privacy": "private",
              "default": "new Date(new Date().getFullYear(), new Date().getMonth() + 1, 1)"
            },
            {
              "kind": "field",
              "name": "startValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "endValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "calendarView",
              "type": {
                "text": "'days' | 'months' | 'years'"
              },
              "privacy": "private",
              "default": "'days'"
            },
            {
              "kind": "field",
              "name": "calendarViewAnchor",
              "type": {
                "text": "'left' | 'right'"
              },
              "privacy": "private",
              "default": "'left'"
            },
            {
              "kind": "field",
              "name": "syncingValue",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hoverDate",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "enableHoverRange",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "rangeEditTwoStep",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "rangeEditFirstSide",
              "type": {
                "text": "'start' | 'end' | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "rangeEditExpectedSide",
              "type": {
                "text": "'start' | 'end' | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "hasFocusSwitched",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "lastValidValue",
              "type": {
                "text": "[Date | null, Date | null]"
              },
              "privacy": "private",
              "default": "[null, null]"
            },
            {
              "kind": "field",
              "name": "isMobile",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "mobilePickerView",
              "type": {
                "text": "'calendar' | 'wheel' | 'time'"
              },
              "privacy": "private",
              "default": "'calendar'"
            },
            {
              "kind": "field",
              "name": "wheelDate",
              "type": {
                "text": "Date"
              },
              "privacy": "private",
              "default": "new Date()"
            },
            {
              "kind": "field",
              "name": "yearScrollTop",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "mobileOpenSnapshot",
              "type": {
                "text": "[Date | null, Date | null]"
              },
              "privacy": "private",
              "default": "[null, null]"
            },
            {
              "kind": "field",
              "name": "mobileInteracted",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "mobileHasSwitchedFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "pendingDate",
              "type": {
                "text": "Date | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "pendingSide",
              "type": {
                "text": "'start' | 'end' | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "yearColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "monthColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hourColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "minuteColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "secondColumn",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "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": "[Date | null, Date | null]"
              },
              "default": "[null, null]",
              "description": "The current value of the input, submitted as a name/value pair with form data.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "[Date | null, Date | null]"
              },
              "default": "[null, null]",
              "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": "true",
              "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, string]"
              },
              "default": "['开始日期', '结束日期']",
              "description": "Placeholder text for the two inputs. Accepts a string in the format \"startPlaceholder,endPlaceholder\"\nas an HTML attribute, or a [startPlaceholder, endPlaceholder] tuple when set via JavaScript.",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "startPlaceholder",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "endPlaceholder",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "attribute": "readonly",
              "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": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "attribute": "layout",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "startDate",
              "type": {
                "text": "Date | null"
              },
              "default": "null",
              "description": "The start date value."
            },
            {
              "kind": "field",
              "name": "endDate",
              "type": {
                "text": "Date | null"
              },
              "default": "null",
              "description": "The end date value."
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'date' | 'datetime'"
              },
              "default": "'date'",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "'0001-01-01'",
              "description": "The minimum allowed date (in YYYY-MM-DD format).",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "'9999-12-31'",
              "description": "The maximum allowed date (in YYYY-MM-DD format).",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "string | string[] | undefined"
              },
              "description": "日期格式化字符串，支持以下占位符（与 dayjs/Ant Design 一致）：\n- YYYY: 4位数年份\n- MM: 2位数月份\n- DD: 2位数日期\n- HH: 24小时制小时\n- mm: 分钟\n- ss: 秒\n- hh: 12小时制小时\n- A: AM/PM\n也支持传入数组，允许输入框接受多种格式。\n默认值：type='date' 时为 'YYYY-MM-DD'，type='datetime' 时为 'YYYY-MM-DD HH:mm:ss'",
              "attribute": "format"
            },
            {
              "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": "handleResize",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDocumentMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "checkValidity",
              "description": "检查有效性并触发 sl-invalid 事件（如果无效）"
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              },
              "description": "获取表单引用"
            },
            {
              "kind": "method",
              "name": "reportValidity",
              "description": "检查有效性并显示浏览器原生的有效性提示"
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "设置自定义有效性消息"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "聚焦到开始日期输入框并打开面板"
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "移除焦点并关闭面板"
            },
            {
              "kind": "method",
              "name": "getDisplayFormat",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "获取用于显示的格式（第一个格式）"
            },
            {
              "kind": "method",
              "name": "getEffectiveFormats",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "获取所有有效的格式数组"
            },
            {
              "kind": "method",
              "name": "getTimeColumns",
              "privacy": "private",
              "description": "根据格式获取时间列的显示配置"
            },
            {
              "kind": "method",
              "name": "updateValueTuple",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "parseDateInput",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "parseLimit",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isWithinMinMax",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isValidCommittedRange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "start",
                  "type": {
                    "text": "Date | null"
                  }
                },
                {
                  "name": "end",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isSameValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "a",
                  "type": {
                    "text": "[Date | null, Date | null]"
                  }
                },
                {
                  "name": "b",
                  "type": {
                    "text": "[Date | null, Date | null]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "revertToLastValid",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "commitOrRevertInputValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "applyRange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "start",
                  "type": {
                    "text": "Date | null"
                  }
                },
                {
                  "name": "end",
                  "type": {
                    "text": "Date | null"
                  }
                },
                {
                  "name": "updateValue",
                  "default": "true"
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncCalendarsToValue",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "handleValueUpdate"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isValidFormat",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInputKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClearClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleBaseClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateDateRange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  },
                  "description": "新选中的日期"
                },
                {
                  "name": "side",
                  "type": {
                    "text": "'start' | 'end'"
                  },
                  "description": "当前操作的是起点还是终点"
                }
              ],
              "description": "更新日期范围的通用逻辑"
            },
            {
              "kind": "method",
              "name": "applySelectedDate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "selectedDate",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date; column?: string }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleReadonlyChange"
            },
            {
              "kind": "method",
              "name": "addMonths",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "day",
                  "default": "1"
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncCalendarsToInputDate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "side",
                  "default": "'start'",
                  "type": {
                    "text": "'start' | 'end'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCalendarViewChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date; view: string }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "normalizeToDay",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "Date"
                }
              },
              "parameters": [
                {
                  "name": "d",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isDateDisabledByRange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ],
              "description": "根据 activeInput 方向检查日期是否被范围禁用"
            },
            {
              "kind": "method",
              "name": "isDateDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getCalendarRange",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "[Date | null, Date | null]"
                }
              }
            },
            {
              "kind": "method",
              "name": "normalizeCalendarDate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isMobileDateDisabled",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMobileCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileClear",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileDateSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncMobileCalendarToActive",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMobileFooterClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "side",
                  "type": {
                    "text": "'start' | 'end'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMobileViewChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date; view: string }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "scrollToWheelDate",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleWheelScroll",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                },
                {
                  "name": "type",
                  "type": {
                    "text": "'year' | 'month'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleWheelConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleWheelCancel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "scrollToTimeWheelDate",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTimeWheelScroll",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                },
                {
                  "name": "type",
                  "type": {
                    "text": "'hour' | 'minute' | 'second'"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "applyMobileDateWithFocusSwitch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                },
                {
                  "name": "side",
                  "type": {
                    "text": "'start' | 'end'"
                  }
                }
              ],
              "description": "移动端选择日期后的通用焦点切换逻辑\n被 handleMobileDateSelect（date模式）和 handleTimeWheelConfirm（datetime模式）共享"
            },
            {
              "kind": "method",
              "name": "handleTimeWheelConfirm",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "padStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "num",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "length",
                  "default": "2"
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderMobileTimeWheelPicker",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderMobileCalendarContent",
              "privacy": "private",
              "parameters": [
                {
                  "name": "displayStartDate",
                  "type": {
                    "text": "Date | null"
                  }
                },
                {
                  "name": "displayEndDate",
                  "type": {
                    "text": "Date | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderMobileHeader",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderMobileFooter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "{\n    activeSide?: 'start' | 'end';\n    startDisplay?: string;\n    endDisplay?: string;\n    clickable?: boolean;\n  }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderMobileWheelPicker",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderMobile",
              "privacy": "private"
            }
          ],
          "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"
            },
            {
              "description": "Emitted when the clear button is activated.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            }
          ],
          "attributes": [
            {
              "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": "[Date | null, Date | null]"
              },
              "default": "[null, null]",
              "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": "true",
              "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, string]"
              },
              "default": "['开始日期', '结束日期']",
              "description": "Placeholder text for the two inputs. Accepts a string in the format \"startPlaceholder,endPlaceholder\"\nas an HTML attribute, or a [startPlaceholder, endPlaceholder] tuple when set via JavaScript.",
              "fieldName": "placeholder"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the input a required field.",
              "fieldName": "required"
            },
            {
              "name": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "fieldName": "layout"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "fieldName": "variant"
            },
            {
              "name": "type",
              "type": {
                "text": "'date' | 'datetime'"
              },
              "default": "'date'",
              "fieldName": "type"
            },
            {
              "name": "min",
              "type": {
                "text": "string"
              },
              "default": "'0001-01-01'",
              "description": "The minimum allowed date (in YYYY-MM-DD format).",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "string"
              },
              "default": "'9999-12-31'",
              "description": "The maximum allowed date (in YYYY-MM-DD format).",
              "fieldName": "max"
            },
            {
              "name": "format",
              "type": {
                "text": "string | string[] | undefined"
              },
              "description": "日期格式化字符串，支持以下占位符（与 dayjs/Ant Design 一致）：\n- YYYY: 4位数年份\n- MM: 2位数月份\n- DD: 2位数日期\n- HH: 24小时制小时\n- mm: 分钟\n- ss: 秒\n- hh: 12小时制小时\n- A: AM/PM\n也支持传入数组，允许输入框接受多种格式。\n默认值：type='date' 时为 'YYYY-MM-DD'，type='datetime' 时为 'YYYY-MM-DD HH:mm:ss'",
              "fieldName": "format"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Date range inputs allow users to select a range of dates.",
          "tagNameWithoutPrefix": "daterangepicker",
          "tagName": "sl-daterangepicker",
          "customElement": true,
          "jsDoc": "/**\n * @summary Date range inputs allow users to select a range of dates.\n * @documentation https://shoelace.style/components/daterangepicker\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-popup\n * @dependency sl-calendar-picker\n *\n * @slot label - The input'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 * @event sl-clear - Emitted when the clear button is activated.\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 start-input - The internal `<input>` for the start date.\n * @csspart end-input - The internal `<input>` for the end date.\n * @csspart separator - The separator between the two inputs.\n * @csspart suffix - The container that wraps the suffix icon.\n * @csspart clear-button - The clear button.\n * @csspart popup - The popup that contains the calendars.\n * @csspart calendars - The container that wraps the calendars.\n */",
          "documentation": "https://shoelace.style/components/daterangepicker",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-popup",
            "sl-calendar-picker"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDaterangepicker",
            "module": "components/daterangepicker/daterangepicker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/details/details.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDetails",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The header that wraps both the summary and the expand/collapse icon.",
              "name": "header"
            },
            {
              "description": "The container that wraps the summary.",
              "name": "summary"
            },
            {
              "description": "The container that wraps the expand/collapse icons.",
              "name": "summary-icon"
            },
            {
              "description": "The details content.",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The details' main content.",
              "name": ""
            },
            {
              "description": "The details' summary. Alternatively, you can use the `summary` attribute.",
              "name": "summary"
            },
            {
              "description": "Optional expand icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "expand-icon"
            },
            {
              "description": "Optional collapse icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "collapse-icon"
            }
          ],
          "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": "details",
              "type": {
                "text": "HTMLDetailsElement"
              }
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "expandIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "detailsObserver",
              "type": {
                "text": "MutationObserver"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the details is open. You can toggle this attribute to show and hide the details, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the details' open state.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "summary",
              "type": {
                "text": "string"
              },
              "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
              "attribute": "summary"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the details so it can't be toggled.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleSummaryClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSummaryKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the details."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the details"
            }
          ],
          "events": [
            {
              "description": "Emitted when the details opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the details opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the details closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the details 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 details is open. You can toggle this attribute to show and hide the details, or you\ncan use the `show()` and `hide()` methods and this attribute will reflect the details' open state.",
              "fieldName": "open"
            },
            {
              "name": "summary",
              "type": {
                "text": "string"
              },
              "description": "The summary to show in the header. If you need to display HTML, use the `summary` slot instead.",
              "fieldName": "summary"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the details so it can't be toggled.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Details show a brief summary and expand to show additional content.",
          "tagNameWithoutPrefix": "details",
          "tagName": "sl-details",
          "customElement": true,
          "jsDoc": "/**\n * @summary Details show a brief summary and expand to show additional content.\n * @documentation https://shoelace.style/components/details\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot - The details' main content.\n * @slot summary - The details' summary. Alternatively, you can use the `summary` attribute.\n * @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<sl-icon>`.\n * @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<sl-icon>`.\n *\n * @event sl-show - Emitted when the details opens.\n * @event sl-after-show - Emitted after the details opens and all animations are complete.\n * @event sl-hide - Emitted when the details closes.\n * @event sl-after-hide - Emitted after the details closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The header that wraps both the summary and the expand/collapse icon.\n * @csspart summary - The container that wraps the summary.\n * @csspart summary-icon - The container that wraps the expand/collapse icons.\n * @csspart content - The details content.\n *\n * @animation details.show - The animation to use when showing details. You can use `height: auto` with this animation.\n * @animation details.hide - The animation to use when hiding details. You can use `height: auto` with this animation.\n */",
          "documentation": "https://shoelace.style/components/details",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ],
          "animations": [
            {
              "name": "details.show",
              "description": "The animation to use when showing details. You can use `height: auto` with this animation."
            },
            {
              "name": "details.hide",
              "description": "The animation to use when hiding details. You can use `height: auto` with this animation."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDetails",
            "module": "components/details/details.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": "resize",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is resizable. When true, the user can resize the dialog by dragging the\nbottom-right corner, and double-clicking the header will toggle fullscreen mode.",
              "attribute": "resize",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is in fullscreen mode.",
              "attribute": "fullscreen",
              "reflects": true
            },
            {
              "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": "field",
              "name": "maskClosable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Indicates whether or not the dialog can be closed by clicking the overlay. When set to false, clicking the overlay\nwill not close the dialog.",
              "attribute": "mask-closable",
              "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": "handleHeaderDoubleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleOverlayClick",
              "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": "resize",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is resizable. When true, the user can resize the dialog by dragging the\nbottom-right corner, and double-clicking the header will toggle fullscreen mode.",
              "fieldName": "resize"
            },
            {
              "name": "fullscreen",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the dialog is in fullscreen mode.",
              "fieldName": "fullscreen"
            },
            {
              "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"
            },
            {
              "name": "mask-closable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Indicates whether or not the dialog can be closed by clicking the overlay. When set to false, clicking the overlay\nwill not close the dialog.",
              "fieldName": "maskClosable"
            }
          ],
          "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/divider/divider.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlDivider",
          "cssProperties": [
            {
              "description": "The color of the divider.",
              "name": "--color"
            },
            {
              "description": "The width of the divider.",
              "name": "--width"
            },
            {
              "description": "The spacing of the divider.",
              "name": "--spacing"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "vertical",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the divider in a vertical orientation.",
              "attribute": "vertical",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleVerticalChange"
            }
          ],
          "attributes": [
            {
              "name": "vertical",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the divider in a vertical orientation.",
              "fieldName": "vertical"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Dividers are used to visually separate or group elements.",
          "tagNameWithoutPrefix": "divider",
          "tagName": "sl-divider",
          "customElement": true,
          "jsDoc": "/**\n * @summary Dividers are used to visually separate or group elements.\n * @documentation https://shoelace.style/components/divider\n * @status stable\n * @since 2.0\n *\n * @cssproperty --color - The color of the divider.\n * @cssproperty --width - The width of the divider.\n * @cssproperty --spacing - The spacing of the divider.\n */",
          "documentation": "https://shoelace.style/components/divider",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlDivider",
            "module": "components/divider/divider.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/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/float-button/float-button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlFloatButton",
          "cssParts": [
            {
              "description": "The button's base wrapper.",
              "name": "base"
            },
            {
              "description": "The icon container.",
              "name": "icon"
            },
            {
              "description": "The text content container.",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The button's icon content.",
              "name": ""
            },
            {
              "description": "Optional text content (only visible when shape is square).",
              "name": "content"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon as unknown as typeof ShoelaceEl, 'sl-tooltip': SlTooltip }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'content')"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'default' | 'primary'"
              },
              "default": "'default'",
              "description": "The button's type.",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'circle' | 'square'"
              },
              "default": "'circle'",
              "description": "The button's shape.",
              "attribute": "shape",
              "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": "icon",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the icon to display (from the registered icon library).",
              "attribute": "icon"
            },
            {
              "kind": "field",
              "name": "tooltip",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Tooltip text shown on hover.",
              "attribute": "tooltip"
            },
            {
              "kind": "field",
              "name": "tooltipPlacement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'left'",
              "description": "Tooltip placement.",
              "attribute": "tooltip-placement"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "When set, the button will render as an anchor tag with this URL.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Where to display the linked URL (only used when href is set).",
              "attribute": "target"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderBody",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderButton",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "Emitted when the button is clicked.",
              "name": "sl-click",
              "reactName": "onSlClick",
              "eventName": "SlClickEvent"
            }
          ],
          "attributes": [
            {
              "name": "type",
              "type": {
                "text": "'default' | 'primary'"
              },
              "default": "'default'",
              "description": "The button's type.",
              "fieldName": "type"
            },
            {
              "name": "shape",
              "type": {
                "text": "'circle' | 'square'"
              },
              "default": "'circle'",
              "description": "The button's shape.",
              "fieldName": "shape"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The button's size.",
              "fieldName": "size"
            },
            {
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the icon to display (from the registered icon library).",
              "fieldName": "icon"
            },
            {
              "name": "tooltip",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Tooltip text shown on hover.",
              "fieldName": "tooltip"
            },
            {
              "name": "tooltip-placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'left'",
              "description": "Tooltip placement.",
              "fieldName": "tooltipPlacement"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the button.",
              "fieldName": "disabled"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "When set, the button will render as an anchor tag with this URL.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Where to display the linked URL (only used when href is set).",
              "fieldName": "target"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A floating action button that stays fixed on the page.",
          "tagNameWithoutPrefix": "float-button",
          "tagName": "sl-float-button",
          "customElement": true,
          "jsDoc": "/**\n * @summary A floating action button that stays fixed on the page.\n * @documentation https://shoelace.style/components/float-button\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-tooltip\n *\n * @event sl-click - Emitted when the button is clicked.\n *\n * @slot - The button's icon content.\n * @slot content - Optional text content (only visible when shape is square).\n *\n * @csspart base - The button's base wrapper.\n * @csspart icon - The icon container.\n * @csspart content - The text content container.\n */",
          "documentation": "https://shoelace.style/components/float-button",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-tooltip"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlFloatButton",
            "module": "components/float-button/float-button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/float-button-group/float-button-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlFloatButtonGroup",
          "cssParts": [
            {
              "description": "The group's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container for the float button items.",
              "name": "list"
            },
            {
              "description": "The trigger button (menu mode only).",
              "name": "trigger"
            },
            {
              "description": "The trigger button's icon.",
              "name": "trigger-icon"
            }
          ],
          "slots": [
            {
              "description": "The float buttons to display.",
              "name": ""
            },
            {
              "description": "Custom icon for the trigger button.",
              "name": "trigger-icon"
            },
            {
              "description": "Custom icon shown when the menu is open.",
              "name": "close-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon as unknown as typeof ShoelaceEl }"
            },
            {
              "kind": "field",
              "name": "isOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "openSetExternally",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'circle' | 'square'"
              },
              "default": "'circle'",
              "description": "The shape applied to all child float buttons.",
              "attribute": "shape",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "'click' | 'hover' | ''"
              },
              "default": "''",
              "description": "The trigger mode for menu. When set, shows a trigger button that toggles the menu.",
              "attribute": "trigger",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the menu is open (controlled mode, use with trigger).",
              "attribute": "open"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The direction the menu items expand.",
              "attribute": "placement"
            },
            {
              "kind": "method",
              "name": "handleOpenPropChange"
            },
            {
              "kind": "method",
              "name": "syncChildAttributes"
            },
            {
              "kind": "method",
              "name": "handleDocumentClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTriggerMouseEnter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleGroupMouseLeave",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setOpen",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "Emitted when the menu opens (menu mode only).",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted when the menu closes (menu mode only).",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "shape",
              "type": {
                "text": "'circle' | 'square'"
              },
              "default": "'circle'",
              "description": "The shape applied to all child float buttons.",
              "fieldName": "shape"
            },
            {
              "name": "trigger",
              "type": {
                "text": "'click' | 'hover' | ''"
              },
              "default": "''",
              "description": "The trigger mode for menu. When set, shows a trigger button that toggles the menu.",
              "fieldName": "trigger"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the menu is open (controlled mode, use with trigger).",
              "fieldName": "open"
            },
            {
              "name": "placement",
              "type": {
                "text": "'top' | 'right' | 'bottom' | 'left'"
              },
              "default": "'top'",
              "description": "The direction the menu items expand.",
              "fieldName": "placement"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Groups multiple float buttons together, with optional menu trigger.",
          "tagNameWithoutPrefix": "float-button-group",
          "tagName": "sl-float-button-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary Groups multiple float buttons together, with optional menu trigger.\n * @documentation https://shoelace.style/components/float-button-group\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @event sl-show - Emitted when the menu opens (menu mode only).\n * @event sl-hide - Emitted when the menu closes (menu mode only).\n *\n * @slot - The float buttons to display.\n * @slot trigger-icon - Custom icon for the trigger button.\n * @slot close-icon - Custom icon shown when the menu is open.\n *\n * @csspart base - The group's base wrapper.\n * @csspart list - The container for the float button items.\n * @csspart trigger - The trigger button (menu mode only).\n * @csspart trigger-icon - The trigger button's icon.\n */",
          "documentation": "https://shoelace.style/components/float-button-group",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlFloatButtonGroup",
            "module": "components/float-button-group/float-button-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-bytes/format-bytes.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlFormatBytes",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format in bytes.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "unit",
              "type": {
                "text": "'byte' | 'bit'"
              },
              "default": "'byte'",
              "description": "The type of unit to display.",
              "attribute": "unit"
            },
            {
              "kind": "field",
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'short'",
              "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
              "attribute": "display"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format in bytes.",
              "fieldName": "value"
            },
            {
              "name": "unit",
              "type": {
                "text": "'byte' | 'bit'"
              },
              "default": "'byte'",
              "description": "The type of unit to display.",
              "fieldName": "unit"
            },
            {
              "name": "display",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'short'",
              "description": "Determines how to display the result, e.g. \"100 bytes\", \"100 b\", or \"100b\".",
              "fieldName": "display"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Formats a number as a human readable bytes value.",
          "tagNameWithoutPrefix": "format-bytes",
          "tagName": "sl-format-bytes",
          "customElement": true,
          "jsDoc": "/**\n * @summary Formats a number as a human readable bytes value.\n * @documentation https://shoelace.style/components/format-bytes\n * @status stable\n * @since 2.0\n */",
          "documentation": "https://shoelace.style/components/format-bytes",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlFormatBytes",
            "module": "components/format-bytes/format-bytes.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-date/format-date.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlFormatDate",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "date",
              "type": {
                "text": "Date | string"
              },
              "default": "new Date()",
              "description": "The date/time to format. If not set, the current date and time will be used. When passing a string, it's strongly\nrecommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format\nin JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "attribute": "date"
            },
            {
              "kind": "field",
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the weekday.",
              "attribute": "weekday"
            },
            {
              "kind": "field",
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the era.",
              "attribute": "era"
            },
            {
              "kind": "field",
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the year.",
              "attribute": "year"
            },
            {
              "kind": "field",
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the month.",
              "attribute": "month"
            },
            {
              "kind": "field",
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the day.",
              "attribute": "day"
            },
            {
              "kind": "field",
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the hour.",
              "attribute": "hour"
            },
            {
              "kind": "field",
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the minute.",
              "attribute": "minute"
            },
            {
              "kind": "field",
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the second.",
              "attribute": "second"
            },
            {
              "kind": "field",
              "name": "timeZoneName",
              "type": {
                "text": "'short' | 'long'"
              },
              "description": "The format for displaying the time.",
              "attribute": "time-zone-name"
            },
            {
              "kind": "field",
              "name": "timeZone",
              "type": {
                "text": "string"
              },
              "description": "The time zone to express the time in.",
              "attribute": "time-zone"
            },
            {
              "kind": "field",
              "name": "hourFormat",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "The format for displaying the hour.",
              "attribute": "hour-format"
            }
          ],
          "attributes": [
            {
              "name": "date",
              "type": {
                "text": "Date | string"
              },
              "default": "new Date()",
              "description": "The date/time to format. If not set, the current date and time will be used. When passing a string, it's strongly\nrecommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert a date to this format\nin JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "fieldName": "date"
            },
            {
              "name": "weekday",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the weekday.",
              "fieldName": "weekday"
            },
            {
              "name": "era",
              "type": {
                "text": "'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the era.",
              "fieldName": "era"
            },
            {
              "name": "year",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the year.",
              "fieldName": "year"
            },
            {
              "name": "month",
              "type": {
                "text": "'numeric' | '2-digit' | 'narrow' | 'short' | 'long'"
              },
              "description": "The format for displaying the month.",
              "fieldName": "month"
            },
            {
              "name": "day",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the day.",
              "fieldName": "day"
            },
            {
              "name": "hour",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the hour.",
              "fieldName": "hour"
            },
            {
              "name": "minute",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the minute.",
              "fieldName": "minute"
            },
            {
              "name": "second",
              "type": {
                "text": "'numeric' | '2-digit'"
              },
              "description": "The format for displaying the second.",
              "fieldName": "second"
            },
            {
              "name": "time-zone-name",
              "type": {
                "text": "'short' | 'long'"
              },
              "description": "The format for displaying the time.",
              "fieldName": "timeZoneName"
            },
            {
              "name": "time-zone",
              "type": {
                "text": "string"
              },
              "description": "The time zone to express the time in.",
              "fieldName": "timeZone"
            },
            {
              "name": "hour-format",
              "type": {
                "text": "'auto' | '12' | '24'"
              },
              "default": "'auto'",
              "description": "The format for displaying the hour.",
              "fieldName": "hourFormat"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Formats a date/time using the specified locale and options.",
          "tagNameWithoutPrefix": "format-date",
          "tagName": "sl-format-date",
          "customElement": true,
          "jsDoc": "/**\n * @summary Formats a date/time using the specified locale and options.\n * @documentation https://shoelace.style/components/format-date\n * @status stable\n * @since 2.0\n */",
          "documentation": "https://shoelace.style/components/format-date",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlFormatDate",
            "module": "components/format-date/format-date.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/format-number/format-number.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlFormatNumber",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "'currency' | 'decimal' | 'percent'"
              },
              "default": "'decimal'",
              "description": "The formatting style to use.",
              "attribute": "type"
            },
            {
              "kind": "field",
              "name": "noGrouping",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns off grouping separators.",
              "attribute": "no-grouping"
            },
            {
              "kind": "field",
              "name": "currency",
              "type": {
                "text": "string"
              },
              "default": "'USD'",
              "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
              "attribute": "currency"
            },
            {
              "kind": "field",
              "name": "currencyDisplay",
              "type": {
                "text": "'symbol' | 'narrowSymbol' | 'code' | 'name'"
              },
              "default": "'symbol'",
              "description": "How to display the currency.",
              "attribute": "currency-display"
            },
            {
              "kind": "field",
              "name": "minimumIntegerDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of integer digits to use. Possible values are 1-21.",
              "attribute": "minimum-integer-digits"
            },
            {
              "kind": "field",
              "name": "minimumFractionDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of fraction digits to use. Possible values are 0-20.",
              "attribute": "minimum-fraction-digits"
            },
            {
              "kind": "field",
              "name": "maximumFractionDigits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of fraction digits to use. Possible values are 0-0.",
              "attribute": "maximum-fraction-digits"
            },
            {
              "kind": "field",
              "name": "minimumSignificantDigits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of significant digits to use. Possible values are 1-21.",
              "attribute": "minimum-significant-digits"
            },
            {
              "kind": "field",
              "name": "maximumSignificantDigits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of significant digits to use,. Possible values are 1-21.",
              "attribute": "maximum-significant-digits"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The number to format.",
              "fieldName": "value"
            },
            {
              "name": "type",
              "type": {
                "text": "'currency' | 'decimal' | 'percent'"
              },
              "default": "'decimal'",
              "description": "The formatting style to use.",
              "fieldName": "type"
            },
            {
              "name": "no-grouping",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Turns off grouping separators.",
              "fieldName": "noGrouping"
            },
            {
              "name": "currency",
              "type": {
                "text": "string"
              },
              "default": "'USD'",
              "description": "The [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code to use when formatting.",
              "fieldName": "currency"
            },
            {
              "name": "currency-display",
              "type": {
                "text": "'symbol' | 'narrowSymbol' | 'code' | 'name'"
              },
              "default": "'symbol'",
              "description": "How to display the currency.",
              "fieldName": "currencyDisplay"
            },
            {
              "name": "minimum-integer-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of integer digits to use. Possible values are 1-21.",
              "fieldName": "minimumIntegerDigits"
            },
            {
              "name": "minimum-fraction-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of fraction digits to use. Possible values are 0-20.",
              "fieldName": "minimumFractionDigits"
            },
            {
              "name": "maximum-fraction-digits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of fraction digits to use. Possible values are 0-0.",
              "fieldName": "maximumFractionDigits"
            },
            {
              "name": "minimum-significant-digits",
              "type": {
                "text": "number"
              },
              "description": "The minimum number of significant digits to use. Possible values are 1-21.",
              "fieldName": "minimumSignificantDigits"
            },
            {
              "name": "maximum-significant-digits",
              "type": {
                "text": "number"
              },
              "description": "The maximum number of significant digits to use,. Possible values are 1-21.",
              "fieldName": "maximumSignificantDigits"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Formats a number using the specified locale and options.",
          "tagNameWithoutPrefix": "format-number",
          "tagName": "sl-format-number",
          "customElement": true,
          "jsDoc": "/**\n * @summary Formats a number using the specified locale and options.\n * @documentation https://shoelace.style/components/format-number\n * @status stable\n * @since 2.0\n */",
          "documentation": "https://shoelace.style/components/format-number",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlFormatNumber",
            "module": "components/format-number/format-number.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/image/image.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlImage",
          "cssParts": [
            {
              "description": "组件根容器",
              "name": "base"
            },
            {
              "description": "图片元素",
              "name": "img"
            },
            {
              "description": "遮罩层",
              "name": "cover"
            },
            {
              "description": "预览遮罩背景",
              "name": "preview-mask"
            },
            {
              "description": "预览主体",
              "name": "preview-body"
            },
            {
              "description": "预览图片",
              "name": "preview-img"
            },
            {
              "description": "预览工具栏",
              "name": "preview-actions"
            },
            {
              "description": "预览关闭按钮",
              "name": "preview-close"
            }
          ],
          "slots": [
            {
              "description": "自定义遮罩层内容",
              "name": "cover"
            },
            {
              "description": "自定义加载占位内容",
              "name": "placeholder"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "图片地址",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "alt",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "图片替代文本",
              "attribute": "alt"
            },
            {
              "kind": "field",
              "name": "width",
              "type": {
                "text": "string | undefined"
              },
              "description": "图片宽度",
              "attribute": "width"
            },
            {
              "kind": "field",
              "name": "height",
              "type": {
                "text": "string | undefined"
              },
              "description": "图片高度",
              "attribute": "height"
            },
            {
              "kind": "field",
              "name": "fallback",
              "type": {
                "text": "string | undefined"
              },
              "description": "加载失败时的回退图片地址",
              "attribute": "fallback"
            },
            {
              "kind": "field",
              "name": "placeholder",
              "type": {
                "text": "boolean | string | undefined"
              },
              "description": "加载占位图；设为 true 显示默认占位符，设为字符串则作为占位图片 src",
              "attribute": "placeholder"
            },
            {
              "kind": "field",
              "name": "noPreview",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用预览",
              "attribute": "no-preview"
            },
            {
              "kind": "field",
              "name": "preview",
              "type": {
                "text": "SlImagePreviewConfig | undefined"
              },
              "description": "预览配置",
              "attribute": "preview"
            },
            {
              "kind": "field",
              "name": "inGroup",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否在 group 中（由 sl-image-preview-group 自动设置）",
              "attribute": "in-group",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_status",
              "type": {
                "text": "'loading' | 'loaded' | 'error'"
              },
              "privacy": "private",
              "default": "'loading'",
              "description": "图片加载状态"
            },
            {
              "kind": "field",
              "name": "_previewOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "预览是否打开"
            },
            {
              "kind": "field",
              "name": "_previewClosing",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "预览是否正在关闭（动画）"
            },
            {
              "kind": "field",
              "name": "_transform",
              "type": {
                "text": "object"
              },
              "privacy": "private",
              "default": "{ scale: 1, rotate: 0, flipX: 1, flipY: 1, x: 0, y: 0 }",
              "description": "预览变换状态"
            },
            {
              "kind": "field",
              "name": "_isDragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "是否正在拖拽"
            },
            {
              "kind": "field",
              "name": "_dragStart",
              "type": {
                "text": "object"
              },
              "privacy": "private",
              "default": "{ x: 0, y: 0, tx: 0, ty: 0 }"
            },
            {
              "kind": "field",
              "name": "_boundMouseMove",
              "type": {
                "text": "((e: MouseEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundMouseUp",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundKeyDown",
              "type": {
                "text": "((e: KeyboardEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundWheel",
              "type": {
                "text": "((e: WheelEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundTouchMove",
              "type": {
                "text": "((e: TouchEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundTouchEnd",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_prevControlledOpen",
              "type": {
                "text": "boolean | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "上一次受控模式的 open 值，用于检测外部变化"
            },
            {
              "kind": "field",
              "name": "_rafId",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "raf 帧 ID，用于合并同一帧内的多次变换更新"
            },
            {
              "kind": "field",
              "name": "_pendingTransform",
              "type": {
                "text": "Partial<typeof this._transform> | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "raf 队列中待合并的变换"
            },
            {
              "kind": "field",
              "name": "_portalContainer",
              "type": {
                "text": "HTMLDivElement | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "预览弹层的 portal 容器，挂载到 document.body，使得宿主 display:none 时预览仍可渲染"
            },
            {
              "kind": "field",
              "name": "_portalStyleInjected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "标记 portal 样式是否已注入"
            },
            {
              "kind": "method",
              "name": "_ensurePortal",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLDivElement"
                }
              },
              "description": "确保 portal 容器存在并挂载到 document.body"
            },
            {
              "kind": "method",
              "name": "_syncPortal",
              "privacy": "private",
              "description": "将预览内容同步渲染到 portal 容器"
            },
            {
              "kind": "method",
              "name": "_removePortal",
              "privacy": "private",
              "description": "移除 portal 容器"
            },
            {
              "kind": "method",
              "name": "_parseDimension",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "解析尺寸值，支持各种 CSS 单位；纯数字默认加 px"
            },
            {
              "kind": "method",
              "name": "_cancelRaf",
              "privacy": "private",
              "description": "取消待执行的 raf"
            },
            {
              "kind": "method",
              "name": "_handleLoad",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleError",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "previewOpen",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_openPreview",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_closePreview",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_finishClose",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_resetTransform",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_updateTransform",
              "privacy": "private",
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "Partial<SlImageTransformType> | SlImageTransformType"
                  }
                },
                {
                  "name": "action",
                  "type": {
                    "text": "SlImageTransformAction"
                  }
                }
              ],
              "description": "统一更新 transform 并触发 onTransform 回调"
            },
            {
              "kind": "field",
              "name": "_scaleStep",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_minScale",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_maxScale",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_zoomIn",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_zoomOut",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_applyZoom",
              "privacy": "private",
              "parameters": [
                {
                  "name": "nextScale",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientX",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "以指定屏幕坐标为中心进行缩放；未传坐标时以图片中心缩放"
            },
            {
              "kind": "method",
              "name": "_rotateLeft",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_rotateRight",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_flipX",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_flipY",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_startDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_moveDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_endDrag",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleMouseMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleMouseUp",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleTouchStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleTouchMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleTouchEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handlePreviewDblClick",
              "privacy": "private",
              "description": "双击预览图片恢复默认缩放"
            },
            {
              "kind": "method",
              "name": "_handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleWheel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "WheelEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_dispatchZoom",
              "privacy": "private",
              "parameters": [
                {
                  "name": "ratio",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientX",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "以乘法比率进行缩放，使用 raf 合并同一帧内的多次更新。\n参考 Ant Design rc-component/image 的 dispatchZoomChange 实现。"
            },
            {
              "kind": "method",
              "name": "_addPreviewListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_removePreviewListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleMaskClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleBodyClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_previewImgStyle",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_maskConfig",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_previewSrc",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_coverPlacement",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_renderImage",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderPlaceholder",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderCover",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderPreview",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "在 group 模式下点击图片时触发",
              "name": "sl-image-click",
              "reactName": "onSlImageClick",
              "eventName": "SlImageClickEvent"
            },
            {
              "description": "预览打开时触发",
              "name": "sl-preview-open",
              "reactName": "onSlPreviewOpen",
              "eventName": "SlPreviewOpenEvent"
            },
            {
              "description": "预览关闭时触发",
              "name": "sl-preview-close",
              "reactName": "onSlPreviewClose",
              "eventName": "SlPreviewCloseEvent"
            },
            {
              "description": "图片加载失败时触发",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            },
            {
              "description": "图片加载成功时触发",
              "name": "sl-load",
              "reactName": "onSlLoad",
              "eventName": "SlLoadEvent"
            }
          ],
          "attributes": [
            {
              "name": "src",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "图片地址",
              "fieldName": "src"
            },
            {
              "name": "alt",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "图片替代文本",
              "fieldName": "alt"
            },
            {
              "name": "width",
              "type": {
                "text": "string | undefined"
              },
              "description": "图片宽度",
              "fieldName": "width"
            },
            {
              "name": "height",
              "type": {
                "text": "string | undefined"
              },
              "description": "图片高度",
              "fieldName": "height"
            },
            {
              "name": "fallback",
              "type": {
                "text": "string | undefined"
              },
              "description": "加载失败时的回退图片地址",
              "fieldName": "fallback"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "boolean | string | undefined"
              },
              "description": "加载占位图；设为 true 显示默认占位符，设为字符串则作为占位图片 src",
              "fieldName": "placeholder"
            },
            {
              "name": "no-preview",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用预览",
              "fieldName": "noPreview"
            },
            {
              "name": "preview",
              "type": {
                "text": "SlImagePreviewConfig | undefined"
              },
              "description": "预览配置",
              "fieldName": "preview"
            },
            {
              "name": "in-group",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否在 group 中（由 sl-image-preview-group 自动设置）",
              "fieldName": "inGroup"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "图片组件，支持预览、缩放、旋转、翻转等功能。",
          "tagNameWithoutPrefix": "image",
          "tagName": "sl-image",
          "customElement": true,
          "jsDoc": "/**\n * @summary 图片组件，支持预览、缩放、旋转、翻转等功能。\n * @documentation https://shoelace.style/components/image\n * @status stable\n * @since 2.0\n *\n * @event sl-image-click - 在 group 模式下点击图片时触发\n * @event sl-preview-open - 预览打开时触发\n * @event sl-preview-close - 预览关闭时触发\n * @event sl-error - 图片加载失败时触发\n * @event sl-load - 图片加载成功时触发\n *\n * @slot cover - 自定义遮罩层内容\n * @slot placeholder - 自定义加载占位内容\n *\n * @csspart base - 组件根容器\n * @csspart img - 图片元素\n * @csspart cover - 遮罩层\n * @csspart preview-mask - 预览遮罩背景\n * @csspart preview-body - 预览主体\n * @csspart preview-img - 预览图片\n * @csspart preview-actions - 预览工具栏\n * @csspart preview-close - 预览关闭按钮\n */",
          "documentation": "https://shoelace.style/components/image",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlImage",
            "module": "components/image/image.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/image-comparer/image-comparer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlImageComparer",
          "cssProperties": [
            {
              "description": "The width of the dividing line.",
              "name": "--divider-width"
            },
            {
              "description": "The size of the compare handle.",
              "name": "--handle-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the before image.",
              "name": "before"
            },
            {
              "description": "The container that wraps the after image.",
              "name": "after"
            },
            {
              "description": "The divider that separates the images.",
              "name": "divider"
            },
            {
              "description": "The handle that the user drags to expose the after image.",
              "name": "handle"
            }
          ],
          "slots": [
            {
              "description": "The before image, an `<img>` or `<svg>` element.",
              "name": "before"
            },
            {
              "description": "The after image, an `<img>` or `<svg>` element.",
              "name": "after"
            },
            {
              "description": "The icon used inside the handle.",
              "name": "handle"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "scopedElement",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "handle",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The position of the divider as a percentage.",
              "attribute": "position",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePositionChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the position changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The position of the divider as a percentage.",
              "fieldName": "position"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Compare visual differences between similar photos with a sliding panel.",
          "tagNameWithoutPrefix": "image-comparer",
          "tagName": "sl-image-comparer",
          "customElement": true,
          "jsDoc": "/**\n * @summary Compare visual differences between similar photos with a sliding panel.\n * @documentation https://shoelace.style/components/image-comparer\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot before - The before image, an `<img>` or `<svg>` element.\n * @slot after - The after image, an `<img>` or `<svg>` element.\n * @slot handle - The icon used inside the handle.\n *\n * @event sl-change - Emitted when the position changes.\n *\n * @csspart base - The component's base wrapper.\n * @csspart before - The container that wraps the before image.\n * @csspart after - The container that wraps the after image.\n * @csspart divider - The divider that separates the images.\n * @csspart handle - The handle that the user drags to expose the after image.\n *\n * @cssproperty --divider-width - The width of the dividing line.\n * @cssproperty --handle-size - The size of the compare handle.\n */",
          "documentation": "https://shoelace.style/components/image-comparer",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlImageComparer",
            "module": "components/image-comparer/image-comparer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/image-preview-group/image-preview-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlImagePreviewGroup",
          "cssParts": [
            {
              "description": "预览遮罩背景",
              "name": "preview-mask"
            },
            {
              "description": "预览主体",
              "name": "preview-body"
            },
            {
              "description": "预览图片",
              "name": "preview-img"
            },
            {
              "description": "预览工具栏",
              "name": "preview-actions"
            },
            {
              "description": "预览关闭按钮",
              "name": "preview-close"
            },
            {
              "description": "预览计数器",
              "name": "preview-counter"
            }
          ],
          "slots": [
            {
              "description": "默认插槽，放置 sl-image 组件",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "preview",
              "type": {
                "text": "false | SlPreviewGroupConfig | undefined"
              },
              "description": "预览配置，为 false 时禁用预览",
              "attribute": "preview"
            },
            {
              "kind": "field",
              "name": "items",
              "type": {
                "text": "SlPreviewGroupItem[] | undefined"
              },
              "description": "预览数组，支持字符串或 { src, alt, crossOrigin } 对象",
              "attribute": "items"
            },
            {
              "kind": "field",
              "name": "fallback",
              "type": {
                "text": "string | undefined"
              },
              "description": "加载失败容错地址（组件级）",
              "attribute": "fallback"
            },
            {
              "kind": "field",
              "name": "_previewOpen",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_previewClosing",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_currentIndex",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "_transform",
              "type": {
                "text": "SlPreviewGroupTransformType"
              },
              "privacy": "private",
              "default": "{ scale: 1, rotate: 0, flipX: 1, flipY: 1, x: 0, y: 0 }"
            },
            {
              "kind": "field",
              "name": "_isDragging",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_dragStart",
              "type": {
                "text": "object"
              },
              "privacy": "private",
              "default": "{ x: 0, y: 0, tx: 0, ty: 0 }"
            },
            {
              "kind": "field",
              "name": "_boundMouseMove",
              "type": {
                "text": "((e: MouseEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundMouseUp",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundKeyDown",
              "type": {
                "text": "((e: KeyboardEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundWheel",
              "type": {
                "text": "((e: WheelEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundTouchMove",
              "type": {
                "text": "((e: TouchEvent) => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_boundTouchEnd",
              "type": {
                "text": "(() => void) | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "_prevControlledOpen",
              "type": {
                "text": "boolean | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "上一次受控 open 值"
            },
            {
              "kind": "field",
              "name": "_prevControlledCurrent",
              "type": {
                "text": "number | undefined"
              },
              "privacy": "private",
              "default": "undefined",
              "description": "上一次受控 current 值"
            },
            {
              "kind": "field",
              "name": "_rafId",
              "type": {
                "text": "number | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "raf 帧 ID"
            },
            {
              "kind": "field",
              "name": "_pendingTransform",
              "type": {
                "text": "Partial<SlPreviewGroupTransformType> | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "raf 待合并变换"
            },
            {
              "kind": "field",
              "name": "_portalContainer",
              "type": {
                "text": "HTMLDivElement | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "预览弹层的 portal 容器"
            },
            {
              "kind": "field",
              "name": "_portalStyleInjected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "标记 portal 样式是否已注入"
            },
            {
              "kind": "field",
              "name": "_config",
              "type": {
                "text": "SlPreviewGroupConfig | null"
              },
              "privacy": "private",
              "description": "获取有效的预览配置（preview=false 时返回 null）",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_disabled",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "预览是否被禁用",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_cancelRaf",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_ensurePortal",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLDivElement"
                }
              }
            },
            {
              "kind": "method",
              "name": "_syncPortal",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_removePortal",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "previewOpen",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_getImageSources",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "_getSlottedImages",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SlImage[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "_getCurrentImageInfo",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SlPreviewGroupImgInfo"
                }
              },
              "description": "获取当前预览图片的信息"
            },
            {
              "kind": "field",
              "name": "_handleImageClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_syncSlottedImagesState",
              "privacy": "private",
              "description": "同步子图片的 in-group 和 no-preview 状态"
            },
            {
              "kind": "method",
              "name": "_openPreview",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_closePreview",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_finishClose",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_resetTransform",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_updateTransform",
              "privacy": "private",
              "parameters": [
                {
                  "name": "next",
                  "type": {
                    "text": "Partial<SlPreviewGroupTransformType>"
                  }
                },
                {
                  "name": "action",
                  "type": {
                    "text": "SlPreviewGroupTransformAction"
                  }
                }
              ],
              "description": "统一更新 transform 并触发 onTransform 回调"
            },
            {
              "kind": "method",
              "name": "_switchImage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "delta",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "按偏移量切换图片（delta=1 下一张，delta=-1 上一张）"
            },
            {
              "kind": "field",
              "name": "_scaleStep",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_minScale",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_maxScale",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_zoomIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_zoomOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_rotateLeft",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_rotateRight",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_flipX",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_flipY",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_startDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_moveDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "clientX",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_endDrag",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleMouseMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleMouseUp",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleTouchStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleTouchMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleTouchEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handlePreviewDblClick",
              "privacy": "private",
              "description": "双击恢复默认缩放"
            },
            {
              "kind": "method",
              "name": "_handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleWheel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "WheelEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_dispatchZoom",
              "privacy": "private",
              "parameters": [
                {
                  "name": "ratio",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientX",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "clientY",
                  "optional": true,
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "以乘法比率缩放，raf 合并"
            },
            {
              "kind": "method",
              "name": "_addPreviewListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_removePreviewListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_handleMaskClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleBodyClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "_previewImgStyle",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_maskConfig",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "_getCurrentCrossOrigin",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "description": "获取当前图片的 crossOrigin 属性"
            },
            {
              "kind": "method",
              "name": "_renderPreview",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "预览打开时触发",
              "name": "sl-preview-open",
              "reactName": "onSlPreviewOpen",
              "eventName": "SlPreviewOpenEvent"
            },
            {
              "description": "预览关闭时触发",
              "name": "sl-preview-close",
              "reactName": "onSlPreviewClose",
              "eventName": "SlPreviewCloseEvent"
            },
            {
              "description": "预览图片切换时触发，detail 包含 { current, prev }",
              "name": "sl-preview-change",
              "reactName": "onSlPreviewChange",
              "eventName": "SlPreviewChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "preview",
              "type": {
                "text": "false | SlPreviewGroupConfig | undefined"
              },
              "description": "预览配置，为 false 时禁用预览",
              "fieldName": "preview"
            },
            {
              "name": "items",
              "type": {
                "text": "SlPreviewGroupItem[] | undefined"
              },
              "description": "预览数组，支持字符串或 { src, alt, crossOrigin } 对象",
              "fieldName": "items"
            },
            {
              "name": "fallback",
              "type": {
                "text": "string | undefined"
              },
              "description": "加载失败容错地址（组件级）",
              "fieldName": "fallback"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "图片预览组，支持多张图片切换预览。对齐 Ant Design Image.PreviewGroup API。",
          "tagNameWithoutPrefix": "image-preview-group",
          "tagName": "sl-image-preview-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary 图片预览组，支持多张图片切换预览。对齐 Ant Design Image.PreviewGroup API。\n * @documentation https://shoelace.style/components/image-preview-group\n * @status stable\n * @since 2.0\n *\n * @event sl-preview-open - 预览打开时触发\n * @event sl-preview-close - 预览关闭时触发\n * @event sl-preview-change - 预览图片切换时触发，detail 包含 { current, prev }\n *\n * @slot - 默认插槽，放置 sl-image 组件\n *\n * @csspart preview-mask - 预览遮罩背景\n * @csspart preview-body - 预览主体\n * @csspart preview-img - 预览图片\n * @csspart preview-actions - 预览工具栏\n * @csspart preview-close - 预览关闭按钮\n * @csspart preview-counter - 预览计数器\n */",
          "documentation": "https://shoelace.style/components/image-preview-group",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlImagePreviewGroup",
            "module": "components/image-preview-group/image-preview-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/include/include.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlInclude",
          "members": [
            {
              "kind": "field",
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The location of the HTML file to include. Be sure you trust the content you are including as it will be executed as\ncode and can result in XSS attacks.",
              "attribute": "src"
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "'cors' | 'no-cors' | 'same-origin'"
              },
              "default": "'cors'",
              "description": "The fetch mode to use.",
              "attribute": "mode"
            },
            {
              "kind": "field",
              "name": "allowScripts",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows included scripts to be executed. Be sure you trust the content you are including as it will be executed as\ncode and can result in XSS attacks.",
              "attribute": "allow-scripts"
            },
            {
              "kind": "method",
              "name": "executeScript",
              "privacy": "private",
              "parameters": [
                {
                  "name": "script",
                  "type": {
                    "text": "HTMLScriptElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSrcChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the included file is loaded.",
              "name": "sl-load",
              "reactName": "onSlLoad",
              "eventName": "SlLoadEvent"
            },
            {
              "type": {
                "text": "{ status: number }"
              },
              "description": "Emitted when the included file fails to load due to an error.",
              "name": "sl-error",
              "reactName": "onSlError",
              "eventName": "SlErrorEvent"
            }
          ],
          "attributes": [
            {
              "name": "src",
              "type": {
                "text": "string"
              },
              "description": "The location of the HTML file to include. Be sure you trust the content you are including as it will be executed as\ncode and can result in XSS attacks.",
              "fieldName": "src"
            },
            {
              "name": "mode",
              "type": {
                "text": "'cors' | 'no-cors' | 'same-origin'"
              },
              "default": "'cors'",
              "description": "The fetch mode to use.",
              "fieldName": "mode"
            },
            {
              "name": "allow-scripts",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Allows included scripts to be executed. Be sure you trust the content you are including as it will be executed as\ncode and can result in XSS attacks.",
              "fieldName": "allowScripts"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Includes give you the power to embed external HTML files into the page.",
          "tagNameWithoutPrefix": "include",
          "tagName": "sl-include",
          "customElement": true,
          "jsDoc": "/**\n * @summary Includes give you the power to embed external HTML files into the page.\n * @documentation https://shoelace.style/components/include\n * @status stable\n * @since 2.0\n *\n * @event sl-load - Emitted when the included file is loaded.\n * @event {{ status: number }} sl-error - Emitted when the included file fails to load due to an error.\n */",
          "documentation": "https://shoelace.style/components/include",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlInclude",
            "module": "components/include/include.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": "isHovered",
              "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": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "hoist"
            },
            {
              "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": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "attribute": "layout",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "attribute": "variant",
              "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": "clearHidesSuffix",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the suffix when the clear button is visible.",
              "attribute": "clear-hides-suffix"
            },
            {
              "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"
              },
              "default": "'off'",
              "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": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "hoist"
            },
            {
              "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": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "fieldName": "layout"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "fieldName": "variant"
            },
            {
              "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": "clear-hides-suffix",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Hides the suffix when the clear button is visible.",
              "fieldName": "clearHidesSuffix"
            },
            {
              "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"
              },
              "default": "'off'",
              "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/mutation-observer/mutation-observer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlMutationObserver",
          "slots": [
            {
              "description": "The content to watch for mutations.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "attr",
              "type": {
                "text": "string"
              },
              "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`.",
              "attribute": "attr",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "attrOldValue",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
              "attribute": "attr-old-value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "charData",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for changes to the character data contained within the node.",
              "attribute": "char-data",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "charDataOldValue",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the previous value of the node's text should be recorded.",
              "attribute": "char-data-old-value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "childList",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for the addition or removal of new child nodes.",
              "attribute": "child-list",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "handleMutation",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "startObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleChange"
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ mutationList: MutationRecord[] }"
              },
              "description": "Emitted when a mutation occurs.",
              "name": "sl-mutation",
              "reactName": "onSlMutation",
              "eventName": "SlMutationEvent"
            }
          ],
          "attributes": [
            {
              "name": "attr",
              "type": {
                "text": "string"
              },
              "description": "Watches for changes to attributes. To watch only specific attributes, separate them by a space, e.g.\n`attr=\"class id title\"`. To watch all attributes, use `*`.",
              "fieldName": "attr"
            },
            {
              "name": "attr-old-value",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the attribute's previous value should be recorded when monitoring changes.",
              "fieldName": "attrOldValue"
            },
            {
              "name": "char-data",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for changes to the character data contained within the node.",
              "fieldName": "charData"
            },
            {
              "name": "char-data-old-value",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the previous value of the node's text should be recorded.",
              "fieldName": "charDataOldValue"
            },
            {
              "name": "child-list",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Watches for the addition or removal of new child nodes.",
              "fieldName": "childList"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the observer.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).",
          "tagNameWithoutPrefix": "mutation-observer",
          "tagName": "sl-mutation-observer",
          "customElement": true,
          "jsDoc": "/**\n * @summary The Mutation Observer component offers a thin, declarative interface to the [`MutationObserver API`](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver).\n * @documentation https://shoelace.style/components/mutation-observer\n * @status stable\n * @since 2.0\n *\n * @event {{ mutationList: MutationRecord[] }} sl-mutation - Emitted when a mutation occurs.\n *\n * @slot - The content to watch for mutations.\n */",
          "documentation": "https://shoelace.style/components/mutation-observer",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlMutationObserver",
            "module": "components/mutation-observer/mutation-observer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/nav/nav.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlNav",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The nav items.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-divider': SlDivider, 'sl-nav-group': SlNavGroup, 'sl-nav-item': SlNavItem, 'sl-nav-submenu': SlNavSubmenu }"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement | undefined"
              }
            },
            {
              "kind": "field",
              "name": "hasInitializedState",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasControlledOpenKeys",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasControlledSelectedKeys",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isSyncingOpenState",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_openKeys",
              "type": {
                "text": "string[] | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "_selectedKeys",
              "type": {
                "text": "string[] | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "items",
              "type": {
                "text": "SlNavItemType[]"
              },
              "default": "[]",
              "description": "Matches Antd's `items` API."
            },
            {
              "kind": "field",
              "name": "selectedKeys",
              "description": "Matches Antd's `selectedKeys` API.",
              "type": {
                "text": "string[]"
              }
            },
            {
              "kind": "field",
              "name": "defaultSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "Matches Antd's `defaultSelectedKeys` API."
            },
            {
              "kind": "field",
              "name": "openKeys",
              "description": "Matches Antd's `openKeys` API.",
              "type": {
                "text": "string[]"
              }
            },
            {
              "kind": "field",
              "name": "defaultOpenKeys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "Matches Antd's `defaultOpenKeys` API."
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "SlNavMode"
              },
              "default": "'inline'",
              "description": "Matches Antd's `mode` API.",
              "attribute": "mode",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `multiple` API.",
              "attribute": "multiple",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Matches Antd's `selectable` API.",
              "attribute": "selectable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "inlineCollapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `inlineCollapsed` API.",
              "attribute": "inline-collapsed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "inlineIndent",
              "type": {
                "text": "number"
              },
              "default": "16",
              "description": "Matches Antd's `inlineIndent` API.",
              "attribute": "inline-indent"
            },
            {
              "kind": "field",
              "name": "subMenuOpenDelay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Matches Antd's `subMenuOpenDelay` API, in seconds.",
              "attribute": "sub-menu-open-delay"
            },
            {
              "kind": "field",
              "name": "subMenuCloseDelay",
              "type": {
                "text": "number"
              },
              "default": "0.1",
              "description": "Matches Antd's `subMenuCloseDelay` API, in seconds.",
              "attribute": "sub-menu-close-delay"
            },
            {
              "kind": "field",
              "name": "triggerSubMenuAction",
              "type": {
                "text": "SlNavTriggerSubMenuAction"
              },
              "default": "'hover'",
              "description": "Matches Antd's `triggerSubMenuAction` API.",
              "attribute": "trigger-sub-menu-action"
            },
            {
              "kind": "field",
              "name": "theme",
              "type": {
                "text": "SlNavTheme"
              },
              "default": "'light'",
              "description": "Matches Antd's `theme` API. Present for compatibility and future styling.",
              "attribute": "theme",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "expandIcon",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Matches Antd's `expandIcon` API."
            },
            {
              "kind": "field",
              "name": "forceSubMenuRender",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `forceSubMenuRender` API.",
              "attribute": "force-sub-menu-render",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "overflowedIndicator",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Matches Antd's `overflowedIndicator` API. Present for compatibility."
            },
            {
              "kind": "field",
              "name": "disabledOverflow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `disabledOverflow` API. Present for compatibility.",
              "attribute": "disabled-overflow",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "onClick",
              "type": {
                "text": "(info: SlNavClickInfo) => void | undefined"
              },
              "description": "Matches Antd's `onClick` callback API."
            },
            {
              "kind": "field",
              "name": "onSelect",
              "type": {
                "text": "(info: SlNavSelectInfo) => void | undefined"
              },
              "description": "Matches Antd's `onSelect` callback API."
            },
            {
              "kind": "field",
              "name": "onDeselect",
              "type": {
                "text": "(info: SlNavSelectInfo) => void | undefined"
              },
              "description": "Matches Antd's `onDeselect` callback API."
            },
            {
              "kind": "field",
              "name": "onOpenChange",
              "type": {
                "text": "(openKeys: string[]) => void | undefined"
              },
              "description": "Matches Antd's `onOpenChange` callback API."
            },
            {
              "kind": "field",
              "name": "localOpenKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "localSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "method",
              "name": "getInternalMode",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'horizontal' | 'inline' | 'vertical'"
                }
              }
            },
            {
              "kind": "method",
              "name": "getManagedElements",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "T[]"
                }
              },
              "parameters": [
                {
                  "name": "selector",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getParentElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "HTMLElement | null"
                }
              },
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "belongsToThisNav",
              "privacy": "private",
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "findClosestAncestorTag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "element",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "tagName",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getItems",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getGroups",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getSubmenus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getItemKey",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlNavItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSubmenuKey",
              "privacy": "private",
              "parameters": [
                {
                  "name": "submenu",
                  "type": {
                    "text": "SlNavSubmenu"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "normalizeKeys",
              "privacy": "private",
              "parameters": [
                {
                  "name": "keys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getNormalizedSelectedKeys",
              "privacy": "private",
              "parameters": [
                {
                  "name": "keys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "mergeKeys",
              "privacy": "private",
              "parameters": [
                {
                  "name": "collections",
                  "type": {
                    "text": "string[][]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "areKeysEqual",
              "privacy": "private",
              "parameters": [
                {
                  "name": "current",
                  "type": {
                    "text": "string[]"
                  }
                },
                {
                  "name": "next",
                  "type": {
                    "text": "string[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAncestorSubmenus",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlNavItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAncestorSubmenuKeys",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlNavItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSelectedItems",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "createClickInfo",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SlNavClickInfo"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlNavItem"
                  }
                },
                {
                  "name": "domEvent",
                  "type": {
                    "text": "MouseEvent | KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "dispatchSelectionCallbacks",
              "privacy": "private",
              "parameters": [
                {
                  "name": "type",
                  "type": {
                    "text": "'select' | 'deselect'"
                  }
                },
                {
                  "name": "info",
                  "type": {
                    "text": "SlNavSelectInfo"
                  }
                },
                {
                  "name": "nextSelectedKeys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleNavSelect",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateMode",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncStateToDescendants",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "applyOpenKeysFromInteraction",
              "privacy": "private",
              "parameters": [
                {
                  "name": "nextOpenKeys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSubmenuOpenChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                },
                {
                  "name": "open",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleSubmenuShow",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleSubmenuHide",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderItemType",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlNavItemType"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderItems",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ item: SlNavItem | undefined, selectedKeys: string[] }"
              },
              "description": "Emitted when the selected nav item changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "type": {
                "text": "{ openKeys: string[] }"
              },
              "description": "Emitted when the open submenu keys change.",
              "name": "sl-nav-open-change",
              "reactName": "onSlNavOpenChange",
              "eventName": "SlNavOpenChangeEvent"
            },
            {
              "type": {
                "text": "{ item: SlNavItem, domEvent: MouseEvent | KeyboardEvent }"
              },
              "description": "Emitted when a nav item is selected.",
              "name": "sl-nav-select",
              "reactName": "onSlNavSelect",
              "eventName": "SlNavSelectEvent"
            }
          ],
          "attributes": [
            {
              "name": "mode",
              "type": {
                "text": "SlNavMode"
              },
              "default": "'inline'",
              "description": "Matches Antd's `mode` API.",
              "fieldName": "mode"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `multiple` API.",
              "fieldName": "multiple"
            },
            {
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Matches Antd's `selectable` API.",
              "fieldName": "selectable"
            },
            {
              "name": "inline-collapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `inlineCollapsed` API.",
              "fieldName": "inlineCollapsed"
            },
            {
              "name": "inline-indent",
              "type": {
                "text": "number"
              },
              "default": "16",
              "description": "Matches Antd's `inlineIndent` API.",
              "fieldName": "inlineIndent"
            },
            {
              "name": "sub-menu-open-delay",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "Matches Antd's `subMenuOpenDelay` API, in seconds.",
              "fieldName": "subMenuOpenDelay"
            },
            {
              "name": "sub-menu-close-delay",
              "type": {
                "text": "number"
              },
              "default": "0.1",
              "description": "Matches Antd's `subMenuCloseDelay` API, in seconds.",
              "fieldName": "subMenuCloseDelay"
            },
            {
              "name": "trigger-sub-menu-action",
              "type": {
                "text": "SlNavTriggerSubMenuAction"
              },
              "default": "'hover'",
              "description": "Matches Antd's `triggerSubMenuAction` API.",
              "fieldName": "triggerSubMenuAction"
            },
            {
              "name": "theme",
              "type": {
                "text": "SlNavTheme"
              },
              "default": "'light'",
              "description": "Matches Antd's `theme` API. Present for compatibility and future styling.",
              "fieldName": "theme"
            },
            {
              "name": "force-sub-menu-render",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `forceSubMenuRender` API.",
              "fieldName": "forceSubMenuRender"
            },
            {
              "name": "disabled-overflow",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `disabledOverflow` API. Present for compatibility.",
              "fieldName": "disabledOverflow"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Navs are used to create navigation menus, including top bars and sidebars.",
          "tagNameWithoutPrefix": "nav",
          "tagName": "sl-nav",
          "customElement": true,
          "jsDoc": "/**\n * @summary Navs are used to create navigation menus, including top bars and sidebars.\n * @documentation https://shoelace.style/components/nav\n * @status experimental\n * @since 2.16\n *\n * @slot - The nav items.\n *\n * @event {{ item: SlNavItem | undefined, selectedKeys: string[] }} sl-change - Emitted when the selected nav item changes.\n * @event {{ openKeys: string[] }} sl-nav-open-change - Emitted when the open submenu keys change.\n * @event {{ item: SlNavItem, domEvent: MouseEvent | KeyboardEvent }} sl-nav-select - Emitted when a nav item is selected.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/nav",
          "status": "experimental",
          "since": "2.16"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlNav",
            "module": "components/nav/nav.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/nav-group/nav-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlNavGroup",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The nav group title.",
              "name": "title"
            },
            {
              "description": "The nav group body.",
              "name": "body"
            }
          ],
          "slots": [
            {
              "description": "The nav items within the group.",
              "name": ""
            },
            {
              "description": "The nav group's title.",
              "name": "title"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'title')"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Matches Antd's item group label."
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav group in an active (selected) state.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "attribute": "mode",
              "reflects": true
            }
          ],
          "attributes": [
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav group in an active (selected) state.",
              "fieldName": "active"
            },
            {
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "fieldName": "mode"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Nav groups are used to group related nav items.",
          "tagNameWithoutPrefix": "nav-group",
          "tagName": "sl-nav-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary Nav groups are used to group related nav items.\n * @documentation https://shoelace.style/components/nav-group\n * @status experimental\n * @since 2.16\n *\n * @slot - The nav items within the group.\n * @slot title - The nav group's title.\n *\n * @csspart base - The component's base wrapper.\n * @csspart title - The nav group title.\n * @csspart body - The nav group body.\n */",
          "documentation": "https://shoelace.style/components/nav-group",
          "status": "experimental",
          "since": "2.16"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlNavGroup",
            "module": "components/nav-group/nav-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/nav-submenu/nav-submenu.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlNavSubmenu",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The header that wraps the title, prefix, suffix and expand/collapse icon.",
              "name": "header"
            },
            {
              "description": "The prefix container.",
              "name": "prefix"
            },
            {
              "description": "The nav submenu label.",
              "name": "label"
            },
            {
              "description": "The suffix container.",
              "name": "suffix"
            },
            {
              "description": "The container that wraps the expand/collapse icons.",
              "name": "expand-icon"
            },
            {
              "description": "The nav submenu content.",
              "name": "content"
            },
            {
              "description": "The popup that wraps the content in horizontal mode.",
              "name": "popup"
            }
          ],
          "slots": [
            {
              "description": "The nav items within the submenu.",
              "name": ""
            },
            {
              "description": "The nav submenu's title.",
              "name": "title"
            },
            {
              "description": "Used to prepend an icon or similar element to the nav submenu.",
              "name": "prefix"
            },
            {
              "description": "Used to append an icon or similar element to the nav submenu.",
              "name": "suffix"
            },
            {
              "description": "Optional expand icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "expand-icon"
            },
            {
              "description": "Optional collapse icon to use instead of the default. Works best with `<sl-icon>`.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'prefix', 'suffix')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "hideTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "openChangeSource",
              "type": {
                "text": "'api' | 'nav' | 'user'"
              },
              "privacy": "private",
              "default": "'api'"
            },
            {
              "kind": "field",
              "name": "showTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A stable key used by `sl-nav` to track open state.",
              "attribute": "key"
            },
            {
              "kind": "field",
              "name": "itemKey",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "React-safe alias for `key`.\n\nReact reserves `key` and won't forward it to custom elements, so wrapper users can pass `itemKey` instead.",
              "attribute": "item-key"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the submenu is open.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "nested",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates if this submenu is nested within another submenu.",
              "attribute": "nested",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The summary to show in the header. If you need to display HTML, use the `title` slot instead.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Matches Antd's `label` field."
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Matches Antd's `icon` field."
            },
            {
              "kind": "field",
              "name": "theme",
              "type": {
                "text": "'light' | 'dark'"
              },
              "default": "'light'",
              "description": "Matches Antd's `theme` field.",
              "attribute": "theme",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "popupClassName",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Matches Antd's `popupClassName` field.",
              "attribute": "popup-class-name"
            },
            {
              "kind": "field",
              "name": "popupOffset",
              "type": {
                "text": "[number, number] | undefined"
              },
              "description": "Matches Antd's `popupOffset` field."
            },
            {
              "kind": "field",
              "name": "onTitleClick",
              "type": {
                "text": "(info: { key: string; domEvent: MouseEvent | KeyboardEvent }) => void | undefined"
              },
              "description": "Matches Antd's `onTitleClick` callback."
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the submenu in a disabled state.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the submenu in an active (selected) state.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "attribute": "mode",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "collapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the parent nav is in inline-collapsed mode.",
              "attribute": "collapsed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "divider",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a divider line above this submenu.",
              "attribute": "divider",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "getRootNav",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "| (HTMLElement & {\n        triggerSubMenuAction?: 'hover' | 'click';\n        subMenuOpenDelay?: number;\n        subMenuCloseDelay?: number;\n        expandIcon?: unknown;\n      })\n    | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "getSubmenuKey",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getTriggerAction",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getOpenDelay",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getCloseDelay",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isPopupMode",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hasCustomPopupContent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncNestedState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleHeaderClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleHeaderKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseOver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMouseOut",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "FocusEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show",
              "parameters": [
                {
                  "name": "source",
                  "default": "'api'",
                  "type": {
                    "text": "'api' | 'nav' | 'user'"
                  }
                }
              ],
              "description": "Shows the submenu."
            },
            {
              "kind": "method",
              "name": "hide",
              "parameters": [
                {
                  "name": "source",
                  "default": "'api'",
                  "type": {
                    "text": "'api' | 'nav' | 'user'"
                  }
                }
              ],
              "description": "Hides the submenu."
            }
          ],
          "events": [
            {
              "description": "Emitted when the submenu opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the submenu opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the submenu closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the submenu closes and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A stable key used by `sl-nav` to track open state.",
              "fieldName": "key"
            },
            {
              "name": "item-key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "React-safe alias for `key`.\n\nReact reserves `key` and won't forward it to custom elements, so wrapper users can pass `itemKey` instead.",
              "fieldName": "itemKey"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the submenu is open.",
              "fieldName": "open"
            },
            {
              "name": "nested",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates if this submenu is nested within another submenu.",
              "fieldName": "nested"
            },
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The summary to show in the header. If you need to display HTML, use the `title` slot instead.",
              "fieldName": "title"
            },
            {
              "name": "theme",
              "type": {
                "text": "'light' | 'dark'"
              },
              "default": "'light'",
              "description": "Matches Antd's `theme` field.",
              "fieldName": "theme"
            },
            {
              "name": "popup-class-name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Matches Antd's `popupClassName` field.",
              "fieldName": "popupClassName"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the submenu in a disabled state.",
              "fieldName": "disabled"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the submenu in an active (selected) state.",
              "fieldName": "active"
            },
            {
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "fieldName": "mode"
            },
            {
              "name": "collapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the parent nav is in inline-collapsed mode.",
              "fieldName": "collapsed"
            },
            {
              "name": "divider",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a divider line above this submenu.",
              "fieldName": "divider"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Nav submenus are used to group related nav items in a hierarchical structure.",
          "tagNameWithoutPrefix": "nav-submenu",
          "tagName": "sl-nav-submenu",
          "customElement": true,
          "jsDoc": "/**\n * @summary Nav submenus are used to group related nav items in a hierarchical structure.\n * @documentation https://shoelace.style/components/nav-submenu\n * @status experimental\n * @since 2.16\n *\n * @dependency sl-icon\n * @dependency sl-popup\n *\n * @slot - The nav items within the submenu.\n * @slot title - The nav submenu's title.\n * @slot prefix - Used to prepend an icon or similar element to the nav submenu.\n * @slot suffix - Used to append an icon or similar element to the nav submenu.\n * @slot expand-icon - Optional expand icon to use instead of the default. Works best with `<sl-icon>`.\n * @slot collapse-icon - Optional collapse icon to use instead of the default. Works best with `<sl-icon>`.\n *\n * @event sl-show - Emitted when the submenu opens.\n * @event sl-after-show - Emitted after the submenu opens and all animations are complete.\n * @event sl-hide - Emitted when the submenu closes.\n * @event sl-after-hide - Emitted after the submenu closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The header that wraps the title, prefix, suffix and expand/collapse icon.\n * @csspart prefix - The prefix container.\n * @csspart label - The nav submenu label.\n * @csspart suffix - The suffix container.\n * @csspart expand-icon - The container that wraps the expand/collapse icons.\n * @csspart content - The nav submenu content.\n * @csspart popup - The popup that wraps the content in horizontal mode.\n *\n * @animation nav-submenu.show - The animation to use when showing the submenu.\n * @animation nav-submenu.hide - The animation to use when hiding the submenu.\n */",
          "documentation": "https://shoelace.style/components/nav-submenu",
          "status": "experimental",
          "since": "2.16",
          "dependencies": [
            "sl-icon",
            "sl-popup"
          ],
          "animations": [
            {
              "name": "nav-submenu.show",
              "description": "The animation to use when showing the submenu."
            },
            {
              "name": "nav-submenu.hide",
              "description": "The animation to use when hiding the submenu."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlNavSubmenu",
            "module": "components/nav-submenu/nav-submenu.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/nav-item/nav-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlNavItem",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The prefix container.",
              "name": "prefix"
            },
            {
              "description": "The nav item label.",
              "name": "label"
            },
            {
              "description": "The suffix container.",
              "name": "suffix"
            }
          ],
          "slots": [
            {
              "description": "The nav item's label.",
              "name": ""
            },
            {
              "description": "Used to prepend an icon or similar element to the nav item.",
              "name": "prefix"
            },
            {
              "description": "Used to append an icon or similar element to the nav item.",
              "name": "suffix"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'prefix', 'suffix')"
            },
            {
              "kind": "field",
              "name": "key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A stable key used by `sl-nav` to track selection.",
              "attribute": "key"
            },
            {
              "kind": "field",
              "name": "itemKey",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "React-safe alias for `key`.\n\nReact reserves `key` and won't forward it to custom elements, so wrapper users can pass `itemKey` instead.",
              "attribute": "item-key"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Alternate label content when using Antd-style `items` configuration."
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Alternate icon content when using Antd-style `items` configuration."
            },
            {
              "kind": "field",
              "name": "extra",
              "type": {
                "text": "unknown | undefined"
              },
              "description": "Extra content shown at the end of the item."
            },
            {
              "kind": "field",
              "name": "danger",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `danger` item flag.",
              "attribute": "danger",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Tooltip text, primarily used when the menu is collapsed.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav item in a disabled state.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav item in an active (selected) state.",
              "attribute": "active",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The URL to link to. If set, the nav item will render as an anchor tag.",
              "attribute": "href"
            },
            {
              "kind": "field",
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top'"
              },
              "description": "The target attribute for the anchor tag.",
              "attribute": "target"
            },
            {
              "kind": "field",
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "The download attribute for the anchor tag.",
              "attribute": "download"
            },
            {
              "kind": "field",
              "name": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "The rel attribute for the anchor tag.",
              "attribute": "rel"
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "attribute": "mode",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "collapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the parent nav is in inline-collapsed mode.",
              "attribute": "collapsed",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "divider",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a divider line above this nav item.",
              "attribute": "divider",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ item: SlNavItem }"
              },
              "description": "Emitted when a nav item is selected.",
              "name": "sl-nav-select",
              "reactName": "onSlNavSelect",
              "eventName": "SlNavSelectEvent"
            }
          ],
          "attributes": [
            {
              "name": "key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A stable key used by `sl-nav` to track selection.",
              "fieldName": "key"
            },
            {
              "name": "item-key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "React-safe alias for `key`.\n\nReact reserves `key` and won't forward it to custom elements, so wrapper users can pass `itemKey` instead.",
              "fieldName": "itemKey"
            },
            {
              "name": "danger",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Matches Antd's `danger` item flag.",
              "fieldName": "danger"
            },
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Tooltip text, primarily used when the menu is collapsed.",
              "fieldName": "title"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav item in a disabled state.",
              "fieldName": "disabled"
            },
            {
              "name": "active",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the nav item in an active (selected) state.",
              "fieldName": "active"
            },
            {
              "name": "href",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The URL to link to. If set, the nav item will render as an anchor tag.",
              "fieldName": "href"
            },
            {
              "name": "target",
              "type": {
                "text": "'_blank' | '_parent' | '_self' | '_top'"
              },
              "description": "The target attribute for the anchor tag.",
              "fieldName": "target"
            },
            {
              "name": "download",
              "type": {
                "text": "string | undefined"
              },
              "description": "The download attribute for the anchor tag.",
              "fieldName": "download"
            },
            {
              "name": "rel",
              "type": {
                "text": "string"
              },
              "default": "'noreferrer noopener'",
              "description": "The rel attribute for the anchor tag.",
              "fieldName": "rel"
            },
            {
              "name": "mode",
              "type": {
                "text": "'horizontal' | 'inline' | 'vertical'"
              },
              "default": "'inline'",
              "description": "The mode of navigation.",
              "fieldName": "mode"
            },
            {
              "name": "collapsed",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the parent nav is in inline-collapsed mode.",
              "fieldName": "collapsed"
            },
            {
              "name": "divider",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a divider line above this nav item.",
              "fieldName": "divider"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Nav items are the individual links or buttons within a navigation menu.",
          "tagNameWithoutPrefix": "nav-item",
          "tagName": "sl-nav-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary Nav items are the individual links or buttons within a navigation menu.\n * @documentation https://shoelace.style/components/nav-item\n * @status experimental\n * @since 2.16\n *\n * @slot - The nav item's label.\n * @slot prefix - Used to prepend an icon or similar element to the nav item.\n * @slot suffix - Used to append an icon or similar element to the nav item.\n *\n * @event {{ item: SlNavItem }} sl-nav-select - Emitted when a nav item is selected.\n *\n * @csspart base - The component's base wrapper.\n * @csspart prefix - The prefix container.\n * @csspart label - The nav item label.\n * @csspart suffix - The suffix container.\n */",
          "documentation": "https://shoelace.style/components/nav-item",
          "status": "experimental",
          "since": "2.16"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlNavItem",
            "module": "components/nav-item/nav-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/notification/notification.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlNotification",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The container that wraps the optional icon.",
              "name": "icon"
            },
            {
              "description": "The container that wraps the notification's content.",
              "name": "content"
            },
            {
              "description": "The notification's title.",
              "name": "title"
            },
            {
              "description": "The notification's description.",
              "name": "description"
            },
            {
              "description": "The container that wraps the actions.",
              "name": "actions"
            },
            {
              "description": "The close button.",
              "name": "close-button"
            },
            {
              "description": "The progress bar container.",
              "name": "progress"
            },
            {
              "description": "The progress bar.",
              "name": "progress-bar"
            }
          ],
          "slots": [
            {
              "description": "The notification's main content (description).",
              "name": ""
            },
            {
              "description": "The notification's title.",
              "name": "title"
            },
            {
              "description": "An icon to show in the notification.",
              "name": "icon"
            },
            {
              "description": "Actions/buttons to show in the notification.",
              "name": "actions"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-icon-button': SlIconButton }"
            },
            {
              "kind": "field",
              "name": "autoHideTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "remainingTimeInterval",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'icon', 'title', 'actions')"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "globalConfig",
              "type": {
                "text": "NotificationGlobalConfig"
              },
              "privacy": "private",
              "static": true,
              "default": "{ placement: 'topRight', duration: 4500, maxCount: undefined, top: 24, bottom: 24, showProgress: false, pauseOnHover: true }"
            },
            {
              "kind": "field",
              "name": "containers",
              "type": {
                "text": "Map<NotificationPlacement, HTMLDivElement>"
              },
              "privacy": "private",
              "static": true,
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "activeNotifications",
              "type": {
                "text": "Map<NotificationPlacement, SlNotification[]>"
              },
              "privacy": "private",
              "static": true,
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "base",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "progressBar",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the notification is open.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables a close button that allows the user to dismiss the notification.",
              "attribute": "closable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closeIcon",
              "type": {
                "text": "string | null | false"
              },
              "description": "Custom close icon name. Set to null or false to hide the close button.",
              "attribute": "close-icon"
            },
            {
              "kind": "field",
              "name": "_closeIcon",
              "type": {
                "text": "string | null | false"
              },
              "privacy": "private",
              "default": "undefined as unknown"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "NotificationType"
              },
              "default": "'info'",
              "description": "The notification's type variant.",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "duration",
              "type": {
                "text": "number | false"
              },
              "description": "The length of time, in milliseconds, the notification will show before closing itself. Set to false or 0 to disable.",
              "attribute": "duration"
            },
            {
              "kind": "field",
              "name": "_duration",
              "type": {
                "text": "number | false"
              },
              "privacy": "private",
              "default": "4500"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "NotificationPlacement"
              },
              "default": "'topRight'",
              "description": "The placement of the notification.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "showProgress",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show the progress bar.",
              "attribute": "show-progress"
            },
            {
              "kind": "field",
              "name": "pauseOnHover",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to pause the auto-hide timer when hovering.",
              "attribute": "pause-on-hover"
            },
            {
              "kind": "field",
              "name": "key",
              "type": {
                "text": "string | undefined"
              },
              "description": "A unique key for the notification.",
              "attribute": "key"
            },
            {
              "kind": "field",
              "name": "remainingTime",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "totalDuration",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "method",
              "name": "open",
              "static": true,
              "return": {
                "type": {
                  "text": "SlNotification"
                }
              },
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "NotificationConfig"
                  }
                }
              ],
              "description": "Open a notification with the given configuration."
            },
            {
              "kind": "method",
              "name": "success",
              "static": true,
              "return": {
                "type": {
                  "text": "SlNotification"
                }
              },
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "Omit<NotificationConfig, 'type'> | string"
                  }
                }
              ],
              "description": "Shorthand for opening a success notification."
            },
            {
              "kind": "method",
              "name": "info",
              "static": true,
              "return": {
                "type": {
                  "text": "SlNotification"
                }
              },
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "Omit<NotificationConfig, 'type'> | string"
                  }
                }
              ],
              "description": "Shorthand for opening an info notification."
            },
            {
              "kind": "method",
              "name": "warning",
              "static": true,
              "return": {
                "type": {
                  "text": "SlNotification"
                }
              },
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "Omit<NotificationConfig, 'type'> | string"
                  }
                }
              ],
              "description": "Shorthand for opening a warning notification."
            },
            {
              "kind": "method",
              "name": "error",
              "static": true,
              "return": {
                "type": {
                  "text": "SlNotification"
                }
              },
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "Omit<NotificationConfig, 'type'> | string"
                  }
                }
              ],
              "description": "Shorthand for opening an error notification."
            },
            {
              "kind": "method",
              "name": "destroy",
              "static": true,
              "parameters": [
                {
                  "name": "key",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Destroy a notification by key."
            },
            {
              "kind": "method",
              "name": "updateContainerPositions",
              "static": true,
              "description": "Update container positions when global config changes."
            },
            {
              "kind": "method",
              "name": "config",
              "static": true,
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "NotificationGlobalConfig"
                  }
                }
              ],
              "description": "Configure global notification settings."
            },
            {
              "kind": "method",
              "name": "getContainer",
              "static": true,
              "return": {
                "type": {
                  "text": "HTMLDivElement"
                }
              },
              "parameters": [
                {
                  "name": "placement",
                  "type": {
                    "text": "NotificationPlacement"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getDefaultIcon",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            },
            {
              "kind": "method",
              "name": "restartAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "pauseAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "resumeAutoHide",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCloseClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the notification."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the notification."
            },
            {
              "kind": "method",
              "name": "getProgressWidth",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              }
            }
          ],
          "events": [
            {
              "description": "Emitted when the notification opens.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the notification opens and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the notification closes.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the notification 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 notification is open.",
              "fieldName": "open"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Enables a close button that allows the user to dismiss the notification.",
              "fieldName": "closable"
            },
            {
              "name": "close-icon",
              "type": {
                "text": "string | null | false"
              },
              "description": "Custom close icon name. Set to null or false to hide the close button.",
              "fieldName": "closeIcon"
            },
            {
              "name": "type",
              "type": {
                "text": "NotificationType"
              },
              "default": "'info'",
              "description": "The notification's type variant.",
              "fieldName": "type"
            },
            {
              "name": "duration",
              "type": {
                "text": "number | false"
              },
              "description": "The length of time, in milliseconds, the notification will show before closing itself. Set to false or 0 to disable.",
              "fieldName": "duration"
            },
            {
              "name": "placement",
              "type": {
                "text": "NotificationPlacement"
              },
              "default": "'topRight'",
              "description": "The placement of the notification.",
              "fieldName": "placement"
            },
            {
              "name": "show-progress",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show the progress bar.",
              "fieldName": "showProgress"
            },
            {
              "name": "pause-on-hover",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to pause the auto-hide timer when hovering.",
              "fieldName": "pauseOnHover"
            },
            {
              "name": "key",
              "type": {
                "text": "string | undefined"
              },
              "description": "A unique key for the notification.",
              "fieldName": "key"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Notifications are used to display global messages as feedback in response to user actions.",
          "tagNameWithoutPrefix": "notification",
          "tagName": "sl-notification",
          "customElement": true,
          "jsDoc": "/**\n * @summary Notifications are used to display global messages as feedback in response to user actions.\n * @documentation https://shoelace.style/components/notification\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-icon-button\n *\n * @slot - The notification's main content (description).\n * @slot title - The notification's title.\n * @slot icon - An icon to show in the notification.\n * @slot actions - Actions/buttons to show in the notification.\n *\n * @event sl-show - Emitted when the notification opens.\n * @event sl-after-show - Emitted after the notification opens and all animations are complete.\n * @event sl-hide - Emitted when the notification closes.\n * @event sl-after-hide - Emitted after the notification closes and all animations are complete.\n *\n * @csspart base - The component's base wrapper.\n * @csspart icon - The container that wraps the optional icon.\n * @csspart content - The container that wraps the notification's content.\n * @csspart title - The notification's title.\n * @csspart description - The notification's description.\n * @csspart actions - The container that wraps the actions.\n * @csspart close-button - The close button.\n * @csspart progress - The progress bar container.\n * @csspart progress-bar - The progress bar.\n *\n * @animation notification.show - The animation to use when showing the notification.\n * @animation notification.hide - The animation to use when hiding the notification.\n */",
          "documentation": "https://shoelace.style/components/notification",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-icon-button"
          ],
          "animations": [
            {
              "name": "notification.show",
              "description": "The animation to use when showing the notification."
            },
            {
              "name": "notification.hide",
              "description": "The animation to use when hiding the notification."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlNotification",
            "module": "components/notification/notification.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": "isInitialized",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "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/popconfirm/popconfirm.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlPopconfirm",
          "slots": [
            {
              "description": "触发元素",
              "name": ""
            },
            {
              "description": "自定义图标",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-popup': SlPopup, 'sl-button': SlButton, 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "确认框标题"
            },
            {
              "kind": "field",
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "确认框描述",
              "attribute": "description"
            },
            {
              "kind": "field",
              "name": "okText",
              "type": {
                "text": "string"
              },
              "default": "'确定'",
              "description": "确认按钮文字",
              "attribute": "ok-text"
            },
            {
              "kind": "field",
              "name": "cancelText",
              "type": {
                "text": "string"
              },
              "default": "'取消'",
              "description": "取消按钮文字",
              "attribute": "cancel-text"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "PopconfirmPlacement"
              },
              "default": "'top'",
              "description": "弹出位置",
              "attribute": "placement"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'exclamation-circle-fill'",
              "description": "图标名称",
              "attribute": "icon"
            },
            {
              "kind": "field",
              "name": "arrow",
              "type": {
                "text": "PopconfirmArrow"
              },
              "default": "true",
              "description": "是否显示箭头，支持设置箭头是否精准指向目标元素的物理中心",
              "attribute": "arrow"
            },
            {
              "kind": "field",
              "name": "okType",
              "type": {
                "text": "'primary' | 'danger' | 'default'"
              },
              "default": "'primary'",
              "description": "确认按钮类型",
              "attribute": "ok-type"
            },
            {
              "kind": "field",
              "name": "onConfirm",
              "type": {
                "text": "() => void | Promise<void> | undefined"
              },
              "description": "点击确认的回调，支持返回 Promise 实现异步确认"
            },
            {
              "kind": "field",
              "name": "onCancel",
              "type": {
                "text": "() => void | undefined"
              },
              "description": "点击取消的回调"
            },
            {
              "kind": "field",
              "name": "classNames",
              "type": {
                "text": "PopconfirmClassNames | undefined"
              },
              "description": "自定义语义化结构的 CSS 类名"
            },
            {
              "kind": "field",
              "name": "customStyles",
              "type": {
                "text": "PopconfirmStyles | undefined"
              },
              "description": "自定义语义化结构的内联样式，支持对象或函数"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "description": "文字方向：ltr（从左到右）或 rtl（从右到左）",
              "attribute": "direction"
            },
            {
              "kind": "field",
              "name": "closeWatcher",
              "type": {
                "text": "CloseWatcher | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "scrollParent",
              "type": {
                "text": "Element | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "lockedSkidding",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0",
              "description": "shift 关闭时锁定的 skidding 值"
            },
            {
              "kind": "field",
              "name": "shiftLocked",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "confirmLoading",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false",
              "description": "确认按钮 loading 状态"
            },
            {
              "kind": "field",
              "name": "handleScroll",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "startScrollTracking",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopScrollTracking",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "show"
            },
            {
              "kind": "method",
              "name": "hide"
            },
            {
              "kind": "field",
              "name": "handleConfirm",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleCancel",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "showArrow",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "是否显示箭头",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "arrowPointAtCenter",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "箭头是否精准指向目标元素中心",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "resolveStyles",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "PopconfirmStylesObject"
                }
              },
              "description": "解析 styles 属性，支持对象和函数"
            }
          ],
          "attributes": [
            {
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "确认框描述",
              "fieldName": "description"
            },
            {
              "name": "ok-text",
              "type": {
                "text": "string"
              },
              "default": "'确定'",
              "description": "确认按钮文字",
              "fieldName": "okText"
            },
            {
              "name": "cancel-text",
              "type": {
                "text": "string"
              },
              "default": "'取消'",
              "description": "取消按钮文字",
              "fieldName": "cancelText"
            },
            {
              "name": "placement",
              "type": {
                "text": "PopconfirmPlacement"
              },
              "default": "'top'",
              "description": "弹出位置",
              "fieldName": "placement"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示",
              "fieldName": "open"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用",
              "fieldName": "disabled"
            },
            {
              "name": "icon",
              "type": {
                "text": "string"
              },
              "default": "'exclamation-circle-fill'",
              "description": "图标名称",
              "fieldName": "icon"
            },
            {
              "name": "arrow",
              "type": {
                "text": "PopconfirmArrow"
              },
              "default": "true",
              "description": "是否显示箭头，支持设置箭头是否精准指向目标元素的物理中心",
              "fieldName": "arrow"
            },
            {
              "name": "ok-type",
              "type": {
                "text": "'primary' | 'danger' | 'default'"
              },
              "default": "'primary'",
              "description": "确认按钮类型",
              "fieldName": "okType"
            },
            {
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "description": "文字方向：ltr（从左到右）或 rtl（从右到左）",
              "fieldName": "direction"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "气泡确认框，在目标元素附近弹出轻量级确认浮层。",
          "tagNameWithoutPrefix": "popconfirm",
          "tagName": "sl-popconfirm",
          "customElement": true,
          "jsDoc": "/**\n * @summary 气泡确认框，在目标元素附近弹出轻量级确认浮层。\n *\n * @slot - 触发元素\n * @slot icon - 自定义图标\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlPopconfirm",
            "module": "components/popconfirm/popconfirm.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/pagination/pagination.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlPagination",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'custom-select': CustomSelect }"
            },
            {
              "kind": "field",
              "name": "currentPage",
              "type": {
                "text": "number"
              },
              "attribute": "currentPage"
            },
            {
              "kind": "field",
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "20",
              "attribute": "pageSize"
            },
            {
              "kind": "field",
              "name": "pageSizeOpts",
              "type": {
                "text": "array"
              },
              "default": "[10, 20, 50, 100]",
              "attribute": "pageSizeOpts"
            },
            {
              "kind": "field",
              "name": "total",
              "type": {
                "text": "number"
              },
              "default": "5000",
              "attribute": "total"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "disabled"
            },
            {
              "kind": "field",
              "name": "className",
              "type": {
                "text": "string"
              },
              "default": "''",
              "attribute": "className"
            },
            {
              "kind": "field",
              "name": "simpleMode",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "simpleMode"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "attribute": "direction"
            },
            {
              "kind": "field",
              "name": "defaultCurrentPage",
              "type": {
                "text": "number"
              },
              "default": "1",
              "attribute": "defaultCurrentPage"
            },
            {
              "kind": "field",
              "name": "totalPage",
              "type": {
                "text": "number"
              },
              "privacy": "protected",
              "default": "1"
            },
            {
              "kind": "method",
              "name": "handleInputChange",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePageChangePage",
              "parameters": [
                {
                  "name": "page",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePageSizeChange",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ]
            }
          ],
          "attributes": [
            {
              "name": "currentPage",
              "type": {
                "text": "number"
              },
              "fieldName": "currentPage"
            },
            {
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "20",
              "fieldName": "pageSize"
            },
            {
              "name": "pageSizeOpts",
              "type": {
                "text": "array"
              },
              "default": "[10, 20, 50, 100]",
              "fieldName": "pageSizeOpts"
            },
            {
              "name": "total",
              "type": {
                "text": "number"
              },
              "default": "5000",
              "fieldName": "total"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "disabled"
            },
            {
              "name": "className",
              "type": {
                "text": "string"
              },
              "default": "''",
              "fieldName": "className"
            },
            {
              "name": "simpleMode",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "simpleMode"
            },
            {
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "fieldName": "direction"
            },
            {
              "name": "defaultCurrentPage",
              "type": {
                "text": "number"
              },
              "default": "1",
              "fieldName": "defaultCurrentPage"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "tagNameWithoutPrefix": "pagination",
          "tagName": "sl-pagination",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlPagination",
            "module": "components/pagination/pagination.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' | 'min-width'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element. Use 'min-width' to set minimum width only.",
              "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' | 'min-width'"
              },
              "description": "Syncs the popup's width or height to that of the anchor element. Use 'min-width' to set minimum width only.",
              "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/progress-bar/progress-bar.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlProgressBar",
          "cssProperties": [
            {
              "description": "The progress bar's height.",
              "name": "--height"
            },
            {
              "description": "The color of the track.",
              "name": "--track-color"
            },
            {
              "description": "The color of the indicator.",
              "name": "--indicator-color"
            },
            {
              "description": "The color of the label.",
              "name": "--label-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The progress bar's indicator.",
              "name": "indicator"
            },
            {
              "description": "The progress bar's label.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "A label to show inside the progress indicator.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored, the label is hidden, and the progress bar is drawn in an indeterminate state.",
              "attribute": "indeterminate",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label for assistive devices.",
              "attribute": "label"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100.",
              "fieldName": "value"
            },
            {
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, percentage is ignored, the label is hidden, and the progress bar is drawn in an indeterminate state.",
              "fieldName": "indeterminate"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label for assistive devices.",
              "fieldName": "label"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Progress bars are used to show the status of an ongoing operation.",
          "tagNameWithoutPrefix": "progress-bar",
          "tagName": "sl-progress-bar",
          "customElement": true,
          "jsDoc": "/**\n * @summary Progress bars are used to show the status of an ongoing operation.\n * @documentation https://shoelace.style/components/progress-bar\n * @status stable\n * @since 2.0\n *\n * @slot - A label to show inside the progress indicator.\n *\n * @csspart base - The component's base wrapper.\n * @csspart indicator - The progress bar's indicator.\n * @csspart label - The progress bar's label.\n *\n * @cssproperty --height - The progress bar's height.\n * @cssproperty --track-color - The color of the track.\n * @cssproperty --indicator-color - The color of the indicator.\n * @cssproperty --label-color - The color of the label.\n */",
          "documentation": "https://shoelace.style/components/progress-bar",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlProgressBar",
            "module": "components/progress-bar/progress-bar.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/progress-ring/progress-ring.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlProgressRing",
          "cssProperties": [
            {
              "description": "The diameter of the progress ring (cannot be a percentage).",
              "name": "--size"
            },
            {
              "description": "The width of the track.",
              "name": "--track-width"
            },
            {
              "description": "The color of the track.",
              "name": "--track-color"
            },
            {
              "description": "The width of the indicator. Defaults to the track width.",
              "name": "--indicator-width"
            },
            {
              "description": "The color of the indicator.",
              "name": "--indicator-color"
            },
            {
              "description": "The duration of the indicator's transition when the value changes.",
              "name": "--indicator-transition-duration"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The progress ring label.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "A label to show inside the ring.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "indicator",
              "type": {
                "text": "SVGCircleElement"
              }
            },
            {
              "kind": "field",
              "name": "indicatorOffset",
              "type": {
                "text": "string"
              }
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label for assistive devices.",
              "attribute": "label"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current progress as a percentage, 0 to 100.",
              "fieldName": "value"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A custom label for assistive devices.",
              "fieldName": "label"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Progress rings are used to show the progress of a determinate operation in a circular fashion.",
          "tagNameWithoutPrefix": "progress-ring",
          "tagName": "sl-progress-ring",
          "customElement": true,
          "jsDoc": "/**\n * @summary Progress rings are used to show the progress of a determinate operation in a circular fashion.\n * @documentation https://shoelace.style/components/progress-ring\n * @status stable\n * @since 2.0\n *\n * @slot - A label to show inside the ring.\n *\n * @csspart base - The component's base wrapper.\n * @csspart label - The progress ring label.\n *\n * @cssproperty --size - The diameter of the progress ring (cannot be a percentage).\n * @cssproperty --track-width - The width of the track.\n * @cssproperty --track-color - The color of the track.\n * @cssproperty --indicator-width - The width of the indicator. Defaults to the track width.\n * @cssproperty --indicator-color - The color of the indicator.\n * @cssproperty --indicator-transition-duration - The duration of the indicator's transition when the value changes.\n */",
          "documentation": "https://shoelace.style/components/progress-ring",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlProgressRing",
            "module": "components/progress-ring/progress-ring.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/radio/radio.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRadio",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The circular container that wraps the radio's checked state.",
              "name": "control"
            },
            {
              "description": "The radio control when the radio is checked.",
              "name": "control--checked"
            },
            {
              "description": "The checked icon, an `<sl-icon>` element.",
              "name": "checked-icon"
            },
            {
              "description": "The container that wraps the radio's label.",
              "name": "label"
            }
          ],
          "slots": [
            {
              "description": "The radio's label.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the radio.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "setInitialAttributes",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleCheckedChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the control loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when the control gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio's size. When used inside a radio group, the size will be determined by the radio group's size so this\nattribute can typically be omitted.",
              "fieldName": "size"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the radio.",
              "fieldName": "disabled"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Radios allow the user to select a single option from a group.",
          "tagNameWithoutPrefix": "radio",
          "tagName": "sl-radio",
          "customElement": true,
          "jsDoc": "/**\n * @summary Radios allow the user to select a single option from a group.\n * @documentation https://shoelace.style/components/radio\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @slot - The radio's label.\n *\n * @event sl-blur - Emitted when the control loses focus.\n * @event sl-focus - Emitted when the control gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart control - The circular container that wraps the radio's checked state.\n * @csspart control--checked - The radio control when the radio is checked.\n * @csspart checked-icon - The checked icon, an `<sl-icon>` element.\n * @csspart label - The container that wraps the radio's label.\n */",
          "documentation": "https://shoelace.style/components/radio",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRadio",
            "module": "components/radio/radio.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/radio-button/radio-button.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRadioButton",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The internal `<button>` element.",
              "name": "button"
            },
            {
              "description": "The internal button element when the radio button is checked.",
              "name": "button--checked"
            },
            {
              "description": "The container that wraps the prefix.",
              "name": "prefix"
            },
            {
              "description": "The container that wraps the radio button's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the suffix.",
              "name": "suffix"
            }
          ],
          "slots": [
            {
              "description": "The radio 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": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, '[default]', 'prefix', 'suffix')"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "hiddenInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "protected",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the radio button.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style radio button with rounded edges.",
              "attribute": "pill",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the radio button."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the radio button."
            }
          ],
          "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"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The radio's value. When selected, the radio group will receive this value.",
              "fieldName": "value"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the radio button.",
              "fieldName": "disabled"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio button's size. When used inside a radio group, the size will be determined by the radio group's size so\nthis attribute can typically be omitted.",
              "fieldName": "size"
            },
            {
              "name": "pill",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws a pill-style radio button with rounded edges.",
              "fieldName": "pill"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Radios buttons allow the user to select a single option from a group using a button-like control.",
          "tagNameWithoutPrefix": "radio-button",
          "tagName": "sl-radio-button",
          "customElement": true,
          "jsDoc": "/**\n * @summary Radios buttons allow the user to select a single option from a group using a button-like control.\n * @documentation https://shoelace.style/components/radio-button\n * @status stable\n * @since 2.0\n *\n * @slot - The radio 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 * @event sl-blur - Emitted when the button loses focus.\n * @event sl-focus - Emitted when the button gains focus.\n *\n * @csspart base - The component's base wrapper.\n * @csspart button - The internal `<button>` element.\n * @csspart button--checked - The internal button element when the radio button is checked.\n * @csspart prefix - The container that wraps the prefix.\n * @csspart label - The container that wraps the radio button's label.\n * @csspart suffix - The container that wraps the suffix.\n */",
          "documentation": "https://shoelace.style/components/radio-button",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRadioButton",
            "module": "components/radio-button/radio-button.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/radio-group/radio-group.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRadioGroup",
          "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 button group that wraps radio buttons.",
              "name": "button-group"
            },
            {
              "description": "The button group's `base` part.",
              "name": "button-group__base"
            },
            {
              "description": "The container that wraps the radio elements (only when not using radio buttons).",
              "name": "radios"
            }
          ],
          "slots": [
            {
              "description": "The default slot where `<sl-radio>` or `<sl-radio-button>` elements are placed.",
              "name": ""
            },
            {
              "description": "The radio group's label. Required for proper accessibility. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "Text that describes how to use the radio group. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-button-group': SlButtonGroup }"
            },
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "protected",
              "readonly": true,
              "default": "new FormControlController(this)"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'help-text', 'label')"
            },
            {
              "kind": "field",
              "name": "customValidityMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "validationTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "validationInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "hasButtonGroup",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "errorMessage",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "string"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'option'",
              "description": "The name of the radio group, 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 radio group, submitted as a name/value pair with form data.",
              "attribute": "value",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "layout",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The layout direction of the radio group.",
              "attribute": "layout",
              "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": "Ensures a child radio is checked before allowing the containing form to submit.",
              "attribute": "required",
              "reflects": true
            },
            {
              "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": "getAllRadios",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleRadioClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleLabelClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncRadioElements",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncRadios",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "updateCheckedRadio",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSizeChange"
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "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",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "description": "Checks for validity and shows the browser's validation message if the control is invalid."
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "default": "''"
                }
              ],
              "description": "Sets a custom validation message. Pass an empty string to restore validity."
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the radio-group."
            }
          ],
          "events": [
            {
              "description": "Emitted when the radio group's selected value changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the radio group receives user 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": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio group's label. Required for proper accessibility. If you need to display HTML, use the `label` slot\ninstead.",
              "fieldName": "label"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The radio groups's help text. If you need to display HTML, use the `help-text` slot instead.",
              "fieldName": "helpText"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'option'",
              "description": "The name of the radio group, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the radio group, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The radio group's size. This size will be applied to all child radios and radio buttons.",
              "fieldName": "size"
            },
            {
              "name": "layout",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'vertical'",
              "description": "The layout direction of the radio group.",
              "fieldName": "layout"
            },
            {
              "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": "Ensures a child radio is checked before allowing the containing form to submit.",
              "fieldName": "required"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.",
          "tagNameWithoutPrefix": "radio-group",
          "tagName": "sl-radio-group",
          "customElement": true,
          "jsDoc": "/**\n * @summary Radio groups are used to group multiple [radios](/components/radio) or [radio buttons](/components/radio-button) so they function as a single form control.\n * @documentation https://shoelace.style/components/radio-group\n * @status stable\n * @since 2.0\n *\n * @dependency sl-button-group\n *\n * @slot - The default slot where `<sl-radio>` or `<sl-radio-button>` elements are placed.\n * @slot label - The radio group's label. Required for proper accessibility. Alternatively, you can use the `label`\n *  attribute.\n * @slot help-text - Text that describes how to use the radio group. Alternatively, you can use the `help-text` attribute.\n *\n * @event sl-change - Emitted when the radio group's selected value changes.\n * @event sl-input - Emitted when the radio group receives user 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 button-group - The button group that wraps radio buttons.\n * @csspart button-group__base - The button group's `base` part.\n * @csspart radios - The container that wraps the radio elements (only when not using radio buttons).\n */",
          "documentation": "https://shoelace.style/components/radio-group",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-button-group"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRadioGroup",
            "module": "components/radio-group/radio-group.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/range/range.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRange",
          "cssProperties": [
            {
              "description": "The size of the thumb.",
              "name": "--thumb-size"
            },
            {
              "description": "The vertical distance the tooltip is offset from the track.",
              "name": "--tooltip-offset"
            },
            {
              "description": "The color of the portion of the track that represents the current value.",
              "name": "--track-color-active"
            },
            {
              "description": "The of the portion of the track that represents the remaining value.",
              "name": "--track-color-inactive"
            },
            {
              "description": "The height of the track.",
              "name": "--track-height"
            },
            {
              "description": "The point of origin of the active track.",
              "name": "--track-active-offset"
            }
          ],
          "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 range'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>` element.",
              "name": "input"
            },
            {
              "description": "The range's tooltip.",
              "name": "tooltip"
            }
          ],
          "slots": [
            {
              "description": "The range'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)"
            },
            {
              "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": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "input",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "output",
              "type": {
                "text": "HTMLOutputElement | null"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasTooltip",
              "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 range, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current value of the range, submitted as a name/value pair with form data.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The range'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 range's help text. If you need to display HTML, use the help-text slot instead.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the range.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "min",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum acceptable value of the range.",
              "attribute": "min"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "The maximum acceptable value of the range.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "step",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The interval at which the range will increase and decrease.",
              "attribute": "step"
            },
            {
              "kind": "field",
              "name": "tooltip",
              "type": {
                "text": "'top' | 'bottom' | 'none'"
              },
              "default": "'top'",
              "description": "The preferred placement of the range's tooltip.",
              "attribute": "tooltip"
            },
            {
              "kind": "field",
              "name": "tooltipFormatter",
              "type": {
                "text": "(value: number) => string"
              },
              "description": "A function used to format the tooltip's value. The range's value is passed as the first and only argument. The\nfunction should return a string to display in the tooltip."
            },
            {
              "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": "defaultValue",
              "type": {
                "text": "number"
              },
              "default": "0",
              "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": "handleChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleThumbDragStart",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleThumbDragEnd",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "syncProgress",
              "privacy": "private",
              "parameters": [
                {
                  "name": "percent",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncTooltip",
              "privacy": "private",
              "parameters": [
                {
                  "name": "percent",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "syncRange"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the range."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the range."
            },
            {
              "kind": "method",
              "name": "stepUp",
              "description": "Increments the value of the range by the value of the step attribute."
            },
            {
              "kind": "method",
              "name": "stepDown",
              "description": "Decrements the value of the range 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 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 range, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current value of the range, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The range's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The range's help text. If you need to display HTML, use the help-text slot instead.",
              "fieldName": "helpText"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the range.",
              "fieldName": "disabled"
            },
            {
              "name": "min",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The minimum acceptable value of the range.",
              "fieldName": "min"
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "100",
              "description": "The maximum acceptable value of the range.",
              "fieldName": "max"
            },
            {
              "name": "step",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The interval at which the range will increase and decrease.",
              "fieldName": "step"
            },
            {
              "name": "tooltip",
              "type": {
                "text": "'top' | 'bottom' | 'none'"
              },
              "default": "'top'",
              "description": "The preferred placement of the range's tooltip.",
              "fieldName": "tooltip"
            },
            {
              "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"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Ranges allow the user to select a single value within a given range using a slider.",
          "tagNameWithoutPrefix": "range",
          "tagName": "sl-range",
          "customElement": true,
          "jsDoc": "/**\n * @summary Ranges allow the user to select a single value within a given range using a slider.\n * @documentation https://shoelace.style/components/range\n * @status stable\n * @since 2.0\n *\n * @slot label - The range'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 range'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>` element.\n * @csspart tooltip - The range's tooltip.\n *\n * @cssproperty --thumb-size - The size of the thumb.\n * @cssproperty --tooltip-offset - The vertical distance the tooltip is offset from the track.\n * @cssproperty --track-color-active - The color of the portion of the track that represents the current value.\n * @cssproperty --track-color-inactive - The of the portion of the track that represents the remaining value.\n * @cssproperty --track-height - The height of the track.\n * @cssproperty --track-active-offset - The point of origin of the active track.\n */",
          "documentation": "https://shoelace.style/components/range",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRange",
            "module": "components/range/range.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/relative-time/relative-time.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRelativeTime",
          "members": [
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "updateTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "isoTime",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "relativeTime",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "date",
              "type": {
                "text": "Date | string"
              },
              "default": "new Date()",
              "description": "The date from which to calculate time from. If not set, the current date and time will be used. When passing a\nstring, it's strongly recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert\na date to this format in JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "attribute": "date"
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "The formatting style to use.",
              "attribute": "format"
            },
            {
              "kind": "field",
              "name": "numeric",
              "type": {
                "text": "'always' | 'auto'"
              },
              "default": "'auto'",
              "description": "When `auto`, values such as \"yesterday\" and \"tomorrow\" will be shown when possible. When `always`, values such as\n\"1 day ago\" and \"in 1 day\" will be shown.",
              "attribute": "numeric"
            },
            {
              "kind": "field",
              "name": "sync",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Keep the displayed value up to date as time passes.",
              "attribute": "sync"
            }
          ],
          "attributes": [
            {
              "name": "date",
              "type": {
                "text": "Date | string"
              },
              "default": "new Date()",
              "description": "The date from which to calculate time from. If not set, the current date and time will be used. When passing a\nstring, it's strongly recommended to use the ISO 8601 format to ensure timezones are handled correctly. To convert\na date to this format in JavaScript, use [`date.toISOString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString).",
              "fieldName": "date"
            },
            {
              "name": "format",
              "type": {
                "text": "'long' | 'short' | 'narrow'"
              },
              "default": "'long'",
              "description": "The formatting style to use.",
              "fieldName": "format"
            },
            {
              "name": "numeric",
              "type": {
                "text": "'always' | 'auto'"
              },
              "default": "'auto'",
              "description": "When `auto`, values such as \"yesterday\" and \"tomorrow\" will be shown when possible. When `always`, values such as\n\"1 day ago\" and \"in 1 day\" will be shown.",
              "fieldName": "numeric"
            },
            {
              "name": "sync",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Keep the displayed value up to date as time passes.",
              "fieldName": "sync"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Outputs a localized time phrase relative to the current date and time.",
          "tagNameWithoutPrefix": "relative-time",
          "tagName": "sl-relative-time",
          "customElement": true,
          "jsDoc": "/**\n * @summary Outputs a localized time phrase relative to the current date and time.\n * @documentation https://shoelace.style/components/relative-time\n * @status stable\n * @since 2.0\n */",
          "documentation": "https://shoelace.style/components/relative-time",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRelativeTime",
            "module": "components/relative-time/relative-time.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/rating/rating.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRating",
          "cssProperties": [
            {
              "description": "The inactive color for symbols.",
              "name": "--symbol-color"
            },
            {
              "description": "The active color for symbols.",
              "name": "--symbol-color-active"
            },
            {
              "description": "The size of symbols.",
              "name": "--symbol-size"
            },
            {
              "description": "The spacing to use around symbols.",
              "name": "--symbol-spacing"
            }
          ],
          "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": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "rating",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hoverValue",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "isHovering",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the rating to assistive devices.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current rating.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "5",
              "description": "The highest rating to show.",
              "attribute": "max"
            },
            {
              "kind": "field",
              "name": "precision",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
              "attribute": "precision"
            },
            {
              "kind": "field",
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating readonly.",
              "attribute": "readonly",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the rating.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "getSymbol",
              "type": {
                "text": "(value: number) => string"
              },
              "description": "A function that customizes the symbol to be rendered. The first and only argument is the rating's current value.\nThe function should return a string containing trusted HTML of the symbol to render at the specified value. Works\nwell with `<sl-icon>` elements.",
              "attribute": "getSymbol"
            },
            {
              "kind": "method",
              "name": "getValueFromMousePosition",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getValueFromTouchPosition",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getValueFromXCoordinate",
              "privacy": "private",
              "parameters": [
                {
                  "name": "coordinate",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "setValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "newValue",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseEnter",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseLeave",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTouchStart",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTouchMove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTouchEnd",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "TouchEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "roundToPrecision",
              "privacy": "private",
              "parameters": [
                {
                  "name": "numberToRound",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "precision",
                  "default": "0.5"
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleHoverValueChange"
            },
            {
              "kind": "method",
              "name": "handleIsHoveringChange"
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the rating."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the rating."
            }
          ],
          "events": [
            {
              "description": "Emitted when the rating's value changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "type": {
                "text": "{ phase: 'start' | 'move' | 'end', value: number }"
              },
              "description": "Emitted when the user hovers over a value. The `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the rating's value would be if the user were to commit to the hovered value.",
              "name": "sl-hover",
              "reactName": "onSlHover",
              "eventName": "SlHoverEvent"
            }
          ],
          "attributes": [
            {
              "name": "label",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "A label that describes the rating to assistive devices.",
              "fieldName": "label"
            },
            {
              "name": "value",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The current rating.",
              "fieldName": "value"
            },
            {
              "name": "max",
              "type": {
                "text": "number"
              },
              "default": "5",
              "description": "The highest rating to show.",
              "fieldName": "max"
            },
            {
              "name": "precision",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The precision at which the rating will increase and decrease. For example, to allow half-star ratings, set this\nattribute to `0.5`.",
              "fieldName": "precision"
            },
            {
              "name": "readonly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the rating readonly.",
              "fieldName": "readonly"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the rating.",
              "fieldName": "disabled"
            },
            {
              "name": "getSymbol",
              "type": {
                "text": "(value: number) => string"
              },
              "description": "A function that customizes the symbol to be rendered. The first and only argument is the rating's current value.\nThe function should return a string containing trusted HTML of the symbol to render at the specified value. Works\nwell with `<sl-icon>` elements.",
              "fieldName": "getSymbol"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Ratings give users a way to quickly view and provide feedback.",
          "tagNameWithoutPrefix": "rating",
          "tagName": "sl-rating",
          "customElement": true,
          "jsDoc": "/**\n * @summary Ratings give users a way to quickly view and provide feedback.\n * @documentation https://shoelace.style/components/rating\n * @status stable\n * @since 2.0\n *\n * @dependency sl-icon\n *\n * @event sl-change - Emitted when the rating's value changes.\n * @event {{ phase: 'start' | 'move' | 'end', value: number }} sl-hover - Emitted when the user hovers over a value. The\n *  `phase` property indicates when hovering starts, moves to a new value, or ends. The `value` property tells what the\n *  rating's value would be if the user were to commit to the hovered value.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --symbol-color - The inactive color for symbols.\n * @cssproperty --symbol-color-active - The active color for symbols.\n * @cssproperty --symbol-size - The size of symbols.\n * @cssproperty --symbol-spacing - The spacing to use around symbols.\n */",
          "documentation": "https://shoelace.style/components/rating",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-icon"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRating",
            "module": "components/rating/rating.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/screen/screen.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlScreen",
          "cssParts": [
            {
              "description": "The grid layout content.",
              "name": "base"
            }
          ],
          "members": [
            {
              "kind": "method",
              "name": "getGridData",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "description": "获取 GridStack 实例的序列化数据"
            },
            {
              "kind": "method",
              "name": "getInstance",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "description": "获取 GridStack 实例的序列化数据"
            },
            {
              "kind": "field",
              "name": "grid",
              "type": {
                "text": "GridStack | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "gridElement",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "GridStackOptions"
              },
              "default": "{}",
              "description": "The options for the GridStack instance.",
              "attribute": "options",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "data",
              "type": {
                "text": "GridStackNode[]"
              },
              "default": "[]",
              "description": "The initial configuration for the grid.",
              "attribute": "data"
            },
            {
              "kind": "field",
              "name": "removable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the items in the grid can be removed.",
              "attribute": "removable",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "static",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables dragging and resizing of widgets.",
              "attribute": "static",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selector",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The selector for items that can be dragged into the grid from outside.",
              "attribute": "selector",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleDataChange"
            },
            {
              "kind": "method",
              "name": "handleSelectorChange"
            },
            {
              "kind": "method",
              "name": "handleStaticGridChange"
            },
            {
              "kind": "method",
              "name": "setupDragIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "initGrid",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "loadGrid",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "addDeleteButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "itemEl",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ]
            }
          ],
          "attributes": [
            {
              "name": "options",
              "type": {
                "text": "GridStackOptions"
              },
              "default": "{}",
              "description": "The options for the GridStack instance.",
              "fieldName": "options"
            },
            {
              "name": "data",
              "type": {
                "text": "GridStackNode[]"
              },
              "default": "[]",
              "description": "The initial configuration for the grid.",
              "fieldName": "data"
            },
            {
              "name": "removable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the items in the grid can be removed.",
              "fieldName": "removable"
            },
            {
              "name": "static",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables dragging and resizing of widgets.",
              "fieldName": "static"
            },
            {
              "name": "selector",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The selector for items that can be dragged into the grid from outside.",
              "fieldName": "selector"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Screen is a grid layout component based on gridstack.js and Shoelace.",
          "tagNameWithoutPrefix": "screen",
          "tagName": "sl-screen",
          "customElement": true,
          "jsDoc": "/**\n * @summary Screen is a grid layout component based on gridstack.js and Shoelace.\n * @documentation https://shoelace.style/components/screen\n * @status experimental\n * @csspart base The grid layout content.\n * @since 2.0\n */",
          "documentation": "https://shoelace.style/components/screen",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlScreen",
            "module": "components/screen/screen.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/row/row.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlRow",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The default slot for Col components.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "mediaQueryLists",
              "type": {
                "text": "Map<Breakpoint, MediaQueryList>"
              },
              "privacy": "private",
              "default": "new Map()"
            },
            {
              "kind": "field",
              "name": "currentScreens",
              "type": {
                "text": "Partial<Record<Breakpoint, boolean>>"
              },
              "privacy": "private",
              "default": "{}"
            },
            {
              "kind": "field",
              "name": "gutter",
              "type": {
                "text": "Gutter | [Gutter, Gutter]"
              },
              "default": "0",
              "description": "Spacing between columns, can be a number or responsive object",
              "attribute": "gutter"
            },
            {
              "kind": "field",
              "name": "align",
              "type": {
                "text": "RowAlign"
              },
              "default": "'top'",
              "description": "Vertical alignment of columns",
              "attribute": "align",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "justify",
              "type": {
                "text": "RowJustify"
              },
              "default": "'start'",
              "description": "Horizontal arrangement of columns",
              "attribute": "justify",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "wrap",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to wrap columns",
              "attribute": "wrap",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "setupResponsiveObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cleanupResponsiveObserver",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getGutterValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "number"
                }
              },
              "parameters": [
                {
                  "name": "gutterProp",
                  "type": {
                    "text": "Gutter"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getGutters",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "[number, number]"
                }
              }
            },
            {
              "kind": "method",
              "name": "updateChildrenContext",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "gutter",
              "type": {
                "text": "Gutter | [Gutter, Gutter]"
              },
              "default": "0",
              "description": "Spacing between columns, can be a number or responsive object",
              "fieldName": "gutter"
            },
            {
              "name": "align",
              "type": {
                "text": "RowAlign"
              },
              "default": "'top'",
              "description": "Vertical alignment of columns",
              "fieldName": "align"
            },
            {
              "name": "justify",
              "type": {
                "text": "RowJustify"
              },
              "default": "'start'",
              "description": "Horizontal arrangement of columns",
              "fieldName": "justify"
            },
            {
              "name": "wrap",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether to wrap columns",
              "fieldName": "wrap"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Row component for grid layout system.",
          "tagNameWithoutPrefix": "row",
          "tagName": "sl-row",
          "customElement": true,
          "jsDoc": "/**\n * @summary Row component for grid layout system.\n * @documentation https://shoelace.style/components/row\n * @status stable\n * @since 2.0\n *\n * @slot - The default slot for Col components.\n *\n * @csspart base - The component's base wrapper.\n */",
          "documentation": "https://shoelace.style/components/row",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlRow",
            "module": "components/row/row.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/segmented/segmented.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSegmented",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-tooltip': SlTooltip }"
            },
            {
              "kind": "field",
              "name": "options",
              "type": {
                "text": "(string | number | SegmentedItem)[]"
              },
              "default": "[]",
              "attribute": "options"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "SegmentedValue | undefined"
              },
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "defaultValue",
              "type": {
                "text": "SegmentedValue | undefined"
              },
              "description": "非受控模式下的默认选中值",
              "attribute": "defaultValue"
            },
            {
              "kind": "field",
              "name": "onChange",
              "type": {
                "text": "(value: SegmentedValue) => void | undefined"
              }
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "attribute": "orientation"
            },
            {
              "kind": "field",
              "name": "shape",
              "type": {
                "text": "'default' | 'round'"
              },
              "default": "'default'",
              "attribute": "shape"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'large' | 'medium' | 'small'"
              },
              "default": "'medium'",
              "attribute": "size"
            },
            {
              "kind": "field",
              "name": "block",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "attribute": "block",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'segmented'",
              "description": "分组名称，用于原生 radio 归组和键盘导航",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "thumbStyle",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "_internalValue",
              "type": {
                "text": "SegmentedValue"
              },
              "privacy": "private",
              "default": "''",
              "description": "非受控模式下的内部值"
            },
            {
              "kind": "field",
              "name": "container",
              "type": {
                "text": "HTMLElement"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "itemEls",
              "type": {
                "text": "NodeListOf<HTMLElement>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "isControlled",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "判断是否为受控模式",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "currentValue",
              "type": {
                "text": "SegmentedValue"
              },
              "privacy": "private",
              "description": "获取当前选中值（受控模式用 value，非受控模式用内部值）",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "normalizeOption",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SegmentedItem"
                }
              },
              "parameters": [
                {
                  "name": "opt",
                  "type": {
                    "text": "string | number | SegmentedItem"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "normalizedOptions",
              "type": {
                "text": "SegmentedItem[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "opt",
                  "type": {
                    "text": "SegmentedItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateThumb",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "options",
              "type": {
                "text": "(string | number | SegmentedItem)[]"
              },
              "default": "[]",
              "fieldName": "options"
            },
            {
              "name": "value",
              "type": {
                "text": "SegmentedValue | undefined"
              },
              "fieldName": "value"
            },
            {
              "name": "defaultValue",
              "type": {
                "text": "SegmentedValue | undefined"
              },
              "description": "非受控模式下的默认选中值",
              "fieldName": "defaultValue"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "disabled"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "fieldName": "orientation"
            },
            {
              "name": "shape",
              "type": {
                "text": "'default' | 'round'"
              },
              "default": "'default'",
              "fieldName": "shape"
            },
            {
              "name": "size",
              "type": {
                "text": "'large' | 'medium' | 'small'"
              },
              "default": "'medium'",
              "fieldName": "size"
            },
            {
              "name": "block",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "fieldName": "block"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'segmented'",
              "description": "分组名称，用于原生 radio 归组和键盘导航",
              "fieldName": "name"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "tagNameWithoutPrefix": "segmented",
          "tagName": "sl-segmented",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSegmented",
            "module": "components/segmented/segmented.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": "isHovering",
              "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": "true",
              "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": "method",
              "name": "handleMouseEnter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleMouseLeave",
              "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": "true",
              "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/sender/sender.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSender",
          "cssProperties": [
            {
              "description": "The border width of the sender container.",
              "name": "--sl-sender-border-width"
            },
            {
              "description": "The border color of the sender container.",
              "name": "--sl-sender-border-color"
            },
            {
              "description": "The border color when hovered.",
              "name": "--sl-sender-border-color-hover"
            },
            {
              "description": "The border color when focused.",
              "name": "--sl-sender-border-color-focus"
            },
            {
              "description": "The border color when disabled.",
              "name": "--sl-sender-border-color-disabled"
            },
            {
              "description": "The background color of the sender container.",
              "name": "--sl-sender-background-color"
            },
            {
              "description": "The background color when disabled.",
              "name": "--sl-sender-background-color-disabled"
            },
            {
              "description": "The box shadow of the sender container.",
              "name": "--sl-sender-shadow"
            },
            {
              "description": "The box shadow when focused.",
              "name": "--sl-sender-shadow-focus"
            },
            {
              "description": "The text color of the input area.",
              "name": "--sl-sender-input-color"
            },
            {
              "description": "The text color when disabled.",
              "name": "--sl-sender-input-color-disabled"
            },
            {
              "description": "The placeholder text color.",
              "name": "--sl-sender-input-placeholder-color"
            },
            {
              "description": "The placeholder text color when disabled.",
              "name": "--sl-sender-input-placeholder-color-disabled"
            },
            {
              "description": "The color of action buttons.",
              "name": "--sl-sender-action-color"
            },
            {
              "description": "The color of action buttons when hovered.",
              "name": "--sl-sender-action-color-hover"
            },
            {
              "description": "The color of action buttons when active.",
              "name": "--sl-sender-action-color-active"
            },
            {
              "description": "The color of action buttons when disabled.",
              "name": "--sl-sender-action-color-disabled"
            },
            {
              "description": "The background color of action buttons when hovered.",
              "name": "--sl-sender-action-background-hover"
            },
            {
              "description": "The background color of action buttons when active.",
              "name": "--sl-sender-action-background-active"
            },
            {
              "description": "The border radius of action buttons.",
              "name": "--sl-sender-action-border-radius"
            },
            {
              "description": "The color of the submit button.",
              "name": "--sl-sender-submit-color"
            },
            {
              "description": "The color of the submit button when active.",
              "name": "--sl-sender-submit-color-active"
            },
            {
              "description": "The background color of the submit button.",
              "name": "--sl-sender-submit-background"
            },
            {
              "description": "The background color of the submit button when hovered.",
              "name": "--sl-sender-submit-background-hover"
            },
            {
              "description": "The background color of the submit button when active.",
              "name": "--sl-sender-submit-background-active"
            },
            {
              "description": "The background color of the submit button when disabled.",
              "name": "--sl-sender-submit-background-disabled"
            },
            {
              "description": "The border radius of the submit button.",
              "name": "--sl-sender-submit-border-radius"
            },
            {
              "description": "The background color of the recording button.",
              "name": "--sl-sender-voice-recording-background"
            },
            {
              "description": "The color of the voice waveform bars during recording.",
              "name": "--sl-sender-voice-waveform-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The internal `<sl-textarea>` control (plain text mode).",
              "name": "input"
            },
            {
              "description": "The slot-based input area container (slot mode).",
              "name": "slot-area"
            },
            {
              "description": "The skill tag element.",
              "name": "skill"
            },
            {
              "description": "The header area wrapper.",
              "name": "header"
            },
            {
              "description": "The footer area wrapper.",
              "name": "footer"
            },
            {
              "description": "The action buttons container in the suffix area.",
              "name": "actions"
            }
          ],
          "slots": [
            {
              "description": "Used to prepend content to the input area.",
              "name": "prefix"
            },
            {
              "description": "Used to append action buttons or content to the input area. Defaults to the speech button and send button.",
              "name": "suffix"
            },
            {
              "description": "Used to add content above the input area.",
              "name": "header"
            },
            {
              "description": "Used to add content below the input area, such as toolbar actions.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-textarea': SlTextarea, 'sl-input': SlInput, 'sl-select': SlSelect, 'sl-option': SlOption, 'sl-tag': SlTag, 'sl-button': SlButton, 'sl-icon-button': SlIconButton, 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "textarea",
              "type": {
                "text": "SlTextarea"
              }
            },
            {
              "kind": "field",
              "name": "slotArea",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "_savedRange",
              "type": {
                "text": "Range | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "slot-area 失焦前保存的光标位置"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the sender, submitted as part of the event detail on submit.",
              "attribute": "value"
            },
            {
              "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": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the sender in a loading state, typically used while waiting for a response.",
              "attribute": "loading"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the sender.",
              "attribute": "disabled"
            },
            {
              "kind": "field",
              "name": "readOnly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the sender readonly.",
              "attribute": "read-only"
            },
            {
              "kind": "field",
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The number of rows to display for the textarea. Only applies in plain text mode.",
              "attribute": "rows"
            },
            {
              "kind": "field",
              "name": "submitType",
              "type": {
                "text": "'enter' | 'shift-enter'"
              },
              "default": "'enter'",
              "description": "Determines how the Enter key behaves. When set to `enter`, pressing Enter submits. When set to `shift-enter`, pressing Shift+Enter submits.",
              "attribute": "submit-type"
            },
            {
              "kind": "field",
              "name": "slotConfig",
              "type": {
                "text": "SlotConfigType[] | undefined"
              },
              "description": "An array of slot configuration items for structured input mode. Supports `text`, `input`, `select`, `tag`, `content`, and `custom` types.",
              "attribute": "slotConfig"
            },
            {
              "kind": "field",
              "name": "skill",
              "type": {
                "text": "SkillType | undefined"
              },
              "description": "The skill tag to display in the slot input area. Includes `value`, optional `title`, and optional `closable` configuration.",
              "attribute": "skill"
            },
            {
              "kind": "field",
              "name": "footer",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom footer content or render function. Set to `false` to hide the footer.",
              "attribute": "footer"
            },
            {
              "kind": "field",
              "name": "header",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom header content or render function. Set to `false` to hide the header.",
              "attribute": "header"
            },
            {
              "kind": "field",
              "name": "prefixContent",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom prefix content or render function. Set to `false` to hide the prefix.",
              "attribute": "prefixContent"
            },
            {
              "kind": "field",
              "name": "suffixContent",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom suffix content or render function. Set to `false` to hide the suffix (action buttons).",
              "attribute": "suffixContent"
            },
            {
              "kind": "field",
              "name": "allowSpeech",
              "type": {
                "text": "AllowSpeech"
              },
              "default": "false",
              "description": "Enables speech recognition input. Set to `true` for uncontrolled mode, or pass a `ControlledSpeechConfig` object for controlled mode.",
              "attribute": "allow-speech"
            },
            {
              "kind": "field",
              "name": "speechRecording",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether speech recognition is currently recording. Only applies in uncontrolled speech mode.",
              "attribute": "speech-recording"
            },
            {
              "kind": "field",
              "name": "recognition",
              "type": {
                "text": "SpeechRecognitionLike | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "permissionState",
              "type": {
                "text": "PermissionState | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "permissionStatus",
              "type": {
                "text": "PermissionStatus | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "forceBreak",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "dynamicListeners",
              "type": {
                "text": "{ el: HTMLElement; event: string; handler: EventListener }[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "slotValues",
              "privacy": "private",
              "default": "new Map<string, unknown>()"
            },
            {
              "kind": "field",
              "name": "hasHeaderContent",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "hasFooterContent",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "focus",
              "privacy": "public",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "SenderFocusOptions"
                  }
                }
              ],
              "description": "聚焦输入区域，支持 cursor 选项控制光标位置。\n- 'end'（默认）：光标移到内容末尾\n- 'start'：光标移到内容开头\n- 'all'：全选内容\n- 'slot'：聚焦第一个 slot input，若不存在则等同 'end'"
            },
            {
              "kind": "method",
              "name": "focusSlotAreaAt",
              "privacy": "private",
              "parameters": [
                {
                  "name": "slotArea",
                  "type": {
                    "text": "HTMLElement"
                  }
                },
                {
                  "name": "position",
                  "type": {
                    "text": "'start' | 'end'"
                  }
                },
                {
                  "name": "preventScroll",
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "slot 模式下将光标定位到 slotArea 的 start 或 end"
            },
            {
              "kind": "method",
              "name": "blur",
              "privacy": "public",
              "description": "移除输入区域焦点"
            },
            {
              "kind": "method",
              "name": "clear",
              "privacy": "public",
              "description": "清空输入内容，slot 模式下同时重置 slotValues"
            },
            {
              "kind": "method",
              "name": "getValue",
              "privacy": "public",
              "return": {
                "type": {
                  "text": "{ value: string; slotConfig: SlotConfigType[]; skill?: SkillType }"
                }
              },
              "description": "获取当前输入值，slot 模式下返回完整的 { value, slotConfig, skill }"
            },
            {
              "kind": "method",
              "name": "insert",
              "privacy": "public",
              "parameters": [
                {
                  "name": "slotConfig",
                  "type": {
                    "text": "SlotConfigType[]"
                  }
                },
                {
                  "name": "position",
                  "default": "'end'",
                  "type": {
                    "text": "InsertPosition"
                  }
                },
                {
                  "name": "_replaceCharacters",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "preventScroll",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "插入文本或 slot 配置项到输入区域\nslot 模式下将 slotConfig 项渲染为 DOM 节点插入到 slot-area\n普通模式下将各项文本拼接后插入到 textarea"
            },
            {
              "kind": "method",
              "name": "insertTextToTextarea",
              "privacy": "private",
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "position",
                  "type": {
                    "text": "InsertPosition"
                  }
                }
              ],
              "description": "普通模式下插入文本到 textarea"
            },
            {
              "kind": "method",
              "name": "insertSlotNodes",
              "privacy": "private",
              "parameters": [
                {
                  "name": "configs",
                  "type": {
                    "text": "SlotConfigType[]"
                  }
                },
                {
                  "name": "position",
                  "type": {
                    "text": "InsertPosition"
                  }
                },
                {
                  "name": "preventScroll",
                  "optional": true,
                  "type": {
                    "text": "boolean"
                  }
                }
              ],
              "description": "slot 模式下将 slotConfig 项创建为 DOM 节点并插入到 slot-area"
            },
            {
              "kind": "field",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleSlotAreaInput",
              "privacy": "private",
              "description": "处理 slot 区域的自由文本输入"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSubmit",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClear",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handlePaste",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSkillRemove",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSpeechClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "speechConfig",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "currentRecording",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "speechPermission",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isSlotMode",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "currentValue",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "getSlotKey",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlotConfigType"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "syncSlotValues",
              "privacy": "private",
              "parameters": [
                {
                  "name": "config",
                  "type": {
                    "text": "SlotConfigType[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focusSlotInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getSlotDefaultValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlotConfigType"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSlotItemValue",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlotConfigType"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getSlotValueString",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getEditorValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ value: string; slotConfig: SlotConfigType[]; skill?: SkillType }"
                }
              },
              "parameters": [
                {
                  "name": "container",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "遍历 slot 区域的 DOM 子节点，提取完整的 { value, slotConfig, skill }。\n参考 ant-design-x getEditorValue 实现：\n- 文本节点：计入 value，并作为 { type: 'text', value } 加入 slotConfig\n- skill 节点：跳过文本值，记录 skill\n- slot 组件节点：从 slotValues / DOM 读取最新值，计入 value 和 slotConfig\n- 其他元素：取 textContent"
            },
            {
              "kind": "method",
              "name": "getEditorSnapshot",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ value: string; slotConfig: SlotConfigType[]; skill?: SkillType }"
                }
              },
              "description": "获取 slot 区域的完整快照（value + slotConfig + skill），从 DOM 遍历得到最新状态"
            },
            {
              "kind": "method",
              "name": "getSlotKeyFromElement",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              },
              "parameters": [
                {
                  "name": "el",
                  "type": {
                    "text": "HTMLElement"
                  }
                }
              ],
              "description": "根据 slot 区域中的 DOM 元素，反查对应的 slotConfig key"
            },
            {
              "kind": "method",
              "name": "getSlotConfigByKey",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SlotConfigType | undefined"
                }
              },
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "根据 key 查找对应的 slotConfig 项"
            },
            {
              "kind": "field",
              "name": "handleSlotValueChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getSpeechRecognitionConstructor",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SpeechRecognitionConstructor | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "updatePermissionState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cleanupPermissionStatus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "cleanupDynamicListeners",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "ensureRecognition",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "stopRecognition",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "triggerSpeech",
              "privacy": "private",
              "parameters": [
                {
                  "name": "forceBreak",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "applyTranscript",
              "privacy": "private",
              "parameters": [
                {
                  "name": "transcript",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderSendButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "props",
                  "optional": true,
                  "type": {
                    "text": "SenderActionProps"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderClearButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "props",
                  "optional": true,
                  "type": {
                    "text": "SenderActionProps"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderRecordingIcon",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderSpeechButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "props",
                  "optional": true,
                  "type": {
                    "text": "SenderActionProps"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderLoadingButton",
              "privacy": "private",
              "parameters": [
                {
                  "name": "props",
                  "optional": true,
                  "type": {
                    "text": "SenderActionProps"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "actionComponents",
              "type": {
                "text": "SenderActionsComponents"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderFooter",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFooterSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleHeaderSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderHeader",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderPrefix",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderSuffix",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderSlotItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "SlotConfigType"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderSlotConfig",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderSkill",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "name": "sl-change",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Emitted when the sender's value changes. The event detail includes `{ value, slotConfig, skill }`.",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "name": "sl-submit",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Emitted when the sender's submit button is clicked or Enter is pressed. The event detail includes `{ value }` or `{ value, slotConfig, skill }` in slot mode.",
              "reactName": "onSlSubmit",
              "eventName": "SlSubmitEvent"
            },
            {
              "description": "Emitted when the sender's content is cleared.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            },
            {
              "description": "Emitted when the sender's speech button is clicked.",
              "name": "sl-speech-toggle",
              "reactName": "onSlSpeechToggle",
              "eventName": "SlSpeechToggleEvent"
            },
            {
              "description": "Emitted when the sender's input area gains focus.",
              "name": "sl-focus",
              "reactName": "onSlFocus",
              "eventName": "SlFocusEvent"
            },
            {
              "description": "Emitted when the sender's input area loses focus.",
              "name": "sl-blur",
              "reactName": "onSlBlur",
              "eventName": "SlBlurEvent"
            },
            {
              "description": "Emitted when content is pasted into the sender. The event detail includes `{ event }`.",
              "name": "sl-paste",
              "reactName": "onSlPaste",
              "eventName": "SlPasteEvent"
            },
            {
              "description": "Emitted when files are pasted into the sender. The event detail includes `{ files }`.",
              "name": "sl-paste-file",
              "reactName": "onSlPasteFile",
              "eventName": "SlPasteFileEvent"
            }
          ],
          "attributes": [
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The current value of the sender, submitted as part of the event detail on submit.",
              "fieldName": "value"
            },
            {
              "name": "placeholder",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Placeholder text to show as a hint when the input is empty.",
              "fieldName": "placeholder"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the sender in a loading state, typically used while waiting for a response.",
              "fieldName": "loading"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the sender.",
              "fieldName": "disabled"
            },
            {
              "name": "read-only",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Makes the sender readonly.",
              "fieldName": "readOnly"
            },
            {
              "name": "rows",
              "type": {
                "text": "number"
              },
              "default": "1",
              "description": "The number of rows to display for the textarea. Only applies in plain text mode.",
              "fieldName": "rows"
            },
            {
              "name": "submit-type",
              "type": {
                "text": "'enter' | 'shift-enter'"
              },
              "default": "'enter'",
              "description": "Determines how the Enter key behaves. When set to `enter`, pressing Enter submits. When set to `shift-enter`, pressing Shift+Enter submits.",
              "fieldName": "submitType"
            },
            {
              "name": "slotConfig",
              "type": {
                "text": "SlotConfigType[] | undefined"
              },
              "description": "An array of slot configuration items for structured input mode. Supports `text`, `input`, `select`, `tag`, `content`, and `custom` types.",
              "fieldName": "slotConfig"
            },
            {
              "name": "skill",
              "type": {
                "text": "SkillType | undefined"
              },
              "description": "The skill tag to display in the slot input area. Includes `value`, optional `title`, and optional `closable` configuration.",
              "fieldName": "skill"
            },
            {
              "name": "footer",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom footer content or render function. Set to `false` to hide the footer.",
              "fieldName": "footer"
            },
            {
              "name": "header",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom header content or render function. Set to `false` to hide the header.",
              "fieldName": "header"
            },
            {
              "name": "prefixContent",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom prefix content or render function. Set to `false` to hide the prefix.",
              "fieldName": "prefixContent"
            },
            {
              "name": "suffixContent",
              "type": {
                "text": "BaseNode | NodeRender | undefined"
              },
              "description": "Custom suffix content or render function. Set to `false` to hide the suffix (action buttons).",
              "fieldName": "suffixContent"
            },
            {
              "name": "allow-speech",
              "type": {
                "text": "AllowSpeech"
              },
              "default": "false",
              "description": "Enables speech recognition input. Set to `true` for uncontrolled mode, or pass a `ControlledSpeechConfig` object for controlled mode.",
              "fieldName": "allowSpeech"
            },
            {
              "name": "speech-recording",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether speech recognition is currently recording. Only applies in uncontrolled speech mode.",
              "fieldName": "speechRecording"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Senders are used to send messages. They support plain text input, structured slot-based input, speech recognition, skill tagging, and customizable header/footer/prefix/suffix areas.",
          "tagNameWithoutPrefix": "sender",
          "tagName": "sl-sender",
          "customElement": true,
          "jsDoc": "/**\n * @summary Senders are used to send messages. They support plain text input, structured slot-based input, speech recognition, skill tagging, and customizable header/footer/prefix/suffix areas.\n * @documentation https://shoelace.style/components/sender\n * @status stable\n * @since 2.0\n *\n * @dependency sl-textarea\n * @dependency sl-input\n * @dependency sl-select\n * @dependency sl-option\n * @dependency sl-tag\n * @dependency sl-button\n * @dependency sl-icon-button\n * @dependency sl-icon\n * @dependency sl-spinner\n *\n * @slot prefix - Used to prepend content to the input area.\n * @slot suffix - Used to append action buttons or content to the input area. Defaults to the speech button and send button.\n * @slot header - Used to add content above the input area.\n * @slot footer - Used to add content below the input area, such as toolbar actions.\n *\n * @event sl-change - Emitted when the sender's value changes. The event detail includes `{ value, slotConfig, skill }`.\n * @event sl-submit - Emitted when the sender's submit button is clicked or Enter is pressed. The event detail includes `{ value }` or `{ value, slotConfig, skill }` in slot mode.\n * @event sl-clear - Emitted when the sender's content is cleared.\n * @event sl-speech-toggle - Emitted when the sender's speech button is clicked.\n * @event sl-focus - Emitted when the sender's input area gains focus.\n * @event sl-blur - Emitted when the sender's input area loses focus.\n * @event sl-paste - Emitted when content is pasted into the sender. The event detail includes `{ event }`.\n * @event sl-paste-file - Emitted when files are pasted into the sender. The event detail includes `{ files }`.\n *\n * @csspart base - The component's base wrapper.\n * @csspart input - The internal `<sl-textarea>` control (plain text mode).\n * @csspart slot-area - The slot-based input area container (slot mode).\n * @csspart skill - The skill tag element.\n * @csspart header - The header area wrapper.\n * @csspart footer - The footer area wrapper.\n * @csspart actions - The action buttons container in the suffix area.\n *\n * @cssproperty --sl-sender-border-width - The border width of the sender container.\n * @cssproperty --sl-sender-border-color - The border color of the sender container.\n * @cssproperty --sl-sender-border-color-hover - The border color when hovered.\n * @cssproperty --sl-sender-border-color-focus - The border color when focused.\n * @cssproperty --sl-sender-border-color-disabled - The border color when disabled.\n * @cssproperty --sl-sender-background-color - The background color of the sender container.\n * @cssproperty --sl-sender-background-color-disabled - The background color when disabled.\n * @cssproperty --sl-sender-shadow - The box shadow of the sender container.\n * @cssproperty --sl-sender-shadow-focus - The box shadow when focused.\n * @cssproperty --sl-sender-input-color - The text color of the input area.\n * @cssproperty --sl-sender-input-color-disabled - The text color when disabled.\n * @cssproperty --sl-sender-input-placeholder-color - The placeholder text color.\n * @cssproperty --sl-sender-input-placeholder-color-disabled - The placeholder text color when disabled.\n * @cssproperty --sl-sender-action-color - The color of action buttons.\n * @cssproperty --sl-sender-action-color-hover - The color of action buttons when hovered.\n * @cssproperty --sl-sender-action-color-active - The color of action buttons when active.\n * @cssproperty --sl-sender-action-color-disabled - The color of action buttons when disabled.\n * @cssproperty --sl-sender-action-background-hover - The background color of action buttons when hovered.\n * @cssproperty --sl-sender-action-background-active - The background color of action buttons when active.\n * @cssproperty --sl-sender-action-border-radius - The border radius of action buttons.\n * @cssproperty --sl-sender-submit-color - The color of the submit button.\n * @cssproperty --sl-sender-submit-color-active - The color of the submit button when active.\n * @cssproperty --sl-sender-submit-background - The background color of the submit button.\n * @cssproperty --sl-sender-submit-background-hover - The background color of the submit button when hovered.\n * @cssproperty --sl-sender-submit-background-active - The background color of the submit button when active.\n * @cssproperty --sl-sender-submit-background-disabled - The background color of the submit button when disabled.\n * @cssproperty --sl-sender-submit-border-radius - The border radius of the submit button.\n * @cssproperty --sl-sender-voice-recording-background - The background color of the recording button.\n * @cssproperty --sl-sender-voice-waveform-color - The color of the voice waveform bars during recording.\n */",
          "documentation": "https://shoelace.style/components/sender",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-textarea",
            "sl-input",
            "sl-select",
            "sl-option",
            "sl-tag",
            "sl-button",
            "sl-icon-button",
            "sl-icon",
            "sl-spinner"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSender",
            "module": "components/sender/sender.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/sender-header/sender-header.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSenderHeader",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The header bar containing title and close button.",
              "name": "header"
            },
            {
              "description": "The title wrapper inside the header.",
              "name": "title"
            },
            {
              "description": "The collapsible content area.",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The panel content (children).",
              "name": ""
            },
            {
              "description": "The header title content. Alternatively use the `title` attribute for plain text.",
              "name": "title"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "static": true,
              "default": "{ 'sl-button': SlButton, 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the panel content is expanded.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the close/toggle button is shown.",
              "attribute": "closable"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Plain-text title. Use the `title` slot for rich content.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "forceRender",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the content DOM is always rendered even when collapsed.\nUseful when you need refs to inner elements on initial mount.\nWhen false (default), content is removed from the DOM when closed.",
              "attribute": "force-render"
            },
            {
              "kind": "method",
              "name": "handleToggleOpen",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "description": "Emitted when the open state changes. `event.detail.open` indicates the new state.",
              "name": "sl-open-change",
              "reactName": "onSlOpenChange",
              "eventName": "SlOpenChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the panel content is expanded.",
              "fieldName": "open"
            },
            {
              "name": "closable",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the close/toggle button is shown.",
              "fieldName": "closable"
            },
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Plain-text title. Use the `title` slot for rich content.",
              "fieldName": "title"
            },
            {
              "name": "force-render",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the content DOM is always rendered even when collapsed.\nUseful when you need refs to inner elements on initial mount.\nWhen false (default), content is removed from the DOM when closed.",
              "fieldName": "forceRender"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A collapsible header panel for the Sender component.",
          "tagNameWithoutPrefix": "sender-header",
          "tagName": "sl-sender-header",
          "customElement": true,
          "jsDoc": "/**\n * @summary A collapsible header panel for the Sender component.\n *\n * @slot - The panel content (children).\n * @slot title - The header title content. Alternatively use the `title` attribute for plain text.\n *\n * @event sl-open-change - Emitted when the open state changes. `event.detail.open` indicates the new state.\n *\n * @csspart base - The component's base wrapper.\n * @csspart header - The header bar containing title and close button.\n * @csspart title - The title wrapper inside the header.\n * @csspart content - The collapsible content area.\n */"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSenderHeader",
            "module": "components/sender-header/sender-header.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/sender-switch/sender-switch.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSenderSwitch",
          "cssParts": [
            {
              "description": "The component's base wrapper (the button element).",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The switch's default content (always shown).",
              "name": ""
            },
            {
              "description": "The switch's icon.",
              "name": "icon"
            },
            {
              "description": "Content shown only when checked.",
              "name": "checked"
            },
            {
              "description": "Content shown only when unchecked.",
              "name": "unchecked"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "static": true,
              "default": "{ 'sl-button': SlButton }"
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the switch is in the checked (active) state.",
              "attribute": "checked",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultChecked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The initial checked state when uncontrolled. Only used on first render.",
              "attribute": "default-checked"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the switch.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading spinner on the switch.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "_hasSetChecked",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private"
            }
          ],
          "events": [
            {
              "name": "sl-change",
              "type": {
                "text": "CustomEvent"
              },
              "description": "Emitted when the switch's checked state changes. Read `el.checked` for the new state.",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the switch is in the checked (active) state.",
              "fieldName": "checked"
            },
            {
              "name": "default-checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The initial checked state when uncontrolled. Only used on first render.",
              "fieldName": "defaultChecked"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the switch.",
              "fieldName": "disabled"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Shows a loading spinner on the switch.",
              "fieldName": "loading"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A toggle switch button for the Sender component, supporting checked/unchecked states\nwith optional distinct content for each state.",
          "tagNameWithoutPrefix": "sender-switch",
          "tagName": "sl-sender-switch",
          "customElement": true,
          "jsDoc": "/**\n * @summary A toggle switch button for the Sender component, supporting checked/unchecked states\n * with optional distinct content for each state.\n *\n * @documentation https://shoelace.style/components/sender-switch\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-button\n *\n * @slot - The switch's default content (always shown).\n * @slot icon - The switch's icon.\n * @slot checked - Content shown only when checked.\n * @slot unchecked - Content shown only when unchecked.\n *\n * @event sl-change - Emitted when the switch's checked state changes. Read `el.checked` for the new state.\n *\n * @csspart base - The component's base wrapper (the button element).\n */",
          "documentation": "https://shoelace.style/components/sender-switch",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-button"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSenderSwitch",
            "module": "components/sender-switch/sender-switch.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/skeleton/skeleton.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSkeleton",
          "cssProperties": [
            {
              "description": "The skeleton's border radius.",
              "name": "--border-radius"
            },
            {
              "description": "The color of the skeleton.",
              "name": "--color"
            },
            {
              "description": "The sheen color when the skeleton is in its loading state.",
              "name": "--sheen-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The skeleton's indicator which is responsible for its color and animation.",
              "name": "indicator"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "effect",
              "type": {
                "text": "'pulse' | 'sheen' | 'none'"
              },
              "default": "'none'",
              "description": "Determines which effect the skeleton will use.",
              "attribute": "effect"
            }
          ],
          "attributes": [
            {
              "name": "effect",
              "type": {
                "text": "'pulse' | 'sheen' | 'none'"
              },
              "default": "'none'",
              "description": "Determines which effect the skeleton will use.",
              "fieldName": "effect"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Skeletons are used to provide a visual representation of where content will eventually be drawn.",
          "tagNameWithoutPrefix": "skeleton",
          "tagName": "sl-skeleton",
          "customElement": true,
          "jsDoc": "/**\n * @summary Skeletons are used to provide a visual representation of where content will eventually be drawn.\n * @documentation https://shoelace.style/components/skeleton\n * @status stable\n * @since 2.0\n *\n * @csspart base - The component's base wrapper.\n * @csspart indicator - The skeleton's indicator which is responsible for its color and animation.\n *\n * @cssproperty --border-radius - The skeleton's border radius.\n * @cssproperty --color - The color of the skeleton.\n * @cssproperty --sheen-color - The sheen color when the skeleton is in its loading state.\n */",
          "documentation": "https://shoelace.style/components/skeleton",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSkeleton",
            "module": "components/skeleton/skeleton.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/space/space.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSpace",
          "cssProperties": [
            {
              "description": "自定义间距大小。",
              "name": "--gap"
            }
          ],
          "cssParts": [
            {
              "description": "组件的基础容器。",
              "name": "base"
            },
            {
              "description": "每个子元素的包装容器。",
              "name": "item"
            },
            {
              "description": "分隔符容器。",
              "name": "separator"
            }
          ],
          "slots": [
            {
              "description": "需要添加间距的子元素。",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "间距方向，vertical 为垂直方向，horizontal 为水平方向",
              "attribute": "orientation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "SpaceSize | [SpaceSize, SpaceSize]"
              },
              "default": "'small'",
              "description": "间距大小，可选 small、medium、large 或自定义数值（单位为 px）",
              "attribute": "size"
            },
            {
              "kind": "field",
              "name": "align",
              "type": {
                "text": "'start' | 'end' | 'center' | 'baseline' | undefined"
              },
              "description": "对齐方式",
              "attribute": "align"
            },
            {
              "kind": "field",
              "name": "wrap",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否自动换行，仅在 horizontal 方向时有效",
              "attribute": "wrap"
            },
            {
              "kind": "field",
              "name": "separator",
              "type": {
                "text": "string | undefined"
              },
              "description": "分隔符内容",
              "attribute": "separator"
            },
            {
              "kind": "method",
              "name": "getSizeValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "size",
                  "type": {
                    "text": "SpaceSize"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getGapStyle",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "orientation",
              "type": {
                "text": "'horizontal' | 'vertical'"
              },
              "default": "'horizontal'",
              "description": "间距方向，vertical 为垂直方向，horizontal 为水平方向",
              "fieldName": "orientation"
            },
            {
              "name": "size",
              "type": {
                "text": "SpaceSize | [SpaceSize, SpaceSize]"
              },
              "default": "'small'",
              "description": "间距大小，可选 small、medium、large 或自定义数值（单位为 px）",
              "fieldName": "size"
            },
            {
              "name": "align",
              "type": {
                "text": "'start' | 'end' | 'center' | 'baseline' | undefined"
              },
              "description": "对齐方式",
              "fieldName": "align"
            },
            {
              "name": "wrap",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否自动换行，仅在 horizontal 方向时有效",
              "fieldName": "wrap"
            },
            {
              "name": "separator",
              "type": {
                "text": "string | undefined"
              },
              "description": "分隔符内容",
              "fieldName": "separator"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Space 组件用于设置组件之间的间距。",
          "tagNameWithoutPrefix": "space",
          "tagName": "sl-space",
          "customElement": true,
          "jsDoc": "/**\n * @summary Space 组件用于设置组件之间的间距。\n * @documentation https://shoelace.style/components/space\n * @status stable\n * @since 2.0\n *\n * @slot - 需要添加间距的子元素。\n *\n * @csspart base - 组件的基础容器。\n * @csspart item - 每个子元素的包装容器。\n * @csspart separator - 分隔符容器。\n *\n * @cssproperty --gap - 自定义间距大小。\n */",
          "documentation": "https://shoelace.style/components/space",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSpace",
            "module": "components/space/space.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/split-panel/split-panel.js",
      "declarations": [
        {
          "kind": "function",
          "name": "SNAP_NONE",
          "description": "A SnapFunction which performs no snapping."
        },
        {
          "kind": "class",
          "description": "",
          "name": "SlSplitPanel",
          "cssProperties": [
            {
              "description": "The width of the visible divider.",
              "name": "--divider-width",
              "default": "4px"
            },
            {
              "description": "The invisible region around the divider where dragging can occur. This is usually wider than the divider to facilitate easier dragging.",
              "name": "--divider-hit-area",
              "default": "12px"
            },
            {
              "description": "The minimum allowed size of the primary panel.",
              "name": "--min",
              "default": "0"
            },
            {
              "description": "The maximum allowed size of the primary panel.",
              "name": "--max",
              "default": "100%"
            }
          ],
          "cssParts": [
            {
              "description": "The start panel.",
              "name": "start"
            },
            {
              "description": "The end panel.",
              "name": "end"
            },
            {
              "description": "Targets both the start and end panels.",
              "name": "panel"
            },
            {
              "description": "The divider that separates the start and end panels.",
              "name": "divider"
            }
          ],
          "slots": [
            {
              "description": "Content to place in the start panel.",
              "name": "start"
            },
            {
              "description": "Content to place in the end panel.",
              "name": "end"
            },
            {
              "description": "The divider. Useful for slotting in a custom icon that renders as a handle.",
              "name": "divider"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "cachedPositionInPixels",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "isCollapsed",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "positionBeforeCollapsing",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "field",
              "name": "resizeObserver",
              "type": {
                "text": "ResizeObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "divider",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the\ncontainer's initial size.",
              "attribute": "position",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "positionInPixels",
              "type": {
                "text": "number"
              },
              "description": "The current position of the divider from the primary panel's edge in pixels.",
              "attribute": "position-in-pixels"
            },
            {
              "kind": "field",
              "name": "vertical",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the split panel in a vertical orientation with the start and end panels stacked.",
              "attribute": "vertical",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "primary",
              "type": {
                "text": "'start' | 'end' | undefined"
              },
              "description": "If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a\nprimary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the\nhost element is resized.",
              "attribute": "primary"
            },
            {
              "kind": "field",
              "name": "snapValue",
              "type": {
                "text": "string | SnapFunction"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "snapFunction",
              "type": {
                "text": "SnapFunction"
              },
              "privacy": "private",
              "default": "SNAP_NONE"
            },
            {
              "kind": "method",
              "name": "toSnapFunction",
              "privacy": "private",
              "return": {
                "type": {
                  "text": ""
                }
              },
              "parameters": [
                {
                  "name": "snap",
                  "type": {
                    "text": "string"
                  },
                  "description": "The snap string."
                }
              ],
              "description": "Converts a string containing either a series of fixed/repeated snap points (e.g. \"repeat(20%)\", \"100px 200px 800px\", or \"10% 50% repeat(10px)\") into a SnapFunction. `SnapFunction`s take in a `SnapFunctionOpts` and return the position that the split panel should snap to."
            },
            {
              "kind": "field",
              "name": "snap",
              "description": "Either one or more space-separated values at which the divider should snap, in pixels, percentages, or repeat expressions e.g. `'100px 50% 500px' or `repeat(50%) 10px`,\nor a function which takes in a `SnapFunctionParams`, and returns a position to snap to, e.g. `({ pos }) => Math.round(pos / 8) * 8`.",
              "type": {
                "text": "string | SnapFunction"
              },
              "attribute": "snap",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "snapThreshold",
              "type": {
                "text": "number"
              },
              "default": "12",
              "description": "How close the divider must be to a snap point until snapping occurs.",
              "attribute": "snap-threshold"
            },
            {
              "kind": "method",
              "name": "detectSize",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "percentageToPixels",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "pixelsToPercentage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDrag",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "PointerEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleResize",
              "privacy": "private",
              "parameters": [
                {
                  "name": "entries",
                  "type": {
                    "text": "ResizeObserverEntry[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handlePositionChange"
            },
            {
              "kind": "method",
              "name": "handlePositionInPixelsChange"
            },
            {
              "kind": "method",
              "name": "handleVerticalChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the divider's position changes.",
              "name": "sl-reposition",
              "reactName": "onSlReposition",
              "eventName": "SlRepositionEvent"
            }
          ],
          "attributes": [
            {
              "name": "position",
              "type": {
                "text": "number"
              },
              "default": "50",
              "description": "The current position of the divider from the primary panel's edge as a percentage 0-100. Defaults to 50% of the\ncontainer's initial size.",
              "fieldName": "position"
            },
            {
              "name": "position-in-pixels",
              "type": {
                "text": "number"
              },
              "description": "The current position of the divider from the primary panel's edge in pixels.",
              "fieldName": "positionInPixels"
            },
            {
              "name": "vertical",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the split panel in a vertical orientation with the start and end panels stacked.",
              "fieldName": "vertical"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables resizing. Note that the position may still change as a result of resizing the host element.",
              "fieldName": "disabled"
            },
            {
              "name": "primary",
              "type": {
                "text": "'start' | 'end' | undefined"
              },
              "description": "If no primary panel is designated, both panels will resize proportionally when the host element is resized. If a\nprimary panel is designated, it will maintain its size and the other panel will grow or shrink as needed when the\nhost element is resized.",
              "fieldName": "primary"
            },
            {
              "name": "snap",
              "description": "Either one or more space-separated values at which the divider should snap, in pixels, percentages, or repeat expressions e.g. `'100px 50% 500px' or `repeat(50%) 10px`,\nor a function which takes in a `SnapFunctionParams`, and returns a position to snap to, e.g. `({ pos }) => Math.round(pos / 8) * 8`.",
              "type": {
                "text": "string | SnapFunction"
              },
              "fieldName": "snap"
            },
            {
              "name": "snap-threshold",
              "type": {
                "text": "number"
              },
              "default": "12",
              "description": "How close the divider must be to a snap point until snapping occurs.",
              "fieldName": "snapThreshold"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Split panels display two adjacent panels, allowing the user to reposition them.",
          "tagNameWithoutPrefix": "split-panel",
          "tagName": "sl-split-panel",
          "customElement": true,
          "jsDoc": "/**\n * @summary Split panels display two adjacent panels, allowing the user to reposition them.\n * @documentation https://shoelace.style/components/split-panel\n * @status stable\n * @since 2.0\n *\n * @event sl-reposition - Emitted when the divider's position changes.\n *\n * @slot start - Content to place in the start panel.\n * @slot end - Content to place in the end panel.\n * @slot divider - The divider. Useful for slotting in a custom icon that renders as a handle.\n *\n * @csspart start - The start panel.\n * @csspart end - The end panel.\n * @csspart panel - Targets both the start and end panels.\n * @csspart divider - The divider that separates the start and end panels.\n *\n * @cssproperty [--divider-width=4px] - The width of the visible divider.\n * @cssproperty [--divider-hit-area=12px] - The invisible region around the divider where dragging can occur. This is\n *  usually wider than the divider to facilitate easier dragging.\n * @cssproperty [--min=0] - The minimum allowed size of the primary panel.\n * @cssproperty [--max=100%] - The maximum allowed size of the primary panel.\n */",
          "documentation": "https://shoelace.style/components/split-panel",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "SNAP_NONE",
          "declaration": {
            "name": "SNAP_NONE",
            "module": "components/split-panel/split-panel.js"
          }
        },
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSplitPanel",
            "module": "components/split-panel/split-panel.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/steps/steps.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSteps",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon }"
            },
            {
              "kind": "field",
              "name": "items",
              "type": {
                "text": "StepItem[]"
              },
              "default": "[]",
              "description": "步骤条数据",
              "attribute": "items"
            },
            {
              "kind": "field",
              "name": "current",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "当前步骤（从 0 开始）",
              "attribute": "current"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "StepStatus"
              },
              "default": "'process'",
              "description": "当前步骤的状态，默认 process",
              "attribute": "status"
            },
            {
              "kind": "field",
              "name": "initial",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "起始序号（显示用），默认 0",
              "attribute": "initial"
            },
            {
              "kind": "field",
              "name": "percent",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "当前步骤进度百分比（0-100），仅 process 状态生效",
              "attribute": "percent"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "StepSize"
              },
              "default": "'default'",
              "description": "尺寸，default 或 small",
              "attribute": "size"
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "StepType"
              },
              "default": "'default'",
              "description": "类型",
              "attribute": "type"
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "StepVariant"
              },
              "default": "'filled'",
              "description": "样式变体：filled（填充）或 outlined（描边）",
              "attribute": "variant"
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "StepOrientation"
              },
              "default": "'horizontal'",
              "description": "方向：horizontal（水平）或 vertical（垂直）",
              "attribute": "orientation"
            },
            {
              "kind": "field",
              "name": "responsive",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否开启响应式（窄于 532px 自动切换为垂直模式）",
              "attribute": "responsive"
            },
            {
              "kind": "field",
              "name": "titlePlacement",
              "type": {
                "text": "StepTitlePlacement"
              },
              "default": "'horizontal'",
              "description": "标签位置：horizontal（图标右侧，默认）或 vertical（图标下方）",
              "attribute": "titlePlacement"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "description": "文字方向：ltr（从左到右）或 rtl（从右到左）",
              "attribute": "direction"
            },
            {
              "kind": "field",
              "name": "onChange",
              "type": {
                "text": "(current: number) => void | undefined"
              },
              "description": "点击步骤切换的回调，传入后步骤条变为可点击状态"
            },
            {
              "kind": "field",
              "name": "_isVertical",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_resizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_updateOutlinedPanelArrows",
              "privacy": "private",
              "description": "动态设置 outlined panel 箭头高度"
            },
            {
              "kind": "field",
              "name": "effectiveOrientation",
              "type": {
                "text": "StepOrientation"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "clickable",
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleStepClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getStepStatus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "StepStatus"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getNextStepStatus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "StepStatus | null"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                },
                {
                  "name": "stepStatus",
                  "type": {
                    "text": "StepStatus"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderDot",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "StepItem"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderDefault",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "StepItem"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderNavigation",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "StepItem"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getPositionStatus",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "'finish' | 'process' | 'wait'"
                }
              },
              "parameters": [
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ],
              "description": "获取步骤的位置状态（不受 item.status 覆盖）"
            },
            {
              "kind": "method",
              "name": "renderPanel",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "StepItem"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderInline",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "StepItem"
                  }
                },
                {
                  "name": "index",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            }
          ],
          "attributes": [
            {
              "name": "items",
              "type": {
                "text": "StepItem[]"
              },
              "default": "[]",
              "description": "步骤条数据",
              "fieldName": "items"
            },
            {
              "name": "current",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "当前步骤（从 0 开始）",
              "fieldName": "current"
            },
            {
              "name": "status",
              "type": {
                "text": "StepStatus"
              },
              "default": "'process'",
              "description": "当前步骤的状态，默认 process",
              "fieldName": "status"
            },
            {
              "name": "initial",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "起始序号（显示用），默认 0",
              "fieldName": "initial"
            },
            {
              "name": "percent",
              "type": {
                "text": "number | undefined"
              },
              "default": "undefined",
              "description": "当前步骤进度百分比（0-100），仅 process 状态生效",
              "fieldName": "percent"
            },
            {
              "name": "size",
              "type": {
                "text": "StepSize"
              },
              "default": "'default'",
              "description": "尺寸，default 或 small",
              "fieldName": "size"
            },
            {
              "name": "type",
              "type": {
                "text": "StepType"
              },
              "default": "'default'",
              "description": "类型",
              "fieldName": "type"
            },
            {
              "name": "variant",
              "type": {
                "text": "StepVariant"
              },
              "default": "'filled'",
              "description": "样式变体：filled（填充）或 outlined（描边）",
              "fieldName": "variant"
            },
            {
              "name": "orientation",
              "type": {
                "text": "StepOrientation"
              },
              "default": "'horizontal'",
              "description": "方向：horizontal（水平）或 vertical（垂直）",
              "fieldName": "orientation"
            },
            {
              "name": "responsive",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否开启响应式（窄于 532px 自动切换为垂直模式）",
              "fieldName": "responsive"
            },
            {
              "name": "titlePlacement",
              "type": {
                "text": "StepTitlePlacement"
              },
              "default": "'horizontal'",
              "description": "标签位置：horizontal（图标右侧，默认）或 vertical（图标下方）",
              "fieldName": "titlePlacement"
            },
            {
              "name": "direction",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "default": "'ltr'",
              "description": "文字方向：ltr（从左到右）或 rtl（从右到左）",
              "fieldName": "direction"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "tagNameWithoutPrefix": "steps",
          "tagName": "sl-steps",
          "customElement": true
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "StepItem",
          "declaration": {
            "name": "StepItem",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepStatus",
          "declaration": {
            "name": "StepStatus",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepType",
          "declaration": {
            "name": "StepType",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepSize",
          "declaration": {
            "name": "StepSize",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepVariant",
          "declaration": {
            "name": "StepVariant",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepOrientation",
          "declaration": {
            "name": "StepOrientation",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "StepTitlePlacement",
          "declaration": {
            "name": "StepTitlePlacement",
            "module": "./interface.js"
          }
        },
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSteps",
            "module": "components/steps/steps.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/switch/switch.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlSwitch",
          "cssProperties": [
            {
              "description": "The width of the switch.",
              "name": "--width"
            },
            {
              "description": "The height of the switch.",
              "name": "--height"
            },
            {
              "description": "The size of the thumb.",
              "name": "--thumb-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The control that houses the switch's thumb.",
              "name": "control"
            },
            {
              "description": "The switch's thumb.",
              "name": "thumb"
            },
            {
              "description": "The switch's label.",
              "name": "label"
            },
            {
              "description": "The help text's wrapper.",
              "name": "form-control-help-text"
            }
          ],
          "slots": [
            {
              "description": "The switch's label.",
              "name": ""
            },
            {
              "description": "Text that describes how to use the switch. Alternatively, you can use the `help-text` attribute.",
              "name": "help-text"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "formControlController",
              "privacy": "private",
              "readonly": true,
              "default": "new FormControlController(this, { value: (control: SlSwitch) => (control.checked ? control.value || 'on' : undefined), defaultValue: (control: SlSwitch) => control.defaultChecked, setValue: (control: SlSwitch, 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 switch, submitted as a name/value pair with form data.",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the switch, submitted as a name/value pair with form data.",
              "attribute": "value"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The switch's size.",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the switch.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the switch in a checked state.",
              "attribute": "checked",
              "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 switch a required field.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The switch'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": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleInvalid",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleCheckedChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "click",
              "description": "Simulates a click on the switch."
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ],
              "description": "Sets focus on the switch."
            },
            {
              "kind": "method",
              "name": "blur",
              "description": "Removes focus from the switch."
            },
            {
              "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 the control's checked state changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "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 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 switch, submitted as a name/value pair with form data.",
              "fieldName": "name"
            },
            {
              "name": "value",
              "type": {
                "text": "string"
              },
              "description": "The current value of the switch, submitted as a name/value pair with form data.",
              "fieldName": "value"
            },
            {
              "name": "size",
              "type": {
                "text": "'small' | 'medium' | 'large'"
              },
              "default": "'medium'",
              "description": "The switch's size.",
              "fieldName": "size"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the switch.",
              "fieldName": "disabled"
            },
            {
              "name": "checked",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the switch in a checked state.",
              "fieldName": "checked"
            },
            {
              "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 switch a required field.",
              "fieldName": "required"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The switch'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": "Switches allow the user to toggle an option on or off.",
          "tagNameWithoutPrefix": "switch",
          "tagName": "sl-switch",
          "customElement": true,
          "jsDoc": "/**\n * @summary Switches allow the user to toggle an option on or off.\n * @documentation https://shoelace.style/components/switch\n * @status stable\n * @since 2.0\n *\n * @slot - The switch's label.\n * @slot help-text - Text that describes how to use the switch. 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 the control's checked state changes.\n * @event sl-input - Emitted when the control receives input.\n * @event sl-focus - Emitted when the control gains focus.\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 control that houses the switch's thumb.\n * @csspart thumb - The switch's thumb.\n * @csspart label - The switch's label.\n * @csspart form-control-help-text - The help text's wrapper.\n *\n * @cssproperty --width - The width of the switch.\n * @cssproperty --height - The height of the switch.\n * @cssproperty --thumb-size - The size of the thumb.\n */",
          "documentation": "https://shoelace.style/components/switch",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlSwitch",
            "module": "components/switch/switch.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/table/table.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTable",
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-checkbox': SlCheckBox, 'sl-radio': SlRadio, 'sl-pagination': SlPagination }"
            },
            {
              "kind": "field",
              "name": "rowVirtualizerController",
              "type": {
                "text": "VirtualizerController<Element, Element>"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "tableController",
              "privacy": "private",
              "default": "new TableController<TData>(this)"
            },
            {
              "kind": "field",
              "name": "rowKey",
              "type": {
                "text": "TableProps<TData>['rowKey']"
              },
              "default": "'key'",
              "attribute": "rowKey"
            },
            {
              "kind": "field",
              "name": "columns",
              "type": {
                "text": "TableProps<TData>['columns']"
              },
              "default": "[]",
              "attribute": "columns"
            },
            {
              "kind": "field",
              "name": "dataSource",
              "type": {
                "text": "TableProps<TData>['dataSource']"
              },
              "default": "[]",
              "attribute": "dataSource"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "TableProps<TData>['loading']"
              },
              "default": "false",
              "attribute": "loading"
            },
            {
              "kind": "field",
              "name": "bordered",
              "type": {
                "text": "TableProps<TData>['bordered']"
              },
              "default": "false",
              "attribute": "bordered"
            },
            {
              "kind": "field",
              "name": "direction",
              "type": {
                "text": "TableProps<TData>['direction']"
              },
              "default": "'ltr'",
              "attribute": "direction"
            },
            {
              "kind": "field",
              "name": "showHeader",
              "type": {
                "text": "TableProps<TData>['showHeader']"
              },
              "default": "true",
              "attribute": "showHeader"
            },
            {
              "kind": "field",
              "name": "rowSelection",
              "type": {
                "text": "TableRowSelection<TData>"
              },
              "attribute": "rowSelection"
            },
            {
              "kind": "field",
              "name": "tableScroll",
              "type": {
                "text": "TableProps<TData>['tableScroll']"
              },
              "default": "{}",
              "attribute": "tableScroll"
            },
            {
              "kind": "field",
              "name": "pagination",
              "type": {
                "text": "TableProps<TData>['pagination'] | undefined"
              },
              "attribute": "pagination"
            },
            {
              "kind": "field",
              "name": "expandProps",
              "type": {
                "text": "TableProps<TData>['expandProps'] | undefined"
              },
              "attribute": "expandProps"
            },
            {
              "kind": "field",
              "name": "tree",
              "type": {
                "text": "TableProps<TData>['tree'] | undefined"
              },
              "attribute": "tree"
            },
            {
              "kind": "field",
              "name": "enableColumnResizing",
              "type": {
                "text": "TableProps<TData>['enableColumnResizing']"
              },
              "default": "false",
              "attribute": "enableColumnResizing"
            },
            {
              "kind": "field",
              "name": "slHeaderRow",
              "type": {
                "text": "TableProps<TData>['slHeaderRow'] | undefined"
              },
              "attribute": "slHeaderRow"
            },
            {
              "kind": "field",
              "name": "slRow",
              "type": {
                "text": "TableProps<TData>['slRow'] | undefined"
              },
              "attribute": "slRow"
            },
            {
              "kind": "field",
              "name": "slColumnResize",
              "type": {
                "text": "TableProps<TData>['slColumnResize'] | undefined"
              },
              "attribute": "slColumnResize"
            },
            {
              "kind": "field",
              "name": "virtualized",
              "type": {
                "text": "TableProps<TData>['virtualized']"
              },
              "attribute": "virtualized"
            },
            {
              "kind": "field",
              "name": "rowDrag",
              "type": {
                "text": "TableProps<TData>['rowDrag']"
              },
              "default": "false",
              "description": "是否允许拖动调整行顺序",
              "attribute": "rowDrag"
            },
            {
              "kind": "field",
              "name": "slRowReorder",
              "type": {
                "text": "TableProps<TData>['slRowReorder'] | undefined"
              },
              "description": "行拖拽排序后的回调",
              "attribute": "slRowReorder"
            },
            {
              "kind": "field",
              "name": "summary",
              "type": {
                "text": "TableProps<TData>['summary'] | undefined"
              },
              "attribute": "summary"
            },
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "TableProps<TData>['size']"
              },
              "default": "'default'",
              "description": "表格尺寸",
              "attribute": "size"
            },
            {
              "kind": "field",
              "name": "rowSelectedMap",
              "type": {
                "text": "RowSelectionState"
              },
              "default": "{}"
            },
            {
              "kind": "field",
              "name": "expandedMap",
              "type": {
                "text": "ExpandedState"
              },
              "default": "{}"
            },
            {
              "kind": "field",
              "name": "sorting",
              "type": {
                "text": "SortingState"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "columnFilters",
              "type": {
                "text": "ColumnFiltersState"
              },
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "tableWidth",
              "type": {
                "text": "number"
              },
              "default": "0"
            },
            {
              "kind": "field",
              "name": "columnSizing",
              "type": {
                "text": "Record<string, number>"
              },
              "default": "{}"
            },
            {
              "kind": "field",
              "name": "pageIndex",
              "type": {
                "text": "number"
              },
              "default": "0"
            },
            {
              "kind": "field",
              "name": "columnPinning",
              "type": {
                "text": "Record<string, string[]>"
              },
              "default": "{ left: ['drag', 'expend', 'select'], right: [] }"
            },
            {
              "kind": "field",
              "name": "tableWrapRef",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "headerWrapRef",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "bodyWrapRef",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "footerWrapRef",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "syncing",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "bodyResizeObserver",
              "type": {
                "text": "ResizeObserver | undefined"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "leafColumns",
              "type": {
                "text": "TableProps<TData>['columns']"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "flatColumns",
              "type": {
                "text": "TableProps<TData>['columns']"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "resolvedDirection",
              "type": {
                "text": "'ltr' | 'rtl'"
              },
              "privacy": "private",
              "description": "获取实际方向：direction prop 优先，fallback 到基类 dir 属性",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "normalizeTree",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "false | TreeConfig"
                }
              }
            },
            {
              "kind": "method",
              "name": "getTreeInfo",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "{ treeConfig: false | TreeConfig; treeEnabled: boolean }"
                }
              }
            },
            {
              "kind": "field",
              "name": "adapter",
              "type": {
                "text": "TableAdapter"
              },
              "readonly": true
            },
            {
              "kind": "field",
              "name": "warnIfNoKey",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "setColumnWidth"
            },
            {
              "kind": "field",
              "name": "handleBodyScroll"
            },
            {
              "kind": "field",
              "name": "handleBodyScrollLeft"
            },
            {
              "kind": "field",
              "name": "handleWindowResize"
            },
            {
              "kind": "field",
              "name": "syncTableWidth"
            },
            {
              "kind": "field",
              "name": "setScrollBarStyle"
            },
            {
              "kind": "field",
              "name": "observeBodyResize",
              "privacy": "private",
              "description": "监听 body 容器尺寸变化，滚动条出现/消失时同步表头"
            },
            {
              "kind": "field",
              "name": "setScrollPositionClassName"
            },
            {
              "kind": "field",
              "name": "handleColumnSizingChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "generateCustomCellSlot",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "generateCustomRowSlot",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "generateCustomTfootSlot",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "generateCustomHeadSlot",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderTable",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "tableInstance",
                  "type": {
                    "text": "Table<TData>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderEmpty",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderMainTable",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "unknown"
                }
              },
              "parameters": [
                {
                  "name": "tableInstance",
                  "type": {
                    "text": "Table<TData>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderPagination",
              "privacy": "private",
              "parameters": [
                {
                  "name": "place",
                  "type": {
                    "text": "'top' | 'bottom'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "buildColMeta",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "buildLeafColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "ColumnDef<TData, any>"
                }
              },
              "parameters": [
                {
                  "name": "opts",
                  "type": {
                    "text": "{\n    col: ColumnProps;\n    commonArgs: {\n      columnHelper: ReturnType<typeof createColumnHelper<TData>>;\n      firstDataIndex: string | undefined;\n      treeEnabled: boolean;\n    };\n  }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "buildGroupColumn",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "ColumnDef<TData, any>[]"
                }
              },
              "parameters": [
                {
                  "name": "opts",
                  "type": {
                    "text": "{\n    cols: ColumnProps[];\n    commonArgs: {\n      columnHelper: ReturnType<typeof createColumnHelper<TData>>;\n      firstDataIndex: string | undefined;\n      treeEnabled: boolean;\n    };\n  }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "buildColumns",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "ColumnDef<TData, any>[]"
                }
              }
            },
            {
              "kind": "field",
              "name": "handleRowSelectionChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleSortingChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleColumnFiltersChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFilterDropdownChange"
            },
            {
              "kind": "field",
              "name": "getRowCanExpand",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "expendedChange",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "getSubRows",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "buildTableState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "extra",
                  "optional": true,
                  "type": {
                    "text": "Record<string, unknown>"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handlePaginationChange"
            }
          ],
          "events": [
            {
              "name": "change",
              "type": {
                "text": "CustomEvent"
              },
              "reactName": "onChange",
              "eventName": "ChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "rowKey",
              "type": {
                "text": "TableProps<TData>['rowKey']"
              },
              "default": "'key'",
              "fieldName": "rowKey"
            },
            {
              "name": "columns",
              "type": {
                "text": "TableProps<TData>['columns']"
              },
              "default": "[]",
              "fieldName": "columns"
            },
            {
              "name": "dataSource",
              "type": {
                "text": "TableProps<TData>['dataSource']"
              },
              "default": "[]",
              "fieldName": "dataSource"
            },
            {
              "name": "loading",
              "type": {
                "text": "TableProps<TData>['loading']"
              },
              "default": "false",
              "fieldName": "loading"
            },
            {
              "name": "bordered",
              "type": {
                "text": "TableProps<TData>['bordered']"
              },
              "default": "false",
              "fieldName": "bordered"
            },
            {
              "name": "direction",
              "type": {
                "text": "TableProps<TData>['direction']"
              },
              "default": "'ltr'",
              "fieldName": "direction"
            },
            {
              "name": "showHeader",
              "type": {
                "text": "TableProps<TData>['showHeader']"
              },
              "default": "true",
              "fieldName": "showHeader"
            },
            {
              "name": "rowSelection",
              "type": {
                "text": "TableRowSelection<TData>"
              },
              "fieldName": "rowSelection"
            },
            {
              "name": "tableScroll",
              "type": {
                "text": "TableProps<TData>['tableScroll']"
              },
              "default": "{}",
              "fieldName": "tableScroll"
            },
            {
              "name": "pagination",
              "type": {
                "text": "TableProps<TData>['pagination'] | undefined"
              },
              "fieldName": "pagination"
            },
            {
              "name": "expandProps",
              "type": {
                "text": "TableProps<TData>['expandProps'] | undefined"
              },
              "fieldName": "expandProps"
            },
            {
              "name": "tree",
              "type": {
                "text": "TableProps<TData>['tree'] | undefined"
              },
              "fieldName": "tree"
            },
            {
              "name": "enableColumnResizing",
              "type": {
                "text": "TableProps<TData>['enableColumnResizing']"
              },
              "default": "false",
              "fieldName": "enableColumnResizing"
            },
            {
              "name": "slHeaderRow",
              "type": {
                "text": "TableProps<TData>['slHeaderRow'] | undefined"
              },
              "fieldName": "slHeaderRow"
            },
            {
              "name": "slRow",
              "type": {
                "text": "TableProps<TData>['slRow'] | undefined"
              },
              "fieldName": "slRow"
            },
            {
              "name": "slColumnResize",
              "type": {
                "text": "TableProps<TData>['slColumnResize'] | undefined"
              },
              "fieldName": "slColumnResize"
            },
            {
              "name": "virtualized",
              "type": {
                "text": "TableProps<TData>['virtualized']"
              },
              "fieldName": "virtualized"
            },
            {
              "name": "rowDrag",
              "type": {
                "text": "TableProps<TData>['rowDrag']"
              },
              "default": "false",
              "description": "是否允许拖动调整行顺序",
              "fieldName": "rowDrag"
            },
            {
              "name": "slRowReorder",
              "type": {
                "text": "TableProps<TData>['slRowReorder'] | undefined"
              },
              "description": "行拖拽排序后的回调",
              "fieldName": "slRowReorder"
            },
            {
              "name": "summary",
              "type": {
                "text": "TableProps<TData>['summary'] | undefined"
              },
              "fieldName": "summary"
            },
            {
              "name": "size",
              "type": {
                "text": "TableProps<TData>['size']"
              },
              "default": "'default'",
              "description": "表格尺寸",
              "fieldName": "size"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "tagNameWithoutPrefix": "table",
          "tagName": "sl-table",
          "customElement": true
        },
        {
          "kind": "variable",
          "name": "columnHelper"
        },
        {
          "kind": "variable",
          "name": "firstDataIndex"
        },
        {
          "kind": "variable",
          "name": "tableInstance"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTable",
            "module": "components/table/table.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "components/table/spinner-container.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "components/table/head-table.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "components/table/body-table.js"
          }
        },
        {
          "kind": "js",
          "name": "*",
          "declaration": {
            "name": "*",
            "module": "components/table/footer-table.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"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/think/think.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlThink",
          "cssProperties": [
            {
              "description": "Base text color shown during the blink/shimmer animation. Equivalent to React's `colorTextBlinkDefault` (`colorTextDescription`) design token. Defaults to `var(--sl-color-neutral-600)`.",
              "name": "--sl-c-think-TitleTextBlink-color-default"
            },
            {
              "description": "Highlight (shine) color of the blink shimmer beam. Equivalent to React's `colorTextBlink` (`colorTextBase`) design token. Defaults to `var(--sl-color-neutral-900)`.",
              "name": "--sl-c-think-TitleTextBlink-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper (maps to React's `root` semantic DOM).",
              "name": "base"
            },
            {
              "description": "The clickable status bar: icon + title + chevron (maps to React's `status` semantic DOM).",
              "name": "status"
            },
            {
              "description": "The icon container within the status bar.",
              "name": "status-icon"
            },
            {
              "description": "The title text area within the status bar.",
              "name": "status-text"
            },
            {
              "description": "The expand/collapse chevron indicator.",
              "name": "chevron"
            },
            {
              "description": "The collapsible body container.",
              "name": "body"
            },
            {
              "description": "The content area inside the body (maps to React's `content` semantic DOM).",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The thinking content body.",
              "name": ""
            },
            {
              "description": "Rich HTML content for the status bar title. Overrides the `title` attribute.",
              "name": "title"
            },
            {
              "description": "A custom icon displayed in the status bar when not loading. Defaults to the Think icon.",
              "name": "icon"
            },
            {
              "description": "A custom icon displayed when `loading` is true. Overrides the default spinner. This is the web-component equivalent of passing a ReactNode to the React `loading` prop.",
              "name": "loading-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text shown in the status bar. Accepts plain text.\nFor rich HTML content, use the `title` slot instead.\nMaps to React's `title: React.ReactNode` prop.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the status icon is replaced by a loading spinner\n(or the content of the `loading-icon` slot for a custom indicator).\nMaps to React's `loading: boolean | React.ReactNode` prop:\n  - `loading` (boolean) → boolean attribute\n  - `loading` (ReactNode) → use the `loading-icon` slot",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the content body is expanded.\nWhen used without `default-expanded`, this acts as a controlled prop\n(the parent is responsible for updating it).\nWhen neither this nor `default-expanded` is set on the element,\nthe component defaults to expanded (equivalent to React's `defaultExpanded = true`).\nMaps to React's `expanded: boolean` prop.",
              "attribute": "expanded",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultExpanded",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "The initial expanded state when the component is first rendered.\nOnly applies if `expanded` is not set as an attribute on the element.\nMaps to React's `defaultExpanded: boolean` prop (default: `true`).\n\nBecause Lit's `type: Boolean` treats attribute *presence* as `true`,\nsetting `default-expanded=\"false\"` in HTML does NOT work — this is\nconsistent with all other Shoelace boolean attributes.\nTo start collapsed, set the property via JS: `el.defaultExpanded = false`.",
              "attribute": "default-expanded"
            },
            {
              "kind": "field",
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, applies a blinking animation to the title text to signal ongoing activity.\nMaps to React's `blink: boolean` prop.",
              "attribute": "blink",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "handleExpandedChange",
              "description": "Runs AFTER the first render whenever `expanded` changes.\nEmits the appropriate event immediately (matching React's `onExpand` timing,\nwhich fires before the animation), then plays the expand/collapse animation."
            },
            {
              "kind": "method",
              "name": "handleToggle",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "description": "Emitted when the think block starts expanding (before animation). Equivalent to React's `onExpand(true)`.",
              "name": "sl-expand",
              "reactName": "onSlExpand",
              "eventName": "SlExpandEvent"
            },
            {
              "description": "Emitted when the think block starts collapsing (before animation). Equivalent to React's `onExpand(false)`.",
              "name": "sl-collapse",
              "reactName": "onSlCollapse",
              "eventName": "SlCollapseEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text shown in the status bar. Accepts plain text.\nFor rich HTML content, use the `title` slot instead.\nMaps to React's `title: React.ReactNode` prop.",
              "fieldName": "title"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, the status icon is replaced by a loading spinner\n(or the content of the `loading-icon` slot for a custom indicator).\nMaps to React's `loading: boolean | React.ReactNode` prop:\n  - `loading` (boolean) → boolean attribute\n  - `loading` (ReactNode) → use the `loading-icon` slot",
              "fieldName": "loading"
            },
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Whether the content body is expanded.\nWhen used without `default-expanded`, this acts as a controlled prop\n(the parent is responsible for updating it).\nWhen neither this nor `default-expanded` is set on the element,\nthe component defaults to expanded (equivalent to React's `defaultExpanded = true`).\nMaps to React's `expanded: boolean` prop.",
              "fieldName": "expanded"
            },
            {
              "name": "default-expanded",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "The initial expanded state when the component is first rendered.\nOnly applies if `expanded` is not set as an attribute on the element.\nMaps to React's `defaultExpanded: boolean` prop (default: `true`).\n\nBecause Lit's `type: Boolean` treats attribute *presence* as `true`,\nsetting `default-expanded=\"false\"` in HTML does NOT work — this is\nconsistent with all other Shoelace boolean attributes.\nTo start collapsed, set the property via JS: `el.defaultExpanded = false`.",
              "fieldName": "defaultExpanded"
            },
            {
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, applies a blinking animation to the title text to signal ongoing activity.\nMaps to React's `blink: boolean` prop.",
              "fieldName": "blink"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Think is used to display an AI model's thinking process with expandable/collapsible content.",
          "tagNameWithoutPrefix": "think",
          "tagName": "sl-think",
          "customElement": true,
          "jsDoc": "/**\n * @summary Think is used to display an AI model's thinking process with expandable/collapsible content.\n * @documentation https://shoelace.style/components/think\n * @status experimental\n * @since 2.0\n *\n * @slot - The thinking content body.\n * @slot title - Rich HTML content for the status bar title. Overrides the `title` attribute.\n * @slot icon - A custom icon displayed in the status bar when not loading. Defaults to the Think icon.\n * @slot loading-icon - A custom icon displayed when `loading` is true. Overrides the default spinner.\n *   This is the web-component equivalent of passing a ReactNode to the React `loading` prop.\n *\n * @event sl-expand - Emitted when the think block starts expanding (before animation). Equivalent to React's `onExpand(true)`.\n * @event sl-collapse - Emitted when the think block starts collapsing (before animation). Equivalent to React's `onExpand(false)`.\n *\n * @csspart base - The component's base wrapper (maps to React's `root` semantic DOM).\n * @csspart status - The clickable status bar: icon + title + chevron (maps to React's `status` semantic DOM).\n * @csspart status-icon - The icon container within the status bar.\n * @csspart status-text - The title text area within the status bar.\n * @csspart chevron - The expand/collapse chevron indicator.\n * @csspart body - The collapsible body container.\n * @csspart content - The content area inside the body (maps to React's `content` semantic DOM).\n *\n * @cssproperty --sl-c-think-TitleTextBlink-color-default - Base text color shown during the blink/shimmer animation.\n *   Equivalent to React's `colorTextBlinkDefault` (`colorTextDescription`) design token.\n *   Defaults to `var(--sl-color-neutral-600)`.\n * @cssproperty --sl-c-think-TitleTextBlink-color - Highlight (shine) color of the blink shimmer beam.\n *   Equivalent to React's `colorTextBlink` (`colorTextBase`) design token.\n *   Defaults to `var(--sl-color-neutral-900)`.\n */",
          "documentation": "https://shoelace.style/components/think",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlThink",
            "module": "components/think/think.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/thought-chain/thought-chain.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlThoughtChain",
          "cssProperties": [
            {
              "description": "Gap between the icon and the node body. Defaults to `var(--sl-spacing-small)`.",
              "name": "--sl-thought-chain-gap"
            },
            {
              "description": "Color of the vertical connector line. Defaults to `var(--sl-color-neutral-300)`.",
              "name": "--sl-thought-chain-connector-color"
            },
            {
              "description": "Size of the node icon. Defaults to `var(--sl-font-size-medium)`.",
              "name": "--sl-thought-chain-icon-size"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "Default slot for `<sl-thought-chain-node>` elements (declarative usage).",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "size",
              "type": {
                "text": "ThoughtChainSize"
              },
              "default": "'middle'",
              "description": "Size of the thought chain nodes.\n- `'small'`: compact layout\n- `'middle'`: default size\n- `'large'`: spacious layout",
              "attribute": "size",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "line",
              "type": {
                "text": "ThoughtChainLineStyle"
              },
              "default": "true",
              "description": "Line connector style between nodes.\n- `true` or `'solid'`: solid line (default)\n- `'dashed'`: dashed line\n- `'dotted'`: dotted line\n- `false`: no line\n\nNote: HTML attributes are always strings. Use `line=\"solid\"` / `line=\"dashed\"` / `line=\"dotted\"`.\nTo hide the line, use `line=\"none\"`. Programmatically, you can also set `el.line = false`.",
              "attribute": "line",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultExpandedKeys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "Keys of initially expanded collapsible nodes (uncontrolled mode).\nSet as a JSON array string attribute or via JS property.",
              "attribute": "default-expanded-keys"
            },
            {
              "kind": "field",
              "name": "expandedKeys",
              "type": {
                "text": "string[] | undefined"
              },
              "description": "Keys of currently expanded collapsible nodes (controlled mode).\nWhen set, you must update this in response to `sl-expand` events.",
              "attribute": "expanded-keys"
            },
            {
              "kind": "field",
              "name": "internalExpandedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "Internal expanded keys state for uncontrolled mode"
            },
            {
              "kind": "field",
              "name": "hasInitialized",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "method",
              "name": "getExpandedKeys",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "description": "Get the effective expanded keys"
            },
            {
              "kind": "method",
              "name": "getLineStyleValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "Normalize line value to a consistent CSS-friendly string"
            },
            {
              "kind": "method",
              "name": "updateChildNodes",
              "privacy": "private",
              "description": "Propagate context to child sl-thought-chain-node elements"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private",
              "description": "Handle slot changes to update newly added nodes"
            },
            {
              "kind": "method",
              "name": "handleItemExpand",
              "parameters": [
                {
                  "name": "key",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Handle expand/collapse toggle from child node"
            }
          ],
          "events": [
            {
              "description": "Emitted when a collapsible node is expanded or collapsed. `event.detail` contains `{ key: string, expandedKeys: string[] }`.",
              "name": "sl-expand",
              "reactName": "onSlExpand",
              "eventName": "SlExpandEvent"
            }
          ],
          "attributes": [
            {
              "name": "size",
              "type": {
                "text": "ThoughtChainSize"
              },
              "default": "'middle'",
              "description": "Size of the thought chain nodes.\n- `'small'`: compact layout\n- `'middle'`: default size\n- `'large'`: spacious layout",
              "fieldName": "size"
            },
            {
              "name": "line",
              "type": {
                "text": "ThoughtChainLineStyle"
              },
              "default": "true",
              "description": "Line connector style between nodes.\n- `true` or `'solid'`: solid line (default)\n- `'dashed'`: dashed line\n- `'dotted'`: dotted line\n- `false`: no line\n\nNote: HTML attributes are always strings. Use `line=\"solid\"` / `line=\"dashed\"` / `line=\"dotted\"`.\nTo hide the line, use `line=\"none\"`. Programmatically, you can also set `el.line = false`.",
              "fieldName": "line"
            },
            {
              "name": "default-expanded-keys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "Keys of initially expanded collapsible nodes (uncontrolled mode).\nSet as a JSON array string attribute or via JS property.",
              "fieldName": "defaultExpandedKeys"
            },
            {
              "name": "expanded-keys",
              "type": {
                "text": "string[] | undefined"
              },
              "description": "Keys of currently expanded collapsible nodes (controlled mode).\nWhen set, you must update this in response to `sl-expand` events.",
              "fieldName": "expandedKeys"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "ThoughtChain visualizes and tracks an Agent's call chain of Actions and Tools.\nIt renders a vertical list of nodes, each optionally with an icon, title, description,\ncollapsible content, footer, and status indicator. Nodes are connected by a vertical line.",
          "tagNameWithoutPrefix": "thought-chain",
          "tagName": "sl-thought-chain",
          "customElement": true,
          "jsDoc": "/**\n * @summary ThoughtChain visualizes and tracks an Agent's call chain of Actions and Tools.\n * It renders a vertical list of nodes, each optionally with an icon, title, description,\n * collapsible content, footer, and status indicator. Nodes are connected by a vertical line.\n *\n * @documentation https://shoelace.style/components/thought-chain\n * @status experimental\n * @since 2.0\n *\n * @slot - Default slot for `<sl-thought-chain-node>` elements (declarative usage).\n *\n * @event sl-expand - Emitted when a collapsible node is expanded or collapsed.\n *   `event.detail` contains `{ key: string, expandedKeys: string[] }`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --sl-thought-chain-gap - Gap between the icon and the node body. Defaults to `var(--sl-spacing-small)`.\n * @cssproperty --sl-thought-chain-connector-color - Color of the vertical connector line. Defaults to `var(--sl-color-neutral-300)`.\n * @cssproperty --sl-thought-chain-icon-size - Size of the node icon. Defaults to `var(--sl-font-size-medium)`.\n */",
          "documentation": "https://shoelace.style/components/thought-chain",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlThoughtChain",
            "module": "components/thought-chain/thought-chain.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/thought-chain-item/thought-chain-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlThoughtChainItem",
          "cssParts": [
            {
              "description": "The item's base wrapper.",
              "name": "base"
            },
            {
              "description": "The icon container.",
              "name": "icon"
            },
            {
              "description": "The content wrapper containing title and description.",
              "name": "content"
            },
            {
              "description": "The title area.",
              "name": "title"
            },
            {
              "description": "The description area.",
              "name": "description"
            }
          ],
          "slots": [
            {
              "description": "Default slot (not used, reserved).",
              "name": ""
            },
            {
              "description": "Custom icon to display.",
              "name": "icon"
            },
            {
              "description": "The item's title. Alternatively, use the `title` attribute.",
              "name": "title"
            },
            {
              "description": "The item's description text. Alternatively, use the `description` attribute.",
              "name": "description"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text. Use the `title` slot for rich HTML content.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The description text. Use the `description` slot for rich HTML content.",
              "attribute": "description"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "ThoughtChainItemStatus | ''"
              },
              "default": "''",
              "description": "The status of this item. Determines the status icon shown.",
              "attribute": "status",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "ThoughtChainItemVariant"
              },
              "default": "'solid'",
              "description": "The visual variant of the item.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show a blink/pulse animation.",
              "attribute": "blink",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the item is disabled. Prevents click events and applies disabled styling.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item is clickable. When true, hover/cursor styles are applied.",
              "attribute": "clickable",
              "reflects": true
            },
            {
              "kind": "method",
              "name": "_detectSlotContent",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "hasIcon",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Determine if we should show the icon area",
              "readonly": true
            }
          ],
          "events": [
            {
              "description": "Emitted when the item is clicked (only when not disabled and has a click handler).",
              "name": "sl-click",
              "reactName": "onSlClick",
              "eventName": "SlClickEvent"
            }
          ],
          "attributes": [
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text. Use the `title` slot for rich HTML content.",
              "fieldName": "title"
            },
            {
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The description text. Use the `description` slot for rich HTML content.",
              "fieldName": "description"
            },
            {
              "name": "status",
              "type": {
                "text": "ThoughtChainItemStatus | ''"
              },
              "default": "''",
              "description": "The status of this item. Determines the status icon shown.",
              "fieldName": "status"
            },
            {
              "name": "variant",
              "type": {
                "text": "ThoughtChainItemVariant"
              },
              "default": "'solid'",
              "description": "The visual variant of the item.",
              "fieldName": "variant"
            },
            {
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show a blink/pulse animation.",
              "fieldName": "blink"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether the item is disabled. Prevents click events and applies disabled styling.",
              "fieldName": "disabled"
            },
            {
              "name": "clickable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item is clickable. When true, hover/cursor styles are applied.",
              "fieldName": "clickable"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A standalone thought chain item badge/tag. Used for displaying individual\naction/tool entries outside of a full thought chain. Supports variants (solid, outlined, text),\nstatus indicators, and click/disabled states.\n\nThis is the web component equivalent of React's `ThoughtChain.Item`.",
          "tagNameWithoutPrefix": "thought-chain-item",
          "tagName": "sl-thought-chain-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary A standalone thought chain item badge/tag. Used for displaying individual\n * action/tool entries outside of a full thought chain. Supports variants (solid, outlined, text),\n * status indicators, and click/disabled states.\n *\n * This is the web component equivalent of React's `ThoughtChain.Item`.\n *\n * @documentation https://shoelace.style/components/thought-chain-item\n * @status experimental\n * @since 2.0\n *\n * @slot - Default slot (not used, reserved).\n * @slot icon - Custom icon to display.\n * @slot title - The item's title. Alternatively, use the `title` attribute.\n * @slot description - The item's description text. Alternatively, use the `description` attribute.\n *\n * @event sl-click - Emitted when the item is clicked (only when not disabled and has a click handler).\n *\n * @csspart base - The item's base wrapper.\n * @csspart icon - The icon container.\n * @csspart content - The content wrapper containing title and description.\n * @csspart title - The title area.\n * @csspart description - The description area.\n */",
          "documentation": "https://shoelace.style/components/thought-chain-item",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlThoughtChainItem",
            "module": "components/thought-chain-item/thought-chain-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/thought-chain-node/thought-chain-node.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlThoughtChainNode",
          "cssParts": [
            {
              "description": "The node's base wrapper.",
              "name": "base"
            },
            {
              "description": "The icon container.",
              "name": "icon"
            },
            {
              "description": "The header section (title + description).",
              "name": "header"
            },
            {
              "description": "The title area (clickable when collapsible).",
              "name": "title"
            },
            {
              "description": "The description area.",
              "name": "description"
            },
            {
              "description": "The collapsible content wrapper.",
              "name": "content"
            },
            {
              "description": "The inner content wrapper.",
              "name": "content-inner"
            },
            {
              "description": "The footer area.",
              "name": "footer"
            },
            {
              "description": "The chevron expand/collapse indicator.",
              "name": "collapse-icon"
            }
          ],
          "slots": [
            {
              "description": "The node's main content (shown in the collapsible area).",
              "name": ""
            },
            {
              "description": "Custom icon to display instead of the default numbered circle or status icon.",
              "name": "icon"
            },
            {
              "description": "The node's title. Alternatively, use the `title` attribute.",
              "name": "title"
            },
            {
              "description": "The node's description text.",
              "name": "description"
            },
            {
              "description": "Footer content displayed below the content area.",
              "name": "footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "contentEl",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "nodeKey",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Unique key for this node. Required when using collapsible mode or\ncontrolled expansion via the parent `<sl-thought-chain>`.\nMaps to React's `key` property on ThoughtChainItemType.",
              "attribute": "node-key",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text shown in the node header. Use the `title` slot for rich HTML.",
              "attribute": "title"
            },
            {
              "kind": "field",
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The description text shown below the title. Use the `description` slot for rich HTML.",
              "attribute": "description"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "ThoughtChainItemStatus | ''"
              },
              "default": "''",
              "description": "The status of this node. Shows a status icon and applies status-specific styling.",
              "attribute": "status",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this node's content area is collapsible.",
              "attribute": "collapsible",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show a blink/pulse animation on the title (indicates ongoing activity).",
              "attribute": "blink",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "noIcon",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to hide the icon entirely (equivalent to React's `icon={false}`).",
              "attribute": "no-icon",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "description": "Whether this node's content is currently expanded",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_prevExpanded",
              "type": {
                "text": "boolean | null"
              },
              "privacy": "private",
              "default": "null",
              "description": "Track previous expanded state for animation"
            },
            {
              "kind": "method",
              "name": "animateContent",
              "privacy": "private",
              "parameters": [
                {
                  "name": "expanding",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTitleClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTitleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_detectSlotContent",
              "privacy": "private",
              "description": "Detect slot content on slotchange events"
            },
            {
              "kind": "method",
              "name": "_checkSlotHasContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "slotName",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Check if a slot has assigned non-empty nodes"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private",
              "description": "Handle all slot changes"
            },
            {
              "kind": "method",
              "name": "renderIcon",
              "privacy": "private",
              "description": "Render the icon area"
            }
          ],
          "attributes": [
            {
              "name": "node-key",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Unique key for this node. Required when using collapsible mode or\ncontrolled expansion via the parent `<sl-thought-chain>`.\nMaps to React's `key` property on ThoughtChainItemType.",
              "fieldName": "nodeKey"
            },
            {
              "name": "title",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The title text shown in the node header. Use the `title` slot for rich HTML.",
              "fieldName": "title"
            },
            {
              "name": "description",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The description text shown below the title. Use the `description` slot for rich HTML.",
              "fieldName": "description"
            },
            {
              "name": "status",
              "type": {
                "text": "ThoughtChainItemStatus | ''"
              },
              "default": "''",
              "description": "The status of this node. Shows a status icon and applies status-specific styling.",
              "fieldName": "status"
            },
            {
              "name": "collapsible",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this node's content area is collapsible.",
              "fieldName": "collapsible"
            },
            {
              "name": "blink",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show a blink/pulse animation on the title (indicates ongoing activity).",
              "fieldName": "blink"
            },
            {
              "name": "no-icon",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to hide the icon entirely (equivalent to React's `icon={false}`).",
              "fieldName": "noIcon"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A single node in a thought chain. Used as a child of `<sl-thought-chain>`.\nEach node represents one step/action in the chain with an icon, title, description,\ncollapsible content, and footer.",
          "tagNameWithoutPrefix": "thought-chain-node",
          "tagName": "sl-thought-chain-node",
          "customElement": true,
          "jsDoc": "/**\n * @summary A single node in a thought chain. Used as a child of `<sl-thought-chain>`.\n * Each node represents one step/action in the chain with an icon, title, description,\n * collapsible content, and footer.\n *\n * @documentation https://shoelace.style/components/thought-chain-node\n * @status experimental\n * @since 2.0\n *\n * @slot - The node's main content (shown in the collapsible area).\n * @slot icon - Custom icon to display instead of the default numbered circle or status icon.\n * @slot title - The node's title. Alternatively, use the `title` attribute.\n * @slot description - The node's description text.\n * @slot footer - Footer content displayed below the content area.\n *\n * @csspart base - The node's base wrapper.\n * @csspart icon - The icon container.\n * @csspart header - The header section (title + description).\n * @csspart title - The title area (clickable when collapsible).\n * @csspart description - The description area.\n * @csspart content - The collapsible content wrapper.\n * @csspart content-inner - The inner content wrapper.\n * @csspart footer - The footer area.\n * @csspart collapse-icon - The chevron expand/collapse indicator.\n */",
          "documentation": "https://shoelace.style/components/thought-chain-node",
          "status": "experimental",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlThoughtChainNode",
            "module": "components/thought-chain-node/thought-chain-node.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/time-panel/time-panel.js",
      "declarations": [],
      "exports": []
    },
    {
      "kind": "javascript-module",
      "path": "components/timeline/timeline-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTimelineItem",
          "cssProperties": [
            {
              "description": "The size of the dot node.",
              "name": "--sl-timeline-dot-size"
            },
            {
              "description": "The border width of the dot node.",
              "name": "--sl-timeline-dot-border-width"
            },
            {
              "description": "The background color of the dot node.",
              "name": "--sl-timeline-dot-bg"
            },
            {
              "description": "The width of the connecting tail line.",
              "name": "--sl-timeline-tail-width"
            },
            {
              "description": "The color of the connecting tail line.",
              "name": "--sl-timeline-tail-color"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The dot indicator element.",
              "name": "dot"
            },
            {
              "description": "The connecting line between this item and the next.",
              "name": "tail"
            },
            {
              "description": "The content body wrapper.",
              "name": "body"
            },
            {
              "description": "The title element.",
              "name": "title"
            },
            {
              "description": "The content area below the title.",
              "name": "content"
            }
          ],
          "slots": [
            {
              "description": "The main content of the timeline item.",
              "name": ""
            },
            {
              "description": "An optional custom icon to display instead of the default dot.",
              "name": "icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'icon', 'title')"
            },
            {
              "kind": "field",
              "name": "color",
              "type": {
                "text": "string"
              },
              "default": "'blue'",
              "description": "The color of the dot indicator. Can be a preset color (`blue`, `red`, `green`, `gray`) or any valid CSS color value.\nDefaults to `blue`.",
              "attribute": "color",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item is in a loading state. When true, a spinner is shown instead of the dot.",
              "attribute": "loading",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'filled'"
              },
              "default": "'outlined'",
              "description": "The variant style of the dot. `outlined` shows a ring; `filled` shows a solid dot.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The placement of this item relative to the timeline axis. Used by the parent `sl-timeline`.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "last",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this is the last item in the timeline. Set automatically by the parent `sl-timeline`.",
              "attribute": "last",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "isPresetColor",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isCustomIcon",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasTitle",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            }
          ],
          "attributes": [
            {
              "name": "color",
              "type": {
                "text": "string"
              },
              "default": "'blue'",
              "description": "The color of the dot indicator. Can be a preset color (`blue`, `red`, `green`, `gray`) or any valid CSS color value.\nDefaults to `blue`.",
              "fieldName": "color"
            },
            {
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this item is in a loading state. When true, a spinner is shown instead of the dot.",
              "fieldName": "loading"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'filled'"
              },
              "default": "'outlined'",
              "description": "The variant style of the dot. `outlined` shows a ring; `filled` shows a solid dot.",
              "fieldName": "variant"
            },
            {
              "name": "placement",
              "type": {
                "text": "'start' | 'end'"
              },
              "default": "'start'",
              "description": "The placement of this item relative to the timeline axis. Used by the parent `sl-timeline`.",
              "fieldName": "placement"
            },
            {
              "name": "last",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether this is the last item in the timeline. Set automatically by the parent `sl-timeline`.",
              "fieldName": "last"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A single item within a timeline.",
          "tagNameWithoutPrefix": "timeline-item",
          "tagName": "sl-timeline-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary A single item within a timeline.\n * @documentation https://shoelace.style/components/timeline-item\n * @status experimental\n * @since 2.20\n *\n * @dependency sl-spinner\n *\n * @slot - The main content of the timeline item.\n * @slot icon - An optional custom icon to display instead of the default dot.\n *\n * @csspart base - The component's base wrapper.\n * @csspart dot - The dot indicator element.\n * @csspart tail - The connecting line between this item and the next.\n * @csspart body - The content body wrapper.\n * @csspart title - The title element.\n * @csspart content - The content area below the title.\n *\n * @cssproperty --sl-timeline-dot-size - The size of the dot node.\n * @cssproperty --sl-timeline-dot-border-width - The border width of the dot node.\n * @cssproperty --sl-timeline-dot-bg - The background color of the dot node.\n * @cssproperty --sl-timeline-tail-width - The width of the connecting tail line.\n * @cssproperty --sl-timeline-tail-color - The color of the connecting tail line.\n */",
          "documentation": "https://shoelace.style/components/timeline-item",
          "status": "experimental",
          "since": "2.20",
          "dependencies": [
            "sl-spinner"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTimelineItem",
            "module": "components/timeline/timeline-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/timeline/timeline.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTimeline",
          "cssProperties": [
            {
              "description": "The size of the dot node (inherited by items).",
              "name": "--sl-timeline-dot-size"
            },
            {
              "description": "The border width of the dot node (inherited by items).",
              "name": "--sl-timeline-dot-border-width"
            },
            {
              "description": "The background color of the dot node (inherited by items).",
              "name": "--sl-timeline-dot-bg"
            },
            {
              "description": "The width of the connecting tail line (inherited by items).",
              "name": "--sl-timeline-tail-width"
            },
            {
              "description": "The color of the connecting tail line (inherited by items).",
              "name": "--sl-timeline-tail-color"
            },
            {
              "description": "The width of the title column when `title-span` is set (computed internally).",
              "name": "--sl-timeline-title-span"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The default slot for `sl-timeline-item` elements. When using slotted items, the `items` property is ignored.",
              "name": ""
            },
            {
              "description": "Custom icon for the pending item dot. Only used when the `pending` attribute is set.",
              "name": "pending-dot"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-timeline-item': SlTimelineItem }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController(this, 'pending-dot')"
            },
            {
              "kind": "field",
              "name": "items",
              "type": {
                "text": "TimelineItemData[]"
              },
              "default": "[]",
              "description": "An array of timeline item data objects. Each object can include `color`, `loading`, `title`, `content`, and `placement`.\nAlternatively, you can use slotted `<sl-timeline-item>` elements for full control.",
              "attribute": "items"
            },
            {
              "kind": "field",
              "name": "mode",
              "type": {
                "text": "'start' | 'end' | 'alternate'"
              },
              "default": "'start'",
              "description": "The display mode of the timeline.\n- `start` — content on the start side (default, axis on the left / top)\n- `end` — content on the end side (axis on the right / bottom)\n- `alternate` — items alternate between start and end",
              "attribute": "mode",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "orientation",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The orientation of the timeline.",
              "attribute": "orientation",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'filled'"
              },
              "default": "'outlined'",
              "description": "The variant style of the dot. Passed to all child items.",
              "attribute": "variant",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "reverse",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to reverse the order of items.",
              "attribute": "reverse",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "titleSpan",
              "type": {
                "text": "string | number | undefined"
              },
              "description": "Set the title span space — the distance to the center of the dot.\nWhen set, the timeline switches to a three-column layout: `[title] [dot] [content]`.\n- `number` — grid value out of 24 (e.g. `6` = 25%, `12` = 50%)\n- `string` — CSS length or percentage (e.g. `\"100px\"`, `\"25%\"`)\n\nOnly takes effect when `mode` is **not** `alternate`.",
              "attribute": "title-span"
            },
            {
              "kind": "field",
              "name": "pending",
              "type": {
                "text": "string | undefined"
              },
              "description": "When set, a loading item is appended to the end of the timeline with this value as its content.\nSet to an empty string `\"\"` to show a loading item with no text.\nWhen not set (`undefined` / attribute absent), no pending item is shown.",
              "attribute": "pending",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hasSlottedItems",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "slottedItemCount",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "0"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "applyItemAttributes",
              "privacy": "private",
              "parameters": [
                {
                  "name": "items",
                  "type": {
                    "text": "SlTimelineItem[]"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "hasPending",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the `pending` attribute is present (including empty string).",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasTitleSpan",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether titleSpan should be active (set and not in alternate mode).",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "autoTitleSpan",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether title-span should auto-activate because data-driven items have titles.\nMirrors Ant Design's `layoutAlternate` behavior: when vertical mode has items\nwith titles, all items use centered-dot layout for consistent alignment.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "computedTitleSpan",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "description": "Compute the CSS value for titleSpan.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "hasPendingDot",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether the user has provided content for the `pending-dot` slot.",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "renderPendingItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "totalCount",
                  "type": {
                    "text": "number"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderItemsFromData",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "items",
              "type": {
                "text": "TimelineItemData[]"
              },
              "default": "[]",
              "description": "An array of timeline item data objects. Each object can include `color`, `loading`, `title`, `content`, and `placement`.\nAlternatively, you can use slotted `<sl-timeline-item>` elements for full control.",
              "fieldName": "items"
            },
            {
              "name": "mode",
              "type": {
                "text": "'start' | 'end' | 'alternate'"
              },
              "default": "'start'",
              "description": "The display mode of the timeline.\n- `start` — content on the start side (default, axis on the left / top)\n- `end` — content on the end side (axis on the right / bottom)\n- `alternate` — items alternate between start and end",
              "fieldName": "mode"
            },
            {
              "name": "orientation",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The orientation of the timeline.",
              "fieldName": "orientation"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'filled'"
              },
              "default": "'outlined'",
              "description": "The variant style of the dot. Passed to all child items.",
              "fieldName": "variant"
            },
            {
              "name": "reverse",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to reverse the order of items.",
              "fieldName": "reverse"
            },
            {
              "name": "title-span",
              "type": {
                "text": "string | number | undefined"
              },
              "description": "Set the title span space — the distance to the center of the dot.\nWhen set, the timeline switches to a three-column layout: `[title] [dot] [content]`.\n- `number` — grid value out of 24 (e.g. `6` = 25%, `12` = 50%)\n- `string` — CSS length or percentage (e.g. `\"100px\"`, `\"25%\"`)\n\nOnly takes effect when `mode` is **not** `alternate`.",
              "fieldName": "titleSpan"
            },
            {
              "name": "pending",
              "type": {
                "text": "string | undefined"
              },
              "description": "When set, a loading item is appended to the end of the timeline with this value as its content.\nSet to an empty string `\"\"` to show a loading item with no text.\nWhen not set (`undefined` / attribute absent), no pending item is shown.",
              "fieldName": "pending"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Timelines display a list of events in chronological order.",
          "tagNameWithoutPrefix": "timeline",
          "tagName": "sl-timeline",
          "customElement": true,
          "jsDoc": "/**\n * @summary Timelines display a list of events in chronological order.\n * @documentation https://shoelace.style/components/timeline\n * @status experimental\n * @since 2.20\n *\n * @dependency sl-timeline-item\n *\n * @slot - The default slot for `sl-timeline-item` elements. When using slotted items, the `items` property is ignored.\n * @slot pending-dot - Custom icon for the pending item dot. Only used when the `pending` attribute is set.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty --sl-timeline-dot-size - The size of the dot node (inherited by items).\n * @cssproperty --sl-timeline-dot-border-width - The border width of the dot node (inherited by items).\n * @cssproperty --sl-timeline-dot-bg - The background color of the dot node (inherited by items).\n * @cssproperty --sl-timeline-tail-width - The width of the connecting tail line (inherited by items).\n * @cssproperty --sl-timeline-tail-color - The color of the connecting tail line (inherited by items).\n * @cssproperty --sl-timeline-title-span - The width of the title column when `title-span` is set (computed internally).\n */",
          "documentation": "https://shoelace.style/components/timeline",
          "status": "experimental",
          "since": "2.20",
          "dependencies": [
            "sl-timeline-item"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTimeline",
            "module": "components/timeline/timeline.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/timepicker/timepicker.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTimepicker",
          "slots": [
            {
              "description": "The input's label. Alternatively, you can use the `label` attribute.",
              "name": "label"
            },
            {
              "description": "The input's prefix, to prepend to the input.",
              "name": "prefix"
            },
            {
              "description": "The input's suffix, to append to the input.",
              "name": "suffix"
            },
            {
              "description": "An icon to use in lieu of the default clear icon.",
              "name": "clear-icon"
            },
            {
              "description": "Help text that describes 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-input': SlInput as unknown as typeof ShoelaceElement, 'sl-popup': SlPopup, 'sl-time-panel': SlTimePanel, 'sl-date-panel': SlDatePanel, 'sl-drawer': SlDrawer }"
            },
            {
              "kind": "field",
              "name": "timePanel",
              "type": {
                "text": "SlTimePanel"
              }
            },
            {
              "kind": "field",
              "name": "format",
              "type": {
                "text": "string"
              },
              "default": "'HH:mm:ss'",
              "attribute": "format"
            },
            {
              "kind": "field",
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "attribute": "pattern"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "parseValue",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "Date | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "formatValue",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "date",
                  "type": {
                    "text": "Date"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isValidFormat",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getInputPattern",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleInputInput",
              "privacy": "protected",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTimeChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ value: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleDateChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ date: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTimeSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ value: Date }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputChange",
              "privacy": "protected",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleInputKeyDown",
              "privacy": "protected",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getInputSuffixIconName",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "string | undefined"
                }
              }
            },
            {
              "kind": "method",
              "name": "getTimeColumns",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "shouldRevertOnBlur",
              "privacy": "protected",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "wasOpen",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleValueChange"
            }
          ],
          "events": [
            {
              "description": "Emitted when the control's value changes.",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "Emitted when the control's value changes.",
              "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 clear button is activated.",
              "name": "sl-clear",
              "reactName": "onSlClear",
              "eventName": "SlClearEvent"
            },
            {
              "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": "format",
              "type": {
                "text": "string"
              },
              "default": "'HH:mm:ss'",
              "fieldName": "format"
            },
            {
              "name": "pattern",
              "type": {
                "text": "string"
              },
              "fieldName": "pattern"
            }
          ],
          "superclass": {
            "name": "PickerBase",
            "module": "/src/internal/picker.js"
          },
          "tagName": "sl-timepicker",
          "customElement": true,
          "summary": "A time picker component that provides a time selection interface.",
          "tagNameWithoutPrefix": "timepicker",
          "jsDoc": "/**\n * @summary A time picker component that provides a time selection interface.\n * @documentation https://shoelace.style/components/timepicker\n * @tag sl-timepicker\n * @since 2.0\n *\n * @dependency sl-input\n * @dependency sl-popup\n * @dependency sl-time-panel\n * @dependency sl-date-panel\n * @dependency sl-drawer\n *\n * @slot label - The input's label. Alternatively, you can use the `label` attribute.\n * @slot prefix - The input's prefix, to prepend to the input.\n * @slot suffix - The input's suffix, to append to the input.\n * @slot clear-icon - An icon to use in lieu of the default clear icon.\n * @slot help-text - Help text that describes 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-input - Emitted when the control's value changes.\n * @event sl-focus - Emitted when the control gains focus.\n * @event sl-blur - Emitted when the control loses focus.\n * @event sl-clear - Emitted when the clear button is activated.\n * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n */",
          "documentation": "https://shoelace.style/components/timepicker",
          "since": "2.0",
          "dependencies": [
            "sl-input",
            "sl-popup",
            "sl-time-panel",
            "sl-date-panel",
            "sl-drawer"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTimepicker",
            "module": "components/timepicker/timepicker.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tooltip/tooltip.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTooltip",
          "cssProperties": [
            {
              "description": "The maximum width of the tooltip before its content will wrap.",
              "name": "--max-width"
            },
            {
              "description": "The amount of time to wait before hiding the tooltip when hovering.",
              "name": "--hide-delay"
            },
            {
              "description": "The amount of time to wait before showing the tooltip when hovering.",
              "name": "--show-delay"
            }
          ],
          "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 popup's exported `arrow` part. Use this to target the tooltip's arrow.",
              "name": "base__arrow"
            },
            {
              "description": "The tooltip's body where its content is rendered.",
              "name": "body"
            }
          ],
          "slots": [
            {
              "description": "The tooltip's target element. Avoid slotting in more than one element, as subsequent ones will be ignored.",
              "name": ""
            },
            {
              "description": "The content to render in the tooltip. Alternatively, you can use the `content` attribute.",
              "name": "content"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-popup': SlPopup }"
            },
            {
              "kind": "field",
              "name": "hoverTimeout",
              "type": {
                "text": "number"
              },
              "privacy": "private"
            },
            {
              "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": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "body",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tooltip's content. If you need to display HTML, use the `content` slot instead.",
              "attribute": "content"
            },
            {
              "kind": "field",
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
              "attribute": "placement"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tooltip so it won't show when triggered.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the tooltip away from its target.",
              "attribute": "distance"
            },
            {
              "kind": "field",
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the tooltip along its target.",
              "attribute": "skidding"
            },
            {
              "kind": "field",
              "name": "trigger",
              "type": {
                "text": "string"
              },
              "default": "'hover focus'",
              "description": "Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\noptions can be passed by separating them with a space. When manual is used, the tooltip must be activated\nprogrammatically.",
              "attribute": "trigger"
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the tooltip from being clipped when the component is placed inside a container with\n`overflow: auto|hidden|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all,\nscenarios.",
              "attribute": "hoist"
            },
            {
              "kind": "field",
              "name": "handleBlur",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleClick",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocus",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleDocumentKeyDown",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseOver",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleMouseOut",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "hasTrigger",
              "privacy": "private",
              "parameters": [
                {
                  "name": "triggerType",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "handleOptionsChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "show",
              "description": "Shows the tooltip."
            },
            {
              "kind": "method",
              "name": "hide",
              "description": "Hides the tooltip"
            }
          ],
          "events": [
            {
              "description": "Emitted when the tooltip begins to show.",
              "name": "sl-show",
              "reactName": "onSlShow",
              "eventName": "SlShowEvent"
            },
            {
              "description": "Emitted after the tooltip has shown and all animations are complete.",
              "name": "sl-after-show",
              "reactName": "onSlAfterShow",
              "eventName": "SlAfterShowEvent"
            },
            {
              "description": "Emitted when the tooltip begins to hide.",
              "name": "sl-hide",
              "reactName": "onSlHide",
              "eventName": "SlHideEvent"
            },
            {
              "description": "Emitted after the tooltip has hidden and all animations are complete.",
              "name": "sl-after-hide",
              "reactName": "onSlAfterHide",
              "eventName": "SlAfterHideEvent"
            }
          ],
          "attributes": [
            {
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The tooltip's content. If you need to display HTML, use the `content` slot instead.",
              "fieldName": "content"
            },
            {
              "name": "placement",
              "type": {
                "text": "| 'top'\n    | 'top-start'\n    | 'top-end'\n    | 'right'\n    | 'right-start'\n    | 'right-end'\n    | 'bottom'\n    | 'bottom-start'\n    | 'bottom-end'\n    | 'left'\n    | 'left-start'\n    | 'left-end'"
              },
              "default": "'top'",
              "description": "The preferred placement of the tooltip. Note that the actual placement may vary as needed to keep the tooltip\ninside of the viewport.",
              "fieldName": "placement"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tooltip so it won't show when triggered.",
              "fieldName": "disabled"
            },
            {
              "name": "distance",
              "type": {
                "text": "number"
              },
              "default": "8",
              "description": "The distance in pixels from which to offset the tooltip away from its target.",
              "fieldName": "distance"
            },
            {
              "name": "open",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.",
              "fieldName": "open"
            },
            {
              "name": "skidding",
              "type": {
                "text": "number"
              },
              "default": "0",
              "description": "The distance in pixels from which to offset the tooltip along its target.",
              "fieldName": "skidding"
            },
            {
              "name": "trigger",
              "type": {
                "text": "string"
              },
              "default": "'hover focus'",
              "description": "Controls how the tooltip is activated. Possible options include `click`, `hover`, `focus`, and `manual`. Multiple\noptions can be passed by separating them with a space. When manual is used, the tooltip must be activated\nprogrammatically.",
              "fieldName": "trigger"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable this option to prevent the tooltip from being clipped when the component is placed inside a container with\n`overflow: auto|hidden|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all,\nscenarios.",
              "fieldName": "hoist"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Tooltips display additional information based on a specific action.",
          "tagNameWithoutPrefix": "tooltip",
          "tagName": "sl-tooltip",
          "customElement": true,
          "jsDoc": "/**\n * @summary Tooltips display additional information based on a specific action.\n * @documentation https://shoelace.style/components/tooltip\n * @status stable\n * @since 2.0\n *\n * @dependency sl-popup\n *\n * @slot - The tooltip's target element. Avoid slotting in more than one element, as subsequent ones will be ignored.\n * @slot content - The content to render in the tooltip. Alternatively, you can use the `content` attribute.\n *\n * @event sl-show - Emitted when the tooltip begins to show.\n * @event sl-after-show - Emitted after the tooltip has shown and all animations are complete.\n * @event sl-hide - Emitted when the tooltip begins to hide.\n * @event sl-after-hide - Emitted after the tooltip has hidden 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 base__arrow - The popup's exported `arrow` part. Use this to target the tooltip's arrow.\n * @csspart body - The tooltip's body where its content is rendered.\n *\n * @cssproperty --max-width - The maximum width of the tooltip before its content will wrap.\n * @cssproperty --hide-delay - The amount of time to wait before hiding the tooltip when hovering.\n * @cssproperty --show-delay - The amount of time to wait before showing the tooltip when hovering.\n *\n * @animation tooltip.show - The animation to use when showing the tooltip.\n * @animation tooltip.hide - The animation to use when hiding the tooltip.\n */",
          "documentation": "https://shoelace.style/components/tooltip",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-popup"
          ],
          "animations": [
            {
              "name": "tooltip.show",
              "description": "The animation to use when showing the tooltip."
            },
            {
              "name": "tooltip.hide",
              "description": "The animation to use when hiding the tooltip."
            }
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTooltip",
            "module": "components/tooltip/tooltip.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/transfer/transfer.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTransfer",
          "cssProperties": [
            {
              "description": "单个面板的宽度。",
              "name": "--transfer-width"
            },
            {
              "description": "单个面板的高度。",
              "name": "--transfer-height"
            }
          ],
          "cssParts": [
            {
              "description": "组件的基础容器。",
              "name": "base"
            },
            {
              "description": "源列表面板。",
              "name": "source-panel"
            },
            {
              "description": "目标列表面板。",
              "name": "target-panel"
            },
            {
              "description": "面板头部。",
              "name": "panel-header"
            },
            {
              "description": "面板列表。",
              "name": "panel-list"
            },
            {
              "description": "操作按钮区域。",
              "name": "operation"
            },
            {
              "description": "搜索输入框。",
              "name": "search-input"
            }
          ],
          "slots": [
            {
              "description": "自定义\"移动到目标列表\"按钮内容。",
              "name": "move-to-target"
            },
            {
              "description": "自定义\"移动到源列表\"按钮内容。",
              "name": "move-to-source"
            },
            {
              "description": "完全自定义操作区域内容，替换默认的穿梭按钮。",
              "name": "operation"
            },
            {
              "description": "自定义源列表空提示内容。",
              "name": "source-empty"
            },
            {
              "description": "自定义目标列表空提示内容。",
              "name": "target-empty"
            },
            {
              "description": "自定义源列表内容区域，替换默认列表渲染。",
              "name": "source-item-list"
            },
            {
              "description": "自定义目标列表内容区域，替换默认列表渲染。",
              "name": "target-item-list"
            },
            {
              "description": "自定义源列表底部内容，位于分页上方。",
              "name": "source-footer"
            },
            {
              "description": "自定义目标列表底部内容，位于分页上方。",
              "name": "target-footer"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-checkbox': SlCheckbox, 'sl-dropdown': SlDropdown, 'sl-icon': SlIcon, 'sl-input': SlInput, 'sl-menu': SlMenu, 'sl-menu-item': SlMenuItem, 'sl-button': SlButton, 'sl-pagination': SlPagination }"
            },
            {
              "kind": "field",
              "name": "hasSlotController",
              "privacy": "private",
              "readonly": true,
              "default": "new HasSlotController( this, 'operation', 'move-to-target', 'move-to-source', 'dropdown-icon', 'source-empty', 'target-empty', 'source-item-list', 'target-item-list', 'source-footer', 'target-footer' )"
            },
            {
              "kind": "field",
              "name": "dataSource",
              "type": {
                "text": "TransferItem[]"
              },
              "default": "[]",
              "description": "数据源",
              "attribute": "dataSource"
            },
            {
              "kind": "field",
              "name": "targetKeys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "目标列表的 key 集合",
              "attribute": "target-keys"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示分页",
              "attribute": "pagination"
            },
            {
              "kind": "field",
              "name": "pageSize",
              "type": {
                "text": "number"
              },
              "default": "10",
              "description": "每页显示条数",
              "attribute": "page-size"
            },
            {
              "kind": "field",
              "name": "showSearch",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示搜索框",
              "attribute": "show-search"
            },
            {
              "kind": "field",
              "name": "showSelectAll",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "是否显示全选",
              "attribute": "show-select-all"
            },
            {
              "kind": "field",
              "name": "oneWay",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否单向穿梭",
              "attribute": "one-way"
            },
            {
              "kind": "field",
              "name": "titles",
              "type": {
                "text": "string[]"
              },
              "default": "['源列表', '目标列表']",
              "description": "两个列表的标题，格式为 ['sourceTitle', 'targetTitle']",
              "attribute": "titles"
            },
            {
              "kind": "field",
              "name": "status",
              "type": {
                "text": "'normal' | 'success' | 'error'"
              },
              "default": "'normal'",
              "description": "组件状态",
              "attribute": "status",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "searchPlaceholder",
              "type": {
                "text": "string"
              },
              "default": "'请输入搜索内容'",
              "description": "搜索框占位符",
              "attribute": "search-placeholder"
            },
            {
              "kind": "field",
              "name": "selectedKeys",
              "type": {
                "text": "string[] | undefined"
              },
              "description": "受控模式下的选中项 key 集合，传入后由外部完全控制选中状态",
              "attribute": "selected-keys"
            },
            {
              "kind": "field",
              "name": "itemRender",
              "type": {
                "text": "(item: TransferItem) => unknown | undefined"
              },
              "description": "自定义渲染每个列表项的内容，返回 TemplateResult 或字符串"
            },
            {
              "kind": "field",
              "name": "filterOption",
              "type": {
                "text": "(\n    inputValue: string,\n    option: TransferItem,\n    direction: TransferDirection\n  ) => boolean | undefined"
              },
              "description": "自定义搜索过滤逻辑，返回 true 表示该项匹配"
            },
            {
              "kind": "field",
              "name": "sourceCurrentPage",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "1",
              "description": "源列表当前页码"
            },
            {
              "kind": "field",
              "name": "targetCurrentPage",
              "type": {
                "text": "number"
              },
              "privacy": "private",
              "default": "1",
              "description": "目标列表当前页码"
            },
            {
              "kind": "field",
              "name": "_sourceSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "源列表选中的 key 集合（内部状态，非受控时使用）"
            },
            {
              "kind": "field",
              "name": "_targetSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "default": "[]",
              "description": "目标列表选中的 key 集合（内部状态，非受控时使用）"
            },
            {
              "kind": "field",
              "name": "isControlledSelection",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "是否为受控模式",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "sourceSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "description": "设置源列表选中 keys"
            },
            {
              "kind": "field",
              "name": "targetSelectedKeys",
              "type": {
                "text": "string[]"
              },
              "privacy": "private",
              "description": "设置目标列表选中 keys"
            },
            {
              "kind": "field",
              "name": "sourceSearchValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "源列表搜索关键词"
            },
            {
              "kind": "field",
              "name": "targetSearchValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''",
              "description": "目标列表搜索关键词"
            },
            {
              "kind": "method",
              "name": "filterItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TransferItem[]"
                }
              },
              "parameters": [
                {
                  "name": "items",
                  "type": {
                    "text": "TransferItem[]"
                  }
                },
                {
                  "name": "searchValue",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                }
              ],
              "description": "过滤搜索匹配项"
            },
            {
              "kind": "field",
              "name": "sourceItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取源列表数据",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "targetItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取目标列表数据",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "sourcePagedItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取源列表当前页数据",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "targetPagedItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取目标列表当前页数据",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectableSourceItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取源列表可选中的项",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "selectableTargetItems",
              "type": {
                "text": "TransferItem[]"
              },
              "privacy": "private",
              "description": "获取目标列表可选中的项",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isSourceAllSelected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "源列表是否全选",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isTargetAllSelected",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "目标列表是否全选",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isSourceIndeterminate",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "源列表是否部分选中",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isTargetIndeterminate",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "目标列表是否部分选中",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "handleTargetKeysChange"
            },
            {
              "kind": "method",
              "name": "handleSourceItemClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "TransferItem"
                  }
                }
              ],
              "description": "处理源列表项点击"
            },
            {
              "kind": "method",
              "name": "handleTargetItemClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "TransferItem"
                  }
                }
              ],
              "description": "处理目标列表项点击"
            },
            {
              "kind": "method",
              "name": "handleSourceSelectAll",
              "privacy": "private",
              "description": "处理源列表全选"
            },
            {
              "kind": "method",
              "name": "handleTargetSelectAll",
              "privacy": "private",
              "description": "处理目标列表全选"
            },
            {
              "kind": "method",
              "name": "moveToTarget",
              "description": "移动选中项到目标列表"
            },
            {
              "kind": "method",
              "name": "moveToSource",
              "description": "移动选中项到源列表"
            },
            {
              "kind": "method",
              "name": "setSourceSelectedKeys",
              "parameters": [
                {
                  "name": "keys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ],
              "description": "设置源列表选中项（供外部调用，用于 source-item-list 自定义列表场景）"
            },
            {
              "kind": "method",
              "name": "setTargetSelectedKeys",
              "parameters": [
                {
                  "name": "keys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ],
              "description": "设置目标列表选中项（供外部调用）"
            },
            {
              "kind": "method",
              "name": "handleSourceSearch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "处理源列表搜索"
            },
            {
              "kind": "method",
              "name": "handleTargetSearch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "处理目标列表搜索"
            },
            {
              "kind": "method",
              "name": "handleScroll",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                },
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ],
              "description": "处理列表滚动"
            },
            {
              "kind": "method",
              "name": "emitChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "targetKeys",
                  "type": {
                    "text": "string[]"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                },
                {
                  "name": "moveKeys",
                  "type": {
                    "text": "string[]"
                  }
                }
              ],
              "description": "发送变更事件"
            },
            {
              "kind": "method",
              "name": "emitSelectChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "type",
                  "type": {
                    "text": "TransferSelectType"
                  }
                }
              ],
              "description": "发送选中变更事件"
            },
            {
              "kind": "method",
              "name": "handleSourcePageChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "CustomEvent<{ pageNumber: number; pageSize: number }>"
                  }
                }
              ],
              "description": "处理源列表分页变化"
            },
            {
              "kind": "method",
              "name": "handleTargetPageChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "CustomEvent<{ pageNumber: number; pageSize: number }>"
                  }
                }
              ],
              "description": "处理目标列表分页变化"
            },
            {
              "kind": "method",
              "name": "handleDropdownSelectAll",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                }
              ],
              "description": "处理下拉菜单：全选所有（选中该面板所有可选项，包含搜索过滤外的）"
            },
            {
              "kind": "method",
              "name": "handleDropdownInvertPage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                }
              ],
              "description": "处理下拉菜单：反选当页（对当前可见列表中的可选项进行反选）"
            },
            {
              "kind": "method",
              "name": "handleDropdownSelectPage",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                }
              ],
              "description": "处理下拉菜单：全选当页（选中当前页所有可选项）"
            },
            {
              "kind": "method",
              "name": "renderPanelHeader",
              "privacy": "private",
              "parameters": [
                {
                  "name": "options",
                  "type": {
                    "text": "{\n    title: string;\n    selectedCount: number;\n    totalCount: number;\n    isAllSelected: boolean;\n    isIndeterminate: boolean;\n    onSelectAll: () => void;\n    direction: TransferDirection;\n  }"
                  }
                }
              ],
              "description": "渲染面板头部"
            },
            {
              "kind": "method",
              "name": "renderSearch",
              "privacy": "private",
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "onInput",
                  "type": {
                    "text": "(e: Event) => void"
                  }
                }
              ],
              "description": "渲染搜索框"
            },
            {
              "kind": "method",
              "name": "renderItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "type": {
                    "text": "TransferItem"
                  }
                },
                {
                  "name": "isSelected",
                  "type": {
                    "text": "boolean"
                  }
                },
                {
                  "name": "onClick",
                  "type": {
                    "text": "() => void"
                  }
                }
              ],
              "description": "渲染列表项"
            },
            {
              "kind": "method",
              "name": "renderPagination",
              "privacy": "private",
              "parameters": [
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderList",
              "privacy": "private",
              "parameters": [
                {
                  "name": "items",
                  "type": {
                    "text": "TransferItem[]"
                  }
                },
                {
                  "name": "selectedKeys",
                  "type": {
                    "text": "string[]"
                  }
                },
                {
                  "name": "direction",
                  "type": {
                    "text": "TransferDirection"
                  }
                },
                {
                  "name": "onItemClick",
                  "type": {
                    "text": "(item: TransferItem) => void"
                  }
                }
              ],
              "description": "渲染列表"
            }
          ],
          "events": [
            {
              "description": "当数据穿梭完成时触发，返回目标键、方向和移动的键。",
              "name": "sl-transfer-change",
              "reactName": "onSlTransferChange",
              "eventName": "SlTransferChangeEvent"
            },
            {
              "description": "当选中项变化时触发。",
              "name": "sl-transfer-select-change",
              "reactName": "onSlTransferSelectChange",
              "eventName": "SlTransferSelectChangeEvent"
            },
            {
              "description": "当搜索时触发。",
              "name": "sl-transfer-search",
              "reactName": "onSlTransferSearch",
              "eventName": "SlTransferSearchEvent"
            },
            {
              "description": "当列表滚动时触发。",
              "name": "sl-transfer-scroll",
              "reactName": "onSlTransferScroll",
              "eventName": "SlTransferScrollEvent"
            }
          ],
          "attributes": [
            {
              "name": "dataSource",
              "type": {
                "text": "TransferItem[]"
              },
              "default": "[]",
              "description": "数据源",
              "fieldName": "dataSource"
            },
            {
              "name": "target-keys",
              "type": {
                "text": "string[]"
              },
              "default": "[]",
              "description": "目标列表的 key 集合",
              "fieldName": "targetKeys"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用",
              "fieldName": "disabled"
            },
            {
              "name": "pagination",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示分页",
              "fieldName": "pagination"
            },
            {
              "name": "page-size",
              "type": {
                "text": "number"
              },
              "default": "10",
              "description": "每页显示条数",
              "fieldName": "pageSize"
            },
            {
              "name": "show-search",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否显示搜索框",
              "fieldName": "showSearch"
            },
            {
              "name": "show-select-all",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "是否显示全选",
              "fieldName": "showSelectAll"
            },
            {
              "name": "one-way",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否单向穿梭",
              "fieldName": "oneWay"
            },
            {
              "name": "titles",
              "type": {
                "text": "string[]"
              },
              "default": "['源列表', '目标列表']",
              "description": "两个列表的标题，格式为 ['sourceTitle', 'targetTitle']",
              "fieldName": "titles"
            },
            {
              "name": "status",
              "type": {
                "text": "'normal' | 'success' | 'error'"
              },
              "default": "'normal'",
              "description": "组件状态",
              "fieldName": "status"
            },
            {
              "name": "search-placeholder",
              "type": {
                "text": "string"
              },
              "default": "'请输入搜索内容'",
              "description": "搜索框占位符",
              "fieldName": "searchPlaceholder"
            },
            {
              "name": "selected-keys",
              "type": {
                "text": "string[] | undefined"
              },
              "description": "受控模式下的选中项 key 集合，传入后由外部完全控制选中状态",
              "fieldName": "selectedKeys"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Transfer 穿梭框组件，用于在两个列表之间移动数据。",
          "tagNameWithoutPrefix": "transfer",
          "tagName": "sl-transfer",
          "customElement": true,
          "jsDoc": "/**\n * @summary Transfer 穿梭框组件，用于在两个列表之间移动数据。\n * @documentation https://shoelace.style/components/transfer\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-button\n * @dependency sl-checkbox\n * @dependency sl-dropdown\n * @dependency sl-icon\n * @dependency sl-input\n * @dependency sl-menu\n * @dependency sl-menu-item\n *\n * @slot move-to-target - 自定义\"移动到目标列表\"按钮内容。\n * @slot move-to-source - 自定义\"移动到源列表\"按钮内容。\n * @slot operation - 完全自定义操作区域内容，替换默认的穿梭按钮。\n * @slot source-empty - 自定义源列表空提示内容。\n * @slot target-empty - 自定义目标列表空提示内容。\n * @slot source-item-list - 自定义源列表内容区域，替换默认列表渲染。\n * @slot target-item-list - 自定义目标列表内容区域，替换默认列表渲染。\n * @slot source-footer - 自定义源列表底部内容，位于分页上方。\n * @slot target-footer - 自定义目标列表底部内容，位于分页上方。\n *\n * @event sl-transfer-change - 当数据穿梭完成时触发，返回目标键、方向和移动的键。\n * @event sl-transfer-select-change - 当选中项变化时触发。\n * @event sl-transfer-search - 当搜索时触发。\n * @event sl-transfer-scroll - 当列表滚动时触发。\n *\n * @csspart base - 组件的基础容器。\n * @csspart source-panel - 源列表面板。\n * @csspart target-panel - 目标列表面板。\n * @csspart panel-header - 面板头部。\n * @csspart panel-list - 面板列表。\n * @csspart operation - 操作按钮区域。\n * @csspart search-input - 搜索输入框。\n *\n * @cssproperty --transfer-width - 单个面板的宽度。\n * @cssproperty --transfer-height - 单个面板的高度。\n */",
          "documentation": "https://shoelace.style/components/transfer",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-button",
            "sl-checkbox",
            "sl-dropdown",
            "sl-icon",
            "sl-input",
            "sl-menu",
            "sl-menu-item"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTransfer",
            "module": "components/transfer/transfer.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tree/tree.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTree",
          "cssProperties": [
            {
              "description": "The size of the indentation for nested items.",
              "name": "--indent-size",
              "default": "var(--sl-spacing-medium)"
            },
            {
              "description": "The color of the indentation line.",
              "name": "--indent-guide-color",
              "default": "var(--sl-color-neutral-200)"
            },
            {
              "description": "The amount of vertical spacing to leave between the top and bottom of the indentation line's starting position.",
              "name": "--indent-guide-offset",
              "default": "0"
            },
            {
              "description": "The style of the indentation line, e.g. solid, dotted, dashed.",
              "name": "--indent-guide-style",
              "default": "solid"
            },
            {
              "description": "The width of the indentation line.",
              "name": "--indent-guide-width",
              "default": "0"
            }
          ],
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            }
          ],
          "slots": [
            {
              "description": "The default slot.",
              "name": ""
            },
            {
              "description": "The icon to show when the tree item is expanded. Works best with `<sl-icon>`.",
              "name": "expand-icon"
            },
            {
              "description": "The icon to show when the tree item is collapsed. Works best with `<sl-icon>`.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "expandedIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "collapsedIconSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "selection",
              "type": {
                "text": "'single' | 'multiple' | 'leaf'"
              },
              "default": "'single'",
              "description": "The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\ndisplays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.",
              "attribute": "selection"
            },
            {
              "kind": "field",
              "name": "showLine",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show connecting lines between tree nodes.",
              "attribute": "show-line",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lastFocusedItem",
              "type": {
                "text": "SlTreeItem | null"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "mutationObserver",
              "type": {
                "text": "MutationObserver"
              },
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "clickTarget",
              "type": {
                "text": "SlTreeItem | null"
              },
              "privacy": "private",
              "default": "null"
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "method",
              "name": "getExpandButtonIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "status",
                  "type": {
                    "text": "'expand' | 'collapse'"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "initTreeItem",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleTreeChanged",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "selectItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "selectedItem",
                  "type": {
                    "text": "SlTreeItem"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllTreeItems",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "focusItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "item",
                  "optional": true,
                  "type": {
                    "text": "SlTreeItem | null"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleKeyDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "KeyboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleClick",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleMouseDown",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "handleFocusOut",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "handleFocusIn",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleSelectionChange"
            }
          ],
          "events": [
            {
              "type": {
                "text": "{ selection: SlTreeItem[] }"
              },
              "description": "Emitted when a tree item is selected or deselected.",
              "name": "sl-selection-change",
              "reactName": "onSlSelectionChange",
              "eventName": "SlSelectionChangeEvent"
            }
          ],
          "attributes": [
            {
              "name": "selection",
              "type": {
                "text": "'single' | 'multiple' | 'leaf'"
              },
              "default": "'single'",
              "description": "The selection behavior of the tree. Single selection allows only one node to be selected at a time. Multiple\ndisplays checkboxes and allows more than one node to be selected. Leaf allows only leaf nodes to be selected.",
              "fieldName": "selection"
            },
            {
              "name": "show-line",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show connecting lines between tree nodes.",
              "fieldName": "showLine"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.",
          "tagNameWithoutPrefix": "tree",
          "tagName": "sl-tree",
          "customElement": true,
          "jsDoc": "/**\n * @summary Trees allow you to display a hierarchical list of selectable [tree items](/components/tree-item). Items with children can be expanded and collapsed as desired by the user.\n * @documentation https://shoelace.style/components/tree\n * @status stable\n * @since 2.0\n *\n * @event {{ selection: SlTreeItem[] }} sl-selection-change - Emitted when a tree item is selected or deselected.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded. Works best with `<sl-icon>`.\n * @slot collapse-icon - The icon to show when the tree item is collapsed. Works best with `<sl-icon>`.\n *\n * @csspart base - The component's base wrapper.\n *\n * @cssproperty [--indent-size=var(--sl-spacing-medium)] - The size of the indentation for nested items.\n * @cssproperty [--indent-guide-color=var(--sl-color-neutral-200)] - The color of the indentation line.\n * @cssproperty [--indent-guide-offset=0] - The amount of vertical spacing to leave between the top and bottom of the\n *  indentation line's starting position.\n * @cssproperty [--indent-guide-style=solid] - The style of the indentation line, e.g. solid, dotted, dashed.\n * @cssproperty [--indent-guide-width=0] - The width of the indentation line.\n */",
          "documentation": "https://shoelace.style/components/tree",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTree",
            "module": "components/tree/tree.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tree-item/tree-item.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTreeItem",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The tree item's container. This element wraps everything except slotted tree item children.",
              "name": "item"
            },
            {
              "description": "Applied when the tree item is disabled.",
              "name": "item--disabled"
            },
            {
              "description": "Applied when the tree item is expanded.",
              "name": "item--expanded"
            },
            {
              "description": "Applied when the selection is indeterminate.",
              "name": "item--indeterminate"
            },
            {
              "description": "Applied when the tree item is selected.",
              "name": "item--selected"
            },
            {
              "description": "The tree item's indentation container.",
              "name": "indentation"
            },
            {
              "description": "The container that wraps the tree item's expand button and spinner.",
              "name": "expand-button"
            },
            {
              "description": "The spinner that shows when a lazy tree item is in the loading state.",
              "name": "spinner"
            },
            {
              "description": "The spinner's base part.",
              "name": "spinner__base"
            },
            {
              "description": "The tree item's label.",
              "name": "label"
            },
            {
              "description": "The container that wraps the tree item's nested children.",
              "name": "children"
            },
            {
              "description": "The checkbox that shows when using multiselect.",
              "name": "checkbox"
            },
            {
              "description": "The checkbox's exported `base` part.",
              "name": "checkbox__base"
            },
            {
              "description": "The checkbox's exported `control` part.",
              "name": "checkbox__control"
            },
            {
              "description": "The checkbox's exported `control--checked` part.",
              "name": "checkbox__control--checked"
            },
            {
              "description": "The checkbox's exported `control--indeterminate` part.",
              "name": "checkbox__control--indeterminate"
            },
            {
              "description": "The checkbox's exported `checked-icon` part.",
              "name": "checkbox__checked-icon"
            },
            {
              "description": "The checkbox's exported `indeterminate-icon` part.",
              "name": "checkbox__indeterminate-icon"
            },
            {
              "description": "The checkbox's exported `label` part.",
              "name": "checkbox__label"
            }
          ],
          "slots": [
            {
              "description": "The default slot.",
              "name": ""
            },
            {
              "description": "The icon to show when the tree item is expanded.",
              "name": "expand-icon"
            },
            {
              "description": "The icon to show when the tree item is collapsed.",
              "name": "collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-checkbox': SlCheckbox, 'sl-icon': SlIcon, 'sl-spinner': SlSpinner }"
            },
            {
              "kind": "method",
              "name": "isTreeItem",
              "static": true,
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "Node"
                  }
                }
              ]
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "indeterminate",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isLeaf",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "loading",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "selectable",
              "type": {
                "text": "boolean"
              },
              "default": "false"
            },
            {
              "kind": "field",
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the tree item.",
              "attribute": "expanded",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tree item in a selected state.",
              "attribute": "selected",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tree item.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "lazy",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables lazy loading behavior.",
              "attribute": "lazy",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "defaultSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "childrenSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "itemElement",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "childrenContainer",
              "type": {
                "text": "HTMLDivElement"
              }
            },
            {
              "kind": "field",
              "name": "expandButtonSlot",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "method",
              "name": "animateCollapse",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isNestedItem",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleChildrenSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "animateExpand",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleLoadingChange"
            },
            {
              "kind": "method",
              "name": "handleDisabledChange"
            },
            {
              "kind": "method",
              "name": "handleSelectedChange"
            },
            {
              "kind": "method",
              "name": "handleExpandedChange"
            },
            {
              "kind": "method",
              "name": "handleExpandAnimation"
            },
            {
              "kind": "method",
              "name": "handleLazyChange"
            },
            {
              "kind": "method",
              "name": "getChildrenItems",
              "return": {
                "type": {
                  "text": "SlTreeItem[]"
                }
              },
              "parameters": [
                {
                  "name": "{ includeDisabled = true }",
                  "default": "{}",
                  "type": {
                    "text": "{ includeDisabled?: boolean }"
                  }
                }
              ],
              "description": "Gets all the nested tree items in this node."
            }
          ],
          "events": [
            {
              "description": "Emitted when the tree item expands.",
              "name": "sl-expand",
              "reactName": "onSlExpand",
              "eventName": "SlExpandEvent"
            },
            {
              "description": "Emitted after the tree item expands and all animations are complete.",
              "name": "sl-after-expand",
              "reactName": "onSlAfterExpand",
              "eventName": "SlAfterExpandEvent"
            },
            {
              "description": "Emitted when the tree item collapses.",
              "name": "sl-collapse",
              "reactName": "onSlCollapse",
              "eventName": "SlCollapseEvent"
            },
            {
              "description": "Emitted after the tree item collapses and all animations are complete.",
              "name": "sl-after-collapse",
              "reactName": "onSlAfterCollapse",
              "eventName": "SlAfterCollapseEvent"
            },
            {
              "description": "Emitted when the tree item's lazy state changes.",
              "name": "sl-lazy-change",
              "reactName": "onSlLazyChange",
              "eventName": "SlLazyChangeEvent"
            },
            {
              "description": "Emitted when a lazy item is selected. Use this event to asynchronously load data and append items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading state and update the tree.",
              "name": "sl-lazy-load",
              "reactName": "onSlLazyLoad",
              "eventName": "SlLazyLoadEvent"
            }
          ],
          "attributes": [
            {
              "name": "expanded",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Expands the tree item.",
              "fieldName": "expanded"
            },
            {
              "name": "selected",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Draws the tree item in a selected state.",
              "fieldName": "selected"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the tree item.",
              "fieldName": "disabled"
            },
            {
              "name": "lazy",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables lazy loading behavior.",
              "fieldName": "lazy"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "A tree item serves as a hierarchical node that lives inside a [tree](/components/tree).",
          "tagNameWithoutPrefix": "tree-item",
          "tagName": "sl-tree-item",
          "customElement": true,
          "jsDoc": "/**\n * @summary A tree item serves as a hierarchical node that lives inside a [tree](/components/tree).\n * @documentation https://shoelace.style/components/tree-item\n * @status stable\n * @since 2.0\n *\n * @dependency sl-checkbox\n * @dependency sl-icon\n * @dependency sl-spinner\n *\n * @event sl-expand - Emitted when the tree item expands.\n * @event sl-after-expand - Emitted after the tree item expands and all animations are complete.\n * @event sl-collapse - Emitted when the tree item collapses.\n * @event sl-after-collapse - Emitted after the tree item collapses and all animations are complete.\n * @event sl-lazy-change - Emitted when the tree item's lazy state changes.\n * @event sl-lazy-load - Emitted when a lazy item is selected. Use this event to asynchronously load data and append\n *  items to the tree before expanding. After appending new items, remove the `lazy` attribute to remove the loading\n *  state and update the tree.\n *\n * @slot - The default slot.\n * @slot expand-icon - The icon to show when the tree item is expanded.\n * @slot collapse-icon - The icon to show when the tree item is collapsed.\n *\n * @csspart base - The component's base wrapper.\n * @csspart item - The tree item's container. This element wraps everything except slotted tree item children.\n * @csspart item--disabled - Applied when the tree item is disabled.\n * @csspart item--expanded - Applied when the tree item is expanded.\n * @csspart item--indeterminate - Applied when the selection is indeterminate.\n * @csspart item--selected - Applied when the tree item is selected.\n * @csspart indentation - The tree item's indentation container.\n * @csspart expand-button - The container that wraps the tree item's expand button and spinner.\n * @csspart spinner - The spinner that shows when a lazy tree item is in the loading state.\n * @csspart spinner__base - The spinner's base part.\n * @csspart label - The tree item's label.\n * @csspart children - The container that wraps the tree item's nested children.\n * @csspart checkbox - The checkbox that shows when using multiselect.\n * @csspart checkbox__base - The checkbox's exported `base` part.\n * @csspart checkbox__control - The checkbox's exported `control` part.\n * @csspart checkbox__control--checked - The checkbox's exported `control--checked` part.\n * @csspart checkbox__control--indeterminate - The checkbox's exported `control--indeterminate` part.\n * @csspart checkbox__checked-icon - The checkbox's exported `checked-icon` part.\n * @csspart checkbox__indeterminate-icon - The checkbox's exported `indeterminate-icon` part.\n * @csspart checkbox__label - The checkbox's exported `label` part.\n */",
          "documentation": "https://shoelace.style/components/tree-item",
          "status": "stable",
          "since": "2.0",
          "dependencies": [
            "sl-checkbox",
            "sl-icon",
            "sl-spinner"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTreeItem",
            "module": "components/tree-item/tree-item.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/tree-select/tree-select.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlTreeSelect",
          "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 that wraps the prefix, 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.",
              "name": "display-input"
            },
            {
              "description": "The container that houses option tags when `multiple` is used.",
              "name": "tags"
            },
            {
              "description": "The individual tags that represent each selected option.",
              "name": "tag"
            },
            {
              "description": "The clear button.",
              "name": "clear-button"
            },
            {
              "description": "The container that wraps the expand icon.",
              "name": "expand-icon"
            },
            {
              "description": "The dropdown panel that contains the tree.",
              "name": "dropdown"
            },
            {
              "description": "The tree element inside the dropdown.",
              "name": "tree"
            }
          ],
          "slots": [
            {
              "description": "The input'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"
            },
            {
              "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.",
              "name": "expand-icon"
            },
            {
              "description": "The icon to show when a tree node is collapsed (click to expand). Forwarded to the tree's `expand-icon` slot.",
              "name": "tree-expand-icon"
            },
            {
              "description": "The icon to show when a tree node is expanded (click to collapse). Forwarded to the tree's `collapse-icon` slot.",
              "name": "tree-collapse-icon"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-icon': SlIcon, 'sl-popup': SlPopup, 'sl-tag': SlTag, 'sl-tree': SlTree, 'sl-tree-item': SlTreeItem }"
            },
            {
              "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', 'tree-expand-icon', 'tree-collapse-icon' )"
            },
            {
              "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": "popup",
              "type": {
                "text": "SlPopup"
              }
            },
            {
              "kind": "field",
              "name": "combobox",
              "type": {
                "text": "HTMLSlotElement"
              }
            },
            {
              "kind": "field",
              "name": "displayInput",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "valueInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "dropdown",
              "type": {
                "text": "HTMLElement"
              }
            },
            {
              "kind": "field",
              "name": "hasFocus",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "isHovered",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "displayLabel",
              "type": {
                "text": "string | HTMLElement | TemplateResult"
              },
              "default": "''"
            },
            {
              "kind": "field",
              "name": "valueHasChanged",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "searchValue",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "expandedNodes",
              "privacy": "private",
              "default": "new Set<string>()",
              "description": "Tracks which node values have been manually expanded (for lazy load)."
            },
            {
              "kind": "field",
              "name": "isSearchEnabled",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Whether search is enabled (showSearch is truthy).",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "searchConfig",
              "type": {
                "text": "ShowSearchConfig"
              },
              "privacy": "private",
              "description": "Get the showSearch config object (or defaults if showSearch is just `true`).",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "autoClearSearchValue",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "description": "Resolved autoClearSearchValue from showSearch config. Defaults to true.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "filterTreeNode",
              "type": {
                "text": "((inputValue: string, treeNode: TreeSelectNodeData) => boolean) | boolean"
              },
              "privacy": "private",
              "description": "Resolved filterTreeNode from showSearch config. Defaults to true.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "treeNodeFilterProp",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "description": "Resolved treeNodeFilterProp from showSearch config. Defaults to 'value'.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "searchValueProp",
              "type": {
                "text": "string | undefined"
              },
              "privacy": "private",
              "description": "Resolved controlled search value from showSearch config.",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the control, 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. When `multiple` is enabled, the value will be an array of strings.\nValues must not contain spaces when using multiple mode."
            },
            {
              "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 node to be selected. Renders checkboxes in the tree.",
              "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.\nAfter the maximum, \"+n\" will be shown. Set to 0 to remove the limit.",
              "attribute": "max-options-visible"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the control.",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "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": "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,\nor you can use the `show()` and `hide()` methods.",
              "attribute": "open",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable the use of `hoist` to position the dropdown panel using a fixed strategy,\nallowing it to break out of containers that have `overflow: hidden`.",
              "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 input's label. If you need to display HTML, use the `label` slot instead.",
              "attribute": "label"
            },
            {
              "kind": "field",
              "name": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "attribute": "layout",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "attribute": "variant",
              "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\nto keep the panel inside of the viewport.",
              "attribute": "placement",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "helpText",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's help text.",
              "attribute": "help-text"
            },
            {
              "kind": "field",
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The input's required attribute.",
              "attribute": "required",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The associated form element.",
              "attribute": "form",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "treeData",
              "type": {
                "text": "TreeSelectNodeData[]"
              },
              "default": "[]",
              "description": "Tree data. An array of `TreeSelectNodeData` objects describing the tree structure.\nEach node has `title`, `value`, and optionally `children`, `disabled`, `selectable`, `checkable`, `isLeaf`."
            },
            {
              "kind": "field",
              "name": "showSearch",
              "type": {
                "text": "boolean | ShowSearchConfig"
              },
              "default": "false",
              "description": "Whether to enable search in the combobox input. Can be a boolean or a config object.\nWhen `true`, enables search with default settings.\nWhen an object, enables search with the specified configuration:\n- `autoClearSearchValue`: auto clear search after selection (default: true)\n- `filterTreeNode`: filter function or boolean (default: true)\n- `searchValue`: controlled search value\n- `treeNodeFilterProp`: which node property to filter on (default: 'value')",
              "attribute": "show-search"
            },
            {
              "kind": "field",
              "name": "treeDefaultExpandAll",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether parent nodes are selectable when `multiple` is false. Defaults to true.",
              "attribute": "tree-default-expand-all"
            },
            {
              "kind": "field",
              "name": "treeCheckable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to check children when parent is checked (only for multiple mode).",
              "attribute": "tree-checkable"
            },
            {
              "kind": "field",
              "name": "showCheckedStrategy",
              "type": {
                "text": "'all' | 'parent' | 'child'"
              },
              "default": "'all'",
              "description": "Strategy for showing checked nodes: 'all' | 'parent' | 'child'. Defaults to 'all'.",
              "attribute": "show-checked-strategy"
            },
            {
              "kind": "field",
              "name": "treeLine",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show connecting lines between parent nodes in the tree. Leaf nodes are excluded.",
              "attribute": "tree-line"
            },
            {
              "kind": "field",
              "name": "leafOnly",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, only leaf nodes (nodes without children) can be selected.\nIn single-select mode, clicking a parent node will expand/collapse it instead of selecting.\nIn multiple-select mode, only leaf node values will be included in the selection.",
              "attribute": "leaf-only"
            },
            {
              "kind": "field",
              "name": "getTag",
              "type": {
                "text": "(node: TreeSelectNodeData, index: number) => TemplateResult | string | HTMLElement"
              },
              "description": "A function that generates a custom tag for each selected option in multiple mode.\nThe function receives the node data and index, and should return a TemplateResult, string, or HTMLElement.",
              "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": "method",
              "name": "handleDocumentMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "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": "clearTreeSelection",
              "privacy": "private",
              "description": "Clear the selection state of all tree items including indeterminate state."
            },
            {
              "kind": "method",
              "name": "handleClearMouseDown",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "MouseEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "findNodeByValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TreeSelectNodeData | null"
                }
              },
              "parameters": [
                {
                  "name": "value",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "nodes",
                  "default": "this.treeData",
                  "type": {
                    "text": "TreeSelectNodeData[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getNodeTextLabel",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "TreeSelectNodeData"
                  }
                }
              ],
              "description": "Get the plain text label for a node (for search filtering and form value)."
            },
            {
              "kind": "method",
              "name": "renderNodeTitle",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string | TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "TreeSelectNodeData"
                  }
                }
              ],
              "description": "Render a node's title as content (supports string, HTMLElement, TemplateResult)."
            },
            {
              "kind": "method",
              "name": "getSearchInputValue",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "Get the value to display in the search input."
            },
            {
              "kind": "method",
              "name": "getSearchInputPlaceholder",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "description": "Get the placeholder for the search input. Shows selected value text when focused, otherwise the default placeholder."
            },
            {
              "kind": "method",
              "name": "highlightText",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult"
                }
              },
              "parameters": [
                {
                  "name": "text",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "search",
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "Highlight matching search text in a string title."
            },
            {
              "kind": "method",
              "name": "getAllLeafValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "TreeSelectNodeData"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getAllDescendantValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "TreeSelectNodeData"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "isAllChildrenSelected",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "node",
                  "type": {
                    "text": "TreeSelectNodeData"
                  }
                },
                {
                  "name": "selectedSet",
                  "type": {
                    "text": "Set<string>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "getDisplayValues",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string[]"
                }
              }
            },
            {
              "kind": "method",
              "name": "handleTreeSelectionChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "CustomEvent<{ selection: SlTreeItem[] }>"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "updateDisplayLabel",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "handleTagRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "SlRemoveEvent"
                  }
                },
                {
                  "name": "nodeValue",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleSearchInput",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "filterTreeData",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TreeSelectNodeData[]"
                }
              },
              "parameters": [
                {
                  "name": "nodes",
                  "type": {
                    "text": "TreeSelectNodeData[]"
                  }
                },
                {
                  "name": "search",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "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": "handleTreeDataChange"
            },
            {
              "kind": "method",
              "name": "handleShowSearchChange"
            },
            {
              "kind": "method",
              "name": "handleOpenChange"
            },
            {
              "kind": "method",
              "name": "show"
            },
            {
              "kind": "method",
              "name": "hide"
            },
            {
              "kind": "method",
              "name": "checkValidity"
            },
            {
              "kind": "method",
              "name": "getForm",
              "return": {
                "type": {
                  "text": "HTMLFormElement | null"
                }
              }
            },
            {
              "kind": "method",
              "name": "reportValidity"
            },
            {
              "kind": "method",
              "name": "setCustomValidity",
              "parameters": [
                {
                  "name": "message",
                  "type": {
                    "text": "string"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "focus",
              "parameters": [
                {
                  "name": "options",
                  "optional": true,
                  "type": {
                    "text": "FocusOptions"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "blur"
            },
            {
              "kind": "method",
              "name": "loadChildren",
              "parameters": [
                {
                  "name": "parentValue",
                  "type": {
                    "text": "string"
                  }
                },
                {
                  "name": "children",
                  "type": {
                    "text": "TreeSelectNodeData[]"
                  }
                }
              ],
              "description": "Load children for a lazy node. Call this from your `sl-lazy-load` event handler.\nIt updates the node's children in `treeData`, removes `lazy`, and expands the node."
            },
            {
              "kind": "method",
              "name": "handleLazyLoad",
              "privacy": "private",
              "parameters": [
                {
                  "name": "event",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "handleTreeIconSlotChange",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getTreeIconSlotContent",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult | typeof nothing"
                }
              },
              "parameters": [
                {
                  "name": "slotName",
                  "type": {
                    "text": "'tree-expand-icon' | 'tree-collapse-icon'"
                  }
                }
              ],
              "description": "Clone the user-provided tree expand/collapse icons for the sl-tree's slots."
            },
            {
              "kind": "method",
              "name": "renderTreeItems",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "TemplateResult[]"
                }
              },
              "parameters": [
                {
                  "name": "nodes",
                  "type": {
                    "text": "TreeSelectNodeData[]"
                  }
                },
                {
                  "name": "isFiltered",
                  "default": "false"
                }
              ]
            }
          ],
          "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 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"
            },
            {
              "description": "Emitted when the form control has been checked for validity and its constraints aren't satisfied.",
              "name": "sl-invalid",
              "reactName": "onSlInvalid",
              "eventName": "SlInvalidEvent"
            },
            {
              "description": "Emitted when the search value changes.",
              "name": "sl-search",
              "reactName": "onSlSearch",
              "eventName": "SlSearchEvent"
            },
            {
              "description": "Emitted when a lazy node is expanded and its children need to be loaded.",
              "name": "sl-lazy-load",
              "reactName": "onSlLazyLoad",
              "eventName": "SlLazyLoadEvent"
            }
          ],
          "attributes": [
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The name of the control, 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 node to be selected. Renders checkboxes in the tree.",
              "fieldName": "multiple"
            },
            {
              "name": "max-options-visible",
              "type": {
                "text": "number"
              },
              "default": "3",
              "description": "The maximum number of selected options to show when `multiple` is true.\nAfter the maximum, \"+n\" will be shown. Set to 0 to remove the limit.",
              "fieldName": "maxOptionsVisible"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Disables the control.",
              "fieldName": "disabled"
            },
            {
              "name": "clearable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Adds a clear button when the input is not empty.",
              "fieldName": "clearable"
            },
            {
              "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,\nor you can use the `show()` and `hide()` methods.",
              "fieldName": "open"
            },
            {
              "name": "hoist",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enable the use of `hoist` to position the dropdown panel using a fixed strategy,\nallowing it to break out of containers that have `overflow: hidden`.",
              "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 input's label. If you need to display HTML, use the `label` slot instead.",
              "fieldName": "label"
            },
            {
              "name": "layout",
              "type": {
                "text": "'vertical' | 'horizontal'"
              },
              "default": "'vertical'",
              "description": "The layout of the form control. `vertical` places the label above, `horizontal` places it to the left.",
              "fieldName": "layout"
            },
            {
              "name": "variant",
              "type": {
                "text": "'outlined' | 'underlined'"
              },
              "default": "'outlined'",
              "description": "The visual variant of the input. `outlined` shows a full border, `underlined` shows only a bottom border.",
              "fieldName": "variant"
            },
            {
              "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\nto keep the panel inside of the viewport.",
              "fieldName": "placement"
            },
            {
              "name": "help-text",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The input's help text.",
              "fieldName": "helpText"
            },
            {
              "name": "required",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "The input's required attribute.",
              "fieldName": "required"
            },
            {
              "name": "form",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "The associated form element.",
              "fieldName": "form"
            },
            {
              "name": "show-search",
              "type": {
                "text": "boolean | ShowSearchConfig"
              },
              "default": "false",
              "description": "Whether to enable search in the combobox input. Can be a boolean or a config object.\nWhen `true`, enables search with default settings.\nWhen an object, enables search with the specified configuration:\n- `autoClearSearchValue`: auto clear search after selection (default: true)\n- `filterTreeNode`: filter function or boolean (default: true)\n- `searchValue`: controlled search value\n- `treeNodeFilterProp`: which node property to filter on (default: 'value')",
              "fieldName": "showSearch"
            },
            {
              "name": "tree-default-expand-all",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether parent nodes are selectable when `multiple` is false. Defaults to true.",
              "fieldName": "treeDefaultExpandAll"
            },
            {
              "name": "tree-checkable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to check children when parent is checked (only for multiple mode).",
              "fieldName": "treeCheckable"
            },
            {
              "name": "show-checked-strategy",
              "type": {
                "text": "'all' | 'parent' | 'child'"
              },
              "default": "'all'",
              "description": "Strategy for showing checked nodes: 'all' | 'parent' | 'child'. Defaults to 'all'.",
              "fieldName": "showCheckedStrategy"
            },
            {
              "name": "tree-line",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Whether to show connecting lines between parent nodes in the tree. Leaf nodes are excluded.",
              "fieldName": "treeLine"
            },
            {
              "name": "leaf-only",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "When true, only leaf nodes (nodes without children) can be selected.\nIn single-select mode, clicking a parent node will expand/collapse it instead of selecting.\nIn multiple-select mode, only leaf node values will be included in the selection.",
              "fieldName": "leafOnly"
            },
            {
              "name": "getTag",
              "type": {
                "text": "(node: TreeSelectNodeData, index: number) => TemplateResult | string | HTMLElement"
              },
              "description": "A function that generates a custom tag for each selected option in multiple mode.\nThe function receives the node data and index, and should return a TemplateResult, string, or HTMLElement.",
              "fieldName": "getTag"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "TreeSelect combines a dropdown trigger with a tree structure, allowing users to select from hierarchical data.",
          "tagNameWithoutPrefix": "tree-select",
          "tagName": "sl-tree-select",
          "customElement": true,
          "jsDoc": "/**\n * @summary TreeSelect combines a dropdown trigger with a tree structure, allowing users to select from hierarchical data.\n * @documentation https://shoelace.style/components/tree-select\n * @status experimental\n * @since 2.0\n *\n * @dependency sl-icon\n * @dependency sl-popup\n * @dependency sl-tag\n * @dependency sl-tree\n * @dependency sl-tree-item\n *\n * @slot label - The input'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 * @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.\n * @slot tree-expand-icon - The icon to show when a tree node is collapsed (click to expand). Forwarded to the tree's `expand-icon` slot.\n * @slot tree-collapse-icon - The icon to show when a tree node is expanded (click to collapse). Forwarded to the tree's `collapse-icon` slot.\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 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 * @event sl-invalid - Emitted when the form control has been checked for validity and its constraints aren't satisfied.\n * @event sl-search - Emitted when the search value changes.\n * @event sl-lazy-load - Emitted when a lazy node is expanded and its children need to be loaded.\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 that wraps the prefix, 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.\n * @csspart tags - The container that houses option tags when `multiple` is used.\n * @csspart tag - The individual tags that represent each selected option.\n * @csspart clear-button - The clear button.\n * @csspart expand-icon - The container that wraps the expand icon.\n * @csspart dropdown - The dropdown panel that contains the tree.\n * @csspart tree - The tree element inside the dropdown.\n */",
          "documentation": "https://shoelace.style/components/tree-select",
          "status": "experimental",
          "since": "2.0",
          "dependencies": [
            "sl-icon",
            "sl-popup",
            "sl-tag",
            "sl-tree",
            "sl-tree-item"
          ]
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlTreeSelect",
            "module": "components/tree-select/tree-select.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/upload/upload.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlUpload",
          "cssProperties": [
            {
              "description": "上传进度条的高度。默认值为 `2px`。",
              "name": "--sl-upload-progress-height"
            },
            {
              "description": "上传进度条的轨道颜色。默认值为 `--sl-color-neutral-200`。",
              "name": "--sl-upload-progress-track-color"
            },
            {
              "description": "上传进度条的指示器颜色。默认值为 `--sl-color-primary-600`。",
              "name": "--sl-upload-progress-indicator-color"
            },
            {
              "description": "上传进度条的标签颜色。默认值为 `--sl-color-neutral-0`。",
              "name": "--sl-upload-progress-label-color"
            }
          ],
          "cssParts": [
            {
              "description": "组件的基础包裹容器。",
              "name": "base"
            },
            {
              "description": "上传触发区域。",
              "name": "trigger"
            },
            {
              "description": "拖放区域（仅拖放模式）。",
              "name": "drag-area"
            },
            {
              "description": "文件列表容器。",
              "name": "list"
            },
            {
              "description": "单个文件列表项。",
              "name": "list-item"
            },
            {
              "description": "列表项中的文件名。",
              "name": "list-item-name"
            },
            {
              "description": "列表项中的操作按钮容器。",
              "name": "list-item-actions"
            },
            {
              "description": "文件名旁显示的额外信息。",
              "name": "list-item-extra"
            },
            {
              "description": "上传中项目的进度条容器。",
              "name": "list-item-progress"
            }
          ],
          "slots": [
            {
              "description": "选择模式的触发内容。对于 picture-card/picture-circle，这是上传按钮的内容。",
              "name": ""
            },
            {
              "description": "拖放区域显示的图标。",
              "name": "drag-icon"
            },
            {
              "description": "拖放区域显示的文本。",
              "name": "drag-text"
            },
            {
              "description": "拖放文本下方显示的提示文本。",
              "name": "drag-hint"
            },
            {
              "description": "上传触发区域下方显示的帮助文本。",
              "name": "tip"
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "dependencies",
              "type": {
                "text": "object"
              },
              "static": true,
              "default": "{ 'sl-button': SlButton, 'sl-icon': SlIcon, 'sl-icon-button': SlIconButton, 'sl-progress-bar': SlProgressBar, 'sl-spinner': SlSpinner, 'sl-tooltip': SlTooltip }"
            },
            {
              "kind": "field",
              "name": "fileInput",
              "type": {
                "text": "HTMLInputElement"
              }
            },
            {
              "kind": "field",
              "name": "localize",
              "privacy": "private",
              "readonly": true,
              "default": "new LocalizeController(this)"
            },
            {
              "kind": "field",
              "name": "action",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "上传文件的目标 URL。",
              "attribute": "action"
            },
            {
              "kind": "field",
              "name": "method",
              "type": {
                "text": "'POST' | 'PUT' | 'PATCH'"
              },
              "default": "'POST'",
              "description": "上传请求的 HTTP 方法。",
              "attribute": "method"
            },
            {
              "kind": "field",
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'file'",
              "description": "文件输入的 name 属性（用作 FormData 的键名）。",
              "attribute": "name"
            },
            {
              "kind": "field",
              "name": "accept",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "接受的文件类型（与原生 input 的 accept 属性相同）。",
              "attribute": "accept"
            },
            {
              "kind": "field",
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否允许选择多个文件。",
              "attribute": "multiple"
            },
            {
              "kind": "field",
              "name": "directory",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否支持目录上传。",
              "attribute": "directory"
            },
            {
              "kind": "field",
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用上传。",
              "attribute": "disabled",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "type",
              "type": {
                "text": "UploadType"
              },
              "default": "'select'",
              "description": "上传类型：'select' 为点击选择，'drag' 为拖放上传。",
              "attribute": "type",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "listType",
              "type": {
                "text": "UploadListType"
              },
              "default": "'text'",
              "description": "文件列表的展示类型。",
              "attribute": "list-type"
            },
            {
              "kind": "field",
              "name": "maxCount",
              "type": {
                "text": "number | undefined"
              },
              "description": "允许上传的最大文件数。设置为 1 时，新文件将替换旧文件。",
              "attribute": "max-count"
            },
            {
              "kind": "field",
              "name": "showUploadList",
              "type": {
                "text": "boolean | ShowUploadListInterface"
              },
              "default": "true",
              "description": "是否显示上传列表，或传入对象来配置显示的图标。\n设为 `false` 时隐藏文件列表。\n设为 `true`（默认）时，所有图标使用默认行为。\n设为对象时，可单独控制 `showPreviewIcon`、`showRemoveIcon` 和 `showDownloadIcon`。\n作为 HTML 属性使用时为 `show-upload-list`（布尔值）。对象配置需通过 JavaScript 属性设置。",
              "attribute": "show-upload-list",
              "reflects": true
            },
            {
              "kind": "field",
              "name": "openFileDialogOnClick",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "是否点击触发区域时打开文件选择对话框。",
              "attribute": "open-file-dialog-on-click"
            },
            {
              "kind": "field",
              "name": "pastable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否支持粘贴上传文件。启用后会监听 document 的 paste 事件。",
              "attribute": "pastable"
            },
            {
              "kind": "field",
              "name": "withCredentials",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "上传请求是否携带 Cookie。",
              "attribute": "with-credentials"
            },
            {
              "kind": "field",
              "name": "headers",
              "type": {
                "text": "Record<string, string>"
              },
              "default": "{}",
              "description": "上传请求的额外请求头。",
              "attribute": "headers"
            },
            {
              "kind": "field",
              "name": "data",
              "type": {
                "text": "Record<string, unknown>"
              },
              "default": "{}",
              "description": "上传请求附带的额外数据。",
              "attribute": "data"
            },
            {
              "kind": "field",
              "name": "fileList",
              "type": {
                "text": "UploadFile[] | undefined"
              },
              "description": "文件列表（受控模式）。设置后组件变为受控组件。"
            },
            {
              "kind": "field",
              "name": "defaultFileList",
              "type": {
                "text": "UploadFile[]"
              },
              "default": "[]",
              "description": "默认文件列表（非受控模式）。"
            },
            {
              "kind": "field",
              "name": "beforeUpload",
              "type": {
                "text": "BeforeUploadHandler | undefined"
              },
              "description": "上传前的回调函数。返回 false 取消上传，返回 File/Blob 进行转换。"
            },
            {
              "kind": "field",
              "name": "customRequest",
              "type": {
                "text": "CustomRequestHandler | undefined"
              },
              "description": "自定义上传请求实现。"
            },
            {
              "kind": "field",
              "name": "isImageUrl",
              "type": {
                "text": "(file: UploadFile) => boolean | undefined"
              },
              "description": "自定义判断文件是否为图片的函数。"
            },
            {
              "kind": "field",
              "name": "itemRender",
              "type": {
                "text": "ItemRender | undefined"
              },
              "description": "自定义文件列表项的渲染函数。接收 (file, fileList, actions)，应返回 Lit TemplateResult。"
            },
            {
              "kind": "field",
              "name": "iconRender",
              "type": {
                "text": "IconRender | undefined"
              },
              "description": "自定义文件图标的渲染函数。接收 (file, listType)，应返回 Lit TemplateResult。"
            },
            {
              "kind": "field",
              "name": "_fileList",
              "type": {
                "text": "UploadFile[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "_dragState",
              "type": {
                "text": "'drop' | 'dragover'"
              },
              "privacy": "private",
              "default": "'drop'"
            },
            {
              "kind": "field",
              "name": "_hasSlottedContent",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "default": "false"
            },
            {
              "kind": "field",
              "name": "_xhrMap",
              "privacy": "private",
              "default": "new Map<string, { abort: () => void }>()"
            },
            {
              "kind": "field",
              "name": "_handlePasteBound",
              "privacy": "private"
            },
            {
              "kind": "field",
              "name": "mergedFileList",
              "type": {
                "text": "UploadFile[]"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "isPictureCard",
              "type": {
                "text": "boolean"
              },
              "privacy": "private",
              "readonly": true
            },
            {
              "kind": "field",
              "name": "_showUploadListConfig",
              "type": {
                "text": "{\n    show: boolean;\n    showPreviewIcon: boolean | ((file: UploadFile) => boolean);\n    showRemoveIcon: boolean | ((file: UploadFile) => boolean);\n    showDownloadIcon: boolean | ((file: UploadFile) => boolean);\n    removeIcon: string | ((file: UploadFile) => string);\n    downloadIcon: string | ((file: UploadFile) => string);\n    previewIcon: string | ((file: UploadFile) => string);\n    extra?: string | ((file: UploadFile) => string);\n  }"
              },
              "privacy": "private",
              "description": "将 showUploadList 解析为各个独立标志。",
              "readonly": true
            },
            {
              "kind": "method",
              "name": "openFileDialog",
              "privacy": "public",
              "description": "以编程方式打开文件选择对话框。"
            },
            {
              "kind": "method",
              "name": "upload",
              "privacy": "public",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                }
              ],
              "description": "以编程方式触发文件上传。"
            },
            {
              "kind": "method",
              "name": "abort",
              "privacy": "public",
              "parameters": [
                {
                  "name": "uid",
                  "optional": true,
                  "type": {
                    "text": "string"
                  }
                }
              ],
              "description": "根据 uid 中止指定文件的上传。"
            },
            {
              "kind": "method",
              "name": "_generateThumbnails",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_isImage",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "boolean"
                }
              },
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_onTriggerClick",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_onInputChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_processFiles",
              "privacy": "private",
              "parameters": [
                {
                  "name": "files",
                  "type": {
                    "text": "File[]"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_uploadFile",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "File"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_updateFileList",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                },
                {
                  "name": "fileList",
                  "type": {
                    "text": "UploadFile[]"
                  }
                },
                {
                  "name": "event",
                  "optional": true,
                  "type": {
                    "text": "{ percent: number }"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleRemove",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handlePreview",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handleDownload",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_onSlotChange",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "Event"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_resolveIcon",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "string"
                }
              },
              "parameters": [
                {
                  "name": "icon",
                  "type": {
                    "text": "string | ((file: UploadFile) => string)"
                  }
                },
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_handlePaste",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "ClipboardEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_onDragOver",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_onDragLeave",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_onDrop",
              "privacy": "private",
              "parameters": [
                {
                  "name": "e",
                  "type": {
                    "text": "DragEvent"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderSelect",
              "privacy": "private",
              "parameters": [
                {
                  "name": "hideUploadButton",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderTrigger",
              "privacy": "private",
              "parameters": [
                {
                  "name": "hidden",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderInput",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderDrag",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderPictureCardMode",
              "privacy": "private",
              "parameters": [
                {
                  "name": "hideUploadButton",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderPictureCardItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderFileList",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "_renderListItem",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                },
                {
                  "name": "isPicture",
                  "type": {
                    "text": "boolean"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderFileIcon",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "_renderThumbnail",
              "privacy": "private",
              "parameters": [
                {
                  "name": "file",
                  "type": {
                    "text": "UploadFile"
                  }
                }
              ]
            }
          ],
          "events": [
            {
              "description": "文件列表变化时触发。`event.detail` 包含 `{ file, fileList, event? }`，其中 `event` 是可选的进度信息 `{ percent }`。",
              "name": "sl-change",
              "reactName": "onSlChange",
              "eventName": "SlChangeEvent"
            },
            {
              "description": "文件被移除时触发。调用 `event.preventDefault()` 可取消移除。`event.detail` 包含 `{ file }`。",
              "name": "sl-remove",
              "reactName": "onSlRemove",
              "eventName": "SlRemoveEvent"
            },
            {
              "description": "请求预览文件时触发。`event.detail` 包含 `{ file }`。",
              "name": "sl-preview",
              "reactName": "onSlPreview",
              "eventName": "SlPreviewEvent"
            },
            {
              "description": "请求下载文件时触发。调用 `event.preventDefault()` 可阻止默认打开 URL 行为。`event.detail` 包含 `{ file }`。",
              "name": "sl-download",
              "reactName": "onSlDownload",
              "eventName": "SlDownloadEvent"
            },
            {
              "description": "拖放模式下放置文件时触发。`event.detail` 包含 `{ event }`，其中 `event` 是原生 `DragEvent`。",
              "name": "sl-drop",
              "reactName": "onSlDrop",
              "eventName": "SlDropEvent"
            },
            {
              "description": "文件数量超过 maxCount 时触发。`event.detail` 包含 `{ files, maxCount }`。",
              "name": "sl-exceed",
              "reactName": "onSlExceed",
              "eventName": "SlExceedEvent"
            }
          ],
          "attributes": [
            {
              "name": "action",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "上传文件的目标 URL。",
              "fieldName": "action"
            },
            {
              "name": "method",
              "type": {
                "text": "'POST' | 'PUT' | 'PATCH'"
              },
              "default": "'POST'",
              "description": "上传请求的 HTTP 方法。",
              "fieldName": "method"
            },
            {
              "name": "name",
              "type": {
                "text": "string"
              },
              "default": "'file'",
              "description": "文件输入的 name 属性（用作 FormData 的键名）。",
              "fieldName": "name"
            },
            {
              "name": "accept",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "接受的文件类型（与原生 input 的 accept 属性相同）。",
              "fieldName": "accept"
            },
            {
              "name": "multiple",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否允许选择多个文件。",
              "fieldName": "multiple"
            },
            {
              "name": "directory",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否支持目录上传。",
              "fieldName": "directory"
            },
            {
              "name": "disabled",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否禁用上传。",
              "fieldName": "disabled"
            },
            {
              "name": "type",
              "type": {
                "text": "UploadType"
              },
              "default": "'select'",
              "description": "上传类型：'select' 为点击选择，'drag' 为拖放上传。",
              "fieldName": "type"
            },
            {
              "name": "list-type",
              "type": {
                "text": "UploadListType"
              },
              "default": "'text'",
              "description": "文件列表的展示类型。",
              "fieldName": "listType"
            },
            {
              "name": "max-count",
              "type": {
                "text": "number | undefined"
              },
              "description": "允许上传的最大文件数。设置为 1 时，新文件将替换旧文件。",
              "fieldName": "maxCount"
            },
            {
              "name": "show-upload-list",
              "type": {
                "text": "boolean | ShowUploadListInterface"
              },
              "default": "true",
              "description": "是否显示上传列表，或传入对象来配置显示的图标。\n设为 `false` 时隐藏文件列表。\n设为 `true`（默认）时，所有图标使用默认行为。\n设为对象时，可单独控制 `showPreviewIcon`、`showRemoveIcon` 和 `showDownloadIcon`。\n作为 HTML 属性使用时为 `show-upload-list`（布尔值）。对象配置需通过 JavaScript 属性设置。",
              "fieldName": "showUploadList"
            },
            {
              "name": "open-file-dialog-on-click",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "是否点击触发区域时打开文件选择对话框。",
              "fieldName": "openFileDialogOnClick"
            },
            {
              "name": "pastable",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "是否支持粘贴上传文件。启用后会监听 document 的 paste 事件。",
              "fieldName": "pastable"
            },
            {
              "name": "with-credentials",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "上传请求是否携带 Cookie。",
              "fieldName": "withCredentials"
            },
            {
              "name": "headers",
              "type": {
                "text": "Record<string, string>"
              },
              "default": "{}",
              "description": "上传请求的额外请求头。",
              "fieldName": "headers"
            },
            {
              "name": "data",
              "type": {
                "text": "Record<string, unknown>"
              },
              "default": "{}",
              "description": "上传请求附带的额外数据。",
              "fieldName": "data"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "上传组件，支持文件选择、拖放上传、文件列表和图片卡片模式。",
          "tagNameWithoutPrefix": "upload",
          "tagName": "sl-upload",
          "customElement": true,
          "jsDoc": "/**\n * @summary 上传组件，支持文件选择、拖放上传、文件列表和图片卡片模式。\n * @documentation https://shoelace.style/components/upload\n * @status experimental\n * @since 2.20\n *\n * @dependency sl-button\n * @dependency sl-icon\n * @dependency sl-icon-button\n * @dependency sl-progress-bar\n * @dependency sl-spinner\n * @dependency sl-tooltip\n *\n * @event sl-change - 文件列表变化时触发。`event.detail` 包含 `{ file, fileList, event? }`，其中 `event` 是可选的进度信息 `{ percent }`。\n * @event sl-remove - 文件被移除时触发。调用 `event.preventDefault()` 可取消移除。`event.detail` 包含 `{ file }`。\n * @event sl-preview - 请求预览文件时触发。`event.detail` 包含 `{ file }`。\n * @event sl-download - 请求下载文件时触发。调用 `event.preventDefault()` 可阻止默认打开 URL 行为。`event.detail` 包含 `{ file }`。\n * @event sl-drop - 拖放模式下放置文件时触发。`event.detail` 包含 `{ event }`，其中 `event` 是原生 `DragEvent`。\n * @event sl-exceed - 文件数量超过 maxCount 时触发。`event.detail` 包含 `{ files, maxCount }`。\n *\n * @slot - 选择模式的触发内容。对于 picture-card/picture-circle，这是上传按钮的内容。\n * @slot drag-icon - 拖放区域显示的图标。\n * @slot drag-text - 拖放区域显示的文本。\n * @slot drag-hint - 拖放文本下方显示的提示文本。\n * @slot tip - 上传触发区域下方显示的帮助文本。\n *\n * @csspart base - 组件的基础包裹容器。\n * @csspart trigger - 上传触发区域。\n * @csspart drag-area - 拖放区域（仅拖放模式）。\n * @csspart list - 文件列表容器。\n * @csspart list-item - 单个文件列表项。\n * @csspart list-item-name - 列表项中的文件名。\n * @csspart list-item-actions - 列表项中的操作按钮容器。\n * @csspart list-item-extra - 文件名旁显示的额外信息。\n * @csspart list-item-progress - 上传中项目的进度条容器。\n *\n * @cssproperty --sl-upload-progress-height - 上传进度条的高度。默认值为 `2px`。\n * @cssproperty --sl-upload-progress-track-color - 上传进度条的轨道颜色。默认值为 `--sl-color-neutral-200`。\n * @cssproperty --sl-upload-progress-indicator-color - 上传进度条的指示器颜色。默认值为 `--sl-color-primary-600`。\n * @cssproperty --sl-upload-progress-label-color - 上传进度条的标签颜色。默认值为 `--sl-color-neutral-0`。\n */",
          "documentation": "https://shoelace.style/components/upload",
          "status": "experimental",
          "since": "2.20",
          "dependencies": [
            "sl-button",
            "sl-icon",
            "sl-icon-button",
            "sl-progress-bar",
            "sl-spinner",
            "sl-tooltip"
          ]
        },
        {
          "kind": "variable",
          "name": "file",
          "default": "this._fileList[i]"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlUpload",
            "module": "components/upload/upload.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/visually-hidden/visually-hidden.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlVisuallyHidden",
          "slots": [
            {
              "description": "The content to be visually hidden.",
              "name": ""
            }
          ],
          "members": [],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "The visually hidden utility makes content accessible to assistive devices without displaying it on the screen.",
          "tagNameWithoutPrefix": "visually-hidden",
          "tagName": "sl-visually-hidden",
          "customElement": true,
          "jsDoc": "/**\n * @summary The visually hidden utility makes content accessible to assistive devices without displaying it on the screen.\n * @documentation https://shoelace.style/components/visually-hidden\n * @status stable\n * @since 2.0\n *\n * @slot - The content to be visually hidden.\n */",
          "documentation": "https://shoelace.style/components/visually-hidden",
          "status": "stable",
          "since": "2.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlVisuallyHidden",
            "module": "components/visually-hidden/visually-hidden.js"
          }
        }
      ]
    },
    {
      "kind": "javascript-module",
      "path": "components/x-markdown/x-markdown.js",
      "declarations": [
        {
          "kind": "class",
          "description": "",
          "name": "SlXMarkdown",
          "cssParts": [
            {
              "description": "The component's base wrapper.",
              "name": "base"
            },
            {
              "description": "The markdown body container.",
              "name": "body"
            },
            {
              "description": "Paragraph content.",
              "name": "paragraph"
            },
            {
              "description": "Heading elements.",
              "name": "heading"
            },
            {
              "description": "Link elements.",
              "name": "link"
            },
            {
              "description": "Blockquotes and chat enhanced containers.",
              "name": "blockquote"
            },
            {
              "description": "List containers.",
              "name": "list"
            },
            {
              "description": "List items.",
              "name": "list-item"
            },
            {
              "description": "Table elements.",
              "name": "table"
            },
            {
              "description": "Table header section.",
              "name": "table-head"
            },
            {
              "description": "Table body section.",
              "name": "table-body"
            },
            {
              "description": "Table rows.",
              "name": "table-row"
            },
            {
              "description": "Table header/data cells.",
              "name": "table-cell"
            },
            {
              "description": "Inline code nodes.",
              "name": "code-inline"
            },
            {
              "description": "Code block wrapper.",
              "name": "code-block"
            },
            {
              "description": "Code block language header.",
              "name": "code-block-header"
            },
            {
              "description": "Code block body.",
              "name": "code-block-body"
            },
            {
              "description": "Streaming tail indicator.",
              "name": "tail"
            },
            {
              "description": "Incomplete markdown placeholder nodes.",
              "name": "incomplete"
            }
          ],
          "slots": [
            {
              "description": "Not used. Content is rendered from the `content` property only.",
              "name": ""
            }
          ],
          "members": [
            {
              "kind": "field",
              "name": "parsedTokens",
              "type": {
                "text": "Tokens.Generic[]"
              },
              "privacy": "private",
              "default": "[]"
            },
            {
              "kind": "field",
              "name": "processedContent",
              "type": {
                "text": "string"
              },
              "privacy": "private",
              "default": "''"
            },
            {
              "kind": "field",
              "name": "streamingState",
              "type": {
                "text": "SlXMarkdownStreamingState"
              },
              "privacy": "private",
              "default": "{ streamStatus: 'done', incompleteKinds: [] }"
            },
            {
              "kind": "field",
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Markdown content to render.",
              "attribute": "content"
            },
            {
              "kind": "field",
              "name": "components",
              "type": {
                "text": "Record<string, string>"
              },
              "default": "{}",
              "description": "Map markdown node types to custom element tag names."
            },
            {
              "kind": "field",
              "name": "plugins",
              "type": {
                "text": "SlXMarkdownPlugin[]"
              },
              "default": "[]",
              "description": "Markdown pipeline plugins."
            },
            {
              "kind": "field",
              "name": "theme",
              "type": {
                "text": "'light' | 'dark' | string"
              },
              "default": "'light'",
              "description": "Theme name for styling (`light`, `dark`, or custom class name).",
              "attribute": "theme"
            },
            {
              "kind": "field",
              "name": "openLinksInNewTab",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Open links with `target=\\\"_blank\\\"` and `rel=\\\"noopener noreferrer\\\"`.",
              "attribute": "open-links-in-new-tab"
            },
            {
              "kind": "field",
              "name": "escapeRawHtml",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Escapes raw HTML tokens when enabled.",
              "attribute": "escape-raw-html"
            },
            {
              "kind": "field",
              "name": "debug",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables debug output in development environments.",
              "attribute": "debug"
            },
            {
              "kind": "field",
              "name": "streaming",
              "type": {
                "text": "SlXMarkdownStreamingConfig | false | undefined"
              },
              "default": "false",
              "description": "Streaming configuration. Set `false` to disable streaming mode."
            },
            {
              "kind": "method",
              "name": "getPluginContext",
              "privacy": "private",
              "return": {
                "type": {
                  "text": "SlXMarkdownPluginContext"
                }
              }
            },
            {
              "kind": "method",
              "name": "computeRenderState",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getThemeClassName",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "isDevEnvironment",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderIncompleteNode",
              "privacy": "private",
              "parameters": [
                {
                  "name": "kind",
                  "type": {
                    "text": "SlXMarkdownIncompleteKind"
                  }
                }
              ]
            },
            {
              "kind": "method",
              "name": "renderTail",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "renderDebug",
              "privacy": "private"
            },
            {
              "kind": "method",
              "name": "getStreamingStyle",
              "privacy": "private"
            }
          ],
          "attributes": [
            {
              "name": "content",
              "type": {
                "text": "string"
              },
              "default": "''",
              "description": "Markdown content to render.",
              "fieldName": "content"
            },
            {
              "name": "theme",
              "type": {
                "text": "'light' | 'dark' | string"
              },
              "default": "'light'",
              "description": "Theme name for styling (`light`, `dark`, or custom class name).",
              "fieldName": "theme"
            },
            {
              "name": "open-links-in-new-tab",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Open links with `target=\\\"_blank\\\"` and `rel=\\\"noopener noreferrer\\\"`.",
              "fieldName": "openLinksInNewTab"
            },
            {
              "name": "escape-raw-html",
              "type": {
                "text": "boolean"
              },
              "default": "true",
              "description": "Escapes raw HTML tokens when enabled.",
              "fieldName": "escapeRawHtml"
            },
            {
              "name": "debug",
              "type": {
                "text": "boolean"
              },
              "default": "false",
              "description": "Enables debug output in development environments.",
              "fieldName": "debug"
            }
          ],
          "superclass": {
            "name": "ShoelaceElement",
            "module": "/src/internal/shoelace-element.js"
          },
          "summary": "Render markdown content with streaming support and custom node mapping.",
          "tagNameWithoutPrefix": "x-markdown",
          "tagName": "sl-x-markdown",
          "customElement": true,
          "jsDoc": "/**\n * @summary Render markdown content with streaming support and custom node mapping.\n * @documentation https://shoelace.style/components/x-markdown\n * @status experimental\n * @since 0.0\n *\n * @slot - Not used. Content is rendered from the `content` property only.\n *\n * @csspart base - The component's base wrapper.\n * @csspart body - The markdown body container.\n * @csspart paragraph - Paragraph content.\n * @csspart heading - Heading elements.\n * @csspart link - Link elements.\n * @csspart blockquote - Blockquotes and chat enhanced containers.\n * @csspart list - List containers.\n * @csspart list-item - List items.\n * @csspart table - Table elements.\n * @csspart table-head - Table header section.\n * @csspart table-body - Table body section.\n * @csspart table-row - Table rows.\n * @csspart table-cell - Table header/data cells.\n * @csspart code-inline - Inline code nodes.\n * @csspart code-block - Code block wrapper.\n * @csspart code-block-header - Code block language header.\n * @csspart code-block-body - Code block body.\n * @csspart tail - Streaming tail indicator.\n * @csspart incomplete - Incomplete markdown placeholder nodes.\n */",
          "documentation": "https://shoelace.style/components/x-markdown",
          "status": "experimental",
          "since": "0.0"
        }
      ],
      "exports": [
        {
          "kind": "js",
          "name": "default",
          "declaration": {
            "name": "SlXMarkdown",
            "module": "components/x-markdown/x-markdown.js"
          }
        }
      ]
    }
  ],
  "package": {
    "name": "@kdcloudjs/shoelace",
    "description": "A forward-thinking library of web components.",
    "version": "1.0.52",
    "license": "MIT"
  }
}
