@redvars/peacock 3.6.0 → 3.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/code-highlighter.js +1 -1
- package/dist/code-highlighter.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +928 -96
- package/dist/custom-elements.json +1294 -379
- package/dist/{flow-designer-dZnLJOQT.js → flow-designer-DvTUrDp5.js} +3 -3
- package/dist/{flow-designer-dZnLJOQT.js.map → flow-designer-DvTUrDp5.js.map} +1 -1
- package/dist/{flow-designer-node-XMe-jlKg.js → flow-designer-node-BWrPuxAR.js} +2 -2
- package/dist/flow-designer-node-BWrPuxAR.js.map +1 -0
- package/dist/flow-designer-node.js +1 -1
- package/dist/flow-designer.js +2 -2
- package/dist/html-editor.js +27245 -87
- package/dist/html-editor.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/modal.js +1 -7
- package/dist/modal.js.map +1 -1
- package/dist/{navigation-rail-DyO0oAZU.js → navigation-rail-DTTkqohi.js} +763 -214
- package/dist/navigation-rail-DTTkqohi.js.map +1 -0
- package/dist/peacock-loader.js +12 -3
- package/dist/peacock-loader.js.map +1 -1
- package/dist/src/html-editor/html-editor.d.ts +44 -11
- package/dist/src/index.d.ts +2 -0
- package/dist/src/list/index.d.ts +2 -0
- package/dist/src/list/list-item.d.ts +35 -0
- package/dist/src/list/list.d.ts +28 -0
- package/dist/src/modal/modal.d.ts +1 -7
- package/dist/src/navigation-rail/navigation-rail.d.ts +3 -7
- package/dist/src/number-field/number-field.d.ts +2 -2
- package/dist/src/svg/index.d.ts +1 -0
- package/dist/src/svg/svg.d.ts +38 -0
- package/dist/src/toolbar/toolbar.d.ts +3 -3
- package/dist/toolbar.js +3 -3
- package/dist/toolbar.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -1
- package/readme.md +3 -3
- package/src/code-highlighter/code-highlighter.ts +1 -1
- package/src/flow-designer/flow-designer-node.ts +1 -1
- package/src/html-editor/html-editor.scss +44 -2
- package/src/html-editor/html-editor.ts +309 -94
- package/src/index.ts +2 -1
- package/src/list/index.ts +2 -0
- package/src/list/list-item.scss +111 -0
- package/src/list/list-item.ts +175 -0
- package/src/list/list.scss +24 -0
- package/src/list/list.ts +51 -0
- package/src/modal/modal.ts +1 -7
- package/src/navigation-rail/navigation-rail-item.scss +7 -38
- package/src/navigation-rail/navigation-rail-item.ts +1 -2
- package/src/navigation-rail/navigation-rail.scss +17 -21
- package/src/navigation-rail/navigation-rail.ts +6 -9
- package/src/number-field/number-field.ts +2 -2
- package/src/peacock-loader.ts +12 -0
- package/src/svg/index.ts +1 -0
- package/src/svg/svg.scss +91 -0
- package/src/svg/svg.ts +160 -0
- package/src/toolbar/toolbar.ts +3 -3
- package/dist/flow-designer-node-XMe-jlKg.js.map +0 -1
- package/dist/navigation-rail-DyO0oAZU.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"navigation-rail-DyO0oAZU.js","sources":["../node_modules/@lit/reactive-element/decorators/query-assigned-elements.js","../../src/avatar/avatar.ts","../../src/badge/badge.ts","../../src/divider/divider.ts","../../src/elevation/elevation.ts","../../src/segmented-button/segmented-button.ts","../../src/segmented-button/segmented-button-group.ts","../../src/focus-ring/focus-ring.ts","../../src/ripple/ripple.ts","../../src/accordion/accordion-item.ts","../../src/accordion/accordion.ts","../../src/link/link.ts","../../src/chip/tag/tag.ts","../../src/chip/chip/chip.ts","../../src/progress/base-progress.ts","../../src/progress/linear-progress/linear-progress.ts","../../src/progress/circular-progress/circular-progress.ts","../../src/skeleton/skeleton.ts","../../src/input/input.ts","../../src/url-field/url-field.ts","../../src/field/field.ts","../../src/number-field/number-field.ts","../../src/date-picker/date-picker.ts","../../src/time-picker/time-picker.ts","../../src/textarea/textarea.ts","../../src/switch/switch.ts","../../src/checkbox/checkbox.ts","../../src/spinner/spinner.ts","../../src/container/container.ts","../../src/empty-state/empty-state.ts","../../src/tooltip/tooltip.ts","../../src/breadcrumb/breadcrumb-item/breadcrumb-item.ts","../../src/breadcrumb/breadcrumb/breadcrumb.ts","../../src/menu/menu-item/menu-item.ts","../../src/menu/menu/menu.ts","../../src/menu/sub-menu/sub-menu.ts","../../src/image/image.ts","../../src/tabs/tab.ts","../../src/tabs/tabs.ts","../../src/tabs/tab-panel.ts","../../src/tabs/tab-group.ts","../../src/slider/slider.ts","../../src/table/table.ts","../../src/pagination/pagination.ts","../../src/sidebar-menu/sidebar-menu-item.ts","../../src/sidebar-menu/sidebar-sub-menu.ts","../../src/sidebar-menu/sidebar-menu.ts","../../src/snackbar/snackbar.ts","../../src/radio/radio.ts","../../src/select/option.ts","../../src/select/select.ts","../../src/navigation-rail/navigation-rail-item.ts","../../src/navigation-rail/navigation-rail.ts"],"sourcesContent":["import{desc as t}from\"./base.js\";\n/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */function o(o){return(e,n)=>{const{slot:r,selector:s}=o??{},c=\"slot\"+(r?`[name=${r}]`:\":not([name])\");return t(e,n,{get(){const t=this.renderRoot?.querySelector(c),e=t?.assignedElements(o)??[];return void 0===s?e:e.filter(t=>t.matches(s))}})}}export{o as queryAssignedElements};\n//# sourceMappingURL=query-assigned-elements.js.map\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './avatar.scss';\n\n/**\n * @label Avatar\n * @tag wc-avatar\n * @rawTag avatar\n * @summary The Avatar component is used to represent user, and displays the profile picture, initials or fallback icon.\n *\n * @cssprop --avatar-border-radius - Controls the border radius of the avatar.\n * @cssprop --avatar-background-color - Controls the color of the avatar.\n * @cssprop --avatar-size - Controls the size of the avatar.\n * @cssprop --avatar-text-color - Controls the color of the text inside the avatar.\n *\n *\n * @example\n * ```html\n * <wc-avatar name=\"Shivaji Varma\" src=\"https://peacock.redvars.com/assets/img/avatar.xs.webp\" style='--avatar-size: 4rem'></wc-avatar>\n * ```\n *\n * @tags display\n */\nexport class Avatar extends LitElement {\n static styles = [styles];\n\n @property({ type: String, reflect: true }) name: string = '';\n\n @property({ type: String, reflect: true }) src?: string;\n\n render() {\n return html`<div class=\"avatar-container\">\n <div\n class=${classMap({\n avatar: true,\n initials: !this.src,\n image: !!this.src,\n })}\n >\n ${this.src\n ? html`<img class=\"image\" src=${this.src} alt=${this.name} />`\n : html`<div class=\"initials\">${this.__getInitials()}</div>`}\n </div>\n </div>`;\n }\n\n private __getInitials() {\n const [first = '', last = ''] = this.name.split(' ');\n return `${first.charAt(0)}${last.charAt(0)}`.toUpperCase();\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './badge.scss';\n\n/**\n * @label Badge\n * @tag wc-badge\n * @rawTag badge\n * @summary The badge component is used to display a small amount of information to the user.\n *\n * @cssprop --badge-color - Controls the color of the badge.\n *\n * @example\n * ```html\n * <wc-badge value=\"1\"></wc-badge>\n * ```\n * @tags display\n */\nexport class Badge extends LitElement {\n static styles = [styles];\n\n /**\n * The value to display in the badge.\n */\n @property({ type: String }) value: string = '';\n\n render() {\n return html`<div\n class=${classMap({\n badge: true,\n 'has-value': !!this.value,\n })}\n >\n ${this.value}\n </div>`;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { observerSlotChangesWithCallback } from '@/__utils/observe-slot-change.js';\n\nimport styles from './divider.scss';\n\n/**\n * @label Divider\n * @tag wc-divider\n * @rawTag divider\n *\n * @summary The divider component is used to visually separate content.\n * @overview\n * - Dividers are used to separate content into clear groups, making it easier for users to scan and understand the information presented.\n * - They can be oriented either vertically or horizontally, depending on the layout requirements.\n *\n * @cssprop --divider-color - Controls the color of the divider.\n * @cssprop --divider-padding - Controls the padding of the divider.\n *\n * @example\n * ```html\n * <wc-divider style=\"width: 12rem;\">or</wc-divider>\n * ```\n * @tags display\n */\nexport class Divider extends LitElement {\n static styles = [styles];\n\n @property({ type: Boolean, reflect: true }) vertical = false;\n\n @state()\n slotHasContent = false;\n\n firstUpdated() {\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot'),\n hasContent => {\n this.slotHasContent = hasContent;\n this.requestUpdate();\n },\n );\n }\n\n render() {\n return html`<div\n class=${classMap({\n divider: true,\n vertical: this.vertical,\n 'slot-has-content': this.slotHasContent,\n })}\n >\n <div class=\"line\"></div>\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n <div class=\"line\"></div>\n </div>`;\n }\n}\n","import { html, LitElement } from 'lit';\nimport styles from './elevation.scss';\n\n/**\n * @label Elevation\n * @tag wc-elevation\n * @rawTag elevation\n *\n * @summary Adds elevation to an element.\n * @overview\n * - Elevation adds a shadow effect to an element to give it depth.\n * - It can be used to create a sense of hierarchy or to draw attention to a particular element.\n *\n * @cssprop --elevation-level - Controls the elevation level of the shadow.\n * @cssprop --elevation-color - Controls the color of the shadow.\n *\n * @example\n * ```html\n * <div style=\"position: relative; padding: var(--spacing-200);\">\n * <wc-elevation style='--elevation-level: 2; --elevation-container-shape: var(--shape-corner-extra-small);'></wc-elevation>\n * Level 2\n * </div>\n * ```\n * @tags display\n */\nexport class Elevation extends LitElement {\n static styles = [styles];\n\n render() {\n return html`<span class=\"shadow\"></span>`;\n }\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './segmented-button.scss';\n\n/**\n * @label Segmented Button\n * @tag wc-segmented-button\n * @rawTag segmented-button\n * @summary An individual segment within a segmented button group.\n * @parentRawTag segmented-button-group\n * @overview\n * <p>Segmented buttons help people select options, switch views, or sort elements. They are used within a <code>wc-segmented-button-group</code>.</p>\n *\n * @cssprop --segmented-button-height: Height of the segmented button.\n * @cssprop --segmented-button-selected-container-color: Background color when the segment is selected.\n * @cssprop --segmented-button-selected-label-text-color: Text color when the segment is selected.\n * @cssprop --segmented-button-unselected-label-text-color: Text color when the segment is unselected.\n * @cssprop --segmented-button-outline-color: Outline / border color.\n * @cssprop --segmented-button-disabled-opacity: Opacity when the segment is disabled.\n *\n * @fires {CustomEvent} segmented-button--change - Dispatched when the selected state changes.\n *\n * @example\n * ```html\n * <wc-segmented-button-group>\n * <wc-segmented-button value=\"day\">Day</wc-segmented-button>\n * <wc-segmented-button value=\"week\" selected>Week</wc-segmented-button>\n * <wc-segmented-button value=\"month\">Month</wc-segmented-button>\n * </wc-segmented-button-group>\n * ```\n *\n * @tags controls\n */\nexport class SegmentedButton extends LitElement {\n static styles = [styles];\n\n /**\n * The value associated with this segment.\n */\n @property({ type: String, reflect: true })\n value: string = '';\n\n /**\n * Whether this segment is currently selected.\n */\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n /**\n * If true, the user cannot interact with this segment.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Optional icon name to display (uses wc-icon).\n */\n @property({ type: String })\n icon?: string;\n\n @state()\n private hasFocus = false;\n\n @state()\n private isActive = false;\n\n connectedCallback() {\n super.connectedCallback();\n window.addEventListener('mouseup', this._windowMouseUp);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('mouseup', this._windowMouseUp);\n }\n\n private _windowMouseUp = () => {\n if (this.isActive) {\n this.isActive = false;\n }\n };\n\n private _mouseDownHandler = () => {\n this.isActive = true;\n };\n\n private _keyDownHandler = (evt: KeyboardEvent) => {\n if (evt.key === ' ' || evt.key === 'Enter') {\n evt.preventDefault();\n this.isActive = true;\n this._toggle(evt);\n }\n };\n\n private _clickHandler = (ev: MouseEvent) => {\n this._toggle(ev);\n };\n\n private _toggle(ev: MouseEvent | KeyboardEvent) {\n if (this.disabled) return;\n this.dispatchEvent(\n new CustomEvent('segmented-button--change', {\n detail: {\n value: this.value || this.textContent?.trim(),\n selected: !this.selected,\n originalEvent: ev,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _blurHandler = (ev: FocusEvent) => {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('blur', { detail: ev, bubbles: true, composed: true }),\n );\n };\n\n private _focusHandler = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('focus', { detail: ev, bubbles: true, composed: true }),\n );\n };\n\n /** Sets focus on the segment. */\n focus() {\n this.renderRoot.querySelector<HTMLElement>('.segment')?.focus();\n }\n\n /** Removes focus from the segment. */\n blur() {\n this.renderRoot.querySelector<HTMLElement>('.segment')?.blur();\n }\n\n render() {\n const cssClasses = {\n segment: true,\n selected: this.selected,\n disabled: this.disabled,\n 'has-focus': this.hasFocus,\n active: this.isActive,\n 'has-icon': !!this.icon,\n };\n\n return html`\n <div\n class=${classMap(cssClasses)}\n role=\"button\"\n tabindex=${this.disabled ? -1 : 0}\n aria-pressed=${this.selected}\n aria-disabled=${this.disabled}\n @click=${this._clickHandler}\n @mousedown=${this._mouseDownHandler}\n @keydown=${this._keyDownHandler}\n @blur=${this._blurHandler}\n @focus=${this._focusHandler}\n >\n <div class=\"state-layer\"></div>\n <div class=\"content\">\n ${this.selected\n ? html`<wc-icon class=\"check-icon\" name=\"check\"></wc-icon>`\n : this.icon\n ? html`<wc-icon class=\"leading-icon\" name=${this.icon}></wc-icon>`\n : nothing}\n <span class=\"label\"><slot></slot></span>\n </div>\n <div class=\"segment-outline\"></div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './segmented-button-group.scss';\nimport { SegmentedButton } from './segmented-button.js';\n\n/**\n * @label Segmented Button Group\n * @tag wc-segmented-button-group\n * @rawTag segmented-button-group\n * @summary A container for segmented buttons following Material Design 3.\n * @overview\n * <p>Segmented buttons help people select options, switch views, or sort elements. They follow the Material Design 3 specification.</p>\n * <p>Use <code>multi-select</code> to allow more than one segment to be selected at a time. By default only one segment can be active (single-select).</p>\n *\n * @cssprop --segmented-button-group-shape: Border-radius of the group container.\n *\n * @fires {CustomEvent} change - Dispatched when the selection changes. Detail contains <code>{ value, values }</code>.\n *\n * @example\n * ```html\n * <wc-segmented-button-group>\n * <wc-segmented-button value=\"day\">Day</wc-segmented-button>\n * <wc-segmented-button value=\"week\" selected>Week</wc-segmented-button>\n * <wc-segmented-button value=\"month\">Month</wc-segmented-button>\n * </wc-segmented-button-group>\n * ```\n *\n * @tags controls\n */\nexport class SegmentedButtonGroup extends LitElement {\n static styles = [styles];\n\n static SegmentedButton = SegmentedButton;\n\n /**\n * When true, multiple segments can be selected simultaneously.\n * Defaults to single-select mode.\n */\n @property({ type: Boolean, reflect: true, attribute: 'multi-select' })\n multiSelect: boolean = false;\n\n /**\n * When true, in single-select mode the currently selected segment can be\n * deselected by clicking it again (allowing an empty selection).\n * Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n nullable: boolean = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener(\n 'segmented-button--change',\n this._onSegmentChange as EventListener,\n );\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener(\n 'segmented-button--change',\n this._onSegmentChange as EventListener,\n );\n }\n\n private _getSegments(): SegmentedButton[] {\n return Array.from(this.querySelectorAll<SegmentedButton>('wc-segmented-button'));\n }\n\n private _onSegmentChange = (ev: CustomEvent) => {\n ev.stopPropagation();\n const target = ev.composedPath()[0] as SegmentedButton;\n const segments = this._getSegments();\n\n if (this.multiSelect) {\n target.selected = !target.selected;\n } else {\n if (target.selected && this.nullable) {\n target.selected = false;\n } else {\n segments.forEach(seg => {\n seg.selected = seg === target;\n });\n }\n }\n\n const selectedValues = segments\n .filter(s => s.selected)\n .map(s => s.value || s.textContent?.trim() || '');\n\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: {\n value: selectedValues[0] ?? null,\n values: selectedValues,\n },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n render() {\n return html`\n <div class=\"segmented-button-group\" role=\"group\">\n <slot></slot>\n </div>\n `;\n }\n}\n","import { LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './focus-ring.scss';\n\n/**\n * @label Focus Ring\n *\n * @tag wc-focus-ring\n * @rawTag focus-ring\n *\n * @summary Adds a focus ring to an element.\n *\n *\n * @tags display\n */\nexport class FocusRing extends LitElement {\n static styles = [styles];\n\n @property({ type: Boolean, reflect: true }) visible: boolean = false;\n\n @property({ type: String }) for = '';\n\n private __boundFocusin = this.__focusin.bind(this);\n\n private __boundFocusout = this.__focusout.bind(this);\n\n private __boundPointerdown = this.__pointerdown.bind(this);\n\n render() {\n return nothing;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.attach();\n }\n\n disconnectedCallback() {\n this.detach();\n super.disconnectedCallback();\n }\n\n updated(changed: Map<string, unknown>) {\n if (changed.has('for')) {\n const prevId = changed.get('for') as string;\n if (prevId) {\n const root = this.parentElement?.getRootNode() as ShadowRoot | Document;\n const prevEl = root?.getElementById(prevId) ?? document.getElementById(prevId);\n if (prevEl) {\n prevEl.removeEventListener('focusin', this.__boundFocusin);\n prevEl.removeEventListener('focusout', this.__boundFocusout);\n prevEl.removeEventListener('pointerdown', this.__boundPointerdown);\n }\n }\n this.attach();\n }\n }\n\n __focusin() {\n const focusTarget = this.__getFocusTarget();\n this.visible = focusTarget?.matches(':focus-visible') ?? false;\n }\n\n __focusout() {\n this.visible = false;\n }\n\n __pointerdown() {\n this.visible = false;\n }\n\n /**\n * Resolves the element that should receive focus-ring event listeners by id.\n * Prefers lookup from the current control's root node, then falls back to a\n * document-level lookup.\n *\n * @returns The resolved focus target, if one can be found.\n */\n __getFocusTarget(): HTMLElement | undefined {\n if (this.for) {\n const root = this.parentElement?.getRootNode() as ShadowRoot | Document;\n if (root) {\n const focusTarget = root.getElementById(this.for);\n if (focusTarget) {\n return focusTarget;\n }\n }\n const focusTarget = document.getElementById(this.for);\n if (focusTarget) {\n return focusTarget;\n }\n }\n\n return undefined;\n }\n\n attach() {\n const focusTarget = this.__getFocusTarget();\n if (focusTarget) {\n focusTarget.addEventListener('focusin', this.__boundFocusin);\n focusTarget.addEventListener('focusout', this.__boundFocusout);\n focusTarget.addEventListener('pointerdown', this.__boundPointerdown);\n }\n }\n\n detach() {\n const focusTarget = this.__getFocusTarget();\n if (focusTarget) {\n focusTarget.removeEventListener('focusin', this.__boundFocusin);\n focusTarget.removeEventListener('focusout', this.__boundFocusout);\n focusTarget.removeEventListener('pointerdown', this.__boundPointerdown);\n }\n }\n}\n","import { LitElement, html, css, PropertyValues } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nconst PRESS_GROW_MS = 450;\nconst MINIMUM_PRESS_MS = 225;\nconst INITIAL_ORIGIN_SCALE = 0.2;\nconst PADDING = 10;\nconst SOFT_EDGE_MINIMUM_SIZE = 75;\nconst SOFT_EDGE_CONTAINER_RATIO = 0.35;\nconst PRESS_PSEUDO = '::after';\nconst ANIMATION_FILL = 'forwards';\n\n/**\n * Interaction states for the ripple.\n *\n * On Touch:\n * - `INACTIVE -> TOUCH_DELAY -> WAITING_FOR_CLICK -> INACTIVE`\n *\n * On Mouse or Pen:\n * - `INACTIVE -> WAITING_FOR_CLICK -> INACTIVE`\n */\nenum State {\n /**\n * Initial state of the control, no touch in progress.\n *\n * Transitions:\n * - on touch down: transition to `TOUCH_DELAY`.\n * - on mouse down: transition to `WAITING_FOR_CLICK`.\n */\n INACTIVE,\n /**\n * Touch down has been received, waiting to determine if it's a swipe or\n * scroll.\n *\n * Transitions:\n * - on touch up: begin press; transition to `WAITING_FOR_CLICK`.\n * - on cancel: transition to `INACTIVE`.\n * - after `TOUCH_DELAY_MS`: begin press; transition to `HOLDING`.\n */\n TOUCH_DELAY,\n /**\n * A touch has been deemed to be a press\n *\n * Transitions:\n * - on up: transition to `WAITING_FOR_CLICK`.\n */\n HOLDING,\n /**\n * The user touch has finished, transition into rest state.\n *\n * Transitions:\n * - on click end press; transition to `INACTIVE`.\n */\n WAITING_FOR_CLICK,\n}\n\n/**\n * Events that the ripple listens to.\n */\nconst EVENTS = [\n 'click',\n 'contextmenu',\n 'pointercancel',\n 'pointerdown',\n 'pointerenter',\n 'pointerleave',\n 'pointerup',\n];\n\n/**\n * Delay reacting to touch so that we do not show the ripple for a swipe or\n * scroll interaction.\n */\nconst TOUCH_DELAY_MS = 150;\n\n/**\n * Used to detect if HCM is active. Events do not process during HCM when the\n * ripple is not displayed.\n */\nconst FORCED_COLORS = window.matchMedia('(forced-colors: active)');\n\n/**\n * @label Ripple\n * @tag wc-ripple\n * @rawTag ripple\n *\n * @summary Provides ripple effect for interactive elements.\n * @overview\n * <p>Ripple creates a visual feedback effect when users interact with buttons or other clickable elements.</p>\n *\n * @example\n * ```html\n * <style>\n * .ripple-surface {\n * position: relative;\n * display: inline-flex;\n * align-items: center;\n * justify-content: center;\n * width: 220px;\n * height: 64px;\n * border-radius: 12px;\n * background: var(--color-surface-container-high);\n * color: var(--color-on-surface);\n * overflow: hidden;\n * cursor: pointer;\n * user-select: none;\n * }\n * </style>\n * <div class=\"ripple-surface\">\n * <wc-ripple></wc-ripple>\n * Ripple Effect\n * </div>\n * ```\n * @tags display\n */\nexport class Ripple extends LitElement {\n static styles = css`\n :host {\n display: flex;\n margin: auto;\n pointer-events: none;\n }\n\n :host([disabled]) {\n display: none;\n }\n\n @media (forced-colors: active) {\n :host {\n display: none;\n }\n }\n\n :host,\n .surface {\n border-radius: inherit;\n corner-shape: inherit;\n position: absolute;\n inset: 0;\n overflow: hidden;\n }\n\n .surface {\n -webkit-tap-highlight-color: transparent;\n\n &::before,\n &::after {\n content: '';\n opacity: 0;\n position: absolute;\n }\n\n &::before {\n background-color: var(--ripple-pressed-color, var(--color-on-surface));\n inset: 0;\n transition: opacity 15ms linear, background-color 15ms linear;\n }\n\n &::after {\n background: radial-gradient(\n closest-side,\n var(--ripple-pressed-color, var(--color-on-surface)) max(calc(100% - 70px), 65%),\n transparent 100%\n );\n transform-origin: center center;\n transition: opacity 375ms linear;\n }\n }\n\n .hovered::before {\n opacity: 0.08;\n }\n\n .pressed::after {\n opacity: 0.12;\n transition-duration: 105ms;\n }\n `;\n\n /**\n * Disables the ripple.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @state() private hovered = false;\n \n @state() private pressed = false;\n\n @query('.surface') private readonly mdRoot!: HTMLElement | null;\n\n private rippleSize = '';\n\n private rippleScale = '';\n\n private initialSize = 0;\n\n private growAnimation?: Animation;\n\n private state = State.INACTIVE;\n\n private rippleStartEvent?: PointerEvent;\n\n override connectedCallback() {\n super.connectedCallback();\n // Needed for VoiceOver, which will create a \"group\" if the element is a\n // sibling to other content.\n this.setAttribute('aria-hidden', 'true');\n // Attach to parent\n this.attach(this.parentElement!);\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n this.detach();\n }\n\n attach(control: HTMLElement) {\n if (!control) return;\n EVENTS.forEach(event => {\n control.addEventListener(event, this.handleEvent.bind(this));\n });\n }\n\n detach() {\n const control = this.parentElement;\n if (!control) return;\n EVENTS.forEach(event => {\n control.removeEventListener(event, this.handleEvent.bind(this));\n });\n }\n\n protected override render() {\n const classes = {\n 'hovered': this.hovered,\n 'pressed': this.pressed,\n };\n\n return html`<div class=\"surface ${classMap(classes)}\"></div>`;\n }\n\n protected override update(changedProps: PropertyValues<Ripple>) {\n if (changedProps.has('disabled') && this.disabled) {\n this.hovered = false;\n this.pressed = false;\n }\n super.update(changedProps);\n }\n\n handlePointerenter(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.hovered = true;\n }\n\n handlePointerleave(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.hovered = false;\n\n // release a held mouse or pen press that moves outside the element\n if (this.state !== State.INACTIVE) {\n this.endPressAnimation();\n }\n }\n\n private handlePointerup(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n if (this.state === State.HOLDING) {\n this.state = State.WAITING_FOR_CLICK;\n return;\n }\n\n if (this.state === State.TOUCH_DELAY) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(this.rippleStartEvent);\n return;\n }\n }\n\n private async handlePointerdown(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.rippleStartEvent = event;\n if (!this.isTouch(event)) {\n this.state = State.WAITING_FOR_CLICK;\n this.startPressAnimation(event);\n return;\n }\n\n // Wait for a hold after touch delay\n this.state = State.TOUCH_DELAY;\n await new Promise((resolve) => {\n setTimeout(resolve, TOUCH_DELAY_MS);\n });\n\n if (this.state !== State.TOUCH_DELAY) {\n return;\n }\n\n this.state = State.HOLDING;\n this.startPressAnimation(event);\n }\n\n private handleClick() {\n if (this.disabled) {\n return;\n }\n\n if (this.state === State.WAITING_FOR_CLICK) {\n this.endPressAnimation();\n return;\n }\n\n if (this.state === State.INACTIVE) {\n // keyboard synthesized click event\n this.startPressAnimation();\n this.endPressAnimation();\n }\n }\n\n private handlePointercancel(event: PointerEvent) {\n if (!this.shouldReactToEvent(event)) {\n return;\n }\n\n this.endPressAnimation();\n }\n\n private handleContextmenu() {\n if (this.disabled) {\n return;\n }\n\n this.endPressAnimation();\n }\n\n private determineRippleSize() {\n const { height, width } = this.getBoundingClientRect();\n const maxDim = Math.max(height, width);\n const softEdgeSize = Math.max(\n SOFT_EDGE_CONTAINER_RATIO * maxDim,\n SOFT_EDGE_MINIMUM_SIZE,\n );\n\n const initialSize = Math.floor(maxDim * INITIAL_ORIGIN_SCALE);\n const hypotenuse = Math.sqrt(width ** 2 + height ** 2);\n const maxRadius = hypotenuse + PADDING;\n\n this.initialSize = initialSize;\n const maybeZoomedScale = (maxRadius + softEdgeSize) / initialSize;\n this.rippleScale = `${maybeZoomedScale}`;\n this.rippleSize = `${initialSize}px`;\n }\n\n private getTranslationCoordinates(positionEvent?: Event) {\n const { height, width } = this.getBoundingClientRect();\n // end in the center\n const endPoint = {\n x: (width - this.initialSize) / 2,\n y: (height - this.initialSize) / 2,\n };\n\n let startPoint;\n if (positionEvent instanceof PointerEvent) {\n startPoint = this.getNormalizedPointerEventCoords(positionEvent);\n } else {\n startPoint = {\n x: width / 2,\n y: height / 2,\n };\n }\n\n // center around start point\n startPoint = {\n x: startPoint.x - this.initialSize / 2,\n y: startPoint.y - this.initialSize / 2,\n };\n\n return { startPoint, endPoint };\n }\n\n private startPressAnimation(positionEvent?: Event) {\n if (!this.mdRoot) {\n return;\n }\n\n this.pressed = true;\n this.growAnimation?.cancel();\n this.determineRippleSize();\n const { startPoint, endPoint } =\n this.getTranslationCoordinates(positionEvent);\n const translateStart = `${startPoint.x}px, ${startPoint.y}px`;\n const translateEnd = `${endPoint.x}px, ${endPoint.y}px`;\n\n this.growAnimation = this.mdRoot.animate(\n {\n top: [0, 0],\n left: [0, 0],\n height: [this.rippleSize, this.rippleSize],\n width: [this.rippleSize, this.rippleSize],\n transform: [\n `translate(${translateStart}) scale(1)`,\n `translate(${translateEnd}) scale(${this.rippleScale})`,\n ],\n },\n {\n pseudoElement: PRESS_PSEUDO,\n duration: PRESS_GROW_MS,\n easing: 'cubic-bezier(0.2, 0, 0, 1)',\n fill: ANIMATION_FILL,\n },\n );\n }\n\n private async endPressAnimation() {\n this.rippleStartEvent = undefined;\n this.state = State.INACTIVE;\n const animation = this.growAnimation;\n let pressAnimationPlayState = Infinity;\n if (typeof animation?.currentTime === 'number') {\n pressAnimationPlayState = animation.currentTime;\n } else if (animation?.currentTime) {\n pressAnimationPlayState = animation.currentTime.to('ms').value;\n }\n\n if (pressAnimationPlayState >= MINIMUM_PRESS_MS) {\n this.pressed = false;\n return;\n }\n\n await new Promise((resolve) => {\n setTimeout(resolve, MINIMUM_PRESS_MS - pressAnimationPlayState);\n });\n\n if (this.growAnimation !== animation) {\n // A new press animation was started. The old animation was canceled and\n // should not finish the pressed state.\n return;\n }\n\n this.pressed = false;\n }\n\n /**\n * Returns `true` if\n * - the ripple element is enabled\n * - the pointer is primary for the input type\n * - the pointer is the pointer that started the interaction, or will start\n * the interaction\n * - the pointer is a touch, or the pointer state has the primary button\n * held, or the pointer is hovering\n */\n private shouldReactToEvent(event: PointerEvent) {\n if (this.disabled || !event.isPrimary) {\n return false;\n }\n\n if (\n this.rippleStartEvent &&\n this.rippleStartEvent.pointerId !== event.pointerId\n ) {\n return false;\n }\n\n if (event.type === 'pointerenter' || event.type === 'pointerleave') {\n return !this.isTouch(event);\n }\n\n const isPrimaryButton = event.buttons === 1;\n return this.isTouch(event) || isPrimaryButton;\n }\n\n private isTouch({ pointerType }: PointerEvent) {\n return pointerType === 'touch';\n }\n\n async handleEvent(event: Event) {\n if (FORCED_COLORS?.matches) {\n // Skip event logic since the ripple is `display: none`.\n return;\n }\n\n switch (event.type) {\n case 'click':\n this.handleClick();\n break;\n case 'contextmenu':\n this.handleContextmenu();\n break;\n case 'pointercancel':\n this.handlePointercancel(event as PointerEvent);\n break;\n case 'pointerdown':\n await this.handlePointerdown(event as PointerEvent);\n break;\n case 'pointerenter':\n this.handlePointerenter(event as PointerEvent);\n break;\n case 'pointerleave':\n this.handlePointerleave(event as PointerEvent);\n break;\n case 'pointerup':\n this.handlePointerup(event as PointerEvent);\n break;\n default:\n break;\n }\n }\n\n private getNormalizedPointerEventCoords(pointerEvent: PointerEvent): {\n x: number;\n y: number;\n } {\n const { scrollX, scrollY } = window;\n const { left, top } = this.getBoundingClientRect();\n const documentX = scrollX + left;\n const documentY = scrollY + top;\n const { pageX, pageY } = pointerEvent;\n return {\n x: pageX - documentX,\n y: pageY - documentY,\n };\n }\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './accordion-item.scss';\n\n/**\n * @label Accordion Item\n * @tag wc-accordion-item\n * @rawTag accordion-item\n * @summary An expansion panel with a header that reveals or hides associated content. Follows Material Design 3 expansion panel guidelines.\n * @parentRawTag accordion\n *\n * @slot - The body content revealed when the panel is expanded.\n * @slot heading - The panel title. Renders as `body-large` text.\n * @slot description - Optional subtitle rendered below the title. Renders as `body-small` text.\n * @slot header-actions - Actions (e.g. icon buttons) placed at the trailing end of the header, before the toggle icon.\n *\n * @part header - The header `<button>` element.\n * @part title - The title text container.\n * @part description - The description text container.\n * @part content - The expandable content region wrapper.\n *\n * @fires {CustomEvent<{ open: boolean }>} accordion-item:toggle - Fired when the panel is expanded or collapsed.\n *\n * @example\n * ```html\n * <wc-accordion-item>\n * <span slot=\"heading\">Personal information</span>\n * <span slot=\"description\">Fill in your details</span>\n * <p>Content goes here.</p>\n * </wc-accordion-item>\n * ```\n * @tags display\n */\nexport class AccordionItem extends LitElement {\n static styles = [styles];\n\n #id = crypto.randomUUID();\n\n /**\n * Whether the user cannot interact with the panel.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Whether the panel is expanded.\n */\n @property({ type: Boolean, reflect: true })\n open: boolean = false;\n\n /**\n * Whether to hide the expand/collapse toggle indicator icon.\n */\n @property({ type: Boolean, reflect: true, attribute: 'hide-toggle' })\n hideToggle: boolean = false;\n\n /**\n * Position of the toggle icon relative to the panel title.\n * `'after'` places it at the trailing end (default, matches M3).\n * `'before'` places it at the leading start.\n */\n @property({ type: String, reflect: true, attribute: 'toggle-position' })\n togglePosition: 'before' | 'after' = 'after';\n\n @state()\n private _hasDescriptionSlot = false;\n\n @state()\n private _hasHeadingSlot = false;\n\n @query('.header-button')\n private readonly buttonElement!: HTMLElement | null;\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n this.buttonElement?.blur();\n }\n\n private _handleToggle() {\n if (this.disabled) return;\n this.open = !this.open;\n this.dispatchEvent(\n new CustomEvent('accordion-item:toggle', {\n bubbles: true,\n composed: true,\n detail: { open: this.open },\n }),\n );\n }\n\n private static _onSlotChange(e: Event, setter: (v: boolean) => void) {\n const slot = e.target as HTMLSlotElement;\n const nodes = slot.assignedNodes({ flatten: true });\n setter(\n nodes.some(n =>\n n.nodeType === Node.TEXT_NODE\n ? (n.textContent?.trim() ?? '') !== ''\n : true,\n ),\n );\n }\n\n private _renderToggleIcon() {\n if (this.hideToggle) return nothing;\n return html`<wc-icon\n class=\"toggle-icon\"\n name=\"keyboard_arrow_down\"\n aria-hidden=\"true\"\n ></wc-icon>`;\n }\n\n render() {\n return html`\n <div\n class=${classMap({\n 'expansion-panel': true,\n open: this.open,\n disabled: this.disabled,\n })}\n >\n <button\n id=${`panel-header-${this.#id}`}\n part=\"header\"\n class=\"header-button\"\n tabindex=${this.disabled ? '-1' : '0'}\n aria-controls=${`panel-content-${this.#id}`}\n aria-disabled=${this.disabled}\n aria-expanded=${this.open}\n ?disabled=${this.disabled}\n @click=${this._handleToggle}\n >\n ${this.togglePosition === 'before' ? this._renderToggleIcon() : nothing}\n <span class=\"header-label\">\n <span part=\"title\" class=\"panel-title\">\n <slot\n name=\"heading\"\n @slotchange=${(e: Event) => AccordionItem._onSlotChange(e, v => { this._hasHeadingSlot = v; })}\n ></slot>\n </span>\n <span\n part=\"description\"\n class=\"panel-description\"\n ?hidden=${!this._hasDescriptionSlot}\n >\n <slot\n name=\"description\"\n @slotchange=${(e: Event) => AccordionItem._onSlotChange(e, v => { this._hasDescriptionSlot = v; })}\n ></slot>\n </span>\n </span>\n <slot name=\"header-actions\" class=\"header-actions\"></slot>\n ${this.togglePosition === 'after' ? this._renderToggleIcon() : nothing}\n </button>\n <div\n id=${`panel-content-${this.#id}`}\n part=\"content\"\n class=\"panel-content\"\n role=\"region\"\n aria-labelledby=${`panel-header-${this.#id}`}\n >\n <div class=\"content-inner\">\n <slot></slot>\n </div>\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\nimport styles from './accordion.scss';\nimport { AccordionItem } from './accordion-item.js';\n\n/**\n * @label Accordion\n * @tag wc-accordion\n * @rawTag accordion\n * @summary A vertically stacked set of expansion panels. Follows Material Design 3 expansion panel guidelines.\n *\n * @example\n * ```html\n * <wc-accordion>\n * <wc-accordion-item>\n * <span slot=\"heading\">Panel 1</span>\n * <span slot=\"description\">Summary text</span>\n * Content\n * </wc-accordion-item>\n * <wc-accordion-item>\n * <span slot=\"heading\">Panel 2</span>\n * Content\n * </wc-accordion-item>\n * </wc-accordion>\n * ```\n * @tags display\n */\nexport class Accordion extends LitElement {\n static styles = [styles];\n\n /**\n * Whether multiple panels can be expanded simultaneously.\n * When `false` (default), expanding one panel collapses all others.\n */\n @property({ type: Boolean, reflect: true })\n multi = false;\n\n /**\n * Display mode for the accordion.\n * `'default'` renders panels with a subtle background on expand and dividers between items.\n * `'flat'` renders panels without borders or background changes — suitable for use inside cards.\n */\n @property({ type: String, reflect: true, attribute: 'display-mode' })\n displayMode: 'default' | 'flat' = 'default';\n\n @queryAssignedElements({ selector: 'wc-accordion-item' })\n items!: Array<AccordionItem>;\n\n connectedCallback() {\n super.connectedCallback();\n // @ts-ignore\n // eslint-disable-next-line wc/require-listener-teardown\n this.addEventListener('accordion-item:toggle', this._onItemToggle);\n this.addEventListener('keydown', this._onKeyDown);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n // @ts-ignore\n this.removeEventListener('accordion-item:toggle', this._onItemToggle);\n this.removeEventListener('keydown', this._onKeyDown);\n }\n\n private _onItemToggle(e: CustomEvent) {\n const targetItem = e.target as AccordionItem;\n\n // Ignore events from nested accordions — only handle direct children\n if (targetItem.parentElement !== this) return;\n\n if (!this.multi && targetItem.open) {\n this.items.forEach(item => {\n if (item !== targetItem && item.open) {\n // eslint-disable-next-line no-param-reassign\n item.open = false;\n }\n });\n }\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n const focusedItemIndex = this.items.findIndex(item => {\n const root = item.shadowRoot;\n return root?.activeElement?.classList.contains('header-button');\n });\n\n if (focusedItemIndex === -1) return;\n\n let nextIndex = -1;\n\n // eslint-disable-next-line default-case\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n nextIndex = (focusedItemIndex + 1) % this.items.length;\n break;\n case 'ArrowUp':\n e.preventDefault();\n nextIndex =\n (focusedItemIndex - 1 + this.items.length) % this.items.length;\n break;\n case 'Home':\n e.preventDefault();\n nextIndex = 0;\n break;\n case 'End':\n e.preventDefault();\n nextIndex = this.items.length - 1;\n break;\n }\n\n if (nextIndex !== -1) {\n const itemToFocus = this.items[nextIndex];\n const button = itemToFocus.shadowRoot?.querySelector(\n '.header-button',\n ) as HTMLElement;\n button?.focus();\n }\n }\n\n render() {\n return html`<div class=\"accordion\"><slot></slot></div>`;\n }\n\n static Item = AccordionItem;\n}\n","import { html, LitElement } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport BaseHyperlinkMixin from '../__mixins/BaseHyperlinkMixin.js';\nimport styles from './link.scss';\n\n/**\n * @label Link\n * @tag wc-link\n * @rawTag link\n * @summary The link component is used to navigate to a new page or section within the current page.\n * @cssprop --link-color - Controls the color of the link.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-link href=\"#\">Link</wc-link>\n * ```\n */\nexport class Link extends BaseHyperlinkMixin(LitElement) {\n static styles = [styles];\n\n render() {\n return html`<a\n class=${classMap({\n link: true,\n })}\n href=${this.href}\n target=${this.target}\n ?tabindex=${this.parentElement?.tabIndex}\n >\n <slot></slot>\n </a>`;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './tag.scss';\nimport colorStyles from './tag-colors.scss';\nimport sizeStyles from './tag-sizes.scss';\n\n/**\n * @label Tag\n * @tag wc-tag\n * @rawTag tag\n * @summary Tag component for displaying labels or values with optional dismiss functionality.\n * @tags display\n *\n * @example\n * ```html\n * <wc-tag color=\"red\">Tag</wc-tag>\n * ```\n */\nexport class Tag extends LitElement {\n // Define styles (Lit handles Scoping via Shadow DOM by default)\n // You would typically import your tag.scss.js here or use the css tag\n static styles = [styles, colorStyles, sizeStyles];\n\n /** If true, the tag will have a close icon. */\n @property({ type: Boolean }) dismissible = false;\n\n @property() variant: 'elevated' | 'filled' | 'tonal' | 'outlined' = 'tonal';\n\n /** Tag color. */\n @property({ type: String, reflect: true }) color?:\n | 'default'\n | 'blue'\n | 'green'\n | 'red'\n | 'yellow' = 'default';\n\n @property() size?: 'sm' | 'md' = 'md';\n\n private _dismissClickHandler(e: MouseEvent) {\n e.stopPropagation();\n\n // Custom Event: tag--dismiss\n this.dispatchEvent(\n new CustomEvent('tag--dismiss', {\n bubbles: true,\n }),\n );\n }\n\n private __renderDismissButton() {\n if (!this.dismissible) return null;\n\n return html`\n <button\n class=\"dismiss-button\"\n @click=${this._dismissClickHandler}\n aria-label=\"Dismiss\"\n >\n <wc-ripple class=\"ripple\"></wc-ripple>\n <wc-icon class=\"dismiss-button-icon\" name=\"close\"></wc-icon>\n </button>\n `;\n }\n\n render() {\n const classes = {\n tag: true,\n dismissible: this.dismissible,\n [`color-${this.color}`]: true,\n [`variant-${this.variant}`]: true,\n [`size-${this.size}`]: true,\n };\n\n return html`\n <div class=\"${classMap(classes)}\">\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n\n <div class=\"tag-content\">\n <slot name=\"icon\"></slot>\n\n <div class=\"slot-content\">\n <slot></slot>\n </div>\n ${this.__renderDismissButton()}\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './chip.scss';\nimport colorStyles from './chip-colors.scss';\nimport sizeStyles from './chip-sizes.scss';\n\n/**\n * @label Chip\n * @tag wc-chip\n * @rawTag chip\n * @summary Chip component for displaying compact information with optional actions.\n * @tags display\n *\n * @example\n * ```html\n * <wc-chip>Chip content</wc-chip>\n * ```\n */\nexport class Chip extends LitElement {\n // Define styles (Lit handles Scoping via Shadow DOM by default)\n // You would typically import your tag.scss.js here or use the css tag\n static styles = [styles, colorStyles, sizeStyles];\n\n /** If true, the tag will have a close icon. */\n @property({ type: Boolean }) dismissible = false;\n\n /** Tag color. */\n @property({ type: String, reflect: true }) color?:\n | 'default'\n | 'blue'\n | 'green'\n | 'red'\n | 'yellow' = 'default';\n\n /** Tag value. */\n @property({ type: String, reflect: true }) value = '';\n\n /** If true, the tag will be selected. */\n @property({ type: Boolean, reflect: true }) selected = false;\n\n /** Image source. */\n @property({ type: String }) imageSrc?: string;\n\n private _dismissClickHandler(e: MouseEvent) {\n e.stopPropagation();\n const detail = { value: this.value || this.textContent?.trim() };\n\n // Custom Event: tag--dismiss\n this.dispatchEvent(\n new CustomEvent('tag--dismiss', {\n detail,\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderCloseButton() {\n if (!this.dismissible) return null;\n\n return html`\n <button\n class=\"close-btn\"\n @click=${this._dismissClickHandler}\n aria-label=\"Dismiss\"\n >\n <wc-icon class=\"close-btn-icon\" name=\"close\"></wc-icon>\n </button>\n `;\n }\n\n private _renderImage() {\n if (this.imageSrc)\n return html`<img\n src=${this.imageSrc}\n class=\"tag-image\"\n alt=\"Tag Logo\"\n />`;\n return nothing;\n }\n\n render() {\n const classes = {\n chip: true,\n selected: this.selected,\n dismissible: this.dismissible,\n [`color-${this.color}`]: true,\n };\n\n return html`\n <div class=\"${classMap(classes)}\">\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n\n <div class=\"tag-content\">\n <slot name=\"icon\"></slot>\n <slot></slot>\n ${this._renderCloseButton()}\n </div>\n </div>\n `;\n }\n}\n","import { LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\n\nexport class BaseProgress extends LitElement {\n /** The current value. */\n @property({ type: Number }) value?: number;\n\n @property({ type: Boolean }) indeterminate = false;\n\n /** A label describing the progress bar. */\n @property({ type: String }) label?: string;\n\n @property({ type: String, attribute: 'helper-text' }) helperText?: string;\n\n @property({ type: Boolean }) inline = false;\n\n __getPercentageValue(): number {\n if (!this.value) return 0;\n return this.value;\n }\n}\n","import { html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport styles from './linear-progress.scss';\nimport { BaseProgress } from '../base-progress.js';\n\n/**\n * @label Linear Progress\n * @tag wc-linear-progress\n * @rawTag linear-progress\n * @summary A linear progress indicator is a visual representation of progress toward a specific goal.\n * @tags display\n *\n * @example\n * ```html\n * <wc-linear-progress value=\"30\" style=\"width:10rem\"></wc-linear-progress>\n * ```\n */\nexport class LinearProgress extends BaseProgress {\n // Lit components use static styles for better performance\n static styles = [styles];\n\n render() {\n return html`\n <div\n class=\"${classMap({\n 'linear-progress': true,\n indeterminate: this.indeterminate,\n inline: this.inline,\n })}\"\n >\n ${this.label\n ? html`<div class=\"progress-header\">\n <label class=\"progress-label\">${this.label}</label>\n </div>`\n : ''}\n\n <div class=\"progress-body\">\n <div\n class=\"linear-progress-container\"\n title=${this.label}\n ?aria-valuenow=\"${this.__getPercentageValue()}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n >\n <div class=\"track track-start\"></div>\n <div\n class=\"active-indicator\"\n style=\"${styleMap({\n width: `${this.__getPercentageValue()}%`,\n })}\"\n ></div>\n <div class=\"track track-end\"></div>\n </div>\n\n ${this.helperText\n ? html`<div class=\"progress-helper\">${this.helperText}</div>`\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import { html } from 'lit';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport styles from './circular-progress.scss';\nimport { BaseProgress } from '../base-progress.js';\n\n/**\n * @label Circular Progress\n * @tag wc-circular-progress\n * @rawTag circular-progress\n * @summary A circular progress indicator is a visual representation of progress toward a specific goal.\n * @tags display\n *\n * @example\n * ```html\n * <wc-circular-progress value=\"30\"></wc-circular-progress>\n * ```\n */\nexport class CircularProgress extends BaseProgress {\n // Lit components use static styles for better performance\n static styles = [styles];\n\n render() {\n const percentage = this.__getPercentageValue();\n // Radius of 18 with stroke 4 fits nicely in a 40x40 viewBox\n const radius = 6;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n return html`\n <div\n class=\"${classMap({\n 'circular-progress': true,\n indeterminate: this.indeterminate,\n inline: this.inline,\n })}\"\n title=${this.label}\n role=\"progressbar\"\n aria-valuenow=\"${this.indeterminate ? undefined : percentage}\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div class=\"circular-progress-container\">\n <svg viewBox=\"0 0 16 16\">\n <circle class=\"track\" cx=\"8\" cy=\"8\" r=\"6\"></circle>\n <circle\n class=\"active-indicator\"\n cx=\"8\"\n cy=\"8\"\n r=\"6\"\n style=\"${styleMap({\n strokeDasharray: `${circumference}`,\n strokeDashoffset: this.indeterminate ? undefined : `${offset}`,\n })}\"\n ></circle>\n </svg>\n </div>\n\n <div class=\"progress-footer\">\n ${this.label\n ? html`<div class=\"progress-label\">${this.label}</div>`\n : ''}\n ${this.helperText\n ? html`<div class=\"progress-helper\">${this.helperText}</div>`\n : ''}\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './skeleton.scss';\n\n/**\n * @label Skeleton\n * @tag wc-skeleton\n * @rawTag skeleton\n * @summary Adds a skeleton effect to an element.\n * @tags display\n *\n * @example\n * ```html\n * <wc-skeleton visible></wc-skeleton>\n * ```\n */\nexport class Skeleton extends LitElement {\n static styles = [styles];\n\n @property({ type: Boolean, reflect: true }) visible: boolean = false;\n\n render() {\n return html` <div class=\"skeleton\"></div>`;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport BaseInput from './BaseInput.js';\nimport styles from './input.scss';\n\n/**\n * @label Input\n * @tag wc-input\n * @rawTag input\n *\n * @summary The Input component is used to capture user input.\n *\n * @example\n * ```html\n * <wc-input label=\"Name\" required placeholder=\"Enter your name\"></wc-input>\n * ```\n */\nexport class Input extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) type: 'text' | 'password' | 'email' | 'tel' =\n 'text';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n const displayType =\n this.type === 'password' && this.passwordVisible ? 'text' : this.type;\n\n return html`\n <wc-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=${displayType}\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n ${this.type === 'password'\n ? html`\n <pc-tooltip\n slot=\"field-end\"\n content=${this.passwordVisible\n ? 'Hide password'\n : 'Show password'}\n >\n <wc-icon-button\n class=\"password-toggle\"\n variant=\"text\"\n @click=${() => {\n this.passwordVisible = !this.passwordVisible;\n }}\n >\n <wc-icon\n name=${this.passwordVisible ? 'visibility_off' : 'visibility'}\n ></wc-icon>\n </wc-icon-button>\n </pc-tooltip>\n `\n : nothing}\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n </wc-field>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\n\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './url-field.scss';\n\n/**\n * @label URL Field\n * @tag wc-url-field\n * @rawTag url-field\n *\n * @summary A field for entering and displaying URLs with validation.\n * @overview\n * <p>URL Field wraps an input with URL validation, showing a clickable link preview when not in edit mode.</p>\n *\n * @example\n * ```html\n * <wc-url-field label=\"Website\" value=\"https://example.com\"></wc-url-field>\n * ```\n * @tags form\n */\nexport class UrlField extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value: string = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String })\n placeholder: string = '';\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: Boolean, reflect: true })\n editing: boolean = false;\n\n @property({ type: Number })\n debounce: number = 300;\n\n @property({ type: String, reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused: boolean = false;\n\n @state()\n private isValid: boolean = true;\n\n @query('.url-input')\n private inputElement?: HTMLInputElement;\n\n private debounceTimer?: ReturnType<typeof setTimeout>;\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n }\n\n override focus() {\n if (!this.editing && !this.disabled && !this.readonly) {\n this.startEditing();\n return;\n }\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private startEditing() {\n if (this.disabled || this.readonly) return;\n this.editing = true;\n setTimeout(() => this.inputElement?.focus(), 80);\n }\n\n private closeEditing() {\n this.isValid = this.validateUrl(this.value);\n this.dispatchEvent(\n new CustomEvent('input-invalid', {\n detail: !this.isValid,\n bubbles: true,\n composed: true,\n }),\n );\n\n if (this.isValid) {\n this.editing = false;\n }\n }\n\n private validateUrl(url: string): boolean {\n if (!url) return true;\n\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n }\n\n private handleInput(event: InputEvent) {\n this.value = (event.target as HTMLInputElement).value;\n this.isValid = true;\n\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n }\n\n this.debounceTimer = setTimeout(() => {\n this.dispatchEvent(\n new CustomEvent('value-change', {\n detail: this.value,\n bubbles: true,\n composed: true,\n }),\n );\n }, this.debounce);\n }\n\n private handleFocusChange() {\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private handleBlur() {\n this.focused = false;\n this.closeEditing();\n }\n\n private handleChange(event: Event) {\n redispatchEvent(this, event);\n }\n\n private renderDisplayValue() {\n if (!this.value) {\n return html`<span class=\"url-placeholder\">${this.placeholder}</span>`;\n }\n\n return html`\n <a\n class=\"url-link\"\n href=${this.value}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n ${this.value}\n </a>\n `;\n }\n\n render() {\n const hasValue = !!this.value;\n const showInvalidState = this.error || !this.isValid;\n const resolvedErrorText = !this.isValid\n ? 'Please enter a valid URL'\n : this.errorText;\n\n return html`\n <wc-field\n label=${this.label}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${showInvalidState}\n error-text=${resolvedErrorText}\n ?warning=${this.warning}\n warning-text=${this.warningText}\n variant=${this.variant}\n ?populated=${hasValue || this.editing}\n ?focused=${this.focused}\n .host=${this}\n class=\"url-field-wrapper\"\n >\n ${this.editing\n ? html`\n <input\n class=\"url-input\"\n name=${this.name}\n type=\"url\"\n placeholder=${this.placeholder}\n .value=${this.value}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.handleInput}\n @change=${this.handleChange}\n @focus=${this.handleFocusChange}\n @blur=${this.handleBlur}\n />\n `\n : html`<div class=\"url-display\">${this.renderDisplayValue()}</div>`}\n\n ${!this.editing && !this.disabled && !this.readonly\n ? html`\n <wc-icon-button\n class=\"edit-button\"\n slot=\"field-end\"\n variant=\"text\"\n @click=${(event: MouseEvent) => {\n event.stopPropagation();\n this.startEditing();\n }}\n >\n <wc-icon name=\"edit\"></wc-icon>\n </wc-icon-button>\n `\n : nothing}\n </wc-field>\n `;\n }\n}","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { observerSlotChangesWithCallback } from '@/__utils/observe-slot-change.js';\n\nimport styles from './field.scss';\n\n/**\n * @label Field\n * @tag wc-field\n * @rawTag field\n *\n * @summary Wrapper for form fields with label and help text.\n * @overview\n * <p>Field provides consistent styling and behavior for form inputs.</p>\n *\n * @example\n * ```html\n * <wc-field label=\"Name\" required>\n * some text\n * </wc-field>\n * ```\n * @tags form\n */\nexport class Field extends LitElement {\n static styles = [styles];\n\n @property({ type: String })\n label: string = '';\n\n @property({ type: String })\n help: string = '';\n\n @property({ type: Boolean })\n required: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n\n @property({ type: Boolean })\n skeleton: boolean = false;\n\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @property({ type: String, attribute: 'text-count' })\n textCount: string = '';\n\n @property({ type: Boolean })\n focused: boolean = false;\n\n @property({ type: Boolean })\n populated: boolean = false;\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n @property({ type: Object })\n host?: HTMLElement;\n\n @state()\n slotStartHasContent: boolean = false;\n\n @state()\n slotEndHasContent: boolean = false;\n\n firstUpdated() {\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('.slot-start-wrapper slot'),\n hasContent => {\n this.slotStartHasContent = hasContent;\n this.requestUpdate();\n },\n );\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('.slot-end-wrapper slot'),\n hasContent => {\n this.slotEndHasContent = hasContent;\n this.requestUpdate();\n },\n );\n }\n\n __handleClick() {\n // @ts-ignore\n this.host?.focus?.();\n }\n\n __renderInputSlot() {\n if (this.variant === 'outlined') {\n if (this.populated || this.focused) return html`<slot></slot>`;\n return html`\n <label class=\"outlined-label\">${this.label}</label>\n <div class=\"outlined-slot-container\">\n <slot></slot>\n </div>\n `;\n }\n return html`<slot></slot>`;\n }\n\n __renderFieldHeader() {\n if (!this.label) return nothing;\n if (this.variant === 'outlined' && !this.populated && !this.focused) {\n return nothing;\n }\n return html`<div class=\"field-header\">\n <label class=\"label\">\n ${this.label}${this.required\n ? html`<span class=\"required\">*</span>`\n : nothing}\n <wc-skeleton class=\"skeleton\"></wc-skeleton>\n </label>\n </div>`;\n }\n\n render() {\n const classes = {\n field: true,\n required: this.required,\n disabled: this.disabled,\n 'show-skeleton': this.skeleton,\n 'has-error': this.error,\n 'has-warning': this.warning,\n focused: this.focused,\n readonly: this.readonly,\n [`variant-${this.variant}`]: true,\n populated: this.populated,\n };\n\n return html`\n <div class=${classMap(classes)}>\n ${this.__renderFieldHeader()}\n\n <div class=\"field-body\" @click=${this.__handleClick}>\n <div class=\"outline\"></div>\n <div class=\"background\"></div>\n <wc-skeleton class=\"skeleton\"></wc-skeleton>\n\n <div class=\"field-content\">\n <div\n class=${classMap({\n 'slot-start-wrapper': true,\n 'has-content': this.slotStartHasContent,\n })}\n >\n <slot name=\"field-start\"></slot>\n </div>\n\n <div class=\"input-wrapper\">${this.__renderInputSlot()}</div>\n\n <div\n class=${classMap({\n 'slot-end-wrapper': true,\n 'has-content': this.slotEndHasContent,\n })}\n >\n <slot name=\"field-end\"></slot>\n </div>\n </div>\n </div>\n\n ${this.__renderFieldFooter()}\n </div>\n `;\n }\n\n __renderFieldFooter() {\n if (\n !this.textCount &&\n !this.helperText &&\n !this.errorText &&\n !this.warningText\n )\n return nothing;\n return html`<div class=\"field-footer\">\n ${this.__renderHelperText()} ${this.__renderWordCount()}\n </div>`;\n }\n\n __renderHelperText() {\n if (this.error) return html`<div class=\"helper\">${this.errorText}</div>`;\n if (this.warning)\n return html`<div class=\"helper\">${this.warningText}</div>`;\n if (this.helperText || this.helperText === '')\n return html`<div class=\"helper\">${this.helperText}</div>`;\n return nothing;\n }\n\n __renderWordCount() {\n if (!this.textCount) return nothing;\n return html`<div class=\"text-count\">${this.textCount}</div>`;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './number-field.scss';\n\n/**\n * @label Number Field\n * @tag number-field\n * @rawTag number\n *\n * @summary The Number Field component is used to capture numeric user input.\n *\n * @example\n * ```html\n * <wc-number-field label=\"Age\" placeholder=\"Enter your age\"></wc-number-field>\n * ```\n */\nexport class NumberField extends BaseInput {\n static styles = [styles];\n\n #id: string = crypto.randomUUID();\n\n @property({ type: Number })\n value?: number;\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String })\n placeholder = '';\n\n @property({ type: String })\n label = '';\n\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n @property({ type: String, reflect: true })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: Number })\n max?: number;\n\n @property({ type: Number })\n min?: number;\n\n @property({ type: Number })\n step?: number;\n\n @property({ type: String })\n autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @property({ type: Boolean })\n stepper: boolean = false;\n\n @state()\n private focused = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = Number((event.target as HTMLInputElement).value);\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n private stepUp() {\n this.inputElement?.stepUp();\n }\n\n private stepDown() {\n this.inputElement?.stepDown();\n }\n\n render() {\n const classes = {\n 'input-wrapper': true,\n stepper: this.stepper,\n };\n\n return html`\n <wc-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=${classMap(classes)}\n >\n ${this.stepper && !this.disabled\n ? html`<wc-icon-button\n class=\"stepper\"\n variant=\"text\"\n slot=\"field-start\"\n @click=${this.stepDown}\n >\n <wc-icon name=\"remove\"></wc-icon>\n </wc-icon-button>`\n : nothing}\n\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"number\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n min=${this.min}\n max=${this.max}\n step=${this.step}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n ${this.stepper && !this.disabled\n ? html`<wc-icon-button\n class=\"stepper\"\n variant=\"text\"\n slot=\"field-end\"\n @click=${this.stepUp}\n >\n <wc-icon name=\"add\"></wc-icon>\n </wc-icon-button>`\n : nothing}\n </wc-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './date-picker.scss';\n\n\n/**\n * @label Date Picker\n * @tag wc-date-picker\n * @rawTag date-picker\n * @summary The Date Picker component is used to capture date user input.\n * @tags input\n *\n * @example\n * ```html\n * <wc-date-picker label=\"Date\" placeholder=\"Select a date\"></wc-date-picker>\n * ```\n */\nexport class DatePicker extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <wc-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"date\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n <wc-icon-button\n slot=\"field-end\"\n color=\"secondary\"\n variant=\"text\"\n ?disabled=${this.disabled}\n @click=${() => {\n setTimeout(() => {\n // @ts-ignore\n this.inputElement.showPicker();\n });\n }}\n >\n <wc-icon name=\"calendar_today\"></wc-icon>\n </wc-icon-button>\n </wc-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './time-picker.scss';\n\n/**\n * @label Time Picker\n * @tag wc-time-picker\n * @rawTag time-picker\n * @summary The Time Picker component is used to capture time user input.\n * @tags input\n *\n * @example\n * ```html\n * <wc-time-picker label=\"Time\" placeholder=\"Select a time\"></wc-time-picker>\n * ```\n */\nexport class TimePicker extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <wc-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <input\n class=\"input input-element\"\n name=${this.name}\n type=\"time\"\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n />\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n\n <wc-icon-button\n slot=\"field-end\"\n color=\"secondary\"\n variant=\"text\"\n ?disabled=${this.disabled}\n @click=${() => {\n setTimeout(() => {\n // @ts-ignore\n this.inputElement.showPicker();\n });\n }}\n >\n <wc-icon name=\"calendar_today\"></wc-icon>\n </wc-icon-button>\n </wc-field>\n `;\n }\n}\n","import { html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\n\nimport { redispatchEvent } from '@/__utils/dispatch-event-utils.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './textarea.scss';\n\n/**\n * @label Textarea\n * @tag wc-textarea\n * @rawTag textarea\n * @summary The Textarea component is used to capture user input.\n * @tags input\n *\n * @example\n * ```html\n * <wc-textarea label=\"Description\" placeholder=\"Enter text\"></wc-textarea>\n * ```\n */\nexport class Textarea extends BaseInput {\n static styles = [styles];\n\n @property({ type: String })\n value = '';\n\n @property({ type: String })\n name: string = '';\n\n @property({ type: String }) placeholder = '';\n\n @property({ type: String }) label = '';\n\n @property({ type: Boolean, reflect: true }) inline = false;\n\n @property({ type: String, reflect: true }) size: 'sm' | 'md' | 'lg' = 'md';\n\n @property({ type: String }) autocomplete: 'on' | 'off' = 'off';\n\n @property({ type: Object }) configAria: Record<string, string> = {};\n\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text to display below the input.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @property({ type: String }) rows = '3';\n\n @state()\n private focused = false;\n\n @state()\n private passwordVisible = false;\n\n /**\n * Returns true when the text field has been interacted with. Native\n * validation errors only display in response to user interactions.\n */\n @state() private dirty = false;\n\n @query('.input-element')\n private inputElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private __handleInput(event: InputEvent) {\n this.dirty = true;\n this.value = (event.target as HTMLInputElement).value;\n }\n\n override focus() {\n this.inputElement?.focus();\n }\n\n override blur() {\n this.inputElement?.blur();\n }\n\n private __handleFocusChange() {\n // When calling focus() or reportValidity() during change, it's possible\n // for blur to be called after the new focus event. Rather than set\n // `this.focused` to true/false on focus/blur, we always set it to whether\n // or not the input itself is focused.\n this.focused = this.inputElement?.matches(':focus') ?? false;\n }\n\n private __redispatchEvent(event: Event) {\n redispatchEvent(this, event);\n }\n\n render() {\n return html`\n <wc-field\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n variant=${this.variant}\n ?populated=${!!this.value}\n warning-text=${this.warningText}\n label=${this.label}\n ?focused=${this.focused}\n .host=${this}\n class=\"input-wrapper textarea\"\n >\n <slot name=\"start\" slot=\"field-start\"></slot>\n\n <textarea\n class=\"input input-element\"\n rows=${this.rows}\n name=${this.name}\n placeholder=${this.placeholder}\n autocomplete=${this.autocomplete}\n .value=${this.value}\n ?tabindex=${this.tabindex}\n ?readonly=${this.readonly}\n ?required=${this.required}\n ?disabled=${this.disabled}\n @input=${this.__handleInput}\n @change=${this.__redispatchEvent}\n @focus=${this.__handleFocusChange}\n @blur=${this.__handleFocusChange}\n ${spread(this.configAria)}\n ></textarea>\n\n <slot name=\"end\" slot=\"field-end\"></slot>\n </wc-field>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { spread } from '@/__directive/spread.js';\n\nimport styles from './switch.scss';\nimport BaseInput from '../input/BaseInput.js';\n\n/**\n * @label Switch\n * @tag wc-switch\n * @rawTag switch\n *\n * @summary Captures boolean input with an on/off switch interaction.\n * @overview\n * <p>Toggles are used to enable or disable a single option. They provide immediate feedback about whether an option is active or inactive.</p>\n *\n * @cssprop --switch-track-color: Color of the switch track when checked.\n * @cssprop --switch-track-off-color: Color of the switch track when unchecked.\n * @cssprop --switch-width: Width of the switch track.\n * @cssprop --switch-height: Height of the switch track.\n * @cssprop --switch-handle-radius: Size of the switch handle.\n * @cssprop --switch-handle-color: Color of the switch handle.\n *\n * @fires {CustomEvent} change - Dispatched when the switch value changes.\n * @fires {CustomEvent} blur - Dispatched when the switch loses focus.\n * @fires {CustomEvent} focus - Dispatched when the switch receives focus.\n *\n * @example\n * ```html\n * <wc-switch value=\"true\"></wc-switch>\n * ```\n * @tags input, form\n */\nexport class Switch extends BaseInput {\n static styles = [styles];\n\n @property({ type: Boolean })\n value: boolean = false;\n\n /**\n * The input field name.\n */\n @property({ type: String })\n name: string = '';\n\n /**\n * The switch label.\n */\n @property({ type: String })\n label: string = '';\n\n /**\n * If true, the toggle has rounded corners. Defaults to `true`.\n */\n @property({ type: Boolean })\n rounded: boolean = true;\n\n /**\n * If true, required icon is shown. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n required: boolean = false;\n\n /**\n * If true, the toggle is readonly. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n\n /**\n * If true, the user cannot interact with the toggle. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true, attribute: 'with-icon' })\n withIcon: boolean = false;\n\n /**\n * Configuration object for aria attributes.\n */\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n @state()\n private hasFocus = false;\n\n @state()\n private isActive = false;\n\n @state()\n private slotHasContent = false;\n\n @query('.track')\n private trackElement?: HTMLElement;\n\n @query('.input-native')\n private nativeElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n window.addEventListener('mouseup', this.windowMouseUp);\n window.addEventListener('keyup', this.windowKeyUp);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('mouseup', this.windowMouseUp);\n window.removeEventListener('keyup', this.windowKeyUp);\n }\n\n firstUpdated() {\n this.slotHasContent = this.hasChildNodes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private windowMouseUp = () => {\n if (this.isActive) {\n this.isActive = false;\n }\n };\n\n private windowKeyUp = (evt: KeyboardEvent) => {\n if (this.isActive && evt.key === ' ') {\n this.isActive = false;\n }\n };\n\n private mouseDownHandler = () => {\n this.isActive = true;\n };\n\n private keyDownHandler = (evt: KeyboardEvent) => {\n if (evt.key === ' ') {\n evt.preventDefault();\n this.isActive = true;\n this.clickHandler(evt);\n }\n };\n\n private clickHandler = (ev: MouseEvent | KeyboardEvent) => {\n if (!this.disabled && !this.readonly) {\n this.value = !this.value;\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: this.value, originalEvent: ev },\n bubbles: true,\n composed: true,\n }),\n );\n this.trackElement?.focus();\n }\n };\n\n private blurHandler = (ev: FocusEvent) => {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('blur', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private focusHandler = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('focus', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private handleKeyUp = (evt: KeyboardEvent) => {\n if (evt.key === 'Enter') {\n this.clickHandler(evt);\n }\n };\n\n /**\n * Sets focus on the toggle.\n */\n focus() {\n this.trackElement?.focus();\n }\n\n /**\n * Removes focus from the toggle.\n */\n blur() {\n this.trackElement?.blur();\n }\n\n __renderIcon() {\n if (this.withIcon) {\n if (this.value)\n return html`<wc-icon name=\"check\" class=\"icon\"></wc-icon>`;\n return html`<wc-icon name=\"close\" class=\"icon\"></wc-icon>`;\n }\n return nothing;\n }\n\n render() {\n const cssClasses = {\n switch: true,\n 'state-checked': this.value,\n 'has-focus': this.hasFocus,\n active: this.isActive,\n disabled: this.disabled,\n readonly: this.readonly,\n required: this.required,\n rounded: this.rounded,\n 'has-content': this.slotHasContent,\n };\n\n return html`\n <label class=${classMap(cssClasses)}>\n <div\n class=\"track\"\n tabindex=${this.tabindex || 0}\n @keyup=${this.handleKeyUp}\n @mousedown=${this.mouseDownHandler}\n @keydown=${this.keyDownHandler}\n @blur=${this.blurHandler}\n @focus=${this.focusHandler}\n role=\"checkbox\"\n aria-disabled=${this.disabled}\n aria-required=${this.required}\n aria-checked=${this.value}\n ${spread(this.configAria)}\n >\n <div class=\"handle\">${this.__renderIcon()}</div>\n </div>\n\n <input\n type=\"checkbox\"\n class=\"input-native\"\n name=${this.name}\n .checked=${this.value}\n aria-hidden=\"true\"\n ?required=${this.required}\n tabindex=\"-1\"\n @click=${this.clickHandler}\n />\n\n ${this.label\n ? html`<div class=\"label\">${this.label}</div>`\n : html`<div class=\"slot-container\"><slot></slot></div>`}\n </label>\n `;\n }\n}\n","import { html, LitElement, svg } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { spread } from '@/__directive/spread.js';\nimport styles from './checkbox.scss';\n\n/**\n * @label Checkbox\n * @tag wc-checkbox\n * @rawTag checkbox\n * @summary Captures boolean input with an optional indeterminate mode.\n * @overview\n * <p>Checkboxes allow users to select one or more items from a set. Checkboxes can turn an option on or off.</p>\n * <p>Material Design 3 checkboxes feature a smooth animation and clear visual states for checked, unchecked, and indeterminate.</p>\n * @cssprop --checkbox-size: Size of the checkbox container.\n * @cssprop --checkbox-selected-color: Color of the checkbox when selected.\n * @cssprop --checkbox-unselected-color: Color of the checkbox border when unselected.\n * @cssprop --checkbox-checkmark-color: Color of the checkmark icon.\n * @cssprop --checkbox-state-layer-size: Size of the state layer for touch target.\n * @fires {CustomEvent} change - Dispatched when the checkbox value changes.\n * @fires {CustomEvent} blur - Dispatched when the checkbox loses focus.\n * @fires {CustomEvent} focus - Dispatched when the checkbox receives focus.\n * @tags input, form\n *\n * @example\n * ```html\n * <wc-checkbox label=\"Accept terms\"></wc-checkbox>\n * ```\n */\nexport class Checkbox extends LitElement {\n static styles = [styles];\n\n /**\n * The input field name.\n */\n @property({ type: String })\n name: string = '';\n\n /**\n * The checkbox label.\n */\n @property({ type: String })\n label: string = '';\n\n /**\n * The input field value (checked state).\n */\n @property({ type: Boolean, reflect: true })\n value: boolean = false;\n\n /**\n * If true, displays the checkbox in an indeterminate state.\n */\n @property({ type: Boolean, reflect: true })\n indeterminate: boolean = false;\n\n /**\n * If true, the checkbox has rounded corners. Defaults to `false`.\n */\n @property({ type: Boolean })\n rounded: boolean = false;\n\n /**\n * The checkbox size.\n * Possible values are: `\"sm\"`, `\"md\"`, `\"lg\"`. Defaults to `\"md\"`.\n */\n @property({ type: String })\n size: 'sm' | 'md' | 'lg' = 'md';\n\n /**\n * If true, required icon is shown. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n required: boolean = false;\n\n /**\n * If true, the checkbox is readonly. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n\n /**\n * If true, the user cannot interact with the checkbox. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Configuration object for aria attributes.\n */\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n @state()\n private hasFocus = false;\n\n @state()\n private isActive = false;\n\n @state()\n private slotHasContent = false;\n\n @query('.container')\n private containerElement?: HTMLElement;\n\n @query('.input-native')\n private nativeElement?: HTMLInputElement;\n\n private tabindex?: string;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n window.addEventListener('mouseup', this.windowMouseUp);\n window.addEventListener('keyup', this.windowKeyUp);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('mouseup', this.windowMouseUp);\n window.removeEventListener('keyup', this.windowKeyUp);\n }\n\n firstUpdated() {\n this.slotHasContent = this.hasChildNodes();\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n this.tabindex = this.getAttribute('tabindex') || undefined;\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private windowMouseUp = () => {\n if (this.isActive) {\n this.isActive = false;\n }\n };\n\n private windowKeyUp = (evt: KeyboardEvent) => {\n if (this.isActive && evt.key === ' ') {\n this.isActive = false;\n }\n };\n\n private mouseDownHandler = () => {\n this.isActive = true;\n };\n\n private keyDownHandler = (evt: KeyboardEvent) => {\n if (evt.key === ' ') {\n evt.preventDefault();\n this.isActive = true;\n this.clickHandler(evt);\n }\n };\n\n private clickHandler = (ev: MouseEvent | KeyboardEvent) => {\n if (!this.disabled && !this.readonly) {\n this.value = !this.value;\n this.indeterminate = false;\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: this.value, originalEvent: ev },\n bubbles: true,\n composed: true,\n }),\n );\n this.containerElement?.focus();\n }\n };\n\n private blurHandler = (ev: FocusEvent) => {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('blur', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private focusHandler = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('focus', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private handleKeyUp = (evt: KeyboardEvent) => {\n if (evt.key === 'Enter') {\n this.clickHandler(evt);\n }\n };\n\n /**\n * Sets focus on the checkbox.\n */\n focus() {\n this.containerElement?.focus();\n }\n\n /**\n * Removes focus from the checkbox.\n */\n blur() {\n this.containerElement?.blur();\n }\n\n render() {\n const cssClasses = {\n checkbox: true,\n 'state-checked': this.value,\n 'state-indeterminate': !this.value && this.indeterminate,\n [`size-${this.size}`]: true,\n 'has-focus': this.hasFocus,\n active: this.isActive,\n disabled: this.disabled,\n readonly: this.readonly,\n required: this.required,\n rounded: this.rounded,\n 'has-content': this.slotHasContent,\n };\n\n return html`\n <label class=${classMap(cssClasses)}>\n <div\n id=\"container\"\n class=\"container\"\n tabindex=${this.tabindex || 0}\n @keyup=${this.handleKeyUp}\n @mousedown=${this.mouseDownHandler}\n @keydown=${this.keyDownHandler}\n @blur=${this.blurHandler}\n @focus=${this.focusHandler}\n role=\"checkbox\"\n aria-disabled=${this.disabled}\n aria-required=${this.required}\n aria-checked=${this.value\n ? 'true'\n : this.indeterminate\n ? 'mixed'\n : 'false'}\n ${spread(this.configAria)}\n >\n <wc-ripple class=\"ripple\"></wc-ripple>\n <wc-focus-ring class=\"focus-ring\" for='container'></wc-focus-ring>\n <div class=\"outline\"></div>\n <div class=\"background\"></div>\n <svg class=\"icon\" viewBox=\"0 0 12 12\">\n ${this.value\n ? svg`\n <path\n class=\"checkmark\"\n d=\"M2 6L5 9L10 2\"\n />\n `\n : this.indeterminate\n ? svg`<rect\n class=\"indeterminate\"\n x=\"2\"\n y=\"5\"\n width=\"8\"\n height=\"2\"\n />`\n : ''}\n </svg>\n </div>\n\n <input\n type=\"checkbox\"\n class=\"input-native\"\n name=${this.name}\n .checked=${this.value}\n .indeterminate=${this.indeterminate}\n aria-hidden=\"true\"\n ?required=${this.required}\n tabindex=\"-1\"\n @click=${this.clickHandler}\n />\n\n ${this.label\n ? html`<div class=\"label\">${this.label}</div>`\n : html`<div class=\"label slot-container\"><slot></slot></div>`}\n </label>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\n\nimport styles from './spinner.scss';\n\n/**\n * @label Spinner\n * @tag wc-spinner\n * @rawTag spinner\n * @summary A spinner component that animates a circular shape.\n * @cssprop --spinner-track-color - The color of the track.\n * @cssprop --spinner-shape-color - The color of the shape.\n * @tags display\n *\n * @example\n * ```html\n * <wc-spinner></wc-spinner>\n * ```\n */\nexport class Spinner extends LitElement {\n static styles = [styles];\n\n render() {\n return html`\n <div class=\"spinner track\">\n <div class=\"shape\"></div>\n </div>\n `;\n }\n}\n","import { LitElement, html, css } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './container.scss';\n\ntype ContainerSize = 'max' | 'xl' | 'lg' | 'md' | 'sm' | 'full';\n\n/**\n * @label Container\n * @tag wc-container\n * @rawTag container\n * @summary A responsive container component for layout.\n * @cssprop --container-max-width - Controls the maximum width of the container.\n * @cssprop --container-padding - Controls the padding of the container.\n * @tags layout\n *\n * @example\n * ```html\n * <wc-container style=\"width: 80%; border: 1px dotted black;\" size=\"md\">Content</wc-container>\n * ```\n */\nexport class Container extends LitElement {\n @property({ type: String, reflect: true })\n size: ContainerSize = 'full';\n\n static styles = [styles];\n\n render() {\n const wrapperClasses = {\n 'container-wrapper': true,\n [`size-${this.size}`]: true,\n };\n\n return html`\n <div class=${classMap(wrapperClasses)}>\n <div class=\"container\">\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n </div>\n `;\n }\n}","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './empty-state.scss';\n\n/**\n * @label Empty State\n * @tag wc-empty-state\n * @rawTag empty-state\n * @summary A message that displays when there is no information to display.\n * @tags display\n *\n * @example\n * ```html\n * <wc-empty-state style=\"width:100%\" headline=\"No items found\"></wc-empty-state>\n * ```\n */\nexport class EmptyState extends LitElement {\n // Lit handles styles in a static property for better performance\n static styles = [styles];\n\n @property({ type: String, reflect: true })\n illustration: 'no-document' | 'page' | 'search' = 'no-document';\n\n @property({ type: String, reflect: true })\n headline = '';\n\n @property({ type: String, reflect: true })\n description = '';\n\n @state()\n private vertical = false;\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n window.addEventListener('resize', this.handleResize);\n // Initial check\n this.handleResize();\n }\n\n disconnectedCallback() {\n window.removeEventListener('resize', this.handleResize);\n // eslint-disable-next-line wc/guard-super-call\n super.disconnectedCallback();\n }\n\n private handleResize = () => {\n // Logic equivalent to Stencil's clientWidth check\n this.vertical = this.offsetWidth < 768;\n };\n\n __renderTitle() {\n if (!this.headline) return nothing;\n return html`<div class=\"headline\">${this.headline}</div>`;\n }\n\n __renderDescription() {\n if (!this.description) return nothing;\n return html`<div class=\"description\">${this.description}</div>`;\n }\n\n protected render() {\n const classes = {\n 'empty-state': true,\n vertical: this.vertical,\n };\n\n // Resolving asset paths in Lit typically uses import.meta.url or absolute paths\n const illustrationPath = new URL(\n `./assets/images/empty-state/${this.illustration}.svg`,\n import.meta.url,\n ).href;\n\n return html`\n <div class=\"${classMap(classes)}\">\n <div class=\"empty-state-container\">\n <div class=\"illustration\">\n <wc-icon class=\"illustration-svg\" src=\"${illustrationPath}\"></wc-icon>\n </div>\n\n <div class=\"content\">\n ${this.__renderTitle()} ${this.__renderDescription()}\n <div class=\"actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './tooltip.scss';\nimport { FloatingController } from '../__controllers/floating-controller.js';\n\n// Define a type for valid trigger combinations\nexport type TooltipTrigger = 'hover' | 'focus' | 'click';\n\n/**\n * @label Tooltip\n * @tag wc-tooltip\n * @rawTag tooltip\n * @summary Displays a tooltip for an element.\n * @tags display\n *\n * @example\n * ```html\n * <wc-tooltip preview>Tooltip</wc-tooltip>\n * ```\n */\nexport class Tooltip extends LitElement {\n static styles = [styles];\n\n @property() content: string = '';\n\n /**\n * The ID of the element the tooltip should attach to.\n * If not provided, it defaults to the parent element.\n */\n @property() for: string = '';\n\n @property({ type: String }) trigger: string = 'hover focus';\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: String, reflect: true }) variant: 'plain' | 'rich' =\n 'plain';\n\n @property({ type: Boolean, reflect: true }) preview = false;\n\n private _target: HTMLElement | null = null;\n\n private _floating: FloatingController | null = null;\n\n private resolveTrigger(): 'hover' | 'click' | 'focus' | 'manual' | 'hover-focus' {\n if (this.preview) return 'manual';\n\n const triggerTokens = this.trigger.split(' ');\n const hasHover = triggerTokens.includes('hover');\n const hasFocus = triggerTokens.includes('focus');\n const hasClick = triggerTokens.includes('click');\n\n if (hasClick) return 'click';\n if (hasHover && hasFocus) return 'hover-focus';\n if (hasFocus) return 'focus';\n if (hasHover) return 'hover';\n return 'manual';\n }\n\n private detachListeners() {\n if (this._floating) {\n this._floating.close();\n this._floating = null;\n }\n this._target = null;\n }\n\n _focusTarget?: HTMLElement;\n\n set forElement(value: HTMLElement | null) {\n if (value) {\n this._focusTarget = value;\n } else { \n this._focusTarget = undefined;\n }\n }\n\n __getFocusTarget(): HTMLElement | null {\n\n if (this._focusTarget) {\n return this._focusTarget;\n }\n\n const focusTarget = document.getElementById(this.for);\n if (focusTarget) {\n return focusTarget\n }\n\n return this.parentElement;\n }\n\n private attachListeners() {\n this.detachListeners();\n\n // Resolve target: ID-based lookup or fallback to parent\n const root = this.getRootNode() as ShadowRoot | Document;\n this._target = this.for\n ? (root.getElementById(this.for) as HTMLElement)\n : this.parentElement;\n\n if (!this._target) return;\n\n this._floating = new FloatingController(this, {\n placement: 'top',\n strategy: 'fixed',\n offset: 0,\n trigger: this.resolveTrigger(),\n closeOnClickOutside: true,\n onOpenChange: (isOpen) => {\n if (this.open === isOpen) return;\n this.open = isOpen;\n },\n });\n\n this._floating.setElements(this._target, this);\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.attachListeners();\n }\n\n disconnectedCallback() {\n this.detachListeners();\n super.disconnectedCallback();\n }\n\n protected updated(changedProps: Map<string, any>) {\n // If the 'for' property changes, re-bind listeners to the new target\n if (changedProps.has('for')) {\n this.attachListeners();\n }\n\n if (changedProps.has('trigger') || changedProps.has('preview')) {\n this.attachListeners();\n }\n\n if (this._floating && this._target) {\n this._floating.setElements(this._target, this);\n\n if (changedProps.has('open') && this.open && !this._floating.isOpen) {\n this._floating.open();\n }\n\n if (changedProps.has('open') && !this.open && this._floating.isOpen) {\n this._floating.close();\n }\n }\n }\n\n render() {\n return html` <div\n class=${classMap({\n tooltip: true,\n open: this.open,\n [`variant-${this.variant}`]: true,\n })}\n id=\"tooltip\"\n role=\"tooltip\"\n aria-hidden=${!this.open}\n aria-labelledby=\"tooltip-labelledby\"\n >\n ${this.variant === 'plain'\n ? this.__renderPlainTooltip()\n : this.__renderRichTooltip()}\n </div>`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n __renderPlainTooltip() {\n return html`<div class=\"tooltip-content\" id=\"tooltip-labelledby\">\n <slot></slot>\n </div>`;\n }\n\n // eslint-disable-next-line class-methods-use-this\n __renderRichTooltip() {\n return html`\n <div class=\"tooltip-content\">\n <wc-elevation class=\"elevation\"></wc-elevation>\n\n <div class=\"tooltip-title\" id=\"tooltip-labelledby\">\n <slot name=\"title\"></slot>\n </div>\n <div class=\"tooltip-support-text\">\n <slot></slot>\n </div>\n <div class=\"tooltip-actions\">\n <slot name=\"actions\"></slot>\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport styles from './breadcrumb-item.scss';\n\n/**\n * @label Breadcrumb Item\n * @tag wc-breadcrumb-item\n * @rawTag breadcrumb-item\n * @parentRawTag breadcrumb\n * @summary A breadcrumb item component that represents a single item in a breadcrumb navigation.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * ```\n */\nexport class BreadcrumbItem extends LitElement {\n static styles = [styles];\n\n /**\n * Hyperlink to navigate to on click.\n */\n @property({ reflect: true }) href?: string;\n\n /**\n * Sets or retrieves the window or frame at which to target content.\n */\n @property() target?: string;\n\n /**\n * Indicates if this is the active (current) breadcrumb item.\n */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /**\n * Custom separator character. If not provided, default \"/\" is used.\n */\n @property({ type: String }) separator?: string;\n\n @state()\n private position = 1;\n\n connectedCallback() {\n super.connectedCallback();\n this.calculatePosition();\n }\n\n private calculatePosition() {\n // Calculate position by counting sibling breadcrumb items\n if (this.parentElement) {\n const items = Array.from(\n this.parentElement.querySelectorAll('p-breadcrumb-item'),\n );\n this.position = items.indexOf(this) + 1;\n }\n }\n\n render() {\n return html`\n <li\n class=${classMap({ 'breadcrumb-item': true, active: this.active })}\n itemprop=\"itemListElement\"\n itemscope\n itemtype=\"https://schema.org/ListItem\"\n >\n ${this.active\n ? html`\n <span aria-current=\"page\" itemprop=\"name\">\n <slot></slot>\n </span>\n `\n : html`\n <a\n class=\"breadcrumb-link\"\n itemprop=\"item\"\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n ${this.target === '_blank'\n ? html`rel=\"noopener noreferrer\"`\n : nothing}\n >\n <span itemprop=\"name\">\n <slot></slot>\n </span>\n </a>\n `}\n <meta itemprop=\"position\" content=${String(this.position)} />\n ${this.separator\n ? html`<span class=\"separator\" aria-hidden=\"true\"\n >${this.separator}</span\n >`\n : nothing}\n </li>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './breadcrumb.scss';\nimport { BreadcrumbItem } from '../breadcrumb-item/breadcrumb-item.js';\n\n/**\n * @label Breadcrumb\n * @tag wc-breadcrumb\n * @rawTag breadcrumb\n * @summary A breadcrumb is a secondary navigation scheme that reveals the user's location in a website or web application.\n * @overview\n * - Breadcrumbs provide a trail for users to follow back to the starting or entry point.\n * - They help users understand their current location within the site hierarchy.\n * - Follows WCAG 2.1 guidelines for accessible navigation landmarks.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb label=\"Breadcrumb\">\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * <wc-breadcrumb-item href=\"#\">Category</wc-breadcrumb-item>\n * <wc-breadcrumb-item active>Current Page</wc-breadcrumb-item>\n * </wc-breadcrumb>\n * ```\n */\nexport class Breadcrumb extends LitElement {\n static styles = [styles];\n\n static Item = BreadcrumbItem;\n\n /**\n * Accessible label for the breadcrumb navigation landmark.\n * @default \"Breadcrumb\"\n */\n @property({ type: String }) label = 'Breadcrumb';\n\n render() {\n return html`<nav aria-label=${this.label} class=\"breadcrumb\">\n <ol>\n <slot></slot>\n </ol>\n </nav>`;\n }\n}\n","import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './menu-item.scss';\nimport colorStyles from './menu-item-colors.scss';\nimport BaseButtonMixin from '@/__mixins/BaseButtonMixin.js';\nimport BaseHyperlinkMixin from '@/__mixins/BaseHyperlinkMixin.js';\nimport { dispatchActivationClick, isActivationClick } from '@/__utils/dispatch-event-utils.js';\n\n/**\n * @label Menu Item\n * @tag wc-menu-item\n * @rawTag menu-item\n * @parentRawTag menu\n * @summary An item in a menu list.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu-item>Menu Item</wc-menu-item>\n * ```\n */\nexport class MenuItem extends BaseButtonMixin(BaseHyperlinkMixin(LitElement)) {\n \n @property({ type: String }) value = '';\n\n @property({ type: Boolean, reflect: true }) selected = false;\n\n @property({ type: Boolean, attribute: 'keep-open' }) keepOpen = false;\n\n @property({ type: Boolean, attribute: 'has-submenu' }) hasSubmenu = false;\n\n @property({ type: Boolean, attribute: 'submenu-open' }) submenuOpen = false;\n\n @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =\n 'standard';\n\n static styles = [styles, colorStyles];\n\n @query('#item') readonly itemElement!: HTMLElement | null;\n\n /**\n * States\n */\n @state()\n isPressed = false;\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n if (!this.hasAttribute('role')) {\n this.setAttribute('role', 'menuitem');\n }\n\n this.addEventListener('click', this.__dispatchClickWithThrottle);\n window.addEventListener('mouseup', this.__handlePress);\n }\n\n disconnectedCallback() {\n window.removeEventListener('mouseup', this.__handlePress);\n this.removeEventListener('click', this.__dispatchClickWithThrottle);\n super.disconnectedCallback();\n }\n\n override focus() {\n this.itemElement?.focus();\n }\n\n override blur() {\n this.itemElement?.blur();\n }\n\n __dispatchClickWithThrottle: (event: MouseEvent | KeyboardEvent) => void =\n event => {\n this.__dispatchClick(event);\n };\n \n __dispatchClick = (event: MouseEvent | KeyboardEvent) => {\n // If the button is soft-disabled or a disabled link, we need to explicitly\n // prevent the click from propagating to other event listeners as well as\n // prevent the default action.\n if (this.softDisabled || (this.disabled && this.href)) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n\n if (!isActivationClick(event) || !this.itemElement) {\n return;\n }\n\n this.focus();\n dispatchActivationClick(this.itemElement);\n };\n\n __handleKeyDown = (event: KeyboardEvent) => {\n this.__handlePress(event);\n\n if (this.disabled || this.softDisabled || !this.itemElement) {\n return;\n }\n\n if (event.key === ' ') {\n event.preventDefault();\n this.itemElement.click();\n return;\n }\n\n if (event.key === 'Enter' && !this.__isLink()) {\n event.preventDefault();\n this.itemElement.click();\n }\n };\n\n __handlePress = (event: KeyboardEvent | MouseEvent) => {\n if (this.disabled || this.softDisabled) return;\n if (\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n (event.key === 'Enter' || event.key === ' ')\n ) {\n this.isPressed = true;\n } else if (event.type === 'mousedown') {\n this.isPressed = true;\n } else {\n this.isPressed = false;\n }\n };\n\n render() {\n const isLink = this.__isLink();\n\n const cssClasses = {\n 'menu-item': true,\n disabled: this.disabled,\n selected: this.selected,\n pressed: this.isPressed,\n };\n\n const controls = this.getAttribute('aria-controls');\n\n if (isLink) {\n return html`<a\n id=\"item\"\n class=${classMap(cssClasses)}\n href=${this.href}\n target=${this.target}\n tabindex=${this.disabled ? '-1' : '0'}\n\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handleKeyDown}\n @keyup=${this.__handlePress}\n\n aria-disabled=${String(this.disabled)}\n aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}\n aria-controls=${this.hasSubmenu && controls ? controls : nothing}\n aria-expanded=${this.hasSubmenu ? String(this.submenuOpen) : nothing}\n >\n ${this.renderContent()}\n </a> `;\n }\n\n return html`<div\n id=\"item\"\n class=${classMap(cssClasses)}\n tabindex=${this.disabled ? '-1' : '0'}\n\n @click=${this.__dispatchClick}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handleKeyDown}\n @keyup=${this.__handlePress}\n\n aria-disabled=${String(this.disabled)}\n aria-haspopup=${this.hasSubmenu ? 'menu' : nothing}\n aria-controls=${this.hasSubmenu && controls ? controls : nothing}\n aria-expanded=${this.hasSubmenu ? String(this.submenuOpen) : nothing}\n >\n ${this.renderContent()}\n </div>`;\n }\n\n renderContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='item'></wc-focus-ring>\n <div class=\"background\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n\n <div class=\"menu-item-content\" data-variant=${this.variant}>\n <slot name=\"leading-icon\"></slot>\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n <slot name=\"trailing-supporting-text\"></slot>\n </div>\n `;\n }\n}\n","import { LitElement, html } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport type { Placement } from '@floating-ui/dom';\nimport styles from './menu.scss';\nimport { FloatingController } from '../../__controllers/floating-controller.js';\nimport { MenuItem } from '../menu-item/menu-item.js';\n\ntype CloseReason =\n | { kind: 'click-selection' }\n | { kind: 'keydown'; key: string }\n | { kind: 'outside-click' }\n | { kind: 'focusout' }\n | { kind: 'programmatic' };\n\n/**\n * @label Menu\n * @tag wc-menu\n * @rawTag menu\n * @summary A list of menu items.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-menu preview>\n * <wc-menu-item>Item 1</wc-menu-item>\n * <wc-menu-item selected>Item 2</wc-menu-item>\n * </wc-menu>\n * ```\n */\nexport class Menu extends LitElement {\n static styles = [styles];\n\n static Item = MenuItem;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: String, reflect: true }) variant: 'standard' | 'vibrant' =\n 'standard';\n\n @property({ type: String }) anchor = '';\n\n @property({ type: Boolean, reflect: true }) preview = false;\n\n @property({ type: Boolean, attribute: 'stay-open-on-outside-click' })\n stayOpenOnOutsideClick = false;\n\n @property({ type: Boolean, attribute: 'stay-open-on-focusout' })\n stayOpenOnFocusout = false;\n\n @property({ type: Boolean, attribute: 'is-submenu' }) isSubmenu = false;\n\n @property({ type: String }) placement: Placement = 'bottom-start';\n\n @property({ type: Number }) offset = 6;\n\n @state() private activeIndex = -1;\n\n @query('.menu') private readonly menuListElement!: HTMLElement;\n\n anchorElement: HTMLElement | null = null;\n\n private readonly _floatingController = new FloatingController(this, {\n trigger: 'manual',\n closeOnClickOutside: false,\n strategy: 'fixed',\n onOpenChange: (isOpen) => {\n if (isOpen || !this.open) {\n return;\n }\n\n this.close({ kind: 'outside-click' });\n },\n });\n\n private _lastFocusedElement: HTMLElement | null = null;\n\n private _closeReason: CloseReason = { kind: 'programmatic' };\n\n connectedCallback() {\n // eslint-disable-next-line wc/guard-super-call\n super.connectedCallback();\n this.setAttribute('role', 'menu');\n\n this.addEventListener('keydown', this._onKeyDown);\n this.addEventListener('click', this._onClick);\n this._syncAnchorAria();\n }\n\n disconnectedCallback() {\n this.removeEventListener('keydown', this._onKeyDown);\n this.removeEventListener('click', this._onClick);\n this._floatingController.close();\n super.disconnectedCallback();\n }\n\n get items(): MenuItem[] {\n const slot = this.shadowRoot?.querySelector('slot');\n const elements = slot?.assignedElements({ flatten: true }) ?? [];\n const items: MenuItem[] = [];\n\n for (const element of elements) {\n if (element instanceof MenuItem) {\n items.push(element);\n } else {\n const maybeItem = (element as { item?: unknown }).item;\n if (maybeItem instanceof MenuItem) {\n items.push(maybeItem);\n }\n }\n }\n\n return items;\n }\n\n show() {\n if (this.open) {\n return;\n }\n\n this._closeReason = { kind: 'programmatic' };\n this.open = true;\n }\n\n close(reason: CloseReason = { kind: 'programmatic' }) {\n if (!this.open) {\n return;\n }\n\n this._closeReason = reason;\n this.open = false;\n }\n\n override focus() {\n const target = this._getActiveItem() ?? this._getFirstEnabledItem();\n target?.focus();\n }\n\n private _resolveAnchorElement() {\n if (this.anchorElement) {\n return this.anchorElement;\n }\n\n if (!this.anchor) {\n return null;\n }\n\n const root = this.getRootNode() as Document | ShadowRoot;\n if ('getElementById' in root) {\n return root.getElementById(this.anchor);\n }\n\n return document.getElementById(this.anchor);\n }\n\n private _syncAnchorAria() {\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n if (!this.id) {\n this.id = `wc-menu-${Math.random().toString(36).slice(2, 9)}`;\n }\n\n anchorEl.setAttribute('aria-haspopup', 'menu');\n anchorEl.setAttribute('aria-controls', this.id);\n anchorEl.setAttribute('aria-expanded', String(this.open));\n }\n\n private _enabledItems() {\n return this.items.filter(item => !item.disabled);\n }\n\n private _syncRovingTabIndex() {\n const ownedItems = this.items;\n const enabledItems = this._enabledItems();\n for (const item of ownedItems) {\n item.tabIndex = -1;\n }\n\n if (!enabledItems.length) {\n this.activeIndex = -1;\n return;\n }\n\n if (this.activeIndex < 0 || this.activeIndex >= enabledItems.length) {\n this.activeIndex = 0;\n }\n\n enabledItems[this.activeIndex].tabIndex = 0;\n }\n\n private _setActiveByOffset(offset: 1 | -1) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n if (this.activeIndex < 0) {\n this.activeIndex = 0;\n } else {\n const count = enabledItems.length;\n this.activeIndex = (this.activeIndex + offset + count) % count;\n }\n\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _setBoundaryActive(index: number) {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length) {\n return;\n }\n\n this.activeIndex = index;\n this._syncRovingTabIndex();\n enabledItems[this.activeIndex]?.focus();\n }\n\n private _getActiveItem() {\n const enabledItems = this._enabledItems();\n if (!enabledItems.length || this.activeIndex < 0) {\n return null;\n }\n\n return enabledItems[this.activeIndex] ?? null;\n }\n\n private _getFirstEnabledItem() {\n return this._enabledItems()[0] ?? null;\n }\n\n private _isEventFromThisMenu(event: Event) {\n const path = event.composedPath();\n const sourceMenu = path.find(\n target =>\n target instanceof HTMLElement &&\n target.tagName.toLowerCase() === 'wc-menu',\n );\n\n return sourceMenu === this;\n }\n\n private _ownedItemFromEvent(event: Event) {\n if (!this._isEventFromThisMenu(event)) {\n return null;\n }\n\n const path = event.composedPath();\n const ownedItems = this.items;\n\n for (const target of path) {\n if (target instanceof HTMLElement) {\n if (target.tagName.toLowerCase() === 'wc-menu-item') {\n const ownedItem = ownedItems.find(item => item === target);\n if (ownedItem) {\n return ownedItem;\n }\n }\n }\n }\n\n return null;\n }\n\n private _setActiveItem(item: MenuItem) {\n const enabledItems = this._enabledItems();\n const nextIndex = enabledItems.indexOf(item);\n if (nextIndex < 0) {\n return;\n }\n\n this.activeIndex = nextIndex;\n this._syncRovingTabIndex();\n }\n\n private _onClick = (event: Event) => {\n if (!this.open) {\n return;\n }\n\n const item = this._ownedItemFromEvent(event);\n if (!item) {\n return;\n }\n\n this._setActiveItem(item);\n if (item.keepOpen) {\n return;\n }\n\n this.close({ kind: 'click-selection' });\n };\n\n private _onKeyDown = (event: KeyboardEvent) => {\n if (!this.open) {\n return;\n }\n\n if (!this._isEventFromThisMenu(event)) {\n return;\n }\n\n const eventItem = this._ownedItemFromEvent(event);\n if (eventItem) {\n this._setActiveItem(eventItem);\n }\n\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this._setActiveByOffset(1);\n break;\n case 'ArrowUp':\n event.preventDefault();\n this._setActiveByOffset(-1);\n break;\n case 'Home':\n event.preventDefault();\n this._setBoundaryActive(0);\n break;\n case 'End': {\n event.preventDefault();\n const last = Math.max(this._enabledItems().length - 1, 0);\n this._setBoundaryActive(last);\n break;\n }\n case 'Escape':\n event.preventDefault();\n this.close({ kind: 'keydown', key: 'Escape' });\n break;\n case 'Tab':\n this.close({ kind: 'keydown', key: 'Tab' });\n break;\n case 'Enter':\n case ' ': {\n event.preventDefault();\n const activeItem = this._getActiveItem() ?? this._getFirstEnabledItem();\n if (!activeItem) {\n return;\n }\n\n this._setActiveItem(activeItem);\n activeItem.click();\n break;\n }\n default:\n break;\n }\n };\n\n\n\n private _onSlotChange = () => {\n this._syncRovingTabIndex();\n };\n\n private _applyPositioning() {\n if (!this.open || !this.menuListElement) {\n return;\n }\n\n const anchorEl = this._resolveAnchorElement();\n if (!anchorEl) {\n return;\n }\n\n this._floatingController.setOptions({\n placement: this.placement,\n offset: this.offset,\n strategy: 'fixed',\n closeOnClickOutside: !this.stayOpenOnOutsideClick,\n });\n this._floatingController.setElements(anchorEl, this.menuListElement);\n this._floatingController.open();\n }\n\n protected override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('anchor') || changedProperties.has('open')) {\n this._syncAnchorAria();\n }\n\n if (changedProperties.has('open')) {\n if (this.open) {\n this._lastFocusedElement = document.activeElement as HTMLElement | null;\n this._syncRovingTabIndex();\n this.dispatchEvent(\n new CustomEvent('opened', {\n bubbles: true,\n composed: true,\n }),\n );\n\n this._applyPositioning();\n } else {\n this._floatingController.close();\n\n const reason = this._closeReason;\n this.dispatchEvent(\n new CustomEvent('close-menu', {\n bubbles: true,\n composed: true,\n detail: {\n reason,\n itemPath: [],\n },\n }),\n );\n this.dispatchEvent(\n new CustomEvent('closed', {\n bubbles: true,\n composed: true,\n detail: { reason },\n }),\n );\n\n const shouldRestoreFocus =\n reason.kind !== 'keydown' || reason.key !== 'Tab';\n\n if (!this.isSubmenu && shouldRestoreFocus) {\n this._lastFocusedElement?.focus();\n }\n }\n }\n\n if (\n (changedProperties.has('open') ||\n changedProperties.has('anchor') ||\n changedProperties.has('placement') ||\n changedProperties.has('offset')) &&\n this.open\n ) {\n this._applyPositioning();\n }\n }\n\n render() {\n return html`<div\n class=${classMap({\n 'menu': true,\n open: !this.preview && this.open,\n closed: !this.preview && !this.open,\n preview: this.preview,\n [`variant-${this.variant}`]: true,\n })}\n aria-hidden=${String(!this.open)}\n >\n <div class=\"background\"></div>\n <wc-elevation class=\"elevation\"></wc-elevation>\n\n <div class=\"menu-content\">\n <slot @slotchange=${this._onSlotChange}></slot>\n </div>\n </div>`;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\nimport styles from './sub-menu.scss';\nimport { MenuItem } from '../menu-item/menu-item.js';\nimport { Menu } from '../menu/menu.js';\n\nlet subMenuIdCounter = 0;\n\n/**\n * @label Sub Menu\n * @tag wc-sub-menu\n * @rawTag sub-menu\n * @parentRawTag menu\n * @summary Connects a menu item to a nested menu.\n */\nexport class SubMenu extends LitElement {\n static styles = [styles];\n\n @property({ type: Number, attribute: 'hover-open-delay' })\n hoverOpenDelay = 120;\n\n @property({ type: Number, attribute: 'hover-close-delay' })\n hoverCloseDelay = 180;\n\n @property({ type: String, attribute: 'anchor-corner' })\n anchorCorner = 'start-end';\n\n @property({ type: String, attribute: 'menu-corner' })\n menuCorner = 'start-start';\n\n @queryAssignedElements({ slot: 'item' })\n private readonly _items!: Element[];\n\n @queryAssignedElements({ slot: 'menu' })\n private readonly _menus!: Element[];\n\n private _openTimeout?: number;\n\n private _closeTimeout?: number;\n\n private readonly _onChildMenuOpened = () => {\n const { item } = this;\n if (!item) {\n return;\n }\n\n item.submenuOpen = true;\n item.setAttribute('aria-expanded', 'true');\n };\n\n private readonly _onChildMenuClosed = () => {\n const { item } = this;\n if (!item) {\n return;\n }\n\n item.submenuOpen = false;\n item.setAttribute('aria-expanded', 'false');\n };\n\n get item(): MenuItem | null {\n const [candidate] = this._items ?? [];\n return candidate instanceof MenuItem ? candidate : null;\n }\n\n get menu(): Menu | null {\n const [candidate] = this._menus ?? [];\n return candidate instanceof Menu ? candidate : null;\n }\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('mouseenter', this._onMouseEnter);\n this.addEventListener('mouseleave', this._onMouseLeave);\n }\n\n disconnectedCallback() {\n const { menu } = this;\n menu?.removeEventListener('opened', this._onChildMenuOpened);\n menu?.removeEventListener('closed', this._onChildMenuClosed);\n this.removeEventListener('mouseenter', this._onMouseEnter);\n this.removeEventListener('mouseleave', this._onMouseLeave);\n window.clearTimeout(this._openTimeout);\n window.clearTimeout(this._closeTimeout);\n super.disconnectedCallback();\n }\n\n async show() {\n const { item, menu } = this;\n if (!item || !menu) {\n return;\n }\n\n menu.anchorElement = item;\n menu.isSubmenu = true;\n menu.show();\n\n item.hasSubmenu = true;\n item.submenuOpen = true;\n item.setAttribute('aria-expanded', 'true');\n }\n\n async close() {\n const { item, menu } = this;\n if (!item || !menu) {\n return;\n }\n\n menu.close({ kind: 'programmatic' });\n item.submenuOpen = false;\n item.setAttribute('aria-expanded', 'false');\n }\n\n render() {\n return html`\n <slot\n name=\"item\"\n @slotchange=${this._onSlotChange}\n @click=${this._onItemClick}\n @keydown=${this._onItemKeyDown}\n ></slot>\n <slot\n name=\"menu\"\n @slotchange=${this._onSlotChange}\n @close-menu=${this._onCloseMenu}\n @keydown=${this._onMenuKeyDown}\n ></slot>\n `;\n }\n\n private _onSlotChange = () => {\n const { item, menu } = this;\n if (!item || !menu) {\n return;\n }\n\n if (!menu.id) {\n subMenuIdCounter += 1;\n menu.id = `wc-sub-menu-${subMenuIdCounter}`;\n }\n\n item.keepOpen = true;\n item.hasSubmenu = true;\n item.submenuOpen = menu.open;\n item.setAttribute('aria-haspopup', 'menu');\n item.setAttribute('aria-expanded', String(menu.open));\n item.setAttribute('aria-controls', menu.id);\n\n menu.removeEventListener('opened', this._onChildMenuOpened);\n menu.removeEventListener('closed', this._onChildMenuClosed);\n menu.addEventListener('opened', this._onChildMenuOpened);\n menu.addEventListener('closed', this._onChildMenuClosed);\n\n menu.isSubmenu = true;\n menu.anchorElement = item;\n menu.placement =\n getComputedStyle(this).direction === 'rtl' ? 'left-start' : 'right-start';\n menu.offset = 4;\n };\n\n private _onItemClick = () => {\n if (this.menu?.open) {\n this.close();\n return;\n }\n\n this.show();\n };\n\n private _onItemKeyDown = async (event: KeyboardEvent) => {\n const isRtl = getComputedStyle(this).direction === 'rtl';\n const arrowEnter = isRtl ? 'ArrowLeft' : 'ArrowRight';\n\n const shouldOpen =\n event.key === arrowEnter || event.key === 'Enter' || event.key === ' ';\n\n if (!shouldOpen) {\n return;\n }\n\n event.preventDefault();\n if (event.key === arrowEnter) {\n event.stopPropagation();\n }\n\n await this.show();\n const firstItem = this.menu?.items.find(menuItem => !menuItem.disabled);\n if (firstItem) {\n firstItem.tabIndex = 0;\n firstItem.focus();\n }\n };\n\n private _onMenuKeyDown = async (event: KeyboardEvent) => {\n const isRtl = getComputedStyle(this).direction === 'rtl';\n const arrowExit = isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n if (event.key !== 'Escape' && event.key !== arrowExit) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n await this.close();\n\n const { item } = this;\n if (item) {\n item.tabIndex = 0;\n item.focus();\n }\n };\n\n private _onCloseMenu = async (\n event: CustomEvent<{ reason?: { kind?: string; key?: string } }>,\n ) => {\n const { reason } = event.detail ?? {};\n const { key } = reason ?? {};\n if (reason?.kind === 'keydown' && key === 'Escape') {\n event.stopPropagation();\n await this.close();\n this.item?.focus();\n }\n };\n\n private _onMouseEnter = () => {\n window.clearTimeout(this._closeTimeout);\n this._openTimeout = window.setTimeout(() => {\n this.show();\n }, this.hoverOpenDelay);\n };\n\n private _onMouseLeave = (event: MouseEvent) => {\n const { relatedTarget: related } = event;\n if (related instanceof Node && this.contains(related)) {\n return;\n }\n\n window.clearTimeout(this._openTimeout);\n this._closeTimeout = window.setTimeout(() => {\n this.close();\n }, this.hoverCloseDelay);\n };\n}\n","import { LitElement, html } from 'lit';\nimport { property, state } from 'lit/decorators.js';\n\nimport { isDarkMode } from '@/__utils/is-dark-mode.js';\nimport { observeThemeChange } from '@/__utils/observe-theme-change.js';\n\nimport styles from './image.scss';\n\n/**\n * @label Image\n * @tag wc-image\n * @rawTag image\n * @summary An image component with lazy loading and theme support.\n * @tags media\n *\n * @example\n * ```html\n * <wc-image src=\"image.jpg\" alt=\"Description\"></wc-image>\n * ```\n */\nexport class Image extends LitElement {\n static styles = [styles];\n\n /** Primary image source */\n @property({ reflect: true }) src = '';\n\n /** Optional dark-mode image source */\n @property({ reflect: true, attribute: 'dark-src' }) darkSrc = '';\n\n /** Alt text / title for the image */\n @property({ attribute: 'image-title' }) imageTitle = '';\n\n /** Enable click-to-preview lightbox */\n @property({ type: Boolean, reflect: true }) preview = false;\n\n @state() private _isDarkMode: boolean = isDarkMode();\n\n @state() private _loaded = false;\n\n @state() private _previewOpen = false;\n\n private _intersectionObserver: IntersectionObserver | null = null;\n\n private _themeCleanup: (() => void) | null = null;\n\n connectedCallback() {\n super.connectedCallback();\n\n // Theme observation\n this._themeCleanup = observeThemeChange(() => {\n this._isDarkMode = isDarkMode();\n // Reset lazy-load state so new src is loaded when visible\n this._loaded = false;\n this._setupIntersectionObserver();\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this._intersectionObserver?.disconnect();\n this._themeCleanup?.();\n }\n\n firstUpdated() {\n this._setupIntersectionObserver();\n }\n\n private _setupIntersectionObserver() {\n this._intersectionObserver?.disconnect();\n\n const wrapper = this.shadowRoot?.querySelector('.image-wrapper');\n if (!wrapper) return;\n\n this._intersectionObserver = new IntersectionObserver(\n (entries) => {\n if (entries[0].isIntersecting) {\n this._loaded = true;\n this._intersectionObserver?.disconnect();\n }\n },\n { rootMargin: '200px' } // start loading slightly before entering viewport\n );\n\n this._intersectionObserver.observe(wrapper);\n }\n\n private get _activeSrc(): string {\n return this._isDarkMode && this.darkSrc ? this.darkSrc : this.src;\n }\n\n private _handleClick() {\n if (this.preview) {\n this._previewOpen = true;\n }\n }\n\n private _closePreview(e: Event) {\n e.stopPropagation();\n this._previewOpen = false;\n }\n\n render() {\n return html`\n <div class=\"image-wrapper\">\n ${this._loaded\n ? html`<img\n src=${this._activeSrc}\n alt=${this.imageTitle}\n class=${this.preview ? 'clickable' : ''}\n @click=${this._handleClick}\n />`\n : html`<span class=\"placeholder\" aria-hidden=\"true\"></span>`}\n </div>\n\n <!-- Lightbox preview overlay (inside shadow root) -->\n <div\n class=\"preview-overlay ${this._previewOpen ? 'open' : ''}\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"Image preview\"\n @click=${this._closePreview}\n @keydown=${(e: KeyboardEvent) => e.key === 'Escape' && this._closePreview(e)}\n >\n <img src=${this._activeSrc} alt=${this.imageTitle} @click=${(e: Event) => e.stopPropagation()} />\n </div>\n `;\n }\n}","import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { dispatchActivationClick, isActivationClick } from '@/__utils/dispatch-event-utils.js';\nimport { observerSlotChangesWithCallback } from '@/__utils/observe-slot-change.js';\nimport { throttle } from '@/__utils/throttle.js';\nimport { spread } from '@/__directive/spread.js';\n\nimport styles from './tab.scss';\nimport type { Tabs } from './tabs.js';\n\n/**\n * @label Tab\n * @tag wc-tab\n * @rawTag tab\n * @parentRawTag tabs\n *\n * @summary A tab component for use within tabs.\n * @overview\n * <p>Tab represents an individual tab in a tabs component.</p>\n *\n * @example\n * ```html\n * <wc-tab>Tab Label</wc-tab>\n * ```\n * @tags navigation\n */\nexport class Tab extends LitElement {\n\n #id = crypto.randomUUID();\n\n static styles = [styles];\n\n @property({ type: Boolean, reflect: true }) active = false;\n \n @property({ type: Boolean, reflect: true }) disabled = false;\n\n @property({ type: String }) disabledReason = '';\n\n @property({ type: String }) value?: string;\n\n @property({ reflect: true })\n configAria?: { [key: string]: any };\n\n /**\n * Sets or retrieves the window or frame at which to target content.\n */\n @property() target: string = '_self';\n\n @property({ type: String, reflect: true }) href?: string;\n\n /**\n * Sets the delay for throttle in milliseconds. Defaults to 200 milliseconds.\n */\n @property() throttleDelay = 200;\n\n @state() hasFocus = false;\n\n @state() slotHasContent = false;\n\n @state() slotHasIcon = false;\n\n @state() slotHasBadge = false;\n\n /**\n * States\n */\n @state()\n isPressed = false;\n\n private _tabindex = 0;\n\n @query('.tab-element') readonly tabElement!: HTMLElement | null;\n\n override focus() {\n this.tabElement?.focus();\n }\n\n override blur() {\n this.tabElement?.blur();\n }\n\n\n constructor() {\n super();\n this._tabindex = 0;\n }\n\n override firstUpdated() {\n this.__dispatchClickWithThrottle = throttle(\n this.__dispatchClick,\n this.throttleDelay,\n );\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot:not([name])'),\n hasContent => {\n this.slotHasContent = hasContent;\n this.requestUpdate();\n },\n );\n\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot[name=\"icon\"]'),\n hasContent => {\n this.slotHasIcon = hasContent;\n this.requestUpdate();\n },\n );\n\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot[name=\"badge\"]'),\n hasContent => {\n this.slotHasBadge = hasContent;\n this.requestUpdate();\n },\n );\n }\n\n __dispatchClickWithThrottle: (event: MouseEvent | KeyboardEvent) => void =\n event => {\n this.__dispatchClick(event);\n };\n \n __dispatchClick = (event: MouseEvent | KeyboardEvent) => {\n // If the button is soft-disabled or a disabled link, we need to explicitly\n // prevent the click from propagating to other event listeners as well as\n // prevent the default action.\n if (this.disabled && this.href) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n \n if (!isActivationClick(event) || !this.tabElement) {\n return;\n }\n \n this.focus();\n dispatchActivationClick(this.tabElement);\n };\n\n __handlePress = (event: KeyboardEvent | MouseEvent) => {\n if (this.disabled) return;\n if (\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n (event.key === 'Enter' || event.key === ' ')\n ) {\n this.isPressed = true;\n } else if (event.type === 'mousedown') {\n this.isPressed = true;\n } else {\n this.isPressed = false;\n }\n };\n\n __isLink() {\n return !!this.href;\n }\n\n __getParentTabsVariant(): Tabs['variant'] {\n return (this.closest('wc-tabs') as Tabs | null)?.variant ?? 'primary';\n }\n\n // private handleKeyDown(evt: KeyboardEvent) {\n // if (this.disabled || this.showLoader) return;\n // if (evt.key === 'Enter' || evt.key === ' ') {\n // evt.preventDefault();\n // this.isActive = true;\n // this.dispatchTabClick();\n // }\n // }\n\n\n render() {\n\n const isLink = this.__isLink();\n const variant = this.__getParentTabsVariant();\n\n const cssClasses = {\n tab: true,\n 'tab-element': true,\n disabled: this.disabled,\n pressed: this.isPressed,\n active: this.active,\n [`variant-${variant}`]: true,\n 'has-content': this.slotHasContent,\n 'has-icon': this.slotHasIcon,\n 'has-badge': this.slotHasBadge,\n };\n\n\n if (!isLink) {\n return html`<button\n id=\"button\"\n class=${classMap(cssClasses)}\n tabindex=\"0\"\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n ?aria-describedby=${this.__getDisabledReasonID()}\n aria-disabled=${`${this.disabled}`}\n ?disabled=${this.disabled}\n ${spread(this.configAria)}\n >\n ${this.renderTabContent(variant)}\n </button>`;\n }\n\n return html`<a\n class=${classMap(cssClasses)}\n id=\"button\"\n tabindex=\"0\"\n href=${this.href}\n target=${this.target}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n role=\"button\"\n ?aria-describedby=${this.__getDisabledReasonID()}\n aria-disabled=${`${this.disabled}`}\n ${spread(this.configAria)}\n >\n ${this.renderTabContent(variant)}\n </a>`;\n }\n\n renderTabContent(variant: Tabs['variant']) {\n switch (variant) {\n case 'secondary':\n return this.renderSecondaryTabContent();\n case 'contained':\n return this.renderContainedTabContent();\n case 'filled':\n return this.renderFilledTabContent();\n case 'primary':\n default:\n return this.renderPrimaryTabContent();\n }\n }\n\n renderPrimaryTabContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='button'></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n \n <div class=\"tab-content\">\n\n <div class=\"icon-section\">\n <slot name=\"badge\"></slot>\n <slot name=\"icon\"></slot>\n </div>\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n\n <div class=\"indicator\"></div>\n \n </div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n\n renderSecondaryTabContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='button'></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n \n <div class=\"tab-content\">\n\n <slot name=\"icon\"></slot>\n\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n\n <slot name=\"badge\"></slot>\n </div>\n\n <div class=\"indicator\"></div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n\n renderContainedTabContent() {\n return this.renderSegmentedTabContent();\n }\n\n renderFilledTabContent() {\n return this.renderSegmentedTabContent();\n }\n\n renderSegmentedTabContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='button'></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n <div class=\"background\"></div>\n <div class=\"outline\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n\n <div class=\"tab-content\">\n <slot name=\"icon\"></slot>\n\n <div class=\"slot-container\">\n <slot></slot>\n </div>\n\n <slot name=\"badge\"></slot>\n </div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n\n __getDisabledReasonID() {\n return this.disabled && this.disabledReason\n ? `disabled-reason-${this.#id}`\n : nothing;\n }\n\n __renderDisabledReason() {\n const disabledReasonID = this.__getDisabledReasonID();\n if (disabledReasonID)\n return html`<div\n id=\"disabled-reason-${this.#id}\"\n role=\"tooltip\"\n aria-label=${this.disabledReason}\n class=\"screen-reader-only\"\n >\n {this.disabledReason}\n </div>`;\n return nothing;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './tabs.scss';\nimport { Tab } from './tab.js';\n\n/**\n * @label Tabs\n * @tag wc-tabs\n * @rawTag tabs\n *\n * @summary Container for tab components.\n * @overview\n * <p>Tabs holds the tab buttons and manages their layout.</p>\n *\n * @example\n * ```html\n * <wc-tabs>\n * <wc-tab active>Tab 1</wc-tab>\n * <wc-tab>Tab 2</wc-tab>\n * </wc-tabs>\n * ```\n * @tags navigation\n */\nexport class Tabs extends LitElement {\n static styles = [styles];\n\n static Tab = Tab;\n\n @property({ reflect: true }) \n variant: 'primary' | 'secondary' | 'contained' | 'filled' = 'primary';\n\n @property({ type: Boolean }) managed = false;\n\n private __mutationObserver?: MutationObserver;\n\n private __lastActiveTab?: Tab;\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this.__handleTabClick);\n }\n\n firstUpdated() {\n this.__mutationObserver = new MutationObserver(() => {\n this.__syncIndicatorsFromActiveState();\n });\n\n this.__mutationObserver.observe(this, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['active', 'disabled'],\n });\n\n this.__lastActiveTab = this.__getActiveTab();\n }\n\n updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('variant')) {\n this.__lastActiveTab = this.__getActiveTab();\n }\n }\n\n disconnectedCallback() {\n this.__mutationObserver?.disconnect();\n\n this.removeEventListener('click', this.__handleTabClick);\n super.disconnectedCallback();\n }\n\n private __getTabs() {\n return Array.from(this.querySelectorAll('wc-tab')) as Tab[];\n }\n\n private __getActiveTab() {\n return this.__getTabs().find(tab => tab.active && !tab.disabled);\n }\n\n private static __getTabIndicator(tab?: Tab) {\n if (!tab?.shadowRoot) return undefined;\n return tab.shadowRoot.querySelector('.indicator') as HTMLElement | null;\n }\n\n private static __getTabBackground(tab?: Tab) {\n if (!tab?.shadowRoot) return undefined;\n return tab.shadowRoot.querySelector('.background') as HTMLElement | null;\n }\n\n private __getAnimationElements(previousTab?: Tab, nextTab?: Tab) {\n if (this.variant === 'primary' || this.variant === 'secondary') {\n return {\n previous: Tabs.__getTabIndicator(previousTab),\n next: Tabs.__getTabIndicator(nextTab),\n };\n }\n\n if (this.variant === 'filled' || this.variant === 'contained') {\n return {\n previous: Tabs.__getTabBackground(previousTab),\n next: Tabs.__getTabBackground(nextTab),\n };\n }\n\n return {\n previous: undefined,\n next: undefined,\n };\n }\n\n private __animateIndicatorTransition(previousTab?: Tab, nextTab?: Tab) {\n if (!previousTab || !nextTab || previousTab === nextTab) return;\n\n const { previous: previousAnimationElement, next: nextAnimationElement } =\n this.__getAnimationElements(previousTab, nextTab);\n if (!previousAnimationElement || !nextAnimationElement) return;\n\n const previousRect = previousTab.getBoundingClientRect();\n const nextRect = nextTab.getBoundingClientRect();\n\n const incomingOffset = previousRect.left - nextRect.left;\n const outgoingOffset = nextRect.left - previousRect.left;\n const incomingScale = previousRect.width / nextRect.width;\n const outgoingScale = nextRect.width / previousRect.width;\n\n nextAnimationElement.style.transition = 'none';\n nextAnimationElement.style.opacity = '0';\n nextAnimationElement.style.transform = `translateX(${incomingOffset}px) scaleX(${incomingScale})`;\n\n previousAnimationElement.style.transition = 'none';\n previousAnimationElement.style.opacity = '1';\n previousAnimationElement.style.transform = 'translateX(0) scaleX(1)';\n\n requestAnimationFrame(() => {\n nextAnimationElement.style.transition = '';\n previousAnimationElement.style.transition = '';\n\n nextAnimationElement.style.opacity = '1';\n nextAnimationElement.style.transform = 'translateX(0) scaleX(1)';\n\n previousAnimationElement.style.opacity = '0';\n previousAnimationElement.style.transform = `translateX(${outgoingOffset}px) scaleX(${outgoingScale})`;\n });\n }\n\n private __syncIndicatorsFromActiveState() {\n const activeTab = this.__getActiveTab();\n if (this.__lastActiveTab && activeTab && this.__lastActiveTab !== activeTab) {\n this.__animateIndicatorTransition(this.__lastActiveTab, activeTab);\n }\n\n this.__lastActiveTab = activeTab;\n }\n\n private __handleTabClick = (event: Event) => {\n if (this.managed) return;\n\n const detailEvent = event as CustomEvent;\n const path = detailEvent.composedPath();\n const clickedTab: Tab | undefined = path.find(\n node => node instanceof Element && (node as Element).tagName.toLowerCase() === 'wc-tab',\n ) as Tab | undefined;\n\n if (!clickedTab) return;\n\n const previousActiveTab = this.__getActiveTab();\n const tabs = this.__getTabs();\n let clickedIndex = -1;\n for (let index = 0; index < tabs.length; index += 1) {\n const tab = tabs[index];\n tab.active = false;\n if (tab === clickedTab) clickedIndex = index;\n }\n (clickedTab as Tab).active = true;\n this.__animateIndicatorTransition(previousActiveTab, clickedTab);\n this.__lastActiveTab = clickedTab;\n\n this.dispatchEvent(new CustomEvent('tab-click', {\n bubbles: true,\n composed: true,\n detail: {\n index: clickedIndex,\n value: (clickedTab as Tab).value,\n },\n }));\n };\n\n render() {\n return html`\n <div class=\"tabs\">\n <slot></slot>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './tab-panel.scss';\n\n/**\n * @label Tab Panel\n * @tag wc-tab-panel\n * @rawTag tab-panel\n * @parentRawTag tab-group\n *\n * @summary Content panel for tabs.\n * @overview\n * <p>TabPanel contains the content associated with a tab.</p>\n *\n * @example\n * ```html\n * <wc-tab-panel>Content for this tab</wc-tab-panel>\n * ```\n * @tags navigation\n */\nexport class TabPanel extends LitElement {\n static styles = [styles];\n\n @property({ reflect: true }) value?: string;\n\n @property({ type: Boolean, reflect: true }) active = false;\n\n render() {\n return html`<slot></slot>`;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './tab-group.scss';\nimport { Tabs } from './tabs.js';\nimport { TabPanel } from './tab-panel.js';\n\n/**\n * @label Tab Group\n * @tag wc-tab-group\n * @rawTag tab-group\n *\n * @summary The tab group component is used to display multiple panels of content in a container.\n * @overview\n * <p>The tab group component allows users to switch between different views or content sections.</p>\n *\n * @example\n * ```html\n * <wc-tab-group>\n * \n * <wc-tabs>\n * <wc-tab selected >Tab 1</wc-tab>\n * <wc-tab>Tab 2</wc-tab>\n * </wc-tabs>\n * \n * <wc-tab-panel>Panel 1</wc-tab-panel>\n * <wc-tab-panel>Panel 2</wc-tab-panel>\n * </wc-tab-group>\n * ```\n * @tags navigation\n */\nexport class TabGroup extends LitElement {\n static styles = [styles];\n\n static Tabs = Tabs;\n\n static TabPanel = TabPanel;\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('tab-click', this.onTabClick);\n }\n\n disconnectedCallback() {\n this.removeEventListener('tab-click', this.onTabClick);\n super.disconnectedCallback();\n }\n\n firstUpdated() {\n this.initializeTabs();\n }\n\n private onTabClick = (event: Event) => {\n const custom = event as CustomEvent;\n event.stopPropagation();\n const targetValue = custom.detail?.target || custom.detail?.value;\n if (targetValue) {\n this.selectTab(targetValue);\n } else if (typeof custom.detail?.index === 'number') {\n this.selectTabByIndex(custom.detail.index);\n }\n };\n\n selectTab(target: string) {\n const tabs = this.getTabs();\n for (const tab of tabs) {\n (tab as any).active = false;\n (tab as any).selected = false;\n tab.classList.remove('previous-tab', 'next-tab');\n }\n\n let selectedIndex = -1;\n tabs.forEach((tab: HTMLElement, index: number) => {\n const t = tab.getAttribute('target') || tab.getAttribute('value');\n if (t === target) {\n selectedIndex = index;\n }\n });\n\n if (selectedIndex >= 0) {\n const selectedTab = tabs[selectedIndex];\n (selectedTab as any).active = true;\n (selectedTab as any).selected = true;\n if (tabs[selectedIndex - 1]) {\n tabs[selectedIndex - 1].classList.add('previous-tab');\n }\n if (tabs[selectedIndex + 1]) {\n tabs[selectedIndex + 1].classList.add('next-tab');\n }\n }\n\n const panels = this.getTabPanels();\n for (const panel of panels) {\n const panelValue = panel.getAttribute('value');\n (panel as any).active = panelValue === target;\n }\n }\n\n selectTabByIndex(index: number) {\n const tabs = this.getTabs();\n for (const tab of tabs) {\n (tab as any).active = false;\n (tab as any).selected = false;\n tab.classList.remove('previous-tab', 'next-tab');\n }\n\n if (index >= 0 && index < tabs.length) {\n (tabs[index] as any).active = true;\n (tabs[index] as any).selected = true;\n if (tabs[index - 1]) tabs[index - 1].classList.add('previous-tab');\n if (tabs[index + 1]) tabs[index + 1].classList.add('next-tab');\n }\n\n const panels = this.getTabPanels();\n for (let i = 0; i < panels.length; i += 1) {\n const panel = panels[i];\n (panel as any).active = i === index;\n }\n }\n\n private getTabs(): HTMLElement[] {\n return Array.from(this.querySelectorAll(':scope > wc-tabs wc-tab'));\n }\n\n private getTabPanels(): HTMLElement[] {\n return Array.from(this.querySelectorAll(':scope > wc-tab-panel'));\n }\n\n private getTabList(): HTMLElement | null {\n return this.querySelector(':scope > wc-tabs');\n }\n\n private tabsHaveTarget(): boolean {\n return !!this.querySelector(':scope > wc-tabs wc-tab[target]');\n }\n\n private initializeTabs() {\n const tabs = Array.from(this.getTabs());\n if (!this.tabsHaveTarget()) {\n // No target/value attributes — use index-based activation\n const selectedIndex = tabs.findIndex(\n tab =>\n tab.hasAttribute('active') ||\n (tab as any).active ||\n tab.hasAttribute('selected') ||\n (tab as any).selected,\n );\n this.selectTabByIndex(selectedIndex >= 0 ? selectedIndex : 0);\n } else {\n const selectedTab = tabs.find(\n tab =>\n tab.hasAttribute('active') ||\n (tab as any).active ||\n tab.hasAttribute('selected') ||\n (tab as any).selected,\n );\n if (selectedTab) {\n const selectedTarget = selectedTab.getAttribute('target');\n if (selectedTarget) this.selectTab(selectedTarget);\n } else if (tabs.length > 0) {\n const firstTarget = tabs[0].getAttribute('target');\n if (firstTarget) this.selectTab(firstTarget);\n }\n }\n }\n\n render() {\n return html`<slot></slot>`;\n }\n}\n","import { LitElement, html } from 'lit';\nimport { property, state, query } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport sliderStyles from './slider.scss';\n\n/**\n * @label Slider\n * @tag wc-slider\n * @rawTag slider\n *\n * @summary Sliders allow users to make selections from a range of values.\n *\n * @fires {CustomEvent} input - Dispatched when the slider value changes during interaction.\n * @fires {CustomEvent} change - Dispatched when the slider interaction ends.\n *\n * @example\n * ```html\n * <wc-slider min=\"0\" max=\"100\" value=\"50\"></wc-slider>\n * ```\n */\nexport class Slider extends LitElement {\n static styles = [sliderStyles];\n\n /**\n * The minimum value of the slider.\n */\n @property({ type: Number }) min = 0;\n\n /**\n * The maximum value of the slider.\n */\n @property({ type: Number }) max = 100;\n\n /**\n * The current value of the slider.\n */\n @property({ type: Number, reflect: true }) value = 50;\n\n /**\n * The step increment for the slider.\n */\n @property({ type: Number }) step = 1;\n\n /**\n * Whether the slider is disabled.\n */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /**\n * Whether to show labels on the slider.\n */\n @property({ type: Boolean }) labeled = true;\n\n /**\n * Whether to show the current value beside the slider.\n */\n @property({ type: Boolean, attribute: 'show-value' }) showValue = false;\n\n @state() private isDragging = false;\n\n @query('.slider-container') private container!: HTMLElement;\n \n @query('.thumb') private thumbElement!: HTMLElement;\n\n private handleInput(event: MouseEvent | TouchEvent) {\n if (this.disabled) return;\n \n const rect = this.container.getBoundingClientRect();\n const clientX = 'touches' in event ? event.touches[0].clientX : (event as MouseEvent).clientX;\n \n // Calculate percentage relative to track width\n let percentage = (clientX - rect.left) / rect.width;\n percentage = Math.max(0, Math.min(1, percentage));\n \n const rawValue = this.min + percentage * (this.max - this.min);\n const steppedValue = Math.round(rawValue / this.step) * this.step;\n \n const oldValue = this.value;\n this.value = Math.max(this.min, Math.min(this.max, steppedValue));\n\n if (oldValue !== this.value) {\n this.dispatchEvent(new CustomEvent('input', { detail: { value: this.value }, bubbles: true, composed: true }));\n }\n }\n\n private onMouseDown(e: MouseEvent | TouchEvent) {\n if (this.disabled) return;\n \n e.preventDefault();\n this.isDragging = true;\n \n // Add dragging class for CSS state\n this.container.classList.add('dragging');\n this.thumbElement.classList.add('dragging');\n \n this.handleInput(e);\n \n window.addEventListener('mousemove', this.onMouseMove);\n window.addEventListener('mouseup', this.onMouseUp);\n window.addEventListener('touchmove', this.onMouseMove, { passive: false });\n window.addEventListener('touchend', this.onMouseUp);\n window.addEventListener('touchcancel', this.onMouseUp);\n }\n\n private onMouseMove = (e: MouseEvent | TouchEvent) => {\n if (this.isDragging) {\n e.preventDefault();\n this.handleInput(e);\n }\n };\n\n private onMouseUp = () => {\n if (!this.isDragging) return;\n \n this.isDragging = false;\n this.container.classList.remove('dragging');\n this.thumbElement.classList.remove('dragging');\n \n this.dispatchEvent(new CustomEvent('change', { detail: { value: this.value }, bubbles: true, composed: true }));\n \n window.removeEventListener('mousemove', this.onMouseMove);\n window.removeEventListener('mouseup', this.onMouseUp);\n window.removeEventListener('touchmove', this.onMouseMove);\n window.removeEventListener('touchend', this.onMouseUp);\n window.removeEventListener('touchcancel', this.onMouseUp);\n };\n\n private handleKeyDown(e: KeyboardEvent) {\n if (this.disabled) return;\n \n const increment = e.shiftKey ? this.step * 10 : this.step;\n let newValue = this.value;\n\n if (e.key === 'ArrowRight' || e.key === 'ArrowUp') {\n newValue = Math.min(this.max, this.value + increment);\n e.preventDefault();\n } else if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') {\n newValue = Math.max(this.min, this.value - increment);\n e.preventDefault();\n } else if (e.key === 'Home') {\n newValue = this.min;\n e.preventDefault();\n } else if (e.key === 'End') {\n newValue = this.max;\n e.preventDefault();\n }\n\n if (newValue !== this.value) {\n this.value = newValue;\n this.dispatchEvent(new CustomEvent('input', { detail: { value: this.value }, bubbles: true, composed: true }));\n this.dispatchEvent(new CustomEvent('change', { detail: { value: this.value }, bubbles: true, composed: true }));\n }\n }\n\n render() {\n const percentage = ((this.value - this.min) / (this.max - this.min)) * 100;\n\n return html`\n <div class=\"slider ${this.showValue ? 'with-value' : ''}\">\n <div \n class=\"slider-container ${this.disabled ? 'disabled' : ''}\"\n @mousedown=${this.onMouseDown}\n @touchstart=${this.onMouseDown}\n >\n <div class=\"track\">\n <div class=\"track-active\" style=${styleMap({ width: `${percentage}%` })}></div>\n </div>\n\n <div \n class=\"thumb\" \n role=\"slider\"\n aria-label=\"Slider\"\n tabindex=\"${this.disabled ? -1 : 0}\"\n aria-valuemin=${this.min}\n aria-valuemax=${this.max}\n aria-valuenow=${this.value}\n aria-disabled=${this.disabled}\n style=${styleMap({ left: `calc(${percentage}% - var(--thumb-half))` })}\n @keydown=${this.handleKeyDown}\n >\n ${this.labeled ? html`<div class=\"value-label\">${this.value}</div>` : ''}\n </div>\n </div>\n\n ${this.showValue ? html`<output class=\"value-display\" aria-live=\"polite\">${this.value}</output>` : ''}\n </div>\n `;\n }\n}","import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\n\nimport { throttle } from '@/__utils/throttle.js';\n\nimport styles from './table.scss';\n\nconst DEFAULT_CELL_WIDTH = 16; // in rem\n\nexport interface TableColumn {\n name: string;\n label: string;\n width?: number;\n fixed?: boolean;\n template?: (row: any, column: TableColumn) => string;\n}\n\n/**\n * @label Table\n * @tag wc-table\n * @rawTag table\n * @summary A configurable component for displaying tabular data.\n * @overview\n * <p>The table component displays rows of data with support for sorting, pagination, row selection, and fixed columns.</p>\n *\n * @fires {CustomEvent} cell-click - Dispatched when a table cell is clicked.\n * @fires {CustomEvent} selection-change - Dispatched when the row selection changes.\n * @fires {CustomEvent} sort - Dispatched when the table is sorted.\n * @fires {CustomEvent} page - Dispatched when the page or page size changes.\n *\n * @example\n * ```html\n * <wc-table columns=\"[{'name': 'name','label': 'Name','width': 16},{'name': 'age','label': 'Age','width': 7}]\" data=\"[{'name': 'John','age': 30},{'name': 'Jane','age': 25}]\"></wc-table>\n * ```\n * @tags display, data\n */\nexport class Table extends LitElement {\n static styles = [styles];\n\n /**\n * Grid columns configuration.\n * Each column can have: name, label, width (px), fixed (boolean), template (function).\n */\n @property({ type: Array })\n columns: TableColumn[] = [];\n\n /**\n * Grid data to display on table.\n */\n @property({ type: Array })\n data: any[] = [];\n\n /**\n * Row selection type. Set to `\"checkbox\"` to enable checkbox selection.\n */\n @property({ type: String, attribute: 'selection-type' })\n selectionType: 'checkbox' | undefined;\n\n /**\n * Array of selected row key values.\n */\n @property({ type: Array, attribute: 'selected-row-keys' })\n selectedRowKeys: string[] = [];\n\n /**\n * The field name used as the unique key for each row. Defaults to `\"id\"`.\n */\n @property({ type: String, attribute: 'key-field' })\n keyField: string = 'id';\n\n /**\n * If true, sorting and pagination are managed externally (controlled mode).\n */\n @property({ type: Boolean })\n managed: boolean = false;\n\n /**\n * If true, columns are sortable. Defaults to `true`.\n */\n @property({ type: Boolean })\n sortable: boolean = true;\n\n /**\n * The field name currently used for sorting.\n */\n @property({ type: String, attribute: 'sort-by' })\n sortBy: string = '';\n\n /**\n * The current sort order. Possible values are `\"asc\"` and `\"desc\"`. Defaults to `\"asc\"`.\n */\n @property({ type: String, attribute: 'sort-order' })\n sortOrder: 'asc' | 'desc' = 'asc';\n\n /**\n * If true, pagination is enabled. Defaults to `true`.\n */\n @property({ type: Boolean })\n paginate: boolean = false;\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items (used in managed/controlled mode).\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number | undefined;\n\n /**\n * Headline text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-headline' })\n emptyStateHeadline: string = 'No items';\n\n /**\n * Description text shown when the table has no data.\n */\n @property({ type: String, attribute: 'empty-state-description' })\n emptyStateDescription: string = 'There are no items to display';\n\n @state()\n private hoveredCell: { row?: any; column?: any } = {};\n\n @state()\n private isSelectAll: boolean = false;\n\n @state()\n private isSelectAllIntermediate: boolean = false;\n\n @state()\n private isHorizontallyScrolled: boolean = false;\n\n private onCellMouseOverThrottled = throttle((row: any, column: any) => {\n this.hoveredCell = { row, column };\n }, 30);\n\n private onSelectAllClick = () => {\n this.isSelectAll = !this.isSelectAll;\n let selectedRowKeys: string[] = [];\n if (this.isSelectAll) {\n selectedRowKeys = this.data\n .slice((this.page - 1) * this.pageSize, this.page * this.pageSize)\n .map(row => row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onRowSelectClick = (row: any) => {\n let selectedRowKeys = [...this.selectedRowKeys];\n if (selectedRowKeys.includes(row[this.keyField])) {\n this.isSelectAll = false;\n selectedRowKeys = selectedRowKeys.filter(\n rowId => rowId !== row[this.keyField],\n );\n } else {\n selectedRowKeys.push(row[this.keyField]);\n }\n this.onSelectChange(selectedRowKeys);\n };\n\n private onSelectChange(selectedRowKeys: string[]) {\n this.selectedRowKeys = selectedRowKeys;\n this.dispatchEvent(\n new CustomEvent('selection-change', {\n detail: {\n value: this.selectedRowKeys,\n isSelectAll: this.isSelectAll,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onCellClick(row: any, col: TableColumn, evt: MouseEvent) {\n this.dispatchEvent(\n new CustomEvent('cell-click', {\n detail: {\n record: row,\n column: col,\n altKey: evt.altKey,\n ctrlKey: evt.ctrlKey,\n metaKey: evt.metaKey,\n shiftKey: evt.shiftKey,\n },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private onScrollContainer = (event: Event) => {\n const target = event.target as HTMLElement;\n this.isHorizontallyScrolled = !!target.scrollLeft;\n };\n\n private get totalColumnsWidth(): number {\n let total = 0;\n if (this.selectionType === 'checkbox') {\n total += 3; // approximate checkbox column width in rem\n }\n this.columns.forEach(col => {\n total += col.width ?? DEFAULT_CELL_WIDTH;\n });\n return total;\n }\n\n private getTotalItems(): number {\n if (this.paginate && !this.managed && this.data) return this.data.length;\n return this.totalItems ?? 0;\n }\n\n private getSortIcon(col: TableColumn): string {\n if (this.sortBy === col.name) {\n return this.sortOrder === 'asc' ? 'keyboard_arrow_up' : 'keyboard_arrow_down';\n }\n return '';\n }\n\n private onSortClick(col: TableColumn) {\n if (this.sortBy === col.name) {\n if (this.sortOrder === 'asc') {\n this.sortOrder = 'desc';\n } else {\n this.sortBy = '';\n }\n } else {\n this.sortBy = col.name;\n this.sortOrder = 'asc';\n }\n this.dispatchEvent(\n new CustomEvent('sort', {\n detail: { sortBy: this.sortBy, sortOrder: this.sortOrder },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private renderHeader() {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col col-checkbox center\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.isSelectAll}\n .indeterminate=${this.isSelectAllIntermediate}\n @change=${this.onSelectAllClick}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(col => {\n const colWidth = col.width\n ? parseInt(String(col.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n class=${classMap({ col: true, sort: this.sortBy === col.name })}\n style=\"width: ${colWidth}rem\"\n >\n <div class=\"col-content\">\n <div class=\"col-text\">${col.label}</div>\n <div class=\"col-actions\">\n ${this.sortable\n ? html`\n <wc-button\n class=\"col-action\"\n color=\"secondary\"\n variant=\"text\"\n @click=${() => this.onSortClick(col)}\n >\n <wc-icon\n slot=\"icon\"\n name=${this.getSortIcon(col)}\n ></wc-icon>\n </wc-button>\n `\n : nothing}\n </div>\n </div>\n </div>\n `;\n if (col.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div class=\"header\">\n <div class=\"row\" style=\"min-width: ${this.totalColumnsWidth}rem\">\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n </div>\n `;\n }\n\n private renderBody() {\n let data = [...this.data];\n\n if (!this.managed) {\n if (this.sortable && this.sortBy) {\n data = data.sort((a, b) => {\n if (a[this.sortBy] < b[this.sortBy])\n return this.sortOrder === 'asc' ? -1 : 1;\n if (a[this.sortBy] > b[this.sortBy])\n return this.sortOrder === 'asc' ? 1 : -1;\n return 0;\n });\n }\n if (this.paginate) {\n data = data.slice(\n (this.page - 1) * this.pageSize,\n this.page * this.pageSize,\n );\n }\n }\n\n const rows = data.map(row => {\n const fixedCols: any[] = [];\n const scrollCols: any[] = [];\n\n if (this.selectionType === 'checkbox') {\n fixedCols.push(html`\n <div class=\"col center col-checkbox\">\n <div class=\"col-content\">\n <wc-checkbox\n class=\"checkbox\"\n .value=${this.selectedRowKeys.includes(row[this.keyField])}\n @change=${() => this.onRowSelectClick(row)}\n ></wc-checkbox>\n </div>\n </div>\n `);\n }\n\n this.columns.forEach(column => {\n const colWidth = column.width\n ? parseInt(String(column.width), 10)\n : DEFAULT_CELL_WIDTH;\n const colEl = html`\n <div\n tabindex=\"0\"\n class=${classMap({\n col: true,\n 'col-hover':\n this.hoveredCell.row === row &&\n this.hoveredCell.column === column,\n })}\n style=\"width: ${colWidth}rem\"\n @mouseover=${() => this.onCellMouseOverThrottled(row, column)}\n @focus=${() => this.onCellMouseOverThrottled(row, column)}\n @keydown=${(event: KeyboardEvent) => {\n if ((event.ctrlKey || event.metaKey) && event.key === 'c') {\n const elem = event.target as HTMLElement;\n window.navigator.clipboard\n .writeText(elem.innerText)\n .catch(() => {});\n }\n }}\n @click=${(evt: MouseEvent) => {\n const selection = window.getSelection();\n if (selection?.type !== 'Range') {\n this.onCellClick(row, column, evt);\n }\n }}\n >\n <div class=\"col-content\">\n ${column.template\n ? html`<div class=\"col-template\">\n ${unsafeHTML(column.template(row, column))}\n </div>`\n : html`<div class=\"col-text\" title=${row?.[column.name] ?? ''}>\n ${row?.[column.name]}\n </div>`}\n </div>\n </div>\n `;\n if (column.fixed) {\n fixedCols.push(colEl);\n } else {\n scrollCols.push(colEl);\n }\n });\n\n return html`\n <div\n class=${classMap({\n row: true,\n 'row-hover': this.hoveredCell.row === row,\n })}\n style=\"min-width: ${this.totalColumnsWidth}rem\"\n >\n <div class=\"fixed-columns columns-container\">${fixedCols}</div>\n <div class=\"scrollable-columns columns-container\">${scrollCols}</div>\n </div>\n `;\n });\n\n return html`<div class=\"body\">${rows}</div>`;\n }\n\n private renderEmptyState() {\n return html`\n <div class=\"empty-table\">\n <wc-empty-state\n class=\"empty-state content-center\"\n headline=${this.emptyStateHeadline}\n description=${this.emptyStateDescription}\n ></wc-empty-state>\n </div>\n `;\n }\n\n private renderPagination() {\n if (!this.paginate) return nothing;\n\n return html`\n <wc-pagination\n .page=${this.page}\n .pageSize=${this.pageSize}\n .totalItems=${this.getTotalItems()}\n @page=${(e: CustomEvent) => {\n this.page = e.detail.page;\n this.pageSize = e.detail.pageSize;\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }}\n ></wc-pagination>\n `;\n }\n\n render() {\n const tableClasses = {\n table: true,\n sortable: this.sortable,\n paginate: this.paginate,\n 'horizontal-scrolled': this.isHorizontallyScrolled,\n };\n\n return html`\n <div class=${classMap(tableClasses)}>\n <div class=\"table-scroll-container\" @scroll=${this.onScrollContainer}>\n ${this.renderHeader()}\n ${this.data && this.data.length ? this.renderBody() : this.renderEmptyState()}\n </div>\n <div class=\"table-footer\">${this.renderPagination()}</div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport type { PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './pagination.scss';\n\nconst DEFAULT_PAGE_SIZES = [10, 25, 50, 100];\n\n/**\n * @label Pagination\n * @tag wc-pagination\n * @rawTag pagination\n * @summary A pagination control with page size selector, item count display, and previous/next navigation.\n * @overview\n * <p>The pagination component provides controls for navigating through paged data sets.</p>\n *\n * @fires {CustomEvent} page - Dispatched when the page or page size changes. Detail: `{ page, pageSize }`.\n *\n * @example\n * ```html\n * <wc-pagination style=\"width: 100%;\" page=\"1\" page-size=\"10\" total-items=\"100\"></wc-pagination>\n * ```\n * @tags navigation, data\n */\nexport class Pagination extends LitElement {\n static styles = [styles];\n\n /**\n * The current page number (1-based). Defaults to `1`.\n */\n @property({ type: Number })\n page: number = 1;\n\n /**\n * The number of rows per page. Defaults to `10`.\n */\n @property({ type: Number, attribute: 'page-size' })\n pageSize: number = 10;\n\n /**\n * Total number of items.\n */\n @property({ type: Number, attribute: 'total-items' })\n totalItems: number = 0;\n\n /**\n * Supported page size options.\n */\n @property({ type: Array, attribute: 'page-sizes' })\n pageSizes: number[] = DEFAULT_PAGE_SIZES;\n\n protected override willUpdate(\n changedProperties: PropertyValues<Pagination>,\n ): void {\n // Normalize page-size options so the select always has valid numeric values.\n const normalizedPageSizes = [...new Set(\n this.pageSizes\n .map(size => Number(size))\n .filter(size => Number.isFinite(size) && size > 0)\n .map(size => Math.trunc(size)),\n )];\n\n if (!normalizedPageSizes.length) {\n normalizedPageSizes.push(...DEFAULT_PAGE_SIZES);\n }\n\n if (\n changedProperties.has('pageSizes') &&\n (this.pageSizes.length !== normalizedPageSizes.length ||\n this.pageSizes.some((size, index) => size !== normalizedPageSizes[index]))\n ) {\n this.pageSizes = normalizedPageSizes;\n }\n\n if (!this.pageSizes.includes(this.pageSize)) {\n this.pageSize = this.pageSizes[0] ?? DEFAULT_PAGE_SIZES[0];\n }\n\n if (!Number.isFinite(this.totalItems) || this.totalItems < 0) {\n this.totalItems = 0;\n }\n\n if (!Number.isFinite(this.page) || this.page < 1) {\n this.page = 1;\n }\n\n const maxPage = this.getTotalPages();\n if (this.page > maxPage) {\n this.page = maxPage;\n }\n }\n\n private getTotalPages(): number {\n if (this.totalItems <= 0) return 1;\n return Math.max(1, Math.ceil(this.totalItems / this.pageSize));\n }\n\n private setPage(nextPage: number) {\n const clampedPage = Math.min(Math.max(1, nextPage), this.getTotalPages());\n if (clampedPage === this.page) return;\n this.page = clampedPage;\n this.dispatchPageEvent();\n }\n\n private handlePageSizeChange(event: CustomEvent<{ value?: string }>) {\n const rawValue = event.detail?.value;\n const parsedPageSize = Number.parseInt(rawValue ?? '', 10);\n\n if (!Number.isFinite(parsedPageSize) || parsedPageSize <= 0) {\n return;\n }\n\n this.pageSize = parsedPageSize;\n this.page = 1;\n this.dispatchPageEvent();\n }\n\n private handlePreviousPage = () => {\n this.setPage(this.page - 1);\n };\n\n private handleNextPage = () => {\n this.setPage(this.page + 1);\n };\n\n private dispatchPageEvent() {\n this.dispatchEvent(\n new CustomEvent('page', {\n detail: { page: this.page, pageSize: this.pageSize },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n render() {\n const startItem = this.totalItems === 0 ? 0 : this.pageSize * (this.page - 1) + 1;\n const endItem = Math.min(this.pageSize * this.page, this.totalItems);\n const isFirstPage = this.page === 1;\n const isLastPage = this.pageSize * this.page >= this.totalItems;\n\n return html`\n <div class=\"pagination\">\n <div class=\"page-size\">\n <span class=\"page-size-label\">Items per page:</span>\n <wc-select\n class=\"page-size-select\"\n .value=${String(this.pageSize)}\n aria-label=\"Items per page\"\n @change=${this.handlePageSizeChange}\n >\n ${this.pageSizes.map(\n size => html`<wc-option value=${String(size)}>${size}</wc-option>`,\n )}\n </wc-select>\n </div>\n\n <div class=\"pagination-item-count\">\n <span class=\"pagination-text\">\n ${startItem} - ${endItem} of ${this.totalItems}\n </span>\n </div>\n\n <div class=\"pagination-actions\">\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Previous page\"\n ?disabled=${isFirstPage}\n @click=${this.handlePreviousPage}\n >\n <wc-icon name=\"keyboard_arrow_left\"></wc-icon>\n </wc-icon-button>\n <wc-icon-button\n class=\"nav-button\"\n color=\"secondary\"\n variant=\"text\"\n size=\"sm\"\n title=\"Next page\"\n ?disabled=${isLastPage}\n @click=${this.handleNextPage}\n >\n <wc-icon name=\"keyboard_arrow_right\"></wc-icon>\n </wc-icon-button>\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './sidebar-menu-item.scss';\n\n/**\n * @label Sidebar Menu Item\n * @tag wc-sidebar-menu-item\n * @rawTag sidebar-menu-item\n * @parentRawTag sidebar-menu\n * @summary A sidebar menu item represents a selectable leaf item in the sidebar navigation tree.\n *\n * @example\n * ```html\n * <wc-sidebar-menu>\n * <wc-sidebar-sub-menu label=\"Parent\" expanded>\n * <wc-sidebar-menu-item label=\"Child\"></wc-sidebar-menu-item>\n * </wc-sidebar-sub-menu>\n * </wc-sidebar-menu>\n * ```\n * @tags navigation\n */\nexport class SidebarMenuItem extends LitElement {\n static styles = [styles];\n\n /**\n * The value used to identify this item when selected.\n */\n @property({ type: String, reflect: true })\n value: string = '';\n\n /**\n * The display label for this item.\n */\n @property({ type: String, reflect: true })\n label: string = '';\n\n /**\n * Optional icon name to display before the label.\n */\n @property({ type: String, reflect: true })\n icon: string = '';\n\n /**\n * Optional hyperlink to navigate to on click.\n */\n @property({ type: String, reflect: true })\n href: string = '';\n\n /**\n * Sets or retrieves the window or frame at which to target content.\n */\n @property({ type: String, reflect: true })\n target: string = '_self';\n\n /**\n * If true, the user cannot interact with the item.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Whether the item is currently selected.\n */\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n /**\n * The nesting depth level (set automatically by the parent sidebar-menu).\n */\n @property({ type: Number, reflect: true })\n level: number = 0;\n\n @query('.sidebar-menu-item-content')\n private readonly _nativeElement!: HTMLElement | null;\n\n override focus() {\n this._nativeElement?.focus();\n }\n\n override blur() {\n this._nativeElement?.blur();\n }\n\n private _onClick = () => {\n if (this.disabled) return;\n\n this.dispatchEvent(\n new CustomEvent('sidebar-menu-item:click', {\n bubbles: true,\n composed: true,\n detail: { value: this.value, label: this.label },\n }),\n );\n };\n\n override render() {\n const classes = classMap({\n 'sidebar-menu-item': true,\n disabled: this.disabled,\n selected: this.selected,\n });\n\n const content = html`\n <wc-focus-ring class=\"focus-ring\" for=\"item\"></wc-focus-ring>\n <div class=\"background\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n <div class=\"sidebar-menu-item-content\">\n ${this.icon ? html`<wc-icon name=\"${this.icon}\"></wc-icon>` : ''}\n <span class=\"sidebar-menu-item-label\">${this.label}</span>\n </div>\n `;\n\n if (this.href) {\n return html`\n <a\n id=\"item\"\n href=\"${this.href}\"\n target=\"${this.target}\"\n class=\"${classes}\"\n aria-disabled=\"${this.disabled}\"\n tabindex=\"${this.disabled ? -1 : 0}\"\n @click=\"${this._onClick}\"\n >\n ${content}\n </a>\n `;\n }\n\n return html`\n <div\n id=\"item\"\n class=\"${classes}\"\n role=\"treeitem\"\n aria-label=\"${this.label}\"\n aria-selected=\"${String(this.selected)}\"\n aria-disabled=\"${this.disabled}\"\n tabindex=\"${this.disabled ? -1 : 0}\"\n @click=\"${this._onClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._onClick();\n }\n }}\"\n >\n ${content}\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport styles from './sidebar-sub-menu.scss';\n\n/**\n * @label Sidebar Sub Menu\n * @tag wc-sidebar-sub-menu\n * @rawTag sidebar-sub-menu\n * @parentRawTag sidebar-menu\n * @summary A sidebar sub menu groups sidebar menu items and handles expand/collapse behavior.\n *\n * @example\n * ```html\n * <wc-sidebar-sub-menu label=\"Parent\" expanded>\n * <wc-sidebar-menu-item label=\"Child\"></wc-sidebar-menu-item>\n * </wc-sidebar-sub-menu>\n * ```\n * @tags navigation\n */\nexport class SidebarSubMenu extends LitElement {\n static styles = [styles];\n\n @property({ type: String, reflect: true })\n value: string = '';\n\n @property({ type: String, reflect: true })\n label: string = '';\n\n @property({ type: String, reflect: true })\n icon: string = '';\n\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n @property({ type: Boolean, reflect: true })\n expanded: boolean = false;\n\n @property({ type: Number, reflect: true })\n level: number = 0;\n\n @query('.sidebar-sub-menu-inner')\n private readonly _nativeElement!: HTMLElement | null;\n\n override focus() {\n this._nativeElement?.focus();\n }\n\n override blur() {\n this._nativeElement?.blur();\n }\n\n connectedCallback() {\n super.connectedCallback();\n this._updateChildLevels();\n }\n\n updated(changedProps: Map<string, unknown>) {\n super.updated(changedProps);\n\n if (changedProps.has('expanded')) {\n this.setAttribute('aria-expanded', String(this.expanded));\n if (this.expanded) {\n this.setAttribute('data-expanded', '');\n } else {\n this.removeAttribute('data-expanded');\n }\n }\n }\n\n private _getChildNodes(): Element[] {\n return Array.from(this.children).filter(el => {\n const tag = el.tagName.toLowerCase();\n return tag === 'wc-sidebar-menu-item' || tag === 'wc-sidebar-sub-menu';\n });\n }\n\n private _updateChildLevels = () => {\n this._getChildNodes().forEach(child => {\n if ('level' in child) {\n // eslint-disable-next-line no-param-reassign\n (child as { level: number }).level = this.level + 1;\n }\n });\n };\n\n private _onClick = () => {\n if (this.disabled) return;\n\n if (this._getChildNodes().length > 0) {\n this.expanded = !this.expanded;\n }\n\n this.dispatchEvent(\n new CustomEvent('sidebar-menu-item:click', {\n bubbles: true,\n composed: true,\n detail: { value: this.value, label: this.label },\n }),\n );\n };\n\n override render() {\n const hasChildren = this._getChildNodes().length > 0;\n const wrapperClasses = classMap({\n 'sidebar-sub-menu': true,\n });\n const innerClasses = classMap({\n 'sidebar-sub-menu-inner': true,\n disabled: this.disabled,\n selected: this.selected,\n });\n\n const inlineStyles = styleMap({\n paddingLeft: `calc(var(--sidebar-menu-item-height, 2.5rem) * ${this.level})`,\n });\n\n return html`\n <div class=\"${wrapperClasses}\" style=\"${inlineStyles}\">\n <div\n id=\"item\"\n class=\"${innerClasses}\"\n role=\"treeitem\"\n aria-label=\"${this.label}\"\n aria-selected=\"${String(this.selected)}\"\n aria-disabled=\"${this.disabled}\"\n aria-expanded=\"${this.expanded}\"\n @click=\"${this._onClick}\"\n @keydown=\"${(e: KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n this._onClick();\n }\n }}\"\n tabindex=\"${this.disabled ? -1 : 0}\"\n >\n <wc-focus-ring class=\"focus-ring\" for=\"item\"></wc-focus-ring>\n <div class=\"background\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n <div class=\"sidebar-sub-menu-content\">\n ${this.icon ? html`<wc-icon name=\"${this.icon}\"></wc-icon>` : ''}\n <span class=\"sidebar-sub-menu-label\">${this.label}</span>\n </div>\n ${hasChildren\n ? html`\n <wc-icon class=\"expand-icon\" name=\"arrow_drop_down\" aria-hidden=\"true\"></wc-icon>\n `\n : ''}\n </div>\n <div class=\"sidebar-sub-menu-children ${(!hasChildren || !this.expanded) ? 'hidden' : ''}\">\n <slot @slotchange=\"${this._updateChildLevels}\"></slot>\n </div>\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './sidebar-menu.scss';\nimport { SidebarMenuItem } from './sidebar-menu-item.js';\nimport { SidebarSubMenu } from './sidebar-sub-menu.js';\n\ntype SidebarNode = SidebarMenuItem | SidebarSubMenu;\n\n/**\n * @label Sidebar Menu\n * @tag wc-sidebar-menu\n * @rawTag sidebar-menu\n * @summary A sidebar menu is a hierarchical structure that provides nested levels of navigation. It supports keyboard navigation, single/multi select, and expandable items.\n *\n * @example\n * ```html\n * <wc-sidebar-menu>\n * <wc-sidebar-sub-menu label=\"Parent\" expanded>\n * <wc-sidebar-menu-item label=\"Child 1\"></wc-sidebar-menu-item>\n * <wc-sidebar-menu-item label=\"Child 2\"></wc-sidebar-menu-item>\n * </wc-sidebar-sub-menu>\n * </wc-sidebar-menu>\n * ```\n * @tags navigation\n */\nexport class SidebarMenu extends LitElement {\n static styles = [styles];\n\n /**\n * The value of the currently selected item.\n */\n @property({ type: String, attribute: 'selected-item', reflect: true })\n selectedItem: string = '';\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('sidebar-menu-item:click', this._onItemClick as EventListener);\n this.addEventListener('keydown', this._onKeyDown);\n this.setAttribute('role', 'tree');\n }\n\n updated(changedProps: Map<string, unknown>) {\n super.updated(changedProps);\n\n if (changedProps.has('selectedItem')) {\n this._syncSelectedStateFromProperty();\n }\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener('sidebar-menu-item:click', this._onItemClick as EventListener);\n this.removeEventListener('keydown', this._onKeyDown);\n }\n\n private _isSidebarNode(element: Element): element is SidebarNode {\n const tag = element.tagName.toLowerCase();\n return tag === 'wc-sidebar-menu-item' || tag === 'wc-sidebar-sub-menu';\n }\n\n private _getTopLevelItems(): SidebarNode[] {\n return Array.from(this.children).filter(\n el => this._isSidebarNode(el),\n ) as SidebarNode[];\n }\n\n private _getChildNodes(item: SidebarSubMenu): SidebarNode[] {\n return Array.from(item.children).filter(\n child => this._isSidebarNode(child),\n ) as SidebarNode[];\n }\n\n private _getAllVisibleItems(): SidebarNode[] {\n const result: SidebarNode[] = [];\n const collect = (items: SidebarNode[]) => {\n items.forEach(item => {\n result.push(item);\n if (item instanceof SidebarSubMenu && item.expanded) {\n collect(this._getChildNodes(item));\n }\n });\n };\n collect(this._getTopLevelItems());\n return result;\n }\n\n private _onItemClick = (event: CustomEvent) => {\n const item = event.target as SidebarNode;\n if (item.disabled) return;\n\n const value = event.detail?.value ?? item.value ?? item.label;\n this.selectedItem = value;\n\n // Update selected state on all items\n this._updateSelectedState(value);\n\n this.dispatchEvent(\n new CustomEvent('sidebar-menu:change', {\n bubbles: true,\n composed: true,\n detail: { value, item },\n }),\n );\n };\n\n private _updateSelectedState(selectedValue: string) {\n const allItems = this._collectAllItems(this._getTopLevelItems());\n allItems.forEach(item => {\n const itemValue = item.value || item.label;\n // eslint-disable-next-line no-param-reassign\n item.selected = itemValue === selectedValue;\n });\n }\n\n private _collectAllItems(items: SidebarNode[]): SidebarNode[] {\n const result: SidebarNode[] = [];\n items.forEach(item => {\n result.push(item);\n if (item instanceof SidebarSubMenu) {\n result.push(...this._collectAllItems(this._getChildNodes(item)));\n }\n });\n return result;\n }\n\n private _syncSelectedStateFromProperty() {\n const allItems = this._collectAllItems(this._getTopLevelItems());\n allItems.forEach(item => {\n const itemValue = item.value || item.label;\n item.selected = itemValue === this.selectedItem;\n });\n }\n\n private _onKeyDown = (event: KeyboardEvent) => {\n const allVisible = this._getAllVisibleItems();\n const currentElement = event.composedPath().find(\n target => target instanceof SidebarMenuItem || target instanceof SidebarSubMenu,\n ) as SidebarNode | undefined;\n\n if (!currentElement) {\n return;\n }\n\n if (!allVisible.includes(currentElement)) {\n return;\n }\n\n const currentIndex = allVisible.indexOf(currentElement);\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n const nextIndex = (currentIndex + 1) % allVisible.length;\n allVisible[nextIndex].focus();\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n const prevIndex = currentIndex === 0 ? allVisible.length - 1 : currentIndex - 1;\n allVisible[prevIndex].focus();\n } else if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n currentElement.click();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (currentElement instanceof SidebarSubMenu && !currentElement.expanded) {\n currentElement.expanded = true;\n } else if (currentElement instanceof SidebarSubMenu) {\n const children = this._getChildNodes(currentElement);\n if (children.length > 0) {\n children[0].focus();\n }\n }\n } else if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (currentElement instanceof SidebarSubMenu && currentElement.expanded) {\n currentElement.expanded = false;\n }\n }\n };\n\n override render() {\n return html` <div class=\"sidebar-menu\"><slot></slot></div> `;\n }\n}\n","import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './snackbar.scss';\n\ntype SnackbarCloseReason = 'timeout' | 'dismiss' | 'action' | 'programmatic';\n\n/**\n * @label Snackbar\n * @tag wc-snackbar\n * @rawTag snackbar\n * @summary Snackbars provide brief messages about app processes at the bottom of the screen.\n *\n * @cssprop --snackbar-container-color - Container color for the snackbar.\n * @cssprop --snackbar-label-text-color - Label text color for the snackbar.\n * @cssprop --snackbar-action-text-color - Action text color.\n * @cssprop --snackbar-close-icon-color - Close icon color.\n * @cssprop --snackbar-border-radius - Border radius of the snackbar surface.\n * @cssprop --snackbar-offset-inline - Inline offset from viewport edges.\n * @cssprop --snackbar-offset-bottom - Bottom offset from viewport edge.\n * @cssprop --snackbar-z-index - Stacking order for the snackbar.\n *\n * @example\n * ```html\n * <wc-snackbar preview message=\"Message archived\" action-label=\"Undo\"></wc-snackbar>\n * ```\n * @tags display, feedback\n */\nexport class Snackbar extends LitElement {\n static styles = [styles];\n\n private static readonly GLOBAL_OPEN_EVENT = 'wc-snackbar-will-open';\n\n private static readonly EXIT_ANIMATION_MS = 180;\n\n @property({ type: Boolean, reflect: true }) open = false;\n\n @property({ type: String }) message = '';\n\n @property({ type: String, attribute: 'action-label' }) actionLabel = '';\n\n @property({ type: Boolean, attribute: 'show-close-icon' })\n showCloseIcon = false;\n\n @property({ type: Number }) duration = 4000;\n\n @property({ type: Boolean, reflect: true }) multiline = false;\n\n @property({ type: Boolean, reflect: true }) preview = false;\n\n @state() private dismissing = false;\n \n\n private hideTimer: ReturnType<typeof setTimeout> | null = null;\n\n private exitTimer: ReturnType<typeof setTimeout> | null = null;\n\n private readonly handleGlobalSnackbarOpen = (\n event: Event,\n ) => {\n const { source } = (event as CustomEvent<{ source?: Snackbar }>).detail;\n if (source && source !== this) {\n this.hide();\n }\n };\n\n connectedCallback() {\n super.connectedCallback();\n document.addEventListener(\n Snackbar.GLOBAL_OPEN_EVENT,\n this.handleGlobalSnackbarOpen,\n );\n }\n\n show() {\n this.dismissing = false;\n this.clearExitTimer();\n if (!this.open) {\n this.open = true;\n return;\n }\n\n this.scheduleAutoHide();\n }\n\n hide() {\n this.close('programmatic');\n }\n\n private close(reason: SnackbarCloseReason) {\n if (!this.open || this.dismissing) {\n return;\n }\n\n this.clearTimer();\n this.dismissing = true;\n this.clearExitTimer();\n this.exitTimer = setTimeout(() => {\n this.completeDismiss();\n }, Snackbar.EXIT_ANIMATION_MS);\n\n this.dispatchEvent(\n new CustomEvent('snackbar-close', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private completeDismiss() {\n this.clearExitTimer();\n this.dismissing = false;\n this.open = false;\n }\n\n private dispatchActionEvent() {\n this.dispatchEvent(\n new CustomEvent('snackbar-action', {\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private handleActionClick() {\n this.dispatchActionEvent();\n this.close('action');\n }\n\n private handleCloseClick() {\n this.close('dismiss');\n }\n\n private clearTimer() {\n if (this.hideTimer !== null) {\n clearTimeout(this.hideTimer);\n this.hideTimer = null;\n }\n }\n\n private clearExitTimer() {\n if (this.exitTimer !== null) {\n clearTimeout(this.exitTimer);\n this.exitTimer = null;\n }\n }\n\n private handleAnimationEnd(event: AnimationEvent) {\n if (event.animationName === 'snackbar-exit' && this.dismissing) {\n this.completeDismiss();\n }\n }\n\n private scheduleAutoHide() {\n this.clearTimer();\n if (!this.open || this.duration <= 0) {\n return;\n }\n\n this.hideTimer = setTimeout(() => {\n this.close('timeout');\n }, this.duration);\n }\n\n protected updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('open')) {\n if (this.open) {\n document.dispatchEvent(\n new CustomEvent(Snackbar.GLOBAL_OPEN_EVENT, {\n detail: { source: this },\n }),\n );\n }\n\n this.scheduleAutoHide();\n }\n }\n\n disconnectedCallback() {\n document.removeEventListener(\n Snackbar.GLOBAL_OPEN_EVENT,\n this.handleGlobalSnackbarOpen,\n );\n this.clearExitTimer();\n this.clearTimer();\n super.disconnectedCallback();\n }\n\n render() {\n const liveRole =\n this.actionLabel || this.showCloseIcon ? 'alert' : 'status';\n\n return html`\n <div\n class=${classMap({\n snackbar: true,\n open: !this.preview && this.open,\n preview: this.preview,\n dismissing: this.dismissing,\n multiline: this.multiline,\n })}\n role=${liveRole}\n aria-live=\"polite\"\n @animationend=${this.handleAnimationEnd}\n >\n <div class=\"label\">\n <slot>${this.message}</slot>\n </div>\n\n ${this.actionLabel\n ? html`<wc-button class=\"action\" variant='text' size='small' @click=${this.handleActionClick}>\n ${this.actionLabel}\n </wc-button>`\n : nothing}\n\n ${this.showCloseIcon\n ? html`<wc-icon-button\n class=\"close\"\n variant='text' \n size='small'\n aria-label=\"Dismiss notification\"\n @click=${this.handleCloseClick}\n >\n <wc-icon name=\"close\"></wc-icon>\n </wc-icon-button>`\n : nothing}\n </div>\n `;\n }\n}\n","import { html, LitElement } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\n\nimport { spread } from '@/__directive/spread.js';\n\nimport styles from './radio.scss';\n\n/**\n * @label Radio\n * @tag wc-radio\n * @rawTag radio\n * @summary Allows selection of a single option from a set.\n * @overview\n * <p>Radio buttons follow the Material Design 3 specifications with clear focus, hover, and selected states.</p>\n *\n * @cssprop --radio-size: Size of the outer radio circle.\n * @cssprop --radio-dot-size: Size of the inner dot when selected.\n * @cssprop --radio-selected-color: Color of the radio when selected.\n * @cssprop --radio-unselected-color: Color of the radio outline when unselected.\n * @cssprop --radio-state-layer-size: Size of the state layer for touch target.\n * @cssprop --radio-disabled-opacity: Opacity applied when the radio is disabled.\n *\n * @fires {CustomEvent} change - Dispatched when the radio selection changes.\n * @fires {CustomEvent} blur - Dispatched when the radio loses focus.\n * @fires {CustomEvent} focus - Dispatched when the radio receives focus.\n *\n * @example\n * ```html\n * <wc-radio name=\"fruits\" value=\"apple\" label=\"Apple\"></wc-radio>\n * ```\n * @tags input, form\n */\ntype RadioDirection = 1 | -1;\n\nexport class Radio extends LitElement {\n private static readonly DIRECTION_NEXT: RadioDirection = 1;\n private static readonly DIRECTION_PREVIOUS: RadioDirection = -1;\n\n static styles = [styles];\n\n /**\n * The input field name for grouping radios.\n */\n @property({ type: String })\n name: string = '';\n\n /**\n * The submitted value when this radio is selected.\n */\n @property({ type: String })\n value: string = '';\n\n /**\n * The radio label.\n */\n @property({ type: String })\n label: string = '';\n\n /**\n * Whether the radio is selected.\n */\n @property({ type: Boolean, reflect: true })\n checked: boolean = false;\n\n /**\n * If true, required icon is shown. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n required: boolean = false;\n\n /**\n * If true, the radio is readonly. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n readonly: boolean = false;\n\n /**\n * If true, the user cannot interact with the radio. Defaults to `false`.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n /**\n * Configuration object for aria attributes.\n */\n @property({ type: Object })\n configAria: Record<string, string> = {};\n\n @state()\n private hasFocus = false;\n\n @state()\n private isActive = false;\n\n @state()\n private slotHasContent = false;\n\n @state()\n private isGroupFocusTarget = false;\n\n @query('.container')\n private containerElement?: HTMLElement;\n\n @query('.input-native')\n private nativeElement?: HTMLInputElement;\n\n private tabindex?: number;\n\n connectedCallback() {\n super.connectedCallback();\n this.handleInitialAttributes();\n window.addEventListener('mouseup', this.windowMouseUp);\n window.addEventListener('keyup', this.windowKeyUp);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n window.removeEventListener('mouseup', this.windowMouseUp);\n window.removeEventListener('keyup', this.windowKeyUp);\n }\n\n firstUpdated() {\n this.slotHasContent = this.hasChildNodes() || !!this.label;\n this.updateGroupFocusTarget();\n }\n\n updated(changedProps: Map<string, unknown>) {\n if (changedProps.has('label')) {\n this.slotHasContent = this.hasChildNodes() || !!this.label;\n }\n\n if (changedProps.has('checked') && this.checked) {\n this.uncheckSiblings();\n }\n\n if (changedProps.has('checked') || changedProps.has('name')) {\n this.updateGroupFocusTarget();\n }\n }\n\n private handleInitialAttributes() {\n if (this.hasAttribute('tabindex')) {\n const attrValue = this.getAttribute('tabindex');\n if (attrValue !== null) {\n this.tabindex = parseInt(attrValue, 10);\n }\n this.removeAttribute('tabindex');\n }\n\n Array.from(this.attributes).forEach(attr => {\n if (attr.name.startsWith('aria-')) {\n this.configAria[attr.name] = attr.value;\n this.removeAttribute(attr.name);\n }\n });\n }\n\n private windowMouseUp = () => {\n if (this.isActive) {\n this.isActive = false;\n }\n };\n\n private windowKeyUp = (evt: KeyboardEvent) => {\n if (this.isActive && evt.key === ' ') {\n evt.preventDefault();\n this.isActive = false;\n }\n };\n\n private mouseDownHandler = () => {\n this.isActive = true;\n };\n\n private keyDownHandler = (evt: KeyboardEvent) => {\n if (evt.key === ' ') {\n evt.preventDefault();\n this.isActive = true;\n this.selectRadio(evt);\n } else if (evt.key === 'ArrowRight' || evt.key === 'ArrowDown') {\n evt.preventDefault();\n this.navigateGroup(Radio.DIRECTION_NEXT);\n } else if (evt.key === 'ArrowLeft' || evt.key === 'ArrowUp') {\n evt.preventDefault();\n this.navigateGroup(Radio.DIRECTION_PREVIOUS);\n }\n };\n\n private clickHandler = (ev: MouseEvent | KeyboardEvent) => {\n this.selectRadio(ev);\n };\n\n private blurHandler = (ev: FocusEvent) => {\n this.hasFocus = false;\n this.dispatchEvent(\n new CustomEvent('blur', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private focusHandler = (ev: FocusEvent) => {\n this.hasFocus = true;\n this.dispatchEvent(\n new CustomEvent('focus', {\n detail: ev,\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private selectRadio(ev?: Event) {\n if (this.disabled || this.readonly) return;\n\n if (!this.checked) {\n this.checked = true;\n this.uncheckSiblings();\n this.dispatchChange(ev);\n }\n\n this.containerElement?.focus();\n }\n\n private dispatchChange(ev?: Event) {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: this.value, checked: this.checked, originalEvent: ev },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private uncheckSiblings() {\n if (!this.name || !this.checked) return;\n const radios = this.getGroupRadios();\n\n radios.forEach(radio => {\n if (radio === this) return;\n radio.checked = false;\n });\n }\n\n private getGroupRadios(): Radio[] {\n if (!this.name) return [this];\n const scopeRoot = this.closest('form') ?? document;\n return Array.from(\n scopeRoot.querySelectorAll<Radio>(`wc-radio[name=\"${this.name}\"]`),\n );\n }\n\n private isRadioEnabled(radio: Radio) {\n return !radio.disabled && !radio.readonly;\n }\n\n private updateGroupFocusTarget() {\n const group = this.getGroupRadios();\n if (!group.length) return;\n\n const enabledGroup = group.filter(radio => this.isRadioEnabled(radio));\n if (!enabledGroup.length) {\n group.forEach(radio => {\n radio.isGroupFocusTarget = false;\n });\n return;\n }\n\n const target =\n enabledGroup.find(radio => radio.checked) || enabledGroup[0];\n\n group.forEach(radio => {\n radio.isGroupFocusTarget = radio === target;\n });\n }\n\n private navigateGroup(direction: RadioDirection) {\n const group = this.getGroupRadios().filter(radio =>\n this.isRadioEnabled(radio),\n );\n if (!group.length) return;\n\n const currentIndex = group.indexOf(this);\n const startIndex = currentIndex >= 0 ? currentIndex : 0;\n const nextIndex = (startIndex + direction + group.length) % group.length;\n const target = group[nextIndex];\n\n target.selectRadio();\n target.containerElement?.focus();\n }\n\n /**\n * Sets focus on the radio.\n */\n focus() {\n this.containerElement?.focus();\n }\n\n /**\n * Removes focus from the radio.\n */\n blur() {\n this.containerElement?.blur();\n }\n\n render() {\n const cssClasses = {\n radio: true,\n 'state-checked': this.checked,\n 'has-focus': this.hasFocus,\n active: this.isActive,\n disabled: this.disabled,\n readonly: this.readonly,\n required: this.required,\n 'has-content': this.slotHasContent,\n };\n\n return html`\n <label class=${classMap(cssClasses)}>\n <div\n class=\"container\"\n tabindex=${this.isGroupFocusTarget\n ? this.tabindex !== undefined\n ? this.tabindex\n : 0\n : -1}\n role=\"radio\"\n aria-disabled=${this.disabled}\n aria-required=${this.required}\n aria-checked=${this.checked}\n @click=${this.clickHandler}\n @mousedown=${this.mouseDownHandler}\n @keydown=${this.keyDownHandler}\n @blur=${this.blurHandler}\n @focus=${this.focusHandler}\n ${spread(this.configAria)}\n >\n <div class=\"state-layer\"></div>\n <div class=\"outer-circle\"></div>\n <div class=\"inner-circle\"></div>\n </div>\n\n <input\n type=\"radio\"\n class=\"input-native\"\n name=${this.name}\n .value=${this.value}\n .checked=${this.checked}\n aria-hidden=\"true\"\n ?required=${this.required}\n ?disabled=${this.disabled}\n tabindex=\"-1\"\n />\n\n ${this.label\n ? html`<div class=\"label\">${this.label}</div>`\n : html`<div class=\"label slot-container\"><slot></slot></div>`}\n </label>\n `;\n }\n}\n","import { css, html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport type { MenuItem } from '../menu/menu-item/menu-item.js';\n\n/**\n * @label Select Option\n * @tag wc-option\n * @rawTag option\n * @parentRawTag select\n *\n * @summary A declarative option element for use inside wc-select.\n *\n * @example\n * ```html\n * <wc-select label=\"Fruit\">\n * <wc-option value=\"apple\">Apple</wc-option>\n * <wc-option value=\"banana\">Banana</wc-option>\n * </wc-select>\n * ```\n */\nexport class SelectOptionElement extends LitElement {\n static override styles = [\n css`\n :host {\n display: contents;\n }\n :host([filtered]) {\n display: none;\n }\n `,\n ];\n\n /**\n * The option's submitted value.\n */\n @property({ type: String, reflect: true })\n value: string = '';\n\n /**\n * Optional Material Symbol icon name shown before the label.\n */\n @property({ type: String, reflect: true })\n icon: string = '';\n\n /**\n * Disables the option so it cannot be selected.\n */\n @property({ type: Boolean, reflect: true })\n disabled: boolean = false;\n\n // ── Managed by wc-select ──────────────────────────────────────────────────\n\n /** Reflects whether this option is currently selected. Set by wc-select. */\n @property({ type: Boolean, reflect: true })\n selected: boolean = false;\n\n /**\n * When true the menu stays open after selection (used for multi-select).\n * Set by wc-select.\n */\n @property({ type: Boolean, attribute: 'keep-open' })\n keepOpen: boolean = false;\n\n /**\n * When true the option is hidden and excluded from keyboard navigation\n * because it does not match the current typeahead search query.\n * Set by wc-select.\n */\n @property({ type: Boolean, reflect: true })\n filtered: boolean = false;\n\n @query('wc-menu-item')\n private readonly _menuItemEl?: HTMLElement;\n\n /**\n * Returns the inner `wc-menu-item` element.\n * `wc-menu` discovers this via its `items` getter which checks `el.item`\n * as a `MenuItem` proxy, so keyboard navigation and activation work\n * without `wc-option` extending `MenuItem` directly.\n */\n get item(): MenuItem | null {\n const el = this._menuItemEl;\n // Narrow to MenuItem — the shadow DOM only ever contains a wc-menu-item\n // (a MenuItem subclass), so this cast is safe by construction.\n return el != null ? (el as unknown as MenuItem) : null;\n }\n\n override render() {\n return html`\n <wc-menu-item\n value=${this.value}\n ?disabled=${this.disabled || this.filtered}\n ?selected=${this.selected}\n ?keep-open=${this.keepOpen}\n >\n ${this.icon\n ? html`<wc-icon name=${this.icon} slot=\"leading-icon\"></wc-icon>`\n : nothing}\n <slot>${this.value === '' ? 'None' : ''}</slot>\n ${this.selected && this.keepOpen\n ? html`<wc-icon\n name=\"check\"\n slot=\"trailing-supporting-text\"\n ></wc-icon>`\n : nothing}\n </wc-menu-item>\n `;\n }\n}\n","import { html, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport BaseInput from '../input/BaseInput.js';\nimport styles from './select.scss';\nimport type { Menu } from '../menu/menu/menu.js';\nimport { SelectOptionElement } from './option.js';\n\nexport interface SelectOption {\n label: string;\n value: string;\n icon?: string;\n}\n\n/**\n * @label Select\n * @tag wc-select\n * @rawTag select\n *\n * @summary A dropdown select component supporting single and multi-select with optional typeahead search.\n * @overview\n * Select builds on wc-field and wc-menu to provide a fully-featured dropdown picker.\n *\n * - Single and multi-select modes\n * - Client-side typeahead with `search=\"contains\"`\n * - Server-side typeahead with `search=\"managed\"`\n * - Multi-select chips display\n *\n * @example\n * ```html\n * <wc-select label=\"Fruit\" placeholder=\"Pick a fruit...\">\n * <wc-option value=\"apple\">Apple</wc-option>\n * <wc-option value=\"banana\">Banana</wc-option>\n * </wc-select>\n * ```\n * @tags form\n */\nexport class Select extends BaseInput {\n static styles = [styles];\n\n private readonly _menuId = `wc-select-menu-${Math.random().toString(36).slice(2, 9)}`;\n\n /**\n * Array of options to display in the dropdown.\n * Setting this property creates matching `<wc-option>` children automatically.\n */\n @property({ type: Array })\n options: SelectOption[] = [];\n\n /**\n * The selected value. For multi-select, a comma-separated list of values.\n */\n @property({ type: String, reflect: true })\n value: string = '';\n\n /**\n * Enable multi-select mode.\n */\n @property({ type: Boolean, reflect: true })\n multiple: boolean = false;\n\n /**\n * Enable typeahead search.\n * - `'contains'`: filters options client-side.\n * - `'managed'`: emits a `select-search` event for server-controlled filtering.\n */\n @property({ type: String })\n search: '' | 'contains' | 'managed' = '';\n\n /**\n * Placeholder text shown when no value is selected.\n */\n @property({ type: String })\n placeholder: string = '';\n\n /**\n * Label displayed above the field.\n */\n @property({ type: String })\n label: string = '';\n\n /**\n * Visual variant of the field.\n */\n @property({ type: String })\n variant: 'filled' | 'outlined' | 'default' = 'default';\n\n /**\n * Helper text displayed below the field.\n */\n @property({ type: String, attribute: 'helper-text' })\n helperText: string = '';\n\n @property({ type: Boolean })\n error: boolean = false;\n\n @property({ type: String, attribute: 'error-text' })\n errorText: string = '';\n\n @property({ type: Boolean })\n warning: boolean = false;\n\n @property({ type: String, attribute: 'warning-text' })\n warningText: string = '';\n\n @state()\n private _open: boolean = false;\n\n @state()\n private _focused: boolean = false;\n\n @state()\n private _searchQuery: string = '';\n\n /** True when all options are filtered out by the current search query. */\n @state()\n private _noOptionsVisible: boolean = false;\n\n @query('.select-trigger')\n private _triggerEl?: HTMLElement;\n\n private get _menu(): Menu | null {\n return (this.renderRoot?.querySelector('wc-menu') as unknown as Menu) ?? null;\n }\n\n @query('.search-input')\n private _searchInputEl?: HTMLInputElement;\n\n override focus() {\n this._triggerEl?.focus();\n }\n\n override blur() {\n this._triggerEl?.blur();\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n\n protected override updated(changedProperties: Map<string, unknown>) {\n if (changedProperties.has('options')) {\n this._syncProgrammaticOptions();\n }\n this._syncOptionStates();\n }\n\n // ── Programmatic options ───────────────────────────────────────────────────\n\n /**\n * Reconciles the `options` property with auto-generated `<wc-option>` light-DOM\n * children (marked `data-generated`). Declarative children placed by the\n * consumer are left untouched.\n */\n private _syncProgrammaticOptions() {\n this.querySelectorAll('wc-option[data-generated]').forEach(el => el.remove());\n for (const opt of this.options) {\n const el = new SelectOptionElement();\n el.value = opt.value;\n if (opt.icon) el.icon = opt.icon;\n el.textContent = opt.label || (opt.value === '' ? 'None' : '');\n el.dataset.generated = '';\n this.appendChild(el);\n }\n }\n\n // ── Option state sync ──────────────────────────────────────────────────────\n\n /**\n * Pushes `selected`, `keepOpen`, and `filtered` state onto every `<wc-option>`\n * child element so each one can render itself correctly.\n */\n private _syncOptionStates() {\n const optEls = Array.from(\n this.querySelectorAll<SelectOptionElement>('wc-option'),\n );\n let visibleCount = 0;\n for (const opt of optEls) {\n opt.selected = this._isSelected(opt.value);\n opt.keepOpen = this.multiple;\n if (this.search && this.search !== 'managed' && this._searchQuery) {\n const q = this._searchQuery.toLowerCase();\n const label = opt.textContent?.trim() ?? '';\n opt.filtered = !label.toLowerCase().includes(q);\n if (!opt.filtered) visibleCount += 1;\n } else {\n opt.filtered = false;\n visibleCount += 1;\n }\n }\n this._noOptionsVisible = visibleCount === 0;\n }\n\n // ── Helpers ────────────────────────────────────────────────────────────────\n\n private get _selectedValues(): string[] {\n if (!this.value) return [];\n return this.value\n .split(',')\n .map(v => v.trim())\n .filter(Boolean);\n }\n\n private _isSelected(value: string): boolean {\n if (!this.multiple) {\n return this.value === value;\n }\n return this._selectedValues.includes(value);\n }\n\n /** Returns the display label for a given option value. */\n private _getLabelForValue(val: string): string {\n for (const opt of this.querySelectorAll<SelectOptionElement>('wc-option')) {\n if (opt.value === val) {\n const label = opt.textContent?.trim();\n if (label) return label;\n return val === '' ? 'None' : val;\n }\n }\n // Fallback to options array (before wc-option children are created)\n const programmaticLabel = this.options.find(o => o.value === val)?.label;\n if (programmaticLabel) return programmaticLabel;\n return val === '' ? 'None' : val;\n }\n\n private get _displayLabel(): string {\n if (!this.value) return '';\n const firstValue = this._selectedValues[0];\n if (!firstValue) return '';\n return this._getLabelForValue(firstValue);\n }\n\n private get _isPopulated(): boolean {\n return !!this.value;\n }\n\n // ── Menu open/close ────────────────────────────────────────────────────────\n\n private _openMenu() {\n if (this.disabled || this.readonly) return;\n this._open = true;\n this._focused = true;\n this._triggerEl?.focus();\n const menu = this._menu;\n if (menu && this._triggerEl) {\n menu.anchorElement = this._triggerEl;\n const triggerWidth = this._triggerEl.getBoundingClientRect().width;\n if (triggerWidth < 240) {\n menu.style.setProperty('--menu-width', '240px');\n } else {\n menu.style.setProperty('--menu-width', `${Math.ceil(triggerWidth)}px`);\n }\n menu.show();\n }\n if (this.search) {\n this._searchQuery = '';\n // Use rAF so that the search input receives focus *after* wc-menu has\n // finished showing and potentially focused a menu item.\n this.updateComplete.then(() => {\n requestAnimationFrame(() => {\n this._searchInputEl?.focus();\n });\n });\n }\n }\n\n private _closeMenu() {\n if (!this._open) return;\n this._open = false;\n this._focused = false;\n this._searchQuery = '';\n this._menu?.close();\n }\n\n // ── Event handlers ─────────────────────────────────────────────────────────\n\n private _handleTriggerClick(event: MouseEvent) {\n event.stopPropagation();\n // Ignore clicks that originated inside the search input — those should not\n // toggle the menu (the input needs to stay open so the user can type).\n if (event.target instanceof HTMLInputElement) {\n return;\n }\n if (this._open) {\n this._closeMenu();\n } else {\n this._openMenu();\n }\n }\n\n private _handleFieldClick(event: MouseEvent) {\n const eventPath = event.composedPath();\n\n if (\n eventPath.includes(this._triggerEl as EventTarget) ||\n eventPath.some(\n target =>\n target instanceof HTMLInputElement ||\n (target instanceof HTMLElement &&\n (target.closest('.clear-btn') != null ||\n target.matches('wc-icon-button'))),\n )\n ) {\n return;\n }\n\n if (this._open) {\n this._closeMenu();\n } else {\n this._openMenu();\n }\n }\n\n private _handleTriggerKeyDown(event: KeyboardEvent) {\n // When the typeahead search input is active, let the input handle its own\n // keys (Space, Enter, etc.). Only intercept Escape to close the menu.\n if (event.target instanceof HTMLInputElement) {\n if (event.key === 'Escape') {\n event.preventDefault();\n this._closeMenu();\n }\n return;\n }\n switch (event.key) {\n case 'Enter':\n case ' ':\n case 'ArrowDown':\n event.preventDefault();\n if (!this._open) this._openMenu();\n break;\n case 'Escape':\n if (this._open) {\n event.preventDefault();\n this._closeMenu();\n }\n break;\n default:\n break;\n }\n }\n\n private _handleMenuClosed() {\n this._open = false;\n this._focused = false;\n this._searchQuery = '';\n }\n\n private _handleMenuItemActivate(event: CustomEvent) {\n const item = event.detail?.item as { value: string } | undefined;\n if (!item) return;\n\n const val = item.value;\n\n if (val === undefined) return;\n\n if (this.multiple) {\n if (val === '') return;\n const values = this._selectedValues;\n const idx = values.indexOf(val);\n if (idx >= 0) {\n values.splice(idx, 1);\n } else {\n values.push(val);\n }\n this.value = values.join(',');\n } else {\n this.value = val;\n this._closeMenu();\n }\n\n this._dispatchChange();\n }\n\n private _dispatchChange() {\n this.dispatchEvent(\n new CustomEvent('change', {\n detail: { value: this.value },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _handleSearchInput(event: InputEvent) {\n this._searchQuery = (event.target as HTMLInputElement).value;\n if (this.search === 'managed') {\n this.dispatchEvent(\n new CustomEvent('select-search', {\n detail: { value: this._searchQuery },\n bubbles: true,\n composed: true,\n }),\n );\n }\n }\n\n private _handleChipDismiss(event: CustomEvent, chipValue: string) {\n event.stopPropagation();\n const values = this._selectedValues.filter(v => v !== chipValue);\n this.value = values.join(',');\n this._dispatchChange();\n }\n\n private _renderEmptyState() {\n const hasSearchQuery = this._searchQuery.trim().length > 0;\n\n return html`\n <wc-empty-state\n class=\"select-empty-state content-center\"\n illustration=\"no-document\"\n headline=${hasSearchQuery ? 'No results found' : 'No options available'}\n description=${hasSearchQuery\n ? 'Try a different search term.'\n : 'There is nothing to select right now.'}\n ></wc-empty-state>\n `;\n }\n\n // ── Render helpers ─────────────────────────────────────────────────────────\n\n private _renderTriggerContent() {\n // Typeahead: when open, show a text input for filtering\n if (this.search && this._open) {\n return html`<input\n class=\"search-input\"\n .value=${this._searchQuery}\n placeholder=${this._displayLabel || this.placeholder}\n @input=${this._handleSearchInput}\n />`;\n }\n\n // Multi-select: show chips for selected items\n if (this.multiple && this._selectedValues.length > 0) {\n return html`<div class=\"chips-container\">\n ${this._selectedValues.map(\n val => html`\n <wc-chip\n dismissible\n value=${val}\n @tag--dismiss=${(e: CustomEvent) =>\n this._handleChipDismiss(e, val)}\n >${this._getLabelForValue(val)}</wc-chip\n >\n `,\n )}\n </div>`;\n }\n\n // Single select: show selected label or placeholder\n const label = this._displayLabel;\n if (!label) {\n return html`<span class=\"placeholder\">${this.placeholder}</span>`;\n }\n return html`<span class=\"display-value\">${label}</span>`;\n }\n\n private _renderFieldEnd() {\n return html`\n <wc-icon\n class=${classMap({\n 'dropdown-icon': true,\n 'dropdown-icon--open': this._open,\n })}\n name=\"arrow_drop_down\"\n ></wc-icon>\n `;\n }\n\n render() {\n return html`\n <wc-field\n label=${this.label}\n ?required=${this.required}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?skeleton=${this.skeleton}\n helper-text=${this.helperText}\n ?error=${this.error}\n error-text=${this.errorText}\n ?warning=${this.warning}\n warning-text=${this.warningText}\n variant=${this.variant}\n ?populated=${this._isPopulated || this._open}\n ?focused=${this._focused}\n .host=${this}\n class=\"select-field\"\n @click=${this._handleFieldClick}\n >\n <div\n class=\"select-trigger\"\n tabindex=${this.disabled ? -1 : 0}\n role=\"combobox\"\n aria-label=${this.label || this.placeholder || 'Select option'}\n aria-controls=${this._menuId}\n aria-expanded=${String(this._open)}\n aria-haspopup=\"listbox\"\n @click=${this._handleTriggerClick}\n @keydown=${this._handleTriggerKeyDown}\n >\n ${this._renderTriggerContent()}\n </div>\n\n <div slot=\"field-end\" class=\"field-end-wrapper\">\n ${this._renderFieldEnd()}\n </div>\n </wc-field>\n\n <wc-menu\n id=${this._menuId}\n placement=\"bottom-start\"\n aria-label=${this.label || 'Options'}\n @closed=${this._handleMenuClosed}\n @menu-item-activate=${(e: CustomEvent) =>\n this._handleMenuItemActivate(e)}\n >\n <slot></slot>\n ${this._noOptionsVisible ? this._renderEmptyState() : nothing}\n </wc-menu>\n `;\n }\n}\n\n","import { html, LitElement, nothing } from 'lit';\nimport { property, query, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { dispatchActivationClick, isActivationClick } from '@/__utils/dispatch-event-utils.js';\nimport { observerSlotChangesWithCallback } from '@/__utils/observe-slot-change.js';\nimport { throttle } from '@/__utils/throttle.js';\nimport styles from './navigation-rail-item.scss';\n\n/**\n * @label Navigation Rail Item\n * @tag wc-navigation-rail-item\n * @rawTag navigation-rail-item\n * @parentRawTag navigation-rail\n *\n * @summary An individual item within a navigation rail.\n * @overview\n * <p>Navigation rail items display a destination with an icon and optional label.</p>\n *\n * @example\n * ```html\n * <wc-navigation-rail-item>\n * <wc-icon slot=\"icon\">home</wc-icon>\n * Home\n * </wc-navigation-rail-item>\n * ```\n * @tags navigation\n */\nexport class NavigationRailItem extends LitElement {\n #id = crypto.randomUUID();\n\n static styles = [styles];\n\n /** Whether this item is currently active/selected. */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /** Whether this item is disabled. */\n @property({ type: Boolean, reflect: true }) disabled = false;\n\n /** Whether the parent rail is in collapsed mode (labels hidden). */\n @property({ type: Boolean, reflect: true }) collapsed = false;\n\n /** If provided, the item renders as a link. */\n @property({ reflect: true }) href?: string;\n\n /** Link target. */\n @property() target: string = '_self';\n\n /** Value used for identification when managing active state externally. */\n @property({ reflect: true }) value?: string;\n\n /** Reason the item is disabled (shown to screen readers). */\n @property({ attribute: 'disabled-reason' }) disabledReason: string = '';\n\n /** Sets the delay for throttle in milliseconds. Defaults to 200 milliseconds. */\n @property({ type: Number }) throttleDelay = 200;\n\n @state() private _isPressed = false;\n\n @state() private _hasLabel = false;\n\n @state() private _hasActiveIcon = false;\n\n @query('.item-element') readonly itemElement!: HTMLElement | null;\n\n override focus() {\n this.itemElement?.focus();\n }\n\n override blur() {\n this.itemElement?.blur();\n }\n\n override firstUpdated() {\n this.__dispatchClickWithThrottle = throttle(\n this.__dispatchClick,\n this.throttleDelay,\n );\n\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot:not([name])'),\n hasContent => {\n this._hasLabel = hasContent;\n this.requestUpdate();\n },\n );\n\n observerSlotChangesWithCallback(\n this.renderRoot.querySelector('slot[name=\"active-icon\"]'),\n hasContent => {\n this._hasActiveIcon = hasContent;\n this.requestUpdate();\n },\n );\n }\n\n __dispatchClickWithThrottle: (event: MouseEvent | KeyboardEvent) => void =\n event => {\n this.__dispatchClick(event);\n };\n\n __dispatchClick = (event: MouseEvent | KeyboardEvent) => {\n if (this.disabled && this.href) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n\n if (!isActivationClick(event) || !this.itemElement) {\n return;\n }\n\n this.focus();\n dispatchActivationClick(this.itemElement);\n };\n\n __handlePress = (event: KeyboardEvent | MouseEvent) => {\n if (this.disabled) return;\n if (\n event instanceof KeyboardEvent &&\n event.type === 'keydown' &&\n (event.key === 'Enter' || event.key === ' ')\n ) {\n this._isPressed = true;\n } else if (event.type === 'mousedown') {\n this._isPressed = true;\n } else {\n this._isPressed = false;\n }\n };\n\n __isLink() {\n return !!this.href;\n }\n\n __getDisabledReasonID() {\n return this.disabled && this.disabledReason\n ? `disabled-reason-${this.#id}`\n : nothing;\n }\n\n __renderDisabledReason() {\n const disabledReasonID = this.__getDisabledReasonID();\n if (disabledReasonID)\n return html`<div\n id=\"disabled-reason-${this.#id}\"\n role=\"tooltip\"\n aria-label=${this.disabledReason}\n class=\"screen-reader-only\"\n >\n ${this.disabledReason}\n </div>`;\n return nothing;\n }\n\n __renderItemContent() {\n return html`\n <wc-focus-ring class=\"focus-ring\" for='item'></wc-focus-ring>\n <div class=\"state-layer\"></div>\n <wc-ripple class=\"ripple\"></wc-ripple>\n\n <div class=\"item-content\">\n <div class=\"indicator\">\n <div class=\"icon-container\">\n <slot name=\"active-icon\" class=\"active-icon-slot\"></slot>\n <slot name=\"icon\" class=\"icon-slot\"></slot>\n </div>\n </div>\n ${this._hasLabel && !this.collapsed\n ? html`<div class=\"label\"><slot></slot></div>`\n : html`<slot class=\"hidden-slot\"></slot>`}\n </div>\n\n ${this.__renderDisabledReason()}\n `;\n }\n\n render() {\n const isLink = this.__isLink();\n\n const cssClasses = {\n item: true,\n 'item-element': true,\n active: this.active,\n disabled: this.disabled,\n pressed: this._isPressed,\n 'has-label': this._hasLabel,\n 'has-active-icon': this._hasActiveIcon,\n };\n\n if (!isLink) {\n return html`<button\n id=\"item\"\n class=${classMap(cssClasses)}\n ?disabled=${this.disabled}\n aria-disabled=${`${this.disabled}`}\n aria-current=${this.active ? 'page' : nothing}\n ?aria-describedby=${this.__getDisabledReasonID()}\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n >\n ${this.__renderItemContent()}\n </button>`;\n }\n\n return html`<a\n id=\"item\"\n class=${classMap(cssClasses)}\n href=${this.href}\n target=${this.target}\n aria-current=${this.active ? 'page' : nothing}\n aria-disabled=${`${this.disabled}`}\n ?aria-describedby=${this.__getDisabledReasonID()}\n @click=${this.__dispatchClickWithThrottle}\n @mousedown=${this.__handlePress}\n @keydown=${this.__handlePress}\n @keyup=${this.__handlePress}\n >\n ${this.__renderItemContent()}\n </a>`;\n }\n}\n","import { html, LitElement, PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './navigation-rail.scss';\nimport { NavigationRailItem } from './navigation-rail-item.js';\n\n/**\n * @label Navigation Rail\n * @tag wc-navigation-rail\n * @rawTag navigation-rail\n *\n * @summary A vertical side navigation for medium-sized screens, following Material Design 3 specs.\n * @overview\n * <p>Navigation rail provides access to primary destinations in an app using icons—with or without labels—on a vertical rail.</p>\n * <p>Use navigation rail on medium-sized screens (tablets) with 3–7 destinations.</p>\n *\n * @cssprop --nav-rail-width - Width of the rail container. Defaults to 5rem (80dp).\n * @cssprop --nav-rail-container-color - Background color of the rail. Defaults to surface color.\n * @cssprop --nav-rail-indicator-color - Color of the active indicator. Defaults to secondary-container.\n * @cssprop --nav-rail-indicator-shape - Shape (border-radius) of the active indicator. Defaults to full (pill).\n * @cssprop --nav-rail-indicator-width - Width of the active indicator. Defaults to 3.5rem (56dp).\n * @cssprop --nav-rail-indicator-height - Height of the active indicator. Defaults to 2rem (32dp).\n * @cssprop --nav-rail-inactive-icon-color - Color of inactive icons. Defaults to on-surface-variant.\n * @cssprop --nav-rail-active-icon-color - Color of active icons. Defaults to on-secondary-container.\n * @cssprop --nav-rail-inactive-label-color - Color of inactive labels. Defaults to on-surface-variant.\n * @cssprop --nav-rail-active-label-color - Color of active labels. Defaults to on-surface.\n *\n * @example\n * ```html\n * <wc-navigation-rail>\n * <wc-navigation-rail-item active>\n * <wc-icon slot=\"icon\">home</wc-icon>\n * Home\n * </wc-navigation-rail-item>\n * <wc-navigation-rail-item>\n * <wc-icon slot=\"icon\">search</wc-icon>\n * Search\n * </wc-navigation-rail-item>\n * <wc-navigation-rail-item>\n * <wc-icon slot=\"icon\">settings</wc-icon>\n * Settings\n * </wc-navigation-rail-item>\n * </wc-navigation-rail>\n * ```\n * @tags navigation\n */\nexport class NavigationRail extends LitElement {\n static styles = [styles];\n\n static Item = NavigationRailItem;\n\n /**\n * Vertical alignment of items within the rail.\n * - `\"top\"`: Items align to the top.\n * - `\"center\"`: Items are centered (default).\n * - `\"bottom\"`: Items align to the bottom.\n */\n @property({ reflect: true }) alignment: 'top' | 'center' | 'bottom' = 'center';\n\n /**\n * Display mode of the navigation rail.\n * - `\"expanded\"`: shows labels.\n * - `\"collapsed\"`: hides labels.\n */\n @property({ reflect: true }) mode: 'expanded' | 'collapsed' = 'expanded';\n\n /**\n * Whether to show a divider between the header and items sections.\n */\n @property({ type: Boolean, attribute: 'show-divider' }) showDivider = false;\n\n connectedCallback() {\n super.connectedCallback();\n this.addEventListener('click', this._handleItemClick);\n this.setAttribute('role', 'navigation');\n this.setAttribute('aria-label', this.getAttribute('aria-label') ?? 'Main navigation');\n }\n\n disconnectedCallback() {\n this.removeEventListener('click', this._handleItemClick);\n super.disconnectedCallback();\n }\n\n protected override firstUpdated() {\n this._syncItemMode();\n }\n\n protected override updated(changedProperties: PropertyValues<this>) {\n if (changedProperties.has('mode')) {\n this._syncItemMode();\n }\n }\n\n private _handleItemClick = (event: Event) => {\n const target = event.target as HTMLElement;\n const item = target.closest('wc-navigation-rail-item') as NavigationRailItem | null;\n\n if (!item || item.disabled) return;\n\n // Deactivate all items and activate the clicked one\n for (const railItem of this._getItems()) {\n railItem.active = railItem === item;\n }\n\n this.dispatchEvent(\n new CustomEvent('nav-change', {\n detail: {\n value: item.value,\n item,\n },\n bubbles: true,\n composed: true,\n }),\n );\n };\n\n private _getItems(): NavigationRailItem[] {\n return Array.from(\n this.querySelectorAll('wc-navigation-rail-item'),\n ) as NavigationRailItem[];\n }\n\n private _syncItemMode = () => {\n const isCollapsed = this.mode === 'collapsed';\n for (const railItem of this._getItems()) {\n railItem.collapsed = isCollapsed;\n }\n };\n\n render() {\n const cssClasses = {\n rail: true,\n [`align-${this.alignment}`]: true,\n [`mode-${this.mode}`]: true,\n };\n\n return html`\n <div class=${classMap(cssClasses)}>\n <div class=\"header\">\n <slot name=\"header\"></slot>\n </div>\n ${this.showDivider ? html`<wc-divider></wc-divider>` : ''}\n <nav class=\"items\" role=\"presentation\">\n <slot @slotchange=${this._syncItemMode}></slot>\n </nav>\n </div>\n `;\n }\n}\n"],"names":["e","t","LitElement","html","classMap","styles","property","state","nothing","css","query","queryAssignedElements","colorStyles","sizeStyles","styleMap","svg","ifDefined","sliderStyles","unsafeHTML"],"mappings":"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","x_google_ignoreList":[0]}
|